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
Ninja Learn | نینجا لرن pinned «سلام رفقا 👋 یه ترفند خیلی خفن پایتونی توی آخرین پست اینستامون بهتون یاد دادیم که هیچ جا پیدا نمیکنید https://www.instagram.com/reel/C-0LIyGScSL/?igsh=Ynl4Y25ub2dldGZv»
دوستان ممنون میشم با لایک و فالو کردن از ما حمایت کنید :) ❤️

@ninja_learn_ir
41
Forwarded from Python BackendHub (Mani)
بحث خوبی شد تو گروه, یکی پرسید که JIT چیه و چی کار میکنه دقیقا. ‌سعی میکنم خیلی ساده توضیح بدم که قابل درک باشه برای همه.

وقتی یه اسکریپت پایتونی رو ران می‌کنی، یه سری فایل با پسوند .pyc تو پوشه‌ی pycache ساخته میشه. اینا بایت کد هستن. بایت کد چیه؟ یه low level representation از کدی که نوشتی. بایت کد platform independent هست یعنی مهم نیست رو چی داری رانش میکنی. اما این بایت کد برای CPU قابل فهم نیست. CPU فقط ماشین کد رو می‌فهمه، یعنی همون باینری صفر و یک. پس وقتی بایت کد تولید میشه، PVM (Python Virtual Machine) میاد و بایت کد رو به ماشین کد تفسیر می‌کنه تا CPU بتونه اجراش کنه.

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

چرا کد پایتون مستقیم کد ماشین نمیشه؟ دلیلش اینه که PVM و Python runtime environment داره تو پایتون کارای دیگه‌ای هم میکنه تو ران تایم مثل مدیریت حافظه، لود کردن ماژول‌ها و پکیج‌ها و... این باعث میشه که پایتون انعطاف‌پذیر و راحت باشه، ولی خب به قیمت افت عملکرد در مقایسه با زبان های کامپایلری مثل C.


@PyBackendHub
👍6😍31
Forwarded from Python BackendHub (Mani)
۳ خط اخر رو یکم باز میکنم حس میکنم کافی توضیح ندادم (این پست دیگه خیلی ربطی به JIT نداره). راجب اینکه چرا پایتون نمیتونه به راحتی از قبل تبدیل به ماشین کد شه.

یک مثال خیلی ساده بزنم شما تو پایتون میتونید یک سورس پایتونی از اینترنت دانلود کنید, و بعد از تابع eval() استفاده کنید که درجا رانش کنه! چطور این کد میتونه تبدیل به کد ماشینی بشه با یک کامپایل مستقیما؟ موقع کامپایل هنوز مشخص نیست چی قراره دانلود شه و ران شه! این اولین خاصیت پایتونه تو انعطاف پذیریش.

دومین خاصیش داینامیک تایپ بودنشه. شما یک فانکشن دارین foo(a,b,c). اگه شما تایپ ورودی این فانکشن رو نمیدونید, نمیتونید کامپایلش کنید. ولی اگه بدونید ممکنه چه تایپ هایی باشن, میتونید برای هر combination یک نسخه متفاوت کمپایل کنید. برای همینه که زبونای statically typed راحت کمپایل میشن به کد ماشین.

این دو خصوصیت باعث میشه پایتون نتونه به راحتی مستقیم تبدیل به ماشین کد بشه. پروژه هایی هستش که اینکارو میکنن ولی با static analysis و تکنیک های دیگه با لیمیتشن های خیلی زیاد. کلا زبون های داینامیک تایپ خیلی سخت از قبل میتونن تبدیل به ماشین کد بشن‌(اگه نگم غیر ممکن) ولی زبونای استتیک تایپ خیلی راحت تر اینکارو انجام میدن.

@PyBackendHub
👍4😍31
دوستان لطفاً از این رباتا به هیچ عنوان استفاده نکنید تمام اطلاعاتتون خیلی راحت میتونه بیفته دست دیگران و خودتون میدونید چه کارایی میتونن بااین اطلاعات بکنن 😮‍💨

@ninja_learn_ir
🤯51
💎 مفهوم DNS 💎

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

حالا DNS چیه؟
به زبان ساده، DNS
که مخفف Domain Name System هست، مثل یه دفترچه تلفن برای اینترنت عمل می‌کنه.
شما وقتی می‌خواین به یه سایت سر بزنین، اسم سایت رو وارد می‌کنین، مثل google.com، ولی کامپیوترها با اسم‌های دامنه کار نمی‌کنن؛ اونا فقط آدرس‌های IP رو می‌فهمن که یه سری عددن مثل 192.168.1.1.
حالا اینجاست که DNS وارد عمل میشه و این نام دامنه رو به آدرس IP متناظر باهاش تبدیل می‌کنه.

چطور کار می‌کنه؟
وقتی شما یه آدرس وب رو توی مرورگر وارد می‌کنین، مرورگر اول از DNS می‌پرسه که «این نام دامنه به کدوم آدرس IP وصل میشه؟». DNS هم میره میگرده و آدرس IP رو پیدا می‌کنه و به مرورگر برمی‌گردونه. بعد مرورگر می‌دونه که باید به کدوم سرور وصل بشه تا سایت مورد نظر شما رو باز کنه.

حالا بریم ببینیم DNS دقیقاً چیه و چطور کار می‌کنه؟
همون‌طور که گفتم، DNS مثل دفترچه تلفن اینترنتی عمل می‌کنه. ولی بذارین یه ذره فنی‌تر بشیم.

وقتی شما یه آدرس وب، مثل www.example.com رو توی مرورگر وارد می‌کنین، این فرآیند پشت صحنه اتفاق می‌افته:

1️⃣ کاربر دامنه رو وارد می‌کنه:
شما آدرس www.example.com رو وارد می‌کنین.


2️⃣ مرورگر اول کش محلی رو چک می‌کنه:
مرورگر بررسی می‌کنه ببینه آیا قبلاً این سایت رو باز کردین و آدرس IP رو تو حافظه موقت (کش) ذخیره کرده یا نه. این کار باعث میشه سریع‌تر به سایت دسترسی پیدا کنین.

3️⃣ سوال از سیستم عامل:
اگه مرورگر نتونه IP رو توی کش خودش پیدا کنه، از سیستم عامل دستگاه میپرسه که آیا تو کش خودش داره یا نه. سیستم عامل هم ممکنه توی کش DNS خودش آدرس IP رو ذخیره کرده باشه.

4️⃣ سوال از روتر:
اگه سیستم عامل نتونه IP رو پیدا کنه، درخواست به روتر خونگی یا مودم شما میره. روتر هم ممکنه یه کش کوچیک داشته باشه.

5️⃣ ارتباط با DNS سرور:
اگه هیچ کدوم از این مراحل به نتیجه نرسه، درخواست به سمت سرور DNS که توسط ارائه‌دهنده اینترنت (ISP) شما تعیین شده ارسال میشه.

6️⃣ تحلیل نام دامنه:
سرور DNS اول از همه، دامنه سطح بالا (Top-Level Domain یا TLD)
مثل .com رو بررسی می‌کنه. هر دامنه‌ای یک Name Server داره که مسئول مدیریت اون دامنه است. برای مثال، Name Server برای .com همه دامنه‌هایی که به .com ختم می‌شن رو مدیریت می‌کنه.

7️⃣ بررسی Name Server:
سرور DNS آدرس Name Server دامنه شما (در اینجا example.com) رو از سرور TLD می‌گیره و درخواست رو به اون می‌فرسته.

8️⃣ برگشت آدرس IP:
حالا Name Server دامنه example.com آدرس IP مربوطه رو به DNS سرور برمی‌گردونه و DNS سرور هم اونو به مرورگر شما ارسال می‌کنه.

9️⃣ اتصال به وب‌سرور:
حالا مرورگر شما آدرس IP رو داره و می‌تونه به وب‌سرور مربوطه متصل بشه و صفحه وب رو دریافت کنه.


🌐 انواع رکوردهای DNS
حالا که با فرآیند تبدیل نام دامنه به آدرس IP آشنا شدیم، بذارین یه نگاهی هم به انواع رکوردهای DNS بندازیم:

1️⃣ A Record  :
این رایج‌ترین نوع رکورده که نام دامنه رو به یک آدرس IP نسخه 4 (IPv4) متصل می‌کنه.


2️⃣ AAAA Record :
این رکورد مثل A Record هست، ولی برای آدرس‌های IP نسخه 6 (IPv6) استفاده میشه.


3️⃣ CNAME Record :
این رکورد یه نام دامنه رو به یه نام دامنه دیگه هدایت می‌کنه. مثلاً می‌تونین www.example.com رو به example.com ریدایرکت کنین.


4️⃣ MX Record :
این رکورد برای سرویس‌های ایمیل استفاده میشه و مشخص می‌کنه که ایمیل‌های مربوط به یک دامنه باید به کدوم سرور ارسال بشه.

5️⃣ TXT Record :

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

🛡 امنیت و DNS
یکی از نکات مهم در مورد DNS، امنیت اونه. متاسفانه، DNS می‌تونه هدف حملات مختلفی مثل DNS Spoofing یا DNS Hijacking قرار بگیره.
در این حملات، هکرها می‌تونن ترافیک شما رو به یه سایت جعلی هدایت کنن. برای مقابله با این نوع حملات، سرویس‌هایی مثل DNSSEC (DNS Security Extensions) به کار میرن که درخواست‌ها و پاسخ‌های DNS رو با امضاهای دیجیتال (Digital signature) ایمن می‌کنن.


ادامه در پست بعدی 👇
7👌3👍1
🔬 مثال واقعی
فرض کنین می‌خواین به سایت amazon.com برین:

1️⃣مرورگر شما اول به سرور DNS مراجعه می‌کنه.

2️⃣سرور DNS بررسی می‌کنه که amazon.com رو به کدوم آدرس IP باید متصل کنه.

3️⃣آدرس IP رو به مرورگر برمی‌گردونه.

4️⃣مرورگر شما به اون آدرس IP متصل میشه و سایت آمازون رو لود می‌کنه.

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

جمع‌بندی
فهمیدیم DNS واقعاً مثل یه جادو عمل می‌کنه که کاربرها بدون اینکه نیازی به حفظ کردن آدرس‌های پیچیده داشته باشن، می‌تونن به راحتی به سایت‌ها دسترسی پیدا کنن. این سیستم پیچیده با یه سری قوانین و پروتکل‌های خاص کار می‌کنه که باعث میشه وب به شکلی که ما می‌شناسیم، وجود داشته باشه.

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

واینکه ممنون میشم اگه خوشت اومد با ریکشن زدن و فالو کردن حمایت کنی:)

#DNS #web #backend


@ninja_learn_ir
15😁1
پست جدید اینستامون راجب nodejs 🔥

https://www.instagram.com/p/C-2wPwmMBte/?igsh=MWhwMWVra3ppdTk1dg==
😁21👍1🤩1
کیفیت پستارو دوست دارید؟ 🤔
اگه پیشنهادی دارید توی کامنتا بگید 👇
Anonymous Poll
73%
عالیه 😀
22%
معمولیه 😐
0%
خوب نیست 😑
4%
اصلا خوب نیست 😬
👍41👾1
بنظرتون متن پستا کوتاه تر باشه یا همین خوبه؟🤔
Anonymous Poll
26%
کوتاه تر باشه
74%
همین خوبه
5😁1
Ninja Learn | نینجا لرن pinned «بنظرتون متن پستا کوتاه تر باشه یا همین خوبه؟🤔»
❤‍🔥1
💎 همه چیز در مورد حمله Brute Force 💎

امروز میخوام یه کم درباره یکی از خطرناک‌ترین روش‌های هک که توی دنیای وب خیلی رایجه صحبت کنم: حمله Brute Force! 😱

حالا Brute Force چیه؟ 🤔
حمله Brute Force یا همون "حمله بی‌رحمانه" 😅، یه روش ساده ولی مؤثر برای شکستن پسوردها و دسترسی به اطلاعاته. تو این روش، هکر میاد و تموم ترکیب‌های ممکن از کاراکترها رو برای یه پسورد امتحان می‌کنه تا بالاخره بتونه پسورد درست رو پیدا کنه. فکر کن یه قفل داشته باشی که هر دفعه یه عدد بهش اضافه کنی تا بالاخره باز بشه؛ Brute Force هم دقیقاً همینه.

چرا Brute Force خطرناکه؟ ⚠️
خب، بذارید راحت بهتون بگم: Brute Force اگه درست اجرا بشه، می‌تونه تقریباً هر پسوردی رو بشکنه! 😳
البته این کار ممکنه زمان‌بر باشه، ولی با قدرت پردازش کامپیوترهای امروزی، این زمان خیلی کم شده. فرض کن یکی بیاد و پسورد اکانت تو رو توی یه سایت با این روش حدس بزنه. عجب فاجعه ای 😣

روش‌های جلوگیری از Brute Force 👊
حالا که فهمیدیم این حمله چقدر خطرناکه، بیایم ببینیم چجوری می‌شه جلوی اون رو گرفت:

استفاده از پسوردهای پیچیده و طولانی 🛡️:
هرچی پسوردت پیچیده‌تر و طولانی‌تر باشه، هکر برای حدس زدنش بیشتر به دردسر می‌افته. پسوردی مثل "123456" رو ولش کن و یه چیز پیچیده‌تر مثل "P@ssw0rd123!" انتخاب کن.

فعال‌سازی محدودیت تلاش برای ورود 🚫:
بیشتر سایت‌ها امکان محدود کردن تعداد تلاش‌های ناموفق برای ورود رو دارن. مثلاً اگه کسی 5 بار اشتباه بزنه، دسترسیش به مدت چند دقیقه یا بیشتر قطع بشه. این کار سرعت حمله رو خیلی کم می‌کنه.


استفاده از CAPTCHA 🧩:
حتماً توی سایت‌ها دیدی که یه سری حروف و عدد بهت نشون می‌ده و ازت می‌خواد اونا رو وارد کنی؟ این کار برای جلوگیری از حمله‌های اتوماتیک Brute Force خیلی مؤثره.


احراز هویت دو مرحله‌ای (2FA) 🔑:
با فعال کردن 2FA، حتی اگه هکر پسوردت رو هم پیدا کنه، باز به یه کد دیگه نیاز داره که معمولاً فقط تو دسترسی داری. پس شانس موفقیت هکر تقریباً به صفر می‌رسه.


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


نتیجه‌گیری 🧠
حمله Brute Force یکی از روش‌های قدیمی ولی همچنان مؤثر برای دسترسی به اطلاعات حساسه. با اینکه این روش به ظاهر ساده‌ست، اما اگه پیشگیری‌های لازم رو انجام ندیم، می‌تونه خیلی خطرناک باشه. پس یادتون نره از پسوردهای قوی استفاده کنید، 2FA رو فعال کنید و همیشه امنیت اکانت‌هاتون رو جدی بگیرید! 🔒

ممنون میشم اگه خوشتون اومد با ریکشن زدن و فالو کردن از ما حمایت کنید :) ❤️

#امنیت_اطلاعات #brute_force #امنیت_اینترنتی


@ninja_learn_ir
🔥5👍41🏆1
دوستان یه موضوعی که خیلی توی گروه ها میبینم و بچه ها میان پیویم میگن اینه که

دست توی این کار زیاد شده
برای ما کارنیستو چجوری ما کارکنیم
و...

ببینید دوستان
اگه شما تو هر رشته ای نه تنها برنامه نویسی تو هر رشته ای
متخصص بشید و توش حرفه ای بشید همه دنبالتونن
همیشه برای ادم با سواد کارهست

مثال میزنم
شما بازار میوه رو درنظر بگیر
کلی میوه هست کلی میوه های جور واجور
مردم فقط میوه های خوب رو میخرن و بهشون اهمیت میدن
و دراخر میوه های خراب میمونه و بدرد نخور

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

امید وارم همیشه موفق باشید و توی زندگی پیشرفت کنید و سربلند باشید❤️

#موضوع_آزاد


@ninja_learn_ir
👍96🔥1👏1
💎 احرازهویت Authentication در جنگو 💎

امروز می‌خوام در مورد یکی از مهم‌ترین مباحث دنیای وب، یعنی Authentication یا همون احراز هویت در جنگو (Django) صحبت کنم. 🛡️ اگر توسعه‌دهنده وب هستیدقطعا می‌دونید که چقدر این موضوع مهمه! پس بیاید بدون معطلی بریم سر اصل مطلب! 🚀

1⃣ احراز هویت ساده (Simple Authentication) 🆔
این ساده‌ترین نوع احراز هویت توی جنگوئه. به طور پیش‌فرض جنگو یک سیستم احراز هویت داخلی داره که کاربرا رو با استفاده از نام کاربری و رمز عبور وارد سیستم می‌کنه. این روش بیشتر برای پروژه‌های کوچیک و ساده مناسبه.

چطوری پیاده‌سازیش کنیم؟ 🤔
اول باید توی تنظیمات پروژه، app مربوط به احراز هویت جنگو (django.contrib.auth) رو فعال کنید.
بعدش می‌تونید با استفاده از فرم‌های پیش‌فرض یا ساخت فرم‌های خودتون، کاربرا رو ثبت نام و وارد سیستم کنید.


2⃣ احراز هویت با توکن (Token Authentication)
🔑
این روش مخصوص زمانی هست که شما دارید یه API می‌سازید و می‌خواید کاربرانتون با استفاده از توکن بهش دسترسی پیدا کنن. توی این روش، به جای نام کاربری و رمز عبور، یک توکن به کاربر داده می‌شه که باید اون رو توی هدر درخواست‌ها قرار بده.


چطور پیاده‌سازیش کنیم؟🤔
از کتابخونه‌های مثل Django Rest Framework استفاده کنید.
بعدش با استفاده از TokenAuthentication و صدور توکن برای هر کاربر، می‌تونید این روش رو پیاده کنید.


3⃣ احراز هویت JWT (JSON Web Token
) 📜
خب JWT یه نوع خاص از توکنه که اطلاعات کاربر رو داخل خودش ذخیره می‌کنه. این نوع توکن‌ها خیلی امن و پرکاربرد هستن و به خصوص برای پروژه‌های SPA (Single Page Application) خیلی مناسبن.


چطور پیاده‌سازیش کنیم؟🤔
از کتابخونه‌های مثل djangorestframework-simplejwt استفاده کنید.
بعدش با پیکربندی صحیح، می‌تونید توکن‌های JWT رو برای کاربران صادر و اعتبارسنجی کنید.


4⃣ احراز هویت با OAuth 2.0 🌐
این روش بیشتر برای وقتی مناسبه که می‌خواید کاربرانتون با حساب‌های شبکه‌های اجتماعی یا سرویس‌های دیگه مثل گوگل و فیسبوک وارد سایت بشن. OAuth 2.0 یه پروتکل امن برای این نوع احراز هویته.

چطور پیاده‌سازیش کنیم؟ 🤔
از کتابخونه django-allauth یا social-auth-app-django استفاده کنید.
بعدش با انجام تنظیمات مربوطه، می‌تونید کاربران رو از طریق سرویس‌های مختلف احراز هویت کنید.


5⃣ احراز هویت دو مرحله‌ای (Two-Factor Authentication) 🔐
اگه می‌خواید امنیت بیشتری برای کاربران فراهم کنید، می‌تونید احراز هویت دو مرحله‌ای رو پیاده کنید. توی این روش، علاوه بر رمز عبور، یه کد تایید هم برای کاربر ارسال می‌شه که باید اون رو وارد کنه.


چطور پیاده‌سازیش کنیم؟ 🤔
از کتابخونه django-two-factor-auth استفاده کنید.
بعد از تنظیمات اولیه، می‌تونید این قابلیت رو به اپلیکیشن خودتون اضافه کنید.



جمع‌بندی 🧩
هر کدوم از این روش‌ها کاربرد خاص خودشون رو دارن و بسته به نیاز پروژه، می‌تونید یکی یا چند تا از این‌ها رو پیاده کنید. امنیت توی دنیای وب خیلی مهمه، پس به هیچ وجه ازش غافل نشید! 🕵️‍♂️

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

پست بعدی رو هم از دست ندید که می‌خوام در مورد Authorization صحبت کنم. 😉

#authentication #auth #django #backend


@ninja_learn_ir
👍103🤯1
👍5❤‍🔥1🎉1