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
💎 لاگینگ (logging) در جنگو 💎

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

📃 لاگینگ چیه؟  به زبون ساده، لاگینگ یعنی نوشتن یه سری اطلاعات خاص در مورد اتفاقاتی که توی برنامه‌مون میفته توی یه فایل یا جایی دیگه.

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


چرا لاگینگ توی جنگو مهمه؟ 🤔

1⃣ دیباگ کردن: وقتی برنامه‌مون با خطا مواجه میشه، لاگ ها بهمون کمک میکنن تا بفهمیم دقیقا کجا و چرا این خطا رخ داده.

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

3⃣ امنیت: لاگ ها میتونن بهمون کمک کنن تا حملات امنیتی رو شناسایی کنیم و ازشون جلوگیری کنیم.




چطوری لاگینگ رو توی جنگو تنظیم کنیم؟

1⃣ وارد شدن به settings.py: اول از همه باید به فایل settings.py پروژه خودمون بریم. این فایل جاییه که همه تنظیمات کلی پروژهمون رو انجام میدیم.

2⃣ تنظیم متغیر LOGGING: توی این فایل یه متغیر به اسم LOGGING وجود داره که یه دیکشنری هست. ما باید این دیکشنری رو به شکلی که میخوایم تنظیم کنیم. مثلا برای اینکه لاگ هامون رو توی یه فایل به اسم mysite.log ذخیره کنیم، میتونیم این کد رو به settings.py اضافه کنیم:

LOGGING = { 
'version': 1,

'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',

'filename': 'mysite.log',
},
},
'loggers': {
'django': { 'handlers': ['file'], 'level': 'INFO',
},
},
}


🧐 درک تنظیمات:

version:
نسخه لاگر

disable_existing_loggers:
اگر True باشه، لاگرهای پیش فرض جنگو غیرفعال میشن.

handlers:
اینجا تعریف میکنیم که لاگ هامون رو کجا ذخیره کنیم. مثلا توی فایل، کنسول، یا یه دیتابیس.

loggers:
اینجا مشخص میکنیم که چه ماژول هایی لاگ تولید کنن و سطح لاگشون چی باشه.


🧪 پیاده سازی لاگینگ توی کد: برای استفاده از لاگینگ توی کدهامون، از ماژول logging پایتون استفاده میکنیم. مثلا:

import logging 

logger = logging.getLogger(__name__)

def my_function():
logger.info(
"This is an info message"
)
logger.error(
"This is an error message"
)


📊 سطح های مختلف لاگ:

🟣 DEBUG:
برای اطلاعات خیلی جزئی

🔵 INFO:
برای اطلاعات عمومی

🟠 WARNING:
برای هشدارها

🔴 ERROR:
برای خطاها

CRITICAL:
برای خطاهای خیلی جدی


⭕️ نکات مهم:
سطح لاگ رو با توجه به محیطتون تنظیم کنید: مثلا توی محیط توسعه سطح لاگ رو روی DEBUG بذارید تا همه چیز رو ببینید، اما توی محیط پروداکت سطح لاگ رو روی INFO یا بالاتر بذارید.

از لاگینگ برای دیباگ کردن استفاده کنید، اما اطلاعات حساس رو لاگ نکنید.
لاگ ها رو مرتبا بررسی کنید تا مشکلات رو زودتر پیدا کنید.

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

امیدوارم این آموزش براتون مفید بوده باشه. اگه سوالی داشتید حتما بپرسید.


#جنگو #لاگینگ #توسعه_وب #پایتون
👍96🔥2
دوستان چه حسی نسبت به اسم "نینجا لرن" دارید؟
Final Results
67%
عالیه، باهاش حال میکنم
33%
ضایس، دوست ندارم
2
Ninja Learn | نینجا لرن
دوستان چه حسی نسبت به اسم "نینجا لرن" دارید؟
لطفا همگی نظر خودشونو اعلام کنن 🌹
2
پست فردا درمورد چی باشه دوستان؟ 🧐
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»