Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود دوستان
اگه دارید از Rook Ceph روی کوبرنتیز استفاده میکنید، هر چند ماهی یکبار ریستارت کردن پادهای مربوط به OSD میتونه به مدیریت بهتر مموری کمک بکنه.
فقط به ترتیب و دونه دونه اینکار رو انجام بدید و همیشه سلامت کلاستر سف رو مونیتور کنید
نگران ریستارت کردن پاد هم نباشید، پروسس ها پاد شدند که بشه راحت ریستارتشون کرد :دی
اگه دارید از Rook Ceph روی کوبرنتیز استفاده میکنید، هر چند ماهی یکبار ریستارت کردن پادهای مربوط به OSD میتونه به مدیریت بهتر مموری کمک بکنه.
فقط به ترتیب و دونه دونه اینکار رو انجام بدید و همیشه سلامت کلاستر سف رو مونیتور کنید
نگران ریستارت کردن پاد هم نباشید، پروسس ها پاد شدند که بشه راحت ریستارتشون کرد :دی
Forwarded from Python BackendHub (Mani)
Forwarded from محتوای آزاد سهراب
Digiato | دیجیاتو
Forwarded from Python BackendHub (Mani)
AioClock
در ماه ۴ هزار دانلود داره 🚀
یک شرکت بزرگ تو برزیل هم داره ازش استفاده میکنه و تو لینکدین ازم تشکر کردن خیلی حس خوبی داشت :))
واقعا دوست دارم فول تایم اوپن سورس کار کنم. و مثلا همین پروژه naked sqlalchemy ام حاصله دو شب کار بود.
ولی متاسفانه هنوز به نقطه ای نرسیدم که بتونم کسب درآمد کنم از پروژه اوپن سورسم
برای همین به حمایتتون نیاز دارم این حمایت میتونه یک استار گیت هاب باشه, که پروژه هام بیشتر دیده شه و به اون نقطه نزدیک تر شم 🫶
فریم ورک/لایبری های مفید اوپن سورسی که تاحالا منتشر کردم:
AioClock - A modern python scheduling framework with dependency injection and modular integration support. Alternative for Rocketry or apscheduler
Naked SQLA - A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM.
CfCrawler - Cloudflare scraper and cralwer written in Async, In-place library for HTTPX. Crawl website that has cloudflare enabled, easier than ever!
@PyBackendHub
در ماه ۴ هزار دانلود داره 🚀
یک شرکت بزرگ تو برزیل هم داره ازش استفاده میکنه و تو لینکدین ازم تشکر کردن خیلی حس خوبی داشت :))
واقعا دوست دارم فول تایم اوپن سورس کار کنم. و مثلا همین پروژه naked sqlalchemy ام حاصله دو شب کار بود.
ولی متاسفانه هنوز به نقطه ای نرسیدم که بتونم کسب درآمد کنم از پروژه اوپن سورسم
برای همین به حمایتتون نیاز دارم این حمایت میتونه یک استار گیت هاب باشه, که پروژه هام بیشتر دیده شه و به اون نقطه نزدیک تر شم 🫶
فریم ورک/لایبری های مفید اوپن سورسی که تاحالا منتشر کردم:
AioClock - A modern python scheduling framework with dependency injection and modular integration support. Alternative for Rocketry or apscheduler
Naked SQLA - A simple and lightweight object mapper around SQLAlchemy core, simple alternative to SQLAlchemy ORM.
CfCrawler - Cloudflare scraper and cralwer written in Async, In-place library for HTTPX. Crawl website that has cloudflare enabled, easier than ever!
@PyBackendHub
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from Rust for Python developers
میخوام یک منبع معرفی کنم ولی قبلش باید بگم چرا به این نتیجه رسیدم؛
توی دوران نوجوانی بعد از چندسال
نوشتن کرک یا حذف قفل یا حتی فارسی سازی قطعات و ... یک بخش قضیه بود؛ کار با
همیشه همه جا میگم اگر یادگرفتن
توی اسمبلی کار کردن با مموری - شیفت دادن بیت برای اعمال ریاضی و ... همرو باید یاد بگیری چیزهایی که توی خیلی از زبانهای دیگه نیست (هرچند بعضیهاش رو توی دوره یوتیوب پایتون بررسی کردیم)
امروز داشتم کتاب
خلاصه خواستم بگم اگر شما هم توی این بحثها با من بودید و پیش از این گفتم همرو مدیون اسمبلی هستم؛ شما دیگه نیازی نیست سراغ اسمبلی برید میتونید
توی دوران نوجوانی بعد از چندسال
Linux Server Administrator بودن و وقتی تسکها برام تکراری و همگی اسکریپت شده بود رفتم سراغ مباحث امنیتی به مدت هک و امنیت رو خوندم و بعد به Reverse Engineering رو آوردم.نوشتن کرک یا حذف قفل یا حتی فارسی سازی قطعات و ... یک بخش قضیه بود؛ کار با
Assembly یک بحث دیگه (تنها درس دانشگاه که ۲۰ گرفتم هم همین بود بدون استاد و میانترم ببین چه عشقی به کد زدن و خوندن Assembly داشتم)همیشه همه جا میگم اگر یادگرفتن
assembly نبود قطعا زمانی که امنیت کار میکردم بدترین و وقت تلف کنترین بخش حرفهای عمرم بود ولی به لطف اسمبلی یادگرفتن عمرم تلف نشد؛ به همه بچهها هم از یک سطحی به بعد وقتی بهم میگفتن چطوری فلان چیز رو یاد میگری یا بدون خوندن میدونی چه عملکردی باید داشته باشه و ... میگم همش رو مدیون یادگیری اسمبلی هستم شما هم بخون و یاد بگیر.توی اسمبلی کار کردن با مموری - شیفت دادن بیت برای اعمال ریاضی و ... همرو باید یاد بگیری چیزهایی که توی خیلی از زبانهای دیگه نیست (هرچند بعضیهاش رو توی دوره یوتیوب پایتون بررسی کردیم)
امروز داشتم کتاب
Rust in Action رو یک مروری میکردم که دیدم تمام این مقاهیم رو صحبت کرده بسیار سادهتر و البته کاربردی چون همشون رو استفاده میکنه تا توی Rust یک پروژهای رو بزنه (مثلا cpu emulator یا OS نویسی و ...)خلاصه خواستم بگم اگر شما هم توی این بحثها با من بودید و پیش از این گفتم همرو مدیون اسمبلی هستم؛ شما دیگه نیازی نیست سراغ اسمبلی برید میتونید
Rust رو بخونید و بعد برید سراغ Rust in Action مسیر سادهتر؛ کاربردیتر و قطعا جذابتری هست.Forwarded from a pessimistic researcher (Kc)
آقا اینو گذاشتم اینجا تا سر فرصت راجع بهش صحبت کنم
نقدا تا فرصت کنم بنویسم این پست رو بد نیست که بخونید.
نقدا تا فرصت کنم بنویسم این پست رو بد نیست که بخونید.
Telegram
a pessimistic researcher
"تئوری علوم کامپیوتر در ۳ تِرک A و B و C"
——————————————————————
اصطلاح Theoretical Computer Science یا به اختصار TCS شاید اینکه کلیتش یعنی چی نیاز به توضیح خاصی نداشته باشه. اما اینکه چه زیر بخشهایی رو داره، داستان دیگری است. یه اصطلاحی که ممکنه خیلی بین…
——————————————————————
اصطلاح Theoretical Computer Science یا به اختصار TCS شاید اینکه کلیتش یعنی چی نیاز به توضیح خاصی نداشته باشه. اما اینکه چه زیر بخشهایی رو داره، داستان دیگری است. یه اصطلاحی که ممکنه خیلی بین…
Forwarded from دبیان فارسی (Sohrab)
در صورتی که موقع نصب دبیان ۱۳ زبان فارسی رو انتخاب کنید، قلمهای وزیرمتن و ساحل به صورت پیشگزیده نصب خواهند شد.
https://salsa.debian.org/installer-team/tasksel/-/commit/47592bfe
#صابر_راستیکردار #قلم #فارسی
@Debianiranch
https://salsa.debian.org/installer-team/tasksel/-/commit/47592bfe
#صابر_راستیکردار #قلم #فارسی
@Debianiranch
Forwarded from ⚝ (ZiZiGuLu)
وقتی شبکه ایجاد می شود که ما دو یا چند کامپیوتر یا میزبان (Host) را به یکدیگر متصل میکنیم که قادر به برقراری ارتباط و اشتراک منابع با یکدیگر باشند.
هدف شبکهسازی: برقرار ارتباط و اشتراک منابع و دادهها.
نکته: host = میزبان به کامپیوترهای دیگر اجازه برقرار ارتباط میدهد.
انواع شبکه از نظر مدیریت منبع:
۱) client - server
۲) همتا به همتا (peer to peer یا p2p)
که امنیت بالاتری دارند.
انواع شبکه از گسترهٔ تحت پوشش:
WAN: (Wide Area Network)
MAN: (Metropolitan Area Network)
LAN: (Local Area Network)
PAN: (Personal Area Network)
WLAN: (Wireless Local Area Network)
CAN: (Campus Area Network)
HAN: (Home Area Network)
SAN: (Storage Area Network)
انواع شبکه از نظر توپولوژی:
Bus: توپولوژی خطی
Star: توپولوژی ستارهای
Ring: توپولوژی حلقوی یا گردشی
Hybrid: توپولوژی ترکیبی
Wireless: توپولوژی بیسیم
Mesh
Tree: توپولوژی درختی
#network
@amiria703_channel
هدف شبکهسازی: برقرار ارتباط و اشتراک منابع و دادهها.
نکته: host = میزبان به کامپیوترهای دیگر اجازه برقرار ارتباط میدهد.
انواع شبکه از نظر مدیریت منبع:
۱) client - server
۲) همتا به همتا (peer to peer یا p2p)
که امنیت بالاتری دارند.
انواع شبکه از گسترهٔ تحت پوشش:
WAN: (Wide Area Network)
MAN: (Metropolitan Area Network)
LAN: (Local Area Network)
PAN: (Personal Area Network)
WLAN: (Wireless Local Area Network)
CAN: (Campus Area Network)
HAN: (Home Area Network)
SAN: (Storage Area Network)
انواع شبکه از نظر توپولوژی:
Bus: توپولوژی خطی
Star: توپولوژی ستارهای
Ring: توپولوژی حلقوی یا گردشی
Hybrid: توپولوژی ترکیبی
Wireless: توپولوژی بیسیم
Mesh
Tree: توپولوژی درختی
#network
@amiria703_channel
Forwarded from a pessimistic researcher (Kc)
Agora
دانشگاه و هرچی که هست - بخش اول ـــــــــــــــــــــــــــــــــــــ یکی از دوستان توی کانالش مطلبی رو در ستایش دانشگاه نوشته با بنمایهی نزدن توی ذوق بقیه و این برای نویسنده دغدغهس و برای همین برای من جالبه. موافق یا مخالف، خوندنیست. من صبح که این رو…
این پست علیرضا رو الان خوندم که روی صحبتش بیشتر با نو دانشجویانی هست که امسال قراره وارد دانشگاه بشن یا شایدم تا الان شدن (از نگاه من بیشتر صحبتش با اونایی هست که دانشگاه تاپ رنک قبول نشدن). منم دوست دارم از این منبری که در اختیار دارم چند کلامی رو اضافه کنم که اونم باشه طلبتون.
راستی لینکهایی که علیرضا توی پستش نوشته همگی پرایویت هستند :)
راستی لینکهایی که علیرضا توی پستش نوشته همگی پرایویت هستند :)
Forwarded from Gopher Academy
🔵 عنوان مقاله
Sets in Go: Using Maps and Recommended Packages
🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی چگونگی ایجاد انواع دادهای برای مجموعهها در زبان برنامهنویسی Go میپردازد، که به طور بومی این نوع داده را پشتیبانی نمیکند. نویسنده، ویلم، راهکارهایی جهت پیادهسازی مجموعهها با استفاده از نقشهها (maps) را شرح میدهد و همچنین به بستههایی نظیر golang-set اشاره میکند که میتوانند در این زمینه مفید باشند. او با نمایش نحوه استفاده از این ابزارها، به توسعهدهندگان امکان میدهد تا مجموعههای خود را به شکل مؤثرتر و منظمتری مدیریت کنند، در حالی که به بررسی مزایا و محدودیتهای مرتبط با هر روش نیز میپردازد. در نهایت، مقاله با ارائه مثالهای عملی کمک میکند تا خوانندگان بهتر بتوانند این امکانات را در پروژههای برنامهنویسی خود به کار گیرند.
🟣لینک مقاله:
https://golangweekly.com/link/160150/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Sets in Go: Using Maps and Recommended Packages
🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی چگونگی ایجاد انواع دادهای برای مجموعهها در زبان برنامهنویسی Go میپردازد، که به طور بومی این نوع داده را پشتیبانی نمیکند. نویسنده، ویلم، راهکارهایی جهت پیادهسازی مجموعهها با استفاده از نقشهها (maps) را شرح میدهد و همچنین به بستههایی نظیر golang-set اشاره میکند که میتوانند در این زمینه مفید باشند. او با نمایش نحوه استفاده از این ابزارها، به توسعهدهندگان امکان میدهد تا مجموعههای خود را به شکل مؤثرتر و منظمتری مدیریت کنند، در حالی که به بررسی مزایا و محدودیتهای مرتبط با هر روش نیز میپردازد. در نهایت، مقاله با ارائه مثالهای عملی کمک میکند تا خوانندگان بهتر بتوانند این امکانات را در پروژههای برنامهنویسی خود به کار گیرند.
🟣لینک مقاله:
https://golangweekly.com/link/160150/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.willem.dev
Sets in Go/Golang – Using Maps and Recommended Packages
Learn how to create sets using maps. With and without open source packages.
Forwarded from ⚝ (Amir Hossein "Amiria" Maher)
annas-archive.org
بزرگترین معدن کتاب، مقاله و اطّلاعات از سراسر کتابخانههای غیر قانونی:
#science #learn #article #FLOSS
@amiria703_channel
بزرگترین معدن کتاب، مقاله و اطّلاعات از سراسر کتابخانههای غیر قانونی:
#science #learn #article #FLOSS
@amiria703_channel
Forwarded from DevTwitter | توییت برنامه نویسی
قراره توی نسخههای بعد مرورگر کروم امکان استفاده از سوکت TCP و UDP اضافه بشه
wicg.github.io/direct-sockets/
@DevTwitter | <Ali Shirvani/>
wicg.github.io/direct-sockets/
@DevTwitter | <Ali Shirvani/>
Forwarded from Code Module | کد ماژول (Mahan-Heydari)
در این پست، طبق درخواست شما عزیزان لینک ابزار های معرفی شده رو قراردادیم تا بتونید بهشون دسترسی داشته باشید و ازشون استفاده کنید
#ai #tools
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from مبناکلود | MabnaCloud
مبناکلود | MabnaCloud
سرور مجازی مبناکلود
مخصوص وبـمـسترها
⚠️ 71% تخفیف پاییزی! ⚠️
4,111,900 تومان
💳 برای خرید آنلاین اینجا کلیک کنید
🔻پردازنده: CPU 16 Core
🔻حافظه: RAM 32 GB
🔻دیسک: 150GB NVMe
🔻ترافیک پایه: 1TB
🔹مستقیماً در دیتاسنتر اختصاصی مبناکلود🔹
🔑 ثبت نام در پنل مبناکلود
☎️ مشاوره تلفنی: 02191212200
مبناکلود | MabnaCloud
سرور مجازی مبناکلود
مخصوص وبـمـسترها
⚠️ 71% تخفیف پاییزی! ⚠️
1,190,000 تومان
💳 برای خرید آنلاین اینجا کلیک کنید
🔻پردازنده: CPU 16 Core
🔻حافظه: RAM 32 GB
🔻دیسک: 150GB NVMe
🔻ترافیک پایه: 1TB
🔹مستقیماً در دیتاسنتر اختصاصی مبناکلود🔹
برای مشاهده بستههای دیگر اینجا کلیک کنید
🔑 ثبت نام در پنل مبناکلود
☎️ مشاوره تلفنی: 02191212200
مبناکلود | MabnaCloud
Forwarded from Agora (Alireza Azadi)
دانشگاه و هرچی که هست - بخش دوم
ـــــــــــــــــــــــــــــــــــــ
در همین راستا، دانشگاه برای شما کار اساسی دیگهای هم که میکنه شبکه سازیه و شبکه داشتن مهمه! من این رو هرجا که نشستم و فرصتی داشتم که حرف بزنم گفتم و باز هم میگم که ملت! آشنا داشتن همیشه، همهجا و همهوقت مهمه! آشناست که شما رو مستقیم یا غیرمستقیم جلو میندازه و الا شما هم یکی از میلیونها نوبادی... کسی شما رو نمیبینه که بخوایید اصلا فرصت کنید که خودتون رو نشون بدین. مجبورید که به قول ساول یکیو بشناسید که اون یکیو بشناسه که میتونه کارتونو راه بندازه. که بتونه شما رو ریفر کنه. که به سبب ارتباط نزدیکش به شما ظرفیتهای شما رو بشناسه و بهتون اعتماد کنه. و الا شما واسه یه پوزیشن اپلای میکنید که توی پست لینکدین نوشته توی دو روز قبل فقط +۱۰۰ نفر واسش اپلای کردن... واقعا اینجا اگر شانس خیلی باهتون یار نباشه حال و روزتون میشه همون حکایت «چو تیره شود مرد را روزگار همه آن کند کش نیاید به کار»... دنشگاه به شما این فرصت رو میده که توی اون جمع از نوبادی بودن در بیایید. این شما رو مرحلههای بعد نجات میده. تضمین میکنم :)
راجعبه سواد و علاقهمندی و باقی این مسائل فکر میکنم قبلا توی آگورا نوشتم نظرم رو، نگار هم توی مطلبش راجعبهش حرف زده که اونجا میتونید بخونید. با این که قصه دارم واسه تعریف کردن ولی فکر میکنم همینقدر کافی باشه :)
پینوشت: شرمنده! الان فهمیدم که کانالی که بهش ارجاع دادم پرایوته. میتونید اینجا جوین ریکوئست بدین.
ـــــــــــــــــــــــــــــــــــــ
در همین راستا، دانشگاه برای شما کار اساسی دیگهای هم که میکنه شبکه سازیه و شبکه داشتن مهمه! من این رو هرجا که نشستم و فرصتی داشتم که حرف بزنم گفتم و باز هم میگم که ملت! آشنا داشتن همیشه، همهجا و همهوقت مهمه! آشناست که شما رو مستقیم یا غیرمستقیم جلو میندازه و الا شما هم یکی از میلیونها نوبادی... کسی شما رو نمیبینه که بخوایید اصلا فرصت کنید که خودتون رو نشون بدین. مجبورید که به قول ساول یکیو بشناسید که اون یکیو بشناسه که میتونه کارتونو راه بندازه. که بتونه شما رو ریفر کنه. که به سبب ارتباط نزدیکش به شما ظرفیتهای شما رو بشناسه و بهتون اعتماد کنه. و الا شما واسه یه پوزیشن اپلای میکنید که توی پست لینکدین نوشته توی دو روز قبل فقط +۱۰۰ نفر واسش اپلای کردن... واقعا اینجا اگر شانس خیلی باهتون یار نباشه حال و روزتون میشه همون حکایت «چو تیره شود مرد را روزگار همه آن کند کش نیاید به کار»... دنشگاه به شما این فرصت رو میده که توی اون جمع از نوبادی بودن در بیایید. این شما رو مرحلههای بعد نجات میده. تضمین میکنم :)
راجعبه سواد و علاقهمندی و باقی این مسائل فکر میکنم قبلا توی آگورا نوشتم نظرم رو، نگار هم توی مطلبش راجعبهش حرف زده که اونجا میتونید بخونید. با این که قصه دارم واسه تعریف کردن ولی فکر میکنم همینقدر کافی باشه :)
پینوشت: شرمنده! الان فهمیدم که کانالی که بهش ارجاع دادم پرایوته. میتونید اینجا جوین ریکوئست بدین.
Telegram
نگار میگوید که
(از هر در سخنی)
اون سری چیزایی که وقتی دوستام رو میبینم براشون تعریف میکنم رو اینجا میذارم.
اون سری چیزایی که وقتی دوستام رو میبینم براشون تعریف میکنم رو اینجا میذارم.
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from DevTwitter | توییت برنامه نویسی
تجربه کارایی بینظیر با Laravel Octane و Swoole در Docker!
همه ما به عنوان توسعهدهنده دنبال راهکارهایی هستیم که برنامههامون سریعتر، بهینهتر و مقیاسپذیرتر باشن. خبر خوب اینه که Laravel Octane همراه با Swoole دقیقاً همین کار رو انجام میده!
این ترکیب نه تنها سرعت برنامهتون رو چند برابر میکنه، بلکه کارایی و قابلیتهای آن رو هم به طور قابل توجهی افزایش میده.
لاراول اکتان (Laravel Octane) یه پکیج برای بهینهسازی عملکرد لاراوله که با استفاده از سرورهای پیشرفته مثل Swoole و RoadRunner، برنامهتون رو در حافظه نگه میداره. یعنی هر بار که یه درخواست جدید میاد، لازم نیست کل برنامه از اول بارگذاری بشه. نتیجه؟ سرعت بالاتر و پاسخگویی بهتر به کاربران!
اما Swoole چطور کار میکنه؟
حالا بیایم بیشتر در مورد Swoole صحبت کنیم، چون موضوع اصلی اینجاست.
افزونه Swoole یه Extension برای PHP هست که با زبان C پیادهسازی شده و امکانات فوقالعادهای ارائه میده. بیاین چندتا از قابلیتهاش رو مرور کنیم:
1. پردازش همزمان (Concurrency): Swoole امکان اجرای چندین درخواست رو همزمان و بدون افت سرعت فراهم میکنه. این یعنی برنامهتون میتونه به تعداد بیشتری از کاربران خدمت بده بدون اینکه دچار لگ یا کندی بشه.
2. استفاده از Coroutine ها : با استفاده از Coroutineها، Swoole میتونه عملیاتهای ورودی/خروجی (I/O) رو بهصورت غیرهمزمان و بدون مسدودسازی اجرا کنه. این ویژگی باعث میشه برنامهتون به شدت سریعتر باشه.
3. وبسوکتها و HTTP/2: Swoole از پروتکلهای پیشرفته مثل وبسوکت و HTTP/2 پشتیبانی میکنه، که یعنی میتونید برنامههای Real-time با کارایی بالا بسازید.
4. بهینهسازی منابع: Swoole مصرف حافظه و CPU رو به شدت کاهش میده و برنامهتون رو بهینهتر و اقتصادیتر میکنه. این یعنی با منابع کمتر، میتونید عملکرد بهتری داشته باشید.
چرا ترکیب Laravel Octane و Swoole عالیه؟
1. سرعت بارگذاری بالا: برنامهتون تا ۱۰ برابر سریعتر اجرا میشه.
2. کاهش مصرف منابع: مصرف RAM و CPU به طرز چشمگیری کاهش پیدا میکنه و این یعنی شما میتونید بیشتر با منابع کمتر کار کنید.
3. پشتیبانی از قابلیتهای پیشرفته: مثل وبسوکتها که برای برنامههای Real-time فوقالعادهان.
4. پایداری بیشتر: برنامهتون در حافظه نگهداری میشه، یعنی نیاز به ریستارت مداوم ندارید.
5. افزایش ظرفیت سرویسدهی: میتونید تعداد زیادی از درخواستها رو بهصورت همزمان مدیریت کنید بدون افت عملکرد.
تجربه شخصی من:
تو چندتا از پروژههای اخیرم، از ترکیب Laravel Octane و Swoole همراه با Docker استفاده کردم. کارایی و سرعت به شکل قابل توجهی بهتر شد، زمان پاسخدهی به شدت کاهش پیدا کرد و باعث افزایش Performance برنامه ها شد.
@DevTwitter | <Amir Mohammad Sanjari/>
همه ما به عنوان توسعهدهنده دنبال راهکارهایی هستیم که برنامههامون سریعتر، بهینهتر و مقیاسپذیرتر باشن. خبر خوب اینه که Laravel Octane همراه با Swoole دقیقاً همین کار رو انجام میده!
این ترکیب نه تنها سرعت برنامهتون رو چند برابر میکنه، بلکه کارایی و قابلیتهای آن رو هم به طور قابل توجهی افزایش میده.
لاراول اکتان (Laravel Octane) یه پکیج برای بهینهسازی عملکرد لاراوله که با استفاده از سرورهای پیشرفته مثل Swoole و RoadRunner، برنامهتون رو در حافظه نگه میداره. یعنی هر بار که یه درخواست جدید میاد، لازم نیست کل برنامه از اول بارگذاری بشه. نتیجه؟ سرعت بالاتر و پاسخگویی بهتر به کاربران!
اما Swoole چطور کار میکنه؟
حالا بیایم بیشتر در مورد Swoole صحبت کنیم، چون موضوع اصلی اینجاست.
افزونه Swoole یه Extension برای PHP هست که با زبان C پیادهسازی شده و امکانات فوقالعادهای ارائه میده. بیاین چندتا از قابلیتهاش رو مرور کنیم:
1. پردازش همزمان (Concurrency): Swoole امکان اجرای چندین درخواست رو همزمان و بدون افت سرعت فراهم میکنه. این یعنی برنامهتون میتونه به تعداد بیشتری از کاربران خدمت بده بدون اینکه دچار لگ یا کندی بشه.
2. استفاده از Coroutine ها : با استفاده از Coroutineها، Swoole میتونه عملیاتهای ورودی/خروجی (I/O) رو بهصورت غیرهمزمان و بدون مسدودسازی اجرا کنه. این ویژگی باعث میشه برنامهتون به شدت سریعتر باشه.
3. وبسوکتها و HTTP/2: Swoole از پروتکلهای پیشرفته مثل وبسوکت و HTTP/2 پشتیبانی میکنه، که یعنی میتونید برنامههای Real-time با کارایی بالا بسازید.
4. بهینهسازی منابع: Swoole مصرف حافظه و CPU رو به شدت کاهش میده و برنامهتون رو بهینهتر و اقتصادیتر میکنه. این یعنی با منابع کمتر، میتونید عملکرد بهتری داشته باشید.
چرا ترکیب Laravel Octane و Swoole عالیه؟
1. سرعت بارگذاری بالا: برنامهتون تا ۱۰ برابر سریعتر اجرا میشه.
2. کاهش مصرف منابع: مصرف RAM و CPU به طرز چشمگیری کاهش پیدا میکنه و این یعنی شما میتونید بیشتر با منابع کمتر کار کنید.
3. پشتیبانی از قابلیتهای پیشرفته: مثل وبسوکتها که برای برنامههای Real-time فوقالعادهان.
4. پایداری بیشتر: برنامهتون در حافظه نگهداری میشه، یعنی نیاز به ریستارت مداوم ندارید.
5. افزایش ظرفیت سرویسدهی: میتونید تعداد زیادی از درخواستها رو بهصورت همزمان مدیریت کنید بدون افت عملکرد.
تجربه شخصی من:
تو چندتا از پروژههای اخیرم، از ترکیب Laravel Octane و Swoole همراه با Docker استفاده کردم. کارایی و سرعت به شکل قابل توجهی بهتر شد، زمان پاسخدهی به شدت کاهش پیدا کرد و باعث افزایش Performance برنامه ها شد.
@DevTwitter | <Amir Mohammad Sanjari/>
Forwarded from Syntax | سینتکس (Daimon)
🔍 بررسی استراتژی جداسازی عملیات چک کردن وجود و بازیابی اطلاعات از دیتابیس
دو رویکرد اصلی در این زمینه در نظر داریم:
1️⃣ جداسازی مسئولیتها:
در این روش، دو متد جداگانه داریم:
-
-
مزایا:
✅ رعایت Single responsibility(SRP)
✅ خوانایی و وضوح بیشتر کد
✅ امکان استفاده مجدد از هر متد به صورت مستقل
معایب:
❌ افزایش تعداد کوئریهای ارسالی به دیتابیس
2️⃣ ترکیب عملیات در یک متد:
در این روش، یک متد واحد داریم:
-
مزایا:
✅ کاهش تعداد کوئریهای ارسالی به دیتابیس
✅ بهبود کارایی
معایب:
❌ احتمال نقض اصل Single responsibility
❌ کاهش خوانایی و وضوح کد
🤔 حالا سوال این است: کدام رویکرد بهتر است؟
پاسخ: بستگی دارد!
باید فاکتورهایی مانند نیازهای پروژه، الگوهای استفاده، و اولویتهای تیم را در نظر گرفت. اما یک راه حل میانه هم وجود دارد:
3️⃣ رویکرد میانه:
در این روش، یک متد اصلی داریم که میتواند مبنای سایر عملیات باشد:
این رویکرد مزایای هر دو روش را ترکیب میکند:
✅ تنها یک کوئری به دیتابیس زده میشود
✅ اصل مسئولیت تکی تا حد زیادی رعایت میشود
✅ انعطافپذیری بیشتری در استفاده داریم
✅ کد خوانا و قابل نگهداری است
شما کدام رویکرد را ترجیح میدهید؟
@Syntax_fa
دو رویکرد اصلی در این زمینه در نظر داریم:
1️⃣ جداسازی مسئولیتها:
در این روش، دو متد جداگانه داریم:
-
check_user_exists(user_id)-
get_user_by_id(user_id)مزایا:
✅ رعایت Single responsibility(SRP)
✅ خوانایی و وضوح بیشتر کد
✅ امکان استفاده مجدد از هر متد به صورت مستقل
معایب:
❌ افزایش تعداد کوئریهای ارسالی به دیتابیس
2️⃣ ترکیب عملیات در یک متد:
در این روش، یک متد واحد داریم:
-
get_user(user_id)مزایا:
✅ کاهش تعداد کوئریهای ارسالی به دیتابیس
✅ بهبود کارایی
معایب:
❌ احتمال نقض اصل Single responsibility
❌ کاهش خوانایی و وضوح کد
🤔 حالا سوال این است: کدام رویکرد بهتر است؟
پاسخ: بستگی دارد!
باید فاکتورهایی مانند نیازهای پروژه، الگوهای استفاده، و اولویتهای تیم را در نظر گرفت. اما یک راه حل میانه هم وجود دارد:
3️⃣ رویکرد میانه:
در این روش، یک متد اصلی داریم که میتواند مبنای سایر عملیات باشد:
class UserService:
@staticmethod
def get_user(user_id: int) -> Optional[User]:
try:
return User.objects.get(id=user_id)
except User.DoesNotExist:
return None
@staticmethod
def check_user_exists(user_id: int) -> bool:
return UserService.get_user(user_id) is not None
@staticmethod
def get_user_or_raise(user_id: int) -> User:
user = UserService.get_user(user_id)
if user is None:
raise ObjectDoesNotExist(f"User with id {user_id} does not exist")
return user
این رویکرد مزایای هر دو روش را ترکیب میکند:
✅ تنها یک کوئری به دیتابیس زده میشود
✅ اصل مسئولیت تکی تا حد زیادی رعایت میشود
✅ انعطافپذیری بیشتری در استفاده داریم
✅ کد خوانا و قابل نگهداری است
شما کدام رویکرد را ترجیح میدهید؟
@Syntax_fa
👍1
Forwarded from Agora (Alireza Azadi)
YouTube
Crafting a Linux kernel scheduler that runs in user-space using Rust - RIGHI, Andrea