یکی از کارای قدیم
شبیه ساز پرواز با گرافیک واقعی (❁´◡`❁)
https://github.com/dmaon/river-raid
@DevTwitter | <dmaon/>
شبیه ساز پرواز با گرافیک واقعی (❁´◡`❁)
https://github.com/dmaon/river-raid
@DevTwitter | <dmaon/>
❤26👎3🔥1🍌1
وقتی غولها هم زمین میخورند!
قطعی گسترده اخیر سرویسهای کلادفلر (Cloudflare) که ناشی از یک تغییر پیکربندی (Configuration Change) بود، یک واقعیت قاطع را به ما یادآوری کرد: قابلیت اطمینان ۱۰۰ درصدی یک توهم است.
موفقیت در دنیای فناوری، در طراحی برای شکست (Design for Failure) و توانایی بازگشت سریع و شفاف است.
۴ درس عملیاتی حیاتی برای افزایش پایداری سیستم (Resilience)
این واقعه، یک مطالعه موردی ارزشمند برای هر سازمان در حال رشدی است که بر روی سیستمهای توزیعشده (Distributed Systems) کار میکند:
۱. کاهش دامنه خطا (Blast Radius Reduction)
چالش: انتشار سریع یک خطای پیکربندی در کل شبکه.
استراتژی: پیادهسازی سختگیرانه انتشار تدریجی (Canary Deployments) و تقسیمبندی منطقی شبکه (Segmentation).
نکته کاربردی: مطمئن شوید که خطاهای پیکربندی در یک "منطقه کوچک" محبوس شده و پیش از گسترش به تمام نقاط، آزمایش شوند. فرآیندهای انتشار خود را مجدداً بررسی کنید.
۲. اهمیت شفافیت و ارتباطات بحران (Crisis Comms)
چالش: بیاعتمادی مشتریان در زمان سکوت.
استراتژی: از یک کانال ارتباطی ثانویه و کاملاً ایزوله (مانند یک صفحه وضعیت روی زیرساخت متفاوت) استفاده کنید.
نکته کاربردی: صداقت فنی را در اولویت قرار دهید. بهروزرسانیهای مکرر و فنی، حتی اگر کوتاه باشند ("ما هنوز در حال بررسی هستیم")، اعتماد را حفظ میکنند.
۳. مقاومت در برابر شکستهای آبشاری (Cascading Failures)
چالش: تبدیل یک مشکل کوچک به یک بحران گسترده.
استراتژی: حذف وابستگیهای متقابل (Decoupling) بین سرویسهای حیاتی. اطمینان حاصل کنید که شکست یک سرویس فرعی، سرویس اصلی را از کار نیندازد.
نکته کاربردی: پیادهسازی مدارهای قطع کننده (Circuit Breakers) در کد، که در صورت شکست یک سرویس وابسته، درخواست را دور زده یا پاسخ از پیش تعیین شده (Failover) ارائه دهند.
۴. یادگیری پس از واقعه (Blameless Post-Mortem)
چالش: تکرار مشکلات بدون تحلیل عمیق.
استراتژی: بلافاصله یک تحلیل بدون سرزنش (Blameless Post-Mortem) آغاز کنید.
نکته کاربردی: تمرکز بر درک دلایل ریشهای و بهبود فرآیندها، نه پیدا کردن مقصر. انتشار سریع و عمیق گزارش فنی (مانند کاری که کلادفلر انجام داد)، به بازگرداندن اعتماد و آموزش جامعه فنی کمک میکند.
اقدام کلیدی برای رهبران
این رویداد را به عنوان یک هشدار (Wake-Up Call) ببینید. آیا استراتژیهای انتشار و طرحهای ارتباطی شما میتوانند در برابر یک خطای غیرمنتظره داخلی مقاومت کنند؟
"در دسترس بودن ۱۰۰ درصدی یک رؤیاست، بازگشت سریع و شفافیت ۱۰۰ درصدی یک تعهد است."
@DevTwitter | <Alireza DavoodiNia/>
قطعی گسترده اخیر سرویسهای کلادفلر (Cloudflare) که ناشی از یک تغییر پیکربندی (Configuration Change) بود، یک واقعیت قاطع را به ما یادآوری کرد: قابلیت اطمینان ۱۰۰ درصدی یک توهم است.
موفقیت در دنیای فناوری، در طراحی برای شکست (Design for Failure) و توانایی بازگشت سریع و شفاف است.
۴ درس عملیاتی حیاتی برای افزایش پایداری سیستم (Resilience)
این واقعه، یک مطالعه موردی ارزشمند برای هر سازمان در حال رشدی است که بر روی سیستمهای توزیعشده (Distributed Systems) کار میکند:
۱. کاهش دامنه خطا (Blast Radius Reduction)
چالش: انتشار سریع یک خطای پیکربندی در کل شبکه.
استراتژی: پیادهسازی سختگیرانه انتشار تدریجی (Canary Deployments) و تقسیمبندی منطقی شبکه (Segmentation).
نکته کاربردی: مطمئن شوید که خطاهای پیکربندی در یک "منطقه کوچک" محبوس شده و پیش از گسترش به تمام نقاط، آزمایش شوند. فرآیندهای انتشار خود را مجدداً بررسی کنید.
۲. اهمیت شفافیت و ارتباطات بحران (Crisis Comms)
چالش: بیاعتمادی مشتریان در زمان سکوت.
استراتژی: از یک کانال ارتباطی ثانویه و کاملاً ایزوله (مانند یک صفحه وضعیت روی زیرساخت متفاوت) استفاده کنید.
نکته کاربردی: صداقت فنی را در اولویت قرار دهید. بهروزرسانیهای مکرر و فنی، حتی اگر کوتاه باشند ("ما هنوز در حال بررسی هستیم")، اعتماد را حفظ میکنند.
۳. مقاومت در برابر شکستهای آبشاری (Cascading Failures)
چالش: تبدیل یک مشکل کوچک به یک بحران گسترده.
استراتژی: حذف وابستگیهای متقابل (Decoupling) بین سرویسهای حیاتی. اطمینان حاصل کنید که شکست یک سرویس فرعی، سرویس اصلی را از کار نیندازد.
نکته کاربردی: پیادهسازی مدارهای قطع کننده (Circuit Breakers) در کد، که در صورت شکست یک سرویس وابسته، درخواست را دور زده یا پاسخ از پیش تعیین شده (Failover) ارائه دهند.
۴. یادگیری پس از واقعه (Blameless Post-Mortem)
چالش: تکرار مشکلات بدون تحلیل عمیق.
استراتژی: بلافاصله یک تحلیل بدون سرزنش (Blameless Post-Mortem) آغاز کنید.
نکته کاربردی: تمرکز بر درک دلایل ریشهای و بهبود فرآیندها، نه پیدا کردن مقصر. انتشار سریع و عمیق گزارش فنی (مانند کاری که کلادفلر انجام داد)، به بازگرداندن اعتماد و آموزش جامعه فنی کمک میکند.
اقدام کلیدی برای رهبران
این رویداد را به عنوان یک هشدار (Wake-Up Call) ببینید. آیا استراتژیهای انتشار و طرحهای ارتباطی شما میتوانند در برابر یک خطای غیرمنتظره داخلی مقاومت کنند؟
"در دسترس بودن ۱۰۰ درصدی یک رؤیاست، بازگشت سریع و شفافیت ۱۰۰ درصدی یک تعهد است."
@DevTwitter | <Alireza DavoodiNia/>
👍15🍌6❤3🔥2
اپ موزیک اپل برای آهنگای لوکال خودت باگ داره و نرمالکردن بلندی صداش به خوبی مورد انتظارم نیست.
گزینههای دیگه هر کدوم یه چیزیشون میلنگه، و foobar2000 مشکلش اینترفیس فجیعشه.
با کمک LLM یه اینترفیس برای مرور آلبوما طبق عکس کاور براش درست کردم و خوشحالم.
https://github.com/openmac/foo-cover-browser
@DevTwitter | <Ali Rastegar/>
گزینههای دیگه هر کدوم یه چیزیشون میلنگه، و foobar2000 مشکلش اینترفیس فجیعشه.
با کمک LLM یه اینترفیس برای مرور آلبوما طبق عکس کاور براش درست کردم و خوشحالم.
https://github.com/openmac/foo-cover-browser
@DevTwitter | <Ali Rastegar/>
👎13👍7🔥2🍌1
شرکت Canonical اکنون تضمین میکند که نسخههای Ubuntu LTS لینوکس تا ۱۵ سال با «Legacy add-on» پوشش امنیتی داشته باشند!
از Ubuntu 14.04 شروع شده گزینهای عالی برای زیرساختهای بلندمدت.
من عشق LTS نصب کردنم.
@DevTwitter | <MehrdadLinux/>
از Ubuntu 14.04 شروع شده گزینهای عالی برای زیرساختهای بلندمدت.
من عشق LTS نصب کردنم.
@DevTwitter | <MehrdadLinux/>
❤32👍4🔥2
دقیقا اون چیزهای مزخرفی که تو react بود و همیشه حالم ازشون بهم میخورد را Svelt نداره مثل اون Dependency آخر useEffect و یا jsx های آشغال که با return بود. امیدوارم روزی فرانت اند دولوپرها به آگاهی برسند این ریعکت مزخرف که ریکت هم مینویسندش از روزگار حذف بشه .
@DevTwitter | <Babak uk/>
@DevTwitter | <Babak uk/>
👎103👍57🍌28🔥4
چجوری بفهمیم ایمیجهای Docker کی نسخه جدید میدن
خیلی وقتا سرویسهای داکری روی نسخههای قدیمی ایمیج میمونن و کسی هم به این زودی متوجه نمیشه!
برای همین ابزاری هست به اسم DIUN که کارش فقط یه چیزه:
بفهمه ایمیجی که داری استفاده میکنی، نسخه جدید داده یا نه.
حالا DIUN چطوری اینو تشخیص میده؟
خیلی ساده:
به docker.sock وصل میشه، میفهمه چه کانتینرهایی داری و از چه ایمیجهایی استفاده میکنی. بعد Digest همونا رو با Digest رجیستری مقایسه میکنه :)))
اگر فرق داشت، یعنی نسخهٔ جدید منتشر شده.
برای استفاده هم فقط کافیه یه کانتینر DIUN کنار سرویسهات بیاری بالا.
حالا DIUN میتونه خروجی رو به هرجایی که API میده بفرسته:
تلگرام، Slack و...
جزئیاتش اینجاست:
https://hashbang.nl/blog/receive-notifications-when-updates-to-docker-images-are-released-using-diun
البته تو محیطهای بزرگ تر معمولاً از ابزارهایی مثل Renovate یا watchtower استفاده میکنن،
ولی DIUN یه گزینه راحت و کار راه اندازه برای اینکه سریع بفهمی ایمیج جدید اومده یا نه!
@DevTwitter | <Amir Haji Mohammad Sadegh/>
خیلی وقتا سرویسهای داکری روی نسخههای قدیمی ایمیج میمونن و کسی هم به این زودی متوجه نمیشه!
برای همین ابزاری هست به اسم DIUN که کارش فقط یه چیزه:
بفهمه ایمیجی که داری استفاده میکنی، نسخه جدید داده یا نه.
حالا DIUN چطوری اینو تشخیص میده؟
خیلی ساده:
به docker.sock وصل میشه، میفهمه چه کانتینرهایی داری و از چه ایمیجهایی استفاده میکنی. بعد Digest همونا رو با Digest رجیستری مقایسه میکنه :)))
اگر فرق داشت، یعنی نسخهٔ جدید منتشر شده.
برای استفاده هم فقط کافیه یه کانتینر DIUN کنار سرویسهات بیاری بالا.
حالا DIUN میتونه خروجی رو به هرجایی که API میده بفرسته:
تلگرام، Slack و...
جزئیاتش اینجاست:
https://hashbang.nl/blog/receive-notifications-when-updates-to-docker-images-are-released-using-diun
البته تو محیطهای بزرگ تر معمولاً از ابزارهایی مثل Renovate یا watchtower استفاده میکنن،
ولی DIUN یه گزینه راحت و کار راه اندازه برای اینکه سریع بفهمی ایمیج جدید اومده یا نه!
@DevTwitter | <Amir Haji Mohammad Sadegh/>
❤16👍5🔥1🍌1
یه پروژه اوپنسورس ساختم که فقط با یک دستور توی تلگرام، لینک Google Meet فوری میسازه.
کافیه توی چت بنویسی:
/meet
و همون لحظه یک روم جدید و آماده استفاده میگیری—کاملاً آزاد برای همه و بدون نیاز به تأیید هاست! (اولین نفر که وارد بشه نقش هاست رو داره)
سورسکد و توضیحات کامل:
https://github.com/Mobinshahidi/google-meet-generator
@DevTwitter | <Mobin/>
کافیه توی چت بنویسی:
/meet
و همون لحظه یک روم جدید و آماده استفاده میگیری—کاملاً آزاد برای همه و بدون نیاز به تأیید هاست! (اولین نفر که وارد بشه نقش هاست رو داره)
سورسکد و توضیحات کامل:
https://github.com/Mobinshahidi/google-meet-generator
@DevTwitter | <Mobin/>
❤62👍25🔥7👎5
یه چیزی که در ورژن جدید php 8.5 بیشتر به چشمم اومد آپدیت curl share init ش هست، میاد از share data یه cache persistent میسازه، منتها این بار، بعد از اجرای اسکریپت از بین نمیره، برای اون worker همچنان valid هست و میشه ازش استفاده کرد
آپتیمایزیشن خوبیه حقیقتا
@DevTwitter | <hadi mirzaie/>
آپتیمایزیشن خوبیه حقیقتا
@DevTwitter | <hadi mirzaie/>
👍13🍌5👎3🔥1
وقتی میگیم AI Bubble همه سریع فکر میکن که موضع گیری راجب کلیت مسئله AI و LLM ها هست، یعنی که ما میخوایم این ها و اثراتشون رو نادیده بگیریم و بگیم به درد نمیخورن در حالی که بحث کلا چیز دیگریست، بحث مسائل سرمایه گزاری، استارت آپ، فاند ریز کردن و سهام هست.
https://www.youtube.com/shorts/ppy_toLPeqQ
@DevTwitter | <Max Shahdoost/>
https://www.youtube.com/shorts/ppy_toLPeqQ
@DevTwitter | <Max Shahdoost/>
👍16❤8👎2🔥2
فونت آراد هم یک فونت با مجوز آزاده که میتونید در کارهای مختلف استفاده کنید.
به امید افزایش تعداد فونتهای فارسی با مجوز آزاد.
تست فونت:
https://mohamaddarvishi.ir/Arad/lab/
لینک دانلود و گیتهاب و...:
https://mohamaddarvishi.ir/Arad/
@DevTwitter | <Milad Nouri/>
به امید افزایش تعداد فونتهای فارسی با مجوز آزاد.
تست فونت:
https://mohamaddarvishi.ir/Arad/lab/
لینک دانلود و گیتهاب و...:
https://mohamaddarvishi.ir/Arad/
@DevTwitter | <Milad Nouri/>
❤68👍13🔥5🍌1
#کدبوک
یک راهنمای مقدماتی و روان برای شروع کار با لینوکس از صفر:
- آشنایی با مفاهیم پایه و ساختار لینوکس
- یادگیری دستورات ضروری خط فرمان
- مدیریت فایلها، پوشهها و فرایندها
- مناسب برای تازهکارهایی که میخوان بدون پیچیدگی وارد دنیای لینوکس بشن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
یک راهنمای مقدماتی و روان برای شروع کار با لینوکس از صفر:
- آشنایی با مفاهیم پایه و ساختار لینوکس
- یادگیری دستورات ضروری خط فرمان
- مدیریت فایلها، پوشهها و فرایندها
- مناسب برای تازهکارهایی که میخوان بدون پیچیدگی وارد دنیای لینوکس بشن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤17👍2🔥1🍌1
این مدل Nano banana Pro واقعا کولاک میکنه برای درست کردن انواع infographic. بهش این پرامپت را دادم به همراه یک متن از یک بلاگ. و با وجود اینکه فقط متن را بهش دادم ولی نمودارهایی که کشیده خیلی به دیاگرام های اصلی شبیه اند. متن را تبدیل کرد به یک مقاله توی مجله با ورق های گلاسه ای
!!!
"Put this whole text verbatim, into a photo of glossy magazine article on a desk, with photos, beautiful typography design, pull quotes and brave formatting. The text:"
و اینم نتیجه
@DevTwitter | <Mehdi Allahyari/>
!!!
"Put this whole text verbatim, into a photo of glossy magazine article on a desk, with photos, beautiful typography design, pull quotes and brave formatting. The text:"
و اینم نتیجه
@DevTwitter | <Mehdi Allahyari/>
🔥26👍6🍌4❤2
اون کدی که روزی صد بار داری بهش لعنت میفرستی... "اشتباه فنی" نیست. "پلن مهاجرت" نفر قبلی بوده!
دیروز با یکی از دوستام صحبت میکردم. حسابی کلافه بود.
میگفت توی یه شرکت جمعوجور کار میکنه که کل ترافیکشون به زور به ۵۰۰ تا ریکوئست در روز میرسه. (پروژهای که روی یه هاست اشتراکی هم مثل ساعت کار میکرد).
ولی الان چی زیر دستشه؟ یه کلاف سردرگم از Microservices، Kafka برای مسیجینگ، GraphQL برای دو تا کوئری ساده، و دیتابیسهای NoSQL که اصلاً نیازی بهشون نبود.
پرسیدم: "چرا؟! کی همچین معماری سنگینی رو برای یه پروژه به این کوچیکی چیده؟"
خندید و گفت: "تیملید قبلی. میخواست رزومهش رو برای آمازون و گوگل قوی کنه. نیاز داشت این کلمات کلیدی (Keywords) رو توی رزومهش داشته باشه تا بتونه ویزا بگیره. الان اون کاناداست و داره حقوق دلاری میگیره..."
"...و ما موندیم و سیستمی که هر جاش رو دست میزنیم، از سه جای دیگه میپکه."
بدتر از اون؟ مدیرای مجموعه هنوز فکر میکنن اون معماری شاهکاره! با خودشون میگن: "فلانی که اینو نوشت الان تو شرکتای بزرگ خارجیه؛ پس حتما کارش درست بوده و ما بلد نیستیم نگهش داریم!"
به این پدیده میگن Resume-Driven Development (RDD). یا به زبون سادهتر: "توسعهی مبتنی بر شوآف".
یعنی انتخاب تکنولوژی نه بر اساس نیاز پروژه یا سود شرکت، بلکه بر اساس جذابیت رزومه برای شغل بعدی.
نتیجهش چیه؟ اون برنامهنویس قبلی شرکت، پلنش رو اجرا کرد و رفت.
و تو؟ تو دیگه یه توسعهدهنده نیستی. تو شدی کسی که تاوان جاهطلبیهای نفر قبلی رو میده. تو داری شببیداری میکشی تا تکنولوژیای رو زنده نگه داری که فقط برای کلاس گذاشتن به پروژه اضافه شده.
@DevTwitter | <Hossein Moradi/>
دیروز با یکی از دوستام صحبت میکردم. حسابی کلافه بود.
میگفت توی یه شرکت جمعوجور کار میکنه که کل ترافیکشون به زور به ۵۰۰ تا ریکوئست در روز میرسه. (پروژهای که روی یه هاست اشتراکی هم مثل ساعت کار میکرد).
ولی الان چی زیر دستشه؟ یه کلاف سردرگم از Microservices، Kafka برای مسیجینگ، GraphQL برای دو تا کوئری ساده، و دیتابیسهای NoSQL که اصلاً نیازی بهشون نبود.
پرسیدم: "چرا؟! کی همچین معماری سنگینی رو برای یه پروژه به این کوچیکی چیده؟"
خندید و گفت: "تیملید قبلی. میخواست رزومهش رو برای آمازون و گوگل قوی کنه. نیاز داشت این کلمات کلیدی (Keywords) رو توی رزومهش داشته باشه تا بتونه ویزا بگیره. الان اون کاناداست و داره حقوق دلاری میگیره..."
"...و ما موندیم و سیستمی که هر جاش رو دست میزنیم، از سه جای دیگه میپکه."
بدتر از اون؟ مدیرای مجموعه هنوز فکر میکنن اون معماری شاهکاره! با خودشون میگن: "فلانی که اینو نوشت الان تو شرکتای بزرگ خارجیه؛ پس حتما کارش درست بوده و ما بلد نیستیم نگهش داریم!"
به این پدیده میگن Resume-Driven Development (RDD). یا به زبون سادهتر: "توسعهی مبتنی بر شوآف".
یعنی انتخاب تکنولوژی نه بر اساس نیاز پروژه یا سود شرکت، بلکه بر اساس جذابیت رزومه برای شغل بعدی.
نتیجهش چیه؟ اون برنامهنویس قبلی شرکت، پلنش رو اجرا کرد و رفت.
و تو؟ تو دیگه یه توسعهدهنده نیستی. تو شدی کسی که تاوان جاهطلبیهای نفر قبلی رو میده. تو داری شببیداری میکشی تا تکنولوژیای رو زنده نگه داری که فقط برای کلاس گذاشتن به پروژه اضافه شده.
@DevTwitter | <Hossein Moradi/>
1👍135❤16🍌13👎3
یه آموزش خوب برای ساخت بازی سوپرماریو با آنریل 5
https://www.youtube.com/watch?v=STCK4nx7waE
https://www.youtube.com/watch?v=wuldH8ODnmc
@DevTwitter
https://www.youtube.com/watch?v=STCK4nx7waE
https://www.youtube.com/watch?v=wuldH8ODnmc
@DevTwitter
👍16🔥2
همیشه برای بهتر شدنِ عملکرد، کد رو بازنویسی میکردم، کوئریها رو بهینه میکردم و کش اضافه میکردم، ولی با این حال گاهی نتیجه مطلوب رو نمیگرفتم.
بعد که با چرخهی حیات یک درخواست در لاراول آشنا شدم، متوجه شدم که در واقع با هر درخواستی که سمت اپلیکیشن ما میاد، یکبار برنامه از صفر بوت میشه.
به فکر چاره برای این موضوع افتاده بودم که اینجا با پکیج Laravel Octane آشنا شدم.
با Laravel Octane اپلیکیشن یکبار بوت میشه و سپس در حافظه نگه داشته میشه؛
در ادامه، با استفاده از server handlerهایی مثل Swoole، RoadRunner یا FrankenPHP، درخواستها توسط workerهای بلندمدت پردازش میشن و دیگه لازم نیست هر بار فریمورک از صفر بالا بیاد.
نتیجه، کاهش چشمگیرِ زمانِ پاسخ و افزایش توان پردازشیه.
نکتهٔ مهم:
این معماری «stateful» هست — یعنی چیزهایی که در حافظه نگه داشته میشن بین درخواستها باقی میمونن.
پس باید حواسمون باشه به متغیرهای سراسری، singletonها و connectionهای باز تا رفتار غیرمنتظره نداشته باشیم.
نکتهٔ جالب اینجاست که استفاده از این پکیج هم خیلی آسونه!
کافیه با دستور سادهی زیر نصبش کنی:
composer require laravel/octane
و بعد، یکی از server handlerها مثل swoole یا roadrunner رو انتخاب و نصب کنی.
برای اجرا در لوکال هم فقط کافیه بنویسی:
php artisan octane:start
اگر از Docker استفاده میکنی، میتونی handler مورد نظرت (مثلاً RoadRunner) رو داخل کانتینر نصب کنی و با تنظیم:
CMD ["php", "artisan", "octane:start", "--server=roadrunner"]
طبق تجربهی خیلی از توسعهدهندهها و تستهای رسمی، Octane میتونه سرعت اجرای برنامه رو چند برابر افزایش بده.
در پروژهای که خودم روش کار میکردم، بعد از راهاندازی Octane، زمان پاسخدهی برخی درخواستها تا چند ثانیه کمتر شد بدون اینکه نیازی به تغییر خاصی در منطق یا کد برنامه باشه.
همین باعث شد عملکرد کلی API واقعاً روانتر و سریعتر به نظر بیاد.
بهنظرم Octane یکی از اون ابزارهاییه که اگر پروژهت پرترافیکه یا با درخواستهای زیاد و سنگین سر و کار داری، حتماً ارزش امتحان کردن رو داره.
@DevTwitter | <Ehsan Zanjani/>
بعد که با چرخهی حیات یک درخواست در لاراول آشنا شدم، متوجه شدم که در واقع با هر درخواستی که سمت اپلیکیشن ما میاد، یکبار برنامه از صفر بوت میشه.
به فکر چاره برای این موضوع افتاده بودم که اینجا با پکیج Laravel Octane آشنا شدم.
با Laravel Octane اپلیکیشن یکبار بوت میشه و سپس در حافظه نگه داشته میشه؛
در ادامه، با استفاده از server handlerهایی مثل Swoole، RoadRunner یا FrankenPHP، درخواستها توسط workerهای بلندمدت پردازش میشن و دیگه لازم نیست هر بار فریمورک از صفر بالا بیاد.
نتیجه، کاهش چشمگیرِ زمانِ پاسخ و افزایش توان پردازشیه.
نکتهٔ مهم:
این معماری «stateful» هست — یعنی چیزهایی که در حافظه نگه داشته میشن بین درخواستها باقی میمونن.
پس باید حواسمون باشه به متغیرهای سراسری، singletonها و connectionهای باز تا رفتار غیرمنتظره نداشته باشیم.
نکتهٔ جالب اینجاست که استفاده از این پکیج هم خیلی آسونه!
کافیه با دستور سادهی زیر نصبش کنی:
composer require laravel/octane
و بعد، یکی از server handlerها مثل swoole یا roadrunner رو انتخاب و نصب کنی.
برای اجرا در لوکال هم فقط کافیه بنویسی:
php artisan octane:start
اگر از Docker استفاده میکنی، میتونی handler مورد نظرت (مثلاً RoadRunner) رو داخل کانتینر نصب کنی و با تنظیم:
CMD ["php", "artisan", "octane:start", "--server=roadrunner"]
طبق تجربهی خیلی از توسعهدهندهها و تستهای رسمی، Octane میتونه سرعت اجرای برنامه رو چند برابر افزایش بده.
در پروژهای که خودم روش کار میکردم، بعد از راهاندازی Octane، زمان پاسخدهی برخی درخواستها تا چند ثانیه کمتر شد بدون اینکه نیازی به تغییر خاصی در منطق یا کد برنامه باشه.
همین باعث شد عملکرد کلی API واقعاً روانتر و سریعتر به نظر بیاد.
بهنظرم Octane یکی از اون ابزارهاییه که اگر پروژهت پرترافیکه یا با درخواستهای زیاد و سنگین سر و کار داری، حتماً ارزش امتحان کردن رو داره.
@DevTwitter | <Ehsan Zanjani/>
❤27👍5🍌5🔥1
#کدبوک
یک مرجع جامع و قابلاعتماد برای شروع مدیریت سیستمهای لینوکسی:
- پوشش مفاهیم اصلی مدیریت کاربران، سرویسها و شبکه
- آشنایی با تنظیمات امنیتی، نظارت و عیبیابی
- معرفی ابزارهای کلیدی لینوکس برای مدیریت روزمره
- مناسب برای مبتدیهایی که میخوان مهارتهای ادمینی حرفهای کسب کنن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
یک مرجع جامع و قابلاعتماد برای شروع مدیریت سیستمهای لینوکسی:
- پوشش مفاهیم اصلی مدیریت کاربران، سرویسها و شبکه
- آشنایی با تنظیمات امنیتی، نظارت و عیبیابی
- معرفی ابزارهای کلیدی لینوکس برای مدیریت روزمره
- مناسب برای مبتدیهایی که میخوان مهارتهای ادمینی حرفهای کسب کنن
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤17👍2🔥1
مدل opus 4.5 دیروز اومد. بینظیره. بهترین مدل دنیا برای coding با اختلاف زیاد.
یک اتفاق مهم دیگه اینکه Anthropic برای اولین بار قیمت بهترین مدل خودش رو به یک سوم تا یک پنجم قیمت قبلی کاهش داده!!
هر میلیون اینپوت از ۲۵ دلار شده ۵ دلار و هر میلیون output هم از ۷۵ دلار شده ۱۵ دلار!
@DevTwitter | <Amin Anvary/>
یک اتفاق مهم دیگه اینکه Anthropic برای اولین بار قیمت بهترین مدل خودش رو به یک سوم تا یک پنجم قیمت قبلی کاهش داده!!
هر میلیون اینپوت از ۲۵ دلار شده ۵ دلار و هر میلیون output هم از ۷۵ دلار شده ۱۵ دلار!
@DevTwitter | <Amin Anvary/>
❤45👍6🍌3👎2
ترجمه فارسی کتاب The Linux Command Line بالاخره کامل شد. این پروژه یک فورک از ریپوی اصلی بود و من همراه با یکی از دوستانم روی تکمیل ترجمه و ویرایش نهایی کار کردیم.
این کتاب یکی از منابع معتبر برای یادگیری ترمینال و دستورهای لینوکس بهصورت کاربردی و قدمبهقدم است.
نسخه کامل ترجمه، بهصورت رایگان و متنباز از طریق لینک زیر در دسترس است:
https://github.com/hheydarian/TLCL-Persian
اگر این پروژه براتون مفید بود، خوشحال میشم با استار دادن، ازش حمایت کنید.
@DevTwitter | <Hamed/>
این کتاب یکی از منابع معتبر برای یادگیری ترمینال و دستورهای لینوکس بهصورت کاربردی و قدمبهقدم است.
نسخه کامل ترجمه، بهصورت رایگان و متنباز از طریق لینک زیر در دسترس است:
https://github.com/hheydarian/TLCL-Persian
اگر این پروژه براتون مفید بود، خوشحال میشم با استار دادن، ازش حمایت کنید.
@DevTwitter | <Hamed/>
❤49👎8👍6🔥4
>Linux is C
>Git is C
>Python interpreter (CPython) is C
>Ruby interpreter (MRI) is C
>PostgreSQL is C
>SQLite is C
>Redis is C
>MySQL is C++
>MongoDB is C++
>Unreal Engine is C++
>Chrome is C++
>Firefox is C++
>Windows kernel is C
>macOS kernel (XNU) is C
>Photoshop is C++
>VMware is C++
>TensorFlow (Core) is C++
-still, you are not convinced to learn C and C++
@DevTwitter
>Git is C
>Python interpreter (CPython) is C
>Ruby interpreter (MRI) is C
>PostgreSQL is C
>SQLite is C
>Redis is C
>MySQL is C++
>MongoDB is C++
>Unreal Engine is C++
>Chrome is C++
>Firefox is C++
>Windows kernel is C
>macOS kernel (XNU) is C
>Photoshop is C++
>VMware is C++
>TensorFlow (Core) is C++
-still, you are not convinced to learn C and C++
@DevTwitter
🍌64❤44👍16🔥6
هوش مصنوعی واقعا زندگیمو راحت تر کرده. با Claude توی چند دیقه یه بات تلگرامی برای خودم ساختم تا سلکشن درست کردن از آلبوما رو خیلی سریع تر کنم. میخواستم خودم بنویسمش خیلی الکی کلی از تایمم میرفت. به حد کافی این همه سال بات ساختم، الان وقت استفاده از ابزاره
https://github.com/zmn-hamid/telegram-selection-maker-bot
@DevTwitter | <Kyrovert/>
https://github.com/zmn-hamid/telegram-selection-maker-bot
@DevTwitter | <Kyrovert/>
🍌52❤19👍3👎1
بعد از اومدن Claude Opus 4.5 روی http://v0.app یکم تستش کنم و ببینم چطوریه، واقعیتش نتایجی که بهم داد خیلی بهتر از چیزی بود که از مدل های خیلی قوی قبلی دیده بودم، انگار یه مدل دادن فقط برای Programming، این نتایج تست های 1 ساعت اخیر من هست. لینکهارو میذارم، واقعا عالیه!
همه اینا فقط با یک پاراگراف 4-5 خطی انجام شده بدون هیچ توضیح اضافه یا اصلاح و بهبود، One-Shot در اولین پرامپت. البته اینا لندینگ پیج هستن ولی در کل برای کمتر از 10 دقیقه کار خیلی خوب و تمیز در اومدن.
مثلا این لینک لندینگ lord of the rings:
https://v0.app/chat/lord-of-the-rings-landing-page-oBpcDgX48O6?ref=NU4L05
@DevTwitter | <Max Shahdoost/>
همه اینا فقط با یک پاراگراف 4-5 خطی انجام شده بدون هیچ توضیح اضافه یا اصلاح و بهبود، One-Shot در اولین پرامپت. البته اینا لندینگ پیج هستن ولی در کل برای کمتر از 10 دقیقه کار خیلی خوب و تمیز در اومدن.
مثلا این لینک لندینگ lord of the rings:
https://v0.app/chat/lord-of-the-rings-landing-page-oBpcDgX48O6?ref=NU4L05
@DevTwitter | <Max Shahdoost/>
👍19❤8🔥4🍌4