Ninja Learn | نینجا لرن
1.27K subscribers
96 photos
36 videos
11 files
306 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
یادش بخیر :))))

یادمه اولین باری که پشت سیستم نشستم ۶ سالم بود و روی ویندوز XP پلنگ صورتی بازی میکردم. چه زود گذشت


 
🥷🏻 CHANNEL | GROUP
😭15
یکم میخوام راجب Transfer learning صحبت منم.
احتمالا برای همتون جالب باشه
👍7
Ninja Learn | نینجا لرن
Megara Template.zip
قبلا دوست خوبم جواد یه تمپلیت عالی زده بود که منتشرش کردیم.
گفتم اگه کسی ندیده و دنبال یه فرانت آماده برای پنلشه، این می‌تونه گزینه‌ی خیلی خوبی باشه 😁

اینم لینک پریویو قالب
https://megara.netlify.app

 
🥷🏻 CHANNEL | GROUP
5
اگه بخواید آلمانی یاد بگیرید، این منبع یکی از گزینه‌های خوبه و می‌تونه کمکتون کنه تا به سطح B1 برسید.

https://t.iss.one/lezatedeutsch

 
🥷🏻 CHANNEL | GROUP
6
This media is not supported in your browser
VIEW IN TELEGRAM
که گفتی css کامپایلریه

 
🥷🏻 CHANNEL | GROUP
🤣17
چرا 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
🔥103👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
همینقدر پیر

 
🥷🏻 CHANNEL | GROUP
💔191
امروز به این نتیجه رسیدم اگه Ai رو محدود نکنی هر کاری میکنه تکرار میکنم
هرکاری ...
👍14
یه خبر فوق‌العاده برای کسایی که دنبال دوره‌های باکیفیت هستن ولی شرایط مالی‌شون مناسب نیست
مکتب‌خونه بعضی از دوره‌های ارزشمندش رو رایگان کرده؛
از جمله دوره‌های اساتید معروف مثل آقای بیگ‌دلی، جادی، و سهیل تهرانی‌پور.

📌 جزئیات کامل رو می‌تونید از پست لینکدین ببینید

توجه داشته باشید این یک تبلیغ نیست

#موقت
👍6🔥3
این داستان ‏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
پست بعدی جذابه 🥰
🔥8
این داستان 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)، بخش‌های پرتکرار کد رو به کد ماشین کامپایل می‌کنه. این یعنی برای حلقه‌ها و عملیات تکراری، سرعتش خیلی بیشتره.
مثال: یه تابع ساده برای محاسبه فیبوناچی:

  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
Media is too big
VIEW IN TELEGRAM
خیلی از ما همینیم :)

 
🥷🏻 CHANNEL | GROUP
👍91
Forwarded from Linuxor ?
توی ماشین لرنینگ برای اینکه بفهمیم هرکدوم از ویژگی ها چقدر توی خروجی تاثیر داشته راه های مختلفی وجود داره با SHAP می‌تونید راحت این کارو انجام بدید، SHAP یه روش برای توضیح خروجی مدل‌های یادگیری ماشینه که از مفهوم Shapley value در نظریه بازی‌ها الهام گرفته. توی نظریه بازی، Shapley value منصفانه مشخص می‌کنه هر بازیکن چقدر در نتیجه‌ی تیم سهم داشته؛ SHAP همین ایده رو برای ویژگی‌های داده به کار می‌گیره. یعنی برای هر پیش‌بینی مشخص، حساب می‌کنه هر فیچر (مثل سن، درآمد یا سابقه خرید) چه میزان در نتیجه نهایی مدل نقش مثبت یا منفی داشته. اینطوری می‌شه دقیق فهمید که چرا مدل به یه تصمیم خاص رسیده.

shap.readthedocs.io

@Linuxor
👍9
بدون اینکه مستقیم اشاره کنید بگید با چه زبان برنامه‌نویسی کار میکنید 🙂‍↔️
6
This media is not supported in your browser
VIEW IN TELEGRAM
⁦ಠ⁠_⁠ʖ⁠ಠ⁩

 
🥷🏻 CHANNEL | GROUP
3💔3
وقتی اولین خط کدتون رو نوشتید چه حسی داشتید؟ 🤔
من که داشتم بوگاتیمو تصور میکردم 😂

 
🥷🏻 CHANNEL | GROUP
🤣164
دوساعت پست نوشتم دستم خورد کلش پاک شد
🤣12💔5
🇺🇸👩‍💻💯 فروش ویژه اکانت ChatGPT Plus
🎉 همین الان می‌تونید اکانت پلاس یک‌ماهه رو به جای ۲۰ دلار، فقط با ۲۵۰ هزار تومان دریافت کنید!
🔥 یعنی فقط با یک دهم قیمت اصلی!

سریع، مطمئن و با کمترین هزینه
دسترسی کامل به امکانات ChatGPT Plus
بدون محدودیت، مناسب برای کار، تحصیل و تولید محتوا

📩 برای سفارش و دریافت اطلاعات بیشتر، همین حالا به آیدی زیر پیام بدید:
👉 @feslami1376
👍21