این رو همین الان توی مصاحبه ازم پرسیدند : (حتی فرصت فکر کردن به راهحل و ... هم نداشتم)
البته باید بگم که توی مصاحبه یک حجم بالایی از دیتا بهم داده شد و یک کد با بیش از
توی این شرکت قرار هست
باشم و حالا میخوان کدهاشون رو optimize و review کنند
تا اول خط ۱۴ من داشتم مثالی مشابه برای شما آماده میکردم؛ و توی ۸ خط من ۶۰٪ کدهای نفر قبلی رو انجام دادم.
استفاده از
۳ تا مفهوم اصلی بود که با این کد نشون دادم بهش مسلط هستم.
پ.ن :
راستی این یکی از سوالات مصاحبه مرحله دوم بود، مرحله سوم هم که احتمال زیاد
هست.
البته باید بگم که توی مصاحبه یک حجم بالایی از دیتا بهم داده شد و یک کد با بیش از
۱۰۰
خط توی این شرکت قرار هست
senior python developer
باشم و حالا میخوان کدهاشون رو optimize و review کنند
تا اول خط ۱۴ من داشتم مثالی مشابه برای شما آماده میکردم؛ و توی ۸ خط من ۶۰٪ کدهای نفر قبلی رو انجام دادم.
استفاده از
match-case / Destructuring / Runtime type checking
۳ تا مفهوم اصلی بود که با این کد نشون دادم بهش مسلط هستم.
پ.ن :
isbn
رو نباید int
در نظر بگیرید (سربار و …) ولی من برای مثال چیز دیگری به ذهنم نرسید برای همین اینطوری در نظر گرفتمشراستی این یکی از سوالات مصاحبه مرحله دوم بود، مرحله سوم هم که احتمال زیاد
System Design
هست.
👍34✍8⚡2❤2🍾1
Python Hints
من خیلی ازین سالهای آخر رو خرج هوش مصنوعی کردم هم پیشرفت و دستاورد داشتم هم پسرفت راجب پسرفتها بخوام بگم؛ میتونم به موارد زیادی اشاره کنم ولی یک مورد هست که خودم رو خیلی اذیت میکنه اونم کدهای بد هست توی بخش تحقیقاتی کار کردن (هوش مصنوعی و دیتاساینس رو…
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید :
توی شرکت چندتا نیروی بخش
تو زمینه هوش مصنوعی هیچوقت این موارد نیاز نیست (مگر به زمان پروداکشن که من اصلا ندیدم توی ایران کسی اینکار رو بکنه؛ تجربهام با شرکتهای خارجی هم همین رو نشون داده که اونطرف هم اوضاع همین هست)
اما وقتی صحبت از
حالا :
ازونجا که واقعا نمیدونستم اوضاع جامعه پایتون کانال روی این موضوع چطور هست (سنیور - جونیور) گفتم قبل از اینکه متن و آموزشی درمورد این موارد بذارم؛ نظرخواهی کنم که آیا نیاز به آموزش راجب فایلهای داخل عکس و استاندارد سازی ساختار کدهای پایتون دارید یا خیر ؟
لایک : آموزش بذارم
دیسلایک : آموزش لازم نیست.
باقی اموجیها : بذاری بهتر نذاشتی هم خودمون میخونیم.
@PyHints
توی شرکت چندتا نیروی بخش
Backend - software engineering
بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict
های بسیاری خوردیم (روی پروژههای قبلی) حالا قرار هست با این دوستان پروژه جدیدی رو شروع کنیم و برای همین دارم استاندارد سازی میکنم و آموزش میدم نیروها رو.تو زمینه هوش مصنوعی هیچوقت این موارد نیاز نیست (مگر به زمان پروداکشن که من اصلا ندیدم توی ایران کسی اینکار رو بکنه؛ تجربهام با شرکتهای خارجی هم همین رو نشون داده که اونطرف هم اوضاع همین هست)
اما وقتی صحبت از
Backend development, software engineeringمیشه بنظرم باید این موارد رعایت بشه.
حالا :
ازونجا که واقعا نمیدونستم اوضاع جامعه پایتون کانال روی این موضوع چطور هست (سنیور - جونیور) گفتم قبل از اینکه متن و آموزشی درمورد این موارد بذارم؛ نظرخواهی کنم که آیا نیاز به آموزش راجب فایلهای داخل عکس و استاندارد سازی ساختار کدهای پایتون دارید یا خیر ؟
لایک : آموزش بذارم
دیسلایک : آموزش لازم نیست.
باقی اموجیها : بذاری بهتر نذاشتی هم خودمون میخونیم.
@PyHints
👍263🎃8👎2☃1🐳1🌚1🍾1💋1🆒1
Je n'ai pas changé
Julio Iglesias
je n'ai pas changé
Artist: Julio Iglesias
Album : Sono Un Pirata, Sono Un Signore
Released: 1978
Produce: 1978
Genres: Pop
@PytensMusic
Artist: Julio Iglesias
Album : Sono Un Pirata, Sono Un Signore
Released: 1978
Produce: 1978
Genres: Pop
@PytensMusic
❤20⚡1👍1💔1
Python Hints
Julio Iglesias – Je n'ai pas changé
به مناسبت 2k شدن ممبرهای کانال و پیامهای گرم که این مدت از شما عزیزان دریافت کردم.
مرسی از همگی
امیدوارم این آهنگ رو دوست داشته باشید (هرچند میدونم سلیقه موسیقیام با نسل امروز هماهنگ نیست خیلی)
اما برای تشکر از همهی لطفی که دوستان توی این مدت داشتید چیز بهتری برای ارائه نداشتم.
ترجمه رو هم گذاشتم، شاید بیشتر کمک کنه.
مرسی از همگی
امیدوارم این آهنگ رو دوست داشته باشید (هرچند میدونم سلیقه موسیقیام با نسل امروز هماهنگ نیست خیلی)
اما برای تشکر از همهی لطفی که دوستان توی این مدت داشتید چیز بهتری برای ارائه نداشتم.
ترجمه رو هم گذاشتم، شاید بیشتر کمک کنه.
❤38👍5⚡1👎1👏1
Python Hints
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید : توی شرکت چندتا نیروی بخش Backend - software engineering بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict های بسیاری خوردیم (روی پروژههای قبلی) حالا قرار هست با این دوستان…
امکان نداره شما پروژه پایتونی رو کد بزنید و اطلاعات درست پروژه رو ندید
۱- سیستم عاملی که روش کد زدید یا تست گرفتید :
۳- دستور اصلی به جهت اجرای پروژه :
فقط تحت ۱ شرابط حق دارید ۲ مورد اول رو جایی گزارش نکنید و کسی هم بهتون سخت نگیره (هرچند بازم خوب نیست ولی خب) :
Readme.mdحداقل باید شامل ۳ مورد باشه :
۱- سیستم عاملی که روش کد زدید یا تست گرفتید :
OS: Ubuntu 20.04
۲- ورژن پایتونی که دارید استفاده میکنید:Python: CPython 3.10.12
پایتون نسخههای مختلفی داره اگر از نسخه سایت python.org
استفاده میکنید به اسم CPython
شناخته میشه (توی شرکتهایی که از نسخههای دیگه مثل IronPython - Pypy - IntelPython
استفاده میکنند رعایت این نکته بسیار مهم هست)۳- دستور اصلی به جهت اجرای پروژه :
$ python main.py —help
فقط تحت ۱ شرابط حق دارید ۲ مورد اول رو جایی گزارش نکنید و کسی هم بهتون سخت نگیره (هرچند بازم خوب نیست ولی خب) :
Docker
اگر Dockerfile
یا docker image
استفاده میکنید توی پروژه میتونید به ترتیب هر ۳ مورد یا ۲ مورد اول رو توی گزارش ننویسید.❤🔥19👍16⚡2👎2🤔2❤1
فایل بعدی که باید داشته باشید
۱- دیلی شرکت نکردن بدون اطلاع قبلی؛ دستمزد اون روز رو حذف میکنه
۲- پروژه تحویل دادن بدون
اما توی تیم من حداقل ۳ نکته هم باید رعایت بشه :
۱- بجای یک فایل باید ۳ تا فایل برای
تصویر بالا برای فایل
requirements.txt
نبودش توی تیم ما خطای بزرگی هست :۱- دیلی شرکت نکردن بدون اطلاع قبلی؛ دستمزد اون روز رو حذف میکنه
۲- پروژه تحویل دادن بدون
requirements.txt
درست بین ۲ تا ۷ روز کسر از دستمزد داره (اهمیت رو ببینید)اما توی تیم من حداقل ۳ نکته هم باید رعایت بشه :
۱- بجای یک فایل باید ۳ تا فایل برای
requirements
داشته باشید base.txt- local.txt - product.txt
یک پوشه به این اسم میسازید و این ۳ فایل داخلش قرار میگیره تصویر بالا برای فایل
base.txt
هست؛ این فایل شامل پکیجهایی میشه که چه توی محیط توسعه چه توی پروداکشن باید وجود داشته باشه local.txt
برای محیط توسعه هست خط اول این فایل همیشه باید -r base.txt
باشه که بصورت اتومات پکیجهای داخل base
رو هم شامل بشه موقع نصب و باقی خطهای فایل شامل پکیجهایی میشه که فقط توی محیط توسعه لازم هست :black, isort, flake8, pre-commit, ...
و در نهایت prod.txt
مواردی که فقط روی پروداکشن لازم هست بازم خط اول باید-r base.txt
باشه حتما و قطعا چیزی که توی local
هست نباید اینجا باشه.👍27⚡2👎2☃1❤1🌚1
Python Hints
فایل بعدی که باید داشته باشید requirements.txt نبودش توی تیم ما خطای بزرگی هست : ۱- دیلی شرکت نکردن بدون اطلاع قبلی؛ دستمزد اون روز رو حذف میکنه ۲- پروژه تحویل دادن بدون requirements.txt درست بین ۲ تا ۷ روز کسر از دستمزد داره (اهمیت رو ببینید) اما توی…
۲- تمامی پکیجها باید ورژن داشته باشند اما استفاده از
استفاده میکنیم دلیلش هم این هست که آپدیتهای پچ رو بتونیم دانلود و نصب کنیم (چه امنیتی باشه چه رفع باگهای ساده) بدون اینکه نیازی به تغییر حتی ۱ خط کد باشه
۳- تا جایی که امکان داره موارد رو بصورت دستی بنویسید و از
این مواردی هست که توی تیم بنده رعایت میشه و تجربه بهم نشون داده کار خوبی هست (جاهای دیگه هم دیدم این مورد رو)
برخی از
بازم میگم ما ترجیح میدیم راجب انتخاب ابزار هیچ فشاری روی باقی تیم نداشته باشیم.
==
برای ورژن زدن پکیجها ریکامند نمیشه بجاش از ~=
استفاده میکنیم دلیلش هم این هست که آپدیتهای پچ رو بتونیم دانلود و نصب کنیم (چه امنیتی باشه چه رفع باگهای ساده) بدون اینکه نیازی به تغییر حتی ۱ خط کد باشه
۳- تا جایی که امکان داره موارد رو بصورت دستی بنویسید و از
pip freeze
دوری کنید؛ که فقط پکیجهای اصلی ذکر بشه و فایل تمیزتری برای بررسی وجود داشته باشه.این مواردی هست که توی تیم بنده رعایت میشه و تجربه بهم نشون داده کار خوبی هست (جاهای دیگه هم دیدم این مورد رو)
برخی از
toml , ...
استفاده میکنند که من برای پروژه تیمی تایید نمیکنم چون هرکسی ممکن ازین ابزارها استفاده نکنه ولی اگر کل تیم شما با اون فرمول پیش میره شما هم همون کار رو بکنید.بازم میگم ما ترجیح میدیم راجب انتخاب ابزار هیچ فشاری روی باقی تیم نداشته باشیم.
👍33☃1⚡1❤1👎1
Python Hints
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید : توی شرکت چندتا نیروی بخش Backend - software engineering بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict های بسیاری خوردیم (روی پروژههای قبلی) حالا قرار هست با این دوستان…
.editorconfig
من بیشتره استفاده ازین فایل و استاندارد رو زمانی داشتم که از vscode
روی چندین زبان برنامه نویسی استفاده میکردم که هرکدوم استانداردهای خودش رو داشت javascript, python, rustو هر گروه از آدمهایی که باهاشون کار میکردم هم استاندارد خودشون رو داشتند مثلا تیم
js
تعداد indent
رو دو درنظر میگرفت و یک تیم دیگه این مقدار رو چهار و ... یعنی هر پروژه کانفیگ خودش رو داشت.الان خیلی کاربردی نداره مخصوصا اینکه با تیمی که باهاش کار میکنم چندسالی هست باهم کد رد و بدل کردیم و یک توافق نانوشته باهم داریم روی کانفیگ
vscode
ولی خب توی آموزش باید این موضوع باشه مهمترین
option
ها اینجا هست؛ فقط توجه کنید همهی IDE
ها و ... معروف ازین مورد پشتیبانی میکنند فقط شاید لازم باشه تیک فعال سازیش رو بزنید vscode :
settings > search for : EditorConfig > Use Editor Config
برای توضیحات بیشتر :https://editorconfig.org/
👍24⚡2🤔2❤1☃1👎1
Python Hints
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید : توی شرکت چندتا نیروی بخش Backend - software engineering بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict های بسیاری خوردیم (روی پروژههای قبلی) حالا قرار هست با این دوستان…
.flake8
وقتی از flake8
استفاده میکنید که یکسری از استانداردها رو بررسی کنه و درصورت رعایت نشدن ارور بده احتمالش زیاد هست که بخواید یکسری تغییرات توی تنظیمات دیفالتش اعمال کنید.برای مثال من روی پروژههای
django
بعد از پایتون ورژن ۳.۴ بصورت تصویر بالا تنظیمش میکنم؛ خطوطی که کامنت کردم تنظیمات مهمی هست که بنظرم لازم بود بدونید.البته که وقتی از
pre-commit
استفاده میکنیم به این فایل نیازی نداریم؛ توی پستهای بعدی میگم چرا👍36❤1⚡1👎1🔥1💯1
Python Hints
.flake8 وقتی از flake8 استفاده میکنید که یکسری از استانداردها رو بررسی کنه و درصورت رعایت نشدن ارور بده احتمالش زیاد هست که بخواید یکسری تغییرات توی تنظیمات دیفالتش اعمال کنید. برای مثال من روی پروژههای django بعد از پایتون ورژن ۳.۴ بصورت تصویر بالا تنظیمش…
.pre-commit-config.yaml
من نمونه تنظیمات خودم رو گذاشتم که هرکسی دوست داشت استفاده کنه pre-commit
س سری تنظیمات میگیره (به اسم هوک) و قبل از کامیت کدها اونهارو اجرا میکنه برای مثال توی تصویر بالا من :flake8, black, isort, mypyو یکسری از extension های معروف flake8 که خودم باهاشون کار میکنم رو گذاشتم.
نکات مهم :
۱- من از
poetry
استفاده نمیکنم برای همین تنظیمات مورد نیازم رو توی همین فایل مینویسم.۲- نیازی ندارید پکیجهای بالا
flake8, black, isort, mypyرو توی
requirements/local.txt
که قبلتر توضیح دادم قرار بدید؛ فقط pre-commit
رو به فایل local.txt
اضافه و نصب میکنید خود این ابزار با شعور هست و پکیجهای مربوط به هر هوک رو دانلود و نصب میکنه.فقط توجه کنید هربار که یک
repo
جدید اضافه میکنید یا تغییرات اساسی روی این فایل دارید ۲ تا دستور رو بزنید :pre-commit uninstall
pre-commit install
این دستورات چیزی رو حذف نمیکنه فقط pre-commit
متوجه میشه چه مواردی رو باید دنبال کنه (یادتون نره قبلش git
رو داشته باشید)👍31❤4⚡2
Python Hints
.pre-commit-config.yaml من نمونه تنظیمات خودم رو گذاشتم که هرکسی دوست داشت استفاده کنه pre-commit س سری تنظیمات میگیره (به اسم هوک) و قبل از کامیت کدها اونهارو اجرا میکنه برای مثال توی تصویر بالا من : flake8, black, isort, mypy و یکسری از extension های…
تصویر: نمونه خروجی
pre-commit
در نهایت برای بررسی ارورها ( isort, black, mypy
بصورت اتوماتیک بعد از اینکه ارور رو نشون دادند فایلها رو تغییر میدند و درست میکنند) دستور زیر رو اجرا میکنید pre-commit run --all-files
البته --all-files
رو اگر نزنید pre-commit
بصورت خودکار فقط روی فایلهایی اعمال میشه که گیت اعلام کنه تغییرات داشتند ولی خب برای پروژههای کوچیک اجراش ضرری نداره.👍33❤4⚡1
Python Hints
فونت vscode من وقتی کسی نباید بفهمه چی کد میزنم (چون افرادی که بخشی از کار بهشون سپرده شده توی تیم رقیب رفقای صمیمی دارند) این جنگ تیمی هست 😂😂😂 شماهم ازین جنگها دارید ؟ پ.ن : اومدم ی مثال واقعی از پست قبلی بزنم font اینطوری بود گفتم از شما هم بپرسم. (البته…
الان دوستان اشاره کردند، فونت ترمینالم هم از همون قانون فونت vscode پیروی میکنه ؟
باید بگم هم بله هم خیر،
بله : بابت اینکه فونت شکسته هست
نه : خودم شخصاً این فونت رو راحتتر میخونم و چشمم رو کمتر اذیت میکنه
باید بگم هم بله هم خیر،
بله : بابت اینکه فونت شکسته هست
نه : خودم شخصاً این فونت رو راحتتر میخونم و چشمم رو کمتر اذیت میکنه
👍24😁10🍓3👀2❤1🙈1
#موقت
دوستان
روی پستها داشته باشید لطفا
من بر اساس این مورد متوجه میشم که یک موضوع رو ادامه بدم یا اینکه پستهاش رو حذف کنم.
بعد حذف میکنم ی دفعه میشه مثل مورد چندماه پیش که اکثرا بعد از حذف گفتید موضوع خوبی بود.
پ.ن : روی موضوعی که حال نمیکنید
Reaction
نداشته باشید یا حتی
dislike
بدید (به این موارد هم توجه دارم)
دوستان
reaction
روی پستها داشته باشید لطفا
من بر اساس این مورد متوجه میشم که یک موضوع رو ادامه بدم یا اینکه پستهاش رو حذف کنم.
بعد حذف میکنم ی دفعه میشه مثل مورد چندماه پیش که اکثرا بعد از حذف گفتید موضوع خوبی بود.
پ.ن : روی موضوعی که حال نمیکنید
Reaction
نداشته باشید یا حتی
dislike
بدید (به این موارد هم توجه دارم)
❤🔥51👍36👎7👻3❤2🎉2🐳2😐2🆒1
Python Hints
پستی که روش ریپلای زدم رو اگر نخوندید شاید بد نباشه بخونید : توی شرکت چندتا نیروی بخش Backend - software engineering بهم سپرده شده (سنیور توشون نیست) که توی همین چند مدتی که گذشته به conflict های بسیاری خوردیم (روی پروژههای قبلی) حالا قرار هست با این دوستان…
آخرین موردی که راجبش صحبت میکنیم
اگر
Documentation
فقط ی توضیح کوتاه بدم؛ تعریفش این هست.
خلاصه که ی خط در میون ممکنه ببینید دستور شما اجرا نمیشه.
دو خط بعدی میگه که
برای اجرا میزنید :
Makefileهست؛ ی ابزار روی لینوکس داریم به اسم
make
که خودش ی دوره (حداقل ۴ ساعته لازم داره تا درست متوجه بشید) مثالی که توی تصویر بالا زدم ساده ترین حالت استفاده از make
هست و برای توسعه دهنده پایتون کافی. اگر
C - Rust , ...
کد میزنید بهتره کامل یادبگیرید خیلی کمک میکنه واقعاDocumentation
فقط ی توضیح کوتاه بدم؛ تعریفش این هست.
make command compiles different program pieces and builds a final executable.
توی فایل بالا و روی 20:.PHONY:
توی دنیای پایتون همیشه این رو قبل از دستوری که میخواید بنویسید بذارید؛ اگر این رو نذارید make ابتدا دنبال فایلی با اسم دستوری که گذاشتید میگرده و اگر توی پروژه فایلی به این اسم وجود داشته باشه که به تازگی هم آپدیت شده دستور رو اجرا نمیکنه؛ در صورت نبود اون فایل یا تغییر زمانی دستور شما رو بصورت کامند اجرا میکنه و timestamp
فایل رو تغییر میدهخلاصه که ی خط در میون ممکنه ببینید دستور شما اجرا نمیشه.
دو خط بعدی میگه که
make
در صورت دیدن این دستور باید چی رو اجرا کنه برای اجرا میزنید :
make migrate
برای مثال بالا.👍38⚡2
Python Hints
آخرین موردی که راجبش صحبت میکنیم Makefile هست؛ ی ابزار روی لینوکس داریم به اسم make که خودش ی دوره (حداقل ۴ ساعته لازم داره تا درست متوجه بشید) مثالی که توی تصویر بالا زدم ساده ترین حالت استفاده از make هست و برای توسعه دهنده پایتون کافی. اگر C - Rust…
برای خط ۳۸-۳۹ تصویر بالا؛ اگر خواستید چندتا دستور رو پشت هم اجرا کنید باید همرو توی یک خط بنویسید.
نکته دیگه اینکه ممکنه یک سری علامت توی
Automatic Variables documentation
make
متوجه هست که ابتدا باید make prodsetupو بعد
make migrateرو اجرا کنه تا
make produpdate
به درستی انجام بشه.نکته دیگه اینکه ممکنه یک سری علامت توی
Makefile
هایی که از جایی میگیرید ببینید؛ توی پایتون من ندیدم و بیشتر توی C- Rust
دیدم این موارد رو مثل :$<, @, %, $^
هر کدوم ازینها یک معنای خاص دارند که من چون توی پایتون کاربرد نداره توضیح نمیدم ولی برای ساده سازی Makefile
ازش استفاده میشه و بهشون Automatic Variables
گفته میشه برای آشنایی بیشتر :Automatic Variables documentation
👍22⚡3
به یک باگ (باگ هم نمیشه گفت البته، بیشتر سر نبود داکیومنت هست شاید) بر خوردم بعد فهمیدم این آهنگ چقدر به موقعیت میاد
خشم و خستگیم به لبخند تبدیل شد :
https://t.iss.one/PytensMusic/145
پ.ن : مخاطب آهنگهای شما هم هستم،
کسی موسیقی خوب داشت حتماً برای منم بفرسته 🌹
خشم و خستگیم به لبخند تبدیل شد :
https://t.iss.one/PytensMusic/145
پ.ن : مخاطب آهنگهای شما هم هستم،
کسی موسیقی خوب داشت حتماً برای منم بفرسته 🌹
Telegram
Mine
#پیشنهاد_شما
😁9❤🔥4👍1🤓1
خیلی دوست دارم این کتاب رو بخونم، چند بخشش رو برای دمو گذاشتند که بنظرم این مباحث رو خیلی خوب توضیح داده بود (نمیدونم باقی موارد هم همینطور هست یا خیر)
برای خرید فقط نسخه
Epub
رو میتونم بخرم (که اصلاً طرفدارش نیستم)
نسخه pdf رو چندتا سایت ایرانی برای فروش گذاشتند، که خب پیگیر شدم بدون مجوز نویسنده هست و ایشون هیچ درآمدی ازش نداره.
Amazon Link
اگر کسی این کتاب رو خونده، یک پیام بهم بده حتماً. (میخوام نسبت به کتاب قبلی مقایسه کنیم)
برای خرید فقط نسخه
Epub
رو میتونم بخرم (که اصلاً طرفدارش نیستم)
نسخه pdf رو چندتا سایت ایرانی برای فروش گذاشتند، که خب پیگیر شدم بدون مجوز نویسنده هست و ایشون هیچ درآمدی ازش نداره.
Amazon Link
اگر کسی این کتاب رو خونده، یک پیام بهم بده حتماً. (میخوام نسبت به کتاب قبلی مقایسه کنیم)
👍20❤1🌚1
#django_roadmap #roadmap
امروز یک دوستی، گفت بهش یک roadmap برای شروع جنگو بدم با این بکگراند :
۱- پایتون رو تا سطح خوبی بلد هست
۲- ساختمان داده و الگوریتم رو میشناسه
۳- لینوکس، گیت و داکر رو هم بلده
یک بخش دیگه که باعث میشه این Roadmap رو بنویسم، همین موضوع هست که خیلی از بچهها بهم گفتند چطوری تونستی بعد از ۲ هفته یادگیری جنگو شروع به کار کنی ؟
اول باید بگم که من ۲ هفتهای فهمیدن جنگو رو مدیون زحماتی هستم که روی پایتون کشیدم، بر عکس خیلیها که شروع میکنند فریمورک یادگرفتن من فارغ از فریمورک توسعه وب رو یاد گرفتم و بعد اومدم سراغ جنگو (هرچند توی جنگو خیلی جا برای پیشرفت دارم و باید زحمتش رو بکشم هنوز)
برای همین هست که وقتی کسی بهم میگه roadmap بده میگم ۳-۶ ماه اول فقط پایتون، من به خیلیها گفتم کتاب
رو جلوت بذار و سرفصلهاش رو بخون، اگر مفهومی رو بلد نیستی یعنی هنوز آماده نیستی که بری سراغ فریمورک (حالا اینکه این موضوع برای نسل آینده برنامهنویسی توسعه میشه، خودش یک داستان هست. یعنی این نسخه رو نمیشه برای همه پیچید ولی قطعاً این بهترین راه هست)
تکنیکی که شخصاً باهاش فریمورک و ... رو یاد میگیرم، مختص خودم هست و اسمش رو منبع سوزی میذارم، چطوری هست ؟
۱- اول مطمئن میشم با اون فریمورک ارتباط برقرار میکنم و جوگیر شدن و ... درکار نیست
برای مثال روی همین جنگو :
اول رفتم سراغ این پلی لیست :
Youtube Playlist
دفعهی اول با سرعت 3x نگاهش کردم کامل که تقریباً ۱ روز جمعهام رو گرفت، بعد یک سری تحقیق کردم و مطمئن شدم ازین فریمورک خوشم اومده
دفعهی دوم همین پلی لیست رو با دقت بیشتر و روی سرعت 1.5x نگاه کردم.
توی این تکنیک برای قدم اول هیچ نیازی به کد زدن نیست، شما تکیه میدی و از دیدن فیلم لذت میبری، توی دفعهی دوم دیدن ویدئو منابع مهم رو روی یک مرورگر دیگه باز میکنید مثلاً: من متوجه شدم چیزهایی به اسم :
وجود داره و همینجا متوجه شدم نیاز من یادگیری با جزئیات
هست و نه
2- یادگیری از یک منبع مناسب، من کتابهای زیادی رو خوندم چون منبع جامع و مناسبی پیدا نکردم برای
ولی دیروز شروع کردم به خوندن یک کتابی که سرفصلهای جالبی داشت و ۳ فصل اول رو خوندم و تموم شد که بنظرم منبع خیلی خوبی اومد نسبت به کتابهای دیگری که خوندم :
Becoming an Enterprise Django Developer
By Michael Dinder (Packt pub)
دقت کنید من هنوز کل این کتاب رو نخوندم ولی تا اینجا خیلی خوب توضیح داده برای شروع.
توی این قدم معمولاً اینطوری عمل میکنم که وقتی ۱ فصل رو خوندم و تموم شد، چند ساعتی به کارهام میرسم و بعد بر میگردم سراغ کتاب اما قبل از شروع فصل جدید بدون اینکه به کتاب رجوع کنم سعی میکنم کل نیازمندی و چیزی که توی اون فصل یادگرفتم و نیاز هست برای فصل بعدی رو بر اساس یادگیریم پیادهسازی کنم.
وقفه بین کتاب و کد برای این هست که مطمئن بشم چیزی رو از حفظ نمیزنم و موضوع رو درک کردم تنها منبعی که میشه توی این بخش ازش استفاده کرد : گوگل + داکیومنت رسمی جنگو هست
۳- هرکتابی که انتخاب کنید، وقتی یک مفهوم رو توضیح میده برای موارد بیشتر و دقیقتر به منبع اصلی
وقتی یک فصل رو تموم میکنید، بعد از اینکه اون فصل رو کدهاش رو زدید و تموم شد
باید برگردید روی کتاب و همون فصل و منابعی که برای خوندن بیشتر بهتون معرفی کرده رو بخونید.
این قدم بسیار بسیار مهم هست، چون هم با اصطلاحات آشنا میشید، هم با اکو سیستم اون فریمورک و هم یاد میگیرید چطور باید از داکیومنت فریمورک استفاده کنید بدون اینکه وقت تلف کنید.
قدم ۴ - یادگیری هیچوقت متوقف نمیشه، نیاز شما هم هیچوقت یکسان و ثابت نیست، بر اساس نیاز منابع جدید پیدا میکنید، سورس کد باقی افراد رو میخونید که به سمت یک نویسنده یا مدرس بایاس نشید، توی این قدم هرجوری که حال میکنید ادامه بدید.
پس اگر از نحوه خوندن من و البته بخش اول که پیشنیاز هست بگذریم ۴ تا منبع معرفی میشه کرد :
1- YouTube PlayList
نسخه
2- Becoming an Enterprise Django Developer By Michael Dinder (Packt pub)
3- Django documentation
4- Django Rest Framework
امروز یک دوستی، گفت بهش یک roadmap برای شروع جنگو بدم با این بکگراند :
۱- پایتون رو تا سطح خوبی بلد هست
۲- ساختمان داده و الگوریتم رو میشناسه
۳- لینوکس، گیت و داکر رو هم بلده
یک بخش دیگه که باعث میشه این Roadmap رو بنویسم، همین موضوع هست که خیلی از بچهها بهم گفتند چطوری تونستی بعد از ۲ هفته یادگیری جنگو شروع به کار کنی ؟
اول باید بگم که من ۲ هفتهای فهمیدن جنگو رو مدیون زحماتی هستم که روی پایتون کشیدم، بر عکس خیلیها که شروع میکنند فریمورک یادگرفتن من فارغ از فریمورک توسعه وب رو یاد گرفتم و بعد اومدم سراغ جنگو (هرچند توی جنگو خیلی جا برای پیشرفت دارم و باید زحمتش رو بکشم هنوز)
برای همین هست که وقتی کسی بهم میگه roadmap بده میگم ۳-۶ ماه اول فقط پایتون، من به خیلیها گفتم کتاب
Fluent Python
رو جلوت بذار و سرفصلهاش رو بخون، اگر مفهومی رو بلد نیستی یعنی هنوز آماده نیستی که بری سراغ فریمورک (حالا اینکه این موضوع برای نسل آینده برنامهنویسی توسعه میشه، خودش یک داستان هست. یعنی این نسخه رو نمیشه برای همه پیچید ولی قطعاً این بهترین راه هست)
تکنیکی که شخصاً باهاش فریمورک و ... رو یاد میگیرم، مختص خودم هست و اسمش رو منبع سوزی میذارم، چطوری هست ؟
۱- اول مطمئن میشم با اون فریمورک ارتباط برقرار میکنم و جوگیر شدن و ... درکار نیست
برای مثال روی همین جنگو :
اول رفتم سراغ این پلی لیست :
Youtube Playlist
دفعهی اول با سرعت 3x نگاهش کردم کامل که تقریباً ۱ روز جمعهام رو گرفت، بعد یک سری تحقیق کردم و مطمئن شدم ازین فریمورک خوشم اومده
دفعهی دوم همین پلی لیست رو با دقت بیشتر و روی سرعت 1.5x نگاه کردم.
توی این تکنیک برای قدم اول هیچ نیازی به کد زدن نیست، شما تکیه میدی و از دیدن فیلم لذت میبری، توی دفعهی دوم دیدن ویدئو منابع مهم رو روی یک مرورگر دیگه باز میکنید مثلاً: من متوجه شدم چیزهایی به اسم :
Redis, Celery, Flower, django rest framework, ...
وجود داره و همینجا متوجه شدم نیاز من یادگیری با جزئیات
DRF
هست و نه
Django forms
یا template
نویسی پس این دو مورد رو خیلی کم روش وقت گذاشتم.2- یادگیری از یک منبع مناسب، من کتابهای زیادی رو خوندم چون منبع جامع و مناسبی پیدا نکردم برای
DRF
ولی دیروز شروع کردم به خوندن یک کتابی که سرفصلهای جالبی داشت و ۳ فصل اول رو خوندم و تموم شد که بنظرم منبع خیلی خوبی اومد نسبت به کتابهای دیگری که خوندم :
Becoming an Enterprise Django Developer
By Michael Dinder (Packt pub)
دقت کنید من هنوز کل این کتاب رو نخوندم ولی تا اینجا خیلی خوب توضیح داده برای شروع.
توی این قدم معمولاً اینطوری عمل میکنم که وقتی ۱ فصل رو خوندم و تموم شد، چند ساعتی به کارهام میرسم و بعد بر میگردم سراغ کتاب اما قبل از شروع فصل جدید بدون اینکه به کتاب رجوع کنم سعی میکنم کل نیازمندی و چیزی که توی اون فصل یادگرفتم و نیاز هست برای فصل بعدی رو بر اساس یادگیریم پیادهسازی کنم.
وقفه بین کتاب و کد برای این هست که مطمئن بشم چیزی رو از حفظ نمیزنم و موضوع رو درک کردم تنها منبعی که میشه توی این بخش ازش استفاده کرد : گوگل + داکیومنت رسمی جنگو هست
۳- هرکتابی که انتخاب کنید، وقتی یک مفهوم رو توضیح میده برای موارد بیشتر و دقیقتر به منبع اصلی
reference
میده، مثلاً کتاب بالاوقتی یک فصل رو تموم میکنید، بعد از اینکه اون فصل رو کدهاش رو زدید و تموم شد
باید برگردید روی کتاب و همون فصل و منابعی که برای خوندن بیشتر بهتون معرفی کرده رو بخونید.
این قدم بسیار بسیار مهم هست، چون هم با اصطلاحات آشنا میشید، هم با اکو سیستم اون فریمورک و هم یاد میگیرید چطور باید از داکیومنت فریمورک استفاده کنید بدون اینکه وقت تلف کنید.
قدم ۴ - یادگیری هیچوقت متوقف نمیشه، نیاز شما هم هیچوقت یکسان و ثابت نیست، بر اساس نیاز منابع جدید پیدا میکنید، سورس کد باقی افراد رو میخونید که به سمت یک نویسنده یا مدرس بایاس نشید، توی این قدم هرجوری که حال میکنید ادامه بدید.
پس اگر از نحوه خوندن من و البته بخش اول که پیشنیاز هست بگذریم ۴ تا منبع معرفی میشه کرد :
1- YouTube PlayList
نسخه
DRF
هم هست (اگر دوست داشتید توی همون کانال ببینید) 2- Becoming an Enterprise Django Developer By Michael Dinder (Packt pub)
3- Django documentation
4- Django Rest Framework
👍48❤13❤🔥5⚡3🔥1