با استفاده از سایت https://www.mockaroo.com/ می تونیم دیتاست تصادفی با تنوع حدود ۱۶۰ نوع دیتا تایپ و خروجی با فرمت SQL ,JSON , CSV و .... ایجاد کنیم. برای پر کردن دیتابیس با داده های فیک میتونه مناسب باشه.
البته با پکیج های factory_boy و faker هم میتونیم همین کارهارو انجام بدیم. اما به قول یکی از همکاران این سایت user friendly هست.
البته با پکیج های factory_boy و faker هم میتونیم همین کارهارو انجام بدیم. اما به قول یکی از همکاران این سایت user friendly هست.
👍14❤1
✅ یه پست (سوال) لینکدین از 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
لینک پست:
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
✅ پیاده سازی معماری Onion با جنگو
https://www.youtube.com/watch?v=NVHxdsaHFwk
https://www.youtube.com/watch?v=NVHxdsaHFwk
YouTube
معماری جنگو با پیاز
اگر تا به حال پیاز خوردین یا پیاز دوست دارین این ویدیو مخصوص شماست
▬ محتوای ویدیو ▬▬▬▬▬▬▬▬▬▬
ما تو این ویدیو بررسی میکنیم که بیزینس لاجیک چیه
و چگونه معماری تمیزی رو در جنگو میتونیم داشته باشیم
▬ شبکه های اجتماعی ▬▬▬▬▬▬▬▬▬▬
یوتیوب: https://www.…
▬ محتوای ویدیو ▬▬▬▬▬▬▬▬▬▬
ما تو این ویدیو بررسی میکنیم که بیزینس لاجیک چیه
و چگونه معماری تمیزی رو در جنگو میتونیم داشته باشیم
▬ شبکه های اجتماعی ▬▬▬▬▬▬▬▬▬▬
یوتیوب: https://www.…
👍3
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
خیلی مصاحبه رفتم. فقط اینارو حال داشتم بنویسم (و یادم مونده چی گفتن)
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 باید ۲ تا متد رو حتما داشته باشه :
Iterator:
۳ تا ویژگی اصلی داره طبق تعریف پروتکل توی پایتون
۱- فقط و فقط یکبار قابل استفاده هست ینی بعد از اینکه بار اول روش loop بزنید دیگه نمیتونید اینکار رو بکنید یا مقدار خالی بر میگردونه یا ارور و باید دوباره تعریف بشه توی توابع داخلی پایتون تابع
open()
اینطور هست.
۲- حتما باید متد
۳- متد
Iterable :
۱- برخلاف Iterator با یکبار تعریف چندین بار میشه استفادهاش کرد بعنوان مثال تابع
range()
توی خود پایتون بریزیدش توی یک متغییر و بیش از ۱ بار روش loop بزنید هربار خروجی درست رو میگیرید
۲- شامل متد
۳- متد
بخش داکیومنت مربوط به این بحث :
Python docs
از کانال 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
Telegram
دستاوردهای یادگیری عمیق(InTec)
هوش مصنوعی، یادگیری ماشین و یادگیری عمیق
موضوع اصلی کانال
این یک بلاگ شخصی با طرز تفکر شخصی هست.
Core Python : @PyHints
تلاشی هم در یادگیری Rust دارم که درحال داکیومنت شدن هم هست؛ اگر شماهم به این زبان علاقمند هستید join یادتون نره
Rust: @PyRust
موضوع اصلی کانال
این یک بلاگ شخصی با طرز تفکر شخصی هست.
Core Python : @PyHints
تلاشی هم در یادگیری Rust دارم که درحال داکیومنت شدن هم هست؛ اگر شماهم به این زبان علاقمند هستید join یادتون نره
Rust: @PyRust
❤11🤮7👍1
Forwarded from برنامه نویسی از پایه
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
در شروع این ویدئو میخواستیم ببینم که جلسه قبل چکار کردیم که با مشکل پوش شدن تنظیمات 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
👍5❤1
Forwarded from برنامه نویسی از پایه
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
در ابتدای این ویدئو توی سایت 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
ارسال کد :
شماره تلفن رو چک میکنم که آیا در دیتابیس چنین اکانتی بن/حذف شده یا نه
یک داکیومنت برای 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 ببینیم:
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
=+=+=+=+=+=+=+=+
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-...
بالاترین لایه، اپلیکیشن هست... از اسمش هم معلومه، جاییه که اپلیکیشنها دارن اجرا میشن و میخوان به اینترنت وصل بشن، حرکات شبکهای توی مرورگر شما ، توی برنامه پایتون شما، توی اپلیکیشن تلگرام شما، توی دیسکورد شما، توی هر اپلیکشنی که به اینترنت (اصطلاح درست تر: شبکه) وصل میشه توی این لایه بررسی میشه - به دیتایی که توی این لایه ردوبدل میشه میگن صرفا دیتا!
بعضی از پرتکلهای این لایه:
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
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و چهارم- مدل OSI چیست
این قسمت بهراد آنلاین شد و فرمون رو دستش گرفت. ابتدای ویدئو فهمیدیم چرا برنامه نویس وب باید مفاهیم وب و شبکه و... رو بدونه. و در مورد کلمه پروتکل یاد گرفتیم. بعدش در مورد انتزاع و صحبت کردیم و بهراد خیلی خوب توضیح اش داد. در ادامه اشاره ای به شی گرایی هم داشتیم. بعدش در مورد مدل osi و هفت لایه اش صحبت کردیم. و بهراد همه لایه هارو توضیح داد. بعدش در مورد HTTP و تاریخچه اش صحبت کردیم و بهراد در مورد RFP توضیح داد. در انتهای ویدئو هم در مورد مفهوم client-server صحبت کردیم و ساختار یک رکوئست http رو قرار شد جلسه بعدی در موردش صحبت کنیم.
لینک آپارات:
https://www.aparat.com/v/ZU7wC
لینک یوتیوب:
https://youtu.be/LIcrl3evr94
این قسمت بهراد آنلاین شد و فرمون رو دستش گرفت. ابتدای ویدئو فهمیدیم چرا برنامه نویس وب باید مفاهیم وب و شبکه و... رو بدونه. و در مورد کلمه پروتکل یاد گرفتیم. بعدش در مورد انتزاع و صحبت کردیم و بهراد خیلی خوب توضیح اش داد. در ادامه اشاره ای به شی گرایی هم داشتیم. بعدش در مورد مدل 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
پیاده سازی 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
کوکیکاتر جنگو یک الگوی پروژهی جنگو است که با استفاده از آن میتوانید به سرعت یک پروژهی جنگو با تمامی قابلیتهای استاندارد آن ایجاد کنید.
این پروژه، از دو بخش اصلی تشکیل شده است:
الگوهای 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
✅ پکیج WhiteNoise یک نرمافزار کمکی برای Django است که به عنوان یک واسط بین سرور و وب برنامه Django وجود دارد.
این WhiteNoise به افزایش سرعت پاسخ به درخواستها، بهینهسازی تحویل فایلهای استاتیک و بهبود امنیت وبسایتها کمک میکند.
هنگامی که یک درخواست HTTP به یک وبسایت Django میرسد، Django برای پاسخ به درخواست، ممکن است به بارگیری یک فایل استاتیک از سیستم فایل سرور نیاز داشته باشد. با استفاده از WhiteNoise، این فایلهای استاتیک بدون نیاز به استفاده از یک سرور وب، مستقیماً از داخل برنامه Django به مرورگر ارائه میشوند.
همچنین، WhiteNoise برای پیادهسازی HTTP Strict Transport Security و ایجاد یک لایه اضافی از امنیت در وبسایتها نیز استفاده میشود.
از آنجا که WhiteNoise در برنامههای جنگو به راحتی قابل استفاده است و کمک میکند که وبسایت شما با سرعت بهتری بارگیری شود، بسیاری از برنامههای وب Django از آن استفاده میکنند.
این WhiteNoise یک ابزار محبوب در جامعه برنامهنویسی Django است و بسیاری از شرکتها از آن استفاده میکنند. بعضی از شرکتهایی که از WhiteNoise استفاده میکنند عبارتند از:
Heroku:
این شرکت از WhiteNoise به عنوان یک راهحل برای سرویسدهی به برنامههای جنگو استفاده میکند.
Mozilla:
این شرکت از WhiteNoise برای سرویس دهی به وبسایت خود استفاده میکند.
همچنین، از WhiteNoise در بسیاری از برنامههای دیگر نیز استفاده شده است. به طور کلی، این ابزار برای پیادهسازی وبسایتهای سریع و امن در Django، بسیار مناسب است.
تشکر از دوست خوبمون بابت این مطلب
این WhiteNoise به افزایش سرعت پاسخ به درخواستها، بهینهسازی تحویل فایلهای استاتیک و بهبود امنیت وبسایتها کمک میکند.
هنگامی که یک درخواست HTTP به یک وبسایت Django میرسد، Django برای پاسخ به درخواست، ممکن است به بارگیری یک فایل استاتیک از سیستم فایل سرور نیاز داشته باشد. با استفاده از WhiteNoise، این فایلهای استاتیک بدون نیاز به استفاده از یک سرور وب، مستقیماً از داخل برنامه Django به مرورگر ارائه میشوند.
همچنین، WhiteNoise برای پیادهسازی HTTP Strict Transport Security و ایجاد یک لایه اضافی از امنیت در وبسایتها نیز استفاده میشود.
از آنجا که WhiteNoise در برنامههای جنگو به راحتی قابل استفاده است و کمک میکند که وبسایت شما با سرعت بهتری بارگیری شود، بسیاری از برنامههای وب Django از آن استفاده میکنند.
این WhiteNoise یک ابزار محبوب در جامعه برنامهنویسی Django است و بسیاری از شرکتها از آن استفاده میکنند. بعضی از شرکتهایی که از WhiteNoise استفاده میکنند عبارتند از:
Heroku:
این شرکت از WhiteNoise به عنوان یک راهحل برای سرویسدهی به برنامههای جنگو استفاده میکند.
Mozilla:
این شرکت از WhiteNoise برای سرویس دهی به وبسایت خود استفاده میکند.
همچنین، از WhiteNoise در بسیاری از برنامههای دیگر نیز استفاده شده است. به طور کلی، این ابزار برای پیادهسازی وبسایتهای سریع و امن در Django، بسیار مناسب است.
تشکر از دوست خوبمون بابت این مطلب
👍17
Forwarded from برنامه نویسی از پایه
Media is too big
VIEW IN TELEGRAM
برنامه نویسی از پایه قسمت پنجاه و پنجم - ساختار HTTP Request
این قسمت هم بهراد (@TadavomnisT_channel) پشت فرمون بود و ابتدای جلسه کتاب Computer Networking: A Top Down Approach رو معرفی کرد. در ادامه شروع کرد ساختار یک رکوئست HTTP رو توضیح داد حین توضیحاتش Metadata هم به صورت عملی توضیح داد و یه نکته امنیتی هم در موردش بهم گوشزد کرد. بعدش در مورد جزییات رکوئست توضیح داد و با line-feed charachter و carriage return charachter هم آشنا شدیم. بعدش جزییات Header هم ازش یاد گرفتیم.بعدش در مورد HTTP response توضیح داد و جزییاتش رو برامون شرح داد و یاد گرفتیم body توی response چیه. توی این قسمت بهراد بصورت عملی request و response رو بهم نشون داد. در ادامه در مورد مفهوم stateless بودن پروتکل http یاد گرفتیم و در ادامه خیلی جالب cookie و session رو هم توضیح داد. و حتی خطر cookie هم به ما توضیح داد. در ادامه اشاره هایی هم به non-persistent HTTP و persistent HTTP داشت. و در انتهای جلسه هم در مورد caching و get و post صحبت کردیم.
لینک آپارات:
https://aparat.com/v/6KTXu
لینک یوتیوب:
https://youtu.be/qexGg_FccoY
این قسمت هم بهراد (@TadavomnisT_channel) پشت فرمون بود و ابتدای جلسه کتاب Computer Networking: A Top Down Approach رو معرفی کرد. در ادامه شروع کرد ساختار یک رکوئست HTTP رو توضیح داد حین توضیحاتش Metadata هم به صورت عملی توضیح داد و یه نکته امنیتی هم در موردش بهم گوشزد کرد. بعدش در مورد جزییات رکوئست توضیح داد و با line-feed charachter و carriage return charachter هم آشنا شدیم. بعدش جزییات Header هم ازش یاد گرفتیم.بعدش در مورد HTTP response توضیح داد و جزییاتش رو برامون شرح داد و یاد گرفتیم body توی response چیه. توی این قسمت بهراد بصورت عملی request و response رو بهم نشون داد. در ادامه در مورد مفهوم stateless بودن پروتکل http یاد گرفتیم و در ادامه خیلی جالب cookie و session رو هم توضیح داد. و حتی خطر cookie هم به ما توضیح داد. در ادامه اشاره هایی هم به non-persistent HTTP و persistent HTTP داشت. و در انتهای جلسه هم در مورد caching و get و post صحبت کردیم.
لینک آپارات:
https://aparat.com/v/6KTXu
لینک یوتیوب:
https://youtu.be/qexGg_FccoY
👍2
Forwarded from مطالب رایگان و آزاد🎈 ( behrad)
مشکل سال 2038 چیست؟!
سوالش باحالیه مگه نه؟! نه پایان جهان نیست، تقویم قوم شبهمایاها هم تموم نمیشه، فضاییها هم حمله نمیکنن... یه اتفاق خطرناکتری ممکنه بیفته...🤭
ممکنه زمان کامپیوتر شما یهو 137 ســـــــــــــــال برگرده به عقب🥴
=+=+=+=+=+=+=+=+=+=+
حوالی سال 1970 که داشتن پروتکلهارو طراحی میکردن، باید مفهوم زمان رو با دقت ثانیه توی پروتکلهای مختلف یجوری ذخیره میکردن...
یه استانداردی دادن به اسم
Timestamp
یا برچسب زمانی، یه استاندارد یونیکسی هست که الان اکثر سیستمهای ما + اینترنت با اون کار میکنه،
مقدارش تعداد ثانیههایی هست که از سال 1970 تا این لحظه گذشته...😬
یعنی 1970 رو گرفتن مبدا زمان و با این کار 69 سال قبل و بعد از 1970 توی کامپیوتر مدل کردن.
مثلا تایماستمپ لحظه فعلی که من دارم این پیامو مینویسم هست:
1678537870
این یعنی 1678537870 ثانیه از 1970 گذشته... این توی خیــــلی از زبانها هست، مثلا اگه توی PHP بدمش به تابع date میگه که:
ساعتش به وقت ایران نیست، و اینکه جزئیات تابعش اصلا مهم نیست...
ولی جالبه که خیلیا نمیدونن که سیستمشون با این تایماستمپ داره میچرخه...
میتونین پرتکل NTP رو بخونین چیزای جذابی داره....
Network Time Protocol
=+=+=+=+=+=+=+=+=+=+=+=+
حالا مشکل کجاست؟
این تایم استمپ یا برچسب زمانی داره توی خیــــلی از رکوئست و ریسپانس ها انکپسوله میشه و میره و میاد...
برای همین باید برای ذخیره سازیش کمترین طول ممکن رو استفاده کنن که بهینه باشه.... اینا تایم استمپ رو اینتیجر گرفتن...
اینتیجر مثل هر زبان برنامهنویسی ، 4 بایت فضا اشغال میکنه...
اینا اون موقعی که طراحیش کردن گفتن که این ساختار تاااااا 70 سال دیگه کار میکنه... همینقدر بسه... اون موقع آیندگان یه فکری میکنن *-*
اتفاقی که میافته اینه که سال 2038 4 بایت پر میشه :)) و سرریز میکنه.... اصلاحا میگن اورفلو میکنه :3
یعنی تعداد ثانیه ها میشه
2147483647
و یک ثانیه که بگذره از 4 بایت (32 بیت) اورفلو میکنه و میشه 33 بیت و بیت علامت 0 میشه و عدد منفی میشه...🥴 شاید برای هضمش لازم باشه که روی کاغذ باینریش رو بنویسین.
*گیفش رو میفرستم پایین*
اگه مثلا 8 بایت میگرفتن میتونستن تا ملیاردها سال دیگه رو بدون اشکال پیش برن... ولی غیر بهینه بود...
خیلی از سیستما همین الان جلوی این اتفاق رو گرفتن... و خیلی از سیستمها هم اصلا روهشون خبر نداره😬 نشستن دارن خودشونو باد میزنن، اگه تا 2038 ایران متلاشی نشده باشه و آبش تموم نشده باشه، بهتون قول میدم نصف سیستماش از کار میافته *-*
=+=+=+=+=+=+=+=+=+=+=+
این مشکل از اولشم میدونستن که بوجود میاد... ولی بهترین راه این بود که 50 سال دیگه آیندهگان کامپیوترهاشون رو به روز کنن!!! یا محور قراردادی رو از 1970 تغییر بدن...
این مشکل بزرگیه که باید روش فکر بشه
مساله اگر فقط نرمافزاری بود مشکلی نبود ، یه پج میدادن حل میشد...!
ولی بسیــــــــــــاری از پیاده سازی های تایم سخت افزاری هستن!... مثلا طرف روی FPGA یا میکروکنترلر یا ROM {که قابل تغییر نیست} گرفته timestamp رو مدلسازی کرده...، یا توی امبدد سیستمها اینکارو کرده...
اون سخت افزارا کلا منسوخ میشن...!
ولی چیز جالبیه...😆
=+=+=+=+=+=+=+=+=+=+
سوالش باحالیه مگه نه؟! نه پایان جهان نیست، تقویم قوم شبهمایاها هم تموم نمیشه، فضاییها هم حمله نمیکنن... یه اتفاق خطرناکتری ممکنه بیفته...🤭
ممکنه زمان کامپیوتر شما یهو 137 ســـــــــــــــال برگرده به عقب🥴
=+=+=+=+=+=+=+=+=+=+
حوالی سال 1970 که داشتن پروتکلهارو طراحی میکردن، باید مفهوم زمان رو با دقت ثانیه توی پروتکلهای مختلف یجوری ذخیره میکردن...
یه استانداردی دادن به اسم
Timestamp
یا برچسب زمانی، یه استاندارد یونیکسی هست که الان اکثر سیستمهای ما + اینترنت با اون کار میکنه،
مقدارش تعداد ثانیههایی هست که از سال 1970 تا این لحظه گذشته...😬
یعنی 1970 رو گرفتن مبدا زمان و با این کار 69 سال قبل و بعد از 1970 توی کامپیوتر مدل کردن.
مثلا تایماستمپ لحظه فعلی که من دارم این پیامو مینویسم هست:
1678537870
این یعنی 1678537870 ثانیه از 1970 گذشته... این توی خیــــلی از زبانها هست، مثلا اگه توی PHP بدمش به تابع date میگه که:
echo date("m/d/Y h:i:s a", 1678537870);03/11/2023 12:31:10 pm
ساعتش به وقت ایران نیست، و اینکه جزئیات تابعش اصلا مهم نیست...
ولی جالبه که خیلیا نمیدونن که سیستمشون با این تایماستمپ داره میچرخه...
میتونین پرتکل NTP رو بخونین چیزای جذابی داره....
Network Time Protocol
=+=+=+=+=+=+=+=+=+=+=+=+
حالا مشکل کجاست؟
این تایم استمپ یا برچسب زمانی داره توی خیــــلی از رکوئست و ریسپانس ها انکپسوله میشه و میره و میاد...
برای همین باید برای ذخیره سازیش کمترین طول ممکن رو استفاده کنن که بهینه باشه.... اینا تایم استمپ رو اینتیجر گرفتن...
اینتیجر مثل هر زبان برنامهنویسی ، 4 بایت فضا اشغال میکنه...
اینا اون موقعی که طراحیش کردن گفتن که این ساختار تاااااا 70 سال دیگه کار میکنه... همینقدر بسه... اون موقع آیندگان یه فکری میکنن *-*
اتفاقی که میافته اینه که سال 2038 4 بایت پر میشه :)) و سرریز میکنه.... اصلاحا میگن اورفلو میکنه :3
یعنی تعداد ثانیه ها میشه
2147483647
و یک ثانیه که بگذره از 4 بایت (32 بیت) اورفلو میکنه و میشه 33 بیت و بیت علامت 0 میشه و عدد منفی میشه...🥴 شاید برای هضمش لازم باشه که روی کاغذ باینریش رو بنویسین.
*گیفش رو میفرستم پایین*
اگه مثلا 8 بایت میگرفتن میتونستن تا ملیاردها سال دیگه رو بدون اشکال پیش برن... ولی غیر بهینه بود...
خیلی از سیستما همین الان جلوی این اتفاق رو گرفتن... و خیلی از سیستمها هم اصلا روهشون خبر نداره😬 نشستن دارن خودشونو باد میزنن، اگه تا 2038 ایران متلاشی نشده باشه و آبش تموم نشده باشه، بهتون قول میدم نصف سیستماش از کار میافته *-*
=+=+=+=+=+=+=+=+=+=+=+
این مشکل از اولشم میدونستن که بوجود میاد... ولی بهترین راه این بود که 50 سال دیگه آیندهگان کامپیوترهاشون رو به روز کنن!!! یا محور قراردادی رو از 1970 تغییر بدن...
این مشکل بزرگیه که باید روش فکر بشه
مساله اگر فقط نرمافزاری بود مشکلی نبود ، یه پج میدادن حل میشد...!
ولی بسیــــــــــــاری از پیاده سازی های تایم سخت افزاری هستن!... مثلا طرف روی FPGA یا میکروکنترلر یا ROM {که قابل تغییر نیست} گرفته timestamp رو مدلسازی کرده...، یا توی امبدد سیستمها اینکارو کرده...
اون سخت افزارا کلا منسوخ میشن...!
ولی چیز جالبیه...😆
=+=+=+=+=+=+=+=+=+=+
👍15🤯4