Python Hints
8.88K subscribers
182 photos
11 videos
10 files
150 links
Python tips and tricks
The Good, Bad and the Ugly

توی این کانال فقط قرار هست در مورد core python صحبت کنیم.

این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)

Admin: @Abbasi_ai
Download Telegram
Python Hints
آخرین موردی که راجبش صحبت می‌کنیم Makefile هست؛ ی ابزار روی لینوکس داریم به اسم make که خودش ی دوره (حداقل ۴ ساعته لازم داره تا درست متوجه بشید) مثالی که توی تصویر بالا زدم ساده ترین حالت استفاده از make هست و برای توسعه دهنده پایتون کافی. اگر C - Rust…
یک آپدیت روی این بدم؛ یک چندوقتی هست بجای Makefile دارم از Justfile استفاده می‌کنم:
بنظرم یک آپدیت خیلی خوب هست روی Makefile و خیلی هم syntax راحتی داره (اگر قبلتر روی Makefile کار کردید)
مثلا ارسال پارامتر بعد از کامند یا گذاشتن مقدار دیفالت براش خیلی خیلی ساده‌اس

انیجوری نیست که بگم این فیچرهای بهتری داره پس بریم سراغش؛ مثل taskfile هم نیست که یک سری چیز مخصوص به خودش رو اضافه کرده باشه که توی ابزارهای دیگه نبوده و نیست؛ و به نظرم همین هم باعث شده ابزار خوبی باشه اینکه Makefile ولی بهتر رو ارائه داده

مثل کامند‌ less که همون more هست ولی بهتر!

Just Github

پینوشت: توی مثال قبلی من از Makefile بعنوان Command Runner استفاده می‌کنم و نه Builder حواستون به این نکته باشه که Just کاربردش فقط همین هست.
👍161🤣1
"When the bad file with more than 200 features was propagated to our servers, this limit was hit — resulting in the system panicking."
"This resulted in the following panic which in turn resulted in a 5xx error:
thread fl2_worker_thread panicked: called Result::unwrap() on an Err value"



اینو یکی از بچه‌ها توی گروه دیگری فرستاد؛ دیروز نصف اینترنت رسماً قطع شد، چرا ؟ کلودفلیر یک باگ خورده بود.

حالا مشخص شده اون باگ از یک خطای انسانی افتضاح میاد.
داستان اینه؛
یک سرور به محدودیت می‌خوره و از دسترس خارج می‌شه که باعث میشه تمام ریسپانس‌هاش خطای ۵۰۰ باشه؛ اما یک توسعه دهنده بجای اینکه response رو بررسی کنه که آیا ۲۰۰ هست یا نه
فرض کرده چون ما داخل دیتاسنتر هستیم و کلودفلیر هیچوقت غیر از ۲۰۰ نمی‌گیریم.
پس unwrap زده و چون غیر از ۲۰۰ گرفته بوده؛ سیستم ترکیده.

چندتا نکته :
۱- هیچ چیزی رو فرض نکنید، همه چیز رو تست کنید.
من هم توی بعضی کدهام unwrap می‌نویسم؛ اما خیلی وقتا عمدی هست چون واقعاً نمی‌دونم خروجی اون تابع یا ماکرو چطور می‌تونه Error باشه!
می‌نویسم که بیزینس در بیاد.

۲- زبان برنامه‌نویسی Rust فقط امنیت روی مموری بهتون میده؛ قراره نیست براتون نون هم بخره.
نکته جالبتر اینکه؛ AI هم این خطاهارو تشخیص نمی‌ده !!
اینه که همیشه از peer-review استقبال باید بشه.

۳- مورد راحتی مثل خطای 5xx توی http و اینکه حتی این مورد ساده هم تست نشده؛ نشون میده کلودفلیر هم که بری؛ قرار شیت کد ببینی.
پس دوست عزیز حداقل تست بنویس.
👍46🔥3
#خارج_از_بحث

این پست راجب git هست و استخدام؛ می‌خواستم توی رندرنج بنوسیم ولی چون مدیرایی که می‌شناسم بیشتر توی این کانال هستند گفتم اینجا بذارم.
مدیرعامل یک شرکتی باهام تماس گرفت (از طریق یک واسط) مشکلش این بود :
ما یک نیروی Senior استخدام کردیم؛ چون توی شرایط بدی بودیم خیلی هم سریع پروسه استخدام رو پیش بردیم اما الان به یک سری مشکلات خوردیم:
۱- نیروی سنیور پرفورمنس خیلی پایینی داره؛ درحالی که وقتی رزومه‌ای که برامون فرستاد رو بررسی کردیم یک چندتا پروژه روی گیت‌هاب داشت که بسیار شبیه کارهایی بود که ما داریم می‌کنیم (منظورش این بود مطالب باید براش تکراری باشه).
۲- نیروهای دیگه شرکت که بیشتر سطح متوسط و مقدماتی هستند همه از نیروی سنیور (لید تیم هم هست به نوعی) ناراضی هستند و حتی سواد فنی‌اش رو هم قبول ندارند.
درنهایت وقتی هم که به خودش می‌گم؛ می‌گه نیروها دانش کمی دارند؛ حرفای منو متوجه نمی‌شوند و همین باعث شده پرفورمنس خودمم بیاد پایین چون همش باید دنبال یک راهکاری برای توضیح دادن به اینا باشم.

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

یک مقدار کدها رو خوندم بعد با نیروی مثلا سنیور قرار شد چندتا جلسه بذاریم (بحث این بود که ایشون توی جایگاه خودش بمونه و من وارد بشم چون ۳ تا تیم با موضوعات دیگه قرار هست وارد بشه)
همون جلسه اول من بهش مشکوک شدم؛ باور کنید یا نه آدم ناشی و اصطلاحات و لغت حفظ کرده از آدم کار بلد و توی کار تست کرده توی ۱۰-۲۰ دقیقه صحبت فنی به راحتی تفکیک میشه مخصوصا اینجا که یک پروژه واقعی درجریان هست.
با این حال من ۲ تا جلسه دیگه هم با ایشون شرکت کردم.

درنهایت متوجه شدم که کلا دلیل استخدام ایشون پروژه‌های github بوده؛ دوتا شک داشتم خرید ساعت کاری و سفارش به شخص که با اکانت ایشون کامیت بزنه (خودم یک زمانی برای پچه‌های دکتری و ... خارج از ایران اینکار رو می‌کردم. قبلا دربارش گفتم ولی برای کسانی اینکار رو می‌کردم که باسواد بودند و با شرکت‌های خوبی کار می‌کردند و مشکل این بود زمان کافی برای کلاس رفتن و حل تمرین کلاس نداشتند منم واسه یادگیری پول می‌گرفتم.)
شک دومم که بعد از بررسی یک سری پروژه‌های گیت‌هاب بیشتر شد؛ این بود که پروژه‌های آدمای دیگه رو گرفته و لاگ رو تغییر داده.


همین هم بود؛ خلاصه اینکه:
فکر نکنید لاگ git تا ابد ثابت هست؛ همه کاری میشه باهاش کرد.
تغییر ساعت و جزئیات commit؛ تغییر اطلاعات
تغییر اینکه کی commit زده
commit message, branch, merge info, ...

من این موارد رو نشون دادم و اشتباه اون آدم رو هم توی git-log پیدا کردم (یکجا دولوپر اصلی توی یکی از اطلاعات commit خیلی قدیمی یک ایمیل گذاشته بود و ...)
خلاصه که این موضوع رفته برای شکایت یا توافق؛ ولی حواستون باشه git, ... به تنهایی ارزشی نداره دانش شخص و سوادش برای کاری که شما ازش می‌خواید خیلی خیلی مهم تر هست.

یاد داستان اون شخص افتادم که توی گوگل بود؛ به زور کردنش مدیر یک بخش فنی؛ بنده خدا زبونش می‌گرفت نمی‌تونست بگه توی گوگل آبدارچی بوده! چون زودی می‌پریدن تو حرفش 😂
👍548
شرکت Meta در ادامه پروژه‌های OpenSource بالاخره پروژه Pyrefly رو توی نسخه beta منتشر کرد
vscode, pycharm, neovim, ...
مواردی هستند که Extension براشون منتشر شده.

این پروژه یک Language Server, Type checker هست روی پایتون.
چرا Meta اینکار رو کرده ؟
خودشون اعلام کردند مشکل از کدبیس بزرگ Instagram شروع شده تا جایی که انقدر این کد بزرگ بوده که navigate, code complete و ... یا زمان زیادی می‌برده یا بخوبی انجام نمی‌شده برای همین Pyrefly رو توسعه دادند که اولین مشتریش هم تیم Instagram هست و بصورت هفتگی هم آپدیت خواهد شد.
جالبترین نکته اینکه؛ این پروژه هم با Rust نوشته شده و به همین دلیل هم هست که سرعت خیلی بالایی داره.

مهمترین بخش آپدیت Beta بنظرم پشتیبانی از Pydantic, Django هست؛ بخصوص برای Django که کلی کانفیگ نیاز بود توی ابزارهای جایگزین.

درنهایت:
شخصا روی تنظیمات؛ neovim بعد از استیبل شدن اضافه خواهم کرد (اگر خوب پیش بره) و درحال حاضر روی vscode فقط تستش می‌کنم.

Pyrefly Github
👍262
Forwarded from RandRng
مشکل امنیتی جدید whatsapp که باعث شده 3.5 میلیارد پروفایل و اطلاعات پروفایل در کرال بشه؛
این گزارش ربطی به هک شدن واتساپ و ... نداره (چون دیدم بعضی کانالا می‌گن واتساپ هک شده؛ یا سرورهای متا هک شده)

مشکل اصلی که ضرر مالی بزرگی هم مثل اینکه به Meta زده سر نداشتن Rate Limit بوده البته متا سریعا آپدیت کرده و سرعت کرال داده رو کند کرده ولی خب بعد از اینکه ۳.۵ میلیارد اکانت کرال شده.
شماره تماس؛ وضعیت و اگر تصویر پابلیک بوده عکس پروفایل.

خداروشکر من اصلا یوزر واتساپ نیستم؛ حتی برای کار هم نصب نکردم.
ولی خطر کرال شدن این دیتاها برای کاربرها چیه ؟

۱- فیشینگ؛ طرف کلی اطلاعات از شما داره (اسم و فامیل + عکس + شماره تماس) همین می‌تونه برای انجام فیشینگ کافی باشه. ولی بیاید فرض کنیم مثل من فکر کنه.
شماره موبایل شمارو توی پلتفرم‌های دیگه سرچ می‌کنه؛ تلگرام + توییتر + فیسبوک و ...
از تلگرام آیدی‌ها و عکس‌های بیشتر؛ علاقه مندی و ... می‌تونه پیدا بشه
از توییتر و اینستاگرام؛ آدمای نزدیک به شما؛ جبهه گیری سیاسی و کلی اطلاعات بدرد بخور دیگه که ادامه نمیدم ولی فقط همینقدر که تگ زدن شما به لطف LLM ها کار سخت و زمانبری نیست.

۲- پروفایل سازی؛ با این حجم دیتا و داشتن شماره تماس؛ چیزی که توی قدم قبلی گفتم می‌تونه از شما و تمام آدم‌های نزدیک بهتون پروفایل بسازه. توی پلتفرم‌های مختلف بررسی کنه و روی گراف بیاره تا بدونه از چه طریقی به شما نزدیک بشه امکان نفوذ بیشتر هست.

۳- جستجوی یوزر با یک تصویر صورت؛ بدست آوردن شماره و ....

و ... که بازم ترجیح میدم توضیح ندم؛ چه کسایی دربرابر این کرال امن بودند ؟
اگر پروفایل شما روی حالت public نبوده احتمالا امن هستید
اگر هم هست چون این موضوع لو رفته (احتمالا کلی گروه دیگه هم شروع به کرال دیتا کردند) بهتره همین الان پروفابل واتساپ خودتون رو خصوصی کنید.

کاری هم که کردن ساده بوده؛ تمام شماره‌های موجود رو درست کردن ۶۳ میلیارد بعد شروع کردن سرچ کردن اون شماره‌های روی واتساپ!
توی تلگرام اگر این کار رو کرده باشید؛ بلاک می‌شید یا اینکه بعد از ۲۰۰ مورد باید اون‌هارو به شماره‌هاتون اضافه کنید که ظرفیت اینکار هم ۲۵۰ مورد هست.

اما درس امروز برای بکند دولوپر‌ها؛
حتما rate limit بذارید این گروه همه‌ی شماره‌هارو از یک ip کرال کردند. منم کلی پلتفرم ایرانی رو کرال کردم قبلا پس مطمئنم که خیلی‌ها rate limit نمی‌ذارند.

پینوشت:
مثل اینکه این گروه تحقیقاتی بودند و مقاله‌ نوشتن راجبش (آنالیز روی دیتاها زدند)
👍251