🧑💻PythonDev🧑💻
یه سری از دوستان از من خواستن که در مورد یادگیر پایتون و اینکه مسیر اموزش پایتون و بازار کارش بگم خوب من سعی میکنم خیلی کامل توضیح بدم که کم گذاشته نباشم واستون و بهتون تو مسیر یادگیری کمک کنه خوب اول که باید بهتون بگم که واسه یادگیری پایتون مفاهیم اولیه…
و اموزش مفاهیم پیشرفته شما هر چه بیشتر مسیر اموزشتون جلو بره به مفاهیم پیشرفته تری تو پایتون مثل خطا ها و استثنا ها نخ ها و همزمانی و برنامه نویسی شی گرا بپردازین برا این کار میتونید از منابع اموزشی انلانی مانند سایت python.org , real python استفاده کنید یه سری چارچوب ها و پروژه های واقعی هستند که شما با یادگیری این چهارچوب های پایتون مثل Django , Flask میتونید برنامه های تحت وب قدرتمندی رو بسازید شروع به ساخت پروزه های واقعی و تجاری کنید و با کار تیمی و مشارکت تو گروه های توسعه دهنده ها پیشرفت کنید و گام بعدی به روز رسانی هستش پایتون یه زبان برنامه نویسی پویا هستش بنابراین باید بهتون بگم که روزانه از طریق منابع اموزشی انلاین کتاب ها و وبلاگ ها و و جامعه برنامه نویسی پایتون خودتون رو بروز کنید میتونید در دروه های انلاین و دوره های حضوی هم شرکت کنید و مهارت خودتون رو بالا ببرید من در ادامه دوره ای رو معرفی میکنم براتون و یه سری نکته های اصولی هم میگم واستون
🧑💻PythonDev🧑💻
و اموزش مفاهیم پیشرفته شما هر چه بیشتر مسیر اموزشتون جلو بره به مفاهیم پیشرفته تری تو پایتون مثل خطا ها و استثنا ها نخ ها و همزمانی و برنامه نویسی شی گرا بپردازین برا این کار میتونید از منابع اموزشی انلانی مانند سایت python.org , real python استفاده کنید…
تا جایی که میتونید از دیدن دور های با ساعت اموزش خیلی بالا پرهیز کنید این طور تایم که دارید به شدت گرفته میشه در هنگام یادگیری حتما نت برداری بشه و لطفا اگه نت برداری میکنید روزانه مطالع داشته باشید نت برداری کردن و نخوندن باعث میشه مطالب که نوشتید ارشیو بشن و بهشون مراجعه نکنید پس تا جایی که میتونید حتما روزانه ساعت مشخصی رو واسه خوندن مطالب که برداشت کردین بزارین سعی کنید داکیومنت خونی هم داشته باشین با رفرنس ها کتاب خونه های پایتون اشنایی داشته باشید که میتونید به سایت رسمی خود پایتون مراجعه کنید و یا از سایت های دیگر استفاده کنید یادگیری زبان انگلبسی در برنامه نویسی به شدت مهم و تاثیر گذار هستش حتما زبان انگلیسی خودتون رو تقویت کنید از حفظ کردن کد و کد زنی که فقط کد بزنید به شدت پرهیز کنید همه میتونن کد بزنن بیشتر در کنار کد زنی توسعه دادن یه پروژه رو هم یاد بگیرید
🧑💻PythonDev🧑💻 pinned «یه سری از دوستان از من خواستن که در مورد یادگیر پایتون و اینکه مسیر اموزش پایتون و بازار کارش بگم خوب من سعی میکنم خیلی کامل توضیح بدم که کم گذاشته نباشم واستون و بهتون تو مسیر یادگیری کمک کنه خوب اول که باید بهتون بگم که واسه یادگیری پایتون مفاهیم اولیه…»
🧑💻PythonDev🧑💻 pinned «و اموزش مفاهیم پیشرفته شما هر چه بیشتر مسیر اموزشتون جلو بره به مفاهیم پیشرفته تری تو پایتون مثل خطا ها و استثنا ها نخ ها و همزمانی و برنامه نویسی شی گرا بپردازین برا این کار میتونید از منابع اموزشی انلانی مانند سایت python.org , real python استفاده کنید…»
🧑💻PythonDev🧑💻 pinned «تا جایی که میتونید از دیدن دور های با ساعت اموزش خیلی بالا پرهیز کنید این طور تایم که دارید به شدت گرفته میشه در هنگام یادگیری حتما نت برداری بشه و لطفا اگه نت برداری میکنید روزانه مطالع داشته باشید نت برداری کردن و نخوندن باعث میشه مطالب که نوشتید ارشیو بشن…»
دوره های برنامه نویسی منابع زیادی هستن بنده به شخصه به استاد خاصی اشاره نمیکنم و تعدادی دوره میگم چون یادگیری هر فردی متفاوت هستش و ممکن هست هر کس با استادی یاد بگیره دوره های که میگم به شرح زیر هستن دوره پایتون مقدماتی و پیشرفته جادی دوره پایتون رضا دولتی دوره پایتون کدیاد امیر حسین امیری دوره پایتون نابغه ها امیر حسین معلمی دوره پایتون توسعه وب حسین رمضان پور سون لرن ممکنه باز هم دوره های باشه که من اشنایی با اساتیدشون ندارم و دوستانی که زبان انگلیسی خوبی دارن میتونن دوره پایتون یدومی و دوره پایتون لینکدین رو بهشون معرفی میکنم
🧑💻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
تو این دو روز زیاد پست اموزشی نگذاشتم و برنامه دارم که برای دوستان عزیز که با زبان برنامه نویسی پایتون کار می کنند و میخوان یه درجه ای از مهارت های بالا در برنامه نویسی برسن سعی بر این دارم که یه منبع کامل از کتاب خانه ها و رفرنس های زبان پایتون به طور کامل و جامع ارائه بدم که سطح عملی خودتون رو بالا ببرید .💻