چند روز پیش کارتهایی رو برای توضیح فایل editorconfig. گذاشتم که بالاتر میتونید پیدا کنید.
این سری، ۳۰ نوع فایل رو معرفی میکنم که اسمشون با نقطه شروع میشه و کاربردشون از جهاتی شبیه editorconfig است، یعنی تنظیماتی رو برای کارهای جانبی در توسعه نگهداری میکنند.
مثلا قواعدی رو که نیاز دارید linter شما حین بررسی کدها در نظر بگیره، یا مثلا قبل از هر commit یه سری کار روی فایلها انجام بشه (مثل مرتبسازی و حذف فضای خالی انتهای خطها و...)
خلاصه (اگر نخواستید ۹ کارت رو بخونید 😁):
- تا حد امکان هر کاری رو اتومات کنیم تا درگیر خطاهای سهوی یا فراموشی طی تکرارها نشیم
- تنظیمات رو بین اعضای تیم اشتراک بگذاریم تا یکدستی بیشتری در توسعه داشته باشیم و تنظیماتمون چندبارمصرف باشن.
- کلی ابزار و کتابخونه برای قاعدهمندتر کردن توسعه، پیشگیری از اشتباهات و یکدستی کدها هست که شاید مرور سریع این ۹ کارت بهمون ایده بده! این ۳۰ نوع فایل که معرفی کردم با هدف ایده دادن بوده، نه به خاطر سپردن!
اگر فایل خوب و پرکابردی هست که توی کارتها نیست، کامنت کنید 😉
این سری، ۳۰ نوع فایل رو معرفی میکنم که اسمشون با نقطه شروع میشه و کاربردشون از جهاتی شبیه editorconfig است، یعنی تنظیماتی رو برای کارهای جانبی در توسعه نگهداری میکنند.
مثلا قواعدی رو که نیاز دارید linter شما حین بررسی کدها در نظر بگیره، یا مثلا قبل از هر commit یه سری کار روی فایلها انجام بشه (مثل مرتبسازی و حذف فضای خالی انتهای خطها و...)
خلاصه (اگر نخواستید ۹ کارت رو بخونید 😁):
- تا حد امکان هر کاری رو اتومات کنیم تا درگیر خطاهای سهوی یا فراموشی طی تکرارها نشیم
- تنظیمات رو بین اعضای تیم اشتراک بگذاریم تا یکدستی بیشتری در توسعه داشته باشیم و تنظیماتمون چندبارمصرف باشن.
- کلی ابزار و کتابخونه برای قاعدهمندتر کردن توسعه، پیشگیری از اشتباهات و یکدستی کدها هست که شاید مرور سریع این ۹ کارت بهمون ایده بده! این ۳۰ نوع فایل که معرفی کردم با هدف ایده دادن بوده، نه به خاطر سپردن!
اگر فایل خوب و پرکابردی هست که توی کارتها نیست، کامنت کنید 😉
🔥5
✨ نکات ادمینی مهاجرت از SQL Server به PostgreSQL
- کارت ۷.۲: جایگزینهای Log Shipping در PostgreSQL
- کارت ۷.۳: جایگزینهای Always-On در PostgreSQL
🟥 این کارت قرمزها رو من برای دوستانی درست میکنم که از SQL Server قصد مهاجرت به PostgreSQL رو دارند
💬 اگر به موضوع علاقهمندید یا سوالی دارید که بتونم پاسخ بدم، حتمن کامنت کنید 😉
#MSSQL_to_PGSQL
- کارت ۷.۲: جایگزینهای Log Shipping در PostgreSQL
- کارت ۷.۳: جایگزینهای Always-On در PostgreSQL
🟥 این کارت قرمزها رو من برای دوستانی درست میکنم که از SQL Server قصد مهاجرت به PostgreSQL رو دارند
💬 اگر به موضوع علاقهمندید یا سوالی دارید که بتونم پاسخ بدم، حتمن کامنت کنید 😉
#MSSQL_to_PGSQL
👍4
✨ معرفی افزونه کاربردی برای VS Code
برای شما هم پیش میاد که چندین VS Code در حال اجرا دارید و بینشون سوییچ میکنید؟ هر بار هم باید یک لحظه بگردید و چک کنید الان روی کدومشون هستید؟
افزونه Peacock (طاووس) برای کمک به این وضعیته، میتونید هر کدوم رو کلا یه رنگ خاص بدید تا قاطی نکنید.
💣 گاهی یکی از VS Code ها روی یک فایل یا یک ماشین حساس مثل پروداکشنه ☠️ و یک تغییر اشتباهی روش میتونه دردسرساز بشه. پس بهتره رنگ محیط حساس رو تغییر بدیم تا بعدن دچار مشکل نشیم 😅
🔗 صفحه اختصاصی و دانلود
برنامهنویس: John Papa
تعداد دانلود: ۳.۳ میلیون
سورسکد
برای شما هم پیش میاد که چندین VS Code در حال اجرا دارید و بینشون سوییچ میکنید؟ هر بار هم باید یک لحظه بگردید و چک کنید الان روی کدومشون هستید؟
افزونه Peacock (طاووس) برای کمک به این وضعیته، میتونید هر کدوم رو کلا یه رنگ خاص بدید تا قاطی نکنید.
💣 گاهی یکی از VS Code ها روی یک فایل یا یک ماشین حساس مثل پروداکشنه ☠️ و یک تغییر اشتباهی روش میتونه دردسرساز بشه. پس بهتره رنگ محیط حساس رو تغییر بدیم تا بعدن دچار مشکل نشیم 😅
🔗 صفحه اختصاصی و دانلود
برنامهنویس: John Papa
تعداد دانلود: ۳.۳ میلیون
سورسکد
👍4
در مورد تیم پلتفرم یا Developer Platform Team دوست دارید بدونید؟
- مفهومش
- وظایفش
- خروجیهاش
- ابزارهای مورد استفاده
- مسیر شغلیش
اگر دوست داشتید با ایموجیهای 👍 یا اگر موضوع جالبی نیست با 👎 نظرتون رو بگید لطفا 😉
#موقت
- مفهومش
- وظایفش
- خروجیهاش
- ابزارهای مورد استفاده
- مسیر شغلیش
اگر دوست داشتید با ایموجیهای 👍 یا اگر موضوع جالبی نیست با 👎 نظرتون رو بگید لطفا 😉
#موقت
👍19
✨ طی ۲۴ ساعت گذشته، و احتمالا چند روز آینده، خیلیهامون ذهنمون درگیر شرایط و اخبار ایرانه (چه ایران باشیم؛ چه از دور دنبالکننده اخبار و نگران وضعیت عزیزانمون)
در شرایطی که اخبار نگرانکنندهای در جامعه وجود داره، حفظ تمرکز و آرامش برای ما اهمیت زیادی داره. حالا چیکار کنیم که تعادل رو حفظ کنیم و به کارمون برسیم؟ (۵ پیشنهاد به خودم و شما)
۱. محدود کردن مصرف اخبار: زمان مشخصی را برای خوندن اخبار تعیین کنیم و از دنبال کردن مداوم رسانهها (خصوصا شبکههای اجتماعی که پر از اظهارنظرهای غیر مستند، شایعات و حتی بزرگنماییهای اضطرابآوره) خودداری کنیم تا از اضطراب بیش از حد جلوگیری کنیم، فقط یک یا دو منبع معتبر کافیه.
۲. ایجاد برنامه منظم: حفظ روال کاری و زندگی روزمره میتونه به ایجاد حس ثبات و کنترل کمک کنه، جلسات رو کنسل نکنیم، خودمون رو ملزم به رسوندن همون برنامههای دوران عادی کنیم.
۳. تمرین تکنیکهای آرامسازی: فعالیتهایی مثل مدیتیشن، تمرینات تنفسی عمیق یا اگر یوگا بلد باشیم! میتونه به کاهش استرس و افزایش تمرکز کمک کند. یا حتی پیادهروی بدون خوندن یا فکر کردن به اخبار.
۴. ارتباط با عزیزان: با خانواده و دوستان خودمون در ارتباط باشیم ولی نه برای دنبال کردن اخبار و پیشبینی آنچه ازش بیخبریم! بلکه برای رد و بدل حس حمایت متقابل، و از بین بردن احساس تنهایی (آدمها در کنار همدیگه، خصوصا خانواده هم شجاعترن هم آرامتر)
۵. تمرکز بر موارد قابل کنترل: به جای نگرانی درباره مسائلی که خارج از کنترل ما هستن، روی وظایف (وظایفمون چه به عنوان یک مهندس و چه به عنوان یک انسان، یک عضو خانواده) و پروژههای کاری خودمون تمرکز کنیم تا احساس موفقیت و پیشرفت داشته باشیم، این حس مثل دارو برای اضطراب ناشی از اخبار نگرانکننده است.
میدونم که توصیه زیاد میشنویم وعمل کردن بهش سخته، با اینکه دیروز میخواستم بعد از کار، یه مطلب آماده کنم، ولی این اخبار نگذاشت! لذا شاید این ۵ پیشنهاد به خودم و شما یه یادآوری باشه که بتونیم آرامش بیشتری داشته باشیم 😊
به امید روزهایی که فقط خبرهای خوب بشنویم و مخابره کنیم 🌱
در شرایطی که اخبار نگرانکنندهای در جامعه وجود داره، حفظ تمرکز و آرامش برای ما اهمیت زیادی داره. حالا چیکار کنیم که تعادل رو حفظ کنیم و به کارمون برسیم؟ (۵ پیشنهاد به خودم و شما)
۱. محدود کردن مصرف اخبار: زمان مشخصی را برای خوندن اخبار تعیین کنیم و از دنبال کردن مداوم رسانهها (خصوصا شبکههای اجتماعی که پر از اظهارنظرهای غیر مستند، شایعات و حتی بزرگنماییهای اضطرابآوره) خودداری کنیم تا از اضطراب بیش از حد جلوگیری کنیم، فقط یک یا دو منبع معتبر کافیه.
۲. ایجاد برنامه منظم: حفظ روال کاری و زندگی روزمره میتونه به ایجاد حس ثبات و کنترل کمک کنه، جلسات رو کنسل نکنیم، خودمون رو ملزم به رسوندن همون برنامههای دوران عادی کنیم.
۳. تمرین تکنیکهای آرامسازی: فعالیتهایی مثل مدیتیشن، تمرینات تنفسی عمیق یا اگر یوگا بلد باشیم! میتونه به کاهش استرس و افزایش تمرکز کمک کند. یا حتی پیادهروی بدون خوندن یا فکر کردن به اخبار.
۴. ارتباط با عزیزان: با خانواده و دوستان خودمون در ارتباط باشیم ولی نه برای دنبال کردن اخبار و پیشبینی آنچه ازش بیخبریم! بلکه برای رد و بدل حس حمایت متقابل، و از بین بردن احساس تنهایی (آدمها در کنار همدیگه، خصوصا خانواده هم شجاعترن هم آرامتر)
۵. تمرکز بر موارد قابل کنترل: به جای نگرانی درباره مسائلی که خارج از کنترل ما هستن، روی وظایف (وظایفمون چه به عنوان یک مهندس و چه به عنوان یک انسان، یک عضو خانواده) و پروژههای کاری خودمون تمرکز کنیم تا احساس موفقیت و پیشرفت داشته باشیم، این حس مثل دارو برای اضطراب ناشی از اخبار نگرانکننده است.
میدونم که توصیه زیاد میشنویم وعمل کردن بهش سخته، با اینکه دیروز میخواستم بعد از کار، یه مطلب آماده کنم، ولی این اخبار نگذاشت! لذا شاید این ۵ پیشنهاد به خودم و شما یه یادآوری باشه که بتونیم آرامش بیشتری داشته باشیم 😊
به امید روزهایی که فقط خبرهای خوب بشنویم و مخابره کنیم 🌱
👍11🙏1
E1-Overview on platform engineering
Amin Mesbahi
🎧 پست شنیداری ۱: مهندسی پلتفرم
اولین پست شنیداری تکافترنون، با موضوع مهندسی پلتفرم
✨ مهندسی پلتفرم چیه؟
مهندسی پلتفرم به فرآیند طراحی، ساخت و نگهداری زیرساخت و پلتفرم پایهای اشاره داره. مهندسان پلتفرم مسئول ایجاد ابزارها، چارچوبها و سیستمهای بنیادی هستند که توسعهدهندههای نرمافزار و سایر ذینفعها مثل معمارهای سولوشن/نرمافزار میتونن از اونها برای ساخت و تحویل محصولات نرمافزاری استفاده کنند.
امیدوارم دوست داشته باشین و با کامنتهاتون به بهتر شدن پستهای شنیداری بعدی کمک کنید...
مدت: ۲۸ دقیقه
اولین پست شنیداری تکافترنون، با موضوع مهندسی پلتفرم
✨ مهندسی پلتفرم چیه؟
مهندسی پلتفرم به فرآیند طراحی، ساخت و نگهداری زیرساخت و پلتفرم پایهای اشاره داره. مهندسان پلتفرم مسئول ایجاد ابزارها، چارچوبها و سیستمهای بنیادی هستند که توسعهدهندههای نرمافزار و سایر ذینفعها مثل معمارهای سولوشن/نرمافزار میتونن از اونها برای ساخت و تحویل محصولات نرمافزاری استفاده کنند.
امیدوارم دوست داشته باشین و با کامنتهاتون به بهتر شدن پستهای شنیداری بعدی کمک کنید...
مدت: ۲۸ دقیقه
👍6🔥2
💡📌 بدهی فنی، Debt Week، code stewardship و تأثیرش بر تیم
سلام به همه 😊
این ۵ تا کارت رو برای بررسی و توضیح بدهی فنی (که همهمون رو پیر کرده) و تاثیر داشتن debt week پرداختم.
امیدوارم بخونید، به آمار و اعداد ۲ اسلاید آخر نگاه بندازید و تجربه خودتون از بدهی فنی و روش مقابله باهاش توی کامنت بنویسید و گپ بزنیم در موردش 😉
سلام به همه 😊
این ۵ تا کارت رو برای بررسی و توضیح بدهی فنی (که همهمون رو پیر کرده) و تاثیر داشتن debt week پرداختم.
امیدوارم بخونید، به آمار و اعداد ۲ اسلاید آخر نگاه بندازید و تجربه خودتون از بدهی فنی و روش مقابله باهاش توی کامنت بنویسید و گپ بزنیم در موردش 😉
🔥6👌6
🧩 یه افزونه برای VS Code اینبار Error Lens
با نداشتنش آسمون به زمین نمیاد! ولی بودنش عصای دسته برای پیگیری راحتتر خطاها.
مثلا متن خطا یا اخطار رو جلو همون خطی که باعش شده نشون میده
حدود ۵ میلیون دانلود داشته و ۵ ساله که فعاله. (چرا این اعداد مهمه؟ چرا باید به توسعهدهنده اصلی افزونه دقت کنیم؟ چون توسعه و پخش افزونه، ولو کاربردی و جالب، یکی از تلهها رخنههای امنیتی است)
📌 دریافت و نصب Error Lens
🖥 ریپازیتوری گیتهاب
با نداشتنش آسمون به زمین نمیاد! ولی بودنش عصای دسته برای پیگیری راحتتر خطاها.
مثلا متن خطا یا اخطار رو جلو همون خطی که باعش شده نشون میده
حدود ۵ میلیون دانلود داشته و ۵ ساله که فعاله. (چرا این اعداد مهمه؟ چرا باید به توسعهدهنده اصلی افزونه دقت کنیم؟ چون توسعه و پخش افزونه، ولو کاربردی و جالب، یکی از تلهها رخنههای امنیتی است)
📌 دریافت و نصب Error Lens
🖥 ریپازیتوری گیتهاب
Visualstudio
Error Lens - Visual Studio Marketplace
Extension for Visual Studio Code - Improve highlighting of errors, warnings and other language diagnostics.
👍4
📚 معرفی کتاب: T-SQL Fundamentals
این کتاب که الان ویراست چهارمش در دسترسه، یکی از بهترین کتابها برای درک عمیق SQL است. درسته که مایکروسافت منتشر کرده و از نظر محصولی متمرکز بر SQL Server است، ولی یادمون نره که پایه و اساس RDBMSها تفریبا یکیه، مثل خودروهای بنزینی که فارغ از سازنده و مدل، توی هر دورهای خصوصیات ساختاری مشابهی دارن و در کارایی و امکاناته که با هم متفاوت میشن.
مثلا درک صحیح از Set Theory یا Predication Logic یا درک دقیق از ساختار انواع ایندکسها یا منطق پردازش دستورات SQL توی MySQL و Oracle و SQL Server و PostgreSQL مشابه هم هستن.
اگر دولوپر یا دیتا آنالیست هستید، خوندنش رو توصیه میکنم، اگر هم از انجین دیگهای استفاده میکنید و دنبال منبع خوب برای مفاهیم پایه هستید باز هم منبع خوبیه. (منظورم از مفاهیم پایه، مقدمات select نویسی نیست، اینه که query optimizer چجوری دستورات و تحلیل میکنه و چی باعث میشه کوئری خوب یا بد بشه!)
ادامه در کامنت...
اگر شما هم پیشنهاد و نظری داری بنویسید
این کتاب که الان ویراست چهارمش در دسترسه، یکی از بهترین کتابها برای درک عمیق SQL است. درسته که مایکروسافت منتشر کرده و از نظر محصولی متمرکز بر SQL Server است، ولی یادمون نره که پایه و اساس RDBMSها تفریبا یکیه، مثل خودروهای بنزینی که فارغ از سازنده و مدل، توی هر دورهای خصوصیات ساختاری مشابهی دارن و در کارایی و امکاناته که با هم متفاوت میشن.
مثلا درک صحیح از Set Theory یا Predication Logic یا درک دقیق از ساختار انواع ایندکسها یا منطق پردازش دستورات SQL توی MySQL و Oracle و SQL Server و PostgreSQL مشابه هم هستن.
اگر دولوپر یا دیتا آنالیست هستید، خوندنش رو توصیه میکنم، اگر هم از انجین دیگهای استفاده میکنید و دنبال منبع خوب برای مفاهیم پایه هستید باز هم منبع خوبیه. (منظورم از مفاهیم پایه، مقدمات select نویسی نیست، اینه که query optimizer چجوری دستورات و تحلیل میکنه و چی باعث میشه کوئری خوب یا بد بشه!)
ادامه در کامنت...
اگر شما هم پیشنهاد و نظری داری بنویسید
👍9🔥1
tech-afternoon
Amin Mesbahi – E1-Overview on platform engineering
سلام به همگی :)
چند روز پیش اولین مطلب شنیداری رو منتشر کردم، با ارائه نظرتون، به بهبود مطالب بعدی کمک بزرگی میکنید (نظرسنجی بینام است)
متشکرم
چند روز پیش اولین مطلب شنیداری رو منتشر کردم، با ارائه نظرتون، به بهبود مطالب بعدی کمک بزرگی میکنید (نظرسنجی بینام است)
متشکرم
Anonymous Poll
56%
شنیدم، و خوب بود
0%
شنیدم، خوب بود ولی موضوعش مرتبط با علاقم نبود
6%
شنیدم، موضوعش با علاقم مرتبط بود، ارائه خوب نبود
33%
گذاشتم که بعدن بشنوم
6%
نشنیدم
0%
پست شنیداری رو کلن دوست ندارم
👏6
🎙سلام سلام
لطفا در انتخاب موضوع پست شنیداری بعدی کمک کنید ;)
لطفا در انتخاب موضوع پست شنیداری بعدی کمک کنید ;)
Anonymous Poll
12%
رویکرد Shift-left Testing و تفکر آزمونمحور
15%
توسعه امن نرمافزار: مرور Secure by Design
68%
داستان ۲۱ سال تلاش برای به روز موندن زیر رگبار تغییرات (تجربه شخصی)
6%
نکاتی در مورد تشکیل و هدایت تیم پویا
🟩 اندر احوالات Green Threads در نرمافزار
تردها و انواعشون
تردها (Threads) واحدهای اجرای کد هستن که میتونن بهصورت همزمان یا بهتوالی روی پردازنده اجرا بشن. این کار باعث میشه برنامهها بتونن چندین کار رو بهطور موازی انجام بدن. حالا تردها دو نوع کلی دارن:
⚙️ تردهای سیستمعاملی (Kernel Threads):
این تردها توسط سیستمعامل مدیریت میشن و هر ترد یک بخش از CPU و منابع سیستم رو به خودش اختصاص میده. این تردها میتونن بهطور همزمان روی چندین هسته پردازنده اجرا بشن و از چند هسته CPU استفاده کنن، به همین خاطر توی پردازشهای سنگین و چند هستهای خیلی کاربردی میشن.
🌱 گرین تردها (Green Threads):
این نوع تردها در سطح برنامه و توسط خود برنامه یا یک کتابخونه مدیریت میشن و به سیستمعامل متکی نیستن. در واقع، این تردها همگی داخل یک ترد سیستمعاملی اجرا میشن، و به همین خاطر وزن کمتری دارن و منابع کمتری مصرف میکنن. اما چون به یک ترد سیستمعاملی وابسته هستن، نمیتونن همزمان روی چندین هسته اجرا بشن.
————————-
🫧 گرین تردها توی چه زبانها و تکنولوژیهایی استفاده میشن؟
▫️گو (Go): گرچه دقیقاً به اونها گرین ترد نمیگن، ولی گوروتینها توی Go توسط رانتایم Go مدیریت میشن و خیلی سبک و انعطافپذیرن (یکی از نقطهقوتهای گو که من رو جذب کرد همین پرفرمنس عالی گرینتردینگ در گو بود، عملا همه چیز گرینترد است).
▫️جاوا: نسخههای اولیه جاوا از گرین تردها استفاده میکردن، چون این تردها پرتابل بودن. ولی جاوا بعدها بهخاطر محدودیتهای گرین تردها به سمت تردهای سیستمعاملی رفت.
▫️پایتون: تردهای پیشفرض پایتون وابسته به سیستمعامل هستن، کتابخونههایی مثل Gevent و Greenlet به پایتون اجازه میدن تا رفتار مشابهی با گرین تردها داشته باشه.
▫️روبی: برخی نسخههای روبی، مثل JRuby، از گرین تردها پشتیبانی میکنن.
▫️ارلنگ (Erlang): پردازشهای ارلنگ هم مشابه گرین تردها عمل میکنن و مدیریت اونها داخل محیط اجرایی این زبان انجام میشه.
▫️داتنت (NET.)
توی NET.، گرین تردها بهطور پیشفرض وجود ندارن (در مورد نسخه ۹ توضیح مبسوطی توی کامنت خواهم نوشت) چون این فریمورک بیشتر روی تردهای سیستمعاملی تکیه داره. ولی چند امکان مهم داره که ویژگیهای مشابهی رو فراهم میکنن:
- Async/Await و الگوی Task-Based Asynchronous Pattern (TAP)
- پورتهای کامل I/O: این ویژگی، مخصوصاً روی ویندوز، برای مدیریت بهینه عملیات I/O به کار میره و بدون ایجاد چندین ترد، امکان همزمانی رو فراهم میکنه.
- کتابخانههای شخص ثالث: توی NET. یه سری کتابخونه وجود داره که سعی میکنن قابلیت مشابه Fiber رو ایجاد کنن، ولی خیلی خوب نیستن جدیشون نگیرید 😁
بهطور کلی، .NET از تردهای سبکی مثل گرین تردها پشتیبانی نمیکنه، ولی با ابزارهایی مثل async/await و Thread Pool میتونین به نتایج مشابهی برسین!
————————
💡 استفاده گرین تردها چیه؟
💎 اپلیکیشنهای I/O محور: گرین تردها برای برنامههایی که بار زیادی از عملیات ورودی و خروجی دارن، خیلی مناسبه، مثل برنامههایی که اغلب منتظر دریافت داده از شبکه یا دیسک هستن.
💎 تعداد بالای عملیات همزمان با مصرف کم منابع: زمانی که یه اپلیکیشن باید تعداد زیادی عملیات همزمان رو مدیریت کنه ولی به قدرت پردازش بالا نیاز نداره، گرین تردها خیلی مفیدن چون سبک هستن و منابع کمی میگیرن.
💎 محیطهای تک هستهای: اگه یه برنامه روی سیستم تکهستهای اجرا بشه، گرین تردها میتونن بدون نیاز به سربار تردهای سیستمعاملی، همزمانی موثری رو فراهم کنن.
💬 نظر، تجربه، بحث، خوشحال میشم توی کامنت بنویسید...
تردها و انواعشون
تردها (Threads) واحدهای اجرای کد هستن که میتونن بهصورت همزمان یا بهتوالی روی پردازنده اجرا بشن. این کار باعث میشه برنامهها بتونن چندین کار رو بهطور موازی انجام بدن. حالا تردها دو نوع کلی دارن:
⚙️ تردهای سیستمعاملی (Kernel Threads):
این تردها توسط سیستمعامل مدیریت میشن و هر ترد یک بخش از CPU و منابع سیستم رو به خودش اختصاص میده. این تردها میتونن بهطور همزمان روی چندین هسته پردازنده اجرا بشن و از چند هسته CPU استفاده کنن، به همین خاطر توی پردازشهای سنگین و چند هستهای خیلی کاربردی میشن.
🌱 گرین تردها (Green Threads):
این نوع تردها در سطح برنامه و توسط خود برنامه یا یک کتابخونه مدیریت میشن و به سیستمعامل متکی نیستن. در واقع، این تردها همگی داخل یک ترد سیستمعاملی اجرا میشن، و به همین خاطر وزن کمتری دارن و منابع کمتری مصرف میکنن. اما چون به یک ترد سیستمعاملی وابسته هستن، نمیتونن همزمان روی چندین هسته اجرا بشن.
————————-
🫧 گرین تردها توی چه زبانها و تکنولوژیهایی استفاده میشن؟
▫️گو (Go): گرچه دقیقاً به اونها گرین ترد نمیگن، ولی گوروتینها توی Go توسط رانتایم Go مدیریت میشن و خیلی سبک و انعطافپذیرن (یکی از نقطهقوتهای گو که من رو جذب کرد همین پرفرمنس عالی گرینتردینگ در گو بود، عملا همه چیز گرینترد است).
▫️جاوا: نسخههای اولیه جاوا از گرین تردها استفاده میکردن، چون این تردها پرتابل بودن. ولی جاوا بعدها بهخاطر محدودیتهای گرین تردها به سمت تردهای سیستمعاملی رفت.
▫️پایتون: تردهای پیشفرض پایتون وابسته به سیستمعامل هستن، کتابخونههایی مثل Gevent و Greenlet به پایتون اجازه میدن تا رفتار مشابهی با گرین تردها داشته باشه.
▫️روبی: برخی نسخههای روبی، مثل JRuby، از گرین تردها پشتیبانی میکنن.
▫️ارلنگ (Erlang): پردازشهای ارلنگ هم مشابه گرین تردها عمل میکنن و مدیریت اونها داخل محیط اجرایی این زبان انجام میشه.
▫️داتنت (NET.)
توی NET.، گرین تردها بهطور پیشفرض وجود ندارن (در مورد نسخه ۹ توضیح مبسوطی توی کامنت خواهم نوشت) چون این فریمورک بیشتر روی تردهای سیستمعاملی تکیه داره. ولی چند امکان مهم داره که ویژگیهای مشابهی رو فراهم میکنن:
- Async/Await و الگوی Task-Based Asynchronous Pattern (TAP)
- پورتهای کامل I/O: این ویژگی، مخصوصاً روی ویندوز، برای مدیریت بهینه عملیات I/O به کار میره و بدون ایجاد چندین ترد، امکان همزمانی رو فراهم میکنه.
- کتابخانههای شخص ثالث: توی NET. یه سری کتابخونه وجود داره که سعی میکنن قابلیت مشابه Fiber رو ایجاد کنن، ولی خیلی خوب نیستن جدیشون نگیرید 😁
بهطور کلی، .NET از تردهای سبکی مثل گرین تردها پشتیبانی نمیکنه، ولی با ابزارهایی مثل async/await و Thread Pool میتونین به نتایج مشابهی برسین!
————————
💡 استفاده گرین تردها چیه؟
💎 اپلیکیشنهای I/O محور: گرین تردها برای برنامههایی که بار زیادی از عملیات ورودی و خروجی دارن، خیلی مناسبه، مثل برنامههایی که اغلب منتظر دریافت داده از شبکه یا دیسک هستن.
💎 تعداد بالای عملیات همزمان با مصرف کم منابع: زمانی که یه اپلیکیشن باید تعداد زیادی عملیات همزمان رو مدیریت کنه ولی به قدرت پردازش بالا نیاز نداره، گرین تردها خیلی مفیدن چون سبک هستن و منابع کمی میگیرن.
💎 محیطهای تک هستهای: اگه یه برنامه روی سیستم تکهستهای اجرا بشه، گرین تردها میتونن بدون نیاز به سربار تردهای سیستمعاملی، همزمانی موثری رو فراهم کنن.
💬 نظر، تجربه، بحث، خوشحال میشم توی کامنت بنویسید...
👍6🔥3
🐍 چرا پایتون ۳.۱۳ سریعتر و کاراتر شده؟
نسخه جدید Python 3.13، بهبودهای مهمی در زمینه پرفرمنس و قابلیت استفاده از چندین هسته پردازشی همراه شده که مسیر تازهای برای برنامهنویسی باز میکنه. دو ویژگی مهم یعنی حالت Free-threaded و کامپایلر JIT رو مرور کنیم؟ همچنین امکان جدید REPL.
GIL و Free-threaded
از قدیم GIL (Global Interpreter Lock) توی پایتون یکی از چالشهای اصلی بوده. این قفل باعث میشه که هر بار فقط یک ترد بتونه کدهای Python رو اجرا کنه. این مسئله زمانی که پردازشهای سنگین CPU داری یا میخوای از پردازندههای چند هستهای استفاده کنی، به یه مشکل تبدیل میشه. با ارائه حالت Free-threaded به صورت آزمایشی، Python 3.13 این امکان رو میده که پردازشهای موازی رو بهتر مدیریت کنن و از تمام هستههای CPU بهره ببرن. البته هنوز این حالت کاملاً بهینه نیست و روی کارایی پردازشهای تک ترد اثر منفی داره. اما این یه قدم بزرگ برای Python محسوب میشه، چون میتونه در آینده به حذف کامل GIL منجر بشه.
کامپایلر JIT و بهینهسازی با «کپی و پچ»
کامپایلرهای JIT (Just-In-Time) به کدها اجازه میدن تا مستقیماً به کد ماشین تبدیل بشن و سریعتر اجرا بشن. تا پیش از این نسخه، بیشتر کامپایلرهای JIT در Python به شکل افزونه و ابزارهای خارجی مثل PyPy در دسترس بودن. اما حالا Python 3.13 با یک کامپایلر JIT جدید به نام «کپی و پچ» ارائه شده که با استفاده از الگوریتم کپی و پر کردن بخشهای مورد نیاز، مستقیماً کد ماشین رو تولید میکنه و از تبدیلهای میانی صرف نظر میکنه. این الگوریتم باعث میشه Python به طور پیشفرض سریعتر عمل کنه و بیشتر از یک پردازنده معمولی استفاده کنه. در نتیجه، این کامپایلر Python رو به فضای زبانهایی مثل C و ++C نزدیکتر میکنه.
امکانات جدید در REPL
محیط REPL (Read-Eval-Print Loop) در Python 3.13 بهروزرسانیهای جالبی داشته. حالا قابلیت ویرایش چند خطی داره و دستورات متداول مثل exit و quit بهش اضافه شدن. همچنین، رنگبندی پیشفرض و امکان مرور دستورات تاریخچه (F2) و حالت چسباندن (F3) تجربه کار با Python رو سادهتر و جذابتر کرده. این تغییرات به Python کمک میکنه که برای مبتدیها و حرفهایها به یه محیط کار راحتتر و مفیدتر تبدیل بشه. (اگر با REPL آشنایی ندارید توی کامنت خواهم نوشت 😊 )
سایر بهبودها
Python 3.13 بهروزرسانیهای مهم دیگهای هم داشته، مثل Garbage Collector بهینه که تأخیرهای ناشی از پاکسازی حافظه رو کاهش میده و پشتیبانی بهتر از دستگاههای موبایل.
در مورد توسعهدهندگان و شرکتهایی که روی Python کار میکنن، فانروسوم، خالق اصلی Python، پس از چند سال استراحت دوباره به تیم توسعه پایتون در مایکروسافت پیوست و همچنان به شکل فعالی در بهبود Python مشارکت داره. مایکروسافت هم با پشتیبانی از پروژههایی مثل Pyjion که کامپایلر JIT مختص به Python هست، نقش مهمی در این بهبودها داره.
این نسخه از Python تمرکز زیادی روی بهبود عملکرد و استفاده بهینه از منابع داره و با توجه به این تغییرات، Python میتونه برای کاربردهایی مثل هوش مصنوعی، علم داده و توسعه نرمافزارهای بزرگ، انتخاب مناسبتری باشه. به نظر میرسه که این نسخه، شروعی باشه برای یه نسل جدید از Python که به نیازهای مدرن برنامهنویسان پاسخ بهتری میده.
اگر براتون جالب بود بگید تا از مزایای دونستن پایتون به عنوان دولوپر غیر پایتونی، به عنوان دیتابیس ادمین، به عنوان دواپسکار و... بنویسم 😊
نسخه جدید Python 3.13، بهبودهای مهمی در زمینه پرفرمنس و قابلیت استفاده از چندین هسته پردازشی همراه شده که مسیر تازهای برای برنامهنویسی باز میکنه. دو ویژگی مهم یعنی حالت Free-threaded و کامپایلر JIT رو مرور کنیم؟ همچنین امکان جدید REPL.
GIL و Free-threaded
از قدیم GIL (Global Interpreter Lock) توی پایتون یکی از چالشهای اصلی بوده. این قفل باعث میشه که هر بار فقط یک ترد بتونه کدهای Python رو اجرا کنه. این مسئله زمانی که پردازشهای سنگین CPU داری یا میخوای از پردازندههای چند هستهای استفاده کنی، به یه مشکل تبدیل میشه. با ارائه حالت Free-threaded به صورت آزمایشی، Python 3.13 این امکان رو میده که پردازشهای موازی رو بهتر مدیریت کنن و از تمام هستههای CPU بهره ببرن. البته هنوز این حالت کاملاً بهینه نیست و روی کارایی پردازشهای تک ترد اثر منفی داره. اما این یه قدم بزرگ برای Python محسوب میشه، چون میتونه در آینده به حذف کامل GIL منجر بشه.
کامپایلر JIT و بهینهسازی با «کپی و پچ»
کامپایلرهای JIT (Just-In-Time) به کدها اجازه میدن تا مستقیماً به کد ماشین تبدیل بشن و سریعتر اجرا بشن. تا پیش از این نسخه، بیشتر کامپایلرهای JIT در Python به شکل افزونه و ابزارهای خارجی مثل PyPy در دسترس بودن. اما حالا Python 3.13 با یک کامپایلر JIT جدید به نام «کپی و پچ» ارائه شده که با استفاده از الگوریتم کپی و پر کردن بخشهای مورد نیاز، مستقیماً کد ماشین رو تولید میکنه و از تبدیلهای میانی صرف نظر میکنه. این الگوریتم باعث میشه Python به طور پیشفرض سریعتر عمل کنه و بیشتر از یک پردازنده معمولی استفاده کنه. در نتیجه، این کامپایلر Python رو به فضای زبانهایی مثل C و ++C نزدیکتر میکنه.
امکانات جدید در REPL
محیط REPL (Read-Eval-Print Loop) در Python 3.13 بهروزرسانیهای جالبی داشته. حالا قابلیت ویرایش چند خطی داره و دستورات متداول مثل exit و quit بهش اضافه شدن. همچنین، رنگبندی پیشفرض و امکان مرور دستورات تاریخچه (F2) و حالت چسباندن (F3) تجربه کار با Python رو سادهتر و جذابتر کرده. این تغییرات به Python کمک میکنه که برای مبتدیها و حرفهایها به یه محیط کار راحتتر و مفیدتر تبدیل بشه. (اگر با REPL آشنایی ندارید توی کامنت خواهم نوشت 😊 )
سایر بهبودها
Python 3.13 بهروزرسانیهای مهم دیگهای هم داشته، مثل Garbage Collector بهینه که تأخیرهای ناشی از پاکسازی حافظه رو کاهش میده و پشتیبانی بهتر از دستگاههای موبایل.
در مورد توسعهدهندگان و شرکتهایی که روی Python کار میکنن، فانروسوم، خالق اصلی Python، پس از چند سال استراحت دوباره به تیم توسعه پایتون در مایکروسافت پیوست و همچنان به شکل فعالی در بهبود Python مشارکت داره. مایکروسافت هم با پشتیبانی از پروژههایی مثل Pyjion که کامپایلر JIT مختص به Python هست، نقش مهمی در این بهبودها داره.
این نسخه از Python تمرکز زیادی روی بهبود عملکرد و استفاده بهینه از منابع داره و با توجه به این تغییرات، Python میتونه برای کاربردهایی مثل هوش مصنوعی، علم داده و توسعه نرمافزارهای بزرگ، انتخاب مناسبتری باشه. به نظر میرسه که این نسخه، شروعی باشه برای یه نسل جدید از Python که به نیازهای مدرن برنامهنویسان پاسخ بهتری میده.
اگر براتون جالب بود بگید تا از مزایای دونستن پایتون به عنوان دولوپر غیر پایتونی، به عنوان دیتابیس ادمین، به عنوان دواپسکار و... بنویسم 😊
👍3🔥3