Python Hints
8.62K subscribers
170 photos
11 videos
9 files
141 links
Python tips and tricks
The Good, Bad and the Ugly

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

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

Admin: @Abbasi_ai
Download Telegram
نتایج Gemma3 روی LMSys رو دیدید ؟

از نظر تعداد پارامتر و با توجه به اینکه مدل Reasoning نیست بنظر خیره کننده میاد.

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

پ.ن : این مدل بیش از ۱۴۰ زبان رو پشتیبانی می‌کنه.
23👍12
Forwarded from RandRng
و تمام؛ یک سری از دیوایس‌های گوگل پیکسل آپدیتی رو دریافت کردن که native terminal داره Debian linux هم هست.

فعلا فقط shell رو داره ولی درآینده ( آندروید ۱۶ قابلیتی برای اجرای GUI Apps هم اضافه خواهد شد) همزمان گوگل داره روی اتصال و کنترل مانیتور هم انجام میده.

با توجه به قدرت Snapdragon X Elite , ... اتفاقا خیلی هم گزینه‌ي خوبی هست؛ این یعنی مشکلات اجرای داکر منم حل خواهد شد (بله من روی تبلت پایتون و بیشتر Rust کد میزنم که قبلتر صحبت کردیم)
🍾24👍13🎉42
امروز وقتی وارد لینکدین شدم کلی پست راجب پیشنهاد خوندن کتاب fluent python دیدم.

خیلی خوشحالم که این کتاب داره دیده می‌شه؛ یک زمانی بود آدما زبان برنامه‌نویسی رو درست نمی‌شناختند ولی بخاطر جوی که راه افتاده بود
Clean coder, clean code , ....

داشتند می‌خوندند، بعد طرف توی سورس کد پایتونش داشت با استانداردهای جاوا و سی‌شارپ و ... کد میزد؛ تمیز بود ولی پایتون نبود.

https://t.iss.one/pyHints/s/3
31👍11🔥2
Python Hints
امروز وقتی وارد لینکدین شدم کلی پست راجب پیشنهاد خوندن کتاب fluent python دیدم. خیلی خوشحالم که این کتاب داره دیده می‌شه؛ یک زمانی بود آدما زبان برنامه‌نویسی رو درست نمی‌شناختند ولی بخاطر جوی که راه افتاده بود Clean coder, clean code , .... داشتند می‌خوندند،…
#موقت

چندتا کتاب دیگه رو توی این تعطیلات شروع می‌کنم.
البته ازین تعطیلات برای Rust خوندن بیشتر استفاده خواهم کرد، ولی چندتا کتاب دیدم که بنظر خوب میاد برای پایتون اگر مناسب بود حتماً بعد از تعطیلات راجب اونها هم خواهم نوشت.
❤‍🔥33👍6🙏43🎉2
Python Hints
ترجیح می‌دید کتاب راجب کدوم موضوع باشه ؟
البته راجب هر ۳ مورد قبلاً کتاب معرفی شده، گزینه‌ای رو انتخاب کنید که با خوندن کتاب قبلیش خیلی درک درستی از موضوع پیدا نکردید
با وجود کتاب high performance python واقعا گزینه Performance optimization رو برای قشنگی گذاشته بودم، ولی چون بیشترین رای رو آورد با این منابع شروع می‌کنم.

نکات مهم!
بخش زیادی از optimization روی پایتون نیازمند درک خوبی از
concurrency, parallelism,async,...
هست اگر با این موضوعات آشنایی ندارید سعی کنید یاد بگیرید و درک کنیدشون
👍426👨‍💻4🆒3
Forwarded from RandRng
زردی من از تو / سرخی تو از من

#ai_generated
80👎23👍8
RandRng
زردی من از تو / سرخی تو از من #ai_generated
آتیش شادی جشن ایرانی‌ها
شب گذشته خیلی‌ها رو سوزوند.

لذت می‌برم مردمم رو شاد می‌بینم ♥️
❤‍🔥87👍143
Forwarded from RandRng
Media is too big
VIEW IN TELEGRAM
نوروز مبارک 🌹🎊🎉🎉🎊🎉🌹

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

سایه آخوند از وطن دور
❤‍🔥83👍75🔥3
گفتم سال جدیدی یک لیستی از چیزهایی که یک Django Developer باید بلد باشه رو بهتون بدم؛ این موارد حداقل چیزهایی هست که به محض ورود به هر پروژه استاندارد Django باید بلد باشید.
نکته مهم : من ۹۹.۹٪ وقتا فقط Django Rest Framework استفاده می‌کنم پس توی متن هرجا گفتم Django منظورم همون DRF هست.

۱- یک سری چیزها هست که شما باید بلد باشی ربطی به جنگو هم نداره؛ اگر میخوای پیشرفت کنی باید بتونی با اینا کار کنی:

Linux, PostgreSQL, Docker & Docker Compose, Redis, Nginx, Celery & Celery beat
بعضی وقتا RabbitMQ, Kafka هم نیازمندی هست؛ بسته به سطح شما به مرور زمان توی موارد بالا حرفه‌ای تر می‌شید. لینوکس رو خیلی‌ها کنار میذارند که خیلی اشتباه هست؛ ببین کل استک شما قراره بره روی docker, k8s, podman یا ... وقتی یک اتفاقی توی سیستم میوفته و لاگ سرور بهت داده می‌شه هم container شما لینوکس هست هم ۹۹.۹٪ سرور شما؛ اگر نتونی اون مشکل رو بازسازی کنی چطوری میخوای تست بگیری و متوجه‌اش بشی ؟
درحد LPIC1 هم کفایت می‌کنه (اگر خواستید مدرک بگیرید؛ پیشنهاد می‌کنم حتما برای آزمون‌های redhat بخونید)
اگر تاحالا با Linux کار نکردید؛ پیشنهاد نصب و ... بهتون نمیدم؛ از wsl برای تمرین کردن آنچه که لازم هست استفاده کنید و محیط گرافیکی رو بندازید دور؛ شما روی سرور محیط گرافیکی ندارد (درست تمرین کنید).

باقی موارد رو ولی کم کم یادبگیرید؛ کمی یادگیری - بعد تمرین یا استفاده توی پروژه - به چالش و مشکل خوردن - دوباره یادگیری (ادامه یادگیری) و اینکار رو تکرار کنید.
یادبگیرید هر کدوم از موارد بالا چه زمانی استفاده می‌شه و برای چه کاری این موضوع خیلی مهم هست؛ کی باید استفاده کنید و کی نباید استفاده کنید.

اما برای خود Django حداقل چیزهایی که باید همزمان با Django بلد باشید؛ نشده جونیور (حتی بدون سابقه کاری) بیاد پیشم و این موارد رو بلد باشه (به فرض اینکه پایتون رو اصولی یاد گرفته) و توی مصاحبه رد بشه؛ اصلا تا حالا نداشتم واقعا می‌گم :
pytest (basics), djagno-silk, drf-spectacular, faker, factory-boy, djangorestframework-simplejwt, django-axes, django-storage
استاندارد لاگ نویسی هم که درموردش قبلا یک صحبتی داشتیم اون حداقلش هست و بهترش اینه که به ابزارهای موجود وصل بشه.
یک سری چیزا هم توی خود Django هست؛ مثل throttling, middleware, ... که مفاهیمی هست که روی بکند داریم و فارغ از فریمورک باید بلد باشید برای همین صحبتی راجب این موارد ندارم.

واسه همه این‌ها توی سطوح مختلف کلی ویدئو یوتیوب هست و برای مواردی هم که نیست مطمئنم به زودی درست خواهند کرد دوستان؛ ولی نکته مهمتر اینه که یادبگیرید داکیومنت هم بخونید و خودتون رو آپدیت نگه دارید.


پینوشت:
شخصا برنامه‌ای برای ساخت آموزش روی این مباحث یا پروژه‌ها ندارم.
👍8329
Python Hints
گفتم سال جدیدی یک لیستی از چیزهایی که یک Django Developer باید بلد باشه رو بهتون بدم؛ این موارد حداقل چیزهایی هست که به محض ورود به هر پروژه استاندارد Django باید بلد باشید. نکته مهم : من ۹۹.۹٪ وقتا فقط Django Rest Framework استفاده می‌کنم پس توی متن هرجا…
به این موارد
چندتا مورد امنیتی هم اضافه کنید.

دانستن بعضی چیزها وقتی خودتون رو web developer معرفی می‌کنید اجباری هست؛ اونقدر واضح و اجباری که هیچکس از شما راجبش شاید سوال هم نکنه؛ ولی توی کار وقتی ببینند رعایت نمی‌کنید و خرابکاری جدی به بار میارید، از کار کنار گذاشته می‌شید.

چندتا مورد خیلی ساده‌اش :

۱- قبل از هر release باید پکیج‌های اصلی رو بررسی کنید، حتماً باید چک کنید که مشکل امنیتی نداشته باشه، خیلی‌ها توی دنیای python از مکانیزم‌های version lock, pip freeze, ... استفاده می‌کنند.
این کار درست نیست (قبلاً هم صحبت کردم راجبش بجای = از ~= استفاده کنید) شما حداقل باید patch هارو بصورت خودکار بگیرید.
اگر ورژن کتابخانه‌ها رو روی یک ورژن خاص می‌گذارید؛ حداقل باید ابزاری برای بررسی باگ‌های مهم و ورژن کتابخانه‌ها داشته باشید؛ که حتماً توی پایپ لاین این موضوع رو بررسی کنه.

۲- حداقل هر چند وقت یکبار یک نگاهی به داکیومنت اون کتابخانه بندازید، ببینید هنوز maintain می‌شه یا deprecate شده ؟

۳- صرف اینکه؛ JWT و SHA-256 استفاده می‌کنید اپلیکیشن شما امن نیست.
من خیلی دیدم، که توی jwt متأسفانه بعضی‌ها اطلاعات کاربر رو می‌گذارند که خب خیلی اشتباه هست.
یا مثلاً فارغ از اینکه پروژه برای چه کاری هست و چقدر باید امن باشه یا ... همیشه برای password hash از الگوریتم خاصی استفاده می‌کنند مثلا sha2-256

۴- حداقل آشنایی با SQL-Injection, XSS, ... رو باید داشته باشید

و موارد دیگر، البته که خیلی از این موارد رو Django برای شما انجام داده و مطمئن می‌شه وجود نداشته باشه و خیلی های دیگه هم باید توسط برنامه نویس رعایت بشه.
بعضی‌ها حتی باید توی Test نویسی چک بشه وگرنه پروژه که بزرگ بشه احتمالش زیاد هست باعث نفوذ به سیستم و ... بشه.

یادم باشه بعداً یک checklist مخصوص DRF برای این موضوع آپلود کنم؛ تمام موارد رو حداقل در حد آشنایی بدونید و مطمئن بشید پروژه‌ امن هست.
مشکل امنیتی بسیار زیاد توی پروژه‌های دوستان می‌بینم و بهتون اطمینان خاطر میدم که به هیچ‌وجه من ادعایی روی سواد امنیتی و ... ندارم و این موارد بایدهای Software Engineering هست.
👍5313
یکی از خوبای یوتیوب ویدئو گذاشته؛ ولی اینبار Django نیست بلکه زده توی آموزش FastAPI برای من که دیر شده شاید ولی چند نفری پرسیدید FastAPI منبع شروع معرفی کنم؛

این برای شما :

Youtube link

فقط دقت کنید؛ این برای شروع هست با ۴ ساعت آموزش فکر نکنید متخصص بکند شدیدا. 😁
باقیش رو خودتون دنبال کنید و بخونید.
👍4319❤‍🔥5🔥3
Python Hints
https://github.com/pykeras/neovim بالاخره آماده شد. تست هم رفتیم با ۸ نفر از دوستان و ۲ تا از بچه‌های گروه خودمون. فکر می‌کنم خوب باشه. توی ReadMe اصل داستان رو گفتم؛ نکاتی هم برای آنان که می‌اندیشند وجود داره
از اون موقع خیلی تغییرات داشته (اکثرا برای اینکه توی سرعت توسعه کمک بیشتری بده) :

https://github.com/pykeras/neovim

بنظرم اگر از این تنظیمات neovim استفاده می‌کنید حتما این تغییرات آخر رو داشته باشید.
شخصا عادت دارم مشکلات کد رو بیشتر توی terminal ببینم؛ مثل اینکه خیلی از دوستان اینکار رو نمی‌کنند. برای همین updatetime روی تغییرات و پیام‌های مربوط به diagnostic رو از 5sec آوردم روی 150ms.
نکته دوم اینکه ارورهای بلند رو هم بجای اینکه مجبور بشید توی ترمینال ببینید؛ حالا با بردن cursor روی اون خط بصورت کامل توی diagnostic float می‌تونید ببینید که راحت تر شده (راجب این هنوز خودم شک دارم که بهتر هست یا نه ولی چون درخواست براش زیاد بود انجامش دادم)

یک سری تغییرات دیگه هم این مدت داشت (بیشتر fix بود)
برای مثال
<leader>gdp : goto definition peek
درست کار نمی‌کرد؛ بک پنجره floating از اون تابع یا کلاس باز می‌کنه و علاوه بر اینکه می‌تونید جزئیات کد رو ببینید؛ حتی می‌تونید توی همون پنجره ادیت‌های سریع رو توی همون فایل انجام بدید و ...

در نهایت اگر بهبود دیگری وجود داشت ممنون میشم بهم بگید؛ منم لذت میبرم سرعت توسعه کدهام بیشتر بشه.
12👍11❤‍🔥1
Python Hints
به این موارد چندتا مورد امنیتی هم اضافه کنید. دانستن بعضی چیزها وقتی خودتون رو web developer معرفی می‌کنید اجباری هست؛ اونقدر واضح و اجباری که هیچکس از شما راجبش شاید سوال هم نکنه؛ ولی توی کار وقتی ببینند رعایت نمی‌کنید و خرابکاری جدی به بار میارید، از کار…
وقتی صحبت از امنیت میشه خیلی از توسعه دهنده‌های اینکار رو وظیفه تیم امنیت می‌دونند؛ که خب درست هم هست ولی تا یک جایی. شما هم بعنوان توسعه دهنده باید یک سری موارد رو بدونید.
مثلا خیلی دیدم؛ تیم‌های تست نفوذ فراموش می‌کنند (دسترسی ندارند) الگوریتم hash کردن پسورد داخل دیتابیس رو چک کنند؛ اینجا دانش شما بعنوان برنامه‌نویس پروژه خودش رو نشون میده و یک لایه اطمینان بیشتر برای پروژه خواهد بود.

دمشون گرم؛ تیم توسعه Django رو می‌گم چرا که اکثر اتک‌های مهم رو تا جایی که امکانش هست جلوگیری می‌کنند و برای همین هم همیشه می‌گم بکند رو فارغ از فریمورک یاد بگیرید. با این حال بسیاری دولوپر Django هست که حتی زحمت بررسی و آپدیت به آخرین پچ‌های امنیتی رو به خودش نمیده مثلا pip freeze و version locking استفاده کرده.

توی بعضی مواقع هم دانستن بعضی نکات امنیتی برای optimization بهتون کمک می‌کنه؛ مثلا توی password hash ممکن هست تحت یک شرایط خاصی اصلا الگوریتمی مثل Argon2 به کار شما نیاد و به دلایلی بهش نیاز نداشته باشید تحت این شرایط می‌تونید برگردید روی sha256 و از اون استفاده کنید (این یک مثال بود اگر argon2 رو نمی‌شناسید درموردش بخونید؛ توی لیست PASSWORD_HASHERS های Django هم هست ولی خود Django از PBKDF2 استفاده می‌کنه پیشفرض)


خیلی از برنامه‌نویس‌ها سرویس login امنی دارند که از موارد امنیتی خوبی هم استفاده می‌کنه throttling, brute-force blocker, hashing و ... اما بعضی موارد باید فراتر ازین بره؛ چیزی که خیلی ندیدم حتی روی بعضی سرویس‌های لاگین شرکت‌های بزرگ و موارد حساس.
فرض کنید شما login با ایمیل اعضای شرکت بزنید (ایمیل‌های شرکتی اصول خاصی داره و راحت بدست میاد) اگر ایمیل اشتباه باشه response time شاید زیر 20ms باشه ولی وقتی ایمیل درست هست بالای 100ms می‌شه این یکی از تکنیک‌‌های قدیمی مورد استفاده برای نفوذ به صفحات ادمین بوده و هست. شما وقتی username. email رو پیدا کنی یک نگرانی کمتر خواهی داشت.
برای همین کسی که با این موارد آشنا هست؛ برای اینکه response time لاگین درست و غلط رو یکسان کنه وقتی می‌بینه یوزر وجود نداره بجای اینکه درجا پاسخ رو برای کاربر بفرسته یکبار پسورد رو با یک چیز رندم (طبق validation نمی‌تونه توی دیتابیس باشه) حساب می‌کنه و بعد response اطلاعات غلط روی لاگین رو بر می‌گردونه.


البته که من برای این مثال دست روی یک موردی گذاشتم که خیلی‌ها رعایت نمی‌کنند (شاید نیازی هم ندارند) و خیلی‌ها بلد نیستند (باید دنبال یک جیزی هم می‌گشتم که خود django امن نکرده باشه)

یا مثلا توی کار با دیتا قبول نکردن دیتای pickle؛ اینو برگردید بالا من همون اوایل شروع کار کانال گفتم با مثال و حدود ۶ ماه قبل یکی از خوبای دنیای تکنولوژی با همین روش بهش نفوذ شد (hugging face رو منظورم هست)

یا توی شرکت‌هایی که یوزر فایل آپلود می‌کنه و نیروی انسانی باید فایل رو بررسی کنه؛ خیلی وقتا دیدم فقط پسوند فایل بررسی میشه و ...

حالا چه چیزهایی رو باید بعنوان دولوپر بدونید ؟ OWASP TOP 10 حداقلی ترین مواردی هست که شما بعنوان یک دولوپر باید بشناسید و راهای مقابله باهاش رو هم بلد باشید.

ولی بطور خاص برای Django Rest Framework حداقل این cheathseet رو باید داشته باشد
OWASP cheatsheet for DRF

من یک cheatsheet شخصی خودم دارم (شامل مواردی از بخش‌های مختلف همین cheatsheet هم هست) ولی متاسفانه نمی‌تونم به اشتراک بذارم چون آخرین ورژن رو با داکیومنت شرکت ادغام کردم. اما پیشنهاد میدم لینک بالا رو بخونید و حتما حتما حتما نگاهی هم به رفرنس‌هاشون بندازید این خیلی مهمه.
🔥46👍25❤‍🔥9👏1