یه پروژه جالب برای Agentic RAG
نمونه ساده و قابل فهم از سیستم RAG با استفاده از LangGraph.
این ریپو بهصورت قدمبهقدم نشون میده چطور:
ایندکسسازی سلسلهمراتبی ا
حافظه مکالمه
سوالهای مبهم رو خودش اصلاح کنه
https://github.com/GiovanniPasq/agentic-rag-for-dummies
@DevTwitter | <Amir Pournasserian/>
نمونه ساده و قابل فهم از سیستم RAG با استفاده از LangGraph.
این ریپو بهصورت قدمبهقدم نشون میده چطور:
ایندکسسازی سلسلهمراتبی ا
حافظه مکالمه
سوالهای مبهم رو خودش اصلاح کنه
https://github.com/GiovanniPasq/agentic-rag-for-dummies
@DevTwitter | <Amir Pournasserian/>
❤16👍1
اگه نیاز دارید فایل هاتون رو توی یه سرور درون شبکه Host کنید یه برنامه نوشتم شاید به کارتون بیاد.
دیشب دیدم USB ندارم فایل هامو انتقال بدم به لپتاپ ایده اش رسید به ذهنم ساختمش.
https://github.com/ThisIsDara/PortPal
@DevTwitter | <Dara/>
دیشب دیدم USB ندارم فایل هامو انتقال بدم به لپتاپ ایده اش رسید به ذهنم ساختمش.
https://github.com/ThisIsDara/PortPal
@DevTwitter | <Dara/>
🍌26❤12👍1👎1
تمرکز بیشتر روی Performance، Java مدرن و Cloud
Spring Boot 4:
فریمورک Spring Boot 4 رو میشه ادامهی منطقی مسیری دونست که از Boot 3 شروع شد؛
ولی این بار با تمرکز پررنگتر روی ویژگیهای جدید، سادهسازی عمیقتر و هماهنگی کامل با Java مدرن.
برخلاف نسخههای قبلی، Spring Boot 4 بیشتر روی «بهتر شدن تجربهی واقعی در پروژههای production» تمرکز داره تا اضافه کردن featureهای نمایشی.
پشتیبانی عمیقتر از Javaهای جدید
یکی از مهمترین تغییرات Spring Boot 4، وابستگی کامل به نسخههای جدید Java هست.
این یعنی:
استفادهی بهتر از قابلیتهای جدید JVM
حذف بخشهای قدیمی و legacy
کدی تمیزتر و آیندهدارتر
ابزار Spring Boot 4 عملاً برای پروژههایی ساخته شده که میخوان چند سال بدون دردسر نگهداری بشن.
پرفورمنس بهتر و Startup سریعتر
پرفورمنس همیشه یکی از دغدغههای اصلی پروژههای بکاند بوده و در Boot 4 جدیتر از قبل بهش پرداخته شده:
بهینهسازی فرآیند startup
مصرف حافظهی کمتر
هماهنگی بهتر با Native Image و GraalVM
این موضوع مخصوصاً برای microserviceها و سیستمهای cloud-based خیلی مهمه.
طراحی CloudNative واقعیتر
فریمورک Spring Boot 4 بیش از قبل برای اجرا در محیطهای Cloud و Kubernetes طراحی شده:
بهبود در health checkها
و observability قویتر (metrics, tracing, monitoring)
رفتار پایدارتر در محیطهای distributed
یعنی وقتی اپلیکیشن وارد production میشه، کمتر با رفتارهای غیرمنتظره مواجه میشی.
پیکربندی شفافتر و قابل فهمتر
یکی از تغییرات مهم Boot 4، کم شدن جادوی پنهان هست.
پیکربندیها واضحتر شدن و توسعهدهنده دقیقتر میفهمه چه اتفاقی داره میافته:
خطاهای واضحتر در زمان اجرا
کاهش وابستگیهای غیرضروری
کنترل بیشتر روی auto configuration
این موضوع توی پروژههای بزرگ واقعاً نجاتدهندهست.
فریمورک Spring Boot 4 همچنان روی DX تمرکز ویژه داره:
پیام خطاهای قابل فهمتر
دیباگ راحتتر
هماهنگی بهتر با ابزارهای مدرن توسعه
هدف اینه که توسعهدهنده زمانش رو صرف حل مسئله کنه، نه جنگیدن با فریمورک.
جمعبندی:
فریمورک Spring Boot 4 بیشتر از اینکه یک نسخهی پر زرقوبرق باشه، یک نسخهی بالغ و حرفهایه:
سریعتر
بهینهتر
سازگار با Java و Cloud امروزی
اگر با Spring Boot کار میکنی، Boot 4 قراره تجربهی تمیزتر و قابل اعتمادتری بهت بده.
@DevTwitter | <parham saghazadeh/>
Spring Boot 4:
فریمورک Spring Boot 4 رو میشه ادامهی منطقی مسیری دونست که از Boot 3 شروع شد؛
ولی این بار با تمرکز پررنگتر روی ویژگیهای جدید، سادهسازی عمیقتر و هماهنگی کامل با Java مدرن.
برخلاف نسخههای قبلی، Spring Boot 4 بیشتر روی «بهتر شدن تجربهی واقعی در پروژههای production» تمرکز داره تا اضافه کردن featureهای نمایشی.
پشتیبانی عمیقتر از Javaهای جدید
یکی از مهمترین تغییرات Spring Boot 4، وابستگی کامل به نسخههای جدید Java هست.
این یعنی:
استفادهی بهتر از قابلیتهای جدید JVM
حذف بخشهای قدیمی و legacy
کدی تمیزتر و آیندهدارتر
ابزار Spring Boot 4 عملاً برای پروژههایی ساخته شده که میخوان چند سال بدون دردسر نگهداری بشن.
پرفورمنس بهتر و Startup سریعتر
پرفورمنس همیشه یکی از دغدغههای اصلی پروژههای بکاند بوده و در Boot 4 جدیتر از قبل بهش پرداخته شده:
بهینهسازی فرآیند startup
مصرف حافظهی کمتر
هماهنگی بهتر با Native Image و GraalVM
این موضوع مخصوصاً برای microserviceها و سیستمهای cloud-based خیلی مهمه.
طراحی CloudNative واقعیتر
فریمورک Spring Boot 4 بیش از قبل برای اجرا در محیطهای Cloud و Kubernetes طراحی شده:
بهبود در health checkها
و observability قویتر (metrics, tracing, monitoring)
رفتار پایدارتر در محیطهای distributed
یعنی وقتی اپلیکیشن وارد production میشه، کمتر با رفتارهای غیرمنتظره مواجه میشی.
پیکربندی شفافتر و قابل فهمتر
یکی از تغییرات مهم Boot 4، کم شدن جادوی پنهان هست.
پیکربندیها واضحتر شدن و توسعهدهنده دقیقتر میفهمه چه اتفاقی داره میافته:
خطاهای واضحتر در زمان اجرا
کاهش وابستگیهای غیرضروری
کنترل بیشتر روی auto configuration
این موضوع توی پروژههای بزرگ واقعاً نجاتدهندهست.
فریمورک Spring Boot 4 همچنان روی DX تمرکز ویژه داره:
پیام خطاهای قابل فهمتر
دیباگ راحتتر
هماهنگی بهتر با ابزارهای مدرن توسعه
هدف اینه که توسعهدهنده زمانش رو صرف حل مسئله کنه، نه جنگیدن با فریمورک.
جمعبندی:
فریمورک Spring Boot 4 بیشتر از اینکه یک نسخهی پر زرقوبرق باشه، یک نسخهی بالغ و حرفهایه:
سریعتر
بهینهتر
سازگار با Java و Cloud امروزی
اگر با Spring Boot کار میکنی، Boot 4 قراره تجربهی تمیزتر و قابل اعتمادتری بهت بده.
@DevTwitter | <parham saghazadeh/>
👍20❤2👎2🔥1
یکی از اینفلوئنسرهای حوزه Ai بنام Robin Eber سایت پایین رو ساخته که بصورت رایگان، پرامپت شما رو آنالیز میکنه و بهش نمره میده.
بهتون میگه که آیا پرامپتتون رو خوب نوشتید یا نه و اگر نه، ایرادش کجاست و چطور میتونید بهترش کنید که بهترین خروجی ممکن رو بگیرید.
https://coach.robinebers.com/
@DevTwitter | <Amin Anvary/>
بهتون میگه که آیا پرامپتتون رو خوب نوشتید یا نه و اگر نه، ایرادش کجاست و چطور میتونید بهترش کنید که بهترین خروجی ممکن رو بگیرید.
https://coach.robinebers.com/
@DevTwitter | <Amin Anvary/>
❤23🍌5👎4👍3
مواردی که توی PHP8.6 مورد انتظار هستن توی این پست آورده شده.
البته هنوز خیلی زوده چون تازه php8.5 اومده.
ولی خب یک سری موارد با توجه به آپدیتها تایید شدن.
https://nabilhassen.com/php-86
@DevTwitter | <Milad Niroee/>
البته هنوز خیلی زوده چون تازه php8.5 اومده.
ولی خب یک سری موارد با توجه به آپدیتها تایید شدن.
https://nabilhassen.com/php-86
@DevTwitter | <Milad Niroee/>
🔥20🍌6👎2❤1
اقا ما بدلیل محدودیت های مادی یه اپی ساختیم برای تست برد های الکتریکی
خلاصه اینطوریه که با یه اردوئینو کار اسیلوسکوپمیکنه ،
https://github.com/Mooch3384/El-Board-Tester
@DevTwitter | <موچی/>
خلاصه اینطوریه که با یه اردوئینو کار اسیلوسکوپمیکنه ،
https://github.com/Mooch3384/El-Board-Tester
@DevTwitter | <موچی/>
1🔥27👍4❤2
لینوکس fedora نسخه 43 منتشر شد
فدورا لینوکس یکی از توزیعهای پیشرو دنیای لینوکس هستش که توسط پروژه fedora و با پشتیبانی شرکت Red Hat توسعه داده میشه. چرخه ریلیز جدید fedora حدودا هر شش ماه هست و هر ریلیز تا 13 ماه پشتیبانی میشه.
ویژگیهای مهم fedora 43:
- هسته لینوکس 6.17: پشتیبانی بهتر از سخت افزار های جدید و بهبود در مدیریت چند هسته ای.
- محیط دسکتاپ Workstation (GNOME 49): اجرای پیشفرض بر روی Wayland و پایان پشتیبانی از X11.
- نسخه KDE Plasma (Plasma 6.4.5): رفع باگ های KWin و مدیریت رنگ و خروجی بهتر در Wayland.
- مدیریت بستهها با RPM 6.0: افزایش امیت بسته ها و بهبود مدیریت امضا ها.
منبع:
https://fedoramagazine.org/whats-new-fedora-workstation-43
@DevTwitter | <Mohammad Mortazavi/>
فدورا لینوکس یکی از توزیعهای پیشرو دنیای لینوکس هستش که توسط پروژه fedora و با پشتیبانی شرکت Red Hat توسعه داده میشه. چرخه ریلیز جدید fedora حدودا هر شش ماه هست و هر ریلیز تا 13 ماه پشتیبانی میشه.
ویژگیهای مهم fedora 43:
- هسته لینوکس 6.17: پشتیبانی بهتر از سخت افزار های جدید و بهبود در مدیریت چند هسته ای.
- محیط دسکتاپ Workstation (GNOME 49): اجرای پیشفرض بر روی Wayland و پایان پشتیبانی از X11.
- نسخه KDE Plasma (Plasma 6.4.5): رفع باگ های KWin و مدیریت رنگ و خروجی بهتر در Wayland.
- مدیریت بستهها با RPM 6.0: افزایش امیت بسته ها و بهبود مدیریت امضا ها.
منبع:
https://fedoramagazine.org/whats-new-fedora-workstation-43
@DevTwitter | <Mohammad Mortazavi/>
🔥14👎6❤5
ایشون باگی رو در str_replace ورژن 8.5 php پیدا کرده که جالبه
باگ از xdebug میاد که اگر ورژن قدیمی باشه، باعث مشکل در این فانکشن میشه
مطالب خوبی در زمینه php میذاره کلا
https://www.youtube.com/watch?v=dWM1VkBtkA8
@DevTwitter | <hadi mirzaie/>
باگ از xdebug میاد که اگر ورژن قدیمی باشه، باعث مشکل در این فانکشن میشه
مطالب خوبی در زمینه php میذاره کلا
https://www.youtube.com/watch?v=dWM1VkBtkA8
@DevTwitter | <hadi mirzaie/>
👍13🔥1
از وقتی هوش مصنوعی قدرت گرفته بیشتر به این نتیجه میرسم که اشتباه کردم و سالها بجای زبان پایتون Python زبان های Asp , Php یاد گرفتم .
این که کد چیکار میکند همین قدر که با Proxy های مختلف و شبیه ساز دیوایس های مختلف از انواع گوشی تلفن همراه ، تبلت و ... را در سراسر جهان شبیه سازی میکند و ...
پایتون و هوش مصنوعی بسیار جذاب هستند و سطح امنیت در اینترنت روز به روز خطرناک تر می شود ، امروز افراد بیشتر حتی بدون داشتن دانش فناوری امکان انجام حملات هکری و تولید بد افزار های جدید را دارند که ممکن است نه تنها برای کاربران که برای سیستم های امنیتی هم چالش بزرگی محسوب شود .
@DevTwitter | <Hossein Eftekharrad/>
این که کد چیکار میکند همین قدر که با Proxy های مختلف و شبیه ساز دیوایس های مختلف از انواع گوشی تلفن همراه ، تبلت و ... را در سراسر جهان شبیه سازی میکند و ...
پایتون و هوش مصنوعی بسیار جذاب هستند و سطح امنیت در اینترنت روز به روز خطرناک تر می شود ، امروز افراد بیشتر حتی بدون داشتن دانش فناوری امکان انجام حملات هکری و تولید بد افزار های جدید را دارند که ممکن است نه تنها برای کاربران که برای سیستم های امنیتی هم چالش بزرگی محسوب شود .
@DevTwitter | <Hossein Eftekharrad/>
👎98👍17🍌14🔥1
فایل access.log باهامون حرف میزنه... :)))
چند وقت پیش توی شرایطی قرار گرفتم که لازم بود یک پروژهی کوچیکِ بدون مانیتورینگ رو بررسی کنم.
میدونستم که دیتای مورد نیازم داخل access.log هست ولی جمع بندی کردن و ارائهی یک گزارش قابل دفاع ازش سخت بود.
بعد از بوسیدن روی گل claude به یک ابزاری رسیدم که میتونه یه گزارش تمیز و شفاف از هر چیزی که اتفاق افتاده یا داره میوفته رو بده.
ابزار GoAccess این کار رو مثل آب خوردن انجام میده؛ بهت خروجی HTML هم میده.
اگر روی سرور نصبش کنی میتونی به صورت real-time ببینی چه خبره و داره چه اتفاقی میوفته، از همه چیز هم گزارش میده.
https://goaccess.io/
@DevTwitter | <Milad Niroee/>
چند وقت پیش توی شرایطی قرار گرفتم که لازم بود یک پروژهی کوچیکِ بدون مانیتورینگ رو بررسی کنم.
میدونستم که دیتای مورد نیازم داخل access.log هست ولی جمع بندی کردن و ارائهی یک گزارش قابل دفاع ازش سخت بود.
بعد از بوسیدن روی گل claude به یک ابزاری رسیدم که میتونه یه گزارش تمیز و شفاف از هر چیزی که اتفاق افتاده یا داره میوفته رو بده.
ابزار GoAccess این کار رو مثل آب خوردن انجام میده؛ بهت خروجی HTML هم میده.
اگر روی سرور نصبش کنی میتونی به صورت real-time ببینی چه خبره و داره چه اتفاقی میوفته، از همه چیز هم گزارش میده.
https://goaccess.io/
@DevTwitter | <Milad Niroee/>
🔥16❤5
به عنوان کسی که اول با php کار میکردم بعد اومدم سمت Java میخوام به یک مشکل بزرگ توی استک php اشاره کنم
مشکل اینه که phpرو حالت پیشفرض برای هر درخواست کاربر همه چیو از صفر load میکنه و مموری رو بین درخواست های مختلف share نمیکنه
چیزیو توی مموری نگه نمیداره و برای هر درخواست برنامه از اول bootstrap میشه
هر درخواست =
اجرای composer autoload
ایجاد connectionها
انجام task
حذف کامل state
در حالی که وقتی با جاوا کار میکنی اپلیکیشن یکبار توی مموری load میشه و هر درخواست توی thread جدید همون اپلیکیشن یا process هندل میشه و مموری process بین thread ها یعنی درخواست ها share میشه
و خب بنظرم توی اپلیکیشن های امروزی که تعداد کاربران که با وبسایت کار میکنن زیاده این یک مشکل بزرگ هست
چرا؟
چون Resource های سنگین مثل Connection هارو برای هر درخواست از اول باز میکنه و امکان Connection pooling نیست
یعنی اگه مثلا کد php ما میخواد یک api توی سرویس دیگه ای رو تحت پروتکل Http صدا بزنه برای هر درخواستِ کاربر، php باید کانکشن جدید بسازه و tcp handshake هر بار تکرار میشه
یا وقتی میخواد با دیتابیس ارتباط بگیره برای هر درخواست یهConnection جدید باز میکنه که به شدت کارایی برنامه رو میاره پایین. چون کانکشن های دیتابیس علاوه بر tcp handshake ها باید به ازای هر کانکشن که ایجاد میشه احراز هویت و لاگین هم انجام بشه. یا سمت سرور دیتابیس برای هر کانکشن یک process جدید توی سیستم عامل ایجاد میشه که یه بار اضافه روی سرور دیتابیس هم میندازه
در حالی که اگه state حفظ بشه میشه این Connection ها وResource های سنگین رو باز نگه داشت و چندین بار ازشون استفاده کرد و یا اصطلاحا Pool کرد که کارایی برنامه بشدت میره بالا
مطمعنا برای ارتباط به هر سرور و ابزار خاصی این مشکل ایجاد کانکشن های جدید هست
تو فکرم اینه که اگه کد php میخواد مثلا با gRPC با یک میکروسرویس دیگه ارتباط داشته باشه کل مزیت streaming این پروتکل از دست میره و نمیتونه اون Persistent connection رو داشته باشه و همه تعاملات رو با اون انجام بده در واقع Multiplexing از بین میره. و برای هر درخواست gRPC یک کانکشن جدید ساخته میشه!!!!!
البته وقتی از php-fpm برای serve اپلیکیشن استفاده میکنید. php-fpm میتونه به ازای هر woker process کانکشن هارو توی مموری نگه داره (پیشفرض اینکارو نمیکنه)
اما خب این کانکشن به ازای هرworker process هست و باز بین درخواست ها share نمیشه. صرفا درخواست جدیدی که با اونworker process هندل بشه این کانکشن رو میتونه داشته باشه.
و خب برای هندل کردن درخواست های همزمان تعداد زیادی کانکشن به دیتابیس ایجاد میشه که باز میتونه یه مشکل دیگه باشه و اپلیکیشن ما میتونه به تنهایی کل توان پردازشی دیتابیس رو مصرف کنه(کنترلی روی حداکثر تعداد کانکشن ها نیست)
و تو این حالتم نمیشه از پروتکل هایی که همه تعاملات رو با یک کانکشن انجام میدن استفاده کرد. Multiplexing برای این ساخته شد که با یک کانکشن همه تعاملات انجام بشه. ولی تو این حالت به ازای هر worker processو درخواستی که هندل میکنه یک کانکشن داریم
فقط هم gRPC نیست، برای ارتباط گرفتن با کافکا هم کلاینت کافکا از یک کانکشن برای بهینه کردن و رد بدل اطلاعات با بروکر استفاده میکنه
حتی RabbitMQکه channel هارو توی یک تک کانکشنtcp هندل میکنه
ابزار های مختلفی مثل FrankenPHP/Swoole/RoadRunnner یا Laravel Octane برای حل چنین مشکلاتی ساخته شدن که phpرو تبدیل به اپلیکیشن سرور میکنن
@DevTwitter | <Hossein Soleimani/>
مشکل اینه که phpرو حالت پیشفرض برای هر درخواست کاربر همه چیو از صفر load میکنه و مموری رو بین درخواست های مختلف share نمیکنه
چیزیو توی مموری نگه نمیداره و برای هر درخواست برنامه از اول bootstrap میشه
هر درخواست =
اجرای composer autoload
ایجاد connectionها
انجام task
حذف کامل state
در حالی که وقتی با جاوا کار میکنی اپلیکیشن یکبار توی مموری load میشه و هر درخواست توی thread جدید همون اپلیکیشن یا process هندل میشه و مموری process بین thread ها یعنی درخواست ها share میشه
و خب بنظرم توی اپلیکیشن های امروزی که تعداد کاربران که با وبسایت کار میکنن زیاده این یک مشکل بزرگ هست
چرا؟
چون Resource های سنگین مثل Connection هارو برای هر درخواست از اول باز میکنه و امکان Connection pooling نیست
یعنی اگه مثلا کد php ما میخواد یک api توی سرویس دیگه ای رو تحت پروتکل Http صدا بزنه برای هر درخواستِ کاربر، php باید کانکشن جدید بسازه و tcp handshake هر بار تکرار میشه
یا وقتی میخواد با دیتابیس ارتباط بگیره برای هر درخواست یهConnection جدید باز میکنه که به شدت کارایی برنامه رو میاره پایین. چون کانکشن های دیتابیس علاوه بر tcp handshake ها باید به ازای هر کانکشن که ایجاد میشه احراز هویت و لاگین هم انجام بشه. یا سمت سرور دیتابیس برای هر کانکشن یک process جدید توی سیستم عامل ایجاد میشه که یه بار اضافه روی سرور دیتابیس هم میندازه
در حالی که اگه state حفظ بشه میشه این Connection ها وResource های سنگین رو باز نگه داشت و چندین بار ازشون استفاده کرد و یا اصطلاحا Pool کرد که کارایی برنامه بشدت میره بالا
مطمعنا برای ارتباط به هر سرور و ابزار خاصی این مشکل ایجاد کانکشن های جدید هست
تو فکرم اینه که اگه کد php میخواد مثلا با gRPC با یک میکروسرویس دیگه ارتباط داشته باشه کل مزیت streaming این پروتکل از دست میره و نمیتونه اون Persistent connection رو داشته باشه و همه تعاملات رو با اون انجام بده در واقع Multiplexing از بین میره. و برای هر درخواست gRPC یک کانکشن جدید ساخته میشه!!!!!
البته وقتی از php-fpm برای serve اپلیکیشن استفاده میکنید. php-fpm میتونه به ازای هر woker process کانکشن هارو توی مموری نگه داره (پیشفرض اینکارو نمیکنه)
اما خب این کانکشن به ازای هرworker process هست و باز بین درخواست ها share نمیشه. صرفا درخواست جدیدی که با اونworker process هندل بشه این کانکشن رو میتونه داشته باشه.
و خب برای هندل کردن درخواست های همزمان تعداد زیادی کانکشن به دیتابیس ایجاد میشه که باز میتونه یه مشکل دیگه باشه و اپلیکیشن ما میتونه به تنهایی کل توان پردازشی دیتابیس رو مصرف کنه(کنترلی روی حداکثر تعداد کانکشن ها نیست)
و تو این حالتم نمیشه از پروتکل هایی که همه تعاملات رو با یک کانکشن انجام میدن استفاده کرد. Multiplexing برای این ساخته شد که با یک کانکشن همه تعاملات انجام بشه. ولی تو این حالت به ازای هر worker processو درخواستی که هندل میکنه یک کانکشن داریم
فقط هم gRPC نیست، برای ارتباط گرفتن با کافکا هم کلاینت کافکا از یک کانکشن برای بهینه کردن و رد بدل اطلاعات با بروکر استفاده میکنه
حتی RabbitMQکه channel هارو توی یک تک کانکشنtcp هندل میکنه
ابزار های مختلفی مثل FrankenPHP/Swoole/RoadRunnner یا Laravel Octane برای حل چنین مشکلاتی ساخته شدن که phpرو تبدیل به اپلیکیشن سرور میکنن
@DevTwitter | <Hossein Soleimani/>
👍18👎11❤9🍌1
این ارور "declared and not used" واقعا یکی از بزرگترین مزیتهای گولنگ نسبت به پایتون بوده تا اینجا.
داره میگه آقا، اگر متغیری رو تعریف کردی، حق نداری بلااستفاده ولش کنی! یا باید پاکش کنی، یا کامنت، و یا اینکه استفادش کنی
@DevTwitter | <Matin SenPai/>
داره میگه آقا، اگر متغیری رو تعریف کردی، حق نداری بلااستفاده ولش کنی! یا باید پاکش کنی، یا کامنت، و یا اینکه استفادش کنی
@DevTwitter | <Matin SenPai/>
👎92👍52❤4🔥1
سیستم مدیریت تایمرها در Unity
(برای LiveOps، فیچرها، Cooldownها و Eventها)
یکی از الگوهای اشتباه و رایجی که بارها در پروژههای Unity (کوچک و حتی بزرگ) دیدم اینه که:
- هر Feature تایمر مخصوص به خودش رو داره
- هر برنامهنویس منطق زمانبندی رو جداگانه پیادهسازی میکنه
این رویکرد شاید در کوتاهمدت جواب بده، اما در مقیاس بزرگ باعث میشه:
کد تکراری زیاد شود - Code Duplication
نگهداری پروژه سختتر شود - Maintainability
خوانایی کد کم بشود - Readability
توسعه ی کد سخت بشود - Scalability
اعمال تغییرات سراسری تقریباً غیرممکن شود
از دید معماری نرمافزار، هر زمان منطقهای تکراری و پایدار داریم، باید بدونیم که این منطقها میتونن با یک سیستم مرکزی مدیریت بشن.
در بازیها هم تایمرها همهجا هستند . مثلاً:
- فیچر Daily Reward با بازهی ۲۴ ساعته
- آفرها یا بستههای فروشگاهی با زمان چند ساعته
- فیچر های متنوع که زمان محدودی دادن
حالا فرض کنید تصمیم بگیریم همهی تایمرها از حالت Local خارج شوند و به زمان سرور (UTC) متصل شوند.
اگر هر تایمر جداگانه پیادهسازی شده باشد، این تغییر به یک فاجعه تبدیل میشود
اما با یک سیستم مرکزی، معمولاً با تغییر در یک نقطه، این قانون روی همهی تایمرها اعمال میشه
به همین دلیل، من یک TimerManager عمومی طراحی کردم که از هر Feature یا Script قابل استفاده است اما مدیریت زمانبندیها بهصورت مرکزی انجام میشه
کار باهاش خیلی ساده هست .
ویژگیهای TimerManager
️ مدیریت تایمرها بر اساس Key
️ استفاده از Callback برای بروزرسانی UI
️ استفاده از API برای شروع و توقف تایمر
️ نمایش زمان در فرمت های مختلف
️ ادغام ساده در هر Feature
امیدوارم این پیادهسازی براتون کاربردی باشه.
کد کامل در GitHub:
https://github.com/seidmoh3n/Unity-Timer-Manager
@DevTwitter | <Mohsen Mirshamsi/>
(برای LiveOps، فیچرها، Cooldownها و Eventها)
یکی از الگوهای اشتباه و رایجی که بارها در پروژههای Unity (کوچک و حتی بزرگ) دیدم اینه که:
- هر Feature تایمر مخصوص به خودش رو داره
- هر برنامهنویس منطق زمانبندی رو جداگانه پیادهسازی میکنه
این رویکرد شاید در کوتاهمدت جواب بده، اما در مقیاس بزرگ باعث میشه:
کد تکراری زیاد شود - Code Duplication
نگهداری پروژه سختتر شود - Maintainability
خوانایی کد کم بشود - Readability
توسعه ی کد سخت بشود - Scalability
اعمال تغییرات سراسری تقریباً غیرممکن شود
از دید معماری نرمافزار، هر زمان منطقهای تکراری و پایدار داریم، باید بدونیم که این منطقها میتونن با یک سیستم مرکزی مدیریت بشن.
در بازیها هم تایمرها همهجا هستند . مثلاً:
- فیچر Daily Reward با بازهی ۲۴ ساعته
- آفرها یا بستههای فروشگاهی با زمان چند ساعته
- فیچر های متنوع که زمان محدودی دادن
حالا فرض کنید تصمیم بگیریم همهی تایمرها از حالت Local خارج شوند و به زمان سرور (UTC) متصل شوند.
اگر هر تایمر جداگانه پیادهسازی شده باشد، این تغییر به یک فاجعه تبدیل میشود
اما با یک سیستم مرکزی، معمولاً با تغییر در یک نقطه، این قانون روی همهی تایمرها اعمال میشه
به همین دلیل، من یک TimerManager عمومی طراحی کردم که از هر Feature یا Script قابل استفاده است اما مدیریت زمانبندیها بهصورت مرکزی انجام میشه
کار باهاش خیلی ساده هست .
ویژگیهای TimerManager
️ مدیریت تایمرها بر اساس Key
️ استفاده از Callback برای بروزرسانی UI
️ استفاده از API برای شروع و توقف تایمر
️ نمایش زمان در فرمت های مختلف
️ ادغام ساده در هر Feature
امیدوارم این پیادهسازی براتون کاربردی باشه.
کد کامل در GitHub:
https://github.com/seidmoh3n/Unity-Timer-Manager
@DevTwitter | <Mohsen Mirshamsi/>
👍14🔥1
Media is too big
VIEW IN TELEGRAM
بعضی پروژهها به ما یادآوری میکنن که وبسایتها فقط برای انتقال اطلاعات نیستن؛میتونن یه «تجربه» باحال باشن و سایت Floor796 دقیقاً یکی از همونهاست!
اینجا با یه وبسایت معمولی طرف نیستید؛
با یه نقاشی متحرک روبهروئید که توی پیکسلبهپیکسلش زندگی جریان داره.
چرا این سایت انقدر خاصه؟
چون یه دنیای پیکسلیِ بینهایت پیشروتونه، پر از کاراکترهای نوستالژیک! وقتی زوم میکنی، تازه میفهمی چه خبره!!!
هر لایه از این ایستگاه فضایی پر از کاراکترهاییه که باهاشون خاطره داریم؛ از دنیای گیم گرفته تا انیمیشنهای معروف، همه اینجا جمع شدن. فقط کافیه زوم کنید تا غرق جزئیات و داستانهای ریز و درشتش بشید.
https://floor796.com/
@DevTwitter | <Soheil Ghanbary/>
اینجا با یه وبسایت معمولی طرف نیستید؛
با یه نقاشی متحرک روبهروئید که توی پیکسلبهپیکسلش زندگی جریان داره.
چرا این سایت انقدر خاصه؟
چون یه دنیای پیکسلیِ بینهایت پیشروتونه، پر از کاراکترهای نوستالژیک! وقتی زوم میکنی، تازه میفهمی چه خبره!!!
هر لایه از این ایستگاه فضایی پر از کاراکترهاییه که باهاشون خاطره داریم؛ از دنیای گیم گرفته تا انیمیشنهای معروف، همه اینجا جمع شدن. فقط کافیه زوم کنید تا غرق جزئیات و داستانهای ریز و درشتش بشید.
https://floor796.com/
@DevTwitter | <Soheil Ghanbary/>
❤50🔥5👍1👎1
هوش مصنوعی Z.ai مدل GLM-4.7 رو معرفی کرد. طبق اعلام خودشون کیفیت کد زنی تقریباً مشابه Opus 4.5 از شرکت آنتروپیک رو داره.
با تنظیماتی که تو لینک زیر هست خیلی راحت میشه داخل Cursor هم استفاده کرد.
https://docs.z.ai/devpack/tool/cursor
@DevTwitter | <Mohammad/>
با تنظیماتی که تو لینک زیر هست خیلی راحت میشه داخل Cursor هم استفاده کرد.
https://docs.z.ai/devpack/tool/cursor
@DevTwitter | <Mohammad/>
🍌18👍8❤5👎2
DevTwitter | توییت برنامه نویسی
#کوته_نیوز گیتهاب self-runner رو پولی کرد 0.002 دلار به ازای هر دقیقه @DevTwitter
#کوته_نیوز
اون قضیه 0.002 دلار به ازای هر دقیقه برای self-hosted runnerهای گیتهاب که قرار بود از اول مارس ۲۰۲۶ شروع بشه در پی سر و صداهای زیادش فعلاً به تعویق افتاد.
@DevTwitter | <Hamed/>
اون قضیه 0.002 دلار به ازای هر دقیقه برای self-hosted runnerهای گیتهاب که قرار بود از اول مارس ۲۰۲۶ شروع بشه در پی سر و صداهای زیادش فعلاً به تعویق افتاد.
@DevTwitter | <Hamed/>
👍47🔥6❤1🍌1
چارت جی اس(Chart.js) یه کتابخونه اوپن سورس جاوااسکریپتیه که برای ساخت نمودارهای تمیز توی وب هستش و با canvas کار میکنه. راهاندازیش سادهست و برای نمایش دادهها به شکل خطی میلهای دایرهای و کلی مدل دیگه عالیه:
https://chartjs.org
لینک گیتهاب:
https://github.com/chartjs/Chart.js
@DevTwitter | <Shayan GeeDook/>
https://chartjs.org
لینک گیتهاب:
https://github.com/chartjs/Chart.js
@DevTwitter | <Shayan GeeDook/>
👍26👎6❤4🔥3
وال پنل یه پنل ساخت و مدیریت ادمین نان سودو برای پنل های x-ui هست، اگه استفاده کردید خوشحال میشم با استار از ریپو حمایت کنید
( http://github.com/primeZdev/whale-panel )
@DevTwitter | <primeZ/>
( http://github.com/primeZdev/whale-panel )
@DevTwitter | <primeZ/>
🔥13🍌8👍2👎2
Forwarded from هشتگ تبلیغ تخصصی
سرور مجازی ایران الوند نتورک دقیقاً همونه که میخوای 💎
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌5👎1
خبر خوب برای برنامه نویس های C# که میخوان از AI استفاده کنن
استک اصلی من ASP .NET Core و Blazor هست و باهاش پروژههای زیادی انجام داده ام. پایتون هم کار کردهام، ولی بیشتر برای کارهای دمدستی و مرتبط با AI و Data Science.
چند سال اخیر، برای AI و کار با لایبرریها مجبور شدم بیشتر سراغ پایتون برم و راستش همیشه یه گلایه تو ذهنم بود
اینکه چرا کامیونیتی مایکروسافت تو این حوزه خیلی جدی وارد نمیشه.
حالا چرا با پایتون ننویسیم؟ فرض کن با دات نت یه سری پروژه جدی نوشتی و حالا میخوایی برای کمک به کاربر، امکانات AI اضافه کنی: باید روی سرور پروداکشن پایتون داشته باشی و API بدی و از اپلیکیشن دات نت اون API رو صدا کنی! تازه این اول کاره! امنیت، لاگ و ... که باید با اپلیکیشن خودت integrate بشه!
یه خورده با Semantic Kernel و چند لایبرری دیگه کار کردم، ولی صادقانه بگم، خیلی Solid بنظرم نیومد و به دلم ننشستن…
تا اینکه اخیراً با Microsoft Agent Framework آشنا شدم و کمی باهاش کار کردم. رویکردش واقعاً جالب بود
هم برای Python هست، هم برای C# — و همین موضوع جذابیتش رو چند برابر میکنه.
چند تا نکتهی جذابش که من دوست داشتم:
میتونی ازش برای ساخت چتباتهای ساده تا سیستمهای پیچیده چندعامل (multi-agent) استفاده کنی — همه با پترنهای قابل فهم و توسعهپذیر
و Graph-based Workflows داره که میتونی چند Agent رو به هم وصل کنی و یک جریان کاری هوشمند بسازی GitHub
پشتیبانی کامل از امکاناتی مثل Functions/Tool و Agent Memory , MCP Servers و Thread و Agent History/Storage و ...
همینظور Observability / Telemetry داخلی هم داره — یعنی میتونی رفتار Agent ها رو دنبال و دیباگ کنی (برای پروژههای پروداکشن خیلی مهمه!)
ابزار DevUI هم داره که بهت Interactive UI میده برای دیدن گامبهگام عملکرد Agent ها و workflow ها
و بهترین بخشش اینه که APIهاش در Python و C# خیلی شبیه هم هستن — پس میتونی راحت بین دو زبان کار کنی بدون اینکه حس کنی زندانی یه اکوسیستم شدی
به نظرم این یکی از بهترین قدمهای مایکروسافت برای AI Agents هست — هم برای تجربههای سریع و هم برای ساختن سیستمهای جدی در پروژه های دات نت
https://github.com/microsoft/agent-framework
@DevTwitter | <Amir Pournasserian/>
استک اصلی من ASP .NET Core و Blazor هست و باهاش پروژههای زیادی انجام داده ام. پایتون هم کار کردهام، ولی بیشتر برای کارهای دمدستی و مرتبط با AI و Data Science.
چند سال اخیر، برای AI و کار با لایبرریها مجبور شدم بیشتر سراغ پایتون برم و راستش همیشه یه گلایه تو ذهنم بود
اینکه چرا کامیونیتی مایکروسافت تو این حوزه خیلی جدی وارد نمیشه.
حالا چرا با پایتون ننویسیم؟ فرض کن با دات نت یه سری پروژه جدی نوشتی و حالا میخوایی برای کمک به کاربر، امکانات AI اضافه کنی: باید روی سرور پروداکشن پایتون داشته باشی و API بدی و از اپلیکیشن دات نت اون API رو صدا کنی! تازه این اول کاره! امنیت، لاگ و ... که باید با اپلیکیشن خودت integrate بشه!
یه خورده با Semantic Kernel و چند لایبرری دیگه کار کردم، ولی صادقانه بگم، خیلی Solid بنظرم نیومد و به دلم ننشستن…
تا اینکه اخیراً با Microsoft Agent Framework آشنا شدم و کمی باهاش کار کردم. رویکردش واقعاً جالب بود
هم برای Python هست، هم برای C# — و همین موضوع جذابیتش رو چند برابر میکنه.
چند تا نکتهی جذابش که من دوست داشتم:
میتونی ازش برای ساخت چتباتهای ساده تا سیستمهای پیچیده چندعامل (multi-agent) استفاده کنی — همه با پترنهای قابل فهم و توسعهپذیر
و Graph-based Workflows داره که میتونی چند Agent رو به هم وصل کنی و یک جریان کاری هوشمند بسازی GitHub
پشتیبانی کامل از امکاناتی مثل Functions/Tool و Agent Memory , MCP Servers و Thread و Agent History/Storage و ...
همینظور Observability / Telemetry داخلی هم داره — یعنی میتونی رفتار Agent ها رو دنبال و دیباگ کنی (برای پروژههای پروداکشن خیلی مهمه!)
ابزار DevUI هم داره که بهت Interactive UI میده برای دیدن گامبهگام عملکرد Agent ها و workflow ها
و بهترین بخشش اینه که APIهاش در Python و C# خیلی شبیه هم هستن — پس میتونی راحت بین دو زبان کار کنی بدون اینکه حس کنی زندانی یه اکوسیستم شدی
به نظرم این یکی از بهترین قدمهای مایکروسافت برای AI Agents هست — هم برای تجربههای سریع و هم برای ساختن سیستمهای جدی در پروژه های دات نت
https://github.com/microsoft/agent-framework
@DevTwitter | <Amir Pournasserian/>
❤20🍌11👍1🔥1