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
This media is not supported in your browser
VIEW IN TELEGRAM
#fun


🤣🤣🤣 نکنید اقا نکنید

@ninja_learn_ir
😁6😎21👍1
2🤩1
💎 همه چیز درمورد Authorization درجنگو 💎

خب، توی پست قبلی درباره Authentication یا همون احراز هویت صحبت کردیم.
حالا نوبت به مرحله بعدی یعنی Authorization (مجوز دسترسی) رسیده 🔓 اینجا میخوایم بررسی کنیم که بعد از این‌که کاربر احراز هویت شد، چطور می‌تونیم مشخص کنیم به چه بخش‌هایی از سایت یا اپلیکیشن دسترسی داشته باشه. 🚪

1⃣ حالا Authorization چیه؟ 🤔
به طور ساده، Authorization یعنی تعیین سطح دسترسی کاربر به منابع مختلف. مثلا فرض کنید توی یه اپلیکیشن خبری دارید؛ نویسنده‌ها اجازه دارن مقاله بنویسن، ولی فقط مدیران میتونن اونا رو منتشر کنن. 📝 اینجا Authorization تعیین می‌کنه که کی به چی دسترسی داشته باشه.

2⃣ استفاده از Permissions در جنگو 🛡️
جنگو به صورت پیش‌فرض یه سیستم Permission داره که با استفاده از اون می‌تونید برای هر مدل (Model) مشخص کنید که کدوم کاربر یا گروه به چه عملیاتی دسترسی داشته باشه.

چطور پیاده‌سازیش کنیم؟ 🤔
می‌تونید از مجوزهای پیش‌فرض جنگو استفاده کنید که شامل add ، change  delete و view هستن.
برای ایجاد مجوزهای اختصاصی هم میتونید توی مدل‌ها (Model) از Meta و permissions استفاده کنید و مجوز های جدید تعریف کنید.

3⃣ ـGroup-Based Permissions 👥
یکی از امکانات عالی جنگو، سیستم گروه‌بندی کاربراست. شما می‌تونید کاربرا رو توی گروه‌های مختلف دسته‌بندی کنید و بعد براساس هر گروه، مجوزهای مختلفی بهشون بدید. مثلا یه گروه مدیران (Admins) داشته باشید که همه مجوزها رو دارن، و یه گروه کاربران عادی (Users) که دسترسی محدودتری دارن.

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

4⃣ پیاده‌سازی Authorization در API ها 🔐
اگه دارید یه API می‌سازید، می‌تونید از Django Rest Framework برای مدیریت پرمیشن استفاده کنید. DRF به شما اجازه میده از کلاس‌های Permission استفاده کنید تا کنترل کاملی روی این داشته باشید که چه کسی به چه چیزی دسترسی داره.

چطور پیاده‌سازیش کنیم؟ 🤔
می‌تونید از permissions.IsAuthenticated برای اطمینان از این‌که فقط کاربران احراز هویت شده به API دسترسی دارن، استفاده کنید.
همچنین می‌تونید مجوزهای سفارشی بسازید و ازشون استفاده کنید. مثلا permissions.IsAdminUser برای ادمین‌ها.

5⃣ ـObject-Level Permissions 🛠️
این نوع مجوزها وقتی به کار میاد که بخواید دسترسی‌ها رو بر اساس هر شیء خاص تعیین کنید. مثلا یه کاربر فقط بتونه پروفایل خودش رو ببینه و نه پروفایل بقیه کاربرا. جنگو و DRF هر دو از این نوع مجوزها پشتیبانی می‌کنن.

چطور پیاده‌سازیش کنیم؟ 🤔
برای DRF میتونید BasePermission رو کاستومایز کنید و لاجیک خودتون رو برای هر شیء پیاده کنید.
میتونید از روش‌های مختلف مثل اورراید کردن متد get_object در ویوهای DRF استفاده کنید.

6⃣ احراز هویت بر اساس Role 🏷️
یکی از روش‌های پیشرفته‌تر برای Authorization، استفاده از Role‌هاست. توی این روش، هر کاربر یه نقش یا Role داره و مجوزها بر اساس این نقش‌ها تعیین می‌شن.

چطور پیاده‌سازیش کنیم؟
می‌تونید از پکیج‌هایی مثل django-role-permissions استفاده کنید.
رول های مختلف رو تعریف کنید و به هر رول یه سری مجوز اختصاص بدید.
جمع‌بندی 🧩
فهمیدیم Authorization یکی از مهم‌ترین بخش‌های هر اپلیکیشن وبه و با استفاده از اون میتونید دسترسی کاربران رو به خوبی مدیریت کنید. امنیت همیشه باید اولویت باشه، پس حواستون باشه که مجوزها رو درست تنظیم کنید تا کسی نتونه از طریق ضعف‌های امنیتی به بخش‌های حساس دسترسی پیدا کنه. 🕵️‍♀️

امید وارم مفید بوده باشه :) ❤️

#django #backend #auth


@ninja_learn_ir
10👍3🔥2🤩1
👏4❤‍🔥1
💎 آپلود فایل توی باکت S3 در node.js 💎

امروز میخوام در مورد یکی از موضوعات پرکاربرد و جذاب در دنیای Node.js صحبت کنم: آپلود فایل با استفاده از باکت S3! 🎉

📦 چی هست این S3 و چرا باید ازش استفاده کنیم؟
باید بدونید S3 (Simple Storage Service) یکی از سرویس‌های معروف و محبوب آمازون وب سرویس (AWS) هست که به شما اجازه میده فایل‌هاتون رو روی فضای ابری ذخیره کنید. 🤓 این سرویس به خاطر قابلیت‌های زیادی مثل مقیاس‌پذیری بالا، امنیت و سرعت زیادش خیلی طرفدار داره.

فرض کن یه پروژه داری که توش کلی فایل (مثل عکس، ویدیو یا حتی فایل‌های بزرگ) باید ذخیره بشه. به جای اینکه این فایل‌ها رو روی سرور خودت نگه داری و مدام نگران فضای ذخیره‌سازی باشی، می‌تونی از S3 استفاده کنی تا همه چیز روی فضای ابری مدیریت بشه. 🚀

🎯 حالا چطور می‌تونیم با Node.js فایل آپلود کنیم؟
بریم سراغ اصل مطلب! 😊 برای آپلود فایل در S3 با Node.js چند تا مرحله باید انجام بدیم:

📥 نصب پکیج‌های مورد نیاز:
اول از همه باید پکیج‌های aws-sdk و multer رو نصب کنیم. aws-sdk کتابخانه‌ای هست که AWS رو به Node.js متصل می‌کنه و multer هم برای مدیریت فایل‌های آپلودی استفاده می‌شه.

npm install aws-sdk multer

کانفیگ AWS:
حالا باید کلاینت AWS رو کانفیگ کنیم. برای این کار نیاز به accessKeyId و secretAccessKey دارید که باید از کنسول AWS بگیرید.

const AWS = require('aws-sdk');

AWS.config.update({
    accessKeyId: 'YOUR_ACCESS_KEY_ID',
    secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
    region: 'YOUR_REGION'
});

const s3 = new AWS.S3();

🔧 ساختن تابع آپلود:
حالا بیایم یه تابع ساده برای آپلود فایل بسازیم. این تابع فایل رو از کلاینت میگیره و به S3 آپلود می‌کنه:

const uploadFile = (file) => {
    const params = {
        Bucket: 'YOUR_BUCKET_NAME',
        Key: file.originalname,
        Body: file.buffer
    };

    return s3.upload(params).promise();
};

🧾 مدیریت فایل‌های آپلودی:
از multer برای گرفتن فایل‌ها از فرم استفاده می‌کنیم. به این شکل که فایل‌ها به عنوان buffer به تابع uploadFile پاس داده می‌شن:

const multer = require('multer');
const upload = multer();

app.post('/upload', upload.single('file'), async (req, res) => {
    try {
        const result = await uploadFile(req.file);
        res.send(result);
    } catch (error) {
        res.status(500).send(error);
    }
});

توی این کد، وقتی کاربر فایلی رو آپلود می‌کنه، ما از طریق multer اون فایل رو می‌گیریم و با استفاده از aws-sdk اونو به S3 ارسال می‌کنیم.

💡 نکات اضافی و پیشنهادها

🛡 ایمن‌سازی: حواستون باشه که accessKeyId و secretAccessKey رو توی کد قرار ندید. به جای اون‌ها از متغیرهای محیطی (environment variables) استفاده کنید.

📟 استفاده از presigned URLs: اگه می‌خواید کاربر مستقیماً از کلاینت خودش فایل رو آپلود کنه، می‌تونید از presigned URLs استفاده کنید که امنیت و عملکرد بهتری داره.

🔬 مانیتورینگ و مدیریت فایل‌ها: با استفاده از امکاناتی مثل CloudWatch یا S3 Events می‌تونید عملیات‌های مختلف روی فایل‌ها رو مانیتور کنید.
امیدوارم این آموزش به دردتون بخوره و بتونید به راحتی فایل‌هاتون رو با Node.js توی S3 آپلود کنید.


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

#node.js #s3 #aws #clound_storage

@ninja_learn_ir
6🥰1
https://t.iss.one/+td1EcO_YfSphNTlk

دوستان این لینک گروهه میتونید توش جوین شید و چت بکنید و سوالاتونو بپرسید یا ... هرکار دیگه ای
👍21😁1
💎 کلید مخفی (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 ساخته میشه، به طور خودکار یه کلید مخفی منحصر به فرد برای راحتی کارتون ایجاد میکنه.

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

#جنگو
5🔥3👍2
دوره DRF بالاخره منتشر شد 🥳

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

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

@ninja_learn_ir
🎉121👎1🔥1😡1
Forwarded from Sadra Codes
پشمام. Hey رنک ۳ پروداکت روزه. 😐
41
Sadra Codes
پشمام. Hey رنک ۳ پروداکت روزه. 😐
دوستان یه هل بدید میشه نفر اول 😁

@ninja_learn_ir
👌42
❤‍🔥4👍2👎1
💎 آپلود فایل در S3 با استفاده از جنگو 💎

امروز قراره درباره یکی از موضوعات پرکاربرد و جذاب توی دنیای جنگو صحبت کنیم: آپلود فایل با استفاده از باکت S3! 🎉

📦 باکت S3 چیه و چرا باید ازش استفاده کنیم؟
باکت S3 یا همون Simple Storage Service یکی از سرویس‌های محبوب آمازون وب سرویس (AWS) هست که بهت این امکان رو میده فایل‌هات رو توی فضای ابری ذخیره کنی. این سرویس به خاطر ویژگی‌هایی مثل مقیاس‌پذیری بالا امنیت قوی و سرعت زیاد خیلی طرفدار داره.
یه مثال بزنم
فرض کن یه پروژه جنگویی داری که توش کلی فایل مثل عکس، ویدیو یا حتی فایل‌های حجیم باید ذخیره بشن. به جای اینکه این فایل‌ها رو روی سرور خودت نگه داری و نگران فضای ذخیره‌سازی باشی، می‌تونی از S3 استفاده کنی تا همه چیز توی فضای ابری مدیریت بشه. 🚀

🎯 حالا چطور می‌تونیم توی جنگو فایل هارو روی باکت S3 آپلود کنیم؟

برای آپلود فایل‌ها در S3 با جنگو، چند تا مرحله رو باید انجام بدیم:

📥 نصب کتابخانه‌های مورد نیاز:
اول از همه باید کتابخانه‌های django-storages و boto3 رو نصب کنیم. django-storages واسه اتصال جنگو به S3 و boto3 برای تعامل با AWS استفاده می‌شه.

pip install django-storages && boto3

تنظیمات AWS در پروژه جنگو:
حالا باید توی فایل settings.py تنظیمات AWS رو اضافه کنیم. برای این کار به AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY نیاز داری که می‌تونی از کنسول AWS بگیری.

AWS_ACCESS_KEY_ID = 'کلید دسترسی‌ات'
AWS_SECRET_ACCESS_KEY = 'کلید محرمانه‌ات'
AWS_STORAGE_BUCKET_NAME = 'اسم باکتت'

AWS_S3_REGION_NAME = 'منطقه جغرافیایی S3'
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

🔧 تنظیمات پیشرفته S3:
می‌تونیم تنظیمات بیشتری رو برای بهینه‌سازی آپلود و دسترسی به فایل‌ها اضافه کنیم:

AWS_QUERYSTRING_AUTH = False
AWS_DEFAULT_ACL = None
AWS_S3_FILE_OVERWRITE = False
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}


- AWS_QUERYSTRING_AUTH:
لینک‌های فایل‌هات بدون امضای موقت ساخته می‌شن.

-
AWS_DEFAULT_ACL:
سطح دسترسی پیش‌فرض باکت رو اعمال می‌کنه.

-
AWS_S3_FILE_OVERWRITE:
اگر فایل جدیدی با همون نام آپلود بشه، فایل قبلی حذف نمی‌شه.

📂 آپلود فایل:
حالا هر وقت که بخوای فایلی رو آپلود کنی، به جای اینکه روی سرور ذخیره بشه، به صورت مستقیم به S3 ارسال می‌شه. خیلی راحته، نه؟ 😎 البته توی جنگو انقدر راحته😅

🧾 تنظیم مسیرهای فایل:
در نهایت می‌تونیم مسیرهای مربوط به فایل‌های استاتیک و مدیا رو هم به S3 متصل کنیم:


AWS_LOCATION = 'media'

STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/static/'

MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{AWS_LOCATION}/

💡 نکات اضافی و پیشنهادها:

🛡 ایمن‌سازی
:
هیچوقت AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY رو توی کد قرار نده. بهتره از متغیرهای محیطی (Environment Variables) استفاده کنی تا امنیت اطلاعاتت حفظ بشه.
📟 استفاده از presigned URLs:
اگه می‌خوای کاربرها مستقیم از سمت کلاینت فایل‌ها رو آپلود کنن می‌تونی از presigned URLs استفاده کنی که هم امن‌تره و هم سریع‌تر.
🔬 مانیتورینگ و مدیریت فایل‌ها:
با استفاده از سرویس‌هایی مثل CloudWatch یا S3 Events می‌تونی عملیات‌های مربوط به فایل‌ها رو بهتر مدیریت کنی.

امیدوارم این آموزش برات مفید بوده باشه :) ❤️

#django #s3 #aws #cloud_sto


@ninja_learn_ir
👍9🔥3👎2
Forwarded from MIXXHOODMEME (CharismaticDog)
🤣11👍2😁2
MIXXHOODMEME
Photo
😂
🤣2😁1
Forwarded from Python BackendHub (Mani)
آیا می‌دونستید از هر ۵۰ تا رزومه فقط یکیش مصاحبه می‌گیره؟ آیا می‌دونستید که تجربه و دانش شما لزوماً به معنای رزومه‌ی بهتر نیست؟ و اینکه خیلی از مهندسای نرم‌افزار با تغییر رزومشون تونستن درآمدشون رو چند برابر کنن؟

خب، من یه راه‌حل دارم براتون! چند وقت پیش من یه ریپو داشتم که الان ۳۰۰ ستاره گرفته و توش به تکنیک‌های نوشتن رزومه پرداخته بود. حالا وقت گذاشتم و اون رو به Mkdocs تبدیل کردم تا خوندنش راحت‌تر بشه. کلی قسمت رو آپدیت کردم، مثال‌های بیشتر و نمودار و رفرنس‌های جدید اضافه کردم، و مطالب رو خیلی مرتب‌تر کردم.

لینک ریپو
لینک داکیومنشن جدید

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


@PyBackendHub
👏6
#fun


اره داشتم از ایران میگفتم

@ninja_learn_ir
🤣101🤔1🤯1