چرا تو پروژههام از Azure استفاده میکنم؟
وقتی داری یه پروژهی واقعی با PHP و Laravel میسازی میفهمی که فقط نوشتن کد مهم نیست
زیرساخت، تست، استقرار، امنیت، و حتی مدیریت پکیجها هم به اندازهی خود کدنویسی مهمه
من توی مسیر تجربههام کمکم رسیدم به یه نقطهای که Azure برام تبدیل شد به ابزار اصلی زیرساخت پروژههام. حالا چرا Azure؟ بذار برات توضیح بدم
همهچیز سر جای خودش
تو دنیای برنامه نویسی خیلی مهمه که بتونی backend و frontend رو باهم هماهنگ پیش ببری
سرویس Azure بهم این امکان رو میده که بدون دردسر پروژه رو روی App Service بالا بیارم دیتابیس SQL Server یا حتی MySQL تنظیم کنم و همهچیز از یه پنل مدیریت شه. انگار همهچی از قبل آمادهست فقط باید شروع کنی به توسعه
و Pipelineهایی که واقعا کار میکنن
شاید برات پیش اومده که یه feature رو push کردی و بعدش یادت رفته یه تست رو اجرا کنی یا یه فایل رو کامیت نکردی برای همین من عاشق Azure Pipelines شدم. یه بار برای همیشه تنظیمش میکنی و از اون به بعد هر push یه روند اتومات رو شروع میکنه
اجرای تستهای PHPUnit
اجرای Linter برای تمیز بودن کد
بیلد کردن فایلهای front
و اگر لازم باشه رفتن به production فقط با یه تأیید
و همهی این مراحل با یه فایل YAML ساده کنترل میشن جذابتر اینکه اگه یه مرحله خطا بده، نه تنها deploy نمیشه بلکه دقیقاً میفهمی مشکل از کجاست
مدیریت پکیجها با Nexus
از اونجایی که تو بعضی از پروژههام از پکیجهای PHP اختصاصی استفاده میکنم داشتن یه پکیج رجیستری خصوصی مثل Nexus برام خیلی مهمه
توی Azure بهراحتی میتونم Nexus رو راهاندازی کنیم و تمام پکیجهام رو اونجا نگه دارم هم امنتره هم سریعتر
مخصوصاً برای تیمهایی که چند پروژه دارن و نمیخوان کدهای داخلی توی Packagist یا جای عمومی باشه، این یه مزیت بزرگه
@DevTwitter | <arash narimani/>
وقتی داری یه پروژهی واقعی با PHP و Laravel میسازی میفهمی که فقط نوشتن کد مهم نیست
زیرساخت، تست، استقرار، امنیت، و حتی مدیریت پکیجها هم به اندازهی خود کدنویسی مهمه
من توی مسیر تجربههام کمکم رسیدم به یه نقطهای که Azure برام تبدیل شد به ابزار اصلی زیرساخت پروژههام. حالا چرا Azure؟ بذار برات توضیح بدم
همهچیز سر جای خودش
تو دنیای برنامه نویسی خیلی مهمه که بتونی backend و frontend رو باهم هماهنگ پیش ببری
سرویس Azure بهم این امکان رو میده که بدون دردسر پروژه رو روی App Service بالا بیارم دیتابیس SQL Server یا حتی MySQL تنظیم کنم و همهچیز از یه پنل مدیریت شه. انگار همهچی از قبل آمادهست فقط باید شروع کنی به توسعه
و Pipelineهایی که واقعا کار میکنن
شاید برات پیش اومده که یه feature رو push کردی و بعدش یادت رفته یه تست رو اجرا کنی یا یه فایل رو کامیت نکردی برای همین من عاشق Azure Pipelines شدم. یه بار برای همیشه تنظیمش میکنی و از اون به بعد هر push یه روند اتومات رو شروع میکنه
اجرای تستهای PHPUnit
اجرای Linter برای تمیز بودن کد
بیلد کردن فایلهای front
و اگر لازم باشه رفتن به production فقط با یه تأیید
و همهی این مراحل با یه فایل YAML ساده کنترل میشن جذابتر اینکه اگه یه مرحله خطا بده، نه تنها deploy نمیشه بلکه دقیقاً میفهمی مشکل از کجاست
مدیریت پکیجها با Nexus
از اونجایی که تو بعضی از پروژههام از پکیجهای PHP اختصاصی استفاده میکنم داشتن یه پکیج رجیستری خصوصی مثل Nexus برام خیلی مهمه
توی Azure بهراحتی میتونم Nexus رو راهاندازی کنیم و تمام پکیجهام رو اونجا نگه دارم هم امنتره هم سریعتر
مخصوصاً برای تیمهایی که چند پروژه دارن و نمیخوان کدهای داخلی توی Packagist یا جای عمومی باشه، این یه مزیت بزرگه
@DevTwitter | <arash narimani/>
👎20🔥15👍7❤6
کد های پروژه لاراول خودتون بدون دردسر و در هر ide مثل فرفره تمیز کنید، هم تمیز و هم مطابق استاندارد psr-12
قطعا اجرای نکات ریز هنگام توسعه از نگاه برنامه نویس پنهان میشه و ابزاری لازم داریم که این کارهای تکراری یکبار برای همیشه انجام بده، که یکپارچگی کدهای که حتی بین چند نویسنده بوده حفظ کنه
کارهایی مثل:
- حذف کلاس های use استفاده نشده
-تبدیل دابل کتیشن به تک کتیشن در تعاریف متغییر
- تبدیل تعریف ارائه به شکل [] از areay()
- تراز کردن فاصله بین عملگرها و انتساب ها
-مرتب کردن use ها به ترتیب حروف الفبا
-تنظیم تورفتگی بین کد (tab یا space ) به صورت پیش فرض 4 space جایگزین میشود
-حدف فضاهای اضافی بین کد ها
روش اجرا . ابتدا باید از نصب بودن pint در محیط dev مطمن باشی
بعد هم با دستور زیر pint اجرا کنی
@DevTwitter | <Vahid Alvandi/>
قطعا اجرای نکات ریز هنگام توسعه از نگاه برنامه نویس پنهان میشه و ابزاری لازم داریم که این کارهای تکراری یکبار برای همیشه انجام بده، که یکپارچگی کدهای که حتی بین چند نویسنده بوده حفظ کنه
کارهایی مثل:
- حذف کلاس های use استفاده نشده
-تبدیل دابل کتیشن به تک کتیشن در تعاریف متغییر
- تبدیل تعریف ارائه به شکل [] از areay()
- تراز کردن فاصله بین عملگرها و انتساب ها
-مرتب کردن use ها به ترتیب حروف الفبا
-تنظیم تورفتگی بین کد (tab یا space ) به صورت پیش فرض 4 space جایگزین میشود
-حدف فضاهای اضافی بین کد ها
روش اجرا . ابتدا باید از نصب بودن pint در محیط dev مطمن باشی
composer require laravel/pint --dev
بعد هم با دستور زیر pint اجرا کنی
vendor/bin/pint
@DevTwitter | <Vahid Alvandi/>
👍9❤2🔥1
وایب کدینگ (𝗩𝗶𝗯𝗲 𝗖𝗼𝗱𝗶𝗻𝗴) چیه که همه جا دارن دربارش صحبت میکنن؟
- وقتی این رو از ChatGPT پرسیدم حس کردم یه یکمی در جریان موضوع نیست. مثلاً گفت:
مدلی از کدنویسی که شخص خیلی ریلکس و با آرامش کدنویسی میکنه، موزیک ملایم پخش میشه، تمهای جذاب ادیتور و ابزارهای کار مثل ماوس و کیبورد جالبی استفاده میشه.
- اما در واقع عبارت Vibe Coding که کمتر از ۳ ماه میشه که سر زبونها افتاده، روشی برای توسعهٔ نرمافزار هست که شخص کاملاً با وابستگی به AI توسعه رو انجام میده. یعنی مسئله رو برای AI شرح میدیم و اون برامون کدها رو تولید میکنه. یعنی همون کاری که بیشتر ماها هر روز داریم انجام میدیم :)
- توی این روش، افراد تازهکار میتونن کدهایی در سطح افراد باتجربه بنویسن. به نظر من اولویتها برای تشخیص یک توسعهدهندهٔ خوب داره عوض میشه.
@DevTwitter | <Ali Nazari/>
- وقتی این رو از ChatGPT پرسیدم حس کردم یه یکمی در جریان موضوع نیست. مثلاً گفت:
مدلی از کدنویسی که شخص خیلی ریلکس و با آرامش کدنویسی میکنه، موزیک ملایم پخش میشه، تمهای جذاب ادیتور و ابزارهای کار مثل ماوس و کیبورد جالبی استفاده میشه.
- اما در واقع عبارت Vibe Coding که کمتر از ۳ ماه میشه که سر زبونها افتاده، روشی برای توسعهٔ نرمافزار هست که شخص کاملاً با وابستگی به AI توسعه رو انجام میده. یعنی مسئله رو برای AI شرح میدیم و اون برامون کدها رو تولید میکنه. یعنی همون کاری که بیشتر ماها هر روز داریم انجام میدیم :)
- توی این روش، افراد تازهکار میتونن کدهایی در سطح افراد باتجربه بنویسن. به نظر من اولویتها برای تشخیص یک توسعهدهندهٔ خوب داره عوض میشه.
@DevTwitter | <Ali Nazari/>
👎95👍41❤7🔥1
اگه برای سرویس یا محصول تون به دنبال یه سرویس search engine هستید که کاربر بتونه باهاش product search کنه یا autocomplete و in-app search داشته باشه به جای راه اندازی دردسردار elasticsearch میتونید از meilisearch استفاده کنید.
الاستیک خیلی قابلیت ها داره که متفاوته با ابزاری که معرفی کردم، ولی برای مواردی که عرض کردم میتونه راه اندازی الاستیک و نگهداری ش بیش از حد سنگین باشه.
ابزار meilisearch با rust نوشته شده و زمان پاسخگویی ش خیلی پایینه (زیر ۵۰ میلی ثانیه) و تقریبا real-time آپدیت میکنه (۱ ثانیه تاخیر حدودا)
البته اعدادی که گفتم بسته به نحوه استفاده و داده شما و کانفیگ سرور میتونه متفاوت باشه
همچنین meilisearch قابلیت های فیلتر کردن ساده رو صرفا پشتیبانی میکنه اما facet search داره که فکر میکنم برای کاربردهای مذکور کافی باشه
بنظرم اگه لازم دارید چنین چیزی رو به امتحان کردنش میارزه.
https://github.com/meilisearch/meilisearch
@DevTwitter | <Hossein Nazari/>
الاستیک خیلی قابلیت ها داره که متفاوته با ابزاری که معرفی کردم، ولی برای مواردی که عرض کردم میتونه راه اندازی الاستیک و نگهداری ش بیش از حد سنگین باشه.
ابزار meilisearch با rust نوشته شده و زمان پاسخگویی ش خیلی پایینه (زیر ۵۰ میلی ثانیه) و تقریبا real-time آپدیت میکنه (۱ ثانیه تاخیر حدودا)
البته اعدادی که گفتم بسته به نحوه استفاده و داده شما و کانفیگ سرور میتونه متفاوت باشه
همچنین meilisearch قابلیت های فیلتر کردن ساده رو صرفا پشتیبانی میکنه اما facet search داره که فکر میکنم برای کاربردهای مذکور کافی باشه
بنظرم اگه لازم دارید چنین چیزی رو به امتحان کردنش میارزه.
https://github.com/meilisearch/meilisearch
@DevTwitter | <Hossein Nazari/>
❤13👍4👎3🔥1
یه کلاس کوچیک برای اجرای کدهای python داخل laravel
https://dev.to/johns-dev-projects/laravelphp-doodle-to-run-native-python-3k3j
@DevTwitter | <Milad Niroee/>
https://dev.to/johns-dev-projects/laravelphp-doodle-to-run-native-python-3k3j
@DevTwitter | <Milad Niroee/>
👎28👍5🔥1
با پیشرفت هایی که در تکنیک های Reinforcement Learning شده قابلیت های زیادی به LLM ها اضافه شده. حالا یک تیم از دانشگاه برکلی یک مدلی را با روش multi-turn RL (یادگیری تقویتی چندمرحلهای) فاین تیون کردن برای تبدیل سوالات طبیعی به کوئریهای SQL (تسک Text-to-SQL). چیزی که این مدل رو خاص میکنه، استفاده از یادگیری تقویتی چندمرحلهایه؛ یعنی مدل میتونه کوئریهاش رو مرحله به مرحله اصلاح کنه تا به جواب دقیقتری برسه. یعنی برخلاف روشهای سنتی که فقط یه جواب تولید میکنن، اینجا مدل میتونه چند مرحله سوال و جواب رو پیش ببره تا کوئری SQL نهایی دقیقتر و منطقیتر باشه.
جالبی این مدل اینه که فقط با استفاده از حدود ۶۰۰ نمونه آموزشی، مدل SkyRL-SQL-7B تونسته دقت اجرا (execution accuracy) رو تا ۹.۲٪ روی ۵ بنچمارک مختلف از مجموعه داده Spider نسبت به مدل پایه بالا ببره. و حتی عملکرد بهتری از GPT-4o، o4-mini و OmniSQL-7B (مدل متنباز آموزشدیده با ۲.۵ میلیون نمونه) داشته.
کد و مدل و بلاگشون همه موجوده و میتونید استفاده کنید برای فاین تیون کردن مدلها روی تسک مورد نظرتون.
Blog: https://novasky-ai.notion.site/skyrl-sql
@DevTwitter | <Mehdi Allahyari>
جالبی این مدل اینه که فقط با استفاده از حدود ۶۰۰ نمونه آموزشی، مدل SkyRL-SQL-7B تونسته دقت اجرا (execution accuracy) رو تا ۹.۲٪ روی ۵ بنچمارک مختلف از مجموعه داده Spider نسبت به مدل پایه بالا ببره. و حتی عملکرد بهتری از GPT-4o، o4-mini و OmniSQL-7B (مدل متنباز آموزشدیده با ۲.۵ میلیون نمونه) داشته.
کد و مدل و بلاگشون همه موجوده و میتونید استفاده کنید برای فاین تیون کردن مدلها روی تسک مورد نظرتون.
Blog: https://novasky-ai.notion.site/skyrl-sql
@DevTwitter | <Mehdi Allahyari>
❤12👍4👎1
هکاتون LLM Agents که چند روز پیش تو دانشگاه شریف برگزار شد، واقعاً رویداد خوبی بود. ممنون از همه عزیزانی که برای برگزاریش زحمت کشیدن.
ویدیو ارائهها هم روی یوتیوب منتشر شده، پیشنهاد میکنم از دستشون ندید!
https://www.youtube.com/playlist?list=PLFr7f4WLNwrZzhz-YDjha6j3Z9ymjo7rD
@DevTwitter | <Reza Jafari/>
ویدیو ارائهها هم روی یوتیوب منتشر شده، پیشنهاد میکنم از دستشون ندید!
https://www.youtube.com/playlist?list=PLFr7f4WLNwrZzhz-YDjha6j3Z9ymjo7rD
@DevTwitter | <Reza Jafari/>
👎32❤24👍7🔥1
اپلیکیشن Google AI Edge Gallery
این اپلیکیشن امکان اجرای مدلهای Generative AI را به صورت آفلاین و مستقیم روی دستگاههای اندروید (به زودی iOS) فراهم میکند. شما میتوانید از مدلهای مختلف مانند Gemma-3n و مدلهای Hugging Face استفاده کنید.
https://github.com/google-ai-edge/gallery
@DevTwitter | <Alireza Naji/>
این اپلیکیشن امکان اجرای مدلهای Generative AI را به صورت آفلاین و مستقیم روی دستگاههای اندروید (به زودی iOS) فراهم میکند. شما میتوانید از مدلهای مختلف مانند Gemma-3n و مدلهای Hugging Face استفاده کنید.
https://github.com/google-ai-edge/gallery
@DevTwitter | <Alireza Naji/>
👍10❤3👎2
برنامه Onlook برای طراحان وبسایت و اپلیکیشنهای React با کمک هوش مصنوعی
Cursor for Designers
https://github.com/onlook-dev/onlook
@DevTwitter | <Amirio/>
Cursor for Designers
https://github.com/onlook-dev/onlook
@DevTwitter | <Amirio/>
👎15❤4👍2🔥1
خبر خوب برای طرفدارهای Rust
اوبونتو از نسخهی بعد، سوییچ میکنه به نسخهی sudo که با rust نوشته شده. یعنی sudo-rs
https://www.omgubuntu.co.uk/2025/05/ubuntu-25-10-rust-sudo-rs-change
@DevTwitter | <Bardia/>
اوبونتو از نسخهی بعد، سوییچ میکنه به نسخهی sudo که با rust نوشته شده. یعنی sudo-rs
https://www.omgubuntu.co.uk/2025/05/ubuntu-25-10-rust-sudo-rs-change
@DevTwitter | <Bardia/>
🔥47👎11❤3👍3
اگر با Git زیاد کار میکنید، یه بار این ریپو رو کامل بخونید، مثل کتاب قانون بقا در گیت میمونه
https://github.com/k88hudson/git-flight-rules
@DevTwitter | <Misa/>
https://github.com/k88hudson/git-flight-rules
@DevTwitter | <Misa/>
🔥25👍3
بنازم به این پکیج قدرتمند
با PHPStan، میتونید بدون اجرای کد، خطاهای منطقی، ناسازگاریها و مشکلات تایپی را شناسایی کنید. این ابزار فوقالعاده برای تحلیل استاتیک کد PHP به شما کمک میکند که کدی امنتر، تمیزتر و قابل نگهداریتر بنویسید.
اگر سطح دسترسی رو روی 8 بزارید، هیچ کدی از آنالیزش در امان نخواهد بود
فقط نکته ای که باید بهش دقت کنید اینه که برای پروژه ای که ددلاینش کمه نمیتونید ازش استفاده کنید چون برای رفع اخطار و ارور هایی که شناسایی میکنه شدیدا باید وقت و حوصله بزارید چون طبق یک استانداردی پیش میره که شما شاید یک جور دیگه کد نویسی کنید
لینک پکیج :
https://phpstan.org/
@DevTwitter | <Mojtaba Zaferani/>
با PHPStan، میتونید بدون اجرای کد، خطاهای منطقی، ناسازگاریها و مشکلات تایپی را شناسایی کنید. این ابزار فوقالعاده برای تحلیل استاتیک کد PHP به شما کمک میکند که کدی امنتر، تمیزتر و قابل نگهداریتر بنویسید.
اگر سطح دسترسی رو روی 8 بزارید، هیچ کدی از آنالیزش در امان نخواهد بود
فقط نکته ای که باید بهش دقت کنید اینه که برای پروژه ای که ددلاینش کمه نمیتونید ازش استفاده کنید چون برای رفع اخطار و ارور هایی که شناسایی میکنه شدیدا باید وقت و حوصله بزارید چون طبق یک استانداردی پیش میره که شما شاید یک جور دیگه کد نویسی کنید
لینک پکیج :
https://phpstan.org/
@DevTwitter | <Mojtaba Zaferani/>
🔥26👎4❤3👍2
یکی از ریپوهای با استار بالای گیتهاب free-programming-books هست که یه لیست تقریباً کاملی از کتابها و ویدیوهای آموشی برنامهنویسی رو لیست کرده، حتی چیت شیت و پادکستها رو هم لیست کرده!
https://github.com/EbookFoundation/free-programming-books
@DevTwitter | <Mohammad/>
https://github.com/EbookFoundation/free-programming-books
@DevTwitter | <Mohammad/>
👍24❤7
خب یه پکیج نوشتم، اسمشم گذاشتم زاکاز!
حالا این زاکاز چی هست؟
چند روز پیش یه پست گذاشتم راجب barrel file ها، و یکم راجب خوبیا و بدیاشون گفتم.
خب حالا بیایم این مفهوم رو از تئوریک، کاربردیش کنیم!
یه پکیج نوشتم که توسط اون میتونید تو پروژتون، این barrel fileهارو به شکل اتوماتیک جنریت کنید.
فعلا اول کارشه و جای پیشرفت مسلما خیلی داره، به خصوص تو کدای اسکن فایل های تایپاسکریپت برای پیدا کردن named export ها و default export ها.
در کل خوشحال میشم هر از گاه کانتریبیوت کنید تا زاکاز کوچولو رو کنار هم بزرگ کنیم!
تو مقاله زیر راجبش نوشتم، دوست داشتید مطالعه کنید
https://medium.com/@navidmnzh/zakaz-a-simple-cli-tool-to-order-your-imports-and-exports-in-node-js-32e13c347524
@DevTwitter | <Navid Madannezhad/>
حالا این زاکاز چی هست؟
چند روز پیش یه پست گذاشتم راجب barrel file ها، و یکم راجب خوبیا و بدیاشون گفتم.
خب حالا بیایم این مفهوم رو از تئوریک، کاربردیش کنیم!
یه پکیج نوشتم که توسط اون میتونید تو پروژتون، این barrel fileهارو به شکل اتوماتیک جنریت کنید.
فعلا اول کارشه و جای پیشرفت مسلما خیلی داره، به خصوص تو کدای اسکن فایل های تایپاسکریپت برای پیدا کردن named export ها و default export ها.
در کل خوشحال میشم هر از گاه کانتریبیوت کنید تا زاکاز کوچولو رو کنار هم بزرگ کنیم!
تو مقاله زیر راجبش نوشتم، دوست داشتید مطالعه کنید
https://medium.com/@navidmnzh/zakaz-a-simple-cli-tool-to-order-your-imports-and-exports-in-node-js-32e13c347524
@DevTwitter | <Navid Madannezhad/>
❤12👍3🔥2👎1
یکی از تمرینهایی که تو مسیر یادگیری برنامهنویسی Python انجام دادم، ساخت یک Password Generator ساده و کاربردی بود
در این پروژه:
- کاربر تعداد حروف، اعداد و سمبلها رو وارد میکنه
- رمز به صورت تصادفی تولید و سپس shuffle میشه
- با مفاهیم
هدفم تمرین و تقویت منطق برنامهنویسی و استفاده از ساختارهای پایهای پایتون بود.
سورسکد پروژه در گیتهاب:
https://github.com/Ali-golzadeh/Python-Password-Generator
@DevTwitter | <Ali Golzadeh/>
در این پروژه:
- کاربر تعداد حروف، اعداد و سمبلها رو وارد میکنه
- رمز به صورت تصادفی تولید و سپس shuffle میشه
- با مفاهیم
list
, random
, input
, و for
آشنا شدم هدفم تمرین و تقویت منطق برنامهنویسی و استفاده از ساختارهای پایهای پایتون بود.
سورسکد پروژه در گیتهاب:
https://github.com/Ali-golzadeh/Python-Password-Generator
@DevTwitter | <Ali Golzadeh/>
❤30👎19🔥7👍6
آموزش میکروسرویس توی لاراول
آقای Gary Clarke نکات خیلی خوبی رو میگه داخل این دوره که دیدنش خالی از لطف نیست.
به نظرم برای هر PHP دولوپری دیدنش ضروریه
این پلیلیست رو ذخیره کنید که به دردتون میخوره
https://www.youtube.com/playlist?list=PLQH1-k79HB3_8oAmVySV3PBp869IWGpLN
@DevTwitter | <MiladNiroee/>
آقای Gary Clarke نکات خیلی خوبی رو میگه داخل این دوره که دیدنش خالی از لطف نیست.
به نظرم برای هر PHP دولوپری دیدنش ضروریه
این پلیلیست رو ذخیره کنید که به دردتون میخوره
https://www.youtube.com/playlist?list=PLQH1-k79HB3_8oAmVySV3PBp869IWGpLN
@DevTwitter | <MiladNiroee/>
👎18❤13👍2🔥1