جنگولرن
3.82K subscribers
287 photos
74 videos
31 files
557 links
آموزش Django و بستگان
Download Telegram
https://www.youtube.com/watch?v=vPIvIoPu2co

سومین قسمت دوره آموزش مقدماتی DRF یا همون Django rest framework 🧠.

تو این قسمت بیشتر با فانکشن بیس آشنا میشیم API ساخت آبجکت رو مینویسیم. با postman کار میکنیم و نگاهی به متد ها مختلف http میندازیم و سعی میکنیم غیر از DRF چیزهای دیگه ای هم یاد بگیریم 🤝


امیدوارم از این دوره چیزها مفید و باحالی یاد بگیرید❤️🫵

با معرفی دوره به دستانتون باعث حمایت و در نتیجه دوره و آموزش ها بیشتر بشید🥹❤️‍🔥

💬 join -> @TorhamDevCH
4👍1
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و یکم - ساخت اولین ریپازیتوری

توی این قسمت در مورد سورس کنترل یا ورژن کنترل ها تحقیق کردیم و یکم تاریخچه شون رو بررسی کردیم. فهمیدیم که SVN و Git و TFS و... وجود داره. بعدش در مورد گیت هاب و گیت لب هم مطالعه کردیم. در ادامه برای اینکه یه محیط واقعی رو شبیه سازی کنیم git رو روی یک ویندوز۷ نصب کردیم و از صفر شروع کردیم به کار با گیت. بعدش با git gui و git bash آشنا شدیم. در ادامه ریپازیتوری خودمون رو به اسم basic-programming ساختیم و با فایل gitignore هم آشنا شدیم. بعدش رفتیم سراغ ریموت شدن به یه ریپازیتوری و دیدم که یکم سخته. لذا آسون ترین روش رو استفاده کردیم و کدهامون رو به گیت وصل کردیم. خیلی مختصر با دستور clone و status و commit و push هم آشنا شدیم و در ادامه گیت رو توی پایچارم فعالسازی کردیم. در نهایت تغییراتی روی پروژه اعمال کردیم و commit و push کردیم. یه بار هم از دستور revert استفاده کردیم و در نهایت rollback رو هم یاد گرفتیم.

لینک آپارات:
https://www.aparat.com/v/YSyCg
لینک یوتیوب:
https://youtu.be/yQ9v9fkdMDM
👍2
آیا همیشه بهتره از آخرین نسخه پایتون برای همه پروژه ها استفاده کنیم؟
نظر چند تا از دوستان با تجربه در این مورد:

✔️یکسری پکیج هایی که اپدیت ندادن از ۳.۹ به ۳.۱۰ نیاز به یکسری تغییرات ریز دارن که باید فورک کنی دستی اپدیت کنی. ولی من خودم از ۳.۱۰ استفاده میکنم همه جا

✔️چون رو ۳.۱۰ یک تایمی انقدر سر پکیج ها ارور خوردم اومدم ۳.۹ همچی اوکی بود و اینکه الان دیفالت ۳.۱۰ وصله اوکی، ولی قدیمی ها روی ۳.۸ و ۳.۹ موندن دیگ

✔️تقریبا تمام پروژه هایی که تجاری هستن پایتون ۳.۸ و ۳.۹ استفاده میکنم. پروژه های استارتاپی و شخصی و ... آخرین نسخه پایتون (فکرکنم ۳.۱۱) برای من اینطوریه. روی همین ۳.۸ و ۳.۹ تا حالا چندین بار سر package conflict سرویس شدیم جرات نداریم بالاتر ببریم توی پروژه هایی که حساسن

✔️ببین من معتقدم که بسته به نیازت باید بری جلو و میدونم این خیلی کلیشه ای هست ولی اگر کاری نداشته باشم و لنگ نسخه بالا تر نباشم ۳.۹ ولی مثلاً من الان تفاوت سرعتم با ۳.۱۰ مشهوده و نیاز دارم سریع تر باشم توی یه پروژه دیگه با ۳.۱۰ میرم جلو

🙏🏻 شما هم نظر خودتون رو بدید (خصوصی هم بگید اوکیه). نظرات بقیه رو هم به کامنت ها اضافه میکنم
🔥5
با استفاده از سایت https://www.mockaroo.com/ می تونیم دیتاست تصادفی با تنوع حدود ۱۶۰ نوع دیتا تایپ و خروجی با فرمت SQL ,JSON , CSV و .... ایجاد کنیم. برای پر کردن دیتابیس با داده های فیک میتونه مناسب باشه.
البته با پکیج های factory_boy و faker هم میتونیم همین کارهارو انجام بدیم. اما به قول یکی از همکاران این سایت user friendly هست.
👍141
یه پست (سوال) لینکدین از Sahar Farahzad در مورد DRF. جالبه + چندتا از نظرات پست هم توی کامنت ها میزام
لینک پست:
https://www.linkedin.com/posts/sahar-farahzad-7b7559ba_django-rest-swagger-220-activity-7030204542608637952-IcHA?utm_source=share&utm_medium=member_desktop

سلام دوستان.
دوستان جنگو کار یه سوال ازتون دارم:
کسی میدونه چطور میشه داکیومنت swagger و برای جنگو بهینه کرد؟
من یه سری راهکار پیدا کردم اما بازم خوب نیست. مثلا اگه توی ویو کامنت بذاریم
"""
list:
my title

my description
"""
این میاد برای Get عنوان و توضیحات میذاره. نکته اش اینه که حتما یه خط بینش فاصله باشه تا تشخیص بده اولیه عنوان و دومیه توضیحات هست. اما خب فرض کن همینجا برای create و update و partial_updat و ... هم بذاری. اونوقت تو api اصلا چیز قشنگی نشون نمیده و همه یه خط درمیون فاصله هست. خیلی بد میشه.
سوال دومم اینه که چطوری میشه example ها رو درست کرد؟
دو نوع example داریم:
1. Parameters
2. Responses
یه سری جاها به جای اینکه توی example آبجکت و نشون بده، یک استرینگ فقط برای id داره در حالی که توی api آبجکت هستش.
یه راهکار پیدا کردم که جواب نداد گویا واسه ورژن های قدیمی هست. مثلا:
"""
parameters:
-name: user
type: string
"""
اینجا برعکس انجام دادم. انتظار داشتم user که آبجکت هست تبدیل به id که استرینگ هست بشه.

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

لینک هایی که خوندم اینا مهمترینهاش بودن:

https://lnkd.in/e7YkdtNK

https://lnkd.in/eeuSRGNM

https://lnkd.in/ek5ZD29S

این باید چیز خوبی باشه اما نتونستم خوب بفهممش:

https://lnkd.in/ej6WMv4i
👍4
به کانال جنگولرن از ۱ تا ۵ چه امتیازی میدید؟ (واقعی باشه لطفا)
Anonymous Poll
10%
1
9%
2
22%
3
26%
4
34%
5
👍9🤮4
Forwarded from Milad Hatami
چندتا از تجربه مصاحبه های من که توی ویرگول منتشر کردم.
خیلی مصاحبه رفتم. فقط اینارو حال داشتم بنویسم (و یادم مونده چی گفتن)

https://vrgl.ir/9GU9J

https://vrgl.ir/XZeyE

https://vrgl.ir/fSgl0

https://vrgl.ir/b0JcD

https://vrgl.ir/OfRCp

https://vrgl.ir/t8h16

https://vrgl.ir/siEuO
👍8🙏4
یک سوال #مصاحبه دیگه
از کانال https://t.iss.one/pytens
Core Python

این سوالات برای هر موقعیت شغلی پایتون پرسیده می‌شه، سوال از تجربه شخصی دوستان توی مصاحبه هست که بنظرم سوال خیلی خوب و جالبی اومد
سطح : mid-level

یک کلاس برای تولید اعداد رندم بنویس :
کلاس رو توی ۳ حالت پیاده سازی کن :
1- Sequence
2- Iterator
3-Iterable

ازونجایی که کانال جای پیاده سازی نیست، سعی کنید فقط بگید تفاوت این ۳ از نظر کد چی هست !؟
مهمترین ویژگی‌هایی که یک کلاس باید داشته باشه تا توی یکی ازین دسته‌بندی ها قرار بگیره ؟

جواب:
تفاوت‌ها :
Sequence :
توی پیاده سازی و استانداردش میگه که sequence باید ۲ تا متد رو حتما داشته باشه :
__len__, __getitem__
اگر این ۲ مورد رو پیاده سازی کنید قطعا sequence رو دارید.

Iterator:
۳ تا و
یژگی اصلی داره طبق تعریف پروتکل توی پایتون
۱- فقط و فقط یکبار قابل استفاده هست ینی بعد از اینکه بار اول روش loop بزنید دیگه نمی‌تونید اینکار رو بکنید یا مقدار خالی بر میگردونه یا ارور و باید دوباره تعریف بشه توی توابع داخلی پایتون تابع
open()
اینطور هست.
۲- حتما باید متد __iter__ رو داشته باشه و این متد خودش رو برمیگردونه معمولا (ینی یک Iterator)
۳- متد __next__ براش تعریف میشه

Iterable :
۱- برخلاف Iterator با یکبار تعریف چندین بار میشه استفاده‌اش کرد بعنوان مثال تابع
range()
توی خود پایتون بریزیدش توی یک متغییر و بیش از ۱ بار روش loop بزنید هربار خروجی درست رو می‌گیرید

۲- شامل متد __iter__ میشه ولی خودش رو قطعا بر نمیگردونه و فقط و فقط یک iterator رو بر میگردونه
۳- متد __next__ براش پیاده سازی نمیشه چون روی خودش قرار نیست loop بزنید

بخش داکیومنت مربوط به این بحث :
Python docs
11🤮7👍1
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و دوم - ignore کردن فایل commit شده

در شروع این ویدئو میخواستیم ببینم که جلسه قبل چکار کردیم که با مشکل پوش شدن تنظیمات pycharm مواجه شدیم. یعنی تنظیمات پایچارم روی سیستم خودمون داشت به گیت منتقل میشد و ایرادش توی کار تیمی مشخص میشه. ابتدا تلاش کردیم که به gitignore اضافه اش کنیم. ولی مشکل همچنان وجود داشت. برای رفع این مشکل با دستوراتی مثل git status, git rm --cached, git commit, git push, git pull , git add آشنا شدیم. بعدش یاد گرفتیم چطور از سایت گیت هاب فایل حذف کنیم و کامیت کنیم. در ادامه یا گرفتیم که چه وقتهایی باید کامیت کنیم و چه فایل هایی رو باید با همدیگه commit کنیم. یه اشاره هایی هم به branch و merge داشتیم و فهمیدیم که شرکت های برنامه نویسی برای مدیریت پروژه و نحوه commit کردن ها، اصول خودشون رو دارن. در انتهای ویدئو هم یه باگ رو برطرف کردیم.

لینک آپارات:
https://www.aparat.com/v/Yl0gC
لینک یوتیوب:
https://youtu.be/ewHoQZw_1m4
👍51
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و سوم - ارث بری template در جنگو

در ابتدای این ویدئو توی سایت w3schools لاگین کردم و پروفایل و بقیه قسمت های دیگه اش رو بررسی کردم. توی این بررسی با مفهوم sub-domain آشنا شدیم. بعد از اون رفتیم توی داکیومنت های جنگو و در مورد template inheritance یا ارث بری تمپلت ها در جنگو مطالعه کردیم و در ادامه یه فایل html با اسم account_base.html ساختیم و تمپلت های لاگین و ثبت نام رو طوری تغییر دادیم که از این تمپلت ارث بری کنن و در ادامه همین کار با مفهوم extends و block هم آشنا شدیم. البته حین اعمال این تغییرات خودم یکم قاطی کردم ولی زود متوجه داستان شدم :)

لینک آپارات:
https://aparat.com/v/Avjl3
لینک یوتیوب:
https://youtu.be/jj_GMTkd9EI
👍3👎1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (Seyed Mohammad Khoshnava)
📌 مراحل ارسال کد otp و احراز هویت آن

ارسال کد :
شماره تلفن رو چک میکنم که آیا در دیتابیس چنین اکانتی بن/حذف شده یا نه
یک داکیومنت برای otp به شکل زیر در نظر میگیرم

class OTPDocument(Document):
code = fields.StringField()
contact = fields.StringField()
expire_at = fields.LongField()
retry = fields.IntField()
created_at = fields.DateTimeField(default=datetime.datetime.utcnow)

فیلد کد : حاوی کدی که قراره ارسال کنم
فیلد کانتکت : حاوی ایمیل یا شماره تلفنی که قراره بهش کد ارسال کنم
فیلد تاریخ انقضا : زمان منقضی شدن کد
فیلد تعداد تلاش : تعداد دفعاتی که کد برای ورود چک میشه و اشتباه زده شده
فیلد تاریخ ساخت : جهت حذف خودکار توسط مونگو (بعد از یک ساعت توسط ایندکس expireAfterSeconds دلیتش میکنم)


چرا بعد یکساعت منقضی میکنم ؟ که اگر تعداد تلاش رفته باشه بالا بازم بعد یکساعت بتونه درخواست بده(صفر بشه یعنی)

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

کد رو برای کاربر ارسال میکنم (پیامک یا ایمیل) و بهش ایدی دیتابیس (مونگو یک ایدی ۳۲ کاراکتری داره)
اگر دیتابیس مونگو نیست یا نیاز به امنیت بیشتر هست یک فیلد بزارید و یک کد ۳۲ کاراکتری جنریت کنید و بدید دست کاربر

تو مرحله بعدی کاربر اون کد جنریت شده مرحله قبل یا ایدی دیتابیس مونگو رو ازش میگیریم و کد هم دریافت میکنیم (با شماره سرچ نمیزنیم توی دیتابیس . با اون کد چک میکنیم)

احراز هویت کد :

اگر کد جنریت شده (۳۲ کاراکتری ) اشتباه باشه درخواستش رو رد میکنم
اگر کد جنریت شده درست باشه ولی با کد otp اشتباه داده بشه توی دیتابیس تعداد retry رو میبرم بالا

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

اگر زمان اکسپایر گذشته باشه درخواستش رد میکنم

باقی مراحل مربوط به ساخت توکن یا سشن جهت ورود …

⚠️ تعداد درخواست در هر ساعت روی این متد ها لیمیت میشه بر اساس ای پی و ایدی دیوایس
🚫 از نظر من امنه. خوشحال میشم اگر باگی بگید
🖥 @SEYED_BAX
👍1🙏1
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
بریم سراغ پرتکلهای کامپیوتری، یا شاید بهتره بگیم پرتکلهای شبکه‌ای.
Network protocols
اما قبل از اینکه برم سراغش، یه کوشولو راجع به لایه‌های شبکه میخوام صحبت کنم.

شبکه‌کار ها، برای اینکه علم شبکه رو توی کامپیوتر راحت تر توضیح بدن، یسکری لایه‌های انتزاعی توی شبکه متصور میشن و توی اون لایه‌ها شروع میکنن به توضیح دادن بقیه مسائل.

وقتی میگیم انتزاعی، یعنی وجود خارجی نداره، فقط یه مفهومه... انتزاع ترجمه‌ای از Abstract هست... یعنی یه مفهوم ذهنی یا سوری که ما فقط توی ذهنمون فرضش میکنیم... در واقعیت وجود نداره.

یکی از معروف ترین مدلهایی که این لایه هارو دسته‌بندی میکنه مدل OSI هست:
OSI model = The Open Systems Interconnection model

این مدل، کل شبکه یه کامپیوتر رو توی 7 بخش تقسیم بندی میکنه و توضیح میده

=+=+=+=+=+=+=+=+=+=+

یه بار به زبان ساده میگم، قسمتی از ساختار کامپیوترها وجود داره که ارتباط این کامپیوترهارو با هم دیگه ممکن میکنه، به اون قسمت میگن شبکه.

برای اینکه شبکه رو توضیح بدن، یه سری مدل ذهنی ازش درست میکنن که مثلا شبکه یک کامپیوتر 7 لایه داره، و هر لایه رو جدا توضیح میدن که چیکار میکنه...

هر کدوم از این لایه‌ها یسری پرتکل دارن.

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

مثلا میگیم ما قرارداد میکنیم که هر کسی با این ادبیات سوال پرسید، جوابش رو بدیم:
Who has <IP address>? Tell <IP address>.

شاید باورتون نشه، ولی جمله بالا واقعیه... ادبیاتی هست که توی پرتکل ARP استفاده میشه
ARP = Address Resolution Protocol

جلوتر میبینیم که توی خیلی از پرتکلهای قدیمی ، حتی مثل HTTP ، ادبیات مراوده کامپیوترا باهم خیلی شبیه ادبیات تکلم انسانهاست...

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

=+=+=+=+=+=+=+=+=+=+

بیاین باهم 7 لایه شبکه رو توی مدل OSI ببینیم:
👍1
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
7 لایه شبکه به ترتیب از بالا به پایین
Application
Presentation
Session
Transport
Network
Data Link
Physical

=+=+=+=+=+=+=+=+
🔥2
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
Application:
بالاترین لایه، اپلیکیشن هست... از اسمش هم معلومه، جاییه که اپلیکیشنها دارن اجرا میشن و میخوان به اینترنت وصل بشن، حرکات شبکه‌ای توی مرورگر شما ، توی برنامه پایتون شما، توی اپلیکیشن تلگرام شما، توی دیسکورد شما، توی هر اپلیکشنی که به اینترنت (اصطلاح درست تر: شبکه) وصل میشه توی این لایه بررسی میشه - به دیتایی که توی این لایه ردوبدل میشه میگن صرفا دیتا!
بعضی از پرتکلهای این لایه:
HTTP-FTP-SMTP-SNMP-IMAP-POP3-IRC-DNS-SSH...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Presentation:
وقتی هست که یه لایه از اپلیکیشن میایم پایینتر، یکسری حرکات روی داده های ورودی از لایه قبلی (اپلیکیشن) انجام میشه ، مثل رمزنگاری - فشرده‌سازی - قالب‌بندی(فرمت) و ... این حرکات توی این لایه یعنی لایه نمایش یا پرزنتیشن انجام میشه - به دیتایی که اینجا وجود داره همچنان میگن دیتا!
بعضی از پرتکلهای این لایه:
SSL/TLS-ASCII-JPEG-MPEG-...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Session:
لایه بعدی لایه نشست یا سشن هست، به نوعی مفهوم سوکت توی این لایه مطرح میشه، باید بعدا مفصل راجع به سوکت و پورت و این داستانا حرف بزنیم، نگاشت دیتا به پورتها توی این لایه انجام میشه - همچنان به دیتایی که توی این لایه در حرکته میگن دیتا!
بعضی از پرتکلهای این لایه:
SOCKS-SOCKS5-PAP-RPC-...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Transport:
حالا دیتا از 3 لایه قبلی رد شده و وارد لایه انتقال، یا ترنسپورت میشه! پرتکلهایی که دیتارو بصورت End2End رد و بدل میکنن، توی این لایه مدل میشن. این لایه یکی از لایه های خیلی مهم هستش، و بهش میگن قلب مدل OSI ، دیتاهای شما توی این لایه آماده میشن برای این که روی خط به پرتکل خاصی ارسال بشن. مفهوم TCP و UDP توی این لایه شکل پیدا میکنه(باید بعدا توضیحش بدیم)، و به نوعی اعتبارسنجی/اروریابی ارسال و دریافت دیتا از روی خط، توی این لایه انجام میشه - دیگه به دیتایی که توی این لایه داره انتقال داده میشه نمیگن دیتا، بلکه میگن سگمنت!
بعضی از پرتکلهای این لایه:
TCP-UDP-AH-SPX-...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Network:
لایه بعدی لایه نتورک یا شبکه هست، از این لایه به بعد میتونیم به شکل واقعی بگیم که دیتاها از حوزه نرم‌افزاری خارج شدن و الان دارن توی سخت افزار میچرخن و آماده خروج میشن. حالا اصطلاحات شبکه‌ای معنا پیدا میکنه، روتینگ و سوئیچینگ (Routing-Switching) توی این لایه مطرح میشه و بالاخره در این لایه هست که مفهومی به اسم IP بوجود میاد! IP خودش یک پرتکل هست(Internet Protocol) پرتکل اینترنت! شاید خیلیا ندونن، و کار این IP آدرسدهی هست، ولی آدرس دهی منطقی، توی شبکه بهش میگن لاجیکال ادرسینگ. به زبان ساده توی این لایه دیتا توی یه پاکت نامه گذاشته میشه و روش آدرس منبع و مقصد نوشته میشه که بدیمش به اداره پست:) همچنین اینکه پاکتنامه از چه مسیری باید بره تا برسه هم توی این لایه مشخص میشه - اسم دیتایی که توی این لایه وجود داره رو گذاشتن پاکت-نامه یا پکت!
بعضی از پرتکلهای این لایه:
IP-IPSec-NAT-ICMP-ARP-IPX-...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Data Link:
لایه بعدی، لایه دیتا-لینک هست. به نوعی وظیفه این لایه آدرسدهی فیزیکی هست، ما الان پکتهامون اومدن، همه چیشون آماده هست، آدرسدهی منطقی هم شدن یعنی منبع و مقصدشون با ادبیات IP مشخص شده و آماده فرستاده شدن روی خط هستن ، این لایه پکتهارو میپیچه داخل یه کیسه گونی و برای هر سخت-افزار که باید بره آدرسدهی میکنه - بهش میگن مک ادرسینگ MAC - به زبان ساده، آدرسدهی حقیقی و سخت افزاری توی این لایه انجام میشه - به دیتایی که توی این لایه هست میگن فریم!
بعضی از پرتکلهای این لایه:
MAC-Ethernet-VLAN-PPTP-...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+

Physical:
و بالاخره میرسیم به آخرین لایه. همه کارها انجام شده، همه نامه ها آماده شدن و کیسه گونی ها نیز دسته بندی شدن، آدرسا مشخصه، مسیر مشخصه، همه چی آماده‌ست. تنها چیزی که لازمه اینه که بطور فیزیکی و واقعی 0 و 1 ها روی خط نوشته بشن، حالا میخواد بیسیم باشه، فیبر باشه، کابل باشه، هرچی، بیت به بیت اطلاعات بطور حقیقی و فیزیکی روی خط ارسال میشن. پالسها و سیگنالهای الکتریکی، صفر و یک ها، علم مخابرات و... - به دیتایی که توی این لایه هست میگن صفر و یک:) یا بیت.
بعضی از پرتکلهای این لایه:
RS232-DSL-RJ45-USB-...
4👍1
اولین رزومه من 😅
الان بخوام همین مهارت هارو انتخاب کنم. از 50٪ هم بیشتر نمیشن
👍6
توی این سالها در جابینجا 302 درخواست فرستادم که 41 درخواست به مصاحبه رسیده. یعنی حدودا 14 درصد 😁
تازه این فقط آمار جابینجاس
پس نگو که من هر چه درخواست میفرستم حتی مصاحبه هم دعوت نمیشم

آپدیت:
البته بعضی شرکت ها، وضعیت رو تغییر نمیدن. وگرنه شاید 20 درصد مصاحبه باشه.
👍3
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و چهارم- مدل OSI چیست

این قسمت بهراد آنلاین شد و فرمون رو دستش گرفت. ابتدای ویدئو فهمیدیم چرا برنامه نویس وب باید مفاهیم وب و شبکه و... رو بدونه. و در مورد کلمه پروتکل یاد گرفتیم. بعدش در مورد انتزاع و صحبت کردیم و بهراد خیلی خوب توضیح اش داد. در ادامه اشاره ای به شی گرایی هم داشتیم. بعدش در مورد مدل osi و هفت لایه اش صحبت کردیم. و بهراد همه لایه هارو توضیح داد. بعدش در مورد HTTP و تاریخچه اش صحبت کردیم و بهراد در مورد RFP توضیح داد. در انتهای ویدئو هم در مورد مفهوم client-server صحبت کردیم و ساختار یک رکوئست http رو قرار شد جلسه بعدی در موردش صحبت کنیم.

لینک آپارات:
https://www.aparat.com/v/ZU7wC
لینک یوتیوب:
https://youtu.be/LIcrl3evr94
👍4
یه پست خوب از لینکدین علی بیگدلی
پیاده سازی honeypot در django

اول اینکه honeypot چیه؟
یک منبع اطلاعاتی کاذب هستش که برای مقابله با هکر ها و کشف و جمع آوری فعالیت های غیر مجاز در شبکه های رایانه ای استفاده میشه.

اما استفاده ما در جنگو بر روی admin هستش. به طوری که با ساخت یک درگاه ورود fake کاربر و ربات ها پس از ورود به آدرس پیشفرض admin با یک صفحه کاملا مشابه با admin اصلی مواجه میشوند. پس از چند بار تلاش برای ورود با پیغام خطا مواجه میشن و هر بار هم اطلاعات رو عوض و مجدد تلاش می کنند که به گونه ای brute force انجام میشه. با این تفاوت که پس از تعداد محدودی تلاش آیپی اونا در ردیف blacklist قرار میگیره و دیگه نمی تونن به سایت دسترسی داشته باشن. 😁

از این ساختار من معمولا تو تمام پروژه هام استفاده می کنم منتهی نه به این شکل ولی خواستم که یه نمونه ازش در دسترس عموم هم باشه.

آدرس repo :
https://github.com/AliBigdeli/Django-HoneyPot-Sample
👍22🔥6
کوکی‌کاتر جنگو (cookiecutter-django) چیست؟
کوکی‌کاتر جنگو یک الگوی پروژه‌ی جنگو است که با استفاده از آن می‌توانید به سرعت یک پروژه‌ی جنگو با تمامی قابلیت‌های استاندارد آن ایجاد کنید.

این پروژه، از دو بخش اصلی تشکیل شده است:

الگوهای Cookiecutter: شامل فایل‌های جنگو مورد نیاز برای ایجاد یک پروژه‌ی جنگو است. این الگوها شامل فایل‌های تنظیمات مانند settings.py و urls.py، فایل‌های مدیریتی مانند manage.py و فایل‌های اولیه برای ایجاد بخش‌های مختلفی از وبسایت شما هستند.

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

در کل، کوکی‌کاتر جنگو یک الگوی پروژه‌ی جنگو است که با استفاده از آن می‌توانید به سرعت یک پروژه‌ی جنگو با تمامی قابلیت‌های استاندارد آن ایجاد کنید.
✔️ برای استفاده از کوکی‌کاتر جنگو، مراحل زیر را دنبال کنید:
۱- نصبش
pip install cookiecutter
۲- ایجاد پروژه
cookiecutter https://github.com/pydanny/cookiecutter-django.git
بعد از اجرای این دستور، شما باید پاسخی را برای برخی سوالات پرسیده شده از شما وارد کنید، این سوالات برای تنظیمات اولیه‌ی پروژه هستند.
۳- نصب و راه‌اندازی پروژه: پس از ایجاد پروژه، باید آن را نصب و راه‌اندازی کنید. ابتدا وارد پوشه‌ی پروژه‌ی جدید شوید و دستورات زیر را اجرا کنید:
cd project_name
pip install -r requirements/local.txt
createdb project_name
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
👍11