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
💎 سایت مپ (sitemaps) درجنگو 💎

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

حالا Django sitemaps چیه؟
خب، فرض کنین سایتتون یه باغچه بزرگه. هر صفحه سایتتون هم یه گل قشنگ تو این باغچه. حالا Django sitemaps مثل یه نقشه کامل از این باغچه‌ست که به موتورهای جستجو میگه هر گل کجا قرار داره و چه ویژگی‌هایی داره. ️
این نقشه به موتورهای جستجو کمک میکنه تا راحت‌تر توی سایت شما گشت بزنن و صفحات مهم رو سریع‌تر پیدا کنن. اینجوری هم کاربران زودتر به اطلاعات دلخواهشون میرسن و هم سایتتون رتبه بهتری تو نتایج جستجو میگیره.

چرا از Django sitemaps استفاده کنیم؟

1⃣ بهبود سئو: با ایجاد یک sitemap کامل، موتورهای جستجو راحت‌تر صفحات سایتتون رو ایندکس میکنن و در نتیجه سایتتون توی نتایج جستجو بالاتر میاد.

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

3⃣ مدیریت بهتر صفحات: با استفاده از sitemaps میشه به راحتی صفحات سایت رو مدیریت کرد و صفحات اضافی یا قدیمی رو حذف کرد.

چطور Django sitemaps رو پیاده‌سازی کنیم؟ ️

1⃣ نصب پکیج: اول از همه باید پکیج django-sitemaps رو نصب کنیم. برای این کار کافیه تو ترمینال پروژهتون این دستور رو

بزنید:

pip install django-sitemaps 



2⃣ اضافه کردن به INSTALLED_APPS: بعد از نصب پکیج، باید اون رو به لیست اپلیکیشن‌های پروژه اضافه کنیم. تو فایل settings.py پروژهتون، 'django_sitemaps' رو به لیست INSTALLED_APPS اضافه کنید.

3⃣ ایجاد کلاس Sitemap: حالا باید یه کلاس از کلاس Sitemap که توی پکیج django_sitemaps تعریف شده، ایجاد کنیم. تو این کلاس، مشخص میکنیم کدوم مدل‌ها رو میخوایم توی sitemapمون قرار بدیم و چه فیلدهایی رو برای هر مدل میخوایم ایندکس کنیم.

from django.contrib.sitemaps import Sitemap
from .models import Post

class PostSitemap(Sitemap):

     changefreq = "weekly"
     priority   = 0.9

      def items(self):
           return Post.objects.all()

      def lastmod(self, obj):
           return obj.publish_date

      def location(self, item):
           return
reverse('home:post-detail',kwargs={'    slug':item.slug})
   

 
4⃣ ایجاد URL برای Sitemap: در نهایت باید یه URL برای دسترسی به sitemap ایجاد کنیم. این کار رو توی فایل urls.py پروژه انجام میدیم.

from django.contrib.sitemaps.views import sitemap from django.urls import path 
from .sitemaps import PostSitemap

sitemaps = {'posts': PostSitemap}

urlpatterns = [path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap')]

5⃣ ارسال Sitemap به موتورهای جستجو: بعد از ایجاد sitemap، آدرس اون رو به کنسول جستجوی گوگل و سایر موتورهای جستجو ارسال کنید.

⭕️ نکته: برای اینکه موتورهای جستجو به طور خودکار sitemap رو پیدا کنن، بهتره از فایل robots.txt استفاده کنید و آدرس sitemap رو داخل اون قرار بدید.

خلاصه:
خب Django sitemaps یه ابزار قدرتمند برای بهبود سئوی سایت هست. با استفاده از این ابزار، موتورهای جستجو بهتر میتونن محتوای سایتتون رو درک کنن و در نتیجه سایتتون توی نتایج جستجو بالاتر میاد.

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

بنظرتون پست بعدی راجب چی باشه؟

#Django #sitemap #seo #python #برنامه_نویسی
👍10
دوستان هرنوع پستی که میخواید رو توی کامنت بگید که بزاریم 👇
👍2
Channel photo updated
سلام رفقا 👋 لوگو جدید چطوره؟
Final Results
82%
عالیه
8%
خوب نیست
11%
قبلی بهتر بود
1
💎بست پرکتیس برای طراحی مدل های DB 💎

امروز میخوایم بریم سراغ یه موضوع خیلی مهم توی طراحی دیتابیس: بست پرکتیس ها! اینا یه سری قواعد و توصیه های طلایی هستن که اگه رعایتشون کنیم، دیتابیسمون میشه یه پایگاه داده قوی، کارآمد و قابل نگهداری.

چرا بست پرکتیس ها مهمه؟

1️⃣ کاهش خطا: با رعایت این قواعد، احتمال اینکه توی طراحی دیتابیس اشتباه کنیم خیلی کمتر میشه.

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

3️⃣ کاهش هزینه: یه دیتابیس خوب، هزینه‌های نگهداری رو کم میکنه.

4️⃣ افزایش انعطاف‌پذیری: دیتابیسی که به خوبی طراحی شده، راحت‌تر میشه تغییرات رو توی اون اعمال کرد.

حالا بیا ببینیم این بست پرکتیس ها چی هستن:

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

🧪 مثال: فرض کن یه دیتابیس برای فروشگاه آنلاین داریم. اگه اطلاعات مشتری‌ها رو به این شکل ذخیره کنیم که در هر سبد خرید، آدرس و شماره تلفن مشتری تکرار بشه، این یک طراحی بد محسوب میشه. چرا؟ چون اگه مشتری آدرسش رو تغییر بده، باید در همه سبد خریدهاش این تغییر رو اعمال کنیم که هم وقت‌گیره و هم احتمال خطا رو زیاد می‌کنه.

راه حل: بهتره اطلاعات مشتری رو در یک جدول جداگانه ذخیره کنیم و در جدول سبد خرید فقط به اون جدول ارجاع بدیم. با این کار، اگه آدرس مشتری تغییر کنه، فقط در یک جا باید اون رو ویرایش کنیم.

2️⃣ کلیدهای اصلی و خارجی: پل ارتباطی بین جداول
🔑 کلید اصلی (primary key): یک یا چند ستون در یک جدول هست که به طور منحصر به فرد هر رکورد رو شناسایی می‌کنه. مثلاً در جدول مشتری‌ها، ستون "کد مشتری" می‌تونه کلید اصلی باشه.

🗝 کلید خارجی (foreign key): ستونی در یک جدول هست که به کلید اصلی جدول دیگه ارجاع می‌ده. مثلاً در جدول سبد خرید، ستون "کد مشتری" (که به جدول مشتری‌ها ارجاع می‌ده) کلید خارجی محسوب میشه.

🧪 مثال: در مثال فروشگاه آنلاین، ستون "کد محصول" در جدول سبد خرید، کلید خارجی هست که به جدول محصولات ارجاع می‌ده. اینطوری می‌تونیم بفهمیم چه محصولاتی در هر سبد خرید وجود داره.

3️⃣ ایندکس‌ها: راه میانبر برای جستجو
ایندکس‌ها مثل فهرست کتاب‌ها عمل می‌کنن. با استفاده از ایندکس‌ها، دیتابیس می‌تونه خیلی سریع رکوردهای مورد نظر رو پیدا کنه. اما استفاده بیش از حد از ایندکس‌ها هم می‌تونه باعث کند شدن عملیات نوشتن در دیتابیس بشه. پس باید با دقت ازشون استفاده کرد.

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

4️⃣ طراحی جداول با دقت: هر جدول یک وظیفه
هر جدول باید یک وظیفه مشخص داشته باشه و داده‌های مرتبط با اون وظیفه رو در خودش ذخیره کنه. این کار باعث میشه دیتابیس ما منظم‌تر و قابل فهم‌تر باشه.

🧪 مثال بد: داشتن جدولی به نام "اطلاعات_کاربران" که هم اطلاعات شخصی کاربران، هم تاریخچه خریدهاشون و هم تنظیمات حساب کاربریشون رو ذخیره می‌کنه، یک طراحی بد محسوب میشه.

راه حل: بهتره اطلاعات شخصی کاربران رو در یک جدول، تاریخچه خریدها رو در جدول دیگه و تنظیمات حساب کاربری رو در جدول سومی ذخیره کنیم.

5️⃣ انواع داده مناسب: هر داده جای خودش
برای هر ستون باید از نوع داده‌ای استفاده کنیم که مناسب اون داده باشه. مثلاً برای ذخیره تاریخ تولد، باید از نوع داده‌ای استفاده کنیم که تاریخ رو پشتیبانی کنه مثلا DateField.

🧪 مثال: استفاده از نوع داده‌ای متنی برای ذخیره قیمت محصولات، یک اشتباه رایج هست. چون عملیات ریاضی روی داده‌های متنی قابل انجام نیست.

6️⃣ کوئری‌های بهینه: سریع و دقیق
کوئری‌های بهینه، کوئری‌هایی هستن که با کمترین منابع سیستم، به نتیجه دلخواه می‌رسن. برای نوشتن کوئری‌های بهینه، باید از ابزارهایی مثلDbug toolbar و پروفایلر استفاده کنیم.

🧪 مثال: استفاده از دستور JOIN به جای زیرکوئری‌های متعدد، معمولاً باعث نوشتن کوئری‌های بهینه‌تری میشه.


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

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

موفق و پیروز باشید!


#دیتابیس #طراحی_دیتابیس #بست_پرکتیس #برنامه_نویسی
9🔥2👍1🥴1
سلام رفقا 👋

خوشحالیم که از لوگو جدید خوشتون اومده حالا با وبسایت هایی که تم دارک دارن بیشتر حال میکنید یا تم لایت؟ داریم وبسایت نینجا لرن رو طراحی میکنیم، میخوایم نظرتونو بدونیم
Anonymous Poll
84%
تم دارک
16%
تم لایت
👍21
💎 لاگینگ (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 «دوستان اقا محمد حسین توی بحث فرانت فعالیت میکنه و کیفیت پستاش واقعا خوبه اگه دوست داشتید میتونید جوین بشید و از محتواشون استفاده کنید👌»