Armin codes – Telegram
Armin codes
402 subscribers
90 photos
11 videos
13 files
89 links
👋 Hey there! I'm Armin, a software engineer.

🌟 On this channel, I share:

Handy tools and resources
Behind-the-scenes of my coding journey
My favorite music, hobbies, and experiences

Join in and let's learn, share, and have fun together!🥂
@arminshaikhy
Download Telegram
🔧 اهمیت ریفکتور کردن کد (Refactoring) + منابع پیشنهادی

برنامه‌نویسی فقط نوشتن کد نیست، نگه‌داری و بهبود اون هم به همون اندازه مهمه.
ریفکتور کردن یعنی بازنویسی کد بدون تغییر در عملکردش، با هدف خواناتر، ساده‌تر و قابل نگهداری‌تر شدنش.

چرا ریفکتور مهمه؟

کاهش پیچیدگی کد

جلوگیری از ایجاد باگ در آینده

آمادگی برای افزودن قابلیت‌های جدید

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

افزایش سرعت توسعه در بلندمدت

💡 نشونه‌هایی که بهت میگن وقت ریفکتوره:

کدی که حتی خودت هم نمی‌فهمیش 😅

توابع خیلی طولانی

تکرار زیاد تو کد

وابستگی‌های زیاد بین بخش‌ها

📚 منابع پیشنهادی برای یادگیری ریفکتور:

🔹 کتاب "Refactoring" نوشته‌ی Martin Fowler
یه مرجع کلاسیک و کاربردی برای درک اصول و تکنیک‌های ریفکتور.

🔹 وب‌سایت Refactoring.guru
ساده، مصور، و به شدت آموزنده!
🌐 https://refactoring.guru
🍾7👾3
این کتاب رو امروز تموم کردم و تصمیم گرفتم دیدمو بهش بگم:
این کتاب یه جورایی با هیچ کتاب دیگه‌ای که خوندم شبیه نیست. انگار داری تیکه‌هایی از خاطرات، خیال‌پردازی‌ها و فکرای عجیب نویسنده رو ورق می‌زنی، بدون اینکه دنبال یه خط داستانی مشخص باشی. ریچارد براتیگان با یه لحن ساده ولی شاعرانه، از چیزای خیلی معمولی یه دنیای خاص ساخته. بعضی جاها خنده‌ت می‌گیره، بعضی جاها یه حس تنهایی خاصی تو دل آدم می‌ندازه. اگه دنبال یه داستان منظم و کلاسیکی، این کتاب شاید اذیتت کنه. ولی اگه دوست داری توی ذهن یه آدم خلاق و متفاوت پرسه بزنی، احتمالاً ازش خوشت میاد.
🍾10
Forwarded from جادی | Jadi
👾11
🎯 دعوت به همکاری در یک پروژه متن‌باز

سلام به جامعه‌ی جاوااسکریپتی‌ها 👋
ما داریم روی یه پایگاه دانش فارسی متن‌باز کار می‌کنیم و خوشحال می‌شیم شما هم کنارمون باشید.

🔧 تکنولوژی: JavaScript
🌍 هدف: ساخت یک مرجع دانش ساده و مفید به زبان فارسی
🤝 همکاری در توسعه، طراحی، محتوا و هر کاری که دوست دارید

اگه علاقه‌مند بودید، خوشحال می‌شم پیام بدید 💬
@arminshaikhy
🍾15👾2💩1
اخیراً با یکی از توسعه‌دهنده‌های پایتون برای پیاده‌سازی یک سرویس SSO با Node.js همکاری داشتم، و تجربه‌ای پر از یادگیری بود — مخصوصاً از نظر تفاوت‌های ذهنی بین دو زبان.

چالش اول برای اون، درک ماهیت asynchronous در Node.js بود. مفاهیمی مثل event loop و استفاده از async/await در مقایسه با مدل همگام پایتون، کاملاً متفاوت بودن و باعث شد در اوایل پروژه با پیچیدگی‌هایی مواجه بشه.

در مرحله بعد، کار با Express.js و ساختار routeها، middlewareها و ساختار کلی اپلیکیشن در Node.js براش جدید بود. با اینکه کانسپت‌ها خیلی متفاوت نبودن، اما نحوه پیاده‌سازی و ابزارهای موجود فرق زیادی داشتن.

ما از TypeScript یا استانداردهایی مثل OAuth2 یا SAML استفاده نکردیم، بنابراین همه چیز به صورت سبک‌تر و ساده‌سازی‌شده پیاده‌سازی شد. همین موضوع باعث شد توسعه سریع‌تر پیش بره، ولی در عوض نیاز به دقت بیشتری توی طراحی و امنیت داشتیم.

جالب‌ترین بخش ماجرا برای من، دیدن تلاش اون برای تطبیق با یک زبان و چارچوب جدید بود — و این بهم یادآوری کرد که زبان برنامه‌نویسی مهم نیست، بلکه طرز فکر توسعه‌دهنده است که نتیجه رو می‌سازه.
🔥12💯2
وی یکی از پروژه‌ها، موقع توسعه یه بخش از اپلیکیشن، با مشکلی برخورد کردم که اولش خیلی ساده به نظر می‌رسید، اما باعث می‌شد اطلاعات اشتباهی به کاربر نشون داده بشه. ماجرا از اونجا شروع شد که کاربر موقع جست‌وجو یا جابه‌جا شدن سریع بین آیتم‌ها، با سرعت بالا روی گزینه‌های مختلف کلیک می‌کرد و با هر تغییر، یه درخواست جدید برای گرفتن اطلاعات به سرور می‌رفت.

همه‌چیز ظاهراً درست کار می‌کرد — هر درخواست ارسال می‌شد و پاسخش هم می‌اومد. ولی بعضی وقتا یه اتفاق عجیب می‌افتاد: پاسخی که مربوط به درخواست قبلی بود، بعد از درخواست جدیدتر برمی‌گشت و باعث می‌شد دیتای اشتباهی توی صفحه نمایش داده بشه.

بعد از یه بررسی دقیق‌تر، فهمیدم با یه Race Condition طرفم — یعنی وقتی چند عملیات async با هم اجرا می‌شن و نتیجه به خاطر ترتیب نامناسب تموم شدنشون، بهم می‌ریزه.

برای حلش اومدم یه راه‌حلی پیاده کردم که مطمئن بشم فقط آخرین درخواست باقی می‌مونه و درخواست‌های قبلی یا نادیده گرفته می‌شن یا لغو. این کار رو می‌شه با چیزایی مثل AbortController یا چک کردن اینکه پاسخ مربوط به همون درخواست فعلیه انجام داد.
🔥14🍓2
برای کسایی که دوست دارن با n8n کار کنند، یک نفر یک سری پروژه درست کرده به همراه یک ویدیو ۲ ساعته که این پروژه ها توضیح میده. چون من خودم از این ابزار استفاده نمیکنم کیفیت پروژه ها و ویدیو را نمیدونم، ولی به نظر میاد که فیدبک مثبت گرفته.
Youtube: https://youtube.com/watch?v=8-nTKVnUnwM

@DevTwitter | <Mehdi Allahyari/>
🔥51
Forwarded from FullstacksJS — Academy
خطر هوش مصنوعی برای افراد سنیور:

استفاده از هوش مصنوعی چطوری می تونه بهمون آسیب بزنه؟
آیا اینکه هوش مصنوعی رو از فرایند توسعه حذف کنیم خوبه؟
مرز بین مثبت و منفی بودن هوش مصنوعی برای برنامه نویس ها کجا مشخص میشه؟

#exp #ai #competency #ide
🔥5
راستی
توییتر؟!
x.com/littlebitofar
6🔥4
انتخاب زیرساخت مناسب برای دیپلوی پروژه‌ها؛ فقط یک تصمیم فنی نیست، بلکه نیازمند یک تصمیم استراتژیکه.

امروزه، با گسترش ابزارهای کانتینرسازی، معمولاً سه گزینه هست که بیشتر از همه به چشم میاد:

Docker Compose
+ عالی برای توسعه و محیط‌های لوکال
+ ساده، سریع و بدون نیاز به منابع زیاد
- مناسب نبودن برای پروژه‌های High Availability

Docker Swarm
+ راه‌حلی سریع برای مقیاس‌بندی ساده روی چند سرور
+ راه‌اندازی راحت‌تر نسبت به Kubernetes
- امکانات محدود نسبت به مباحث پیشرفته
- خود داکر بیشتر به Kubernetes اهمیت میده

Kubernetes (K8s)

+ استاندارد بازار کار برای مقیاس‌بندی، پایداری، و مدیریت سیستم‌های بزرگ
+ Self-Healing، Load Balancing پیشرفته، و مقیاس‌پذیری بی‌نهایت
+ اکوسیستم قدرتمند از ابزارها (CI/CD, Monitoring, Security)
- نیازمند تخصص بیشتر
- پیچیدگی در راه‌اندازی اولیه

اما در دنیای واقعی چه اتفاقی میوفته؟
Docker Compose بیشتر برای توسعه‌ی لوکال یا پروژه‌های کوچک استفاده می‌شه.
Docker Swarm به تدریج جایگاه خودش رو از دست داده و کمتر در پروژه‌ها دیده می‌شه.
Kubernetes به استاندارد اصلی بازار کار تبدیل شده؛ به طوری که همه به نوعی روی Kubernetes تاکید میکنن.

به عنوان نتیجه‌گیری نهایی و البته نظر شخصی:
هیچ ابزاری به خودی خود بهترین نیست.
بهترین انتخاب، ابزاری است که با نیازهای امروز و چشم‌انداز فردای پروژه‌ هماهنگ باشه.
ولی اگر به فکر آینده‌ شغلی، رشد و مقیاس‌پذیری هستی، باید Kubernetes رو جدی بگیری.

@DevTwitter | <Farzin Shams/>
🔥2💯2
رفقای فرانت‌اند دولوپر و کسایی که دارن تازه شروع میکنن

nextjs.org/learn


حتما این لینکو چک کنین خیلی آموزش خوبیه برای نکست و ریکت، تهشم ظاهرا مدرک میده میتونین توی لینکدین به اشتراک بذارین که بنظرم کار باحالیه!
🍾7🔥4💯3🍌1
Forwarded from 1agilist
Media is too big
VIEW IN TELEGRAM
🔸Technical debt should be addressed with a realistic plan; otherwise, the payback cost rises unpredictably as it accumulates.

🔹With that in mind, I’ve started my first round of technical debt payback this year. Just before this Nowruz, we had a great session with Iranian Agile practitioners on Estimation topic in agile teams, hosted by Epic Agile. You can watch the recording here and explore key takeaways in the comments.

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

🔹با این مقدمه میخواستم اولین بازپرداخت بدهی‌های فنی خودم در این سال را انجام بدهم. پیش از نوروز امسال یک گفتگوی تعاملی داشتیم با چابک کاران ایرانی به میزبانی بچه‌های اپیک اجایل در موضوع تخمین در تیم‌های چابک که ویدئو این جلسه را می‌توانید از اینجا داشته باشید و نکات تکمیلی را در کامنت‌ها ملاحظه فرمایید.


https://www.youtube.com/watch?v=VqP_kjmb_rM


instagram.com/1agilist
twitter.com/1agilist
@YekAgilist
🔥3💯2
توی چند ماه گذشته، مشغول جمع‌آوری و دسته‌بندی سوالات مصاحبه‌ی فنی فرانت‌اند بودم — از مفاهیم پایه مثل HTML و CSS گرفته تا مباحث پیشرفته‌تری مثل معماری سیستم، بهینه‌سازی عملکرد، امنیت، و همکاری تیمی.

توی این ریپو سعی کردم سوالات مهم و پرکاربرد رو بر اساس موضوعاتی مثل JavaScript، TypeScript، React، CSS، Performance، Testing و موارد دیگه به‌صورت منظم و دسته‌بندی‌شده قرار بدم.

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

آمادگی برای مصاحبه‌های فرانت‌اند

مرور و یادگیری مفاهیم کلیدی

تیم‌ها و منتورها که دنبال یک مرجع کاربردی و قابل‌اعتماد هستن

ریپو رو می‌تونی از اینجا ببینی:
https://github.com/ArminShaikhy/frontend-interview-questions

اگه برات مفید بود، خوشحال می‌شم ستاره‌ش کنی و با بقیه هم به اشتراک بذاری!
7🔥182
😂😂❤️
🍓5🏆2🎉1🍌1
درباره بدهی فنی🔧

همه‌ی بدهی‌های فنی بد نیستن.
اگه آگاهانه واردش بشیم، می‌تونه بهمون سرعت بده تا سریع‌تر چیزی بسازیم و بعداً پرداختش کنیم.

ولی نباید ولش کنیم! 👇

🔹 بدهی فنی رو مثل باگ توی بک‌لاگ ثبت کنیم.
🔹 گاهی یه اسپرینتِ مهندسی بذاریم فقط برای تمیزکاری و پرداخت بدهی.
🔹 با ریویو کد جلوی بدهی‌های ناخواسته رو بگیریم.

کد بیس تمیز، یعنی آینده‌ی راحت‌تر برای تیم.
بدهی فنی بده نیست—بی‌برنامه بودن براش بده‌ست! 😉
🔥8
Armin codes
این کتاب رو امروز تموم کردم و تصمیم گرفتم دیدمو بهش بگم: این کتاب یه جورایی با هیچ کتاب دیگه‌ای که خوندم شبیه نیست. انگار داری تیکه‌هایی از خاطرات، خیال‌پردازی‌ها و فکرای عجیب نویسنده رو ورق می‌زنی، بدون اینکه دنبال یه خط داستانی مشخص باشی. ریچارد براتیگان…
این کتاب رو امروز تموم کردم و تصمیم گرفتم دیدمو بهش بگم:
نثر کتاب ساده‌ست ولی پر از فلسفه‌ست. ترجمه‌ها آزاد و پر احساس‌ان، نه دنبال وزن و قافیه، بلکه دنبال معنا و حس.
هدایت کاری کرده که وقتی رباعی‌ها رو می‌خونی، انگار یه آینه جلوته؛ آینه‌ای که سوالای بی‌جواب زندگی رو، با صدای خیام، تو گوش‌ت زمزمه می‌کنه.
صادق هدایت، با نگاهی تیزبین و بی‌ملاحظه، خیام رو از پشت پرده‌ی عرفان و دینداری بیرون می‌کشه و بهت نشون می‌ده که با یه فیلسوف شکاک، رند، و تلخ‌اندیش طرفی؛ کسی که زندگی رو به اندازه‌ی یه جرعه‌ی شراب جدی می‌گیره و مرگ رو بی‌دریغ تو صورتت می‌کوبه.

دوست بیا تا غمِ فردا نخوریم
وین یک دمِ عمر را غنیمت شمریم
فردا که ازین دیرِ فنا درگذریم
با هفت‌هزارسالگان سربه‌سریم
🔥13
برای من اسکیل کردن تیم و رشد کنار هم همیشه بهترین قسمت کارم بوده.💙
احتمالا به زودی راجب چالش هایی که داشتم خروجی هایی که حاصل شد بیشتر باهاتون گپ بزنم.
اگه کنجکاویی یا نکته ای دارید که ممکنه مفید باشه باهام درمیون بذارید تا بتونم تو این پنل انتقال تجربه در حد توان پوشش بدم.

@arminshaikhy
🔥10💯2🍓1