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
پست فردا درمورد چی باشه دوستان؟ 🧐
3
💎 وب سرور gunicorn 💎

امروز میخوایم با همدیگه یکی از بهترین ابزارها برای ساخت وب‌سرورهای پایتون رو بشناسیم. اسمش Gunicorn هست!

حالا Gunicorn چیه و چه کار میکنه؟
ابزار Gunicorn یه وب‌سرور WSGI هست که به زبان پایتون نوشته شده.
یعنی چی؟ یعنی این که میتونه درخواست‌های HTTP رو بگیره و به برنامه وب شما برسونه. به زبان ساده‌تر، Gunicorn مثل یه پیشخدمت بین مشتری (کاربر) و آشپز (برنامه شما) عمل می‌کنه. ‍

چرا Gunicorn اینقدر خوبه؟
1⃣ ساده و سریع: Gunicorn خیلی ساده و سبک هست و به همین خاطر خیلی سریع کار میکنه. ⚡️

2⃣ انعطاف‌پذیر: میشه Gunicorn رو با خیلی از فریمورک‌های پایتون مثل Django و Flask استفاده کرد. ️

3⃣ قابل اعتماد: Gunicorn خیلی پایداره و کم پیش میاد که خراب بشه.

4⃣ چندین کاربر همزمان: Gunicorn میتونه همزمان درخواست‌های چندین کاربر رو پردازش کنه.

چه موقع از Gunicorn استفاده کنیم؟
وقتی میخوای یک وب‌سرور پایتون بسازی.
وقتی میخوای وب‌سرورت خیلی سریع و کارآمد باشه.
وقتی میخوای وب‌سرورت بتونه تعداد زیادی درخواست رو همزمان پردازش کنه.

چطوری از Gunicorn استفاده کنیم؟
فرض کن یک برنامه وب با Flask داریم که اسمش app.py هست. برای اجرا کردن این برنامه با Gunicorn، کافیه این دستور رو در ترمینال وارد کنیم:

gunicorn app:app --workers 4 --bind 0.0.0.0:8000 

1⃣ app:app:
این قسمت مشخص میکنه که برنامه ما کجاست و نقطه ورودش کجاست.

2⃣  --workers 4:
این گزینه مشخص میکنه که چند تا فرآیند برای پردازش درخواست‌ها ایجاد بشه.

3⃣ --bind 0.0.0.0:8000:
این گزینه مشخص میکنه که Gunicorn روی چه آدرسی و پورت گوش بده.

مزایای استفاده از Gunicorn:
1⃣ عملکرد بالا: Gunicorn یکی از سریع‌ترین وب‌سرورهای پایتون هست.

2⃣ سادگی: استفاده از Gunicorn خیلی ساده است.

3⃣ انعطاف‌پذیری: میشه Gunicorn رو با خیلی از فریمورک‌ها و ابزارهای دیگه استفاده کرد.

معایب استفاده از Gunicorn:
1⃣ فقط برای پایتون: Gunicorn فقط برای برنامه‌های پایتون قابل استفاده است.

2⃣ نیاز به کانفیگ: برای تنظیمات پیچیده، نیاز به کانفیگ کردن Gunicorn داریم.

جمع‌بندی
فهمیدیم Gunicorn یک ابزار قدرتمند و کاربردی برای ساخت وب‌سرورهای پایتون هست. اگه میخوای یک وب‌سرور سریع، قابل اعتماد و انعطاف‌پذیر داشته باشی، Gunicorn بهترین گزینه برای تو هست.

#Gunicorn #Python #WebServer #Programming #Developer #Flask #Django #WebDevelopment
🔥32👍3👏1
بیشتر دوستانی که پستارو میبینند
متاسفانه نه ریکشن میزنن و نه جوین میشن لطفا جوین کانال بشید و با ریکشن زدن حمایت کنید از ما ❤️😊
18👍3🔥3👏2
بچه ها توی گروه حتما جوین بشید میتونید هر سوالی که دارید اونجا بپرسید یا توی بحثای جذاب شرکت کنید 🫵

لینک گروه 👀
https://t.iss.one/+td1EcO_YfSphNTlk
2🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
ساخت دکمه ۳ بعدی با css 😃

#FrontEnd #css #html #فرانت
👍5🥰1
Ninja Learn | نینجا لرن
ساخت دکمه ۳ بعدی با css 😃 #FrontEnd #css #html #فرانت
بچه ها نظرتون راجب کیفیت این پست واسه اینستا چیه؟

⭕️ لطفا دقت کنید که کیفیت پست رو میگم نه محتواش
Final Results
67%
خوبه
11%
بد نیست
17%
جا داره بهتر بشه
6%
کیفیتش پایینه
🔥52
#javascript #introducing_website


●● وبسایت javscript.info چیست؟ ●●

اگر با زبان برنامه نویسی JavaScript کار میکنید احتمالا اسم این سایت رو زیاد شنیده باشید. javscript.info یک منبع آنلاینِ رایگان، جامع و تعاملی برای یادگیری زبان برنامه‌نویسی جاوااسکریپت است. این وب‌سایت به شما کمک می‌کند تا مفاهیم جاوااسکریپت را به صورت ساده و روان یاد بگیرید.

ویژگی‌های کلیدی این وب‌سایت‌ 🚀

محتوای باکیفیت: مطالب این وب‌سایت به‌روز هستند و با استانداردهای جدید جاوااسکریپت مطابقت دارند. 💯

زبان ساده: مفاهیم به زبانی ساده و قابل فهم توضیح داده شده‌اند تا برای مبتدیان و افراد با تجربه مناسب باشد.

تعاملی بودن: می‌توانید مستقیماً در مرورگر خود کد بنویسید و نتیجه را ببینید تا درک بهتری از مفاهیم پیدا کنید.

چندزبانه بودن: این وب‌سایت به زبان‌های مختلف از جمله فارسی ترجمه شده است. ( مشاهده ترجمه فارسی وبسایت ) 🌐

چه کسانی می‌توانند از این وب‌سایت استفاده کنند ؟ 🤔

مبتدیان: اگر هیچ تجربه قبلی در برنامه‌نویسی ندارید، این وب‌سایت می‌تواند شروع خوبی برای شما باشد.

برنامه‌نویسان با تجربه: اگر قبلاً با جاوااسکریپت کار کرده‌اید، می‌توانید از این وب‌سایت برای یادگیری مفاهیم پیشرفته‌تر یا مرور مفاهیم قبلی استفاده کنید.
💢 برای عمیق شدن توی زبان جاوااسکریپت هم میتونه بسیار کمک کننده باشه.


در کل javscript.info یک منبع ارزشمند برای هر کسی است که می‌خواهد جاوااسکریپت یاد بگیرد.

Channel | YouTube | Instagram
👍42👏2
Ninja Learn | نینجا لرن pinned «دوستان اقا محمد حسین توی بحث فرانت فعالیت میکنه و کیفیت پستاش واقعا خوبه اگه دوست داشتید میتونید جوین بشید و از محتواشون استفاده کنید👌»
💎 ادامه gunicorn بخش ۲ 💎

حالا که توی پست قبلی با Gunicorn آشنا شدیم، بریم سراغ جزئیات بیشتر و تخصصی‌ترش. تو این بخش می‌خوایم Gunicorn رو از زیر و رو بررسی کنیم و ببینیم که چه قابلیت‌های پنهانی داره.

🅰 مدل کاری Gunicorn: پری فورک (Pre-fork)
باید بدونید Gunicorn از مدل پری فورک استفاده می‌کنه. یعنی وقتی که Gunicorn اجرا میشه، چندین فرآیند فرزند ایجاد می‌کنه. هر کدوم از این فرآیندها می‌تونن درخواست‌های HTTP رو به صورت مستقل پردازش کنن.
این مدل باعث میشه که Gunicorn بتونه همزمان درخواست‌های زیادی رو مدیریت کنه و عملکرد خیلی خوبی داشته باشه.

تنظیمات کلیدی Gunicorn
باید بدونید Gunicorn گزینه‌های تنظیمات زیادی داره که به شما اجازه میدن تا رفتار سرور رو به دلخواه خودتون تغییر بدید. چند تا

از مهم‌ترین این گزینه‌ها عبارتند از:
1⃣ workers:
تعداد ورکرها.

🔴 ورکر چیه؟ فکر کن یه کافه خیلی شلوغ رو تصور کن. مشتریا دارن پشت سر هم سفارش میدن و یه نفر دیگه هم داره این سفارش‌ها رو آماده می‌کنه. اون کسی که سفارش‌ها رو آماده می‌کنه، یه جوریه مثل یه ورکره!
2⃣ bind:
آدرس و پورت برای اتصال.

3⃣ timeout:
حداکثر زمانی که یک درخواست می‌تونه طول بکشه.

4⃣ daemon:
اجرا کردن Gunicorn به عنوان یک دِمون.

🔴 دیمن (Daemon) چیه؟: یه برنامه کامپیوتریه که تو پس‌زمینه سیستم اجرا میشه و منتظر اتفاق خاصی هست تا کارش رو شروع کنه. فکر کن یه نگهبان شب که بیدار میمونه و منتظره اتفاقی بیفته.
5⃣ accesslog:
مسیر فایل لاگ دسترسی.


6⃣ errorlog:
مسیر فایل لاگ خطا.

🧪 مثال یک تنظیمات کامل:
gunicorn 
app:app \
--workers 3\
--bind unix:/tmp/gunicorn.sock \
--timeout 300 \
--daemon \
--accesslog - \
--errorlog -

در این مثال، Gunicorn با 3 فرآیند ورکر اجرا میشه، به یک سوکت یونیکس متصل میشه، تایم اوت 5 دقیقه‌ای داره و خروجی‌های لاگ به خروجی استاندارد و خطای استاندارد هدایت میشه.

🖇 استفاده از Gunicorn با Nginx
برای بهبود عملکرد و امنیت، معمولاً Gunicorn رو پشت یک پروکسی معکوس مثل Nginx قرار می‌دیم. Nginx می‌تونه درخواست‌های HTTP رو دریافت کنه، آنها رو به Gunicorn پروکسی کنه و همچنین ویژگی‌هایی مثل کش کردن، بارگذاری تعادلی و SSL رو فراهم کنه.

🔩 اپشن های پیشرفته
باید بدونید Gunicorn گزینه‌های پیشرفته زیادی داره که به شما اجازه میدن تا رفتار سرور رو به طور دقیق تنظیم کنید. مثلاً می‌تونید:

1⃣ ورکر های مختلف: از ورکر های مختلفی مثل sync، eventlet، gevent و ... استفاده کنید.

2⃣ حالت توسعه: Gunicorn رو در حالت توسعه اجرا کنید تا بتونید تغییرات کد رو بدون نیاز به ریستارت کردن سرور ببینید.

3⃣ کانفیگ با فایل: تنظیمات Gunicorn رو در یک فایل قرار بدید.

✳️ مشکلات رایج و راه حل‌ها

😵 خطاهای 502: معمولاً به دلیل ترافیک زیاد یا مشکل در برنامه رخ میده.

😪 خاموش شدن ناگهانی سرور: ممکنه به دلیل مشکلات حافظه یا خطاهای برنامه رخ دهد.

😵‍💫 مشکلات در تنظیمات: بررسی کنید که تنظیمات Gunicorn و Nginx به درستی تنظیم شده باشه.


#Gunicorn #Python #WebServer #Programming #Developer #Flask #Django #WebDevelopment
20
سلام رفقا 👋

حال دلتون چطوره

خوش آمد میگم به دوستانی که تازه به جمعمون اضافه شدن ❤️

متاسفانه پیج قبلیمون از دسترس خارج شد و مجبور شدیم پیج جدید بزنیم

برای حمایت از ما، فالو کنید که پرقدرت شروع کنیم 💪

قراره کلی پست و آموزش با کیفیت بذاریم ✌️

https://www.instagram.com/ninjalearn_/
❤‍🔥91
سلام رفقا 👋

بعد یه مدت پست جدید تو اینستا گذاشته شد

لطفا بیاید و حمایت خودتونو نشون بدید 🌹

https://www.instagram.com/reel/C-hdU59MsD5/?igsh=MjNnZWEzM3ZvMjFj
👍2🥰21
Ninja Learn | نینجا لرن pinned «سلام رفقا 👋 بعد یه مدت پست جدید تو اینستا گذاشته شد لطفا بیاید و حمایت خودتونو نشون بدید 🌹 https://www.instagram.com/reel/C-hdU59MsD5/?igsh=MjNnZWEzM3ZvMjFj»
💎 ادامه gunicorn بخش ۳ 💎

دیمن و Gunicorn: یک دوئل در پس‌زمینه سیستم

خیلی خب، بریم سراغ جزئیات جذاب‌تر! وقتی می‌گیم Gunicorn رو به عنوان دیمن اجرا می‌کنیم، یعنی چی؟ یعنی این برنامه بعد از اجرا شدن، به صورت مستقل در پس‌زمینه سیستم کارش رو ادامه می‌ده و دیگه نیازی نیست که ترمینال رو باز نگه داریم.

چرا دیمن شدن مهمه؟
1⃣ پایداری: اگه Gunicorn به عنوان دیمن اجرا بشه، حتی اگه ترمینال رو ببندیم یا سیستم رو ریستارت کنیم، همچنان به کارش ادامه می‌ده.

2⃣ مدیریت آسان‌تر: با استفاده از ابزارهای مدیریت سیستم عامل، می‌تونیم Gunicorn رو به عنوان یک سرویس سیستم‌عامل مدیریت کنیم. یعنی می‌تونیم اون رو شروع، متوقف، ریستارت و پیکربندی کنیم.

3⃣ امنیت: اجرای Gunicorn به عنوان دیمن باعث میشه که دسترسی به تنظیمات و فایل‌های آن محدود بشه.

😁 اما این داستان پیچیده‌تر از این حرف‌هاست.

وقتی Gunicorn به عنوان دیمن اجرا میشه، یک فرآیند والد ایجاد می‌کنه که وظیفه نظارت بر فرآیندهای فرزند رو بر عهده داره.
اگه یکی از فرآیندهای فرزند با مشکلی مواجه بشه، فرآیند والد اون رو تشخیص می‌ده و یک فرآیند جدید جایگزینش می‌کنه. این مکانیزم باعث میشه که Gunicorn به شدت پایدار باشه.

👀 حالا بیا یه کم فنی‌تر به قضیه نگاه کنیم.

وقتی می‌گیم Gunicorn رو به عنوان دیمن اجرا می‌کنیم، در واقع داریم از یک سیستم مدیریت فرآیند مثل systemd (در لینوکس) یا launchd (در مک) استفاده می‌کنیم. این سیستم‌ها به ما اجازه میدن تا فرآیندهای دیمن رو به صورت خودکار هنگام بوت شدن سیستم اجرا کنیم، و همچنین اون‌ها رو مدیریت کنیم.

پس به طور خلاصه:

دیمن شدن Gunicorn باعث میشه که اون به صورت مستقل و پایدار در پس‌زمینه سیستم اجرا بشه.
فرآیند والد Gunicorn وظیفه نظارت بر فرآیندهای فرزند رو بر عهده داره.
سیستم‌های مدیریت فرآیند مثل systemd به ما کمک می‌کنن تا Gunicorn رو به عنوان یک سرویس سیستم‌عامل مدیریت کنیم.

🧪 حالا بیا یه مثال عملی بزنیم.

فرض کن می‌خوای Gunicorn رو به عنوان دیمن در لینوکس اجرا کنی. می‌تونی از دستور زیر استفاده کنی:

sudo systemctl start gunicorn 


با اجرای این دستور، Gunicorn به عنوان یک سرویس سیستم‌عامل شروع به کار می‌کنه و در پس‌زمینه سیستم اجرا میشه.

پایان


#Gunicorn #Python #WebServer #Programming #Developer #Flask #Django #WebDevelopment
👍65🐳1
Ninja Learn | نینجا لرن
سلام رفقا 👋 بعد یه مدت پست جدید تو اینستا گذاشته شد لطفا بیاید و حمایت خودتونو نشون بدید 🌹 https://www.instagram.com/reel/C-hdU59MsD5/?igsh=MjNnZWEzM3ZvMjFj
حمایت شما واسمون خیلی ارزش داره بچه ها

بهمون انرژی میده پست ها و آموزش های با کیفیت تری واستون درست کنیم
👏71👎1
فردا یه پست خفن راجب GIL داریم 🌚 این چند وقته خیلی افتاده سر زبون پایتون کارا

#پیام
🔥5😁41
💎 گیل GIL در پایتون 💎

چند وقتیه که یه موضوع خیلی بین پایتون کارا معروف شده اونم حذف شدنه GIL از مفسر پایتون GIL یا همون Global Interpreter Lock.
خب امروز میخوایم در موردش صحبت کنیم


حالا GIL چیه؟ 🤔
به زبان ساده، GIL یه قفل بزرگه که اجازه میده فقط یک ترد (thread) در یک زمان بتونه کد پایتون رو اجرا کنه. یعنی اگه چند تا ترد داشته باشی، هر دفعه فقط یکی از اونها میتونه کار کنه و بقیه باید منتظر بمونن.

چرا GIL وجود داره؟
دلیل اصلی وجود GIL اینه که مدیریت حافظه توی پایتون به صورت خودکار انجام میشه. برای اینکه این مدیریت به درستی انجام بشه و مشکلی پیش نیاد، GIL اومده تا همه چیز رو کنترل کنه.

خوبیه GIL چیه؟

1⃣ سادگی: GIL باعث میشه که مدیریت همزمانی در پایتون ساده‌تر بشه و برنامه‌نویس کمتر نگران مشکلات مربوط به همزمانی باشه.

2⃣ کارایی برای برنامه‌های تک‌ترد ای: برای برنامه‌هایی که از چندین هسته پردازنده استفاده نمی‌کنن، GIL مشکلی ایجاد نمی‌کنه و حتی ممکنه کارایی رو هم افزایش بده.

بدیه GIL چیه؟

1⃣ محدودیت در استفاده از چندین هسته(core): بزرگترین مشکل GIL اینه که مانع از استفاده کامل چندین هسته پردازنده میشه. یعنی اگه برنامه‌ای داشته باشی که عملیات‌های زیادی رو به صورت موازی انجام میده، GIL باعث میشه که این برنامه‌ها به اندازه کافی سریع نباشن.

3⃣ مشکل برای برنامه‌های I/O-bound: حتی برای برنامه‌هایی که بیشتر منتظر ورودی/خروجی هستن (مثل برنامه‌های شبکه‌ای)، GIL میتونه باعث کاهش کارایی بشه.

کجا از GIL استفاده میشه؟
باید بدونید GIL در همه مفسرهای پایتون وجود داره. پس اگه از پایتون استفاده می‌کنی، به طور خودکار با GIL سر و کار داری.


اگه GIL حذف بشه چه خوبی‌هایی داره؟

1⃣ استفاده کامل از چندین هسته: حذف GIL باعث میشه که برنامه‌های پایتون بتونن به طور کامل از چندین هسته پردازنده استفاده کنن و کاراییشون به شدت افزایش پیدا کنه.

2⃣ بهبود کارایی در برنامه‌های همزمان: برنامه‌هایی که از همزمانی استفاده می‌کنن، با حذف GIL به طور قابل توجهی سریع‌تر میشن.


اگه GIL حذف بشه چه بدی‌هایی داره؟

1⃣ پیچیدگی بیشتر: حذف GIL باعث میشه که مدیریت همزمانی در پایتون پیچیده‌تر بشه و برنامه‌نویس باید بیشتر دقت کنه تا از مشکلات مربوط به همزمانی جلوگیری کنه.

2⃣ مشکلات سازگاری: حذف GIL ممکنه باعث ایجاد مشکلات سازگاری با کتابخانه‌های قدیمی بشه.


🟢 خلاصه
فهمیدیم GIL یه ویژگی جالب و در عین حال چالش‌برانگیز توی پایتون هست. هرچند که GIL باعث سادگی میشه، اما محدودیت‌هایی رو هم ایجاد می‌کنه. در سال‌های اخیر تلاش‌های زیادی برای بهبود مدیریت همزمانی توی پایتون و کاهش تأثیر GIL انجام شده، اما هنوز هم GIL یکی از مهمترین موضوعات بحث توی جامعه پایتون هست.

⭕️نکته:
جالبه بدونید GIL برای توابعی که cpu-bound هستن صدق میکنه و برای توابع I/O-bound اینجوری نیست یعنی توی توابعی که I/O-bound هستن ما میتونیم بصورت مولتی ترد عملیات رو هندل کنیم

نظر شما چیه؟ فکر می‌کنید GIL باید حذف بشه؟ یا اینکه وجودش لازمه؟ نظراتتون رو برام بنویسید.

#پایتون #GIL #برنامه_نویسی #همزمانی
🔥19👍51