دوره های برنامه نویسی منابع زیادی هستن بنده به شخصه به استاد خاصی اشاره نمیکنم و تعدادی دوره میگم چون یادگیری هر فردی متفاوت هستش و ممکن هست هر کس با استادی یاد بگیره دوره های که میگم به شرح زیر هستن دوره پایتون مقدماتی و پیشرفته جادی دوره پایتون رضا دولتی دوره پایتون کدیاد امیر حسین امیری دوره پایتون نابغه ها امیر حسین معلمی دوره پایتون توسعه وب حسین رمضان پور سون لرن ممکنه باز هم دوره های باشه که من اشنایی با اساتیدشون ندارم و دوستانی که زبان انگلیسی خوبی دارن میتونن دوره پایتون یدومی و دوره پایتون لینکدین رو بهشون معرفی میکنم
🧑💻PythonDev🧑💻 pinned «دوره های برنامه نویسی منابع زیادی هستن بنده به شخصه به استاد خاصی اشاره نمیکنم و تعدادی دوره میگم چون یادگیری هر فردی متفاوت هستش و ممکن هست هر کس با استادی یاد بگیره دوره های که میگم به شرح زیر هستن دوره پایتون مقدماتی و پیشرفته جادی دوره پایتون رضا…»
قبل از اینکه خروجی
همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار :
۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون بمونه + تاریخ)
۲- بعد از اینکه تغییرات رو اعمال کردید (اسم تغییرات + تاریخ یا
شاید شما ندونید برای چی ذخیره میکنیم ولی ی روزی نجاتتون میده.
برای گرفتن خروجی بالا توی ترمینال این دستور رو اجرا میکنیم با توجه به این نکته که اسکریپت مثال (توی عکس قبلی رو به اسم
cProfile
رو تفسیر کنم میخوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling
رو بگم.همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار :
۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون بمونه + تاریخ)
۲- بعد از اینکه تغییرات رو اعمال کردید (اسم تغییرات + تاریخ یا
git commit
)شاید شما ندونید برای چی ذخیره میکنیم ولی ی روزی نجاتتون میده.
برای گرفتن خروجی بالا توی ترمینال این دستور رو اجرا میکنیم با توجه به این نکته که اسکریپت مثال (توی عکس قبلی رو به اسم
example.py
ذخیره کردیم)python -m cProfile -s cumulative example.py
و درصورتی که بخوایم خروجی رو ذخیره کنیم که برای آنالیزش از snakeviz, pstats
استفاده بشه و مهمتر از همه داکیومنتش کرده باشیم میتونیم از دستور python -m cProfile -s cumulative -o compare_bubble_vs_builtin_sort_$(date +'%Y_%m_%dT%H_%M_%S').prof example.py
استفاده کنیم؛ حتما پسوند رو .prof
بذارید که راحت شناسایی بشه.
🧑💻PythonDev🧑💻
قبل از اینکه خروجی cProfile رو تفسیر کنم میخوام مهمترین نکته توی زندگیتون موقع استفاده از ابزارهای profiling رو بگم. همیشه و تحت همه شرایط؛ خروجی Profiling رو ذخیره کنید اونم ۲ بار : ۱- قبل از اینکه کدی رو تغییر بدید (همیشه هم به اسمی ذخیره کنید که یادتون…
توی دستور بالا :
تفسیر خروجیش هم خیلی سادهتر از اون چیزی هست که فکر میکنید فقط چندتا نکته داره :
وقتی دوتا عدد هست مثل خط اول خروجی توی عکس قبلی
عدد کوچیکتر تعداد فراخوانی غیر بازگشتی یا
مجموع زمان مورد نیاز از لحظه فراخونی اون خط یا تابع تا خروج از اون خط یا تابع + زمان مورد نیاز برای اجرای توایعی که داخل این تابع یا خط فراخوانی شدند + زمان اجرا بصورت
اسم اسکریپت : شماره خطی که اون کد اجرا شده (اسم تابع)
اسم تابع برای شرایطی مهم هست که داخل تابع اصلی توابع دیگری هم فراخوانی بشه
توی خروجی بالا مواردی مثل
همینجا بگم که تصویر قبلی خروجی کامل
-m:
برای استفاده از یک ماژول خاص استفاده میشه-s:
ترتیب نمایش هست که گفتیم بر اساس cumulative time
باشه همیشه هم همین رو استفاده خواهید کرد-o:
برای اینکه خروجی رو توی یک فایل بریزه و توی ترمینال نمایش نده (اول در تاریخ ثبت میکنیم بعد ی بار هم بدون این option
برای راحتی خودمون اجرا میکنیم)تفسیر خروجیش هم خیلی سادهتر از اون چیزی هست که فکر میکنید فقط چندتا نکته داره :
ncalls:
تعداد فراخوانی اون خط از کد (ستون آخر کمی جلوتر توضیح میدم دقیق)وقتی دوتا عدد هست مثل خط اول خروجی توی عکس قبلی
3/1
:عدد کوچیکتر تعداد فراخوانی غیر بازگشتی یا
primitive
هست و عدد بزرگتر تعداد کل فراخوانی به هر شکلی که بوده (بازگشتی و غیر بازگشتی و ...) یعنی بصورت کلی اون builtin method
توی مثال قبل ۳ بار فراخوانی شده.tottime:
مجموع زمان مورد نیاز جهت اجرای اون تایع؛ به غیر از زمان اجرای توابعی که داخل این تابع فراخوانی شدهاند.percall:
زمان اجرای مورد نیاز برای هربار اجرای اون خط یا اون تابع معمولا حدودی برابر هست با :tottime / ncalls
cumtime:
مهمترین ستون همینه و اون مرتب سازی که توی دستور انجام دادیم (منظورم s cumulative-
هست) بر اساس همین ستون بود.مجموع زمان مورد نیاز از لحظه فراخونی اون خط یا تابع تا خروج از اون خط یا تابع + زمان مورد نیاز برای اجرای توایعی که داخل این تابع یا خط فراخوانی شدند + زمان اجرا بصورت
recursive , ...
خلاصه همه چیز اینجاس و از همه ستونها هم دقیقتر هست filename:lineno(function)
اینم که بسیار واضح هست از سمت چپ به راست :اسم اسکریپت : شماره خطی که اون کد اجرا شده (اسم تابع)
اسم تابع برای شرایطی مهم هست که داخل تابع اصلی توابع دیگری هم فراخوانی بشه
توی خروجی بالا مواردی مثل
builtin.exec
(از توابع مورد علاقه من هست اصن ی وضعی) و برخی موارد دیگر برای import random
هست همینجا بگم که تصویر قبلی خروجی کامل
cProfile
نیست و بنده این خروجی رو بریدم تا خواناتر باشهتوی دورههای آموزشی و دانشگاه چیکار میکنند ؟!
چرا همه جوری صحبت میکنند که انگار همین یک دوره، همین یک کتاب یا ... برای کار و کل عمر کفایت میکنه ؟!
نکنید اینکارو، Junior های عزیز بعضی ازین برگذار کنندههای دوره که فقط به فکر سود شخصی هستند شما مراقب باشید سمت این افراد نرید.
نه بخاطر پول، حتی نه بخاطر وقت که دقیقاً تو دنیای الان برنامهنویسی مثل طلا میمونه
بلکه بخاطر اینکه خیلی از شما دوستان اشاره کردید به گرد ناامیدی شدن پستهای کانال براتون
پستهای کانال سطح بالاتری از تازهکار داره، حتی ممکنه یک سنیور رو ببینید که این مطالب رو بلد نیست (اشکالی هم نداره تا حدودی، چون بهش نیازی نداشته شاید)
اولین کاری که میکنید وقتی دوره تموم شد، اینه که برید مصاحبه
مصاحبهها حتی اگر فقط رد بشید، بهتون کلی اطلاعات مهم میده اینکه بازار کار چی میخواد و چه مواردی رو باید بلد باشید
اگر رد نشدید، که بسیار هم عالی شغل پیدا کردید و این شغل یعنی کلی چیز جدید یاد گرفتن (مخصوصاً برای تازهکار)
حتی بعد از اینکه شغل پیدا کردید، باید یاد بگیرید مصاحبه کنید
این حق شما هست که دنبال کار بهتر با مزایای بیشتر باشید حتی اگر ۱ ماه بعد کار بهتری رو پیدا کنید.
مصاحبه دادن و نترسیدن از رد شدن توی مصاحبه، اولین و مهمترین قدم برای پیشرفت و senior شدن هست
مهمتر اینکه :
همیشه بپرسید به چه دلیل رد شدید.
چرا همه جوری صحبت میکنند که انگار همین یک دوره، همین یک کتاب یا ... برای کار و کل عمر کفایت میکنه ؟!
نکنید اینکارو، Junior های عزیز بعضی ازین برگذار کنندههای دوره که فقط به فکر سود شخصی هستند شما مراقب باشید سمت این افراد نرید.
نه بخاطر پول، حتی نه بخاطر وقت که دقیقاً تو دنیای الان برنامهنویسی مثل طلا میمونه
بلکه بخاطر اینکه خیلی از شما دوستان اشاره کردید به گرد ناامیدی شدن پستهای کانال براتون
پستهای کانال سطح بالاتری از تازهکار داره، حتی ممکنه یک سنیور رو ببینید که این مطالب رو بلد نیست (اشکالی هم نداره تا حدودی، چون بهش نیازی نداشته شاید)
اولین کاری که میکنید وقتی دوره تموم شد، اینه که برید مصاحبه
مصاحبهها حتی اگر فقط رد بشید، بهتون کلی اطلاعات مهم میده اینکه بازار کار چی میخواد و چه مواردی رو باید بلد باشید
اگر رد نشدید، که بسیار هم عالی شغل پیدا کردید و این شغل یعنی کلی چیز جدید یاد گرفتن (مخصوصاً برای تازهکار)
حتی بعد از اینکه شغل پیدا کردید، باید یاد بگیرید مصاحبه کنید
این حق شما هست که دنبال کار بهتر با مزایای بیشتر باشید حتی اگر ۱ ماه بعد کار بهتری رو پیدا کنید.
مصاحبه دادن و نترسیدن از رد شدن توی مصاحبه، اولین و مهمترین قدم برای پیشرفت و senior شدن هست
مهمتر اینکه :
همیشه بپرسید به چه دلیل رد شدید.
چون خیلی پرسیده شده :
اگر تازه کار هستید
برای کسی که تازه میخواد پایتون و برنامهنویسی رو شروع کنه کتاب بسیار خوبی هست (من نسخههای قبلی رو به شاگرد هام معرفی میکردم؛ این نسخه هم قطعاً بهتر هست که بدتر نه پس نخونده معرفی میکنم کتاب رو)
اگر تازه کار هستید
Head First Python (3rd edition)
نسخه اولیه رو O'Reilly منتشر کرده (رایگان تو سایتش میتونید بخونید یا از منابع موجود استفاده کنید و دانلود بزنید)برای کسی که تازه میخواد پایتون و برنامهنویسی رو شروع کنه کتاب بسیار خوبی هست (من نسخههای قبلی رو به شاگرد هام معرفی میکردم؛ این نسخه هم قطعاً بهتر هست که بدتر نه پس نخونده معرفی میکنم کتاب رو)
🧑💻PythonDev🧑💻
#django_roadmap #roadmap امروز یک دوستی، گفت بهش یک roadmap برای شروع جنگو بدم با این بکگراند : ۱- پایتون رو تا سطح خوبی بلد هست ۲- ساختمان داده و الگوریتم رو میشناسه ۳- لینوکس، گیت و داکر رو هم بلده یک بخش دیگه که باعث میشه این Roadmap رو بنویسم، همین…
یکسری از دوستان اشاره کردند که کتاب جزئیات کمی داره و برای کسی که قبل از این وب کار نکرده خیلی راحت و سر راست نیست :
اگر این شرایط برای شما هم صدق میکند، به این لیست میشه یک کتاب دیگر هم اضافه کرد.
کتاب :
Web Development with Django 2nd edition By Ben Shaw, .... (Packt pub)
خوبی دیگری که این کتاب برای دوستان تازهکار داره این هست که توی هر فصل و بعد از هر مبحث یک تمرین جزئی درمورد آنچه صحبت شد هم ارائه میده
فصلهای دیگری هم که بنظرم بهتر توضیح داده برای شروع :
Media serving and file uploads,
Session and authentication
Testing your django application
و بخشهایی (شامل مثال) از فصل های :
Generating CSV, PDF, and other Binary File
Django Third-Party Libraries
هست.
بازم میگم اگر کتاب دیگری خوندید، درگیر کتابهای مختلف نشید، تمرین کردن و با جستجو رسیدن به آنچه که نیاز دارید اولویت باشه براتون
اما اگر سرفصلی هست که فکر میکنید به خوبی متوجه نشدید یا ضعف دارید فقط همون فصل رو از کتاب، دوره یا منبع دیگری دنبال کنید.
بعنوان مثال، فرقی نمیکنه چه کتابی باشه؛ وقتی شما نحوه ساخت پروژه یا راهاندازی اپ توی جنگو رو بلدید دیگه لازم نیست سراغ هر کتابی میرید فصل اول و دوم رو بخونید.
حالا اینجا مثال
Django
بود شما به موضوعات دیگر و ... هم تعمیم بدید این موضوع رو.
اولویت اول شما باید کد زدن و تمرین باشه، شخصاً کل هفته رو کد میزنم
آخر هفته که روز استراحتم هست، ترجیح میدم کتاب بخونم تا مطالب و تکنیکهای جدید رو توی کارهام پیاده سازی کنم (و همین ۱ روز برای خیلی از مباحث و کتابها بیشتر از کافی هست).
اگر این شرایط برای شما هم صدق میکند، به این لیست میشه یک کتاب دیگر هم اضافه کرد.
کتاب :
Web Development with Django 2nd edition By Ben Shaw, .... (Packt pub)
خوبی دیگری که این کتاب برای دوستان تازهکار داره این هست که توی هر فصل و بعد از هر مبحث یک تمرین جزئی درمورد آنچه صحبت شد هم ارائه میده
فصلهای دیگری هم که بنظرم بهتر توضیح داده برای شروع :
Media serving and file uploads,
Session and authentication
Testing your django application
و بخشهایی (شامل مثال) از فصل های :
Generating CSV, PDF, and other Binary File
Django Third-Party Libraries
هست.
بازم میگم اگر کتاب دیگری خوندید، درگیر کتابهای مختلف نشید، تمرین کردن و با جستجو رسیدن به آنچه که نیاز دارید اولویت باشه براتون
اما اگر سرفصلی هست که فکر میکنید به خوبی متوجه نشدید یا ضعف دارید فقط همون فصل رو از کتاب، دوره یا منبع دیگری دنبال کنید.
بعنوان مثال، فرقی نمیکنه چه کتابی باشه؛ وقتی شما نحوه ساخت پروژه یا راهاندازی اپ توی جنگو رو بلدید دیگه لازم نیست سراغ هر کتابی میرید فصل اول و دوم رو بخونید.
حالا اینجا مثال
Django
بود شما به موضوعات دیگر و ... هم تعمیم بدید این موضوع رو.
اولویت اول شما باید کد زدن و تمرین باشه، شخصاً کل هفته رو کد میزنم
آخر هفته که روز استراحتم هست، ترجیح میدم کتاب بخونم تا مطالب و تکنیکهای جدید رو توی کارهام پیاده سازی کنم (و همین ۱ روز برای خیلی از مباحث و کتابها بیشتر از کافی هست).
اگه تو صفحههای وب نیاز داشتید یک قسمت کد برنامهنویسی نمایش بدید (مثل مطلب آموزشی در وبلاگ، مستندات فنی مرتبط با برنامهنویسی و...)، با استفاده از Prism میتونید نمایش بلاک کد رو زیباتر و کاربردیتر کنید.
https://prismjs.com
از سینتکس زبانهای مختلفی هم پشتیبانی میکنه و چندتا تم و کلی پلاگین داره که براساس انتخاب اونها css و js نهایی رو برای استفاده در اختیار شما قرار میده.
https://prismjs.com/#plugins
https://prismjs.com
از سینتکس زبانهای مختلفی هم پشتیبانی میکنه و چندتا تم و کلی پلاگین داره که براساس انتخاب اونها css و js نهایی رو برای استفاده در اختیار شما قرار میده.
https://prismjs.com/#plugins
ازین مدل کد توی سورس کد پکیجها زیاد دیدید همون استاندارد
ارور فریمورک هم واقعا نامشخص نبود و چیزی ازش دستمون رو نمیگرفت (زمانی که
توی سورس اگر کدهارو بخونید یک ساختاری شبیه عکس وجود داره که باعث میشه در نهایت ارور خاص فریمورک برگرده؛ البته با یک تغییر کوچیک توی خط 10 :
پاک کردن همین ۲ کلمه باعث شد توی ۵ دقیقه مشکل حل بشه.
دیدم نیروی خودم بلد نبود گفتم شاید بهتر باشه اینجا هم بذارم بدرد کسی بخوره.
EAFP
امروز یکی از نیروهای junior که باهاشون کار میکنم روی یکی از کدها به اروری میخورد و کار پیش نمیرفت.ارور فریمورک هم واقعا نامشخص نبود و چیزی ازش دستمون رو نمیگرفت (زمانی که
tensorflow 0.7
اومده بود قشنگ یادم هست ازین چالشها زیاد داشتیم)توی سورس اگر کدهارو بخونید یک ساختاری شبیه عکس وجود داره که باعث میشه در نهایت ارور خاص فریمورک برگرده؛ البته با یک تغییر کوچیک توی خط 10 :
raise CustomException('Finally we raise our custom error in framework.')
from None
همین from None
باعث میشه exception
های قبلی چاپ نشه.پاک کردن همین ۲ کلمه باعث شد توی ۵ دقیقه مشکل حل بشه.
دیدم نیروی خودم بلد نبود گفتم شاید بهتر باشه اینجا هم بذارم بدرد کسی بخوره.
🧑💻PythonDev🧑💻
ازین مدل کد توی سورس کد پکیجها زیاد دیدید همون استاندارد EAFP امروز یکی از نیروهای junior که باهاشون کار میکنم روی یکی از کدها به اروری میخورد و کار پیش نمیرفت. ارور فریمورک هم واقعا نامشخص نبود و چیزی ازش دستمون رو نمیگرفت (زمانی که tensorflow 0.7 اومده…
مثال بالا در صورت وجود
from None
یه ترفند ساده و بکند طور
دانلود فایل از لپتاپ خودتون با گوشی
چیزی که لازم دارید پایتون و مودم وایفای هست.
https://github.com/zamaniamin/Python/wiki/Download-Files-From-Your-Computer-By-Your-Phone
دانلود فایل از لپتاپ خودتون با گوشی
چیزی که لازم دارید پایتون و مودم وایفای هست.
https://github.com/zamaniamin/Python/wiki/Download-Files-From-Your-Computer-By-Your-Phone
GitHub
Download Files From Your Computer By Your Phone
Here is a small and summarized training repository of Python and technologies related to Python, like FastAPI, Pytest, Django or even pip commands. - zamaniamin/Python
تو این دو روز زیاد پست اموزشی نگذاشتم و برنامه دارم که برای دوستان عزیز که با زبان برنامه نویسی پایتون کار می کنند و میخوان یه درجه ای از مهارت های بالا در برنامه نویسی برسن سعی بر این دارم که یه منبع کامل از کتاب خانه ها و رفرنس های زبان پایتون به طور کامل و جامع ارائه بدم که سطح عملی خودتون رو بالا ببرید .💻
🧑💻PythonDev🧑💻
دستاورد جدید آنلاک کردم پروژه دارم اوبنتو آپدیت شده (میزان لگ سیستم به خدا رسیده) ممکنه مشکل از انویدیا هم باشه (ولی درست کار میکنه) دمو هم دارم گوگل هم 403 بهم میده (بدون ویپیان) مشکل ۴۰۳ پا برجا نیست (۲۰۰-۳۰۰ تا ویپیان داره برنامهنویس ایرانی) بطور…
قبل اینکه
Kernel
تغییر بدید، یا درایورها رو دستکاری کنید و ...
Bios Update
بزنید، مخصوصاً اگر سختافزار جدید اضافه کردید.
۹۰٪ مشکل حل شد، هنوز بعضی مشکلات وجود داره
و روی نرمافزارها هم فعلاً جدیترین مشکل خودم
smplayer
هست که lag بسیار داره.
پ.ن : توی بررسی لاگهای
احتمال ۹۹٪ دوستانی که هوش مصنوعی کار نمیکنند، به این مشکلات نخواهند خورد
Kernel
تغییر بدید، یا درایورها رو دستکاری کنید و ...
Bios Update
بزنید، مخصوصاً اگر سختافزار جدید اضافه کردید.
۹۰٪ مشکل حل شد، هنوز بعضی مشکلات وجود داره
و روی نرمافزارها هم فعلاً جدیترین مشکل خودم
smplayer
هست که lag بسیار داره.
پ.ن : توی بررسی لاگهای
nvidia
متوجه شدم بخشی از مشکلات از نصب cuda
میاد. بعضی تنظیمات رو خودش کنترل میکنه که نمیشه سختافزار رو مناسب کارهای روزانه optimize
کرد (ولی این مورد هم اون ۱۰٪ مشکل من رو حل نمیکنه چون ازینجا نیست)احتمال ۹۹٪ دوستانی که هوش مصنوعی کار نمیکنند، به این مشکلات نخواهند خورد
🧑💻PythonDev🧑💻
قبل اینکه Kernel تغییر بدید، یا درایورها رو دستکاری کنید و ... Bios Update بزنید، مخصوصاً اگر سختافزار جدید اضافه کردید. ۹۰٪ مشکل حل شد، هنوز بعضی مشکلات وجود داره و روی نرمافزارها هم فعلاً جدیترین مشکل خودم smplayer هست که lag بسیار داره. پ.ن…
۱۰٪ آخر هم یافت شد؛ nvidia یک موردی رو معرفی کرد به اسم
Nvidia GPU stats tool
توی status bar وضعیت دما و ... GPU هارو بهتون میگه، روی سیستم با ۱ کارت گرافیک احتمالاً مشکلات کمتری داره.
اما وقتی داشتم آنالیز میکردم، دیدم GPU اصلی سیستم، سریعا پاسخ میده و GPU دوم که تقریباً ideal و ضعیفتر هست latency بالاتری داره و همین باعث lag روی سیستم میشده
بخصوص موقع پخش video با smplayer چون من hardware decode رو فعال داشتم.
اوضاع بدتر هم میشد، چون من فاصله بین گرفتن وضعیت gpu هارو هم خیلی کم گذاشته بودم.
خلاصه، اینکه حال نداشتم بزنم
پ.ن : قبلاً این مشکل رو با
Nvidia GPU stats tool
توی status bar وضعیت دما و ... GPU هارو بهتون میگه، روی سیستم با ۱ کارت گرافیک احتمالاً مشکلات کمتری داره.
اما وقتی داشتم آنالیز میکردم، دیدم GPU اصلی سیستم، سریعا پاسخ میده و GPU دوم که تقریباً ideal و ضعیفتر هست latency بالاتری داره و همین باعث lag روی سیستم میشده
بخصوص موقع پخش video با smplayer چون من hardware decode رو فعال داشتم.
اوضاع بدتر هم میشد، چون من فاصله بین گرفتن وضعیت gpu هارو هم خیلی کم گذاشته بودم.
خلاصه، اینکه حال نداشتم بزنم
watch -n 1 nvidia-smi
باعث بدتر شدن اوضاع شده بود؛ اینکه Bios کمک کرد هم احتمال میدم بخاطر این بود که progress bar و کم کردن بافر و ... بود (ولی چون قبل از آپدیت بایوس این اطلاعات رو نگرفته بودم نمیتونم مطمئن بگم)پ.ن : قبلاً این مشکل رو با
System Monitor
داشتم که یک gnome extension بود (متأسفانه خیلی دیر یادم افتاد که میتونه ازین موضوع باشه)