یه لایبرری هست به اسم Thanos.js و کارش اینه که حجم پروژه رو تا 50% کاهش میده.
شاید بپرسید چطوری؟
من خوبم شما چطوری :))))
حالا جدی شاید فکر کنید چجوری همچین کاری میکنه. میاد نصف فایل های پروژه رو به صورت رندوم حذف میکنه
به نظرتون میتونه کاربردی باشه؟
@DevTwitter | <Parsa Esmaeili/>
شاید بپرسید چطوری؟
من خوبم شما چطوری :))))
حالا جدی شاید فکر کنید چجوری همچین کاری میکنه. میاد نصف فایل های پروژه رو به صورت رندوم حذف میکنه
به نظرتون میتونه کاربردی باشه؟
@DevTwitter | <Parsa Esmaeili/>
🍌186👎28🔥11👍5
با Green Tea، گولنگ سریعتر از همیشه میشه!
تیم Go در حال ایجاد یک تغییر بزرگ در Garbage Collector (GC) است که اسمش را Green Tea گذاشتهاند. اما این «چای سبز» چیست و چرا مهمه؟
مشکل اصلی چه بود؟
تصور کنید فقط بخش کوچکی از حافظهی برنامهتان تغییر میکرد. GC قدیمی Go مجبور بود برای پیدا کردن آن، کل حافظه را اسکن کند. این یعنی کلی کار اضافه و هدر رفتن منابع CPU.
راه حل Green Tea چیست؟
حالا GC هوشمندانه عمل میکند: به جای اسکن کل حافظه، فقط بخشهایی را بررسی میکند که واقعاً تغییری داشتهاند. همین کار ساده، فرآیند را فوقالعاده سریع و بهینه میکند. (heap به segmentهای کوچک تقسیم میشه و فقط بخشهای تغییر کرده اسکن میشن)
نتیجه نهایی:
کاهش چشمگیر مصرف CPU (تا ۴۰% بهبود).
عملکرد روانتر برنامه و وقفههای بسیار کمتر.
این قابلیت در Go 1.25 به صورت آزمایشی (GOEXPERIMENT=greenteagc) در دسترس است و قرار است در نسخهی 1.26 به عنوان GC پیشفرض استفاده شود. حتماً امتحانش کنید!
https://go.dev/blog/greenteagc
@DevTwitter | <Saeed Shamsi/>
تیم Go در حال ایجاد یک تغییر بزرگ در Garbage Collector (GC) است که اسمش را Green Tea گذاشتهاند. اما این «چای سبز» چیست و چرا مهمه؟
مشکل اصلی چه بود؟
تصور کنید فقط بخش کوچکی از حافظهی برنامهتان تغییر میکرد. GC قدیمی Go مجبور بود برای پیدا کردن آن، کل حافظه را اسکن کند. این یعنی کلی کار اضافه و هدر رفتن منابع CPU.
راه حل Green Tea چیست؟
حالا GC هوشمندانه عمل میکند: به جای اسکن کل حافظه، فقط بخشهایی را بررسی میکند که واقعاً تغییری داشتهاند. همین کار ساده، فرآیند را فوقالعاده سریع و بهینه میکند. (heap به segmentهای کوچک تقسیم میشه و فقط بخشهای تغییر کرده اسکن میشن)
نتیجه نهایی:
کاهش چشمگیر مصرف CPU (تا ۴۰% بهبود).
عملکرد روانتر برنامه و وقفههای بسیار کمتر.
این قابلیت در Go 1.25 به صورت آزمایشی (GOEXPERIMENT=greenteagc) در دسترس است و قرار است در نسخهی 1.26 به عنوان GC پیشفرض استفاده شود. حتماً امتحانش کنید!
https://go.dev/blog/greenteagc
@DevTwitter | <Saeed Shamsi/>
❤50👍8🔥2🍌2
دوتا از مشکلاتی که باعث میشدن نتونم با ai studio google کار کنم زیاد و دست و دلم بهش نره، 1- فونت افتضاحش و 2- راستچین نبودنش بود. که با این دوتا اکستنشن کروم حلش کردم:
1- Fontonic: https://chromewebstore.google.com/detail/fontonic-change-fonts/hnjlnpipbcbgllcjgbcjfgepmeomdcog
2- RTL ALL: https://chromewebstore.google.com/detail/rtl-all/eilpimgcclncpehhmnnplnfokcmdiefa?hl=en
@DevTwitter | <Matin SenPai/>
1- Fontonic: https://chromewebstore.google.com/detail/fontonic-change-fonts/hnjlnpipbcbgllcjgbcjfgepmeomdcog
2- RTL ALL: https://chromewebstore.google.com/detail/rtl-all/eilpimgcclncpehhmnnplnfokcmdiefa?hl=en
@DevTwitter | <Matin SenPai/>
👍48👎4🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
بازیِ برنامهنویسی داره کلاً عوض میشه و اگر حواستون نباشه، ممکنه جا بمونید!
دانشگاه استنفورد یه دوره جدید راه انداخته به اسم «The Modern Software Developer» که حرف حسابش اینه: دورانِ صرفاً «کد زدن» با دست داره تموم میشه. الان دیگه شما باید یاد بگیرید چطوری با AI Agentها کار کنید، چطوری از ابزارهایی مثل Cursor و Warp استفاده کنید و در واقع به جای کدنویس، «معمار» و «مدیر» هوش مصنوعی باشید.
تو این دوره دقیقاً دارن یاد میدن که چطور فرایند توسعه نرمافزار داره از «تایپ کردن سینتکس» به «تعامل با AI» برای ساخت سیستمهای پیچیده تغییر میکنه. خلاصه اینکه آیندهی شغلی شما دیگه فقط به دونستن الگوریتم نیست، به اینه که چقدر خوب میتونید از این ابزارهای جدید کار بکشید.
تمام مطالب اعم از اسلایدها و پروژه ها را هم گذاشتند.
پیشنهاد میکنم حتماً یه سر به سرفصلهاش بزنید تا ببینید دنیا دست کیه:
https://themodernsoftware.dev
@DevTwitter | <Mehdi Allahyari/>
دانشگاه استنفورد یه دوره جدید راه انداخته به اسم «The Modern Software Developer» که حرف حسابش اینه: دورانِ صرفاً «کد زدن» با دست داره تموم میشه. الان دیگه شما باید یاد بگیرید چطوری با AI Agentها کار کنید، چطوری از ابزارهایی مثل Cursor و Warp استفاده کنید و در واقع به جای کدنویس، «معمار» و «مدیر» هوش مصنوعی باشید.
تو این دوره دقیقاً دارن یاد میدن که چطور فرایند توسعه نرمافزار داره از «تایپ کردن سینتکس» به «تعامل با AI» برای ساخت سیستمهای پیچیده تغییر میکنه. خلاصه اینکه آیندهی شغلی شما دیگه فقط به دونستن الگوریتم نیست، به اینه که چقدر خوب میتونید از این ابزارهای جدید کار بکشید.
تمام مطالب اعم از اسلایدها و پروژه ها را هم گذاشتند.
پیشنهاد میکنم حتماً یه سر به سرفصلهاش بزنید تا ببینید دنیا دست کیه:
https://themodernsoftware.dev
@DevTwitter | <Mehdi Allahyari/>
👎52👍42❤6🔥2
من با استفاده از LangGraph و پترن Reflexion یک ریپو ساختم که:
عامل از خطاهاش درس میگیره،
قانونها رو تو حافظه بلندمدت ذخیره میکنه،
توی تسکهای جدید، دیگه اون اشتباه رو تکرار نمیکنه،
بهش میگن Continuous Learning! که مهمه!
لینک ریپو :
https://github.com/alipyth/Continuous-Learning-AI-PoC
@DevTwitter | <Mr.J/>
عامل از خطاهاش درس میگیره،
قانونها رو تو حافظه بلندمدت ذخیره میکنه،
توی تسکهای جدید، دیگه اون اشتباه رو تکرار نمیکنه،
بهش میگن Continuous Learning! که مهمه!
لینک ریپو :
https://github.com/alipyth/Continuous-Learning-AI-PoC
@DevTwitter | <Mr.J/>
👍24🍌6❤4
یکی از لحظات ضد حال برای هر دولوپر یا مهندس دوآپس یا کلا هر کسی که با داکر کار میکنه، لحظهایه که بعد از کلی تلاش برای نوشتن Dockerfile، میبینه ایمیج نهایی که قرار بود سبک و اوکی باشه، ولی خب حجمش سر به فلک کشیده.
ایمیجهای حجیم یعنی زمان طولانیتر برای docker pull/push، اشغال فضای دیسک روی نودهای کلاستر، کند شدن پایپلاین CI/CD و ...
حالا چطوری بفهمیم دقیقاً چی باعث این حجم شده؟ پکیجهای OS؟ فایلهای کش؟
اینجاست که ابزار dive میاد وسط.
ابزار Dive یک رابط کاربری ترمینالی (TUI) فوقالعاده ساده اما باحال داره که به شما اجازه میده ساختار ایمیج داکر رو "لایه به لایه" کالبدشکافی کنید.
یه سری از امکاناتی که بهتون میده اینا هست:
تحلیل لایهای: دقیقاً بهتون نشون میده هر دستور RUN, COPY یا ADD توی داکرفایل، چه فایلهایی رو اضافه کرده و چقدر به حجم نهایی اضافه شده.
پیدا کردن فضای هدر رفته: این جذابترین ویژگی dive هست. بهتون نشون میده چه فایلهایی توی یک لایه اضافه شدن و توی لایه بعدی پاک شدن (مثلاً کشهای apt یا npm). این فایلها دیگه تو ایمیج نهایی دیده نمیشن، اما چون لایههای داکر Read-only هستن، همچنان فضا اشغال میکنن.
حالا نکته فنی ماجرا: استفاده از dive قبل از نهایی کردن Dockerfile، شاید منجر به کشفهایی بشه که حجم ایمیج رو به مقدار قابل توجهی کاهش میده. مثلاً میفهمید که فراموش کردید توی همون لایهای که پکیج نصب کردید، دستور پاکسازی کش رو هم اجرا کنید.
اگر تا حالا از dive استفاده نکردید، پیشنهاد میکنم یه تستی بکنید حتما.
Official Repo: https://github.com/wagoodman/dive#installation
@DevTwitter | <Amin Mohammadi Sigaroodi/>
ایمیجهای حجیم یعنی زمان طولانیتر برای docker pull/push، اشغال فضای دیسک روی نودهای کلاستر، کند شدن پایپلاین CI/CD و ...
حالا چطوری بفهمیم دقیقاً چی باعث این حجم شده؟ پکیجهای OS؟ فایلهای کش؟
اینجاست که ابزار dive میاد وسط.
ابزار Dive یک رابط کاربری ترمینالی (TUI) فوقالعاده ساده اما باحال داره که به شما اجازه میده ساختار ایمیج داکر رو "لایه به لایه" کالبدشکافی کنید.
یه سری از امکاناتی که بهتون میده اینا هست:
تحلیل لایهای: دقیقاً بهتون نشون میده هر دستور RUN, COPY یا ADD توی داکرفایل، چه فایلهایی رو اضافه کرده و چقدر به حجم نهایی اضافه شده.
پیدا کردن فضای هدر رفته: این جذابترین ویژگی dive هست. بهتون نشون میده چه فایلهایی توی یک لایه اضافه شدن و توی لایه بعدی پاک شدن (مثلاً کشهای apt یا npm). این فایلها دیگه تو ایمیج نهایی دیده نمیشن، اما چون لایههای داکر Read-only هستن، همچنان فضا اشغال میکنن.
حالا نکته فنی ماجرا: استفاده از dive قبل از نهایی کردن Dockerfile، شاید منجر به کشفهایی بشه که حجم ایمیج رو به مقدار قابل توجهی کاهش میده. مثلاً میفهمید که فراموش کردید توی همون لایهای که پکیج نصب کردید، دستور پاکسازی کش رو هم اجرا کنید.
اگر تا حالا از dive استفاده نکردید، پیشنهاد میکنم یه تستی بکنید حتما.
Official Repo: https://github.com/wagoodman/dive#installation
@DevTwitter | <Amin Mohammadi Sigaroodi/>
👍17👎4❤3🔥3
چرا آسیبپذیری اخیر ریاکت فقط توی معماری RSC دیده شد و نه در SSR؟
تو روزهای اخیر یک آسیبپذیری جدی توی ریاکت مطرح شد که به کامپوننتهای سمت سرور مربوط بود.
این اسیب پذیری لزوما مربوط به ورژن نبود. چون به فرض اگر نکست بالای ۱۴ بودیم اما کماکان page router استفاده میکردیم هیچ خطری وجود نداشت
خب حالا app router با page router چه تفاوتی دارن؟
جواب این سؤال توی تفاوت عمیق معماری SSR و RSC قرار داره.
معماری SSR دقیقاً چه کاری انجام میده؟
تو این مدل، ریاکت روی سرور اجرا میشه و خروجی نهایی به شکل HTML کامل ساخته میشه و برای مرورگر فرستاده میشه.
بعد از اون، کد جاوااسکریپت توی مرورگر دانلود میشه و فرآیند هیدریشن انجام میشه.
نکتهی مهم اینجاست که HTML فقط یک خروجی نهایی و ایستاست.
این خروجی نه ساختار کامپوننتها رو نگه میداره، نه منطق اجرا رو منتقل میکنه و نه مرزی بین کد سمت سرور و کلاینت مشخص میکنه.
به همین خاطر، سطح حمله توی این معماری معمولاً محدود میشه به چیزهایی مثل XSS یا template injection و خود ریاکت توی سمت کلاینت نقش فعالی توی تفسیر دادههای ورودی نداره.
معماری RSC چه چیزی رو عوض کرد؟
توی معماری RSC، کامپوننتها واقعاً روی سرور اجرا میشن و نتیجهی اجرای اونها بهجای HTML، به شکل ساختار درختی ریاکت به سمت کلاینت میره.
این انتقال با استفاده از یک پروتکل اختصاصی به اسم React Flight انجام میشه.
به زبان سادهتر، مرورگر دیگه فقط یک خروجی آماده تحویل نمیگیره، بلکه اطلاعات لازم برای ساخت رابط کاربری رو دریافت میکنه.
حالا Flight شامل چه نوع اطلاعاتی میشه؟
توی این پروتکل، دادههایی جابهجا میشن که شامل نوع کامپوننتها، پراپها، مرز بین کد سمت سرور و کلاینت و همینطور ارجاع به ماژولهایی هستن که باید توی کلاینت بارگذاری بشن.
توی سمت دریافتکننده، ریاکت این دادهها رو parse میکنه، ارجاعها رو resolve میکنه و اگه لازم باشه بعضی بخشها رو به شکل lazy لود میکنه.
️ چرا این تغییر سطح حملهی جدید درست میکنه؟
توی مهندسی نرمافزار یک قانون ساده وجود داره:
هرچی داده به لایهی اجرا نزدیکتر باشه، ریسک امنیتی هم بالاتر میره.
اینجا دادهای که از بیرون وارد سیستم میشه، مستقیم وارد مسیری شامل parse، resolve و تصمیمگیری اجرایی میشه.
اگه توی هرکدوم از این مرحلهها اعتبارسنجی یا محدودسازی درست انجام نشه، یک سطح حملهی جدید شکل میگیره.
چرا چنین ریسکی توی SSR وجود نداشت؟
توی معماری SSR، چیزی که به مرورگر فرستاده میشه صرفاً HTMLه.
این فرمت نه زبان اجرایی حساب میشه، نه ارجاع ماژولی داره و نه منطق پویا رو منتقل میکنه.
به همین خاطر، پردازشش توی مرورگرها بهینه و ایزوله شده و سطح تعاملش با منطق اجرایی برنامه خیلی محدوده.
در مقابل، Flight یک پروتکل جدیده، پیچیدهست و خیلی به لایهی اجرای برنامه نزدیکه و همین نزدیکی، دلیل اصلی بالا رفتن ریسک امنیتی محسوب میشه.
جمعبندی نهایی
این اتفاق بیشتر یادآوری میکنه که هر معماریای که داده رو به اجرای مستقیم نزدیکتر میکنه، ناچار هزینهی امنیتی بیشتری هم میده.
ریاکت برای رسیدن به عملکرد بهتر، کم کردن حجم جاوااسکریپت و حرکت به سمت معماری server-first مجبور شد Flight رو معرفی کنه و همین انتخاب، دلیل تفاوت این آسیبپذیری با معماری SSR شد.
@DevTwitter | <Ali Noori/>
تو روزهای اخیر یک آسیبپذیری جدی توی ریاکت مطرح شد که به کامپوننتهای سمت سرور مربوط بود.
این اسیب پذیری لزوما مربوط به ورژن نبود. چون به فرض اگر نکست بالای ۱۴ بودیم اما کماکان page router استفاده میکردیم هیچ خطری وجود نداشت
خب حالا app router با page router چه تفاوتی دارن؟
جواب این سؤال توی تفاوت عمیق معماری SSR و RSC قرار داره.
معماری SSR دقیقاً چه کاری انجام میده؟
تو این مدل، ریاکت روی سرور اجرا میشه و خروجی نهایی به شکل HTML کامل ساخته میشه و برای مرورگر فرستاده میشه.
بعد از اون، کد جاوااسکریپت توی مرورگر دانلود میشه و فرآیند هیدریشن انجام میشه.
نکتهی مهم اینجاست که HTML فقط یک خروجی نهایی و ایستاست.
این خروجی نه ساختار کامپوننتها رو نگه میداره، نه منطق اجرا رو منتقل میکنه و نه مرزی بین کد سمت سرور و کلاینت مشخص میکنه.
به همین خاطر، سطح حمله توی این معماری معمولاً محدود میشه به چیزهایی مثل XSS یا template injection و خود ریاکت توی سمت کلاینت نقش فعالی توی تفسیر دادههای ورودی نداره.
معماری RSC چه چیزی رو عوض کرد؟
توی معماری RSC، کامپوننتها واقعاً روی سرور اجرا میشن و نتیجهی اجرای اونها بهجای HTML، به شکل ساختار درختی ریاکت به سمت کلاینت میره.
این انتقال با استفاده از یک پروتکل اختصاصی به اسم React Flight انجام میشه.
به زبان سادهتر، مرورگر دیگه فقط یک خروجی آماده تحویل نمیگیره، بلکه اطلاعات لازم برای ساخت رابط کاربری رو دریافت میکنه.
حالا Flight شامل چه نوع اطلاعاتی میشه؟
توی این پروتکل، دادههایی جابهجا میشن که شامل نوع کامپوننتها، پراپها، مرز بین کد سمت سرور و کلاینت و همینطور ارجاع به ماژولهایی هستن که باید توی کلاینت بارگذاری بشن.
توی سمت دریافتکننده، ریاکت این دادهها رو parse میکنه، ارجاعها رو resolve میکنه و اگه لازم باشه بعضی بخشها رو به شکل lazy لود میکنه.
️ چرا این تغییر سطح حملهی جدید درست میکنه؟
توی مهندسی نرمافزار یک قانون ساده وجود داره:
هرچی داده به لایهی اجرا نزدیکتر باشه، ریسک امنیتی هم بالاتر میره.
اینجا دادهای که از بیرون وارد سیستم میشه، مستقیم وارد مسیری شامل parse، resolve و تصمیمگیری اجرایی میشه.
اگه توی هرکدوم از این مرحلهها اعتبارسنجی یا محدودسازی درست انجام نشه، یک سطح حملهی جدید شکل میگیره.
چرا چنین ریسکی توی SSR وجود نداشت؟
توی معماری SSR، چیزی که به مرورگر فرستاده میشه صرفاً HTMLه.
این فرمت نه زبان اجرایی حساب میشه، نه ارجاع ماژولی داره و نه منطق پویا رو منتقل میکنه.
به همین خاطر، پردازشش توی مرورگرها بهینه و ایزوله شده و سطح تعاملش با منطق اجرایی برنامه خیلی محدوده.
در مقابل، Flight یک پروتکل جدیده، پیچیدهست و خیلی به لایهی اجرای برنامه نزدیکه و همین نزدیکی، دلیل اصلی بالا رفتن ریسک امنیتی محسوب میشه.
جمعبندی نهایی
این اتفاق بیشتر یادآوری میکنه که هر معماریای که داده رو به اجرای مستقیم نزدیکتر میکنه، ناچار هزینهی امنیتی بیشتری هم میده.
ریاکت برای رسیدن به عملکرد بهتر، کم کردن حجم جاوااسکریپت و حرکت به سمت معماری server-first مجبور شد Flight رو معرفی کنه و همین انتخاب، دلیل تفاوت این آسیبپذیری با معماری SSR شد.
@DevTwitter | <Ali Noori/>
👍25❤14🔥3👎1
یادمه وقتی تازه برنامهنویسی رو شروع کرده بودم و با جاوا کار میکردم، زبانهای دیگه برام مسخره به نظر میاومدن. مثلاً PHP که همه مسخرهاش میکردن و میگفتن در حال مرگه! وردپرس هم که میگفتن بچهبازیه و اکثر وردپرسکارها مورد تمسخر قرار میگرفتند.
تا اینکه بهخاطر اینکه کد بکاند پروژه اندرویدم باگ داشت و برنامهنویسش درگیر بود، خودم مجبور شدم یاد بگیرم و درستش کنم. کمکم بهش علاقهمند شدم و دیدم هم درآمد خوبی داره و هم چون قدیمیه، برنامههای زیادی بر مبنای اون نوشته شده که نیاز به توسعه و نگهداری دارن. برای همین اغلب من کسی بودم که میرفتم خرابکاری بقیه رو جمع میکردم!
پروژههای وردپرسی با ۶۰ تا افزونه، کلی سایت هکشده، و حتی کدهای بزرگ و قدیمی که نمیشد بهشون دست زد، ولی بهخاطر هزینه و زمان، امکان بازنویسیشون هم نبود. اونجا فهمیدم که عدم تخصص خیلیها باعث ایجاد نیاز به افراد متخصص میشه.
اما آیا من همه پروژهها رو پاک میکردم و از اول مینوشتم؟ یا میگفتم بیاید براتون سایت اختصاصی با لاراول بزنم؟
اگه صرفاً دنبال پول بودم، این کار منطقی بود؛ ولی چون نمیخواستم اعتبارم رو خراب کنم، شروع میکردم به رفع مشکلات امنیتی، حذف و کدنویسی افزونههای اضافی و در نهایت قابلاستفاده کردن پروژه.
اگه بدونید سایت ویکیپدیا که بازدید میلیاردی داره و هر صفحهاش چند صد میلیون بار دیده میشه از PHP استفاده میکنه و حاضره ماهی یک میلیارد تومان به شما حقوق بده تا با اون کار کنید، باز هم میگید PHP بده؟ یا تحت تأثیر پستهای لینکدین بیخیالش میشید؟
خود من چون وارد حوزه هوش مصنوعی و کلاد شدم، تمرکزم رو روی پایتون گذاشتم؛ ولی هنوز کلی شرکت و نرمافزار هستن که از PHP استفاده میکنن و چون بازنویسیشون ممکن نیست، با همون ادامه میدن. پس هنوز بازار کار خوبی داره و حتی میتونید باهاش مهاجرت کنید.
الان در عصر هوش مصنوعی، زبان برنامهنویسی شده «انگلیسی»! دیگه نه زبان مهمه، نه فریمورک، نه تکنولوژی. تنها چیزی که مهمه مهارتهای مهندسی نرمافزار، عمیق بودن در حوزههای مختلف و در نهایت توانایی انجام یک چرخه کامل توسعه نرمافزار از صفر تا صد هست.
زبان برنامهنویسی حتی ۲۰ درصد ماجرا هم نیست!
تخصص در یک حوزه، توانایی حل مسئله، روحیه کار تیمی، انتقادپذیری، توانایی دادن فیدبک و در نهایت داشتن خروجی بهینه، فاکتورهای اصلی هستن.
اگه پستی میبینید که محتوای اشتباه داره، لطفاً لایک نکنید تا افراد تازهکار دچار اشتباه نشن. لایک شما نشانه تأیید اون مطلبه و باعث انتشار بیشترش میشه
@DevTwitter | <Mohammad Ghafarifar/>
تا اینکه بهخاطر اینکه کد بکاند پروژه اندرویدم باگ داشت و برنامهنویسش درگیر بود، خودم مجبور شدم یاد بگیرم و درستش کنم. کمکم بهش علاقهمند شدم و دیدم هم درآمد خوبی داره و هم چون قدیمیه، برنامههای زیادی بر مبنای اون نوشته شده که نیاز به توسعه و نگهداری دارن. برای همین اغلب من کسی بودم که میرفتم خرابکاری بقیه رو جمع میکردم!
پروژههای وردپرسی با ۶۰ تا افزونه، کلی سایت هکشده، و حتی کدهای بزرگ و قدیمی که نمیشد بهشون دست زد، ولی بهخاطر هزینه و زمان، امکان بازنویسیشون هم نبود. اونجا فهمیدم که عدم تخصص خیلیها باعث ایجاد نیاز به افراد متخصص میشه.
اما آیا من همه پروژهها رو پاک میکردم و از اول مینوشتم؟ یا میگفتم بیاید براتون سایت اختصاصی با لاراول بزنم؟
اگه صرفاً دنبال پول بودم، این کار منطقی بود؛ ولی چون نمیخواستم اعتبارم رو خراب کنم، شروع میکردم به رفع مشکلات امنیتی، حذف و کدنویسی افزونههای اضافی و در نهایت قابلاستفاده کردن پروژه.
اگه بدونید سایت ویکیپدیا که بازدید میلیاردی داره و هر صفحهاش چند صد میلیون بار دیده میشه از PHP استفاده میکنه و حاضره ماهی یک میلیارد تومان به شما حقوق بده تا با اون کار کنید، باز هم میگید PHP بده؟ یا تحت تأثیر پستهای لینکدین بیخیالش میشید؟
خود من چون وارد حوزه هوش مصنوعی و کلاد شدم، تمرکزم رو روی پایتون گذاشتم؛ ولی هنوز کلی شرکت و نرمافزار هستن که از PHP استفاده میکنن و چون بازنویسیشون ممکن نیست، با همون ادامه میدن. پس هنوز بازار کار خوبی داره و حتی میتونید باهاش مهاجرت کنید.
الان در عصر هوش مصنوعی، زبان برنامهنویسی شده «انگلیسی»! دیگه نه زبان مهمه، نه فریمورک، نه تکنولوژی. تنها چیزی که مهمه مهارتهای مهندسی نرمافزار، عمیق بودن در حوزههای مختلف و در نهایت توانایی انجام یک چرخه کامل توسعه نرمافزار از صفر تا صد هست.
زبان برنامهنویسی حتی ۲۰ درصد ماجرا هم نیست!
تخصص در یک حوزه، توانایی حل مسئله، روحیه کار تیمی، انتقادپذیری، توانایی دادن فیدبک و در نهایت داشتن خروجی بهینه، فاکتورهای اصلی هستن.
اگه پستی میبینید که محتوای اشتباه داره، لطفاً لایک نکنید تا افراد تازهکار دچار اشتباه نشن. لایک شما نشانه تأیید اون مطلبه و باعث انتشار بیشترش میشه
@DevTwitter | <Mohammad Ghafarifar/>
👍157❤22👎7🍌5
Forwarded from DevTwitter Ads.
اگه بکاند کار میکنی و میخوای بدون حاشیه،
از تغییرات مهم و منابع درست باخبر شی،
این کانال رو از دست نده 👇
https://news.1rj.ru/str/+lBSf8SchaApkMzhk
از تغییرات مهم و منابع درست باخبر شی،
این کانال رو از دست نده 👇
https://news.1rj.ru/str/+lBSf8SchaApkMzhk
👎8❤4
ترجمه فارسی | The Pragmatic Programmer
این کتاب فقط درباره کدنویسی نیست؛ دربارهی طرز فکر یک برنامهنویس حرفهایه.
یاد میده چطور مسئولیت کارت رو بپذیری، تصمیمهای بهتر بگیری و کدی بنویسی که قابل اعتماد و قابل نگهداری باشه.
بعد از سالها هنوز هم یکی از مهمترین منابع رشد حرفهای برنامهنویسهاست؛
از جونیور تا سنیور.
https://github.com/hheydarian/the-pragmatic-programmer-parsion
@DevTwitter | <Hamed Heydarian/>
این کتاب فقط درباره کدنویسی نیست؛ دربارهی طرز فکر یک برنامهنویس حرفهایه.
یاد میده چطور مسئولیت کارت رو بپذیری، تصمیمهای بهتر بگیری و کدی بنویسی که قابل اعتماد و قابل نگهداری باشه.
بعد از سالها هنوز هم یکی از مهمترین منابع رشد حرفهای برنامهنویسهاست؛
از جونیور تا سنیور.
https://github.com/hheydarian/the-pragmatic-programmer-parsion
@DevTwitter | <Hamed Heydarian/>
❤35🔥5🍌2👍1
این فلو از سرویس Opal گوگل میتونه بهتون ایده های عالی برای سئو و مطالب سایت و رقبا بده
همچنین خیلی راحت با دستیار خودش قابل کنترل و تغییرات است که شخصی سازی کنید یک لول جدید برای سئو سازیتون بردارید!
https://opal.google/?flow=drive:/1gF9nPpRJZ58HNEEXTK5Bcu2U9c0TeYsY&shared&mode=app
@DevTwitter | <POURYA/>
همچنین خیلی راحت با دستیار خودش قابل کنترل و تغییرات است که شخصی سازی کنید یک لول جدید برای سئو سازیتون بردارید!
https://opal.google/?flow=drive:/1gF9nPpRJZ58HNEEXTK5Bcu2U9c0TeYsY&shared&mode=app
@DevTwitter | <POURYA/>
❤14🔥1🍌1
با توجه با گزارشهای دریافتی، استفاده از آسیبپذیری تازه کشف شده در React به شکل گسترده در کشور فعال شده است، به کلیه کسبوکارهایی که از React استفاده میکنند توصیه اکید میشود که پچهای این آسیبپذیری را اعمال کنند.
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
@DevTwitter | <Behzad Akbari/>
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
@DevTwitter | <Behzad Akbari/>
👍14❤9🔥2🍌2
پلتفرم آنلاینOpenShip برای مدیریت و اجرای سفارشات که تو تجارت الکترونیک (e-commerce) کاربرد داره
سرویس روی مدیریت چندکاناله سفارشات و فرایند fulfillment (چگونگی تکمیل، بستهبندی و ارسال سفارشهاست)
نسخه دمو هم داره و میتونی دیپلوی کنی و اوپن سورس هم هست
http://github.com/openshiporg/openship
@DevTwitter | <Shayan GeeDook/>
سرویس روی مدیریت چندکاناله سفارشات و فرایند fulfillment (چگونگی تکمیل، بستهبندی و ارسال سفارشهاست)
نسخه دمو هم داره و میتونی دیپلوی کنی و اوپن سورس هم هست
http://github.com/openshiporg/openship
@DevTwitter | <Shayan GeeDook/>
👍8❤3🔥1
امنیت: Go با Secret mode از اسرار شما محافظت میکند!
تیم Go در حال افزودن یک ویژگی امنیتی حیاتی به نام runtime/secret است. اما این قابلیت جدید چیست و چرا یک تغییر بزرگ برای امنیت برنامه هاست؟
مشکل اصلی چه بود؟
تا امروز، توسعه دهندگان برای پاک کردن کلیدهای حساس از حافظه، مجبور بودند به "هک های ناجور" (unholy hacks) و استفاده از reflection روی بیاورند. چرا؟ چون خود Go هیچ تضمینی برای پاک کردن فوری اطلاعات از RAM نمیداد و کلیدها ممکن بود در memory dump لو بروند.
راه حل secret چیست؟
حالا Go یک راهکار استاندارد و داخلی فراهم کرده! با استفاده از تابع secret.Do، کد حساس شما درون یک بلاک امن اجرا میشود. به محض خروج از این بلاک، Go فوراً و با دقت تمام دادههای حساس (روی stack و registers) را پاک میکند.
نتیجه نهایی:
امنیت واقعی در سطح حافظه: کلیدها بلافاصله پس از استفاده، نابود میشوند.
راهکار استاندارد و رسمی: دیگر نیازی به reflection یا ترفند های غیراستاندارد نیست.
توانمند سازی کتابخانه ها: این ویژگی به توسعه دهندگان کتابخانه های رمزنگاری قدرت می دهد تا ابزارهای امن تری برای کل جامعه Go بسازند.
این ویژگی که از یک بحث طولانی در سال ۲۰۱۷ شروع شد، قرار است در نسخه Go 1.26 ارائه شود و یک گام بزرگ برای امنیت کل اکوسیستم است.
https://github.com/golang/go/issues/21865
@DevTwitter | <Saeed Shamsi/>
تیم Go در حال افزودن یک ویژگی امنیتی حیاتی به نام runtime/secret است. اما این قابلیت جدید چیست و چرا یک تغییر بزرگ برای امنیت برنامه هاست؟
مشکل اصلی چه بود؟
تا امروز، توسعه دهندگان برای پاک کردن کلیدهای حساس از حافظه، مجبور بودند به "هک های ناجور" (unholy hacks) و استفاده از reflection روی بیاورند. چرا؟ چون خود Go هیچ تضمینی برای پاک کردن فوری اطلاعات از RAM نمیداد و کلیدها ممکن بود در memory dump لو بروند.
راه حل secret چیست؟
حالا Go یک راهکار استاندارد و داخلی فراهم کرده! با استفاده از تابع secret.Do، کد حساس شما درون یک بلاک امن اجرا میشود. به محض خروج از این بلاک، Go فوراً و با دقت تمام دادههای حساس (روی stack و registers) را پاک میکند.
نتیجه نهایی:
امنیت واقعی در سطح حافظه: کلیدها بلافاصله پس از استفاده، نابود میشوند.
راهکار استاندارد و رسمی: دیگر نیازی به reflection یا ترفند های غیراستاندارد نیست.
توانمند سازی کتابخانه ها: این ویژگی به توسعه دهندگان کتابخانه های رمزنگاری قدرت می دهد تا ابزارهای امن تری برای کل جامعه Go بسازند.
این ویژگی که از یک بحث طولانی در سال ۲۰۱۷ شروع شد، قرار است در نسخه Go 1.26 ارائه شود و یک گام بزرگ برای امنیت کل اکوسیستم است.
https://github.com/golang/go/issues/21865
@DevTwitter | <Saeed Shamsi/>
❤29🔥3👍2🍌2
#کدبوک
یک منبع جامع و تمرینی برای تسلط بر الگوریتمها با Python:
- مجموعهای گسترده از بیش از ۳۰۰ الگوریتم متنوع
- تمرکز بر حل مسئله و تفکر الگوریتمی
- پیادهسازیها به زبان ساده و قابلفهم پایتون
- مناسب برای تقویت مهارتهای الگوریتمی و آمادگی مصاحبهها
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
یک منبع جامع و تمرینی برای تسلط بر الگوریتمها با Python:
- مجموعهای گسترده از بیش از ۳۰۰ الگوریتم متنوع
- تمرکز بر حل مسئله و تفکر الگوریتمی
- پیادهسازیها به زبان ساده و قابلفهم پایتون
- مناسب برای تقویت مهارتهای الگوریتمی و آمادگی مصاحبهها
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤13👍2
ولیدیشن دادههای ایرانی با Zod
توی یکی از پروژههام که با Zod کار میکردم، خودم دقیقاً به همون چالشی خوردم که احتمالاً خیلیها تجربهش کردن.
همهچیز خوب پیش میرفت تا رسیدیم به دادههای ایرانی…
کد ملی، شناسه ملی، شبا، شماره کارت، موبایل، اعداد فارسی کاربر و…
گشتم دنبال یه راهحل آماده که تمیز، بهروز و واقعاً با Zod مچ باشه.
یا چیزی که میخواستم پیدا نشد، یا شاید هم من درست نگشته بودم
در هر صورت، چیزی که به دردم بخوره دستم نیومد.
برای همین تصمیم گرفتم خودم این بخش رو یکبار درست حل کنم.
نتیجه شد zod-ir
یک پکیج سبک و TypeScript-first برای ولیدیشن دادههای ایرانی،
طوری که بدون دردسر کنار Zod، React Hook Form، Next.js، NestJS و Node.js بشینه.
فیچرها بهصورت خلاصه:
- ولیدیشن کد ملی با الگوریتم رسمی checksum
- شناسه ملی اشخاص حقوقی
- شماره کارت بانکی (Luhn)
- شبا / IBAN با checksum استاندارد (ISO 7064)
- شماره موبایل با حالتهای مختلف و strict
- تلفن ثابت با کد شهر
- پاسپورت ایرانی
- کد پستی ۱۰ رقمی
- تبدیل خودکار اعداد فارسی/عربی به انگلیسی (preprocess)
- پیام خطا به فارسی و انگلیسی
الان نسخه 1.2.1 منتشر شده و تو همین مدت،
۳۵۰+ دانلود هفتگی داشته که نشون میده این مسئله فقط چالش من نبوده.
اگه تو پروژههاتون با Zod کار میکنید و به ولیدیشنهای ایرانی نیاز دارید،
خوشحال میشم امتحانش کنید.
نصب:
npm i zod-ir
https://www.npmjs.com/package/zod-ir
https://github.com/Reza-kh80/zod-ir
@DevTwitter | <Reza Kheradmandi/>
توی یکی از پروژههام که با Zod کار میکردم، خودم دقیقاً به همون چالشی خوردم که احتمالاً خیلیها تجربهش کردن.
همهچیز خوب پیش میرفت تا رسیدیم به دادههای ایرانی…
کد ملی، شناسه ملی، شبا، شماره کارت، موبایل، اعداد فارسی کاربر و…
گشتم دنبال یه راهحل آماده که تمیز، بهروز و واقعاً با Zod مچ باشه.
یا چیزی که میخواستم پیدا نشد، یا شاید هم من درست نگشته بودم
در هر صورت، چیزی که به دردم بخوره دستم نیومد.
برای همین تصمیم گرفتم خودم این بخش رو یکبار درست حل کنم.
نتیجه شد zod-ir
یک پکیج سبک و TypeScript-first برای ولیدیشن دادههای ایرانی،
طوری که بدون دردسر کنار Zod، React Hook Form، Next.js، NestJS و Node.js بشینه.
فیچرها بهصورت خلاصه:
- ولیدیشن کد ملی با الگوریتم رسمی checksum
- شناسه ملی اشخاص حقوقی
- شماره کارت بانکی (Luhn)
- شبا / IBAN با checksum استاندارد (ISO 7064)
- شماره موبایل با حالتهای مختلف و strict
- تلفن ثابت با کد شهر
- پاسپورت ایرانی
- کد پستی ۱۰ رقمی
- تبدیل خودکار اعداد فارسی/عربی به انگلیسی (preprocess)
- پیام خطا به فارسی و انگلیسی
الان نسخه 1.2.1 منتشر شده و تو همین مدت،
۳۵۰+ دانلود هفتگی داشته که نشون میده این مسئله فقط چالش من نبوده.
اگه تو پروژههاتون با Zod کار میکنید و به ولیدیشنهای ایرانی نیاز دارید،
خوشحال میشم امتحانش کنید.
نصب:
npm i zod-ir
https://www.npmjs.com/package/zod-ir
https://github.com/Reza-kh80/zod-ir
@DevTwitter | <Reza Kheradmandi/>
4👍73❤15🔥1
دیشب داشتم درس میخوندم که هی دیدم میرم گوشیم بینش و لپ تاپ جلوم بازه ،هیچی دیگه یه مینی اپ ساختم اگه ۵دقیقه afkبودم سریع الرت بده بگه "برگرد سر کارت!"
https://github.com/AMIRAK-code/idle-monitor-alert
@DevTwitter | <StarKid/>
https://github.com/AMIRAK-code/idle-monitor-alert
@DevTwitter | <StarKid/>
1🍌63👍29❤8🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
بیش از ۷۵۰۰ تمپلیت ورکفلو n8n کاملاً رایگان توی یک سایت جمع شده
تا دیگه برای هر اتوماسیونی که میخوای بسازی،
لازم نباشه چرخ رو از صفر اختراع کنی!
تا حالا شده یه ایده خفن برای اتوماسیون داشته باشید ولی ندونید دقیقاً چه نودهایی (Nodes) رو باید به هم وصل کنید؟ یا از اون «صفحه سفید» شروع کنی و هی ارور بگیرید؟
توی این سایت هزاران نفر قبل از ما مسیر رو رفتن و ورکفلوهاشون رو به اشتراک گذاشتن. دنبال ورکفلوهای پیشرفته CRM یا هوش مصنوعی هستی؟ هست و کلی use case های دیگه.
توی ویدیو کامل نشون دادم چطوری در عرض چند ثانیه فایل JSON رو دانلود و توی پنلت ایمپورت کنید. اینطوری به جای ۳ ساعت وقت گذاشتن برای ساختن، ۳ دقیقه وقت میذارید برای شخصیسازی!
لینک سایت رو توی کامنت اول براتون گذاشتم. اگر هم این پست براتون مفید بود خوشحال میشم با ریپست کردن به دیده شدن بیشترش کمک کنید
https://n8nworkflows.xyz/
@DevTwitter | <Mohammadrasoul Asghari/>
تا دیگه برای هر اتوماسیونی که میخوای بسازی،
لازم نباشه چرخ رو از صفر اختراع کنی!
تا حالا شده یه ایده خفن برای اتوماسیون داشته باشید ولی ندونید دقیقاً چه نودهایی (Nodes) رو باید به هم وصل کنید؟ یا از اون «صفحه سفید» شروع کنی و هی ارور بگیرید؟
توی این سایت هزاران نفر قبل از ما مسیر رو رفتن و ورکفلوهاشون رو به اشتراک گذاشتن. دنبال ورکفلوهای پیشرفته CRM یا هوش مصنوعی هستی؟ هست و کلی use case های دیگه.
توی ویدیو کامل نشون دادم چطوری در عرض چند ثانیه فایل JSON رو دانلود و توی پنلت ایمپورت کنید. اینطوری به جای ۳ ساعت وقت گذاشتن برای ساختن، ۳ دقیقه وقت میذارید برای شخصیسازی!
لینک سایت رو توی کامنت اول براتون گذاشتم. اگر هم این پست براتون مفید بود خوشحال میشم با ریپست کردن به دیده شدن بیشترش کمک کنید
https://n8nworkflows.xyz/
@DevTwitter | <Mohammadrasoul Asghari/>
1❤20👍7👎2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
تو پروژه جدیدم به Multi Select نیاز داشتم، اما دیدم shadcn/ui بهصورت رسمی چنین کامپوننتی نداره.
بعد از کمی جستجو، به این پیادهسازی رسیدم که واقعاً کارمو راه انداخت:
https://wds-shadcn-registry.netlify.app/components/multi-select/
کاملاً Responsive
دارای قابلیت Search
هماهنگ با استایل و تجربه کاربری shadcn/ui
گفتم به اشتراک بذارم، شاید به درد پروژه یکی دیگه هم بخوره
@DevTwitter | <Mohammad Soleimanikia/>
بعد از کمی جستجو، به این پیادهسازی رسیدم که واقعاً کارمو راه انداخت:
https://wds-shadcn-registry.netlify.app/components/multi-select/
کاملاً Responsive
دارای قابلیت Search
هماهنگ با استایل و تجربه کاربری shadcn/ui
گفتم به اشتراک بذارم، شاید به درد پروژه یکی دیگه هم بخوره
@DevTwitter | <Mohammad Soleimanikia/>
❤26👍5🍌2🔥1
مدتی بود تو چند تا پروژه Django درگیر محدود کردن دسترسی بعضی مسیرها بر اساس IP و hostname بودم؛
بهخصوص وقتی Kubernetes و چند تا سرویس داخلی وسط میاد و مدیریت این چیزها با Nginx و Security Group کمکم پیچیده میشه.
برای همین یه پکیج ساده و منعطف نوشتم به اسم django-ip-access-middleware که این کار رو از داخل خود Django هندل کنه:
کنترل دسترسی بر اساس IP و بازههای CIDR (از داخل دیتابیس، بدون ریاستارت)
تعریف hostnameهای مجاز از طریق env
تشخیص خودکار همشبکه بودن کلاینت و سرور (مناسب Kubernetes)
تعریف قوانین دسترسی بر اساس مسیر:
- exact
- startswith / endswith
- regex
قابل استفاده هم برای APIها و هم پروژههای Django معمولی (template-based)
ایده اصلی اینه که بهجای درگیر شدن با لایههای زیرین، تصمیم بگیریم: چه IP یا سرویسی به کدوم مسیر دسترسی داشته باشه، مستقیماً از داخل Django.
این پکیج هنوز جا برای بهتر شدن داره و خوشحال میشم اگر:
روی پروژههای واقعی امتحانش کنی
باگ یا ایدهای داشتی Issue بزنی
یا برای بهبودها (تست، داکیومنت، فیچر جدید) PR بدی
نصب: pip install django-ip-access-middleware
سورسکد
https://github.com/mhmohamad1380/django-ip-access-middleware
@DevTwitter | <Mohammad Hosseini/>
بهخصوص وقتی Kubernetes و چند تا سرویس داخلی وسط میاد و مدیریت این چیزها با Nginx و Security Group کمکم پیچیده میشه.
برای همین یه پکیج ساده و منعطف نوشتم به اسم django-ip-access-middleware که این کار رو از داخل خود Django هندل کنه:
کنترل دسترسی بر اساس IP و بازههای CIDR (از داخل دیتابیس، بدون ریاستارت)
تعریف hostnameهای مجاز از طریق env
تشخیص خودکار همشبکه بودن کلاینت و سرور (مناسب Kubernetes)
تعریف قوانین دسترسی بر اساس مسیر:
- exact
- startswith / endswith
- regex
قابل استفاده هم برای APIها و هم پروژههای Django معمولی (template-based)
ایده اصلی اینه که بهجای درگیر شدن با لایههای زیرین، تصمیم بگیریم: چه IP یا سرویسی به کدوم مسیر دسترسی داشته باشه، مستقیماً از داخل Django.
این پکیج هنوز جا برای بهتر شدن داره و خوشحال میشم اگر:
روی پروژههای واقعی امتحانش کنی
باگ یا ایدهای داشتی Issue بزنی
یا برای بهبودها (تست، داکیومنت، فیچر جدید) PR بدی
نصب: pip install django-ip-access-middleware
سورسکد
https://github.com/mhmohamad1380/django-ip-access-middleware
@DevTwitter | <Mohammad Hosseini/>
👍17🍌4❤3🔥1