جنگولرن
3.78K subscribers
287 photos
74 videos
31 files
553 links
آموزش Django و بستگان
Download Telegram
Forwarded from Ninja Learn | نینجا لرن (Javad Moradkhah)
💎 کلید مخفی (SECRET KEY) در جنگو به زبان ساده 💎

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

وقتی یه پروژه جدید با django-admin startproject میسازید، جنگو بصورت خودکار یه کلید مخفی تولید میکنه و تو تنظیمات پروژه قرارش میده.

این کلید یه رشته‌ی بی‌معنیه و نباید باهاش مثل یه متن یا داده‌ی دیگه رفتار کنید. هر وقت می‌خواین ازش استفاده کنید، باید با دستور force_str() یا force_bytes() اونو به فرمت مورد نظرتون تبدیل کنید.

⭕️ اگه این کلید رو تنظیم نکنید، جنگو اصلا بالا نمیاد!

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

این کلید برای چی استفاده میشه؟

1⃣ تمام جلسات (Session) به غیر از اونایی که از کش (Cache) استفاده می‌کنن.

2⃣ تمام پیام‌ها (Message) که از روش‌های ذخیره‌سازی مثل CookieStorage یا FallbackStorage استفاده می‌کنن.

3⃣ توکن‌های بازیابی رمز عبور (Password Reset)

4⃣ هر جایی که امضای امنیتی نیاز باشه (مگر اینکه کلید دیگه‌ای تنظیم شده باشه)

اگه کلید مخفی رو عوض کنید، تمام موارد بالا دیگه کار نمی‌کنن. برای همین، موقع عوض کردن کلید، کلید قبلی رو به طور موقت تو تنظیمات SECRET_KEY_FALLBACKS قرار بدید تا مشکلی پیش نیاد.

⭕️ این نکته رو هم یادتون باشه که کلید مخفی برای رمز عبور کاربرها استفاده نمیشه و عوض کردن اون تاثیری روی رمزها نداره.

فایل پیشفرض settings.py که با django-admin startproject ساخته میشه، به طور خودکار یه کلید مخفی منحصر به فرد برای راحتی کارتون ایجاد میکنه.

امیدوارم براتون مفید واقع بوده باشه 🌹

#جنگو
12👍6
This media is not supported in your browser
VIEW IN TELEGRAM
🔸 دیکشنری‌های تو در تو و فایل با فرمت جِیسون (JSON)

🔗 برش‌هایی از جلسه 183 دوره صفر تا قهرمانیِ پایتون

🔗 مشاهده 5 فصل اوّل (56 جلسه - رایگان)

🔗 خرید کامل دوره جهت دسترسی به کل محتوا

🔸 با خرید این دوره، شما مادام العمر، به محتوای دوره و آپدیت‌های آینده دسترسی خواهید داشت!

🔸 با خرید این دوره، پی‌دی‌اف جذاب تمام اسلایدها دراختیار شما قرار خواهد داده شد.

🔸 با خرید این دوره شما به بیش از 400 جلسه آموزشی دسترسی خواهید داشت.

🔸 با خرید این دوره شما به بیش از 100 فایل تمرین از مبتدی تا پیشرفته دسترسی خواهید داشت.

🔸با خرید این دوره شما به گروه VIP دوره اضافه خواهید شد و به طور 24 ساعت با مدّرس دوره ارتباط خواهید داشت.

🔗 izlearn.ir 🧡🤝🏼
🔥21
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
دوره DRF بالاخره منتشر شد 🥳

توی این دوره از مباحث شروع می‌کنیم و قدم به قدم وارد دنیای API‌های پیشرفته می‌شیم، مفاهیمی مثل Serialization، Authentication، Viewsets و بسیاری دیگه رو به‌صورت کاربردی یاد می‌گیری. هر جلسه با دقت و وسواس طراحی شده تا مطمئن بشیم که نه تنها مفاهیم رو می‌فهمی، بلکه آماده‌ای اون‌ها رو توی پروژه‌های واقعی‌ات پیاده‌سازی کنی. 💻🔗

https://youtube.com/playlist?list=PLq3tK5gKk3-11_jwdZ_yB8iqdS1q0OfXS&si=RnNUGYgOtN9U018R

@ninja_learn_ir
👍12
Forwarded from آکادمی دکتر مس‌فروش (Ali Mesforush)
سلام.
متاسفانه سایت مکتب‌خونه، دوره پایتون من را که قرار بود همواره به صورت رایگان در اختیار عموم باشد به عنوان دوره پلاس عرضه کرده و به فروش می‌رساند.
من اعلام می‌کنم که فروش این دوره بر خلاف قرار من با مکتب خونه بوده است. قرار من با مکتب خونه به این شکل بود که فقط کوییزها و تمارین قابل مشاهده نباشد(من در کوییزها و تکالیف نقشی ندارم) ولی تمام درسهای من به شکل رایگان باقی بماند.
من هیچ وجهی تاکنون از مکتب‌خونه یا هرجای دیگری بابت آموزشهای خود دریافت نکرده‌ام.

کل این دوره در یوتیوب کماکان به صورت رایگان قابل مشاهده است و همواره رایگان باقی خواهد ماند.
https://youtube.com/playlist?list=PLkwcg2bJtvvYqkyhUeoCLrcHqtXpRLdHu&si=DQgdbW2sNJImLCGg

لطفا این پست را در گروههای دیگر به اشتراک بگذارید.
28👍1
Forwarded from Python BackendHub (Mani)
دیشب تو گروه بحث بود که من اینترن هستم و چیکار کنم که شغل پیدا کنم یا رزومه‌ام بیشتر دیده بشه. تو پیوی هم خیلیا سوال می‌پرسن که چطور بدون تجربه کاری اولین شغلشون رو بگیرن. ببین، همه شرکتا دنبال کسی می‌گردن که واقعاً یک مهارت رو بلده. حالا شاید بگی من ۴ سال دانشگاه رفتم، ۱۰ تا پروژه تمرینی هم تو گیت‌هاب گذاشتم، پس چرا قبولم نمی‌کنن؟ ولی باید بدونی که تعریف "بلد بودن" اینجا متفاوته.

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

مثلاً یه بازی بود قدیما تو ایران به اسم "تراوین". یه نقشه ۴۰۰ در ۴۰۰ داشت (مختصات منفی هم داشت) یعنی ۱۶۰۰۰ خونه. هر کاربر که ثبت‌نام می‌کرد، یه خونه تو نقشه می‌گرفت که می‌شد دهکده اصلیش. اولین شرط بازی این بود که دو دهکده نمی‌تونن تو یه مختصات باشن. خب، اینجا می‌تونستی یه تیبل با ۱۶۰۰۰ خونه بسازی و هر بار که کاربر ثبت‌نام کرد، یه مختصات خالی بهش بدی. به این روش میگن whitenoise sampling
تا اینجا پروژه تمرینی تموم میشه. ولی پیچیدگی از اینجا شروع میشه که بیزنس متوجه میشه کاربرا تو کل نقشه پخش شدن، بعضیا چسبیدن به هم، بعضیا دورن. حالا بیزنس میگه برای بیشتر کردن هیجان بازی، باید کاربرا رو نزدیک هم نگه داری. برای همین، مثلاً به جای ۱۶۰۰۰ خونه، ۴۰۰ خونه مرکزی رو در نظر می‌گیری و وقتی نصفش پر شد، میری سراغ ۱۶۰۰ خونه. به این روش میگن progressive sampling.
مشکل بعدی اینه که کاربرا خیلی بهم چسبیدن و این باعث میشه هیجان بازی زیادی زیاد شه و اول بازی همه به هم حمله کنن، که این خودش باعث میشه خیلیا همون اول بازی رو ول کنن. حالا بیزنس می‌خواد یه فاصله حداقلی بین دهکده‌ها بذاری. اینجا به روش blue sampling می‌رسی.

می‌بینی؟ یه سیستم ساده چطور با دوتا نیاز بیزنسی که اول مشخص نبود، پیچیده شد؟ این مثال رو زدم که بگم یه پروژه مثل فروشگاه زدن اصلاً چشمگیر نیست. با همونم شاید شغل بگیری، ولی اگه می‌خوای سریع‌تر شغل پیدا کنی، برو یه پروژه استارت بزن که واقعاً به دردت بخوره و یه مشکلی که داری رو حل کنه.
پس من میگم طبق قانون gall سیستم complex ای که کار کنه به دنیا نمیاد, بلکه سیستم ساده ای بود که کار میکرد و به سیستم complex بلوغ پیدا کرده. یک مقاله خیلی قشنگ راجب همین قانون.
مثال؟ یه نگاه به گیت‌هاب من بنداز. همه پروژه‌هام اینطوریه. از لینکدین کراولر گرفته تا کلودفلیر کراولر و aioclock. همه برای این ساخته شدن که یه مشکلی که داشتم رو حل کنن.

@PyBackendHub
👍75👏1
سلام به همه. گاهی اوقات پیش میاد که دوستان کدهاشون رو برای من می فرستن و میگن نظر بده. و اگه نکته ای هست بهم بگو و... اگه توی کانال پروژه های دوستان رو بزارم (با رضایت خودشون) بررسی می کنید و نظر می دید؟
Final Results
23%
دیدن نتایج
41%
بله. حتما
7%
نه. وقت نمی کنم
24%
بله. اگه حال داشته باشم
4%
نه. من رایگان به کسی راهنمایی نمیدم
2%
گزینه مد نظر من توی اینا نیست. لذا کامنت/پیام میدم
👍21👎1
جنگولرن
سلام به همه. گاهی اوقات پیش میاد که دوستان کدهاشون رو برای من می فرستن و میگن نظر بده. و اگه نکته ای هست بهم بگو و... اگه توی کانال پروژه های دوستان رو بزارم (با رضایت خودشون) بررسی می کنید و نظر می دید؟
خب دوستان
پیرو نظرسنجی بالا 👆🏻

هر کسی تمایل داره کدهاش توسط اعضای کانال جنگولرن بررسی بشه.
✔️و ظرفیت دریافت انتقادات مهلک رو داره (که باعث پیشرفت میشه قطعا)

به صورت خصوصی با من در ارتباط باشه. آیدی من @miladhzz

✔️بعضی کدهارو هم می تونیم به صورت "برنامه نویس ناشناس" قرار بدیم، که هر کسی بتونه توی این حرکت شرکت کنه.
✔️و حتی بعضی نظرات هم می تونید خصوصی بفرستید و من به عنوان "منتقد ناشناس" زیر پروژه مورد نظر قرار بدم.

هر نظری یا پیشنهادی در این مورد دارید به @miladhzz پیام بدید
👍4
اولین پروژه برای حمله 😂

با fastapi ساختش. که من بلد نیستم.

اگه نظری دارید و نمیخواهید توی کامنت های این پست بنویسیدش خصوصی برام بفرستید. آیدی من @miladhzz

نکته: هر نظری اوکیه. فقط بی احترامی یا تحقیر و امثالهم نباشه. ممنون

✔️توضیحاتش:
این یکی از اولین پروژه هایی هست که زدم با fastapi و کوچیک هست با این حال مشتاقم دوستان نظر بدن و اگه جای رشد یا اصلاح داره بهم بگن ❤️

https://github.com/meower1/Warpgen
👍41
💎 ابزار Django debug toolbar 💎
امروز می‌خوایم دربارهٔ یه ابزار فوق‌العاده برای دیباگ کردن توی پروژه‌های جنگویی صحبت کنیم: Django Debug Toolbar. این ابزار می‌تونه بهتون کمک کنه تا جزئیات دقیق درخواست‌ها، کوئری‌های پایگاه داده، قالب‌ها و خیلی چیزای دیگه رو ببینید و مشکلات پروژه‌تون رو سریع‌تر پیدا و برطرف کنید. توی این پست قراره قدم به قدم نحوهٔ نصب و استفاده از این ابزار رو توضیح بدم. 🚀


1. نصب Django Debug Toolbarبرای شروع، باید Django Debug Toolbar رو نصب کنید :
این ابزار به‌راحتی از طریق pip قابل نصب هست. کافیه ترمینال رو باز کنید و این دستور رو وارد کنید: 💻

pip install django-debug-toolbar


با این کار، پکیج مورد نیاز نصب میشه.

2. اضافه کردن به تنظیمات پروژه  :
حالا باید Django Debug Toolbar رو به تنظیمات پروژهٔ جنگوییتون اضافه کنید. برای این کار، فایل settings.py رو باز کنید و این کدرو رو به تنظیمات اضافه کنید: 🛠️

اضافه کردن به INSTALLED_APPS:
INSTALLED_APPS = [
    ...
    'debug_toolbar',
]


اضافه کردن به MIDDLEWARE:

MIDDLEWARE = [
    ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
]


با این کار، Django Debug Toolbar به پروژه‌تون اضافه می‌شه و میتونید ازش استفاده کنید. 🎉
3. تنظیم آیپی‌های مجازبرای اینکه این ابزار بتونه توی مرورگر نمایش داده بشه، باید آیپی‌هایی که برای دیباگ تولبار مجاز هستن رو تنظیم کنید. معمولاً برای توسعه توی لوکال از 127.0.0.1 استفاده می‌کنیم. بنابراین، این خط رو به settings.py اضافه کنید: 🌐

INTERNAL_IPS = [
    '127.0.0.1',
]


این تنظیمات به تولبار میگه که فقط وقتی از این آیپی درخواست میاد، نمایش داده بشه. 👀

4. اضافه کردن URLهای مربوطه حالا باید URLهای مربوط به Django Debug Toolbar رو به پروژه‌تون اضافه کنید. برای این کار، فایل urls.py رو باز کنید و این خطوط رو اضافه کنید: 🌍

django.conf import settings
from django.conf.urls import include
from django.urls import path

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns


این کار باعث می‌شه که وقتی پروژه توی حالت DEBUG هست، تولبار فعال بشه و URLهای مربوط به اون هم در دسترس باشن. 🔧

5. استفاده از Django Debug Toolbar حالا دیگه کارمون تمومه! کافیه سرور جنگو رو دوباره راه‌اندازی کنید و یکی از صفحات پروژه‌تون رو باز کنید. اگه همه چیز درست پیش رفته باشه، یه نوار ابزار (Toolbar) در سمت راست صفحه نمایش داده می‌شه.
این نوار ابزار اطلاعات خیلی مفیدی دربارهٔ درخواست HTTP، کوئری‌های پایگاه داده، قالب‌ها، تنظیمات و موارد دیگه بهتون نشون میده.

مثلاً با استفاده از این ابزار می‌تونید ببینید چه کوئری‌هایی به پایگاه داده زده شده، چقدر زمان برده و جای بهینه‌سازی داره یا نه.
همچنین میتونید اطلاعات مربوط به درخواست‌ها و پاسخ‌های HTTP رو به‌دست بیارید و از نحوهٔ پردازش درخواست‌ها در سمت سرور مطلع بشید. 🔍

جمع‌بندی
فهمیدیم Django Debug Toolbar ابزاری قدرتمنده که میتونه خیلی بهتون کمک کنه تا پروژه‌هاتون رو بهینه تر کنید و مشکلات رو سریع‌ تر پیدا کنید.
پیشنهاد میکنم حتماً امتحانش کنید و ببینید چقدر کارتون رو راحت‌تر می‌کنه. 💪

دراینده یه ویدیو هم درمورش ضبط میکنیم

امید وارم براتون مفید بوده باشه :)

@ninja_learn_ir
4👍3
Forwarded from Golem Course
یک توصیه دوستانه


همیشه، چه در محیط کاری و چه در محیط دانشگاهی، یک سند از تمام فعالیت‌ها و کارهایی که انجام داده‌اید را مانند یک دفترچه خاطرات داشته باشید. در انگلیسی به این سند Career Journal یا Professional Development Log می‌گویند.


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


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

@golemcourse
👍18👏7🔥2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
چطور برای یک ربات تلگرام از زرین پال، درگاه پرداخت گرفتم ؟

من یک ربات تلگرام داشتم مینوشتم که نیاز به درگاه پرداخت داشتم، رفتم سراغ سایت زرین پال و بعد از لاگین خواستم برم تیکت بدم که آیا به ربات تلگرام هم درگاه میدید ؟ که یک بخشی دیدم که چطور برای اپلیکیشن یا ربات میتونید درگاه بگیرید

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

خب من حوصله نوشتن کد برای سایت نداشتم🥲 ولی چند روز قبلش یک دامنه خریده بودم برای رباته گفتم شاید لازم بشه، باید چیکار میکردم ؟
رفتم سراغ هوش مصنوعی claude.ai و دیدم که شماره تلفن مجازی گوگلم رو قبول نمیکنه، از سایت نامبرلند یک شماره ۷ هزار و ۵۰۰ تومنی برای claude.ai خریدم و رفتم توش ثبت نام کردم

به claude.ai با پرامپت فارسی گفتم که یک سایت با html css bootstrap میخوام که در مورد چنین چیزی یکسری توضیحات بده و توی یکسری کارت نشونش بده و از اموجی های مرتبط هم استفاده کنه و ... با تشکر ازش کد رو بهم داد و رفتم یک پروژه چند خطی fastapi زدم که تمپلت هام رو لود کنه (چون نمیخواستم سایت استاتیک باشه رفتم سراغ fastapi ، چون که باید کالبک برگشتی از درگاه پرداخت هم هندل کنم)

خب کد رو زدم و خواستم ببرم روی سرور ران کنم که ...... ای دل غافل، پورت های ۸۰ و ۴۴۳ اشغال هستن و اگر میخواستم توی وب سرور دست ببرم خیلی زمان میبرد

پروژه رو روی پورت 7575 ران کردم و رفتم سراغ کلادفلر و توی بخش DNS یک رکورد @ زدم روی دامنه و IP سرور رو بهش دادم، از بخش Rules وارد بخش Origin Rules شدم و یک رول جدید تعریف کردم

از این قسمت : When incoming requests match…
مقدار Field رو گذاشتم روی Hostname و توی بخش Value آدرس دامنه رو زدم

پایینترش از قسمت Destination Port گزینه Rewrite to رو زدم و پورت 7575 رو وارد کردم، بعدش هم رول رو ذخیره کردم

خب سایت اومد بالا و از طریق دامنه در دسترس بود، بدون اینکه من روی پورت 80,443 ران کنم

رفتم سراغ زرین پال و دامنه رو ثبت کردم که بهم درگاه بده، اما سریع درخواستم رد شد 😢

تیکت زد و گفت enamad نداری ولی ناراحت نباش که میتونی از لینک زیر یک مبلغی پرداخت کنه (یک کد تخفیف هم داد) و ما خودمون برات میگیریم، مبلغ رو (با تخفیف ۳۰۰ هزار تومان) پرداخت کردم و اطلاع دادم، فرداش بهم اعلام کردن که فلان کد رو توی title سایتت بصورت موقت بزار تا enamad تایید بشه، این وسط ها هم چندتا تماس باهام گرفتن که یک قسمتی گفت این شماره ای که توی زرین پال وارد کردی از دسترست خارج شده ؟ گفتم اره و زحمت کشیدن و تغییرش دادن برام(با ایمیل لاگین میشدم)

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

@SEYED_BAX
👍14
توی برنامه نویسی زیادی خسیس نباشید

اگه ذهنیتتون به سمتی بره که همیشه در حال محاسبه باشه چه حرکتی بزنم که حافظه کمتر و سرعت بیشتری داشته باشه توی باتلاق میفتید و قدرت ساختن یه سیستم بزرگ و انعطاف پذیر رو از دست میدید.

بعضی مواقع انقدری به سمت الگوریتم میریم که داریم به کلیت سیستم آسیب میزنیم مثلا قراره یه دیتایی ارسال کنیم بجای اینکه به این شکل ارسال کنیم

{"name":"linuxor","type":"channel"}

میایم یه صرفه جویی کثیف میکنیم

["linuxor",2]

ما اینجا توی حافظه صرفه جویی کردیم ولی هر جایی بخوایم از این دیتا استفاده کنیم باید بدونیم ایندکس صفرم name هست و ایندکس یکم type و عدد 2 هم برای type یعنی channel این یعنی نیاز به مستندات بیشتر.

درسته حافظه کمتری مصرف کردیم ولی قدرت خوانایی کد رو آوردیم پایین در واقع با بهتر کردن یه بخش جزئی سیستم به کلیت سیستم آسیب زدیم، و اگه این کارو هی توی بخش های مختلف سیستم تکرار کنیم در نهایت به جایی میرسیم که دیگه صرفه نداره سیستم رو توسعه بدیم.
👍42
خیلی وقتا برای ما پیش میاد که تو یه برنچی کار میکنیم که میخوایم با main/master مرجش کنیم ولی کس دیگه‌ای اول مرج میکنه برنچشو و ما conflict می‌خوریم.
حالا وقتی میخوایم کانفلیکت‌ها رو حل کنیم می‌تونیم برنچ main رو با برنچ خودمون merge کنیم یا برنچ خودمون رو rebase کنیم به main جدید.

اینکه کدومش خوبه کدومش نه، جوابش بستگی داره‌س!
تو تیم‌هایی که جونیور زیاد دارن توصیه می‌شه مرج کنید و تموم. اینطوری تاریخچه پیچیده‌تری دارید (چون چرا یهو main تو یه برنچ مرج شده) ولی مجیک خاصی اتفاق نمی‌افته.
از طرفی rebase باعث می‌شه که یه تاریخچه شبیه‌سازی شده و جدید به وجود بیاد که توش کامیت‌های برنچ جدید شما انگار بعد از آخرین کامیت main به وجود اومدن! برای کسی که بعدا نگاه کنه فهمش راحت تره ولی نکته اینه که چنین چیزی اصلا وجود نداشته و ممکنه مشکل لاجیکی تو کد ایجاد کنه.
تو این ویدیو این بحث رو خیلی خوب در قالب یه مکالمه توضیح دادن. توصیه می‌کنم ببینید.
https://www.youtube.com/watch?v=7gEbHsHXdn0
👍3
💎 شورت کات ها درجنگو 💎
توی این پست میخوام درمورد یکسری شورتکات هایی که کمتر کسی بهشون توجه میکنه رو معرفی کنم

1⃣ render_to_string 🧩
این شورتکات یه پله بالا تر از render هست. اگه می‌خوای تمپلیت رو به یه رشته (string) تبدیل کنی، مثلا برای ارسال ایمیل یا ساختن پیام خاص، render_to_string کارت رو راه میندازه. خیلی شیک و مجلسی می‌تونی تمپلیت رو رندر کنی و به جای HTML کامل، فقط رشته رو داشته باشی:

from django.template.loader import render_to_string

def send_email():
    message = render_to_string('email_template.html', {'key': 'value'})
    # حالا می‌تونی message رو به عنوان متن ایمیل بفرستی


2⃣ resolve_url 🔗
اگه تا حالا از reverse استفاده کردی، این یکی هم خیلی شبیه به اونه ولی یه خورده هوشمندتر. resolve_url می‌تونه هم نام ویو رو به URL تبدیل کنه و هم خودش چک می‌کنه که اگه ورودی URL باشه، مستقیم همون رو برگردونه. پس دیگه نیاز نیست نگران باشی چی بهش می‌دی:

from django.shortcuts import resolve_url

def my_view(request):
    url = resolve_url('some-view-name-or-url')
    # ادامه کارا


3⃣  HttpResponsePermanentRedirect 🚦
شاید با HttpResponseRedirect آشنا باشی، ولی این یکی یه Redirect دائمی (کد 301) برمی‌گردونه. این وقتی خوبه که می‌خوای URL جدید رو دائمی کنی و به موتورهای جستجو بگی که این مسیر دیگه همیشه اینجاست:

from django.http import HttpResponsePermanentRedirect

def my_view(request):
    return HttpResponsePermanentRedirect('/new-url/')


4⃣ Http404 🚫
اگه دوست داری یه ارور 404 رو مستقیم دستی بندازی، Http404 بهترین گزینه‌ست. این طوری می‌تونی خودت خیلی شیک کنترل کنی که کجاها ارور 404 داده بشه:

from django.shortcuts import Http404

def my_view(request):
    if not some_condition:
        raise Http404("این صفحه وجود نداره!")
    # ادامه کارا


5⃣ get_current_site 🌍
اگه تو پروژه‌های پیچیده‌تر می‌خوای بدونی که کاربر الان تو کدوم سایت یا دامنه قرار داره (مثلا تو پروژه‌هایی که از multi-site استفاده می‌کنن)، get_current_site خیلی کاربردیه:

from django.contrib.sites.shortcuts import get_current_site

def my_view(request):
    current_site = get_current_site(request)
    # حالا می‌تونی با current_site هر کاری کنی


این شورتکات‌ها می‌تونن واقعاً تو پروژه‌های پیچیده‌تر جنگویی به کارت بیان و کارت رو راحت تر کنن.

امیدوارم این لیست براتون مفید باشه ✌️

#Django #Python #کدنویسی #شورتکات #توسعه_وب #برنامه_نویسی


@ninja_learn_ir
15👍2🔥1
یه مشکلی که همیشه باهاش سروکله می‌زنیم، اینه که دقیقاً چه فایل‌ها و پوشه‌هایی رو باید توی .gitignore بذاریم؟ 🤔

خب، من یه راه‌حل توپ برات دارم! برو به سایت gitignore.io و اونجا اسم تکنولوژی‌ای که باهاش کار می‌کنی، مثلاً Django، رو وارد کن. این سایت خودش یه لیست از فایل‌هایی که باید توی .gitignore بذاری بهت میده.

با این کار، دیگه لازم نیست نگران باشی که چه فایل‌هایی به گیتت اضافه شدن! راحت و بی‌دردسر.

#gitignore #ترفند


@ninja_learn_ir
🔥4👍3👏3
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
سلام دوستان
همون‌طور که میدونید عکس بالا سخت ترین کار برای هر دولوپری هستش 😁
خیلی وقتا اون ترکیب بندی کلمات توی ذهن نمیاد، خیلی وقتا طولانی میشه متنش، حتی بعضی وقت ها نمی‌دونیم این تغییر که دادیم دقیقا چه نوعیه، feat, ref, chore و ...

این شد من یک برنامه کوچیک و جمع و جور نوشتم که بعد از اینکه فایل هاتون رو به stage اضافه کردید، با اجرای این برنامه توی دایرکتوری پروژه تون، از مدل Gemini-1.5-flash استفاده می‌کنه و بهتون چند تا commit message بر اساس تغییراتتون پیشنهاد میده

این لینک گیت هاب پروژه هست و ممنون میشم اگه خوشتون اومد با star دادن من رو خوشحال کنید:

https://github.com/ali-hv/comsu

همچنین اگه ایده ای براش دارید که می‌تونه بهترش کنه، ممنون میشم اگه میتونید pr بزنید یا بهم بگید تا من اعمال کنم.

#پست_حمایتی

@SEYED_BAX
🔥13👍6👏3
💎 مشکل همزمانی یا همون Concurrency Problem  💎

امروز می‌خوایم یه موضوع خیلی مهم و جذاب رو با هم موشکافی کنیم:
مشکل همزمانی یا همون Concurrency Problem 🤓 شاید اسمش به گوشتون خورده باشه، ولی اگه دقیق‌تر بشناسیدش، می‌فهمید که چرا این موضوع این‌قدر تو دنیای برنامه‌نویسی مهمه.

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


مشکل از کجا شروع میشه؟ 😬
مشکل وقتی پیش میاد که چند تا ترد (Thread) یا پردازش (Process) به یه منبع مشترک دسترسی پیدا می‌کنن. مثلاً فرض کنید دو تا ترد همزمان دارن یه متغیر رو آپدیت می‌کنن. اینجاست که ممکنه مقدار نهایی اون متغیر چیزی که انتظار داشتیم نباشه و این یعنی Race Condition 🏁


مثال عملی Race Condition 🛠️
فرض کنید یه اپلیکیشن بانکی دارید که باید موجودی حساب کاربر رو مدیریت کنه. حالا دو تا ترد مختلف می‌خوان همزمان این موجودی رو آپدیت کنن. مثلاً یه ترد داره پول به حساب اضافه می‌کنه و ترد دیگه داره از حساب برداشت می‌کنه. اگه این دو تا ترد همزمان و بدون هماهنگی دقیق اجرا بشن، ممکنه موجودی حساب به‌طور نادرست محاسبه بشه 😱 این اتفاق دقیقاً مثالی از Race Condition هست.

راه‌حل‌ها چی هستن؟ 🔧
خب حالا که مشکل رو فهمیدیم، بیایید ببینیم چجوری می‌تونیم جلوی این مشکلات رو بگیریم:

1️⃣  Locks (قفل‌ها) 🛡️:
یه راه‌حل معمول استفاده از قفل‌هاست. وقتی یه ترد می‌خواد به یه منبع مشترک دسترسی پیدا کنه، اول اون رو قفل می‌کنه. اینجوری بقیه تردها باید صبر کنن تا اون ترد کارش رو تموم کنه و قفل رو آزاد کنه. این کار می‌تونه از به‌هم‌ریختگی جلوگیری کنه، ولی خودش یه چالش دیگه به نام Deadlock ایجاد می‌کنه، جایی که دو یا چند ترد منتظر قفل‌های همدیگه هستن و هیچ‌کدوم نمی‌تونن کارشون رو پیش ببرن 😩

2️⃣  Atomic Operations (عملیات اتمی) 💥:
این عملیات‌ها طوری طراحی شدن که یا کامل انجام می‌شن یا اصلاً انجام نمی‌شن. یعنی وسطشون هیچ ترد دیگه‌ای نمی‌تونه دخالت کنه. مثلاً اضافه کردن یه مقدار به یه متغیر می‌تونه یه عملیات اتمی باشه.

3️⃣ Synchronization (همگام‌سازی) :
با همگام‌سازی می‌تونید مطمئن بشید که یه ترد قبل از اینکه ترد دیگه کارش تموم بشه، کاری رو شروع نکنه. این کار معمولاً با استفاده از دستوراتی مثل synchronized در جاوا یا پایتون انجام میشه.

4️⃣ Thread Pools (مجموعه تردها) 🏊:
استفاده از Thread Pool‌ها می‌تونه به مدیریت بهتر تردها کمک کنه. اینجوری تعداد تردها محدود میشه و از مشکلاتی مثل Overhead جلوگیری می‌کنید.

مشکلات ناشی از راه‌حل‌ها 🤯

حالا که از راه‌حل‌ها گفتیم، یه نکته خیلی مهم رو هم باید اضافه کنم: همه این روش‌ها مشکلات خودشون رو دارن. مثلاً استفاده زیاد از قفل‌ها می‌تونه کارایی برنامه رو کاهش بده، چون تردها باید منتظر بمونن تا قفل آزاد بشه. از طرف دیگه، اگه قفل‌ها رو درست مدیریت نکنید، ممکنه برنامه‌تون دچار Deadlock بشه و کلاً قفل بشه 😵

نتیجه‌گیری 🎯
مشکل همزمانی یه موضوع پیچیده و حساس تو برنامه‌نویسیه که اگه درست مدیریت نشه، می‌تونه مشکلات بزرگی رو ایجاد کنه. باید همیشه به این فکر کنید که چطور می‌تونید از منابع مشترک بهینه استفاده کنید، بدون اینکه برنامه‌تون دچار مشکلاتی مثل Race Condition یا Deadlock بشه. پس دفعه بعدی که داشتید یه برنامه چندتردی نوشتید، حتماً به این نکات فکر کنید و مطمئن بشید که بهترین راه‌حل رو انتخاب کردید

مرسی که تا اینجا همراه من بودید، امیدوارم این توضیحات براتون مفید بوده باشه. اگه سوال یا نظری دارید حتماً تو کامنتا بنویسید 😁✌️

#Concurrency #برنامه_نویسی #مشکل_همزمانی #RaceCondition #Deadlock #Synchronization #Threading



YouTube | Instagram | Group


@ninja_learn_ir
👍101🔥1
Forwarded from ITShield
دوره های🔥 رایگانی 🔥که در حال برگزاریه و تو کانال @itshield داره قرار میگیره:

⭐️دوره  اسمبلی (به هدف مقدمه برای مهندسی معکوس و تحلیل بدافزار)
https://t.me/itshieldassembly
⭐️دوره رایگان پایتون برای نفوذگر سطح مقدمات
https://t.me/itshield/1452
⭐️دوره  پایتون برای تست نفوذ پیشرفته (دوره مقدماتیش تموم شده که تو همین کانال  @itshield قرار گرفته)
https://t.me/PythonForPentester
⭐️دوره برنامه نویسی سی پلاس پلاس (به هدف ابزار امنیتی نوشتن)
https://t.me/CPlusPlus4Pentester
⭐️ دوره جرم شناسی ویندوز (For 500)
https://t.me/for500
⭐️ دوره اتوماسیون صنعتی
https://t.me/ICS_ITShield

😎پکیج رایگان ccna
https://t.me/itshield/1322
🤓پکیج رایگان MCSE
https://t.me/itshield/1326
🤓دوره رایگان ISMS
#isms
🥸دوره رایگان مقدمات SOC
#soc
🥸مینی دوره مهندسی اجتماعی
#مهندسی_اجتماعی
🥸 دوره جمع آوری اطلاعات برای تست نفوذ وب
#web_recon
🔥ماژول دوم دوره CEH
#CEH
یه سری دوره دیگه هم هست  که باید سرچ بزنین پیدا کنین
نکته هزینه شرکت در این دوره ها اینه که روی لینک زیر کلیک کنین و فاتحه برای عزیزان من بفرستین :
https://fatehe-online.ir/g/13486
🤓یه سری دوره و مباحث آموزشی رایگان دیگه هم هست که با سرچ و ... تو کانال بدست میاد
👆اینها رو تا میتونین نشر بدین تا کسی بخاطر یادگیری مقدمات هزینه نکنه
رایگان بودن دوره ها باعث نشده سطحی تدریسشون کنم و واقعا به اندازه دوره تجاری و حتی گاهی بیشتر بهشون اهتمام داشتم و دارم
👍1
Forwarded from Django Expert (Majid A.M)
مقاله جدیدم در وبسایت داکبورد با موضوع نکات امنیتی که باید در جنگو رعایت کنیم منتشر شد✌️❤️💣

برای مشاهده کلیک کنید

امروزه جنگو یک فریم‌ورک محبوب وب است که توسط بسیاری از برنامه نویسات برای ساخت وب اپلیکیشن‌های امن و مقیاس‌پذیر استفاده می‌شود و از آن در پروژه های بسیار بزرگی مانند اینستاگرام استفاده میشود🔥🔥

در این مقاله، به بررسی نکات امنیتی که باید در پروژه های جنگویی خود رعایت کنیم میپردازیم تا بتوانیم اپلیکیشن های تحت وب خود را تا سطح بالایی ایمن و از داده های مربوط به آن حفاظت کنیم👌🤌

@shahriaarrr12
@duckboardnet
👍3🔥1
کد تخفیف ۸۰ درصدی

دوره غیر رایگان ساخت فروشگاه اینترنتی با جنگو

اگه کد تخفیف 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/
3