🎄 DevTwitter | توییت برنامه نویسی – Telegram
🎄 DevTwitter | توییت برنامه نویسی
23.6K subscribers
4.36K photos
358 videos
6 files
4.11K links
توییت های برنامه نویسی و طراحی وب :)

@dvtwi

Hashtags:
devtwitter.t.me/5

DevBooks Channel:
https://news.1rj.ru/str/+AYbOl75CLNYxY2U0

Github:
https://github.com/DevTwitter

X:
https://x.com/devtwittir
Download Telegram
اومدم بگم بهترین دیتابیس kv که استفاده کردم BadgerDB هست.
https://github.com/dgraph-io/badger

@DevTwitter | <Saman Esmaeil/>
🍌17🔥6👎1
یکی از واقعی ترین تصاویری که دیدم

@DevTwitter
104👍29🍌2🔥1
سلام دوستان! Alpine.js برای پروژه‌های کوچیک و صفحه‌های استاتیک عالیه، اما همیشه کمبود یک پلاگین خوب برای validation اذیتم می‌کرد. پس Alpidate رو ساختم: الهام‌گرفته از Vuelidate، با قوانین declarative و پشتیبانی از array/nested.
روی npm و GitHub منتشر کردم:
https://github.com/h7arash/alpidate
https://www.npmjs.com/package/alpidate

@DevTwitter | <Arash Hasanzade/>
👍124👎1🔥1
امروز یک پکیج کوچک برای Go منتشر کردم: go-batcher

این پکیج نوعی تجمیع کننده‌ی دیتا(مشابه postgres batching) هست که برای کاهش هزینه‌های I/O ، دیتارو تو حافظه نگه میداره و بسته به اینکه به Batch size limit یا timeout بخوره، کل batch رو به مثلا db میفرسته.

با این روش ۱۰۰ تا رکورد به شکل ۱۰ تا ۱۰ تا میتونه به دیتابیس insert بشه و طبیعتا فشار قابل توجهی هم در اسکیل بالا از روی دیتابیس برداشته میشه.

https://github.com/barbodimani81/go-batcher

@DevTwitter | <Barbod Imani/>
👍215🍌2🔥1
سلام بچه ها خواستم اسکریپت خودمو باهاتون به اشتراک بزارم این اسکریپت برای اس اس ال پین بای پسس هست و همزمان مخفی کردن روت بودن موبایل شما و علاوه بر اینا لینک های داینامیک اپ رو براتون میکشه بیرون چه وب سوکت بهشه چه دیپ لینک
فقط یه تکته ایی داره نسخه آخرشو دادم به کرسر یکم روش کار کنه و چون خودم هنوز تستش نکردم فعلا استیبل نیست اگه مشکلی رو مشاهده کردید حتما بگید تا پچش کنم.
اینم توضیح هوش مصنوعی درموردش:
SSL-Link — اسکریپت قدرتمند Frida برای تست نفوذ اندروید
ابزاری پیشرفته برای دور زدن SSL Pinning و Root Detection که همزمان لینک‌ها و URLهای ساخته‌شده داخل اپ را به‌صورت لحظه‌ای جمع‌آوری می‌کند.
ویژگی‌های کلیدی:
· بای‌پس کامل SSL Pinning
پچ کردن TrustManager، OkHttp، Retrofit، WebView و تمام مسیرهای SSL/TLS.
· جلوگیری از شناسایی روت/جیل‌بریک
تغییر رفتار Runtime.exec، File.exists، RootBeer، Build.TAGS و سایر heuristicها.
· جمع‌آوری هوشمند لینک‌ها
کشف و نرمال‌سازی تمام URL/URIهایی که از Intent، Uri، Bundle، WebView، Retrofit، OkHttp و حتی StringBuilder ساخته می‌شن.
· لاگ‌گیری کم‌نویز
فیلتر قابل‌تنظیم + Ring Buffer برای جلوگیری از اسپم شدن خروجی.
فقط کافیه بزنید:
frida -U -f <package> -l Main.js --no-pause
لینک گیت هابش:
https://github.com/mohamadrezadarban/SSL-Link
استار فراموش نشه ممنون :)

@DevTwitter | <mohamadzzr/>
🍌9🔥83👎2
در اخبار هوش مصنوعی این ماه (نوامبر ۲۰۲۵)، یه جورایی می‌شه گفت شاهد بزرگ‌ترین جهش‌ها بودیم: از انتشار GPT-5 Pro و Gemini 3 تا پروژه عجیب دیتاسنترهای فضایی گوگل!
از طرفی مقاله‌ای که Antropic داده در مورد مدل Claudeشون؛ این سوال رو پیش میاره که آیا هوش مصنوعی بالاخره به خودآگاهی رسیده؟

سعی کردم به طور خلاصه توی این ویدیو تا جایی که بشه اتفاقات مهم دنیای AI، جنگ تراشه‌های انویدیا و AMD، و نسل جدید ایجنت‌های خودمختار رو بررسی کنیم.

بریم که داشته باشیمژ

لینک ویدیو:
https://www.youtube.com/watch?v=75cAMxJxc_Q&list=PLwUWEGKy5kyNrPv05-Asbhm6g6S8_eRPb&index=21



@DevTwitter | <Ryan Heida/>
11👍6👎4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
با IDE جدید گوگل Antigravity و مدلهای gemini 3 این app را درست کردم. خیلی خوب کار میکنه.
تصویر معماری سیستم/system design بهش میدید و تبدیل میکنه به دیاگرام mermaid. بعد اون را میتونید مستقیم استفاده کنید یا اینکه تبدیل کنید به interactive visualization.
دقتش در تبدیل کردن هم خیلی خوبه ولی اگه معماری خیلی پیچیده باشه ممکنه اشتباه داشته باشه.
اینم کدش توی گیتهاب:
Github: https://github.com/mallahyari/system-design-visualizer
اگه دوست داشتید میتونید PR بدید و فیچر جدید بهش اضافه کنید. ستاره هم دادید که عالی!

@DevTwitter | <Mehdi Allahyari/>
👍18🍌145🔥1
این ریپازیتوری بیشتر از ۱۵۰ الگوریتم برنامه‌نویسی رو به زبان جاوااسکریپت به صورت ویدئو و تصویر و کد توضیح داده:
https://github.com/trekhleb/javanoscript-algorithms

پ.ن: پیاده‌سازی بعضی از این الگوریتم‌های معروف یک حرکت خیلی عالی برای بهتر کردن مهارت‌های برنامه‌نویسی هست. بهبود چنین مهارت‌هایی هزاران بار مفیدتر از یادگیری ابزارهای پر زرق و برق مثل ری‌اکت هست


@DevTwitter | <Ali Nazari/>
👍26🔥54👎2
عزیزان ،

اگر صرفا یک Endpoint از OpenAI یا هر AI Service Provider دیگری را صدا میزنید و یک اتفاقی می افتد، شما از خدایان هوش مصنوعی نیستید - باور کنید شما اصلا چیز خاصی نیستید، شما در حال حرام شدن و یک استعداد کشف نشده نیستید، شما صرفا یک صدا کننده یک API هستید - زیاد خودتان را اذیت نکنید !! - کسی هم در هیچ کجای دنیا الاف این تخصص عجیب شما نیست - به همان CRUD ادامه بدهید - خبری هم از حقوق 800 هزار دلاری نیست - بشین سر جات دوست من !

پیروز باشید

@DevTwitter | <Ali Kolahdoozan/>
1👍135🍌32👎5🔥4
یه نکته کوچیک ولی مهم برای برنامه‌نویس‌های پایتون

گاهی وقتا یه سری چیزای مهم رو، خیلی ساده از کنار‌شون رد می‌شیم.
مثلا تولید OTP!
خیلی‌ها برای ساختن کدهای یکبار مصرف میرن سراغ ماژول random.
ولی واقعیت اینه که random به‌صورت پیش‌فرض «امن» نیست و خروجی‌هاش قابل پیش‌بینی هستن. یعنی برای چیزای حساس مثل OTP گزینه مطمئنی به حساب نمیاد.

راه‌حل؟ استفاده از ماژول secrets
ماژول secrets توی پایتون مخصوص کارهای امنیتی ساخته شده.
چه OTP، چه توکن، چه لینک ریکاوری… هرچیزی که امنیت براش مهمه.
خیلی ساده می‌تونی یه خروجی غیرقابل‌ حدس تولید کنی.

پس اگر هنوز از random برای OTP استفاده می‌کنید، وقتشه کوچ کنید سمت secrets.

@DevTwitter | <Mostafa Rasouli/>
1👍35🍌168🔥3
توسعه‌ نرم افزار؛ سفری بی‌نقشه در دنیایی بی‌پایان از ابزارها.

گاهی ما بیش از حد خودمون رو درگیر ابزار‌ها میکنیم. React رو یاد میگیری، فرداش میگن Vue بهتره. وسط یادگیری Vue هستی یهو میبینی Svelte ترند شده.
هر بار به خودت میگی بالاخره این یکی قراره «پایانی برای یادگیری» باشه، ولی نیست.
اینجاست که حس می‌کنی توی یه چرخه‌ی بی‌پایان از یادگیری افتادی.

دنیای توسعه‌‌ی نرم افزار هیچ‌وقت ساکن نمی‌مونه.
هر سال کلی ابزار جدید معرفی میشن و ترندهای جدیدی شکل می‌گیرن.
مشکل اینه که وقتی تمرکز اصلیت روی «یادگیری ابزارها» باشه، ذهنت کم‌کم فرسوده و خسته میشه، چون ابزارها بی‌پایان هستن.

پیشرفت همیشه به معنی یاد گرفتن یه چیز جدید نیست. گاهی پیشرفت یعنی فهمیدنِ بهترِ همون قدیمی‌ها.
واقعیت اینه که ریشه‌ی همه‌ی این ابزارها، همون جاوا اسکریپتیه که از روز اول باهاش شروع کردیم. تمام ابزارها فقط یه لایه روی این زبان هستن.

هرچی بیشتر تجربه کسب می‌کنی، می‌فهمی رشد واقعی به معنی دونستن همه‌چیز نیست، بلکه داشتن درک عمیق از همین ریشه‌هاست.
ابزارها میان و میرن، ترندها فراموش میشن، ولی زبان همیشه زندست. پس به‌جای دویدن دنبال ابزار بعدی، شاید وقتشه یکم عمیق‌تر بشی زیر پوست همین زبانی که داری باهاش کار می‌کنی.

ابزار انقلابی بعدی، همچنان روی پایه‌های جاوا اسکریپت بنا میشه.

@DevTwitter | <Ali Noori/>
1👍5416👎5🔥4
معرفی HTTP API Ninja - یک کلاینت HTTP قدرتمند و رایگان!

با افتخار از پروژه جدیدم رونمایی می‌کنم: HTTP API Ninja - یک جایگزین اوپن‌سورس و کاملاً رایگان برای Postman و Thunder Client که با Flutter ساخته شده!

ویژگی‌های کلیدی:
- پشتیبانی کامل از تمام متدهای HTTP (GET, POST, PUT, DELETE, PATCH)
- مدیریت Collection برای سازماندهی درخواست‌ها
- نمایش Response با Syntax Highlighting رنگی
- تم تیره/روشن با طراحی مدرن
- پشتیبانی از 5 زبان (فارسی، انگلیسی، عربی، آلمانی، فرانسوی)
- تولید کد برای 20+ زبان برنامه‌نویسی
- ذخیره خودکار تمام درخواست‌ها
- رابط کاربری زیبا و کاربرپسند

چرا HTTP API Ninja؟
کاملاً رایگان و اوپن‌سورس
بدون نیاز به اینترنت برای کار
حریم خصوصی کامل - داده‌ها روی سیستم شما
سبک و سریع
قابل اجرا روی Windows، macOS و Linux


ویژگی‌های در دست توسعه:
- Environment Variables
- Import/Export Collections (Postman format)
- WebSocket Support
- GraphQL Support
- OAuth 2.0 Authentication
- Mock Server
- Team Collaboration
- Cloud Sync
- نسخه موبایل (Android & iOS)

لینک پروژه: https://github.com/SwanFlutter/http_api_ninja

@DevTwitter | <Sajjad Karimi/>
1🔥337👍7👎2
توی این ریپو کدهای بات تلگرامی رو اوپن‌سورس کردم که مثل یه AI Agent برای کاربر پلی‌لیست می‌ساخت.
ایده‌اش برای ۱.۵ سال پیش منه؛ جالبه Spotify تازه امسال همین قابلیت AI Playlist رو اضافه کرده . :)

این بات دقیقاً چیکار می‌کنه؟
این بات برای این طراحی شده که به کاربرها کمک کنه پلی‌لیست‌های شخصی‌سازی‌شده بسازن، فقط کافیه مود، ژانر، آرتیست یا حتی یک آهنگ رو بهش بگن؛ باقی کار بر عهده بات هست.


معماری و ویژگی‌های تکنیکال:
معماری ماژولار با ۴ سرویس جداگانه: ۱- سرویس Bot – مدیریت تعاملات کاربر ۲- سرویس Spotify – ارتباط با Spotify API ۳- سرویس Database – ذخیره‌سازی داده‌ها ۴- سرویس API Gateway – هماهنگی بین سرویس‌ها


برای کاهش درخواست‌های تکراری به Spotify API و بهبود چشمگیر response time از Redis caching استفاده شده.
برای ذخیره‌سازی و بازیابی سریع metadata آهنگ‌ها و پلی‌لیست‌ها، MySQL با bulk insert/update operations پیاده‌سازی کردم.
مدیریت بیش از ۱۰۰ هزار کاربر همزمان با rate-limiting، internal queue system و async processing


پروژه Dockerized شده و تنها با یک docker-compose up کل سیستم بالا میاد
پیاده‌سازی error handling و retry mechanism برای reliability بالا در تعامل با Spotify API


قابلیت‌های کلیدی:
ساخت پلی‌لیست بر اساس mood، vibe، ژانر موزیک، آرتیست مورد علاقه یا حتی یک آهنگ خاص
پردازش درخواست‌های کاربر به‌صورت async برای تجربه کاربری بهتر
استفاده از Logging و monitoring برای track کردن user interactions و system performance


این یک پروژه Open Source هست و خوشحال می‌شم اگر دولوپرهای Python، برنامه‌نویس‌های Backend، یا دوستان علاقه‌مند به بات‌های تلگرام در توسعه اون شریک بشن.


استارز گیتهاب فراموش نشه لطفاً.
github.com/mehdiseyfie/telegram-music-bot



@DevTwitter | <Mehdi/>
1👍4010👎5🔥2
تولدمه :)))
32🔥708🍌237201👎7
توی این ریپو کدهای سایت فروشگاهی Django رو اوپن‌سورس کردم؛ پروژه‌ای که برای یادگیری معماری درست فروشگاه‌های آنلاین ساختم و روی اصول scalability و clean code پیاده‌سازی شده.

این پروژه دقیقاً چیکار می‌کنه؟
این پروژه برای این طراحی شده که یک فروشگاه آنلاین کامل با تمام قابلیت‌های اساسی رو ارائه بده، از مدیریت محصولات گرفته تا سیستم پرداخت.


معماری و ویژگی‌های تکنیکال:
فریمورک Django با Django ORM و معماری تمیز و قابل گسترش
سیستم سبد خرید با session-based management و مدیریت هوشمند محصولات
سیستم Payment Flow آماده توسعه با قابلیت اتصال آسان به درگاه‌های پرداخت
مدیریت کامل محصولات، دسته‌بندی‌ها، سفارش‌ها و کاربران از طریق پنل ادمین
پیاده‌سازی Authentication & Authorization استاندارد برای امنیت بالا
ساختار modular apps برای توسعه راحت‌تر شامل: products، cart، orders، accounts
استفاده از Template System با صفحات واکنش‌گرا و رابط کاربری مدرن
پروژه Dockerized شده و آماده برای دیپلوی در محیط production


قابلیت‌های کلیدی:
نمایش محصولات با جزئیات کامل و دسته‌بندی پیشرفته
سیستم افزودن و حذف محصول از سبد خرید با مشخص کردن تعداد
پردازش سفارش‌ها و مدیریت آدرس‌های کاربران
پنل مدیریتی قدرتمند برای کنترل کامل فروشگاه


این یک پروژه Open Source هست و خوشحال می‌شم اگر دولوپرهای Django، برنامه‌نویس‌های Backend، یا دوستان علاقه‌مند به توسعه فروشگاه‌های آنلاین در توسعه اون شریک بشن.

استارز گیتهاب لطف بزرگیه برای این پروژه.
https://github.com/mehdiseyfie/django_ecommerce_project

@DevTwitter | <Mehdi/>
1👍32👎1211🔥2
🎄 DevTwitter | توییت برنامه نویسی
تولدمه :)))
خجالتم دادید اصلا🥲
پیاماتونم خیلی قشنگ بود ❤️
168🍌56🔥5👎2
تفاوت بین اعضای senior و junior فقط در عنوان یا سابقه کاری نیست، بلکه در طرز فکر، شیوه حل مسئله و مهارت‌های نرم (soft skills) آن‌هاست. اعضای senior معمولاً در مواجهه با چالش‌ها به‌جای انتظار برای راهنمایی، خودشان مسیر را پیدا می‌کنند. وقتی پروژه‌ای با مانع روبه‌رو می‌شود، آن‌ها با تحلیل دقیق مسئله، راه‌حل‌های قابل اجرا پیشنهاد می‌دهند و تیم را برای اجرای آن هماهنگ می‌کنند. در مقابل، اعضای junior هنوز در مرحله یادگیری تصمیم‌گیری مستقل و تحلیل موقعیت هستند.

مدیران کلیدی و لیدها باید بیش از هر چیز روی توسعه مهارت‌های نرم خود کار کنند؛ مهارت‌هایی مانند گوش‌دادن فعال، همدلی، مدیریت تعارض و توانایی ارائه بازخورد سازنده. رهبری امروز فقط مدیریت وظایف نیست، بلکه ایجاد فرهنگی است که در آن افراد احساس امنیت کنند تا ایده بدهند، اشتباه کنند و رشد کنند. توانایی حل مسئله، ارتباط مؤثر و تفکر خلاق همان ویژگی‌هایی است که از یک مدیر، رهبر می‌سازد.

علاوه بر مهارت‌های نرم و توانایی حل مسئله، یکی از ویژگی‌های اساسی هر senior و مدیر کلیدی، میل مداوم به یادگیری و مطالعه است. دنیای کار هر روز تغییر می‌کند و کسی که در مسیر رشد واقعی است، باید خود را با این تغییرات هماهنگ کند. مطالعه درباره صنعت جدید، شناخت روندهای بازار و بررسی case study‌های مختلف، نه‌تنها دید استراتژیک فرد را تقویت می‌کند، بلکه باعث می‌شود در تصمیم‌گیری‌ها هوشمندتر عمل کند. یک لید حرفه‌ای می‌داند که یادگیری هیچ‌وقت تمام نمی‌شود، حتی وقتی مسیر شغلی یا حوزه فعالیتش تغییر می‌کند.

و اما پرسش پایانی: آیا آزمون و خطا کار یک senior است؟
پاسخ بله است، اما با تفاوتی مهم — یک senior هم اشتباه می‌کند، اما اشتباهاتش آگاهانه، قابل‌اندازه‌گیری و با هدف یادگیری است. او در مسیر آزمون و خطا حرکت می‌کند، اما هر خطا برایش داده‌ای است که مسیر تصمیم‌های بعدی را دقیق‌تر می‌سازد. آزمون و خطا برای افراد باتجربه ضعف نیست، بلکه بخشی از فرایند رشد و بلوغ حرفه‌ای است.

البته آزمون و خطا برای هر چیزی درست نیست. یک senior باید تفاوت میان تجربه‌سازی و تکرار خطاهای شناخته‌شده را بداند. آزمون و خطا زمانی ارزش دارد که در مسیر کشف و نوآوری باشد، جایی که هنوز استاندارد مشخصی وجود ندارد و خلاقیت می‌تواند مسیر تازه‌ای بسازد. اما وقتی روش‌های استاندارد و بهترین شیوه‌های اجرایی از طریق مطالعه، تجربه و case study‌های متعدد قابل دسترسی‌اند، یک حرفه‌ای باید آن‌ها را بشناسد، به‌کار بگیرد و از تکرار اشتباهات اجتناب کند. در واقع، آزمون و خطا برای یادگیری و خلق است، نه برای بازتولید شکست. یک senior ارزشمند کسی است که بداند چه زمانی باید از تجربه دیگران بیاموزد و چه زمانی باید خودش مسیر جدیدی را بسازد.

@DevTwitter | <Shayan Shalileh/>
1👍477🍌6🔥4
#کدبوک

یک راهنمای کاربردی برای درک و پیاده‌سازی الگوریتم‌های مهم در برنامه‌نویسی:

- پوشش الگوریتم‌های جستجو، مرتب‌سازی، گراف و بهینه‌سازی
- توضیح مفاهیم با مثال‌های عملی و ساده
- کمک به بهبود مهارت حل مسئله و طراحی ساختارهای کارآمد
- مناسب برای برنامه‌نویس‌هایی که می‌خوان پایه الگوریتمی خودشون رو تقویت کنن


* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.

@DevTwitter
🔥126👍1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
اگه با این AI coding assistant ها کد میزنید یا اینکه به صورت vibe coding اپ میسازید اینکه چطور دیزاین را هم وارد مساله کنید خیلی مهمه. یک اصطلاح جدید داره بوجود میاد به اسم "vibe designing". این بلاگ خیلی قشنگ توضیح میده و اینکه موقع vibe coding چطور یک اپ با طراحی خوب درست کنید. حتما بخونید. ویدیو هم تو یوتیوب داره:
https://designwithai.substack.com/p/vibe-designing-with-ai
YT: https://youtube.com/watch?v=QgvQbcPmioE

@DevTwitter | <Mehdi Allahyari/>
17🍌2👍1🔥1
چرا Docker و RHEL از هم فاصله گرفتند؟

ردهت از زمان انتشار RHEL 8 پشتیبانی رسمی Docker Engine را متوقف کرد. دلیل اصلی این بود که معماری Docker با مدل امنیتی RHEL هم‌راستا نبود؛ Docker یک daemon سطح‌بالا دارد که به‌صورت root اجرا می‌شود و یک نقطه‌ی شکست و ریسک امنیتی مهم ایجاد می‌کند. Red Hat برای محیط‌های Enterprise چیزی می‌خواست که هم بدون daemon باشد، هم با SELinux و استانداردهای سخت‌گیرانه امنیتی آن کاملاً سازگار بماند.

به همین دلیل، Red Hat به جای Docker از مجموعه ابزارهای Podman، Buildah و Skopeo استفاده کرد. این ابزارها کاملاً متن‌بازند، با استانداردهای OCI هماهنگی کامل دارند و در بسیاری از سناریوها می‌توانند جای Docker را بدون تغییرات جدی بگیرند. Podman حتی قادر است همان دستورات Docker را اجرا کند. مهم‌تر اینکه بدون نیاز به daemon و با امکان اجرای rootless کار می‌کند، که از نظر امنیت و سازگاری با سیاست‌های RHEL یک مزیت بزرگ محسوب می‌شود.

در همین زمان، Kubernetes نیز مسیر مشابهی رفت: dockershim را کنار گذاشت و به‌صورت رسمی از containerd و CRI-O پشتیبانی کرد. ردهت که خود توسعه‌دهنده CRI-O و OpenShift است، طبیعی بود که با جهت K8s هم‌سو شود، نه با Docker Engine.

داکر Inc هم در سال‌های اخیر بیشتر روی Docker Desktop، مدل لایسنس جدید و سرویس‌های Cloud تمرکز کرد—در حالی که Red Hat به دنبال یک زنجیره تأمین کاملاً متن‌باز و پایدار بود. این تفاوت فلسفه باعث شد فاصله این دو اکوسیستم بیشتر شود.

نتیجه؟ Docker در دنیای Ubuntu و Dev-friendly هنوز پادشاه سادگی است، اما در اکوسیستم RHEL (و توزیع‌های سازگار مثل Rocky/AlmaLinux) Podman استاندارد اصلی و گزینهٔ پایدارتر و امن‌تر محسوب می‌شود.

@DevTwitter | <Babak uk/>
👍366🔥4
#کدبوک

مجموعه‌ای از نکات کوتاه و کاربردی برای بهتر شدن در برنامه‌نویسی و کار حرفه‌ای:

- توصیه‌هایی درباره طراحی، نگه‌داری و کیفیت کد
- نکات مهم درباره همکاری تیمی، تست و مستندسازی
- دیدگاه‌هایی از برنامه‌نویس‌های با‌تجربه در حوزه‌های مختلف
- مناسب برای هر توسعه‌دهنده‌ای که می‌خواد عادت‌ها و نگرش حرفه‌ای‌تری پیدا کنه

* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.

@DevTwitter
17👎3🔥1