en
Feedback
Python Hints

Python Hints

Open in Telegram

Python tips and tricks The Good, Bad and the Ugly توی این کانال فقط قرار هست در مورد core python صحبت کنیم. این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی بیش از ۱۰ سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار) Admin: @Abbasi_ai

Show more
9 605
Subscribers
+924 hours
+647 days
+22130 days
Posts Archive
به طرز خیره کننده‌ای تعداد مشاغل remote برای پایتون و django با پرداخت دلاری مبالغ خوب توی چند هفته گذشته بالا رفته حتماً یک سری بزنید (لینکدین) جالبتر اینکه توی پایتون دیگه هوش مصنوعی و ... نیست Senior Python Software Engineer بسیار زیاد شده. من هم که کرم مصاحبه رو دارم، چندتا مورد رو که مصاحبه دادم واقعاً سوالات بطور خیلی منطقی و درستی همون موضوعات Software Engineering هست، فارغ از هرگونه سوال درمورد Framework های معروف پایتون، خیلی‌ها فهمیدند که کسی که core python رو بخوبی بلد باشه می‌تونه توی همون چندماه onboard, تسک‌های اولیه فریمورک مورد نظر شرکت رو یاد بگیره به امید روزی که توی ایران خودمون هم این موضوع جا افتاده بشه (هرجا که خودم مسئول باشم تمام تلاشم رو می‌کنم آدم‌هارو با میزان درک از core python استخدام کنم فریمورک رو همه می‌تونند زود یاد بگیرند) یکی از خفن‌ترین مصاحبه‌ها سوالات الگوریتمش 2-3-4 Tree بود که خب جزو مسائل سخت هست (حتی برای Senior Software Engineering که بسیار مصاحبه جذابی بود برای خودم).

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

مخابرات دیگه علنی می‌دزده #اینترنت_مخابرات
مخابرات دیگه علنی می‌دزده #اینترنت_مخابرات

این آخرین پست درباره موضوع لینوکس و ... هست (با توجه به اتفاقات اخیر) ببخشید که کمی از بحث دور شدم؛ اما هدف داشتم خیلی از بچه‌هایی که روی AI کار می‌کنند و خیلی دیگه از توسعه دهنده‌های پایتون که وقت کاستومایز کردن و ... ندارند به جز Ubuntu متاسفانه گزینه دیگری ندارند برای همین وقتی دیدم Ubuntu دیگه رو به افول گذاشته (تمرکزش روی سرور هست و داره تلاش می‌کنه مثل RedHat بتونه از سرور پول در بیاره) ترجیح دادم کمی از موضوع اصلی کانال دور بشم و روی جایگزین‌های Ubuntu صحبت کنم. توزیع‌های بسیار زیادی رو دوستان معرفی کردند و خودم میشناختم اما موضوع پشتیبانی از فریمورک‌ها و پکیج‌های مورد نیاز AI هم بود و البته سادگی راه‌اندازی توزیع هدف و میزان استیبل بودنش همه این‌ها من رو رسوند به Rocky Linux : 1- روی کاغذ هیچ توزیعی به اندازه این مورد استیبل نیست (که رایگان هم باشه) از روی RedHat Enterprise ساخته می‌شه و افراد مهمی پشتش هستند ( کسانی که CentOS رو این همه سال توسعه دادند )؛ پشتیبانی ۱۰ ساله هم داره ورژن‌های اصلی. ۲- راه‌اندازیش می‌تونه به اندازه سواد و توانایی شما؛ ساده یا سخت باشه مثلا من برای راه‌اندازی چون کارت گرافیک Onboard ندارم نمی‌تونستم از نسخه workstation برای نصب استفاده کنم و رفتم سراغ نسخه minimal ترتیب نصب هم برای اینکه به مشکل نخورید : Rocky linux minimal --> install tty : --> sudo dnf update reboot sudo dnf install group Workstation nvidia-driver installation (follow cuda installation documentation instructions) Before Reboot, Disable nouveau reboot Install cuda and ... ۲ تا نکته من چون تنبل بودم install group رو استفاده کرد بعد مواردی که بدردم نمی‌خورد رو حذف یا ادیت کردم cuda, cudnn, رو از روی داکیومنت اصلی خودشون که سایت nvidia منتشر کرده نصب کردم و بعد از نصب (چون ورژن قدیمی‌ تر رو میخواستم نه آخرین نسخه) repo اش رو حذف کردم. 3- پکیج‌هایی که وجود نداره رو توی epel-release, flatpak, rpmfusion قطعا پیدا می‌کنید که خیلی راحت نصب میشه چندتا توصیه اگر این ویژگی‌ها رو دوست دارید و دستی هم بر آتش دارید یا علاقه به کاستومایز کردن : Xfce رو بجای Gnome استفاده کنید؛ چندتا باگ وجود داره که احتمالا بخاطر تجهیزات من هست (البته بسیار بسیار کمتر از میزان تغییراتی هست که روی Ubuntu باید میدادم تا سخت‌افزارهام کار کنه) و اینکه آزار دهنده نیست. در نهایت Python3.10 وجود نداره که خب باید کامپایل کنید و نصب کنید؛ اصلا هم سخت نیست دیگه (دیفالت 3.9 نصب هست و روی رپو هم 3.11 وجود داره) من اینطوری نصب کردم :
dnf update

dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make sqlite-devel

wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz

tar xzf Python-3.10.13.tgz 

cd Python-3.10.13

./configure --enable-optimizations 

برای دستور بعدی من ۱۴ تا ترد رو در اختیار گذاشتم که سریعتر کامپایل بشه (این عدد رو کمتر می‌تونید بکنید شما)
make -j 14
nproc
make altinstall 

بعد هم تست کنید که درست نصب شده باشه. تا اینجا هنوز هیچکدوم از مشکلات ubuntu رو ندارم و با نصب هیچکدوم از پکیج‌ها هم به مشکل نخوردم (حتی مشکلات و ارورهای بعد از نصب که توی ubuntu وجود داشت رو هم ندارم) امیدوارم تا چندسال آبنده هم همینطوری بمونه. جایگزین مناسب برای Ubuntu توی کارهای ما فعلا فقط و فقط Rocky Linux رو می‌تونم تایید کنم. سوال بحث یا ... اگر بود توی گروه بحث آزاد : @DevChaiChat

Opera browser رو نصب کنید، علاوه بر ویژگی‌های خوبی که داره ( Adblock - Islands , ... ) که یک مرورگر فوق‌العاده سریع هست و ... مثل Microsoft Edge یک هوش مصنوعی برای پاسخ به سوالات هم داره من چندین سوال رو ازش پرسیدم بسیار بهتر از Edge جواب داد، بهش میگم که بهم توصیه شده فلان ابزار روی توی /usr/local نصب کنم ولی می‌دونم جاش باید توی /opt باشه، برام تحلیل کرده چرا opt منطقی‌تر هست، البته خودش هم از اول opt رو پیشنهاد کرده بود.

#موقت در طول این پروسه چون فکر می‌کنم خیلی طولانی تر از آنچه که باید میشه (بخاطر چیزایی که در مورد Nvidia - linux و درگیریشون می‌دونیم) ادامه بحث رو توی @DevChaiChat میذارم، الان توی این وضعیتم که خب Ubuntu *.04 که دیگه stable نیست (سرچ کنید دلایلش میاد) Fedora هم که LTS نداره و اتفاقات اخیر RedHat حتی تصمیم رو خطری می‌کنه RockyLinux به تنهایی فوق‌العاده‌اس اما Nvidia 3090 داره اذیت می‌کنه و نمی‌ذاره محیط‌های گرافیکی حتی موقت نمایش داده بشه (blank screen یا no reponse دارم) یکی از بچه‌ها پیشنهاد داد Rocky رو نصب کنم بعد توی tty2 بیام nvidia رو نصب کنم و ... نمی‌دونم چطوری میشه اوضاع باید تست کنم ولی احتمال زیاد میرم سمت Xfce و بعد باید دستی بشینم کانفیگ کنم. پافشاریم روی Rocky برای این هست که ۱۰ سال پشتیبانی داره و اگر همین بار اول درست کانفیگ بشه، دیگه نباید دردسر خاصی داشته باشم.

این گذارش برای بچه‌های توسعه دهنده هوش مصنوعی و انتخاب توزیع جایگزین برای ubuntu : Fedora 38 رو نصب کردم، مشکلات ubuntu رو اصلا نداشت، درایور تمام سخت‌افزارها رو به درستی نصب کرده بود (خیلی جای تعجب داشت، چون روی اوبونتو و ... همیشه شخصا اینکار رو میکردم، اونم نسخه کاستومایز شده) و البته dual screen رو خیلی فوق‌العاده پشتیبانی میکرد اما مشکلاتش برای کار ما: متأسفانه تقریباً هر ورژن اصلی cuda فقط برای یک نسخه و ورژن از fedora اومده 11.8 --> fedora 35 12.0 --> fedora 36 12.2 --> fedora 37 و هیچکدوم بطور رسمی fedora 38 رو هم پشتیبانی نمی‌کنه که خب خوب نیست. (مشکل از LTS نبودن فدورا هست) اما واقعاً فوق‌العاده بود و بیش از حد سریع. Rocky Linux 9 با نسخه ۸ بسیار کار کرده بودم و عالی بود بخصوص روی سرور ورژن ۹ قطعاً بهتر خواهد بود (امیدوارم) و چون بر اساس RedHat ساخته می‌شه خیالم کاملاً راحته که مشکلات آپدیت و ... Ubuntu رو نخواهد داشت (این پروژه جایگزین CentOS هست و توسط مدیران ارشد همون پروژه اداره میشه، در پاسخ به IBM و عدم حمایت از CentOS بعد از خرید Redhat) در نهایت اگر با این مورد هم زه مشکل بخورم Pop_OS! خیلی سال پیش معرفی کردم و روش بودم، (چون طرفدار system76 بودم) و حالا که پیشرفت زیادی داشته بهتر از ubuntu هم هست (بالاخره یک سرس چشم دیگه روی کدهای ،،u

داشتم با یکی از بچه‌ها چت میکردم یادم انداخت (حدوداً) سری قبلی که این اتفاق برام افتاده بود البته اون موقع Bad sector روی HDD بود تازه داشتم ‌پایتون یاد می‌گرفتم و همه کدهام رو روی پایتون بازنویسی کردم الان دارم Rust یاد میگیرم.

تا ۳ ماه که فکر نمی‌کنم جز کد زدن و رسوندن خودم به جایی که دیشب بودم کاری داشته باشم 😂🤣 ولی اگر وقت کتاب هوش خوندن داشتم قطعاً این کتاب رو شروع میکردم به بررسی : Understand deep learning (book with codes) ولی کد از دست دادن، مرگ که نیست نهایتاً مجبور میشم دوباره بشینم فکر کنم و بزنم (علمش رو که از دست ندادم) خلاصه خیلی هم ناراحت نیستم واقعیتش.

برای من بدترین بخش این داستان نوشتن و ارسال این متن به شرکت‌ها بود، برای منی که تا حالا مرخصی ساعتی هم نگرفتم تسک عقب افتادن واقعاً درد هست : I am sorry to inform you that I will be unavailable for any work-related tasks for at least the next three days. I have lost more than 700GB of code and data due to a technical issue and I need some time to recover it. I appreciate your understanding and patience in this difficult situation. I will only be able to answer calls and provide help if needed, but I cannot do any coding or other assignments until I restore my environment and files. Thank you for your cooperation and support. امیدوارم قبل از روز ۱ شنبه بتونم حداقل کدها رو برگردونم (نسخه اصلی رو روی گیت‌هاب دارم اما خیلی نسخه‌‌ها ایده‌های خودم بودم و شخصی نگه می‌داشتم که مجبور نشم چندباره تست بگیرم) باقی دیتاها رو هیچ نیازی ندارم.

rm -rf روی پارتیشن اشتباه زدم ۷۰۰ گیگ دیتا و کد و ... به فاک رفت بعد از آپگرید، اوبونتو اطلاعات UUID ۲ تا از پارتیشن‌ها رو تغییر داده بود، فکر کردم mount نشده چون چندبار که تست کردم نشده بود و دستور رو اجرا کردم تا دستی mount کنم و بکاپ بگیرم که همه‌ی داده‌ها پاک شد. با این خبر احتمالا چند هفته‌ای در دسترس نیستم.

5-10 دقیقه دیگه لینک رو بر میدارم که دیگه وسط صحبت حواس پرتی بابت تایید درخواست حضور ایجاد نشه

photo content

هی خودش رو غیر فعال کردم، حالا نیرو فرستاده یک سوال جدی ولی دارم، چطوری میشه ریپلای رو روی Message لینکدین بست ؟ کسی اگر می‌دونه بگه لطفاً

فردا بین ساعت ۱۳ تا ۱۵ (شروع قطعاً نزدیک به ۱۳ خواهد بود با ۵-۱۰ دقیقه اختلاف) لینک این جلسه رو خواهم گذاشت با توجه به تعداد Reaction مثبت، فکر می‌کنم google meet ظرفیت کافی رو خواهد داشت.

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

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

توی اون مسئله معرفی توزیع‌ لینوکس جایگزین یکی از دوستان
Senior DevOps
بهم این مورد رو معرفی کرد : NixOS از اونجایی که کاملا خاص بود و تا حالا راجبش نشنیده بودم؛ یک سری جستجو زدم روی این موضوع. و خدا می‌دونه آرزو میکردم زمانی که شغلم سرور بود این رو پیدا کرده بودم و یاد میگرفتم (برای من کاربردی نداره اما اگر شما devops یا linux server کار می‌کنید حتما بهش نگاهی داشته باشید) دستمزدهای کاریش رو هم دیدم (پرداخت‌هاش خیلی خیلی بیشتر از باقی تخصص‌های این زمینه هست)

ReactPy رو سرچ کنید 👌 (برو‌ بچه‌های بکند بخصوص) دیگه چیزی نگم راجبش