Ninja Learn | نینجا لرن
1.26K subscribers
95 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
زبان بخونید زبان
از نون شب واجب تره
2👍261
دیشب یه PR زدم برای ترجمه یکی از صفحات آموزشی FastAPI.
اما Maintainer پروژه گفت که قراره روش ترجمه‌ی داکیومنت‌ها رو به‌طور کامل تغییر بدن و برن سراغ ترجمه‌ی خودکار.
دلیلش هم اینه که خیلی از مشارکت‌کننده‌ها ترجمه‌ها رو ناقص انجام می‌دن یا بعداً که مستندات اصلی به‌روزرسانی می‌شه، ترجمه‌هاشون رو آپدیت نمی‌کنن.
برای همین تصمیم گرفتن روش قبلی رو کنار بذارن و کل فرایند ترجمه رو اتوماتیک کنن.


میتونید توی بخش مشارکت کننده هاهم این موضوع رو ببینید

https://fastapi.tiangolo.com/contributing/#translations


#⃣ #news

 
🥷🏻 CHANNEL | GROUP
👍17
موضوع خاصی هست که بخواید راجبش پست درست کنم؟
تو کامنت همین پست بگید👇
1
یک سال از ساخت این چنل و تولید محتوا توش گذشت.
تو این مدت خیلی چیزها یاد دادم، خیلی چیزها یاد گرفتم، و واقعیت اینه که بیشتر یاد گرفتم تا یاد بدم.

مرسی از همه‌ی شما که تو این مسیر کنارم بودید و هستید.
امیدوارم تونسته باشم حتی یه ذره هم بهتون چیزی یاد داده باشم.

دوستتون دارم، دونه‌دونه‌تون ❤️
120
حق واقعاً

#⃣ #fun

 
🥷🏻 CHANNEL | GROUP
👍10🤣8
خدایی برنامه نویسی هست که نخواد مهاجرت کنه؟
Pain 💔
💔36👍7👎1
داره ترسناک میشه

 
🥷🏻 CHANNEL | GROUP
🔥11❤‍🔥2🤣1
This media is not supported in your browser
VIEW IN TELEGRAM
این ویدیو جادی فوق‌العاده بود، حتما ببینید🤩🔥

#️⃣ #tips

🧑‍💻 @CoolyCode ⬅️
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥6🤩1
سام علیک و از این حرفا Github Actions 🎬

حتماً اسم GitHub Actions به گوشتون خورده این ابزار می‌تونه خیلی از کارهای تکراری و روتین پروژه‌تون رو خودکار کنه، بدون اینکه لازم باشه خودتون دست به کار بشین. از بررسی کدهای کامیت‌شده تا اجرای تست‌ها و دیپلوی خودکار، همه‌چیز رو می‌سپارین بهش و خیالتون راحته تو این پست قراره حسابی راجب GitHub Actions حرف بزنیم، ببینیم این ابزار چیه، چه کارایی می‌تونه بکنه و چرا باید یه پای ثابت تو هر رپوی برنامه‌نویسی باشه.

🧠اول از همه GitHub Actions چیه؟

GitHub Actions یه پلتفرم اتوماسیونه که مستقیم تو GitHub ادغام شده و بهتون اجازه می‌ده workflow خودکار برای پروژه‌هاتون بسازین. این ابزار برای CI/CD (ادغام مداوم و تحویل/استقرار مداوم) (همیشه انگلیسی رو به معادل فارسی ترجیح میدم) طراحی شده، ولی فقط به این محدود نیست، می‌تونه هر کاری از تست کد و دیپلوی اپلیکیشن تا مدیریت مسائل (issues) و حتی ارسال نوتیفیکیشن رو خودکار کنه. به زبان ساده، GitHub Actions مثل یه رباته که با یه سری دستور (نوشته‌شده با YAML) بهش می‌گین چیکار کنه.

این ابزار از سال ۲۰۱۸ توسط GitHub معرفی شد و حالا یکی از محبوب‌ترین ابزارهای اتوماسیون تو اکوسیستم توسعه نرم‌افزاره، چون هم قدرتمنده، هم انعطاف‌پذیره و هم با خود GitHub جوش خورده.

📚 قابلیت‌های کلیدی GitHub Actions

1⃣CI/CD (ادغام و تحویل مداوم) 🛠️
می‌تونین پایپ لاین‌هایی بسازین که کدتون رو به‌صورت خودکار بیلد، تست و دیپلوی کنه.

مثال:
هر بار که یه تغییر (push) تو شاخه main می‌کنین، کد بیلد بشه، تست‌ها اجرا بشن و اگه همه‌چیز اوکی بود، به سرور production دیپلوی بشه.

name: CI Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest


2⃣ اتوماسیون وظایف مختلف ⚙️
فراتر از CI/CD، می‌تونین هر کار تکراری رو خودکار کنین، مثل اضافه کردن لیبل به issues یا ارسال نوتیف به اسلک.

مثال:
وقتی یه issue جدید باز می‌شه، به‌صورت خودکار لیبل "triage" بهش اضافه بشه:

name: Auto Label Issues
on:
issues:
types: [opened]
jobs:
label:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
with:
script: |
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['triage']
})


3⃣ پشتیبانی از چند پلتفرم 🖥️
‏GitHub Actions روی ماشین‌های مجازی لینوکس، ویندوز و مک اجرا می‌شه. حتی می‌تونین self-hosted runners (ماشین‌های خودتون) رو استفاده کنین.

مثال: تست کد روی نسخه‌های مختلف پایتون و سیستم‌عامل‌ها با یه matrix workflow:

name: Test on Multiple Platforms
on: [push]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.8', '3.9', '3.10']
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Run tests
run: pytest


4⃣ اکشن‌های آماده و Marketplace 🛒
یه عالمه اکشن آماده تو GitHub Marketplace وجود داره که می‌تونین مستقیم تو ورک‌فلاتون استفاده کنین.

مثال: اکشن برای ارسال نوتیفیکیشن به اسلک یا دیپلوی به AWS.

- name: Notify Slack
uses: slackapi/[email protected]
with:
slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }}
channel-id: 'my-channel'
text: 'New deployment completed!'



جمع‌بندی
‏GitHub Actions یه ابزار قدرتمند و انعطاف‌پذیره که می‌تونه پروژه‌هاتون رو از یه مجموعه کد ساده به یه سیستم خودکار و حرفه‌ای تبدیل کنه. از CI/CD و تست چندپلتفرمی گرفته تا اتوماسیون کارهای روزمره مثل ارسال اعلان یا مدیریت مسائل، این ابزار همه‌چیز رو تو یه پکیج بهتون می‌ده. فقط کافیه یه فایل YAML بسازین.

اگه خواستین بیشتر درمودش صحبت بکنم و نکات حرفه ای تری بگم با ریکشن و شیر این پست رو حمایت کنید 😊❤️

#️⃣ #web #programming

 
🥷🏻 CHANNEL | GROUP
11👍3
This media is not supported in your browser
VIEW IN TELEGRAM
❤‍🔥3
فکرشو نمیکردم انقدر دانلود بگیره
🔥81
پیش میاد

 
🥷🏻 CHANNEL | GROUP
🤣25
یادش بخیر :))))

یادمه اولین باری که پشت سیستم نشستم ۶ سالم بود و روی ویندوز 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