✅دوره غیر رایگان ساخت فروشگاه اینترنتی با جنگو آپدیت شد.
اگه کد تخفیف 80 درصدی میخواهید خصوصی به @miladhzz پیام بدید.
قسمت های زیر اضافه شدند:
فصل هشتم
✔️معرفی پکیج django-allauth جهت لاگین با حساب گوگل
✔️ساخت پروژه در کنسول برنامه نویس گوگل
✔️تکمیل لاگین با حساب گوگل
چند قسمت از این دوره رو اینجا ببینید:
https://t.me/djangolearn_ir/531
https://t.me/djangolearn_ir/533
https://t.me/djangolearn_ir/573
https://t.me/djangolearn_ir/676
https://t.me/djangolearn_ir/724
https://t.me/djangolearn_ir/808
https://t.me/djangolearn_ir/830
لینک دوره در دانشجویار:
https://www.daneshjooyar.com/project-django/
اگه کد تخفیف 80 درصدی میخواهید خصوصی به @miladhzz پیام بدید.
قسمت های زیر اضافه شدند:
فصل هشتم
✔️معرفی پکیج django-allauth جهت لاگین با حساب گوگل
✔️ساخت پروژه در کنسول برنامه نویس گوگل
✔️تکمیل لاگین با حساب گوگل
چند قسمت از این دوره رو اینجا ببینید:
https://t.me/djangolearn_ir/531
https://t.me/djangolearn_ir/533
https://t.me/djangolearn_ir/573
https://t.me/djangolearn_ir/676
https://t.me/djangolearn_ir/724
https://t.me/djangolearn_ir/808
https://t.me/djangolearn_ir/830
لینک دوره در دانشجویار:
https://www.daneshjooyar.com/project-django/
Forwarded from Ninja Learn | نینجا لرن
#پست_جدید
توی پست قبلی درمورد lazy بودن کوری ست ها صحبت کردیم
⭕ توی این پست میخوایم درموردش عمیق تر بشیم
توجه❗️
تمام مثال های این پست با توجه به معماری MVT در نظر گرفته شده است.
به مثال زیر توجه کنید 👇
خب بنظرتون توی این مرحله کوری ست evaluate میشه؟ ❓
خیر هیچوقت در این مرحله evaluate نمیشه و توی تمپلیت وقتی که داریم روش یه عملیتای انجام میدیم evaluate میشه ( جلوتر توضیح میدم)
به این مثال توجه کنید 👇
همونطور که میبینید دراین کد ما اومدیم درون تمپلیت روی users حلقه for زدیم و اسامی کاربران رو گرفتیم
با توجه به lazy بودن کوری ست ها که در پست قبل توضیح دادم در مرحله حلقه زدن عملیات evaluation صورت میگیره و کوری ست تبدیل به کد sql میشه و به دیتا بیس فرستاده میشه و ریزالت رو برمیگردونه
پس بازم اینجا اثبات شد فقط وقتی کوری ست اجرا میشه که بهش نیاز پیدا کنیم
#جنگو #کوری_ست #lazy_querysets
@ninja_learn_ir
توی پست قبلی درمورد lazy بودن کوری ست ها صحبت کردیم
⭕ توی این پست میخوایم درموردش عمیق تر بشیم
توجه❗️
تمام مثال های این پست با توجه به معماری MVT در نظر گرفته شده است.
به مثال زیر توجه کنید 👇
def get_users_list(request):
users = User.objects.all()
return render(request, "panel/ users.html", {"users": users})
خب بنظرتون توی این مرحله کوری ست evaluate میشه؟ ❓
خیر هیچوقت در این مرحله evaluate نمیشه و توی تمپلیت وقتی که داریم روش یه عملیتای انجام میدیم evaluate میشه ( جلوتر توضیح میدم)
به این مثال توجه کنید 👇
{% for user in users %}
<h1> {{user.name}} </h1>
{% endfor %}
همونطور که میبینید دراین کد ما اومدیم درون تمپلیت روی users حلقه for زدیم و اسامی کاربران رو گرفتیم
با توجه به lazy بودن کوری ست ها که در پست قبل توضیح دادم در مرحله حلقه زدن عملیات evaluation صورت میگیره و کوری ست تبدیل به کد sql میشه و به دیتا بیس فرستاده میشه و ریزالت رو برمیگردونه
پس بازم اینجا اثبات شد فقط وقتی کوری ست اجرا میشه که بهش نیاز پیدا کنیم
#جنگو #کوری_ست #lazy_querysets
@ninja_learn_ir
Telegram
Ninja Learn | نینجا لرن 🥷
#پست_جدید
حتما شنیدید که کوری ست ها در جنگو تنبل/lazy هستند 🤔
⭕تواین پست میخوایم درموردش صحبت کنیم⭕
منظور ازاینکه کوری ها تنبل هستند دقیقا چیه؟ ❓
منظور از این حرف اینه که تا وقتی که واقعا به داده ها نیاز پیدا نشه ارزیابی نمیشن (کوری ست evaluate…
حتما شنیدید که کوری ست ها در جنگو تنبل/lazy هستند 🤔
⭕تواین پست میخوایم درموردش صحبت کنیم⭕
منظور ازاینکه کوری ها تنبل هستند دقیقا چیه؟ ❓
منظور از این حرف اینه که تا وقتی که واقعا به داده ها نیاز پیدا نشه ارزیابی نمیشن (کوری ست evaluate…
❤4👍4
✅در جنگو از ()timezone.now برا ی مقدار پیشفرض یه فیلد استفاده نکن.
اگه این کارو کنی جنگو warning زیر رو میده:
WARNINGS:
Profile.login_date: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use
✔️و میگه از django.utils.timezone.now استفاده کن
✔️اگه وارنینگی که میده رو نادیده بگیرید با هربار makemigrations یه فایل migrations برای شما میسازه
✔️توی استفاده هم مشکلاتی به وجود میاره و تایم ها تکراری میشن
اگه این کارو کنی جنگو warning زیر رو میده:
WARNINGS:
Profile.login_date: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use
django.utils.timezone.now
✔️و میگه از django.utils.timezone.now استفاده کن
✔️اگه وارنینگی که میده رو نادیده بگیرید با هربار makemigrations یه فایل migrations برای شما میسازه
✔️توی استفاده هم مشکلاتی به وجود میاره و تایم ها تکراری میشن
👍7❤2😁2
Forwarded from Ninja Learn | نینجا لرن (Mohammad Eslami)
#پست_جدید
💎 فیکسچر (fixure) در جنگو 💎
❓ فیکسچر چیه؟
فیکسچر یه جور دادهی از پیش تعریف شدهس که قبل از اجرای تستهامون به دیتابیس اضافه میشه. این دادهها میتونن هر چیزی باشن؛ از یه کاربر ساده گرفته تا یه محصول پیچیده توی فروشگاه آنلاینمون.
❓ چرا بهش نیاز داریم؟
1️⃣ تستهای دقیقتر: با داشتن دادههای مشخص، میتونیم تستهای دقیقتری بنویسیم و مطمئن بشیم که همه چیز طبق انتظار کار میکنه.
2️⃣ تستهای سریعتر: به جای اینکه هر بار قبل از اجرای تستها، دادههای مورد نیازمون رو به صورت دستی وارد دیتابیس کنیم، با استفاده از فیکسچر این کار رو یک بار انجام میدیم و در تستهای بعدی از همون دادهها استفاده میکنیم.
3️⃣ تکرارپذیری تستها: با استفاده از فیکسچر، میتونیم مطمئن باشیم که هر بار که تستهامون رو اجرا میکنیم، نتیجه یکسانی خواهیم داشت.
✅ ساختن یه فیکسچر
برای ساختن یه فیکسچر، یه فایل با پسوند json یا yaml ایجاد میکنیم و دادههای مورد نظرمون رو به صورت ساختیافته در اون تعریف میکنیم.
مثال با فرمت JSON:
در این مثال، ما دو رکورد برای مدلهای Product و Category تعریف کردیم.
✅ استفاده از فیکسچر در تستها
در این مثال، ما به کلاس تستمون گفتیم که قبل از اجرای هر تستی، فیکسچر products.json رو لود کنه. بعد، در تست test_product_detail، محصول با id برابر با ۱ رو پیدا میکنیم و مطمئن میشیم که نام محصول درسته.
✅ دستورات لازم و ساخت و لود کردن فیکسچر
1️⃣ ساختن یه فیکسچر با دستور dumpdata
دستور dumpdata بهت اجازه میده که دادههای موجود در دیتابیس رو به صورت یک فایل JSON یا YAML خروجی بگیری. این فایل خروجی رو میتونی به عنوان فیکسچر استفاده کنی.
2️⃣ استفاده از فیکسچر با دستور loaddata
دستور loaddata بهت اجازه میده که دادههای موجود در یک فایل فیکسچر رو به دیتابیس اضافه کنی.
✅ مثال عملی
فرض کن یه وبسایت فروشگاهی داریم و میخوایم یه تست بنویسیم که بررسی کنه آیا محصولی با نام خاص در دیتابیس وجود داره یا نه. اول از همه، با استفاده از دستور dumpdata از مدل Product یه فیکسچر میگیریم:
سپس، در تستمون، این فیکسچر رو لود میکنیم و محصول مورد نظر رو جستجو میکنیم:
⭕️ نکات کلیدی فیکسچر به زبان ساده
ساختار فیکسچر: فیکسچرت باید شبیه به همون چیزی باشه که توی دیتابیس داری. مثلاً اگه یه مدل محصول داری، فیکسچرت هم باید یه محصول رو تعریف کنه.
اسمگذاری فیکسچر: به فیکسچرت یه اسم بامعنا بده تا بفهمی توش چه دادههایی داری. مثلاً products.json یعنی توش اطلاعات محصولها هست.
مدیریت فیکسچر: وقتی تستهای زیادی مینویسی، باید یه جوری فیکسچرهات رو مرتب کنی تا گم نشی. میتونی از فولدرهای مختلف یا ابزارهای مخصوص استفاده کنی.
✅ جمعبندی
فیکسچر یه ابزار خیلی خفنه که بهت کمک میکنه تستهای بهتری بنویسی. با فیکسچر، میتونی دادههای از پیش تعریف شدهای رو به دیتابیس اضافه کنی و تست کنی که همه چیز درست کار میکنه. انگار داری یه محیط آزمایشی برای برنامهت میسازی.
⭕️ توجه: برای اطلاعات بیشتر و مثال های عملی تر، میتونید به مستندات رسمی جنگو مراجعه کنین.
#جنگو #تست #فیکسچر #برنامه_نویسی
💎 فیکسچر (fixure) در جنگو 💎
❓ فیکسچر چیه؟
فیکسچر یه جور دادهی از پیش تعریف شدهس که قبل از اجرای تستهامون به دیتابیس اضافه میشه. این دادهها میتونن هر چیزی باشن؛ از یه کاربر ساده گرفته تا یه محصول پیچیده توی فروشگاه آنلاینمون.
❓ چرا بهش نیاز داریم؟
1️⃣ تستهای دقیقتر: با داشتن دادههای مشخص، میتونیم تستهای دقیقتری بنویسیم و مطمئن بشیم که همه چیز طبق انتظار کار میکنه.
2️⃣ تستهای سریعتر: به جای اینکه هر بار قبل از اجرای تستها، دادههای مورد نیازمون رو به صورت دستی وارد دیتابیس کنیم، با استفاده از فیکسچر این کار رو یک بار انجام میدیم و در تستهای بعدی از همون دادهها استفاده میکنیم.
3️⃣ تکرارپذیری تستها: با استفاده از فیکسچر، میتونیم مطمئن باشیم که هر بار که تستهامون رو اجرا میکنیم، نتیجه یکسانی خواهیم داشت.
✅ ساختن یه فیکسچر
برای ساختن یه فیکسچر، یه فایل با پسوند json یا yaml ایجاد میکنیم و دادههای مورد نظرمون رو به صورت ساختیافته در اون تعریف میکنیم.
مثال با فرمت JSON:
[
{
"model": "myapp.Product",
"pk": 1,
"fields": {
"name": "گوشی موبایل سامسونگ",
"price": 5000000
}
},
{
"model": "myapp.Category",
"pk": 1,
"fields": {
"name": "گوشی موبایل"
}
}
]
در این مثال، ما دو رکورد برای مدلهای Product و Category تعریف کردیم.
✅ استفاده از فیکسچر در تستها
from django.test import TestCase
from .models import Product
class ProductTestCase(TestCase):
fixtures = ['products.json']
def test_product_detail(self):
product = Product.objects.get(pk=1)
self.assertEqual(product.name, 'گوشی موبایل سامسونگ')
در این مثال، ما به کلاس تستمون گفتیم که قبل از اجرای هر تستی، فیکسچر products.json رو لود کنه. بعد، در تست test_product_detail، محصول با id برابر با ۱ رو پیدا میکنیم و مطمئن میشیم که نام محصول درسته.
✅ دستورات لازم و ساخت و لود کردن فیکسچر
1️⃣ ساختن یه فیکسچر با دستور dumpdata
دستور dumpdata بهت اجازه میده که دادههای موجود در دیتابیس رو به صورت یک فایل JSON یا YAML خروجی بگیری. این فایل خروجی رو میتونی به عنوان فیکسچر استفاده کنی.
# برای خروجی گرفتن از همه مدلها به صورت JSON:Bash
python manage.py dumpdata app_name.ModelName --format json --indent 2 --output my_fixture.json
# برای خروجی گرفتن از یک مدل خاص به صورت YAML:
python manage.py dumpdata app_name.ModelName --format yaml--indent 2 --output my_fixture.yaml
2️⃣ استفاده از فیکسچر با دستور loaddata
دستور loaddata بهت اجازه میده که دادههای موجود در یک فایل فیکسچر رو به دیتابیس اضافه کنی.
# برای بارگذاری دادههای یک فایل JSON:
python manage.py loaddata my_fixture.json
# برای بارگذاری دادههای یک فایل YAML:
python manage.py loaddata products.yaml
✅ مثال عملی
فرض کن یه وبسایت فروشگاهی داریم و میخوایم یه تست بنویسیم که بررسی کنه آیا محصولی با نام خاص در دیتابیس وجود داره یا نه. اول از همه، با استفاده از دستور dumpdata از مدل Product یه فیکسچر میگیریم:
python manage.py dumpdata app_name.Product --format json --indent 2 --output product.json
سپس، در تستمون، این فیکسچر رو لود میکنیم و محصول مورد نظر رو جستجو میکنیم:
from django.test import TestCase
from .models import Product
class ProductTestCase(TestCase):
fixtures = ['products.json']
def test_product_exists(self):
product = Product.objects.get(name='گوشی موبایل سامسونگ')
self.assertIsNotNone(product)
⭕️ نکات کلیدی فیکسچر به زبان ساده
ساختار فیکسچر: فیکسچرت باید شبیه به همون چیزی باشه که توی دیتابیس داری. مثلاً اگه یه مدل محصول داری، فیکسچرت هم باید یه محصول رو تعریف کنه.
اسمگذاری فیکسچر: به فیکسچرت یه اسم بامعنا بده تا بفهمی توش چه دادههایی داری. مثلاً products.json یعنی توش اطلاعات محصولها هست.
مدیریت فیکسچر: وقتی تستهای زیادی مینویسی، باید یه جوری فیکسچرهات رو مرتب کنی تا گم نشی. میتونی از فولدرهای مختلف یا ابزارهای مخصوص استفاده کنی.
✅ جمعبندی
فیکسچر یه ابزار خیلی خفنه که بهت کمک میکنه تستهای بهتری بنویسی. با فیکسچر، میتونی دادههای از پیش تعریف شدهای رو به دیتابیس اضافه کنی و تست کنی که همه چیز درست کار میکنه. انگار داری یه محیط آزمایشی برای برنامهت میسازی.
⭕️ توجه: برای اطلاعات بیشتر و مثال های عملی تر، میتونید به مستندات رسمی جنگو مراجعه کنین.
#جنگو #تست #فیکسچر #برنامه_نویسی
Django Project
Fixtures | Django documentation
The web framework for perfectionists with deadlines.
🔥4👍3
✅دوره غیر رایگان ساخت فروشگاه اینترنتی با جنگو
اگه کد تخفیف 80 درصدی میخواهید خصوصی به @miladhzz پیام بدید.
چند قسمت رایگان از این دوره رو اینجا ببینید:
https://t.me/djangolearn_ir/531
https://t.me/djangolearn_ir/533
https://t.me/djangolearn_ir/573
https://t.me/djangolearn_ir/676
https://t.me/djangolearn_ir/724
https://t.me/djangolearn_ir/808
https://t.me/djangolearn_ir/830
لینک دوره در دانشجویار:
https://www.daneshjooyar.com/project-django/
اگه کد تخفیف 80 درصدی میخواهید خصوصی به @miladhzz پیام بدید.
چند قسمت رایگان از این دوره رو اینجا ببینید:
https://t.me/djangolearn_ir/531
https://t.me/djangolearn_ir/533
https://t.me/djangolearn_ir/573
https://t.me/djangolearn_ir/676
https://t.me/djangolearn_ir/724
https://t.me/djangolearn_ir/808
https://t.me/djangolearn_ir/830
لینک دوره در دانشجویار:
https://www.daneshjooyar.com/project-django/
🥱4👍1
این پست و کامنت هاش در مورد Logging در جنگو رو ببینید
کامنت های جالبی داره
https://www.linkedin.com/posts/hmdkhsrvee_django-logging-middleware-ugcPost-7223723826218434560-UHNU?utm_source=share&utm_medium=member_desktop
کامنت های جالبی داره
https://www.linkedin.com/posts/hmdkhsrvee_django-logging-middleware-ugcPost-7223723826218434560-UHNU?utm_source=share&utm_medium=member_desktop
Forwarded from Django Expert (Amir Motahari)
مجموعهها در پایتون
- set متدهای پرکاربرد
- frozenset
- collections.Counter
لینک ویدیو:
https://youtu.be/qeVPRvvawLM
> پلیلیست کتاب ترفندهای پایتون
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
© @DjangoEX | > Instagram <
- set متدهای پرکاربرد
- frozenset
- collections.Counter
لینک ویدیو:
https://youtu.be/qeVPRvvawLM
> پلیلیست کتاب ترفندهای پایتون
〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️
© @DjangoEX | > Instagram <
👍1
Forwarded from Python Hints
این پست رو توی کانال
Post Link
بعد یکی از دوستان نزدیکم که با تشویق من شروع به یادگیری برنامهنویسی کرده بود گفت که توی ۲-۳ سالی که کار میکنه این مورد رو ندیده و اصلا هم الان درک نمیکنه.
بنظرم طبیعی هست؛ الگوریتم
بعد ی میت گذاشتیم همینطوری باهم صحبت کنیم و رفت بحث سمت الگوریتم و ساختمان داده و ...و متوجه شدم خیلی موارد رو که بلد نیست و اونهایی هم که بلده حفظ کرده و درک درستی ازش نداره.
با اینکه در حد قبولی مصاحبهها بلد هست ولی همین ضعف باعث شده نتونه مصاحبههای با سختی بیشتر رو شرکت کنه.
از اون روز رفت تو مخم که چطوری میشه به بعضی آدمها یک منبعی رو معرفی کرد که بصورت تصویری همه چیز رو نشون بده مثلا حتی نحوه قرار گیری دیتای آرایهها توی رم و ...
منابعی که تاحالا معرفی کردم هیچکدوم این مورد رو نداره.
تا اینکه چندی پیش این مورد رو دیدم؛
Data structures and algorithms crash course with animated illustrations and off-the-shelf code
از خوبیهاش :
۱- تصویری هست
۲- کلی چشم روش هست؛ چون
۳- همیشه در دسترس هست (حتما برید روی انگلیسی مگر اینکه چینی رو خوب بلد باشید)
۴- تمام موارد پیادهسازی داره و این پیادهسازی روی چندین زبان هست
۵- پیادهسازیها قدم به قدم هست.
خلاصه این رو بکنید مرجع؛ چون بنظرم خیلی خوبه (یک سری ایرادات داره؛ چون اختصاصی پایتون نیست ولی خب توضیحاتش انقدر خوب هست که کسی که ی مقدار پایتون رو جدی گرفته متوجه بشه)
بعد به کتاب رجوع کنید و اون موضوع رو روی پایتون هم بررسی کنید.
#DataStructure #Algorithm
Rust
زدم Post Link
بعد یکی از دوستان نزدیکم که با تشویق من شروع به یادگیری برنامهنویسی کرده بود گفت که توی ۲-۳ سالی که کار میکنه این مورد رو ندیده و اصلا هم الان درک نمیکنه.
بنظرم طبیعی هست؛ الگوریتم
Red-Black
جزو مواردی هست که واقعا ساده نیست مخصوصا وقتی صحبت پیادهسازی میشه.بعد ی میت گذاشتیم همینطوری باهم صحبت کنیم و رفت بحث سمت الگوریتم و ساختمان داده و ...و متوجه شدم خیلی موارد رو که بلد نیست و اونهایی هم که بلده حفظ کرده و درک درستی ازش نداره.
با اینکه در حد قبولی مصاحبهها بلد هست ولی همین ضعف باعث شده نتونه مصاحبههای با سختی بیشتر رو شرکت کنه.
از اون روز رفت تو مخم که چطوری میشه به بعضی آدمها یک منبعی رو معرفی کرد که بصورت تصویری همه چیز رو نشون بده مثلا حتی نحوه قرار گیری دیتای آرایهها توی رم و ...
منابعی که تاحالا معرفی کردم هیچکدوم این مورد رو نداره.
تا اینکه چندی پیش این مورد رو دیدم؛
Data structures and algorithms crash course with animated illustrations and off-the-shelf code
از خوبیهاش :
۱- تصویری هست
۲- کلی چشم روش هست؛ چون
open source
هست کلی آدم خطاهاش رو میگیرند۳- همیشه در دسترس هست (حتما برید روی انگلیسی مگر اینکه چینی رو خوب بلد باشید)
۴- تمام موارد پیادهسازی داره و این پیادهسازی روی چندین زبان هست
۵- پیادهسازیها قدم به قدم هست.
خلاصه این رو بکنید مرجع؛ چون بنظرم خیلی خوبه (یک سری ایرادات داره؛ چون اختصاصی پایتون نیست ولی خب توضیحاتش انقدر خوب هست که کسی که ی مقدار پایتون رو جدی گرفته متوجه بشه)
بعد به کتاب رجوع کنید و اون موضوع رو روی پایتون هم بررسی کنید.
#DataStructure #Algorithm
Telegram
Rust for Python developers
اگر خواستید یکی رو آزار بدید
بهش بگید
Red-Black Tree
رو توی Rust پیاده سازی کنه
فکر کنم این عذاب برنامهنویسهای جهنمی باشه 😂😂
بهش بگید
Red-Black Tree
رو توی Rust پیاده سازی کنه
فکر کنم این عذاب برنامهنویسهای جهنمی باشه 😂😂
❤2👍2
این پست و کامنت هاش هم با عنوان استفاده درست از جنگو رو ببینید
کامنت های جالبی داره
https://www.linkedin.com/posts/morteza-arab-256782244_aeqagpabraepaeuaex-aehaetahyaeqabraeqaecahyaet-activity-7222568302022184960-yB3O?utm_source=share&utm_medium=member_desktop
کامنت های جالبی داره
https://www.linkedin.com/posts/morteza-arab-256782244_aeqagpabraepaeuaex-aehaetahyaeqabraeqaecahyaet-activity-7222568302022184960-yB3O?utm_source=share&utm_medium=member_desktop
👍2
Forwarded from Security Analysis
⭕️ پروژه C2 ای توسعه داده شده که BotNet های HTTP/HTTPS و WebSocket ایجاد میکند.
در سمت Backend آن با Django توسعه داده شده و چون به صورت Freamwork نبوده میتوان در پروژه های خود از این کد استفاده کنیم.
از این پروژه میتوان به جهت شبیه سازی حملات DDOS و Mass Spam و دیگر حملات این چنینی استفاده کرد.
#RedTeam #C2
@securation
در سمت Backend آن با Django توسعه داده شده و چون به صورت Freamwork نبوده میتوان در پروژه های خود از این کد استفاده کنیم.
از این پروژه میتوان به جهت شبیه سازی حملات DDOS و Mass Spam و دیگر حملات این چنینی استفاده کرد.
#RedTeam #C2
@securation
GitHub
GitHub - 44b4c0/NexusC2: Public C2 server repository for everyone.
Public C2 server repository for everyone. Contribute to 44b4c0/NexusC2 development by creating an account on GitHub.
Forwarded from TorhamDev | تورهام 😳
این سری چهارتایی مقاله از stripe خیلی خوبه و توصیه میکنم حتما بخونید.
https://dev.to/stripe/designing-apis-for-humans-object-ids-3o5a
البته یک نکته درباره این مقاله اول بگم که تو کامنتهاش هم گفتن، داخل مقاله میگه uuid گزینه بهتری هستش تا آیدی عددی که شاید از نظر امنیت بهتر باشه ولی برای پرفرمنس نه، چرا که uuid ها رندوم هستن و به خوبی index نمیشن داخل دیتابیس.
#خواندنی
@TorhamDevCH
https://dev.to/stripe/designing-apis-for-humans-object-ids-3o5a
البته یک نکته درباره این مقاله اول بگم که تو کامنتهاش هم گفتن، داخل مقاله میگه uuid گزینه بهتری هستش تا آیدی عددی که شاید از نظر امنیت بهتر باشه ولی برای پرفرمنس نه، چرا که uuid ها رندوم هستن و به خوبی index نمیشن داخل دیتابیس.
#خواندنی
@TorhamDevCH
DEV Community
Designing APIs for humans: Object IDs
Choosing your ID type Regardless of what type of business you run, you very likely require...
👍2
Forwarded from محمد لرنینگ (آموزش برنامه نویسی)
.
لینک ویدیوی جلسه ۲۶:
https://youtu.be/mWqFwJYiQgM
تو این ویدیو، شروع کردیم در مورد بک اند صحبت کردیم که چی چی هست و کجاها کاربرد داره، از FastAPI و چند فریمورک دیگه حرف زدیم و در نهایت چند خط کد با فریمورک محبوب FastAPI کد زدیم
🔔 حتما حتما یوتیوب رو فالو کنید و ویدیو رو لایک کنید و نوتیف رو روشن بزارید 🫶
https://t.me/QaDeveloper
✅ @SEYED_BAX | @MakeDeveloper
لینک ویدیوی جلسه ۲۶:
https://youtu.be/mWqFwJYiQgM
تو این ویدیو، شروع کردیم در مورد بک اند صحبت کردیم که چی چی هست و کجاها کاربرد داره، از FastAPI و چند فریمورک دیگه حرف زدیم و در نهایت چند خط کد با فریمورک محبوب FastAPI کد زدیم
https://t.me/QaDeveloper
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
✅ ای وای! پرفورمنسش افتاد!
این پست با کامنت هاش جالبه
بخشی از پست:
داستان از اینجا شروع میشه که من در تمامی شرکت هایی که کار کردم با یه چالش جدی مواجه بودن اونم اینه که بعد از یه مدت پرفورمنس سایت بخاطر دیپلوی ها و فیچرهایی که به سیستمشون اضافه می شد میومد پایین ( حالا کاری ندارم گیر از بک اندشون بود یا فرانت ) که در نتیجه از یه جایی به بعد گوگل روی سئو رنک پیج هاشونو میاورد پایین.
حالا این شرکت ها معمولا چیکار میکنن؟
میان یه اسپرینت روی این قضیه وقت میگذارن. گیر و گور کارو درمیارن تا یه جایی . دیپلوی میدن. همه چی تا یه مدت به حالت عادی برمیگرده ،۶ ماه بعد دوباره همین داستان تکرار میشه.
https://www.linkedin.com/posts/mostafadadkhah_%DA%86%D8%A7%D9%84%D8%B4-%D8%A7%DB%8C-%D9%88%D8%A7%DB%8C-%D9%BE%D8%B1%D9%81%D9%88%D8%B1%D9%85%D9%86%D8%B3%D8%B4-%D8%A7%D9%81%D8%AA%D8%A7%D8%AF-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%D8%A7%D8%B2-activity-7225427107437318144-5i8d?utm_source=share&utm_medium=member_desktop
این پست با کامنت هاش جالبه
بخشی از پست:
داستان از اینجا شروع میشه که من در تمامی شرکت هایی که کار کردم با یه چالش جدی مواجه بودن اونم اینه که بعد از یه مدت پرفورمنس سایت بخاطر دیپلوی ها و فیچرهایی که به سیستمشون اضافه می شد میومد پایین ( حالا کاری ندارم گیر از بک اندشون بود یا فرانت ) که در نتیجه از یه جایی به بعد گوگل روی سئو رنک پیج هاشونو میاورد پایین.
حالا این شرکت ها معمولا چیکار میکنن؟
میان یه اسپرینت روی این قضیه وقت میگذارن. گیر و گور کارو درمیارن تا یه جایی . دیپلوی میدن. همه چی تا یه مدت به حالت عادی برمیگرده ،۶ ماه بعد دوباره همین داستان تکرار میشه.
https://www.linkedin.com/posts/mostafadadkhah_%DA%86%D8%A7%D9%84%D8%B4-%D8%A7%DB%8C-%D9%88%D8%A7%DB%8C-%D9%BE%D8%B1%D9%81%D9%88%D8%B1%D9%85%D9%86%D8%B3%D8%B4-%D8%A7%D9%81%D8%AA%D8%A7%D8%AF-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%D8%A7%D8%B2-activity-7225427107437318144-5i8d?utm_source=share&utm_medium=member_desktop
👍3
Forwarded from Ninja Learn | نینجا لرن (Mohammad Eslami)
💎 مفهوم XFF یا همون X-Forward-For💎
امروز میخوایم در مورد یه هدر (Header) جالبی به اسم X-Forwarded-For حرف بزنیم. شاید اولش یه کم پیچیده به نظر بیاد، ولی نگران نباشید! میخوام براتون توضیح بدم که این چیز عجیب و غریبی نیست 😁
❓ حالا X-Forwarded-For چیه؟
تصور کنید شما یه نامه رو از تهران به شیراز پست میکنید. روی پاکت نامه آدرس فرستنده و گیرنده نوشته شده. حالا فرض کنید این نامه توی مسیرش از چندین پستخانه عبور کنه. هر پستخانه ای که نامه رو دست بگیره، یه برچسب کوچولو روش میچسبونه و آدرس پستخانه خودش رو هم روش مینویسه. این برچسب ها مثل یه ردیاب هستن که نشون میدن نامه از کجا اومده و به کجا رفته.
خب X-Forwarded-For هم دقیقا همین کارو برای درخواستهای اینترنتی انجام میده.
وقتی شما یه صفحه وب رو باز میکنید، کامپیوتر شما یه درخواست به سرور اون سایت ارسال میکنه. این درخواست حاوی اطلاعات مختلفی مثل آدرس IP شماست.
❓ ادرس IP چیست؟
آدرس IP مثل یه شماره شناسایی منحصر به فرد برای هر دستگاهی هست که به اینترنت متصله.
حالا فرض کنید این درخواست از چندین سرور عبور کنه.
هر سروری که درخواست رو دریافت کنه، آدرس IP خودش رو به همراه آدرس IP قبلی در یه هدر به اسم X-Forwarded-For ذخیره میکنه. اینجوری میشه فهمید که درخواست از کجا اومده و چه مسیری رو طی کرده.
❓ چرا X-Forwarded-For مهمه؟
🛡 امنیت: با استفاده از این هدر میشه به آسانی حملات هکرها رو ردیابی کرد. اگه یه هکر بخواد با استفاده از آدرس IP جعلی به یه سایت حمله کنه، با بررسی هدر X-Forwarded-For میشه آدرس IP واقعی اون رو پیدا کرد.
⚖ تعادل بار سرور(load balancing): سایتهایی که ترافیک بالایی دارن، از چندین سرور برای پاسخگویی به درخواستها استفاده میکنن. با بررسی این هدر میشه فهمید که هر درخواست از کدوم سرور پاسخ گرفته و اینجوری میشه بار کاری سرورها رو به صورت بهینه توزیع کرد.
🗺 جغرافیایی: با بررسی آدرسهای IP موجود در این هدر میشه فهمید که کاربران از کجا به سایت شما وصل میشن. این اطلاعات برای تحلیل رفتار کاربران و شخصیسازی محتوا خیلی مفیده.
✅خلاصه کلام:
هد X-Forwarded-For یه ابزار قدرتمند برای تحلیل ترافیک شبکه و افزایش امنیت سایتهاست. با استفاده از این هدر میشه به اطلاعات ارزشمندی درباره مسیر درخواستها، آدرس IP کاربران و نوع دستگاههایشون دست پیدا کرد.
#web #xff
امروز میخوایم در مورد یه هدر (Header) جالبی به اسم X-Forwarded-For حرف بزنیم. شاید اولش یه کم پیچیده به نظر بیاد، ولی نگران نباشید! میخوام براتون توضیح بدم که این چیز عجیب و غریبی نیست 😁
❓ حالا X-Forwarded-For چیه؟
تصور کنید شما یه نامه رو از تهران به شیراز پست میکنید. روی پاکت نامه آدرس فرستنده و گیرنده نوشته شده. حالا فرض کنید این نامه توی مسیرش از چندین پستخانه عبور کنه. هر پستخانه ای که نامه رو دست بگیره، یه برچسب کوچولو روش میچسبونه و آدرس پستخانه خودش رو هم روش مینویسه. این برچسب ها مثل یه ردیاب هستن که نشون میدن نامه از کجا اومده و به کجا رفته.
خب X-Forwarded-For هم دقیقا همین کارو برای درخواستهای اینترنتی انجام میده.
وقتی شما یه صفحه وب رو باز میکنید، کامپیوتر شما یه درخواست به سرور اون سایت ارسال میکنه. این درخواست حاوی اطلاعات مختلفی مثل آدرس IP شماست.
❓ ادرس IP چیست؟
آدرس IP مثل یه شماره شناسایی منحصر به فرد برای هر دستگاهی هست که به اینترنت متصله.
حالا فرض کنید این درخواست از چندین سرور عبور کنه.
هر سروری که درخواست رو دریافت کنه، آدرس IP خودش رو به همراه آدرس IP قبلی در یه هدر به اسم X-Forwarded-For ذخیره میکنه. اینجوری میشه فهمید که درخواست از کجا اومده و چه مسیری رو طی کرده.
❓ چرا X-Forwarded-For مهمه؟
🛡 امنیت: با استفاده از این هدر میشه به آسانی حملات هکرها رو ردیابی کرد. اگه یه هکر بخواد با استفاده از آدرس IP جعلی به یه سایت حمله کنه، با بررسی هدر X-Forwarded-For میشه آدرس IP واقعی اون رو پیدا کرد.
⚖ تعادل بار سرور(load balancing): سایتهایی که ترافیک بالایی دارن، از چندین سرور برای پاسخگویی به درخواستها استفاده میکنن. با بررسی این هدر میشه فهمید که هر درخواست از کدوم سرور پاسخ گرفته و اینجوری میشه بار کاری سرورها رو به صورت بهینه توزیع کرد.
🗺 جغرافیایی: با بررسی آدرسهای IP موجود در این هدر میشه فهمید که کاربران از کجا به سایت شما وصل میشن. این اطلاعات برای تحلیل رفتار کاربران و شخصیسازی محتوا خیلی مفیده.
✅خلاصه کلام:
هد X-Forwarded-For یه ابزار قدرتمند برای تحلیل ترافیک شبکه و افزایش امنیت سایتهاست. با استفاده از این هدر میشه به اطلاعات ارزشمندی درباره مسیر درخواستها، آدرس IP کاربران و نوع دستگاههایشون دست پیدا کرد.
#web #xff
👍3❤2
علی شریفی زارچی: دانشگاه شریف سال گذشته دورهی «برنامهنویسی پایتون و خلاقیت الگوریتمی» را برای هزاران دانشآموز متوسطهی سراسر کشور برگزار کرد.
تمام محتوای این دوره شامل ویدئوی کلاسها، تمرینهای نظری و عملی «به صورت رایگان» به همهی دانشآموزان ایران تقدیم میشود:
https://learn-python.ir
بیش از ۱۱۰ استاد، دانشجو و دانشآموختهی دانشگاه شریف و سایر دانشگاههای داخل و خارج ایران در تهیهی محتوا و برگزاری آن مشارکت داشتند.
علاوه بر دانشآموزان متوسطه، این دوره مناسب همهی افرادی است که میخواهند برای نخستین بار برنامهنویسی یاد بگیرند و از چالشهای زیبا لذت ببرند.
گذراندن این دوره و انجام تمرینهای نظری و عملی آن با تلفن همراه امکانپذیر است و نیازی به استفاده از لپتاپ یا کامپیوتر نیست.
صمیمانه پیشنهاد میکنیم اگر دانشآموز دبیرستان یا فردی علاقمند به یادگیری برنامهنویسی میشناسید، دوره را به او معرفی فرمایید.
تمام محتوای این دوره شامل ویدئوی کلاسها، تمرینهای نظری و عملی «به صورت رایگان» به همهی دانشآموزان ایران تقدیم میشود:
https://learn-python.ir
بیش از ۱۱۰ استاد، دانشجو و دانشآموختهی دانشگاه شریف و سایر دانشگاههای داخل و خارج ایران در تهیهی محتوا و برگزاری آن مشارکت داشتند.
علاوه بر دانشآموزان متوسطه، این دوره مناسب همهی افرادی است که میخواهند برای نخستین بار برنامهنویسی یاد بگیرند و از چالشهای زیبا لذت ببرند.
گذراندن این دوره و انجام تمرینهای نظری و عملی آن با تلفن همراه امکانپذیر است و نیازی به استفاده از لپتاپ یا کامپیوتر نیست.
صمیمانه پیشنهاد میکنیم اگر دانشآموز دبیرستان یا فردی علاقمند به یادگیری برنامهنویسی میشناسید، دوره را به او معرفی فرمایید.
👍4
Media is too big
VIEW IN TELEGRAM
✅شایستگی اتصال پایگاه داده در وب - آموزش MySql
✔️توی این ویدئو در مورد MySql صحبت می کنیم.
✔️درس پیاده سازی سیستم های اطلاعاتی و طراحی وب
پودمان 4 واحد یادگیری 6
شایستگی اتصال پایگاه داده در وب
لینک آپارات:
https://www.aparat.com/v/ezy0z22
لینک یوتیوب:
https://youtu.be/S286TFSsxj0
✔️توی این ویدئو در مورد MySql صحبت می کنیم.
✔️درس پیاده سازی سیستم های اطلاعاتی و طراحی وب
پودمان 4 واحد یادگیری 6
شایستگی اتصال پایگاه داده در وب
لینک آپارات:
https://www.aparat.com/v/ezy0z22
لینک یوتیوب:
https://youtu.be/S286TFSsxj0
❤3👍1🔥1
Forwarded from Ninja Learn | نینجا لرن (Mohammad Eslami)
💎 سایت مپ (sitemaps) درجنگو 💎
امروز میخوایم با همدیگه یکی از ابزارهای خیلی کاربردی در دنیای Django رو بشناسیم. چیزی که بهمون کمک میکنه تا سایتمون رو بهتر و سریعتر برای موتورهای جستجو بهینه کنیم.
❓ حالا Django sitemaps چیه؟
خب، فرض کنین سایتتون یه باغچه بزرگه. هر صفحه سایتتون هم یه گل قشنگ تو این باغچه. حالا Django sitemaps مثل یه نقشه کامل از این باغچهست که به موتورهای جستجو میگه هر گل کجا قرار داره و چه ویژگیهایی داره. ️
این نقشه به موتورهای جستجو کمک میکنه تا راحتتر توی سایت شما گشت بزنن و صفحات مهم رو سریعتر پیدا کنن. اینجوری هم کاربران زودتر به اطلاعات دلخواهشون میرسن و هم سایتتون رتبه بهتری تو نتایج جستجو میگیره. ✅
❓ چرا از Django sitemaps استفاده کنیم؟
1⃣ بهبود سئو: با ایجاد یک sitemap کامل، موتورهای جستجو راحتتر صفحات سایتتون رو ایندکس میکنن و در نتیجه سایتتون توی نتایج جستجو بالاتر میاد.
2⃣ افزایش سرعت لود: sitemap به موتورهای جستجو میگه کدوم صفحات مهمترن و باید زودتر بررسی بشن. اینجوری موتورهای جستجو وقت کمتری رو برای پیدا کردن صفحات مهم تلف میکنن.
3⃣ مدیریت بهتر صفحات: با استفاده از sitemaps میشه به راحتی صفحات سایت رو مدیریت کرد و صفحات اضافی یا قدیمی رو حذف کرد.
❓چطور Django sitemaps رو پیادهسازی کنیم؟ ️
1⃣ نصب پکیج: اول از همه باید پکیج django-sitemaps رو نصب کنیم. برای این کار کافیه تو ترمینال پروژهتون این دستور رو
بزنید:
2⃣ اضافه کردن به INSTALLED_APPS: بعد از نصب پکیج، باید اون رو به لیست اپلیکیشنهای پروژه اضافه کنیم. تو فایل settings.py پروژهتون، 'django_sitemaps' رو به لیست INSTALLED_APPS اضافه کنید.
3⃣ ایجاد کلاس Sitemap: حالا باید یه کلاس از کلاس Sitemap که توی پکیج django_sitemaps تعریف شده، ایجاد کنیم. تو این کلاس، مشخص میکنیم کدوم مدلها رو میخوایم توی sitemapمون قرار بدیم و چه فیلدهایی رو برای هر مدل میخوایم ایندکس کنیم.
4⃣ ایجاد URL برای Sitemap: در نهایت باید یه URL برای دسترسی به sitemap ایجاد کنیم. این کار رو توی فایل urls.py پروژه انجام میدیم.
5⃣ ارسال Sitemap به موتورهای جستجو: بعد از ایجاد sitemap، آدرس اون رو به کنسول جستجوی گوگل و سایر موتورهای جستجو ارسال کنید.
⭕️ نکته: برای اینکه موتورهای جستجو به طور خودکار sitemap رو پیدا کنن، بهتره از فایل robots.txt استفاده کنید و آدرس sitemap رو داخل اون قرار بدید.
✅ خلاصه:
خب Django sitemaps یه ابزار قدرتمند برای بهبود سئوی سایت هست. با استفاده از این ابزار، موتورهای جستجو بهتر میتونن محتوای سایتتون رو درک کنن و در نتیجه سایتتون توی نتایج جستجو بالاتر میاد.
امیدوارم این آموزش براتون مفید بوده باشه. اگه سوالی داشتین، حتما بپرسید.
بنظرتون پست بعدی راجب چی باشه؟
#Django #sitemap #seo #python #برنامه_نویسی
امروز میخوایم با همدیگه یکی از ابزارهای خیلی کاربردی در دنیای 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 #برنامه_نویسی
❤13👍4🔥3🤔1
Forwarded from Learn with Osman (Osman Makhtoom)
پست جدید من تو لینکداین در خصوص RabbitMQ
خوشحال میشم حمایت کنید و کمک کنید به دست بقیه هم برسه.
https://www.linkedin.com/posts/osman-makhtoom_rabbitmq-messaging-techtalk-activity-7226960744251043840-Eq0u?utm_source=share&utm_medium=member_android
@osmanpydev
خوشحال میشم حمایت کنید و کمک کنید به دست بقیه هم برسه.
https://www.linkedin.com/posts/osman-makhtoom_rabbitmq-messaging-techtalk-activity-7226960744251043840-Eq0u?utm_source=share&utm_medium=member_android
@osmanpydev
Linkedin
Why Message Acknowledgment in RabbitMQ is essential | Osman Makhtoomnejad posted on the topic | LinkedIn
Exploring Message Acknowledgment in RabbitMQ
As many of you know, reliable message delivery is a cornerstone of robust asynchronous systems. RabbitMQ, one of…
As many of you know, reliable message delivery is a cornerstone of robust asynchronous systems. RabbitMQ, one of…
❤2
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
💎 لاگینگ (logging) در جنگو 💎
امروز میخوایم با همدیگه یکی از ابزارهای خیلی مهم برای دیباگ کردن و پیگیری کردن اتفاقات توی برنامه هامون رو بررسی کنیم: لاگینگ.
📃 لاگینگ چیه؟ به زبون ساده، لاگینگ یعنی نوشتن یه سری اطلاعات خاص در مورد اتفاقاتی که توی برنامهمون میفته توی یه فایل یا جایی دیگه.
این اطلاعات میتونه شامل زمان وقوع اتفاق، نوع اتفاق، و جزئیات دیگه ای باشه. با داشتن این اطلاعات، ما میتونیم خیلی راحت تر مشکلات برنامهمون رو پیدا کنیم و اونها رو برطرف کنیم.
❓چرا لاگینگ توی جنگو مهمه؟ 🤔
1⃣ دیباگ کردن: وقتی برنامهمون با خطا مواجه میشه، لاگ ها بهمون کمک میکنن تا بفهمیم دقیقا کجا و چرا این خطا رخ داده.
2⃣ پیگیری عملکرد: با بررسی لاگ ها میتونیم ببینیم که برنامهمون چقدر سریع اجرا میشه و کدهای مختلف چقدر زمان میبرن.
3⃣ امنیت: لاگ ها میتونن بهمون کمک کنن تا حملات امنیتی رو شناسایی کنیم و ازشون جلوگیری کنیم.
⚙ چطوری لاگینگ رو توی جنگو تنظیم کنیم؟
1⃣ وارد شدن به settings.py: اول از همه باید به فایل settings.py پروژه خودمون بریم. این فایل جاییه که همه تنظیمات کلی پروژهمون رو انجام میدیم.
2⃣ تنظیم متغیر LOGGING: توی این فایل یه متغیر به اسم LOGGING وجود داره که یه دیکشنری هست. ما باید این دیکشنری رو به شکلی که میخوایم تنظیم کنیم. مثلا برای اینکه لاگ هامون رو توی یه فایل به اسم mysite.log ذخیره کنیم، میتونیم این کد رو به settings.py اضافه کنیم:
🧐 درک تنظیمات:
version:
نسخه لاگر
disable_existing_loggers:
اگر True باشه، لاگرهای پیش فرض جنگو غیرفعال میشن.
handlers:
اینجا تعریف میکنیم که لاگ هامون رو کجا ذخیره کنیم. مثلا توی فایل، کنسول، یا یه دیتابیس.
loggers:
اینجا مشخص میکنیم که چه ماژول هایی لاگ تولید کنن و سطح لاگشون چی باشه.
🧪 پیاده سازی لاگینگ توی کد: برای استفاده از لاگینگ توی کدهامون، از ماژول logging پایتون استفاده میکنیم. مثلا:
📊 سطح های مختلف لاگ:
🟣 DEBUG:
برای اطلاعات خیلی جزئی
🔵 INFO:
برای اطلاعات عمومی
🟠 WARNING:
برای هشدارها
🔴 ERROR:
برای خطاها
☣ CRITICAL:
برای خطاهای خیلی جدی
⭕️ نکات مهم:
سطح لاگ رو با توجه به محیطتون تنظیم کنید: مثلا توی محیط توسعه سطح لاگ رو روی DEBUG بذارید تا همه چیز رو ببینید، اما توی محیط پروداکت سطح لاگ رو روی INFO یا بالاتر بذارید.
از لاگینگ برای دیباگ کردن استفاده کنید، اما اطلاعات حساس رو لاگ نکنید.
لاگ ها رو مرتبا بررسی کنید تا مشکلات رو زودتر پیدا کنید.
✅ خلاصه: لاگینگ یکی از ابزارهای خیلی مهم برای توسعه دهندگان جنگو هست. با استفاده از لاگینگ میتونیم برنامه های با کیفیت تر و پایدارتری بسازیم.
امیدوارم این آموزش براتون مفید بوده باشه. اگه سوالی داشتید حتما بپرسید.
#جنگو #لاگینگ #توسعه_وب #پایتون
امروز میخوایم با همدیگه یکی از ابزارهای خیلی مهم برای دیباگ کردن و پیگیری کردن اتفاقات توی برنامه هامون رو بررسی کنیم: لاگینگ.
📃 لاگینگ چیه؟ به زبون ساده، لاگینگ یعنی نوشتن یه سری اطلاعات خاص در مورد اتفاقاتی که توی برنامهمون میفته توی یه فایل یا جایی دیگه.
این اطلاعات میتونه شامل زمان وقوع اتفاق، نوع اتفاق، و جزئیات دیگه ای باشه. با داشتن این اطلاعات، ما میتونیم خیلی راحت تر مشکلات برنامهمون رو پیدا کنیم و اونها رو برطرف کنیم.
❓چرا لاگینگ توی جنگو مهمه؟ 🤔
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 یا بالاتر بذارید.
از لاگینگ برای دیباگ کردن استفاده کنید، اما اطلاعات حساس رو لاگ نکنید.
لاگ ها رو مرتبا بررسی کنید تا مشکلات رو زودتر پیدا کنید.
✅ خلاصه: لاگینگ یکی از ابزارهای خیلی مهم برای توسعه دهندگان جنگو هست. با استفاده از لاگینگ میتونیم برنامه های با کیفیت تر و پایدارتری بسازیم.
امیدوارم این آموزش براتون مفید بوده باشه. اگه سوالی داشتید حتما بپرسید.
#جنگو #لاگینگ #توسعه_وب #پایتون
👍14❤3
Forwarded from TorhamDev | تورهام 😳
قسمت سوم درک بهتر ORM جنگو | کوئری روی یک میلیون رکورد دیتابیس
https://youtu.be/Wt06muNbVT0
#درک_orm_جنگو
@TorhamDevCH
https://youtu.be/Wt06muNbVT0
#درک_orm_جنگو
@TorhamDevCH
YouTube
قسمت سوم درک بهتر ORM جنگو | کوئری روی یک میلیون رکورد دیتابیس
🔥3👍1