یکم میخوام راجب Transfer learning صحبت منم.
احتمالا برای همتون جالب باشه
احتمالا برای همتون جالب باشه
👍7
Ninja Learn | نینجا لرن
Megara Template.zip
قبلا دوست خوبم جواد یه تمپلیت عالی زده بود که منتشرش کردیم.
گفتم اگه کسی ندیده و دنبال یه فرانت آماده برای پنلشه، این میتونه گزینهی خیلی خوبی باشه 😁
اینم لینک پریویو قالب
https://megara.netlify.app
➖➖➖➖➖➖➖➖➖➖
گفتم اگه کسی ندیده و دنبال یه فرانت آماده برای پنلشه، این میتونه گزینهی خیلی خوبی باشه 😁
اینم لینک پریویو قالب
https://megara.netlify.app
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤5
اگه بخواید آلمانی یاد بگیرید، این منبع یکی از گزینههای خوبه و میتونه کمکتون کنه تا به سطح B1 برسید.
https://t.iss.one/lezatedeutsch
➖➖➖➖➖➖➖➖➖➖
https://t.iss.one/lezatedeutsch
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
Telegram
آموزش زبان آلمانی با کتاب منشن
لذت دویچ با قاسمی
آموزش خط به خط کتاب منشن از سطح A1 تا B1
راه های ارتباطی :
Telegram : @lezatedeutsch7599
Instagram : lezate.deutsch
Youtube : lezatedeutsch
Whatsapp / Telefon : 09393567599
آموزش خط به خط کتاب منشن از سطح A1 تا B1
راه های ارتباطی :
Telegram : @lezatedeutsch7599
Instagram : lezate.deutsch
Youtube : lezatedeutsch
Whatsapp / Telefon : 09393567599
❤6
چرا Async تو کار با دیتابیس همیشه کار امد نیست؟ 🧵
یه باور رایج بین برنامهنویس ها اینه که استفاده از Async (برنامهنویسی ناهمزمان) تو همهچیز معجزه میکنه، مخصوصاً وقتی با دیتابیس کار میکنین. اما میدونستید که Async زدن کد برای کار با دیتابیس همیشه اون تأثیر که فکر میکنید رو نداره؟ تو این پست قراره ببینیم چرا.
🧠 چرا Async تو دیتابیس تأثیر کمی داره؟
وقتی با دیتابیس کار میکنین (مثل PostgreSQL، MySQL یا MongoDB)، عملیاتها مثل خوندن (SELECT)، نوشتن (INSERT) یا آپدیت کردن معمولاً CPU-bound هستن، نه I/O-bound. حالا این یعنی چی؟
CPU-bound:
یعنی گلوگاه اصلی تو عملیات، پردازش CPUئه. مثلاً وقتی یه کوئری SQL اجرا میکنی، دیتابیس باید کارایی مثل پارس کردن کوئری، بهینهسازی پلن، پردازش دادهها و مرتبسازی رو انجام بده. اینا همشون به CPU وابستهان.
I/O-bound:
یعنی گلوگاه اصلی منتظر موندن برای ورودی/خروجی (مثل خوندن از دیسک یا شبکه). Async تو این سناریوها خوب عمل میکنه چون میتونه CPU رو آزاد کنه تا وقتی منتظر I/O هستیم، کارهای دیگه انجام بده.
دیتابیسها معمولاً تو محیطهای خودشون بهینه شدن که عملیات CPU-bound رو سریع انجام بدن (مثل استفاده از ایندکسها یا کش). برای همین، وقتی از یه کلاینت (مثل یه برنامه پایتون) به دیتابیس وصل میشین، بیشتر زمان صرف پردازش کوئری تو خود دیتابیسه، نه منتظر شبکه یا دیسک. حالا Async (مثل
مثال ساده:
فرض کنین یه کوئری سنگین مثل این تو PostgreSQL دارین:
این کوئری CPU دیتابیس رو حسابی درگیر میکنه (برای فیلتر کردن و مرتبسازی). حالا اگه تو پایتون اینو با یه کلاینت sync (مثل
📚 چرا Async همیشه مفید نیست؟
وقتی از یه کلاینت Async استفاده میکنین (مثل
1⃣ گلوگاه تو دیتابیسه:
همونطور که گفتم، بیشتر عملیات دیتابیس CPU-bound هستن. Async فقط میتونه I/O شبکه رو مدیریت کنه (مثل زمان ارسال کوئری یا گرفتن نتیجه)، ولی این بخش معمولاً کسری از کل زمانه.
2⃣ Overhead خود Async: استفاده از
3⃣ مدیریت اتصالات:
دیتابیسها معمولاً تعداد اتصالات همزمان (connection pool) رو محدود میکنن. حتی با Async، اگه تعداد کوئریها زیاد باشه، ممکنه منتظر اتصال بمونین.
🔍 کی Async به کار میاد؟
هرچند Async تو اکثر عملیات دیتابیس تأثیر زیادی نداره، تو یه سری سناریوها میتونه خوب عمل کنه:
1⃣ دیتابیسهای توزیعشده:
تو دیتابیسهای NoSQL مثل MongoDB یا Cassandra که عملیات شبکهای (مثل اتصال به نودهای مختلف) زمانبره، Async میتونه کمک کنه کلاینت همزمان چند درخواست رو مدیریت کنه.
2⃣ عملیات I/O-heavy:
اگه دیتابیستون روی یه سرور دور باشه یا شبکه کند باشه، Async میتونه زمان انتظار برای اتصال و انتقال داده رو بهتر مدیریت کنه.
3⃣ چندین درخواست همزمان:
اگه برنامهتون نیاز داره چند کوئری رو بهصورت موازی اجرا کنه (مثل یه API که باید از چند جدول داده جمع کنه)، Async میتونه این درخواستها رو همزمان مدیریت کنه.
4⃣ دیتابیسهای خاص:
بعضی دیتابیسها مثل CockroachDB یا Redis که برای عملیات سریع و توزیعشده طراحی شدن، با کلاینتهای Async بهتر کار میکنن.
✍ جمعبندی
اینکه بگیم Async تو کار با دیتابیس معجزه میکنه یه کم زیادهرویه چون بیشتر عملیات دیتابیس CPU-bound هستن، استفاده از کلاینتهای Async مثل asyncpg یا motor معمولاً تأثیر چشمگیری روی پرفورمنس نداره. اما تو سناریوهای خاص مثل دیتابیسهای توزیعشده، عملیات شبکهمحور یا درخواستهای موازی، Async میتونه مفید باشه. پس قبل از اینکه همهچیز رو Async کنین، نوع عملیاتتون رو بررسی کنین و ببینین کجا واقعاً به کارتون میاد.
➖➖➖➖➖➖➖➖➖➖
یه باور رایج بین برنامهنویس ها اینه که استفاده از Async (برنامهنویسی ناهمزمان) تو همهچیز معجزه میکنه، مخصوصاً وقتی با دیتابیس کار میکنین. اما میدونستید که Async زدن کد برای کار با دیتابیس همیشه اون تأثیر که فکر میکنید رو نداره؟ تو این پست قراره ببینیم چرا.
🧠 چرا Async تو دیتابیس تأثیر کمی داره؟
وقتی با دیتابیس کار میکنین (مثل PostgreSQL، MySQL یا MongoDB)، عملیاتها مثل خوندن (SELECT)، نوشتن (INSERT) یا آپدیت کردن معمولاً CPU-bound هستن، نه I/O-bound. حالا این یعنی چی؟
CPU-bound:
یعنی گلوگاه اصلی تو عملیات، پردازش CPUئه. مثلاً وقتی یه کوئری SQL اجرا میکنی، دیتابیس باید کارایی مثل پارس کردن کوئری، بهینهسازی پلن، پردازش دادهها و مرتبسازی رو انجام بده. اینا همشون به CPU وابستهان.
I/O-bound:
یعنی گلوگاه اصلی منتظر موندن برای ورودی/خروجی (مثل خوندن از دیسک یا شبکه). Async تو این سناریوها خوب عمل میکنه چون میتونه CPU رو آزاد کنه تا وقتی منتظر I/O هستیم، کارهای دیگه انجام بده.
دیتابیسها معمولاً تو محیطهای خودشون بهینه شدن که عملیات CPU-bound رو سریع انجام بدن (مثل استفاده از ایندکسها یا کش). برای همین، وقتی از یه کلاینت (مثل یه برنامه پایتون) به دیتابیس وصل میشین، بیشتر زمان صرف پردازش کوئری تو خود دیتابیسه، نه منتظر شبکه یا دیسک. حالا Async (مثل
async/await
تو پایتون) اینجا کمک زیادی نمیکنه، چون CPU داره کار اصلی رو انجام میده و چیزی برای "منتظر موندن" وجود نداره.مثال ساده:
فرض کنین یه کوئری سنگین مثل این تو PostgreSQL دارین:
SELECT * FROM orders WHERE total > 1000 ORDER BY created_at;
این کوئری CPU دیتابیس رو حسابی درگیر میکنه (برای فیلتر کردن و مرتبسازی). حالا اگه تو پایتون اینو با یه کلاینت sync (مثل
psycopg2
) یا async (مثل asyncpg
) اجرا کنین، تفاوت سرعت خیلی کمه، چون گلوگاه اصلی تو خود دیتابیسه، نه تو کلاینت.📚 چرا Async همیشه مفید نیست؟
وقتی از یه کلاینت Async استفاده میکنین (مثل
asyncpg
یا motor
برای MongoDB)، انتظار دارین عملیات دیتابیس سریعتر بشه چون میتونه همزمان کارهای دیگه رو انجام بده. اما چندتا دلیل باعث میشه این تأثیر کم باشه:1⃣ گلوگاه تو دیتابیسه:
همونطور که گفتم، بیشتر عملیات دیتابیس CPU-bound هستن. Async فقط میتونه I/O شبکه رو مدیریت کنه (مثل زمان ارسال کوئری یا گرفتن نتیجه)، ولی این بخش معمولاً کسری از کل زمانه.
2⃣ Overhead خود Async: استفاده از
async/await
یه مقدار سربار (overhead) به کد اضافه میکنه. اگه عملیات دیتابیستون سریع باشه (مثلاً چند میلیثانیه)، این سربار ممکنه حتی باعث شه Async کندتر بشه.3⃣ مدیریت اتصالات:
دیتابیسها معمولاً تعداد اتصالات همزمان (connection pool) رو محدود میکنن. حتی با Async، اگه تعداد کوئریها زیاد باشه، ممکنه منتظر اتصال بمونین.
🔍 کی Async به کار میاد؟
هرچند Async تو اکثر عملیات دیتابیس تأثیر زیادی نداره، تو یه سری سناریوها میتونه خوب عمل کنه:
1⃣ دیتابیسهای توزیعشده:
تو دیتابیسهای NoSQL مثل MongoDB یا Cassandra که عملیات شبکهای (مثل اتصال به نودهای مختلف) زمانبره، Async میتونه کمک کنه کلاینت همزمان چند درخواست رو مدیریت کنه.
2⃣ عملیات I/O-heavy:
اگه دیتابیستون روی یه سرور دور باشه یا شبکه کند باشه، Async میتونه زمان انتظار برای اتصال و انتقال داده رو بهتر مدیریت کنه.
3⃣ چندین درخواست همزمان:
اگه برنامهتون نیاز داره چند کوئری رو بهصورت موازی اجرا کنه (مثل یه API که باید از چند جدول داده جمع کنه)، Async میتونه این درخواستها رو همزمان مدیریت کنه.
4⃣ دیتابیسهای خاص:
بعضی دیتابیسها مثل CockroachDB یا Redis که برای عملیات سریع و توزیعشده طراحی شدن، با کلاینتهای Async بهتر کار میکنن.
✍ جمعبندی
اینکه بگیم Async تو کار با دیتابیس معجزه میکنه یه کم زیادهرویه چون بیشتر عملیات دیتابیس CPU-bound هستن، استفاده از کلاینتهای Async مثل asyncpg یا motor معمولاً تأثیر چشمگیری روی پرفورمنس نداره. اما تو سناریوهای خاص مثل دیتابیسهای توزیعشده، عملیات شبکهمحور یا درخواستهای موازی، Async میتونه مفید باشه. پس قبل از اینکه همهچیز رو Async کنین، نوع عملیاتتون رو بررسی کنین و ببینین کجا واقعاً به کارتون میاد.
#️⃣ #web #programming #db
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
🔥10❤3👍2👎1
امروز به این نتیجه رسیدم اگه Ai رو محدود نکنی هر کاری میکنه تکرار میکنم
هرکاری ...
هرکاری ...
👍14
یه خبر فوقالعاده برای کسایی که دنبال دورههای باکیفیت هستن ولی شرایط مالیشون مناسب نیست
مکتبخونه بعضی از دورههای ارزشمندش رو رایگان کرده؛
از جمله دورههای اساتید معروف مثل آقای بیگدلی، جادی، و سهیل تهرانیپور.
📌 جزئیات کامل رو میتونید از پست لینکدین ببینید
توجه داشته باشید این یک تبلیغ نیست
#موقت
مکتبخونه بعضی از دورههای ارزشمندش رو رایگان کرده؛
از جمله دورههای اساتید معروف مثل آقای بیگدلی، جادی، و سهیل تهرانیپور.
📌 جزئیات کامل رو میتونید از پست لینکدین ببینید
توجه داشته باشید این یک تبلیغ نیست
#موقت
Linkedin
#مکتبخونه | Soheil Tehranipour | 241 comments
گاهی اوضاع زندگی، فشار مالی یا دوری از منابع آموزشی باعث میشه یادگیری از اولویتها عقب بیفته. ما تو مکتبخونه خوب میدونیم این روزها برای خیلیها، شروع یاد گرفتن یه مهارت جدید شاید آسون نباشه.
ما همیشه باورمون این بوده که هیچکس نباید بهخاطر محدودیتهای…
ما همیشه باورمون این بوده که هیچکس نباید بهخاطر محدودیتهای…
👍6🔥3
این داستان Query Planning 😯
احتمالا با دیتابیس هایی مثل PostgreSQL یا MySQL کوئری زدین، اگه دقت کرده باشید این کوری ها چه ساده باشن چه پیچیده سریع اجرا میشن، دلیلشم تو یه فرایند جالب به اسم Query Planning هست.
تو این پست قراره ببینیم چیه، چطور کار میکنه.
🧠 Query Planning چیه؟
Query Planning (یا برنامهریزی کوئری) فرایندی تو دیتابیسهای رابطهایه که توش دیتابیس تصمیم میگیره بهترین راه برای اجرای یه کوئری SQL چیه. وقتی یه کوئری مثل
مینویسین، دیتابیس نمیره مستقیم اجرا کنه؛ اول یه نقشه میکشه که چطور دادهها رو پیدا کنه، فیلتر کنه و برگردونه. این نقشه که بهش Query Plan یا Execution Plan میگن، مثل یه GPSه که به دیتابیس میگه از کدوم مسیر بره تا سریعتر به مقصد برسه.
هدف اصلیش بهینهسازی پرفورمنس با کم کردن زمان اجرا، مصرف CPU، حافظه و I/O (خوندن/نوشتن دیسک). دیتابیس این کار رو با تحلیل ساختار کوئری، آمار جدولها و ایندکسها انجام میده.
📚 Query Planning چطور کار میکنه؟
دیتابیسها (مثل PostgreSQL، MySQL، SQL Server) یه بخش به اسم Query Optimizer دارن که مسئول ساختن پلن بهینهست. بیاین قدمبهقدم ببینیم چی به چیه:
1⃣ پارس کردن کوئری (Parsing)
دیتابیس اول کوئری رو بررسی میکنه تا مطمئن شه درست نوشته شده (از نظر گرامری و معنایی). مثلاً چک میکنه جدول
خروجی این مرحله یه درخت نحوی (parse tree)ه که ساختار کوئری رو نشون میده.
2⃣ بازنویسی کوئری (Rewriting)
تو این مرحله، دیتابیس کوئری رو سادهتر یا بهینهتر میکنه، بدون اینکه نتیجهش تغییر کنه. مثلاً:
تبدیل ساب کوری ها به جوینها.
حذف شرطهای اضافی (مثل
تو PostgreSQL، این کار توسط Query Rewriter انجام میشه.
3⃣ تولید پلنهای ممکن (Plan Generation)
حالا Query Optimizer کلی پلن ممکن برای اجرای کوئری میسازه. مثلاً برای یه کوئری ساده:
ممکنه این گزینهها بررسی شه:
Sequential Scan:
کل جدول رو خطبهخط بخونه.
Index Scan:
از ایندکس روی ستون
Bitmap Scan:
ترکیبی از ایندکس و اسکن.
برای کوئریهای پیچیده (با جوین، گروهبندی و غیره)، تعداد پلنها میتونه به هزارتا برسه
4️⃣ تخمین هزینه (Cost Estimation)
دیتابیس برای هر پلن یه هزینه (cost) تخمین میزنه. این هزینه یه عدد خیالیه که شامل:
مصرف CPU (برای مقایسهها، مرتبسازی و غیره).
I/O (خوندن از دیسک یا کش).
شبکه (اگه دیتابیس توزیعشده باشه).
دیتابیس از آمار جدولها (مثل تعداد ردیفها، توزیع دادهها) و ساختار ایندکسها برای این تخمین استفاده میکنه.
مثلاً تو PostgreSQL، دستور
5️⃣ انتخاب بهترین پلن
Optimizer پلنی رو انتخاب میکنه که کمترین هزینه رو داره. این پلن میشه Execution Plan و برای اجرا به Executor فرستاده میشه.
تو بعضی دیتابیسها (مثل Oracle)، میتونین از hints استفاده کنین تا Optimizer رو به یه پلن خاص هدایت کنین.
6️⃣ اجرا و بازخورد
بعد از اجرا، دیتابیس ممکنه بازخورد بگیره (مثلاً آمار واقعی تعداد ردیفها) و پلنهای بعدی رو بهتر کنه.
🛠 چرا Query Planning مهمه؟
Query Planning مثل مغز دیتابیسه و مستقیم روی پرفورمنس تأثیر میذاره:
سرعت: یه پلن خوب میتونه یه کوئری رو از چند دقیقه به چند میلیثانیه برسونه.
مصرف منابع: پلن بد میتونه CPU و دیسک رو بیخودی درگیر کنه و سرور رو خفه کنه.
مقیاسپذیری: تو دیتابیسهای بزرگ با میلیونها ردیف، یه پلن بهینه فرق بین موفقیت و فاجعهست.
تجربه کاربر: اگه APIتون به یه دیتابیس کند وصل باشه، کاربراتون فرار میکنن
🔍 مشکلات رایج تو Query Planning
آمار قدیمی: اگه آمار جدولها بهروز نباشه، Optimizer ممکنه پلن بد انتخاب کنه.
کوئریهای پیچیده: جوینهای چندگانه یا شرطهای مبهم میتونن Optimizer رو گیج کنن.
عدم ایندکس: بدون ایندکس، دیتابیس مجبوره کل جدول رو اسکن کنه.
دیتابیسهای توزیعشده:
تو دیتابیسهایی مثل CockroachDB، شبکه هم به معادله اضافه میشه و پلنها پیچیدهتر میشن.
✍ جمعبندی
Query Planning مثل یه شطرنجباز حرفهایه که تو دیتابیس تصمیم میگیره بهترین حرکت چیه. با تحلیل کوئری، آمار جدولها و ایندکسها، یه پلن بهینه میسازه که میتونه سرعت و کارایی پروژهتون رو زیر و رو کنه.
➖➖➖➖➖➖➖➖➖➖
احتمالا با دیتابیس هایی مثل PostgreSQL یا MySQL کوئری زدین، اگه دقت کرده باشید این کوری ها چه ساده باشن چه پیچیده سریع اجرا میشن، دلیلشم تو یه فرایند جالب به اسم Query Planning هست.
تو این پست قراره ببینیم چیه، چطور کار میکنه.
🧠 Query Planning چیه؟
Query Planning (یا برنامهریزی کوئری) فرایندی تو دیتابیسهای رابطهایه که توش دیتابیس تصمیم میگیره بهترین راه برای اجرای یه کوئری SQL چیه. وقتی یه کوئری مثل
SELECT * FROM users WHERE age > 30
مینویسین، دیتابیس نمیره مستقیم اجرا کنه؛ اول یه نقشه میکشه که چطور دادهها رو پیدا کنه، فیلتر کنه و برگردونه. این نقشه که بهش Query Plan یا Execution Plan میگن، مثل یه GPSه که به دیتابیس میگه از کدوم مسیر بره تا سریعتر به مقصد برسه.
هدف اصلیش بهینهسازی پرفورمنس با کم کردن زمان اجرا، مصرف CPU، حافظه و I/O (خوندن/نوشتن دیسک). دیتابیس این کار رو با تحلیل ساختار کوئری، آمار جدولها و ایندکسها انجام میده.
📚 Query Planning چطور کار میکنه؟
دیتابیسها (مثل PostgreSQL، MySQL، SQL Server) یه بخش به اسم Query Optimizer دارن که مسئول ساختن پلن بهینهست. بیاین قدمبهقدم ببینیم چی به چیه:
1⃣ پارس کردن کوئری (Parsing)
دیتابیس اول کوئری رو بررسی میکنه تا مطمئن شه درست نوشته شده (از نظر گرامری و معنایی). مثلاً چک میکنه جدول
users
وجود داره یا نه.خروجی این مرحله یه درخت نحوی (parse tree)ه که ساختار کوئری رو نشون میده.
2⃣ بازنویسی کوئری (Rewriting)
تو این مرحله، دیتابیس کوئری رو سادهتر یا بهینهتر میکنه، بدون اینکه نتیجهش تغییر کنه. مثلاً:
تبدیل ساب کوری ها به جوینها.
حذف شرطهای اضافی (مثل
WHERE TRUE
).تو PostgreSQL، این کار توسط Query Rewriter انجام میشه.
3⃣ تولید پلنهای ممکن (Plan Generation)
حالا Query Optimizer کلی پلن ممکن برای اجرای کوئری میسازه. مثلاً برای یه کوئری ساده:
SELECT * FROM users WHERE age > 30;
ممکنه این گزینهها بررسی شه:
Sequential Scan:
کل جدول رو خطبهخط بخونه.
Index Scan:
از ایندکس روی ستون
age
استفاده کنه.Bitmap Scan:
ترکیبی از ایندکس و اسکن.
برای کوئریهای پیچیده (با جوین، گروهبندی و غیره)، تعداد پلنها میتونه به هزارتا برسه
4️⃣ تخمین هزینه (Cost Estimation)
دیتابیس برای هر پلن یه هزینه (cost) تخمین میزنه. این هزینه یه عدد خیالیه که شامل:
مصرف CPU (برای مقایسهها، مرتبسازی و غیره).
I/O (خوندن از دیسک یا کش).
شبکه (اگه دیتابیس توزیعشده باشه).
دیتابیس از آمار جدولها (مثل تعداد ردیفها، توزیع دادهها) و ساختار ایندکسها برای این تخمین استفاده میکنه.
مثلاً تو PostgreSQL، دستور
ANALYZE
این آمار رو بهروز میکنه.5️⃣ انتخاب بهترین پلن
Optimizer پلنی رو انتخاب میکنه که کمترین هزینه رو داره. این پلن میشه Execution Plan و برای اجرا به Executor فرستاده میشه.
تو بعضی دیتابیسها (مثل Oracle)، میتونین از hints استفاده کنین تا Optimizer رو به یه پلن خاص هدایت کنین.
6️⃣ اجرا و بازخورد
بعد از اجرا، دیتابیس ممکنه بازخورد بگیره (مثلاً آمار واقعی تعداد ردیفها) و پلنهای بعدی رو بهتر کنه.
🛠 چرا Query Planning مهمه؟
Query Planning مثل مغز دیتابیسه و مستقیم روی پرفورمنس تأثیر میذاره:
سرعت: یه پلن خوب میتونه یه کوئری رو از چند دقیقه به چند میلیثانیه برسونه.
مصرف منابع: پلن بد میتونه CPU و دیسک رو بیخودی درگیر کنه و سرور رو خفه کنه.
مقیاسپذیری: تو دیتابیسهای بزرگ با میلیونها ردیف، یه پلن بهینه فرق بین موفقیت و فاجعهست.
تجربه کاربر: اگه APIتون به یه دیتابیس کند وصل باشه، کاربراتون فرار میکنن
🔍 مشکلات رایج تو Query Planning
آمار قدیمی: اگه آمار جدولها بهروز نباشه، Optimizer ممکنه پلن بد انتخاب کنه.
کوئریهای پیچیده: جوینهای چندگانه یا شرطهای مبهم میتونن Optimizer رو گیج کنن.
عدم ایندکس: بدون ایندکس، دیتابیس مجبوره کل جدول رو اسکن کنه.
دیتابیسهای توزیعشده:
تو دیتابیسهایی مثل CockroachDB، شبکه هم به معادله اضافه میشه و پلنها پیچیدهتر میشن.
✍ جمعبندی
Query Planning مثل یه شطرنجباز حرفهایه که تو دیتابیس تصمیم میگیره بهترین حرکت چیه. با تحلیل کوئری، آمار جدولها و ایندکسها، یه پلن بهینه میسازه که میتونه سرعت و کارایی پروژهتون رو زیر و رو کنه.
#️⃣ #web #programming #db
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤11👍2
این داستان Pypy 🐉
PyPy ابزاری قدرتمند برای برنامهنویسهای پایتونه که به دنبال بهبود پرفورمنس کدهای خودشون هستن. اگه با کندی اجرای کد تو پروژههاتون مواجه شدین یا میخواین بدونین چطور میشه سرعت پایتون رو بدون تغییر زیاد تو کد بالا برد، این پست برای شماست. اینجا قراره بررسی کنیم PyPy چیه، چه قابلیتهایی داره، کجا به کار میاد و چه محدودیتهایی داره.
🧠اول از همه PyPy چیه؟
PyPy یه مفسر (interpreter) جایگزین برای پایتونه که به جای CPython (مفسر استاندارد پایتون که با C نوشته شده) استفاده میشه. PyPy خودش با پایتون (به طور دقیقتر، یه زیرمجموعه به اسم RPython) پیادهسازی شده و از Just-In-Time Compilation (JIT) برای کامپایل کردن کد پایتون به کد ماشین تو زمان اجرا استفاده میکنه. این باعث میشه تو خیلی از سناریوها سرعتش به مراتب از CPython بیشتر باشه.
شروع این پروژه به سال ۲۰۰۲ برمیگرده و حالا یه پروژه متنباز با جامعهای فعاله که مدام در حال بهبودشه. هدف PyPy اینه که کدهای پایتون رو سریعتر، بهینهتر و بدون نیاز به تغییر زیاد تو ساختار کد اجرا کنه.
📚 قابلیتهای مهم PyPy
PyPy چندتا ویژگی اصلی داره که اون رو از CPython متمایز میکنه:
1⃣ سرعت بالا با JIT Compilation
PyPy به جای تفسیر خطبهخط کد (مثل CPython)، بخشهای پرتکرار کد رو به کد ماشین کامپایل میکنه. این یعنی برای حلقهها و عملیات تکراری، سرعتش خیلی بیشتره.
مثال: یه تابع ساده برای محاسبه فیبوناچی:
تو CPython این کد برای
2⃣ سازگاری بالا با پایتون
PyPy سعی میکنه تا حد زیادی با استانداردهای CPython سازگار باشه، یعنی اکثر کدهای پایتون بدون تغییر روی PyPy اجرا میشن.
مثلا اگه یه اسکریپت با Python 3.8 روی CPython کار کنه، به احتمال زیاد روی PyPy هم بدون دردسر اجرا میشه مگر از کتابخانه هایی استفاده کرده باشید که C extension استفاده میکنه.
3⃣ مصرف حافظه بهینه
PyPy یه Garbage Collector پیشرفته داره که میتونه مصرف حافظه رو تو بعضی سناریوها بهینهتر از CPython کنه.
کاربردشم تو برنامههایی که مدت طولانی اجرا میشن (مثل وبسرورها) و نیاز به مدیریت خوب حافظه دارن.
4⃣پشتیبانی از Stackless Python
PyPy از قابلیتهای Stackless Python (مثل micro-threads یا taskletها) پشتیبانی میکنه که برای برنامههای concurrent مناسبن.
🔍 چرا PyPy مناسبه؟
PyPy تو موقعیتهایی که پرفورمنس کد حیاتیه، میتونه بازی رو عوض کنه:
سرعت:
تو بنچمارکهای مختلف، PyPy برای کدهای محاسباتی (مثل حلقهها و الگوریتمهای ریاضی) تا ۷ برابر سریعتر از CPython عمل کرده.
بدون نیاز به بازنویسی کد: برخلاف ابزارهایی مثل Cython که نیاز به تغییر کد دارن، PyPy فقط با تغییر مفسر کار میکنه.
متنباز و فعال:
جامعه PyPy مدام داره باگها رو فیکس میکنه و پشتیبانی از نسخههای جدید پایتون رو اضافه میکنه.
🛠 کجا PyPy به کار میاد؟
1⃣ محاسبات سنگین:
اگه پروژهتون پر از حلقههای پیچیده یا الگوریتمهای محاسباتیه (مثل پردازش داده یا شبیهسازی)، PyPy سرعت رو حسابی بالا میبره.
2⃣ وبسرورها:
برای وباپلیکیشنهایی که با فریمورکهایی مثل Flask یا Django کار میکنن، PyPy میتونه پاسخگویی رو بهتر کنه.
3⃣ اسکریپتهای طولانیمدت: برنامههایی که مدت زیادی اجرا میشن (مثل دیمنها یا سرویسها) از بهینهسازی حافظه PyPy سود میبرن.
📚 محدودیتهای PyPy
هرچند PyPy عالیه، ولی محدودیتهایی هم داره:
1⃣ عدم پشتیبانی کامل از C Extensions:
خیلی از کتابخونههای پایتون (مثل NumPy، Pandas یا TensorFlow) از C Extensionها استفاده میکنن که تو PyPy ممکنه کندتر باشن یا کار نکنن. البته PyPy داره روی این موضوع کار میکنه.
2⃣ سربار اولیه JIT:
PyPy تو شروع اجرا یه کم کندتره چون باید کد رو کامپایل کنه. برای اسکریپتهای کوتاه این میتونه نقطهضعف باشه.
3⃣ مصرف حافظه اولیه:
PyPy گاهی تو شروع کار حافظه بیشتری نسبت به CPython مصرف میکنه.
✍ جمعبندی
PyPy یه ابزار قدرتمنده که میتونه کدهای پایتون شما رو بدون نیاز به بازنویسی، سریعتر و بهینهتر اجرا کنه. با استفاده از JIT Compilation، این مفسر برای پروژههای محاسباتی، وباپلیکیشنها و اسکریپتهای طولانیمدت یه انتخاب عالیه. هرچند محدودیتهایی مثل سازگاری با C Extensionها داره، ولی برای خیلی از سناریوها میتونه پرفورمنس رو چند برابر کنه.
➖➖➖➖➖➖➖➖➖➖
PyPy ابزاری قدرتمند برای برنامهنویسهای پایتونه که به دنبال بهبود پرفورمنس کدهای خودشون هستن. اگه با کندی اجرای کد تو پروژههاتون مواجه شدین یا میخواین بدونین چطور میشه سرعت پایتون رو بدون تغییر زیاد تو کد بالا برد، این پست برای شماست. اینجا قراره بررسی کنیم PyPy چیه، چه قابلیتهایی داره، کجا به کار میاد و چه محدودیتهایی داره.
🧠اول از همه PyPy چیه؟
PyPy یه مفسر (interpreter) جایگزین برای پایتونه که به جای CPython (مفسر استاندارد پایتون که با C نوشته شده) استفاده میشه. PyPy خودش با پایتون (به طور دقیقتر، یه زیرمجموعه به اسم RPython) پیادهسازی شده و از Just-In-Time Compilation (JIT) برای کامپایل کردن کد پایتون به کد ماشین تو زمان اجرا استفاده میکنه. این باعث میشه تو خیلی از سناریوها سرعتش به مراتب از CPython بیشتر باشه.
شروع این پروژه به سال ۲۰۰۲ برمیگرده و حالا یه پروژه متنباز با جامعهای فعاله که مدام در حال بهبودشه. هدف PyPy اینه که کدهای پایتون رو سریعتر، بهینهتر و بدون نیاز به تغییر زیاد تو ساختار کد اجرا کنه.
📚 قابلیتهای مهم PyPy
PyPy چندتا ویژگی اصلی داره که اون رو از CPython متمایز میکنه:
1⃣ سرعت بالا با JIT Compilation
PyPy به جای تفسیر خطبهخط کد (مثل CPython)، بخشهای پرتکرار کد رو به کد ماشین کامپایل میکنه. این یعنی برای حلقهها و عملیات تکراری، سرعتش خیلی بیشتره.
مثال: یه تابع ساده برای محاسبه فیبوناچی:
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
print(fib(35))
تو CPython این کد برای
n=35
ممکنه چند ثانیه طول بکشه، ولی تو PyPy به لطف JIT خیلی سریعتره (گاهی تا ۷ برابر).2⃣ سازگاری بالا با پایتون
PyPy سعی میکنه تا حد زیادی با استانداردهای CPython سازگار باشه، یعنی اکثر کدهای پایتون بدون تغییر روی PyPy اجرا میشن.
مثلا اگه یه اسکریپت با Python 3.8 روی CPython کار کنه، به احتمال زیاد روی PyPy هم بدون دردسر اجرا میشه مگر از کتابخانه هایی استفاده کرده باشید که C extension استفاده میکنه.
3⃣ مصرف حافظه بهینه
PyPy یه Garbage Collector پیشرفته داره که میتونه مصرف حافظه رو تو بعضی سناریوها بهینهتر از CPython کنه.
کاربردشم تو برنامههایی که مدت طولانی اجرا میشن (مثل وبسرورها) و نیاز به مدیریت خوب حافظه دارن.
4⃣پشتیبانی از Stackless Python
PyPy از قابلیتهای Stackless Python (مثل micro-threads یا taskletها) پشتیبانی میکنه که برای برنامههای concurrent مناسبن.
🔍 چرا PyPy مناسبه؟
PyPy تو موقعیتهایی که پرفورمنس کد حیاتیه، میتونه بازی رو عوض کنه:
سرعت:
تو بنچمارکهای مختلف، PyPy برای کدهای محاسباتی (مثل حلقهها و الگوریتمهای ریاضی) تا ۷ برابر سریعتر از CPython عمل کرده.
بدون نیاز به بازنویسی کد: برخلاف ابزارهایی مثل Cython که نیاز به تغییر کد دارن، PyPy فقط با تغییر مفسر کار میکنه.
متنباز و فعال:
جامعه PyPy مدام داره باگها رو فیکس میکنه و پشتیبانی از نسخههای جدید پایتون رو اضافه میکنه.
🛠 کجا PyPy به کار میاد؟
1⃣ محاسبات سنگین:
اگه پروژهتون پر از حلقههای پیچیده یا الگوریتمهای محاسباتیه (مثل پردازش داده یا شبیهسازی)، PyPy سرعت رو حسابی بالا میبره.
2⃣ وبسرورها:
برای وباپلیکیشنهایی که با فریمورکهایی مثل Flask یا Django کار میکنن، PyPy میتونه پاسخگویی رو بهتر کنه.
3⃣ اسکریپتهای طولانیمدت: برنامههایی که مدت زیادی اجرا میشن (مثل دیمنها یا سرویسها) از بهینهسازی حافظه PyPy سود میبرن.
📚 محدودیتهای PyPy
هرچند PyPy عالیه، ولی محدودیتهایی هم داره:
1⃣ عدم پشتیبانی کامل از C Extensions:
خیلی از کتابخونههای پایتون (مثل NumPy، Pandas یا TensorFlow) از C Extensionها استفاده میکنن که تو PyPy ممکنه کندتر باشن یا کار نکنن. البته PyPy داره روی این موضوع کار میکنه.
2⃣ سربار اولیه JIT:
PyPy تو شروع اجرا یه کم کندتره چون باید کد رو کامپایل کنه. برای اسکریپتهای کوتاه این میتونه نقطهضعف باشه.
3⃣ مصرف حافظه اولیه:
PyPy گاهی تو شروع کار حافظه بیشتری نسبت به CPython مصرف میکنه.
✍ جمعبندی
PyPy یه ابزار قدرتمنده که میتونه کدهای پایتون شما رو بدون نیاز به بازنویسی، سریعتر و بهینهتر اجرا کنه. با استفاده از JIT Compilation، این مفسر برای پروژههای محاسباتی، وباپلیکیشنها و اسکریپتهای طولانیمدت یه انتخاب عالیه. هرچند محدودیتهایی مثل سازگاری با C Extensionها داره، ولی برای خیلی از سناریوها میتونه پرفورمنس رو چند برابر کنه.
#️⃣ #web #programming
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤10
Forwarded from Linuxor ?
توی ماشین لرنینگ برای اینکه بفهمیم هرکدوم از ویژگی ها چقدر توی خروجی تاثیر داشته راه های مختلفی وجود داره با SHAP میتونید راحت این کارو انجام بدید، SHAP یه روش برای توضیح خروجی مدلهای یادگیری ماشینه که از مفهوم Shapley value در نظریه بازیها الهام گرفته. توی نظریه بازی، Shapley value منصفانه مشخص میکنه هر بازیکن چقدر در نتیجهی تیم سهم داشته؛ SHAP همین ایده رو برای ویژگیهای داده به کار میگیره. یعنی برای هر پیشبینی مشخص، حساب میکنه هر فیچر (مثل سن، درآمد یا سابقه خرید) چه میزان در نتیجه نهایی مدل نقش مثبت یا منفی داشته. اینطوری میشه دقیق فهمید که چرا مدل به یه تصمیم خاص رسیده.
shap.readthedocs.io
@Linuxor
shap.readthedocs.io
@Linuxor
👍9
بدون اینکه مستقیم اشاره کنید بگید با چه زبان برنامهنویسی کار میکنید 🙂↔️
❤6
🇺🇸👩💻💯 فروش ویژه اکانت ChatGPT Plus
🎉 همین الان میتونید اکانت پلاس یکماهه رو به جای ۲۰ دلار، فقط با ۲۵۰ هزار تومان دریافت کنید!
🔥 یعنی فقط با یک دهم قیمت اصلی!
✅ سریع، مطمئن و با کمترین هزینه
✅ دسترسی کامل به امکانات ChatGPT Plus
✅ بدون محدودیت، مناسب برای کار، تحصیل و تولید محتوا
📩 برای سفارش و دریافت اطلاعات بیشتر، همین حالا به آیدی زیر پیام بدید:
👉 @feslami1376
🎉 همین الان میتونید اکانت پلاس یکماهه رو به جای ۲۰ دلار، فقط با ۲۵۰ هزار تومان دریافت کنید!
🔥 یعنی فقط با یک دهم قیمت اصلی!
✅ سریع، مطمئن و با کمترین هزینه
✅ دسترسی کامل به امکانات ChatGPT Plus
✅ بدون محدودیت، مناسب برای کار، تحصیل و تولید محتوا
📩 برای سفارش و دریافت اطلاعات بیشتر، همین حالا به آیدی زیر پیام بدید:
👉 @feslami1376
👍2❤1