جزوه دستنویس پایتون.pdf
10.4 MB
✅ جزوه دستنویس پایتون (مبتدی)
سلام به همه. این جزوه زیبا رو خانم ریحانه محمدی نوشتند و خلاصه ای از کلاس پایتونی هستش که با بنده داشتند. (البته کل مطالب کلاس توی جزوه نوشته نشده و بخش های مهمش آورده شده)
از لینکدین ali nazarizadeh
سلام به همه. این جزوه زیبا رو خانم ریحانه محمدی نوشتند و خلاصه ای از کلاس پایتونی هستش که با بنده داشتند. (البته کل مطالب کلاس توی جزوه نوشته نشده و بخش های مهمش آورده شده)
از لینکدین ali nazarizadeh
👍9
جنگولرن
مطلبی در مورد لیست ها در پایتون و میزان فضایی که اشغال میکنن از لینکدین Ramin Ferdos محتوا در پست بعدی
قبل از استفاده از لیستها در پایتون، حتما این پست رو بخون! 👨💻🐍
💨 در راستای افزایش عملکرد کد پایتون، امروز میخوام یه نکته خیلی مهم رو تو #پایتون در خصوص لیستها بررسی کنیم که شاید کمتر کسی بدونه یا بهش دقت کنه. اگه تو کدتون از لیستها در پایتون استفاده میکنید، این نکته میتونه تاثیر زیادی تو عملکرد برنامهتون داشته باشه.
🔺 اما قبلش باید کمی در خصوص لیستها در پایتون صحبت کنیم، #لیست یا #list در پایتون یه ساختار دادهای به صورت builtin هست که در واقع یک #آرایه پویا هست. آرایه پویا یعنی قابل تغییر هست (Mutable) و امکان تغییر سایز رو هم داره.
🚨 نکته تو همین بحث تغییر سایز هست، فرض کنید که ما یه لیست داریم با ۵ آیتم و میخوایم یه آیتم دیگه بهش اضافه کنیم یا اصطلاحا append کنیم. این کار رو به راحتی با متد .append میتونیم انجام بدیم. 🚨
🌐 اتفاقی که در این حالت میوفته اینه که پایتون برای این که بتونه اون آیتم رو به لیست اولیه اضافه کنه، باید بیاد یه لیست جدید درست کنه که به اندازه ۶ آیتم جا داشته باشه و لیست قبلی رو نابود کنه. در ابتدا شاید فکر کنید که خب پایتون میاد یه لیست جدید به طول تعداد آیتمهای جدید درست میکنه، یعنی در این مثال ۶.
⚠️ اما نکته اینجاس که اینطور نیست!
🕯 فلسفه پایتون در این زمینه به این صورت هست که وقتی یکبار عملیات append داریم، به احتمال زیاد appendهای بیشتری در آینده برای اون لیست خواهیم داشت، پس برای حفظ سرعت O(1) در زمان اضافه کردن آیتم جدید به لیست، فضای بیشتری برای لیست جدید در نظر میگیره، اصطلاحا Overallocate میکنه.
🚨 اگه n تعداد آیتمهای لیست قبل از append و m میزان فضای اختصاص داده شده به واحد آیتم در لیست جدید باشه، فرمول تخصیص فضای اضافه در پایتون به این صورت هست:
m = (n >> 3) + (3 if n < 9 else 6)♾
🔹 توجه داشته باشید که << عملگر شیفت به راست هست تو پایتون.
🌐 تو این مثال n ما در ابتدا ۵ بود و لیستی که ساخته بودیم تو حافظه به میزان ۵ واحد فضا اشغال کرده بود، حالا اگه بهش یک آیتم append کنیم لیست جدید ما در حافظه در اصل ۸ واحد فضا اشغال میکنه. تا جایی برسه که لیست ما ۸ آیتم داشته باشه و بخوایم آیتم ۹ام رو append کنیم، در این حالت لیست جدید جای ۹ آیتم، ۱۶ واحد فضا اشغال میکنه و همینطوری تا انتها.
🔸 برای لیستها با ابعاد کوچک شاید این موضوع زیاد مهم نباشه، اما کم کم تبدیل به یک اصطلاحا Bloat در حافظه میشه، برای مثال اگه لیستی با ۱۰۰،۰۰۰ آیتم داشته باشیم، Append کردن بهش باعث میشه که ۲.۷ برابر فضای بیشتری نسبت به حالت ساخت لیست جدید با List Comprehension استفاده کنه.
✔️ در نهایت اگه میزان حافظه براتون مهم هست، جای append کردن به لیست، استفاده از List Comprehension و ساخت لیست جدید، باعث کاهش حافظه مصرفی برنامهتون به شکل چشمگیری خواهد شد!
👆🏻 توی تصویر مثالی از یک لیست تو پایتون که با استفاده از append چندین بار mutated میشه قابل مشاهده است. 👆🏻
لینک مطلب:
https://www.linkedin.com/posts/raminferdos_afyaepahyaesaewaeu-aesahyaebaes-list-activity-6964146839273017344-7oqc?utm_source=linkedin_share&utm_medium=member_desktop_web
💨 در راستای افزایش عملکرد کد پایتون، امروز میخوام یه نکته خیلی مهم رو تو #پایتون در خصوص لیستها بررسی کنیم که شاید کمتر کسی بدونه یا بهش دقت کنه. اگه تو کدتون از لیستها در پایتون استفاده میکنید، این نکته میتونه تاثیر زیادی تو عملکرد برنامهتون داشته باشه.
🔺 اما قبلش باید کمی در خصوص لیستها در پایتون صحبت کنیم، #لیست یا #list در پایتون یه ساختار دادهای به صورت builtin هست که در واقع یک #آرایه پویا هست. آرایه پویا یعنی قابل تغییر هست (Mutable) و امکان تغییر سایز رو هم داره.
🚨 نکته تو همین بحث تغییر سایز هست، فرض کنید که ما یه لیست داریم با ۵ آیتم و میخوایم یه آیتم دیگه بهش اضافه کنیم یا اصطلاحا append کنیم. این کار رو به راحتی با متد .append میتونیم انجام بدیم. 🚨
🌐 اتفاقی که در این حالت میوفته اینه که پایتون برای این که بتونه اون آیتم رو به لیست اولیه اضافه کنه، باید بیاد یه لیست جدید درست کنه که به اندازه ۶ آیتم جا داشته باشه و لیست قبلی رو نابود کنه. در ابتدا شاید فکر کنید که خب پایتون میاد یه لیست جدید به طول تعداد آیتمهای جدید درست میکنه، یعنی در این مثال ۶.
⚠️ اما نکته اینجاس که اینطور نیست!
🕯 فلسفه پایتون در این زمینه به این صورت هست که وقتی یکبار عملیات append داریم، به احتمال زیاد appendهای بیشتری در آینده برای اون لیست خواهیم داشت، پس برای حفظ سرعت O(1) در زمان اضافه کردن آیتم جدید به لیست، فضای بیشتری برای لیست جدید در نظر میگیره، اصطلاحا Overallocate میکنه.
🚨 اگه n تعداد آیتمهای لیست قبل از append و m میزان فضای اختصاص داده شده به واحد آیتم در لیست جدید باشه، فرمول تخصیص فضای اضافه در پایتون به این صورت هست:
m = (n >> 3) + (3 if n < 9 else 6)♾
🔹 توجه داشته باشید که << عملگر شیفت به راست هست تو پایتون.
🌐 تو این مثال n ما در ابتدا ۵ بود و لیستی که ساخته بودیم تو حافظه به میزان ۵ واحد فضا اشغال کرده بود، حالا اگه بهش یک آیتم append کنیم لیست جدید ما در حافظه در اصل ۸ واحد فضا اشغال میکنه. تا جایی برسه که لیست ما ۸ آیتم داشته باشه و بخوایم آیتم ۹ام رو append کنیم، در این حالت لیست جدید جای ۹ آیتم، ۱۶ واحد فضا اشغال میکنه و همینطوری تا انتها.
🔸 برای لیستها با ابعاد کوچک شاید این موضوع زیاد مهم نباشه، اما کم کم تبدیل به یک اصطلاحا Bloat در حافظه میشه، برای مثال اگه لیستی با ۱۰۰،۰۰۰ آیتم داشته باشیم، Append کردن بهش باعث میشه که ۲.۷ برابر فضای بیشتری نسبت به حالت ساخت لیست جدید با List Comprehension استفاده کنه.
✔️ در نهایت اگه میزان حافظه براتون مهم هست، جای append کردن به لیست، استفاده از List Comprehension و ساخت لیست جدید، باعث کاهش حافظه مصرفی برنامهتون به شکل چشمگیری خواهد شد!
👆🏻 توی تصویر مثالی از یک لیست تو پایتون که با استفاده از append چندین بار mutated میشه قابل مشاهده است. 👆🏻
لینک مطلب:
https://www.linkedin.com/posts/raminferdos_afyaepahyaesaewaeu-aesahyaebaes-list-activity-6964146839273017344-7oqc?utm_source=linkedin_share&utm_medium=member_desktop_web
👍5👏1🙏1
This media is not supported in your browser
VIEW IN TELEGRAM
✅ تفاوت سرعت الگوریتم های مرتب سازی مختلف در حالت های متفاوت
قدیمی هست، اما هنوز جالبه و میتونه در تصمیم گیری کمک کن
قدیمی هست، اما هنوز جالبه و میتونه در تصمیم گیری کمک کن
👍9🔥1
سلام به همه
من رزومه های مختلفی رو دیدم که شخص کمتر از یکسال هست که با پایتون و جنگو کار میکنه. و برام جالبه که همه سطح شی گرایی رو نوشتن خوب یا ستاره زیادی بهش دادن.
لطفا این لینک هارو یه نگاه بندازید (فارسی هستن):
https://python.coderz.ir/lessons/l17.html
https://python.coderz.ir/lessons/l18.html
https://python.coderz.ir/lessons/l19.html
https://python.coderz.ir/lessons/l20.html
https://python.coderz.ir/lessons/l21.html
https://python.coderz.ir/lessons/l22.html
✔️ بعد از دیدن اینها ببینید چقدر شی گرایی توی پایتون رو می دونستید. من سالهاست شی گرایی رو دارم میخونم اما هنوز واقعا خوب درکش نکردم.
شاید من یه چیزیم هست 🤷🏻♂️
مثلا مفهوم الماس رو من هنوز خوب نمی فهمم. موفق باشید
من رزومه های مختلفی رو دیدم که شخص کمتر از یکسال هست که با پایتون و جنگو کار میکنه. و برام جالبه که همه سطح شی گرایی رو نوشتن خوب یا ستاره زیادی بهش دادن.
لطفا این لینک هارو یه نگاه بندازید (فارسی هستن):
https://python.coderz.ir/lessons/l17.html
https://python.coderz.ir/lessons/l18.html
https://python.coderz.ir/lessons/l19.html
https://python.coderz.ir/lessons/l20.html
https://python.coderz.ir/lessons/l21.html
https://python.coderz.ir/lessons/l22.html
✔️ بعد از دیدن اینها ببینید چقدر شی گرایی توی پایتون رو می دونستید. من سالهاست شی گرایی رو دارم میخونم اما هنوز واقعا خوب درکش نکردم.
شاید من یه چیزیم هست 🤷🏻♂️
مثلا مفهوم الماس رو من هنوز خوب نمی فهمم. موفق باشید
👍12❤2👎1🔥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
👍2
🧐 10 Must-have Tips of Django REST framework to Increase your Coding Efficiency
1.Set current user field inserializer.py
2. Composite Index and Composite Unique key in model.py
3. Pass extra context variables to the serializer.py from view.py
4. Validate JSON input data in serializer.py
5. Obtain querySet of all rows, with specific fields
6. Use Signal to decouple business logics
7. Use request.user in Middleware
8. Pagination settings
9. Custom view level permission and object-level permission
10. The best Django REST reference resource: https://www.cdrf.co/
لینک توضیحات کامل ده تا نکته بالا (من DRF بلد نیستم. اگه نکته اشتباهی گفته لطفا بگید):
https://medium.com/analytics-vidhya/10-must-have-tips-of-django-rest-framework-to-increase-your-coding-efficiency-87ebea0e0099
1.Set current user field inserializer.py
2. Composite Index and Composite Unique key in model.py
3. Pass extra context variables to the serializer.py from view.py
4. Validate JSON input data in serializer.py
5. Obtain querySet of all rows, with specific fields
6. Use Signal to decouple business logics
7. Use request.user in Middleware
8. Pagination settings
9. Custom view level permission and object-level permission
10. The best Django REST reference resource: https://www.cdrf.co/
لینک توضیحات کامل ده تا نکته بالا (من DRF بلد نیستم. اگه نکته اشتباهی گفته لطفا بگید):
https://medium.com/analytics-vidhya/10-must-have-tips-of-django-rest-framework-to-increase-your-coding-efficiency-87ebea0e0099
👍3
سلام. آدرس کانال آپارات جنگولرن
https://www.aparat.com/djangolearn_ir
همیشه ویدئوهایی که آپلود میکنم همزمان توی آپارات و یوتیوب هم منتشر میکنم.
شاید بعضی ها دسترسی به یوتیوب نداشته باشن، آپارت برای اونا بهتره.
و البته اصل ویدئوهای آموزش برنامه نویسی از پایه (با کیفیت 1080) رو توی کانال @basic_python هم آپلود میکنم. که دانلودش راحت باشه.
https://www.aparat.com/djangolearn_ir
همیشه ویدئوهایی که آپلود میکنم همزمان توی آپارات و یوتیوب هم منتشر میکنم.
شاید بعضی ها دسترسی به یوتیوب نداشته باشن، آپارت برای اونا بهتره.
و البته اصل ویدئوهای آموزش برنامه نویسی از پایه (با کیفیت 1080) رو توی کانال @basic_python هم آپلود میکنم. که دانلودش راحت باشه.
👍3❤1
به راه بادیه رفتن به از نشستن باطل
و گر مراد نیابم به قدر وسع بکوشم
(سعدی)
و گر مراد نیابم به قدر وسع بکوشم
(سعدی)
🔥5🤔4👏2❤1
Forwarded from محمد محمدعلیان - به اشتراک گذاری دانستهها
https://youtu.be/e2h_BreIxaQ
در همین راستا یه ویدیو دیگه هم معرفی میکنم که راهنمایی میکنه اگه سابقه کار کمی دارید یا اصلا سابقه کار ندارید چطور رزومهای بنویسید که منجر به استخدام شدنتون بشه. (البته که انتظار استخدام به عنوان Senior رو نداشته باشید دیگه 😂)
در همین راستا یه ویدیو دیگه هم معرفی میکنم که راهنمایی میکنه اگه سابقه کار کمی دارید یا اصلا سابقه کار ندارید چطور رزومهای بنویسید که منجر به استخدام شدنتون بشه. (البته که انتظار استخدام به عنوان Senior رو نداشته باشید دیگه 😂)
YouTube
HACK your way into a job (no experience required)
Start building your website resume RIGHT NOW with Hostinger!!: https://www.hostg.xyz/SHACM (get 10% off with code NETWORKCHUCK)
It's hard to get a job in IT. In this video, NetworkChuck will show you how you can get a job in information technology with…
It's hard to get a job in IT. In this video, NetworkChuck will show you how you can get a job in information technology with…
👍4
پیشگیری از XSS در جنگو 📖
در ادامه پست قبل که درباره حمله های XSS نکاتی رو گفته بودم، نکاتی که به ذهنم میرسه تا از این حمله تا حد ممکن پیشگیری کنیم رو با شما به اشتراک میگذارم، خوشحال میشم اگر مواردی که از قلم انداختم را با من با اشتراک بگذارید.
1- هر ورودی از کاربر باید تمیز بشه.
2- استفاده از safe_string ها را چک کرده به حداقل برسونید، استفاده از اپ هایی مانند django-bleach هم میتونه کمک کنه.
3- موقع طراحی model، serializer و forms از مناسبترین (خاص ترین) نوع فیلد و داده استفاده کنید. اینطوری جنگو میتونه در validation و cleaning کمک تون کنه و قابلیتهای بیشنری در اختیار تون بگذره.
django-bleach docs:
https://lnkd.in/ezCsMdgk
Django's docs on HTML untilities:
https://lnkd.in/e6qmfnVn
Django model field types:
https://lnkd.in/ee4nTweu
لینک پست پیشین:
https://lnkd.in/erigx6C5
تشکر از @alireza_amouzadeh
در ادامه پست قبل که درباره حمله های XSS نکاتی رو گفته بودم، نکاتی که به ذهنم میرسه تا از این حمله تا حد ممکن پیشگیری کنیم رو با شما به اشتراک میگذارم، خوشحال میشم اگر مواردی که از قلم انداختم را با من با اشتراک بگذارید.
1- هر ورودی از کاربر باید تمیز بشه.
2- استفاده از safe_string ها را چک کرده به حداقل برسونید، استفاده از اپ هایی مانند django-bleach هم میتونه کمک کنه.
3- موقع طراحی model، serializer و forms از مناسبترین (خاص ترین) نوع فیلد و داده استفاده کنید. اینطوری جنگو میتونه در validation و cleaning کمک تون کنه و قابلیتهای بیشنری در اختیار تون بگذره.
django-bleach docs:
https://lnkd.in/ezCsMdgk
Django's docs on HTML untilities:
https://lnkd.in/e6qmfnVn
Django model field types:
https://lnkd.in/ee4nTweu
لینک پست پیشین:
https://lnkd.in/erigx6C5
تشکر از @alireza_amouzadeh
👍7👎1
فراخوان جذب رایگان مدرس 😂
سلام به همه
برای دوره رایگان برنامه نویسی از پایه (از کامپیوتر چیست تا طراحی سایت)
نیاز به کمک دارم. تا الان 31 قسمت منتشر شده.
توی این دوره قراره علاوه بر پایتون و جنگو و جنگو رست، اینهارو هم یاد بدم: html, css, javascript, bootstrap , git و خیلی چیزای دیگه
حتی شاید سمت اصول سالید و کلین کد و دیزاین پترن و نکات رزومه نویسی، سفته دادن 😂 و مهارت های دیگه که به برنامه نویسی ارتباط داره هم برم
✔️ لکن من توی بعضی هاشون مبتدی هستم و وقتی چیزی رو تسلط ندارم آموزشش هم مبتدی خواهد بود.
میخوام که هر کسی آمادگی داره که css, bootstrap , javascript و... رو (رایگان) تدریس کنه بهم پیام بده و با هم آموزش بسازیم.
به آیدی @miladhzz پیام بدید لطفا
سلام به همه
برای دوره رایگان برنامه نویسی از پایه (از کامپیوتر چیست تا طراحی سایت)
نیاز به کمک دارم. تا الان 31 قسمت منتشر شده.
توی این دوره قراره علاوه بر پایتون و جنگو و جنگو رست، اینهارو هم یاد بدم: html, css, javascript, bootstrap , git و خیلی چیزای دیگه
حتی شاید سمت اصول سالید و کلین کد و دیزاین پترن و نکات رزومه نویسی، سفته دادن 😂 و مهارت های دیگه که به برنامه نویسی ارتباط داره هم برم
✔️ لکن من توی بعضی هاشون مبتدی هستم و وقتی چیزی رو تسلط ندارم آموزشش هم مبتدی خواهد بود.
میخوام که هر کسی آمادگی داره که css, bootstrap , javascript و... رو (رایگان) تدریس کنه بهم پیام بده و با هم آموزش بسازیم.
به آیدی @miladhzz پیام بدید لطفا
👍7👎4
Forwarded from بنیاد پایتون کاران فارسی (M4hdi)
✔️ سوال: best practiceها و ابزارات مورد نیاز برای توسعه یه بسته، لایبرری یا نرمافزار پایتونی چیه؟
ابزارهای زیادی واسه اینکارا وجود داره که بر اساس تجربه و چیزی که از 80 درصد پروژه های معروف و بزرگ دیدم، سعی میکنم بهتریناش رو معرفی کنم:
Dependency Management System
برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از
مواردی از جمله
1. آشنایی و شروع به کار با Poetry
https://realpython.com/dependency-management-python-poetry/
2. جزیات عمیق درباره هر قابلیت و نحوه استفاده
https://python-poetry.org/docs
3. نحوه انتشار یک package پایتونی در PyPI به کمک Poetry
https://johnfraney.ca/blog/create-publish-python-package-poetry/
Linting & Type Checking
برای
اگر عادت دارید کدهای خودتون رو
1. داکیومنت Flake8
https://flake8.pycqa.org/en/latest/user/invocation.html
2. داکیومنت MyPy
https://mypy.readthedocs.io/en/stable/getting_started.html
Code Formatting
برای مرتب و
1. داکیومنت isort
https://pycqa.github.io/isort/
2. داکیومنت Black
https://black.readthedocs.io/en/stable/getting_started.html
3. یک ویدیو از PyCon 2019 درباره Black
https://youtu.be/esZLCuWs_2Y
* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنتهاشون هست.
Testing
دو کتابخونه
1. یک مقاله جامع درباره تست نویسی، انواع آن و روشهای مورد استفاده در پایتون
https://realpython.com/python-testing/
2. ویدیو درباره unittest در پایتون
https://m.youtube.com/watch?v=FxSsnHeWQBY
https://www.youtube.com/watch?v=6tNS--WetLI
* همچنین اگر از
وبسایت pre commit:
https://pre-commit.com/
✒️ @Pygrammer
〰️〰️〰️〰️〰️〰️〰️
©️@PyFarsi
ابزارهای زیادی واسه اینکارا وجود داره که بر اساس تجربه و چیزی که از 80 درصد پروژه های معروف و بزرگ دیدم، سعی میکنم بهتریناش رو معرفی کنم:
Dependency Management System
برای مدیریت وابستگی های یک پروژه بزرگ (یا نسبتا بزرگ)، پیشنهاد میکنم از
Poetry
استفاده کنید، چون ابزار بسیار قدرتمندی هست، کار باهاش بسیار راحته (خیلی شبیه به Cargo
در زبان Rust
هست)، کامیونیتی بزرگی داره، به راحتی محیط dev
و prod
رو میتونید مدیریت کنید، مستندات بسیار خوب و روانی داره، در سریع ترین زمان ممکن میتونید پروژه رو در PyPI
منتشر کنید و همچنین پروژههای معروفی از جمله Rich (کتابخونهای که خود pip
هم ازش برای رنگی کردن progress bar
ها استفاده میکنه) از اون استفاده میکنن، که همین نشون میده چقدر کاربردی هست.مواردی از جمله
build
و run
هم کاملا با Poetry
انجام میشن.-
منابع آموزشی:1. آشنایی و شروع به کار با Poetry
https://realpython.com/dependency-management-python-poetry/
2. جزیات عمیق درباره هر قابلیت و نحوه استفاده
https://python-poetry.org/docs
3. نحوه انتشار یک package پایتونی در PyPI به کمک Poetry
https://johnfraney.ca/blog/create-publish-python-package-poetry/
Linting & Type Checking
برای
Linting
ابزارهای flake8
و pylint
از معروف ترینها هستن، هر یک رو میتونید شدت سخت گیریشون رو تنظیم کنید، به راحتی همراه با Poetry
تنظیماتشون در یک فایل قرار میگیره و نیاز به نگه داشتن فایلهای متفاوت برای هر کدوم ندارید. به نظرم خود flake8
به تنهایی نیازتون رو برطرف میکنه. اگر از PyCharm
استفاده کنید یک Linter
به صورت Built-in
در اختیارتون میذاره که خوبه و کارتون رو راه میندازه.اگر عادت دارید کدهای خودتون رو
Annotate
کنید و زیاد از Type Hint
ها استفاده میکنید، استفاده از MyPy
به عنوان یک static type checker
به شما کمک میکنه ایرادات موجود در کلاس ها، توابع و ... رو پیدا کنید و بتونید type
های دقیق تری استفاده کنید. همچنین ابزار Pyright
که توسط مایکروسافت توسعه داده میشه، در VSCode
به صورت integrated
با افزونه Pylance
کار میکنه و اگر از VSCode
استفاده میکنید پیشنهاد میکنم حتما افزونه Pylance
رو نصب کنید. PyCharm
هم یک Type Checker
داره ولی هنوز توانمندی Pylance
و MyPy
رو نداره.-
منابع آموزشی:1. داکیومنت Flake8
https://flake8.pycqa.org/en/latest/user/invocation.html
2. داکیومنت MyPy
https://mypy.readthedocs.io/en/stable/getting_started.html
Code Formatting
برای مرتب و
organize
کردن import
ها از isort
استفاده کنید، هم به صورت CLI
در دسترس هست و هم یک API
داره که میتونید در کد پایتون استفاده کنید. یک code formatter
بسیار معروف که در اکثر پروژهها استفاده میشه Black
هست، زیر نظر PSF
(یا Python Software Foundation
) و برنامه نویسای با تجربه و کار کشته ای همچون آقای Łukasz Langa
(ریلیس منیجر پایتون 3.9) توسعه داده میشه، با دیگر ابزار ها مثل isort
سازگار هست، با PEP8
سازگاره و کلی قابلیت مزیت دیگه داره که حقیقتا اینجا جا نمیشن :)-
منابع آموزشی:1. داکیومنت isort
https://pycqa.github.io/isort/
2. داکیومنت Black
https://black.readthedocs.io/en/stable/getting_started.html
3. یک ویدیو از PyCon 2019 درباره Black
https://youtu.be/esZLCuWs_2Y
* این ابزارها همگی داکیومنت ساده و خوانایی دارن و به نظرم بهترین منبع همین داکیومنتهاشون هست.
Testing
دو کتابخونه
Pytest
و unittest
(در stdlib
موجود هست) در تست نویسی پروژه ها استفاده میشن، برای تست کردن پروژه در environment
های متفاوت از ابزار tox
استفاده میشه و باهاش میتونید در نسخه های متفاوتی از پایتون کدتون رو تست کنید.-
منابع آموزشی:1. یک مقاله جامع درباره تست نویسی، انواع آن و روشهای مورد استفاده در پایتون
https://realpython.com/python-testing/
2. ویدیو درباره unittest در پایتون
-
آقای ned batchelder:https://m.youtube.com/watch?v=FxSsnHeWQBY
-
آقای Corey Schafer:https://www.youtube.com/watch?v=6tNS--WetLI
* همچنین اگر از
Git
در پروژه خودتون استفاده میکنید، پیشنهاد میکنم از pre-commit
حتما استفاده کنید و تمام این ابزارهای گفته شده رو automate
کنید تا در هربار commit
کردن، قبل از اینکه commit
انجام بشه، این ابزارها روی کدتون اجرا بشن و اگر اشکالی در کدتون وجود داره پیدا بشه و اون رو برطرف کنید و دوباره commit کنید.وبسایت pre commit:
https://pre-commit.com/
✒️ @Pygrammer
〰️〰️〰️〰️〰️〰️〰️
©️@PyFarsi
👍3
Forwarded from Django Expert (Boby Cloud)
✔️ راهنمای کلین کد در پایتون
کتاب کلین کد معروف آقای Robert C. Martin برای هر برنامه نویسی از واجباته، اما چون درمورد جاوا صحبت میکنه، برای برنامه نویس های پایتون لذت بخش و خیلی بدردبخور نیست.
این ریپو راهنمای بسیار خوب و دقیقی برای کد تمیز نوشتن در پایتون هست که همون کتاب کلین کده، اما به زبان پایتون
از خوندنش لذت ببرید
👉 Link: https://github.com/SepehrRasouli/clean-code-python
✅بچهها سپهر کل ریپو کلین کد پایتون رو به فارسی ترجمه کرده، برای حمایت ازش استار بدید 🔥✌️
〰️〰️〰️〰️〰️
© @DjangoEx
کتاب کلین کد معروف آقای Robert C. Martin برای هر برنامه نویسی از واجباته، اما چون درمورد جاوا صحبت میکنه، برای برنامه نویس های پایتون لذت بخش و خیلی بدردبخور نیست.
این ریپو راهنمای بسیار خوب و دقیقی برای کد تمیز نوشتن در پایتون هست که همون کتاب کلین کده، اما به زبان پایتون
از خوندنش لذت ببرید
👉 Link: https://github.com/SepehrRasouli/clean-code-python
✅بچهها سپهر کل ریپو کلین کد پایتون رو به فارسی ترجمه کرده، برای حمایت ازش استار بدید 🔥✌️
〰️〰️〰️〰️〰️
© @DjangoEx
👍9
✅ ثبت نام با ایمیل فعالسازی در جنگو
سوال یکی از دوستان بود...
لینکی که میتونه کمک کنه:
https://medium.com/@frfahim/django-registration-with-confirmation-email-bb5da011e4ef
سوال یکی از دوستان بود...
لینکی که میتونه کمک کنه:
https://medium.com/@frfahim/django-registration-with-confirmation-email-bb5da011e4ef
Medium
Django registration with confirmation email
When we sign up on website its send a email for confirmation to active an account. Or confirmation email need to change password or change…
👍9