Python Hints
الذهاب إلى القناة على Telegram
Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازهکار) Admin: @Abbasi_ai
إظهار المزيد9 613
المشتركون
+924 ساعات
+647 أيام
+22130 أيام
أرشيف المشاركات
9 610
#خبر #فوری
گروه هکری به اسم #عدالت_علی ادعا کرده که به سرورهای قضایی کشور نفوذ کرده و اطلاعات میلیونها سند و پرونده قضایی رو بدست آورده
هنوز هیچ مدرکی دال بر اثبات این موضوع منتشر نشده اما گفتند که بعد از بررسی (احتمالاً تمیزکاری)
مدارک رو روی سایتی منتشر خواهند کرد.
بعد ما دنبال امنیت اسنپ بودیم ؟!
ای بابا
9 610
فکر کنم اینکار میکنند
که مطمئن بشن رأی نمیدیم
دستشون درد نکنه، شنیدم روز رأی گیری هوای کشور سمی هست
9 610
#موقت
شورای عالی فضای مجازی استفاده از فیلترشکن را ممنوع اعلام کرد
شورای عالی فضای مجازی مصوبه جدیدی را در شش ماده، برای اجرا ابلاغ کرده است. مهمترین موضوع این مصوبه، ممنوعیت استفاده از ابزارهای فیلترشکن مگر با مجوز قانونی است.
تا پیش از این، بر اساس قانون صرفا خرید و فروش فیلترشکن ممنوع بود نه استفاده از آن.
خوب جا داره یه سلامی هم عرض کنم خدمت ممبرای مجرم کانال 😂
9 610
Restriction
هم داره اینجا
چیزی که خوندم بخاطر
Reaction, Follower
کم هست. (دارم یاد میگیرم تازه 😂)
9 610
#حوادث
#خارج_از_بحث
🔴جنایت هولناک یک افغانی
یک کارگر افغان تالار عروسی در تهران، یک زن ایرانی رو به محل استراحتش در تالار کشاند و او را با ضربه های وحشیانه جسم سخت به قتل رساند.
متهم ( کارگر افغانی ) مدعی شد در دوران دوستی با زن ایرانی به او پول قرض داده اما مقتول بدهیاش را نمی داد. روز ولنتاین او را به محل استراحتش در تالار کشانده و کشته است.
این همون موضوعی هست که گفتم
مهاجر غیرقانونی، فقط مهاجم هست مثل اینکه مملکت رو مین گذاری کرده باشی و هیچ علامتی نگذاشته باشی
توی هر گوشه ممکنه انفجار رخ بده ....
و قطعاً دولت و حکومت فعلی ایران مقصر این قضیه هست
9 610
#موقت
یکی رفته ایمیل تهدید الکی ب م ب گذاری فرستاده به چندتا مدرسه توی هند
بعد به نظرتون راهکار مسئولای هند چی بوده ؟
Proton Mail
رو فیلتر کنند، چرا ؟
چون
End2End Encrypted
هست و هیچ اطلاعاتی از ارسال کننده یا ایمیلها و ... نمیشه بدست آورد.
اگر تا حالا ازش استفاده نکردید، حتماً تست کنید.
9 610
قبلاً راجب اینکه چرا نباید
Default value
ورودی یک تابع٫متد رو mutable بذارید صحبت کردیم
یعنی
def scripts_counter(directories : list = []):
pass
یک باگ بسیار بسیار جدی هست توی پایتون.9 610
varargsنیروی جدید گرفتیم؛ حدود ۲۰ ساله چون تازه هم اومده پروژهای نداشتم بهش بدم. اما یک کد از تیم دیگه بهمون رسیده که هیچکس سراغ تمیز کردنش نمیره؛ بهش دسترسی دادم گفتم این کد رو بخون یک کد هم از تیم خودمون بهش دادم گفتم اینم بخون هرکاری اولی کرده تو نکن؛ هرکاری دومی کرده سعی کن درک کنی چرا. امروز دیدم رفته کلی تغییرات داده اولش ترسیدم گفتم ی تازه کار این حجم تغییر برای
pull request مشکوک هست ولی بعد از ی جلسه کوتاه حل شد و بیشترین تغییرش همین
varargsبوده؛ برنامه نویس قبلی
packing, unpackingرو یادش نبوده هرجا توابع کمکی داشته گفته باید لیست بهم بده و توی جاهای دیگه هم مجبور شده توی مواقعی چندین بار
for loop بزنه بخشی از پردازش رو انجام بده لیست بسازه بده به تابع کمکی بعد دوباره خروجی رو بگیره و روی اون لیست پردازش رو ادامه بده.
varargsو کار این نیرو هم سرعت پروژه رو بیشتر کرده هم پروژه رو تمیزتر؛ قرار شد ۲ هفته این کدهارو کار کنه و تمیز که نسخه ایشون بره برای جایگزینی روی پروداکشن. تصویر بالا یک مثال کوچیک هست (شاید خیلی هم کاربردی نباشه) که خودم الان نوشتم فقط برای اینکه تفاوت رو نشون بدم.
9 610
varargs
یک نیروی جدید به شرکت اضافه شده؛ حدودا ۲۰ ساله چون تازه هم اومده پروژهای نداشتم بهش بدم.
اما یک کد از تیم دیگه بهمون رسیده که هیچکس سراغ تمیز کردنش نمیره؛ بهش دسترسی دادم گفتم این کد رو بخون
یک کد هم از تیم خودمون بهش دادم گفتم اینم بخون
یاد ب9 610
قدیما یک سری مسابقات بود، خیلی دوست داشتنی بود :
اینجوری بود که به کثیفترین کد جایزه داده میشد، نرید قیمه و قرمه بریزید
منظور خوانایی بود 😁
بعدها شرکتی رو وارد شدم که بازی ماهانهاش برای تیم برنامهنویسی هم همین شد (به پیشنهاد تیم خودمون، بله ما اسم فامیل و کارت بازی و ... دوس نداشتیم)
امروز یکی از اون کدها رو دیدم، گفتم راجبش یک پست هم بزنم، خوبی این بازی هم این بود که توی ۲-۳ ساعتی که بازی میکردیم هزاران چیز جدید یاد میگرفتیم و توی این سالهای کاریم این زمان تنها زمانی بود که با عشق میشستم و بازی میکردم با کدها.
برای نمونه کلاس رو اینطوری تعریف میکردیم :
m = "3627"
def __str__(sth):
return f"sth.__class__(members={sth._mem})"
PYHINTS = type("pyhints", (), {
"_mem" : int(m),
"__str__": __str__
})
I = PYHINTS()
print(I)
توی کد بالا هیچ چیزی اشتباه نیست و همه چیز عمدی هست، کد بالا یک مثال خیلی کوچیک بود معمولاً یک تسک بهمون داده میشد
برنده همیشه اونی میشد که :
۱- PEP
رو رعایت نمیکرد
۲- کاری رو میکرد که پایتون باید بکنه، توی مثال بالا من بجای استفاده از
class PYHINTS:
_mem = int(m)
def __str__(cls):
pass
اومدم مستقیم از type استفاده کردم.
فقط اضافه کنم، علاوه بر اینکه بد کد میزنید باید بتونید آخر روز کد خودتون رو روی ۱-۲ تا داده تست بصورت دیباگ خط به خط توضیح بدید.
جدا میگم خیلی چیزا این ساعات بازی یاد گرفتم و به همکاران یاد دادم.
از اسم فامیل و فوتبال دستی و .... هم بهتره 😑9 610
Repost from دستاوردهای یادگیری عمیق(InTec)
#خارج_از_بحث
اصلاً قدرت توضیح دادن و حرف زدن ندارم واقعاً ....
ایران نباید برای افغانهای غیر قانونی اینقدر امنیت داشته باشه.
#اخراج_افغانی_مطالبه_ملی
پ.ن : جنایت مهاجمین غیرقانونی افغان به ایران فقط همین مورد نیست.
اما فکر میکنم این مورد خط قرمز هر ایرانی باشه.
9 610
توی شرکت روی پروژه شرکت مثال زدم؛ عذر میخوام اگر توی تصویر بالا مثال خیلی کاربردی نیست
جایی رو ندیدم مثال خوب / واقعی بزنه یا زده باشه سعی کردم ی مورد مشابه رو مثال بزنم
فرض کنید ما ۳ نوع فایل داریم که خیلی برامون مهم هست :
1- لاگها ؛ خطاهای سرویسها - دیتابیس و ... توی این فایلها نوشته میشه و وجودش برای پروژه بسیار بسیار مهم هست
پس اگر فایل لاگ وجود نداشت پروژه به هیچ وجه نباید روی پروداکشن بره
2- فایلهای کمکی؛ وجودشون مهم هست اما نه اونقدری که نذاریم پروژه بره روی پروداکشن
بعنوان مثال تصویر لوگوی شرکت
3- یک سری گذارشات روزانه مثلا و.ضعیت پرداختها و ...
که بصورت اتوماتیک انتهای ساعت کاری هر روز درست میشه؛ اما اگر یکی از ادمینها یا مشتریها وسط روز بخواد خروجی بگیره ممکنه نداشته باشم.
توی مثال بالا بصورت دیفالت هر ۳ فایل یک ارور رو بر میگردونه :
FileNotFoundError
که اگر بخوایم exception handler بنویسیم باید حتما توی داخلی ترین تابع پردازش نوشته بشه و حتما باید بررسی کنیم که توی یک تابع یا متد بصورت همزمان وجود بیش از ۱ مورد از فایلهای بالا بررسی نشه چون در اون صورت نمیدونیم ارور مربوط به عدم وجود کدوم فایل بوده و نمیتونیم تصمیم بگیریم آیا ابزار باید روی پروداکشن بره یا خیر یا ...
اهمیت custom exception نوشتن همینجا مشخص میشه؛
شما میتونید هرجایی که دلتون خواست و هر نوع فایلی که دلتون خواست رو بررسی کنید.
برنامهنویسهای تیم شما آزادی عمل بیشتری دارند و این یعنی تصمیمات بهتری میتونند بگیرند
دیباگ کردن بسیار راحت تر خواهد بود؛ چرا که به لطف خطاهای مشخص میتونید درجا سروقت تابع یا متدی برید که وظیفه بررسی اون خطا رو داره
جداسازی مفاهیم مختلف؛ مثل بررسی لاگ و اعمالش یا بررسی و برخورد با گزارشات روزانه و ... باعث میشه شما بتونید کد رو به راحتی به افراد مختلف بسپارید و این یعنی کار کردن به صورت پارالل به راحتی قابل انجام هست پس سرعت توسعه کد قطعا بیشتر خواهد بود.
و ...
اتفاقی که امروز افتاد: برای ما روی یک پکیج حیاتی و بسیار بزرگ بود که پیدا کردن باگ داخلش میتونه حتی هفتهها طول بکشه
اما اگر پروژه شما انقدر گسترده نیست میتونید این مورد رو چشم پوشی کنید.
ولی در نظر بگیرید:
هیچ کس از رعایت best practice ها متضرر نشده و نمیشه.9 610
توی شرکت روی پروژه شرکت مثال زدم؛ عذر میخوام اگر توی تصویر بالا مثال خیلی کاربردی نیست
جایی رو ندیدم مثال خوب / واقعی بزنه یا زده باشه سعی کردم ی مورد مشابه رو مثال بزنم
فرض کنید ما ۳ نوع فایل داریم که خیلی برامون مهم هست :
1- لاگها ؛ خطاهای سرویسها - دیتابیس و ... توی این فایلها نوشته میشه و وجودش برای پروژه بسیار بسیار مهم هست
پس اگر فایل لاگ وجود نداشت پروژه به هیچ وجه نباید روی پروداکشن بره
2- فایلهای کمکی
9 610
چندروز قبل بعنوان
Team Lead
یک پروژه دیگهای توی شرکت انتخاب شدم (با تمام مخالفتی که کردم؛ حتی با وجود افزایش دستمزد)
ولی قرار بر این شد امروز لیستی از تمام تغییرات مورد نیاز قبل از اضافه کردن فیچر جدید رو بدم
code reviewاولیه رو انجام دادم و لیست رو نوشتم. یکی از سطر کدهای اصلی که بیشترین زمان ۲ ماه رو براش اختصاص داده بودم و گفتم که همزمان با توسعه فیچر میتونه پیش بره بخش
Exception Customizationبود. حالا چرا به این بخش رسیدم ؟ موقع کد ریوو چون تیم زیردست خودم کار نمیکرد برای درک بهتر اینکه اکثر مشکلات تیم کجا بوده نشستم
git log ( commit messages)
رو خوندم و تغییرات رو نگاه کردم.
همونطور که شاید خیلی از شما هم همین بالاتر تو ذهنتون مرور کردید ۹۰٪ مخالفت روی موضوع
custom exception
بود و منم از این موضوع کوتاه نمیام قطعا.
توی جلسه به اثبات رسید که حل این مشکل حداقل ۳۰٪ باگها رو حل میکنه و حداقل ۱/۳ سرعت دیباگ و توسعه رو بالا میبره بخصوص وقتی تست نویسی ها هم درست بشه.9 610
پیام دادند چه ربطی به رأی دادند داره، چرا همه چیز رو به همه چیز ربط میدی و کلی حرف مفت دیگه ....
شخصاً نه تاحالا رأی دادم
نه رأی میدم.
9 610
#خارج_از_بحث
اینم جالب بود :
قیمت دلار توی سایتهای دولتی و نیمه خصوصی،
به ۵۵.۰۰۰ تومان هم رسیده (مثلاً کنترل کردن و اومد پایین)
ولی برید صرافی واسه حواله زدن.
هیچ چیزی پایین نیومده، قشنگ انگار دولت دستور داده سایتا
قیمتشون رو ساعتی x تومن بیارن پایین 🤣😂
وضع مزخرفی داریم خدایی ...
9 610
توی
code review
هایی که این هفته انجام میدادم به موارد مشابه چیزی که توی تصویر هست زیاد برخوردم؛ هرکدوم از توسعه دهندههای پروژه (۳ نفر) روش متفاوتی رو انتخاب کرده بودند.
اولین کار توافق سر یک دست کردن بود بعد هم گفتم با مثال اینجا بذارم ببینم شما کدوم مورد رو استفاده میکنید ؟
شخصا همیشه روش آخر رو پیاده میکنم؛ اینجا هم راهکار خودم رو پیادهسازی کردم و گذاشتم :
setdefault
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
