کانفیگ vscode خودم با بلک و flake8 که ترکیب خوبین با تایپ چکر basic
پ.ن:از tabnine هم استفاده میکنم ولی حذفش کردم چون یکم شخصیه. بعضیا مخالفن و بعضیا موافق (میگن جلوی خلاقیت و فکر کردنو رو میگیره وقتی auto compelete AI داری که تا حدی درسته بنظرم)
@ManiFoldsPython
پ.ن:از tabnine هم استفاده میکنم ولی حذفش کردم چون یکم شخصیه. بعضیا مخالفن و بعضیا موافق (میگن جلوی خلاقیت و فکر کردنو رو میگیره وقتی auto compelete AI داری که تا حدی درسته بنظرم)
{
"editor.unicodeHighlight.ambiguousCharacters": false,
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"python.analysis.typeCheckingMode": "basic",
"[toml]": {
"editor.defaultFormatter": "tamasfe.even-better-toml"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"[python]": {
"editor.tabSize": 4,
"editor.formatOnType": true,
"editor.insertSpaces": true,
"editor.tabCompletion": "on",
"editor.autoIndent": "advanced",
"editor.trimAutoWhitespace": true,
"files.trimTrailingWhitespace": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"editor.defaultFormatter": "ms-python.black-formatter"
},
"python.analysis.autoImportCompletions": true,
"editor.formatOnSaveMode": "file",
"editor.formatOnPaste": false,
"editor.formatOnType": false,
"editor.formatOnSave": true,
"files.autoSave": "off",
"editor.inlineSuggest.enabled": true,
"flake8.args": ["--max-line-length", "88", "--ignore=E501,E711"],
"isort.args": ["--multi-line=8", "--line-length=88"]
}
@ManiFoldsPython
👌10👍4❤2🖕1
یک نکته خیلی مهم تو دیباگینگ:
Always assert failing test first
هیچوقت فرض نکنید چون یک خطایی دیدین و کدتون رو درست کردین پس اون خطا رو نمیبینید پس مشکل برطرف شده.
اول باید تست کنید که ایا اون خطایی که بهش برخوردین رو محیط لوکالتون دقیقا رخ میده؟ بعد از تغییر کدتون مجددا تست کنید که اون خطا برطرف شده یا نه؟
پس وقتی به یک خطایی میخورید:
۱. اول تست بنویسید که اون خطا reproduce شه که نخواین هی دستی reproduce کنید و همینطور خیالتون راحت باشه که درست assert کردین
۲. خطا رو دیباگ کنید تا تستتون پاس شه
@ManiFoldsPython
Always assert failing test first
هیچوقت فرض نکنید چون یک خطایی دیدین و کدتون رو درست کردین پس اون خطا رو نمیبینید پس مشکل برطرف شده.
اول باید تست کنید که ایا اون خطایی که بهش برخوردین رو محیط لوکالتون دقیقا رخ میده؟ بعد از تغییر کدتون مجددا تست کنید که اون خطا برطرف شده یا نه؟
پس وقتی به یک خطایی میخورید:
۱. اول تست بنویسید که اون خطا reproduce شه که نخواین هی دستی reproduce کنید و همینطور خیالتون راحت باشه که درست assert کردین
۲. خطا رو دیباگ کنید تا تستتون پاس شه
@ManiFoldsPython
👍14
Python BackendHub
یک کدینگ چلنج بسیار ساده و در عین حال بسیار سخت جهت تمرین 🙂 Software Requirements: فرض کنید برنامه ای دارید برای یک مدرسه ای مینویسید. داخل مدرسه ۴ یوزر role مختلف وجود داره: ۱. مدیر(ادمین) ۲. مشاور ۳. معلم ۴. دانش آموز یک اپ student طراحی کنید که داخل…
Live coding assignment: School Student App
لینک گوگل میت:
https://meet.google.com/mum-umcx-qwt
یک شنبه ساعت ۲۰ تا ۲۱:۳۰
۱۵ دقیقه اول فقط تسک رو میخونم. خیلی مهمه این موضوع. سعی کنید miss نکنید ۱۵ دقیقه اولو.
مفاهیمی که تو ۱۵ دقیقه اول توضیح داده میشه:
طریقه خواندن یک assignment
Software Requirements
Software Test Scenarios
Software Test Cases
Software Test Runs
Technology Requirements
Explicit ACL Design
Database Table Design
فرقی نمیکنه بک اند کار هستین یا نه ولی حداقل تا قبل از ACL Design باید بلد باشین چون مفاهیم software development lifecycle(SDLC) هست.
@ManiFoldsPython
لینک گوگل میت:
https://meet.google.com/mum-umcx-qwt
یک شنبه ساعت ۲۰ تا ۲۱:۳۰
۱۵ دقیقه اول فقط تسک رو میخونم. خیلی مهمه این موضوع. سعی کنید miss نکنید ۱۵ دقیقه اولو.
مفاهیمی که تو ۱۵ دقیقه اول توضیح داده میشه:
طریقه خواندن یک assignment
Software Requirements
Software Test Scenarios
Software Test Cases
Software Test Runs
Technology Requirements
Explicit ACL Design
Database Table Design
فرقی نمیکنه بک اند کار هستین یا نه ولی حداقل تا قبل از ACL Design باید بلد باشین چون مفاهیم software development lifecycle(SDLC) هست.
@ManiFoldsPython
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
🔥16👍4
دو سوال تو گروه پرسیدن که گفتم تو کانال جواب بدم بهتره. شاید سوال چند نفر باشه:
"مهندس یه سوال داشتم که الان من نزدیک یه ساله دارم جنگو و پایتون کار میکنم ولی خیلییی از مطالبی که شما میزارید رو حتی به گوشم هم نخورده بود و واقعا تو اون سطح نه آموزشی دیدم نه کار کردم، آیا حتما باید اونقدری مسلط بشم که همه ی این مطالب رو از بر باشم برای سطح جونیور یا نه تا یه مقداری کافیه، این موضوع یکم نگرانم کرده"
طبیعیه چون همینطور که گفتم تو کامینیتی پایتون ایران خیلی این مباحث مانور رفته نمیشه. منم هدفم بولد کردن همین مباحث مهم بود.من تجربه خودمو میگم, قبلا هم گفتم. من چند سال خودم کار میکردم کدام هم خیلی کثیف بوده و هنوزم دارم ریفکتورشون میکنم. اما این مدت (از دسامبر پارسال) تصمیم گرفتم شروع کنم خوندن سورس کد پروژه های اوپن سورس. قبلش خیلی از اصول مهندسی رو رعایت نمیکردم و ضربه میخوردم.
شما یک سری مفاهیم رو باید بلد باشین تا بتونید تو یک شرکت کار بگیرین. شاید تا این حدی که من تو کانالم دارم پوش میکنم نباشه. خیلی حدش کمتر باشه. ولی برای پوزیشن intern و جونیور باید یک سری مفاهیم رو بلد باشین. اگه تو شرکت خوب برین طبیعتا این مهارت هاتون بیشتر میشه. من یک سوم مطالبی که این سه ماه اخیر نوشتم تو شرکت از سنیورم یاد گرفتم. همینطور داشتن یک منتور خیلی عالیه. که از این سایت میتونید منتور رایگان پیدا کنید! من مدتی پیش با بابی یک جلسه گذاشتم که یک picture کلی داشته باشم از roadmap ام برای گرفتن جاب آفر و اولین شغلی که self employed نبوده و به لطف بابی به این level رسیدم.
https://adplist.org/explore?tab=mentors
بابی هم اینجاست.😁 تاپ ۱۰ عه 🙌🙌
پس توصیه من اینه:شما اپلای کنید برای کار جدید ولی هدفتون این باشه که تو یک شرکت خوب برید. یک شرکت خوب خیلی باعث پیشرفتتون میشه.
اگه قبول نشدین اشکالی نداره. بیشتر اپلای کنید. رزومتون رو بهتر کنید(یک ریپو رزومه نویسی دارم حتما بخونید) بالاخره مصاحبه میگیرین. تو مصاحبه فنی و رفتاری کم کم متوجه نقاط ضعفی که نیاز دارین برای گرفتن اولین شغلتون میشید و اصلاحش میکنید. اینکه چون ۱۰ بار ریجکت شدید دلیل نمیشه استاپ کنید. من که فقط سابقه self employed داشتم با دیپلم و دانش نه چندان زیاد تونستم با زیاد اپلای کردن و پافشاری رو هدفم بالاخره بهش برسم (گرفتن کار تو آلمان). شاید خیلیا شرایط تکنیکال و مدرکیشون بهتر از من باشه.
پس اپلای کنید و نترسید. منم اگه میخواستم اینطوری وسواس به خرج بدم الان تو همون مود ۲ سال پیشم بودم :))
@ManiFoldPython
"مهندس یه سوال داشتم که الان من نزدیک یه ساله دارم جنگو و پایتون کار میکنم ولی خیلییی از مطالبی که شما میزارید رو حتی به گوشم هم نخورده بود و واقعا تو اون سطح نه آموزشی دیدم نه کار کردم، آیا حتما باید اونقدری مسلط بشم که همه ی این مطالب رو از بر باشم برای سطح جونیور یا نه تا یه مقداری کافیه، این موضوع یکم نگرانم کرده"
طبیعیه چون همینطور که گفتم تو کامینیتی پایتون ایران خیلی این مباحث مانور رفته نمیشه. منم هدفم بولد کردن همین مباحث مهم بود.من تجربه خودمو میگم, قبلا هم گفتم. من چند سال خودم کار میکردم کدام هم خیلی کثیف بوده و هنوزم دارم ریفکتورشون میکنم. اما این مدت (از دسامبر پارسال) تصمیم گرفتم شروع کنم خوندن سورس کد پروژه های اوپن سورس. قبلش خیلی از اصول مهندسی رو رعایت نمیکردم و ضربه میخوردم.
شما یک سری مفاهیم رو باید بلد باشین تا بتونید تو یک شرکت کار بگیرین. شاید تا این حدی که من تو کانالم دارم پوش میکنم نباشه. خیلی حدش کمتر باشه. ولی برای پوزیشن intern و جونیور باید یک سری مفاهیم رو بلد باشین. اگه تو شرکت خوب برین طبیعتا این مهارت هاتون بیشتر میشه. من یک سوم مطالبی که این سه ماه اخیر نوشتم تو شرکت از سنیورم یاد گرفتم. همینطور داشتن یک منتور خیلی عالیه. که از این سایت میتونید منتور رایگان پیدا کنید! من مدتی پیش با بابی یک جلسه گذاشتم که یک picture کلی داشته باشم از roadmap ام برای گرفتن جاب آفر و اولین شغلی که self employed نبوده و به لطف بابی به این level رسیدم.
https://adplist.org/explore?tab=mentors
بابی هم اینجاست.😁 تاپ ۱۰ عه 🙌🙌
پس توصیه من اینه:شما اپلای کنید برای کار جدید ولی هدفتون این باشه که تو یک شرکت خوب برید. یک شرکت خوب خیلی باعث پیشرفتتون میشه.
اگه قبول نشدین اشکالی نداره. بیشتر اپلای کنید. رزومتون رو بهتر کنید(یک ریپو رزومه نویسی دارم حتما بخونید) بالاخره مصاحبه میگیرین. تو مصاحبه فنی و رفتاری کم کم متوجه نقاط ضعفی که نیاز دارین برای گرفتن اولین شغلتون میشید و اصلاحش میکنید. اینکه چون ۱۰ بار ریجکت شدید دلیل نمیشه استاپ کنید. من که فقط سابقه self employed داشتم با دیپلم و دانش نه چندان زیاد تونستم با زیاد اپلای کردن و پافشاری رو هدفم بالاخره بهش برسم (گرفتن کار تو آلمان). شاید خیلیا شرایط تکنیکال و مدرکیشون بهتر از من باشه.
پس اپلای کنید و نترسید. منم اگه میخواستم اینطوری وسواس به خرج بدم الان تو همون مود ۲ سال پیشم بودم :))
@ManiFoldPython
adplist.org
ADPList: Explore
ADPList is the leading free-to-use mentorship platform with mentors in AI, UI/UX design, product management, software development and marketing. Learn portfolio review, resume review, interview preparation and more.
👏14👍5❤1🤯1
سوال دوم:
برای اینکه پروژه پروداکشن بزنیم چقدر تکنولوژی باید بلد باشیم؟چقدر دیپ باشیم خوبه؟
خب اولین سوال من از شما اینه که ایا این قراره پروداکشن کوالیتی باشه یا واقعا پروداکشن باشه؟
تو پروداکشن واقعی شاید باید خیلی چیزا رعایت شه که یکم کارو سخت میکنه اگه بخواین یک نفره همشو بزنید. پس بهتره با چند نفر همکاری کنید و استخدامشون کنید.
ولی اگه صرفا جنبه تمرینی داره, بله به نظره من پروژه های تمرینیتون رو باید در حد پروداکشن کوالیتی بنویسید که یکم خلاقیت پشتش باشه. اینکه یک نفر ویدیو بذاره پروژه بزنه شمام همونو کپی پیست کنید هیچوقت یاد نمیگیرین. پس سعی کنید برای خودتون بیزنسی تعریف کنید(مثل صرافی). و واقعا بسازیدش. حالا نمیخواد خیلی پرفکت کار کنه ولی همینکه با چالش هاش مواجه شید متوجه میشید. یک چیزی باشه که خودتون هم ازش استفاده کنید خیلی به نفعتونه. ولی طبیعتا تا زمانی که رو پروداکشن واقعی کار نکردین یک سری تجارب رو بدست نمیارید. اشکال نداره. بعدا که استخدام شدید به دست میارین. فرار نمیکنن اون تجارب :)). خیلی مهمه که شما به سمت اون تجربه ها برید چون اون تجربه ها هیچوقت سمتتون نمیان.
در خصوص عمق تکنولوژی که یاد میگیرین بنظره من باید سیستم دیزاین و کلین کد رو بلد باشین تا یک پروژه تمرینی و پروداکشن کوالیتی بنویسید.
نکته بسیار مهم:دوستان شرکت های بزرگ و خارجی دیگه دنبال برنامه نویس جنگو نیستند دنبال مهندس نرم افزار هستند. برنامه نویس جنگو کسیه که مثلا جنگو رو خیلی دیپ شده. ولی مهندس نرم افزار کسیه که کانسپت هارو خیلی خوب بلده و میدونه چی رو کجا باید استفاده کنه. کلی کتاب و ریسورس هست برای سیستم دیزاین. و کد با کیفیت نوشتن (از کتابای martin fowler و آنکل باب بگیرید تا همین کورس های یوتیوب آریان)
پس خیلی دنبال عمیق شدن تو هرچیزی نباشید بنظرم. وقتی باید عیمق شید که نیازتون شه. مثلا تو پایتون شما نیاز دارین که کد یک لایبری رو بخونید و در صورت نیاز تغییرش بدید. پس باید در حدی عمیق باشید که بتونید همچین کاری انجام بدید.
نگاه کنید تایتل کاریتون چیه؟ یک سری مباحثی که تو تایتل کاریتون هست رو اونا مانور بدید و سعی کنید تو اون مناطق عمیق شید.
من همین ۲-۳ سال اخیر اینقدری که عمیق شدم تو کراولینگ و کلا دیتکت ربات و مشابه سازی رفتار مرورگر و اینکه تو مرورگر چه اتفاقاتی دقیقا داره میفته که میتونم براتون ۲۰ صفحه مقاله بنویسم شما از وقتی که مثلا میرین تو یک سایتی که زیر دیکیتشن cloudflare هست تو حالت under attack اش چه اتفاقاتی داره میفته و دقیقا چطوری دیتکتتون میکنه. (یک چیزی که شاید بنظرتون یک get request خیلی ساده باشه). و هنوزم میگم هیچی نمیدونم راجب این پروسه یعنی عمق این پروسه رو میشه تو ۲۰۰ صفحه نوشت! پس شما تو هر کانسپتی که فکر کنید برید دنبال عمق یک چیزی هیچوقت به تهش نمیرسید. فقط باید تو چیزایی عمیق شید که لازم دارید.
@ManiFoldPython
برای اینکه پروژه پروداکشن بزنیم چقدر تکنولوژی باید بلد باشیم؟چقدر دیپ باشیم خوبه؟
خب اولین سوال من از شما اینه که ایا این قراره پروداکشن کوالیتی باشه یا واقعا پروداکشن باشه؟
تو پروداکشن واقعی شاید باید خیلی چیزا رعایت شه که یکم کارو سخت میکنه اگه بخواین یک نفره همشو بزنید. پس بهتره با چند نفر همکاری کنید و استخدامشون کنید.
ولی اگه صرفا جنبه تمرینی داره, بله به نظره من پروژه های تمرینیتون رو باید در حد پروداکشن کوالیتی بنویسید که یکم خلاقیت پشتش باشه. اینکه یک نفر ویدیو بذاره پروژه بزنه شمام همونو کپی پیست کنید هیچوقت یاد نمیگیرین. پس سعی کنید برای خودتون بیزنسی تعریف کنید(مثل صرافی). و واقعا بسازیدش. حالا نمیخواد خیلی پرفکت کار کنه ولی همینکه با چالش هاش مواجه شید متوجه میشید. یک چیزی باشه که خودتون هم ازش استفاده کنید خیلی به نفعتونه. ولی طبیعتا تا زمانی که رو پروداکشن واقعی کار نکردین یک سری تجارب رو بدست نمیارید. اشکال نداره. بعدا که استخدام شدید به دست میارین. فرار نمیکنن اون تجارب :)). خیلی مهمه که شما به سمت اون تجربه ها برید چون اون تجربه ها هیچوقت سمتتون نمیان.
در خصوص عمق تکنولوژی که یاد میگیرین بنظره من باید سیستم دیزاین و کلین کد رو بلد باشین تا یک پروژه تمرینی و پروداکشن کوالیتی بنویسید.
نکته بسیار مهم:دوستان شرکت های بزرگ و خارجی دیگه دنبال برنامه نویس جنگو نیستند دنبال مهندس نرم افزار هستند. برنامه نویس جنگو کسیه که مثلا جنگو رو خیلی دیپ شده. ولی مهندس نرم افزار کسیه که کانسپت هارو خیلی خوب بلده و میدونه چی رو کجا باید استفاده کنه. کلی کتاب و ریسورس هست برای سیستم دیزاین. و کد با کیفیت نوشتن (از کتابای martin fowler و آنکل باب بگیرید تا همین کورس های یوتیوب آریان)
پس خیلی دنبال عمیق شدن تو هرچیزی نباشید بنظرم. وقتی باید عیمق شید که نیازتون شه. مثلا تو پایتون شما نیاز دارین که کد یک لایبری رو بخونید و در صورت نیاز تغییرش بدید. پس باید در حدی عمیق باشید که بتونید همچین کاری انجام بدید.
نگاه کنید تایتل کاریتون چیه؟ یک سری مباحثی که تو تایتل کاریتون هست رو اونا مانور بدید و سعی کنید تو اون مناطق عمیق شید.
من همین ۲-۳ سال اخیر اینقدری که عمیق شدم تو کراولینگ و کلا دیتکت ربات و مشابه سازی رفتار مرورگر و اینکه تو مرورگر چه اتفاقاتی دقیقا داره میفته که میتونم براتون ۲۰ صفحه مقاله بنویسم شما از وقتی که مثلا میرین تو یک سایتی که زیر دیکیتشن cloudflare هست تو حالت under attack اش چه اتفاقاتی داره میفته و دقیقا چطوری دیتکتتون میکنه. (یک چیزی که شاید بنظرتون یک get request خیلی ساده باشه). و هنوزم میگم هیچی نمیدونم راجب این پروسه یعنی عمق این پروسه رو میشه تو ۲۰۰ صفحه نوشت! پس شما تو هر کانسپتی که فکر کنید برید دنبال عمق یک چیزی هیچوقت به تهش نمیرسید. فقط باید تو چیزایی عمیق شید که لازم دارید.
@ManiFoldPython
👍16❤3
یک نکته که جا موند, شرکتی بهتره که موقع PR خیلی با حساسیت بررسی میکنن کداتون رو. همینطوری الکی مرج نمیکنن بره پی کارش. صرفا هدفشون این نیست تند تند فیچر بزنن و سعی میکنن پروداکت stable ای داشته باشن.
پیدا کردن همچین شرکت هایی خیلی سخته.
شرکت هایی که اجازه میدن یک کارو خیلی عالی انجام بدید تا اینکه چند تا کارو انجام بدید خیلی خوب هستند و به شدت باعث پیشرفتتون میشن
و اینکه اصلا غر نزنید از تسک جدید. اگه تسک جدید تو شرکت هست سعی کنید داوطلب شید. هر تسک R&D یعنی شرکت داره به شما پول میده که داکیومنت بخونید و یاد بگیرین! چی میخواین بهتر از این؟ حتی اگه نامرتبط هم باشه حتما برین سمتش. مثال میگم خودم داوطلب شدم تمام تسک های QA رو انجام بدم. میتونستم داوطلب نشم و گردن یکی دیگه بیفته. (مگه اینکه خیلی تسکه دیگه تو دیوار باشه و ربطی به software engineering کلا نداشته باشه :)) )
پ.ن:از روز اولی که تو شرکت فعلیم کار کردن نپرسیدن ازم که مانی چرا فلان PR رو تمو نکردی هنوز یا فلان فیچر چی شد؟
@ManiFoldPython
پیدا کردن همچین شرکت هایی خیلی سخته.
شرکت هایی که اجازه میدن یک کارو خیلی عالی انجام بدید تا اینکه چند تا کارو انجام بدید خیلی خوب هستند و به شدت باعث پیشرفتتون میشن
و اینکه اصلا غر نزنید از تسک جدید. اگه تسک جدید تو شرکت هست سعی کنید داوطلب شید. هر تسک R&D یعنی شرکت داره به شما پول میده که داکیومنت بخونید و یاد بگیرین! چی میخواین بهتر از این؟ حتی اگه نامرتبط هم باشه حتما برین سمتش. مثال میگم خودم داوطلب شدم تمام تسک های QA رو انجام بدم. میتونستم داوطلب نشم و گردن یکی دیگه بیفته. (مگه اینکه خیلی تسکه دیگه تو دیوار باشه و ربطی به software engineering کلا نداشته باشه :)) )
پ.ن:از روز اولی که تو شرکت فعلیم کار کردن نپرسیدن ازم که مانی چرا فلان PR رو تمو نکردی هنوز یا فلان فیچر چی شد؟
@ManiFoldPython
👍12
ریپو رزومه نویسی من.
برای اینکه شانس مصاحبه گرفتنتون بالا بره باید رزومه خوب داشته باشین. رزومه خوب داشتن فقط به این معنی نیست که سوابق کاریتون خوب باشه. میتونید با سوابق کاری کم هم رزومه اتون رو طوری بنویسید که شانس مصاحبه گرفتنتون از اون کسی که چند برابر شما تجربه داره و رزومش ضعیفه خیلی بیشتر شه.
https://github.com/ManiMozaffar/awesome-resumes
این ریپو اینقدر نکته داره که من تقریبا به هر ۱۰۰ رزومه ای که نگاه میکنم ۹۹تاش مشکلاتی دارن که دقیقا تو این ریپو گفته شده.
پی نوشت:این ریپو حاصل چند ماه تحقیق و نگاه کردن ویدیو های tech immigrants بوده.
@ManiFoldsPython
برای اینکه شانس مصاحبه گرفتنتون بالا بره باید رزومه خوب داشته باشین. رزومه خوب داشتن فقط به این معنی نیست که سوابق کاریتون خوب باشه. میتونید با سوابق کاری کم هم رزومه اتون رو طوری بنویسید که شانس مصاحبه گرفتنتون از اون کسی که چند برابر شما تجربه داره و رزومش ضعیفه خیلی بیشتر شه.
https://github.com/ManiMozaffar/awesome-resumes
این ریپو اینقدر نکته داره که من تقریبا به هر ۱۰۰ رزومه ای که نگاه میکنم ۹۹تاش مشکلاتی دارن که دقیقا تو این ریپو گفته شده.
پی نوشت:این ریپو حاصل چند ماه تحقیق و نگاه کردن ویدیو های tech immigrants بوده.
@ManiFoldsPython
GitHub
GitHub - ManiMozaffar/awesome-resumes: Create resumes and CV with awesome-resumes. Practical tips, guidelines, guide, examples…
Create resumes and CV with awesome-resumes. Practical tips, guidelines, guide, examples and documentation for all IT fields - ManiMozaffar/awesome-resumes
❤23👍2
اگه از پکیج certifi استفاده میکنید حتما آپدیتش کنید به آخرین نسخه
دلیلش:
https://github.com/advisories/GHSA-xqr8-7jwr-rhp7
@ManiFoldsPython
دلیلش:
https://github.com/advisories/GHSA-xqr8-7jwr-rhp7
@ManiFoldsPython
GitHub
CVE-2023-37920 - GitHub Advisory Database
Removal of e-Tugra root certificate
👍5
😁20🤣5💩4
یکی از دوستان ریپوشو شیر کرده بود با من یک نکته ای دیدم که گفتم حتما راجبش پست بذارم
Custom exception
اولا برای خطا ها لاجیک هیچوقت از built in exception های پایتون استفاده نکنید. شما هیچ لایبری رو نمیبیند که همچین کاری کرده باشه. فقط زمانی نیازه که واقعا اون ارور دقیقا همون چیزیه که built in python هست و جایی نیاز ندارید لاجیک یا هندلری براش بذارید
خیلیی استفاده کنید از این کانسپت! سعی کنید تایپ هینتتون رو با اکسپشن درست کنید!همیشه اکسپشن بیس بسازید. من هر ریپویی میسازم اولین کاری که میکنم اینه که یک exception.py میزنم و بعد شروع میکنم به کد نویسی.
قدرت اکسپشن خیلی زیاده. خیلی flexible هست. شما میتونید رو اکسپشن لاجیک بنویسید. و سرعت ران تایم برنامتون رو به شدت ببرین بالا.
مثال میگم, یک رباتی نوشتین که داره اوردر ثبت میکنه تو یک سایتی
make_order(order_info: OrderRawData) -> Order
اگه مشکل داشت NONE برنگردونید!!
و توش اگه نا موفق بودید raise میکنید اکسپشن های مختلف رو. اینطوری یک برنامه یک دست دارید. مثلا اگه مشکل احراز هویت بود raise ExpiredToken. حالا میتونید تو یک سطح بالاتر کدتون, اکسپشن های مختلف رو هندلر براش بنویسید. catch کنید و پاسش بدید به اون هندلر. اینطوری میتونید یک لاجیک خیلیی تمیز بنویسید. اگه هندل نشده بود لاگ بندازین که براش بعدا هندلر بنویسید
تایپ ریترن تابع شما حتما باید یک تایپ باشه. none وقتی برمیگرده یعنی حاصل اون flow تابع شما هیچ دیتایی نبود. پس تو این مثال make_order اصلا نباید None برگرده!
حالا بگین کدوم خوانا تره؟
make_order(order_info: list[OrderRawData] | Order) -> Order | list[Order] | None
تابع شما باید به قدری خوب type hint داشته باشه و تایپاش مشخص باشه و به قدری خوب اسم گذاری شده باشه که کی فرد با خواندن اسم تابع شما و تایپ هینت و I/O متوجه شه دقیقا تابع چیکار میکنه بدون اینکه بخواد کد رو ببینه.
@ManiFoldsPython
Custom exception
اولا برای خطا ها لاجیک هیچوقت از built in exception های پایتون استفاده نکنید. شما هیچ لایبری رو نمیبیند که همچین کاری کرده باشه. فقط زمانی نیازه که واقعا اون ارور دقیقا همون چیزیه که built in python هست و جایی نیاز ندارید لاجیک یا هندلری براش بذارید
خیلیی استفاده کنید از این کانسپت! سعی کنید تایپ هینتتون رو با اکسپشن درست کنید!همیشه اکسپشن بیس بسازید. من هر ریپویی میسازم اولین کاری که میکنم اینه که یک exception.py میزنم و بعد شروع میکنم به کد نویسی.
قدرت اکسپشن خیلی زیاده. خیلی flexible هست. شما میتونید رو اکسپشن لاجیک بنویسید. و سرعت ران تایم برنامتون رو به شدت ببرین بالا.
مثال میگم, یک رباتی نوشتین که داره اوردر ثبت میکنه تو یک سایتی
make_order(order_info: OrderRawData) -> Order
اگه مشکل داشت NONE برنگردونید!!
و توش اگه نا موفق بودید raise میکنید اکسپشن های مختلف رو. اینطوری یک برنامه یک دست دارید. مثلا اگه مشکل احراز هویت بود raise ExpiredToken. حالا میتونید تو یک سطح بالاتر کدتون, اکسپشن های مختلف رو هندلر براش بنویسید. catch کنید و پاسش بدید به اون هندلر. اینطوری میتونید یک لاجیک خیلیی تمیز بنویسید. اگه هندل نشده بود لاگ بندازین که براش بعدا هندلر بنویسید
تایپ ریترن تابع شما حتما باید یک تایپ باشه. none وقتی برمیگرده یعنی حاصل اون flow تابع شما هیچ دیتایی نبود. پس تو این مثال make_order اصلا نباید None برگرده!
حالا بگین کدوم خوانا تره؟
make_order(order_info: list[OrderRawData] | Order) -> Order | list[Order] | None
تابع شما باید به قدری خوب type hint داشته باشه و تایپاش مشخص باشه و به قدری خوب اسم گذاری شده باشه که کی فرد با خواندن اسم تابع شما و تایپ هینت و I/O متوجه شه دقیقا تابع چیکار میکنه بدون اینکه بخواد کد رو ببینه.
@ManiFoldsPython
👍39❤14🔥13🙏2
Python BackendHub
یکی از دوستان ریپوشو شیر کرده بود با من یک نکته ای دیدم که گفتم حتما راجبش پست بذارم Custom exception اولا برای خطا ها لاجیک هیچوقت از built in exception های پایتون استفاده نکنید. شما هیچ لایبری رو نمیبیند که همچین کاری کرده باشه. فقط زمانی نیازه که واقعا…
وقتی دارین تو function شما چند تا اینپوت میگیرین
اینپوت هاتون به هیچ وجه نباید تو اون فانکشن کلین کنید. نباید تایپشون رو همون اول تغییر بدید. فانکنشو برای یوز کیستون فقط ننویسید سعی کنید کلی بهش نگاه کنید. فانکشن رو جوری بنویسید که همه جای کد بتونید ازش استفاده کنید
اگه تایپ کلین میخواد پس باید باید تایپ جدیدی بسازید که فرایند parse رو انجام بده. اینطوری فانکشن هاتون کاملا decouple هستند و میتونید هروقت هرجای کدتون که اون تایپو دارید استفاده کنید.
یک مثال مثال بد:
خب من هر استرینگی بدم این میخواد uuid کنه. پس چرا uuid نگرفت؟ چرا نان میگیره بعد اگه نان بود خودش uuid میسازه؟ بهتر نبود این فانکشن دیکاپل شه و تو سطح کلاس این دیفالت initiate کردن انجام شه؟
ریفکتور شدش:
پس تو کدتون این موارد رو همیشه رعایت کنید:
Specific Typing
Separation of Concerns
Reusability
Explicit Contracts
Testability
@ManiFoldsPython
اینپوت هاتون به هیچ وجه نباید تو اون فانکشن کلین کنید. نباید تایپشون رو همون اول تغییر بدید. فانکنشو برای یوز کیستون فقط ننویسید سعی کنید کلی بهش نگاه کنید. فانکشن رو جوری بنویسید که همه جای کد بتونید ازش استفاده کنید
اگه تایپ کلین میخواد پس باید باید تایپ جدیدی بسازید که فرایند parse رو انجام بده. اینطوری فانکشن هاتون کاملا decouple هستند و میتونید هروقت هرجای کدتون که اون تایپو دارید استفاده کنید.
یک مثال مثال بد:
class Bank():
...
def create_bank_account(account_id: str | None, balance: int) -> Bank:
if isintance(account_id, str):
account_id = UUID(account_id)
if not account_id:
account_id = generate_random_uuid()
if not balance > 0:
raise SomeError("Balance should have been higher than 0")
return Bank(id=account_id, balance=balance)
خب من هر استرینگی بدم این میخواد uuid کنه. پس چرا uuid نگرفت؟ چرا نان میگیره بعد اگه نان بود خودش uuid میسازه؟ بهتر نبود این فانکشن دیکاپل شه و تو سطح کلاس این دیفالت initiate کردن انجام شه؟
ریفکتور شدش:
class Bank():
...
class PositiveInt:
...
def create_bank_account(account_id: UUID, balance: PositiveInt) -> Bank:
return Bank(id=account_id, balance=balance)
پس تو کدتون این موارد رو همیشه رعایت کنید:
Specific Typing
Separation of Concerns
Reusability
Explicit Contracts
Testability
@ManiFoldsPython
👍19
Python BackendHub
Live coding assignment: School Student App لینک گوگل میت: https://meet.google.com/mum-umcx-qwt یک شنبه ساعت ۲۰ تا ۲۱:۳۰ ۱۵ دقیقه اول فقط تسک رو میخونم. خیلی مهمه این موضوع. سعی کنید miss نکنید ۱۵ دقیقه اولو. مفاهیمی که تو ۱۵ دقیقه اول توضیح داده میشه:…
فردا لایو کد داریم و هنوز کسی کد نفرستاده 👀
صرفا چون کدی کار میکنه دلیل بر خوب بودنش نیست.
اگه کسی تموم کرده حتما بفرسته برای من لینک گیتهابشو. وقتی ۲ سمپل داشته باشیم هم راه کار متفاوت و پاسخ های متفاوت به اون سوال در میاد
هم کلی ایراد از کد من و کد اون شخص درمیاد.
هم اینکه یکم رو کالچر کد review کار میکنیم و مثال میزنیم که چطور code review باید انجام شه. دیروز که با دوستان صحبت میکردم ظاهرا اکثر شرکت ایرانی همچین کالچری ندارن رو code review و PR ها اکثر مرج میشن بدون تغییر زیادی...
@ManiFoldsPython
صرفا چون کدی کار میکنه دلیل بر خوب بودنش نیست.
اگه کسی تموم کرده حتما بفرسته برای من لینک گیتهابشو. وقتی ۲ سمپل داشته باشیم هم راه کار متفاوت و پاسخ های متفاوت به اون سوال در میاد
هم کلی ایراد از کد من و کد اون شخص درمیاد.
هم اینکه یکم رو کالچر کد review کار میکنیم و مثال میزنیم که چطور code review باید انجام شه. دیروز که با دوستان صحبت میکردم ظاهرا اکثر شرکت ایرانی همچین کالچری ندارن رو code review و PR ها اکثر مرج میشن بدون تغییر زیادی...
@ManiFoldsPython
❤5👌2
Python BackendHub
فردا لایو کد داریم و هنوز کسی کد نفرستاده 👀 صرفا چون کدی کار میکنه دلیل بر خوب بودنش نیست. اگه کسی تموم کرده حتما بفرسته برای من لینک گیتهابشو. وقتی ۲ سمپل داشته باشیم هم راه کار متفاوت و پاسخ های متفاوت به اون سوال در میاد هم کلی ایراد از کد من و کد اون…
دوستانی که میخوان با جنگو انجام بدن مشکلی نداره
ولی از جنگو ادمین استفاده نکنید برای این تسک
لینک چلنج:
https://news.1rj.ru/str/manifoldspython/348
@ManiFoldsPython
ولی از جنگو ادمین استفاده نکنید برای این تسک
لینک چلنج:
https://news.1rj.ru/str/manifoldspython/348
@ManiFoldsPython
👍4
دوستانی که Event driven کار میکنن با کافکا و rabbitmq و اینا سرو کله میزنن
به این دو پروژه یک سر بزنید
Propan
https://github.com/lancetnik/propan
https://lancetnik.github.io/Propan/
FastKafka
https://github.com/airtai/fastkafka
https://fastkafka.airt.ai/
واقعا لیاقت گرفتن ستاره رو دارن اگه میتونید حتما ازشون حمایت کنید. خیلی ایدشون قشنگه و میتونه تحول بزرگی ایجاد کنه. جفتشون هم به شدت دارن maintain میشن 🙌🙌
@ManiFoldsPython
به این دو پروژه یک سر بزنید
Propan
https://github.com/lancetnik/propan
https://lancetnik.github.io/Propan/
FastKafka
https://github.com/airtai/fastkafka
https://fastkafka.airt.ai/
واقعا لیاقت گرفتن ستاره رو دارن اگه میتونید حتما ازشون حمایت کنید. خیلی ایدشون قشنگه و میتونه تحول بزرگی ایجاد کنه. جفتشون هم به شدت دارن maintain میشن 🙌🙌
@ManiFoldsPython
GitHub
GitHub - Lancetnik/Propan: Propan is a powerful and easy-to-use Python framework for building event-driven applications that interact…
Propan is a powerful and easy-to-use Python framework for building event-driven applications that interact with any MQ Broker - Lancetnik/Propan
❤7👍3
Python BackendHub
دوستانی که Event driven کار میکنن با کافکا و rabbitmq و اینا سرو کله میزنن به این دو پروژه یک سر بزنید Propan https://github.com/lancetnik/propan https://lancetnik.github.io/Propan/ FastKafka https://github.com/airtai/fastkafka https://fastkafka.airt.ai/…
دوستان میتونید تو propan هم کانتربیوت کنید
خیلیی فیچر هاش حتی تو مرحله اول هم نرسیده...
فرصت خوبیه برای open source contrib
@ManiFoldsPython
خیلیی فیچر هاش حتی تو مرحله اول هم نرسیده...
فرصت خوبیه برای open source contrib
@ManiFoldsPython
👍4
Live coding assignment: School Student App
لینک گوگل میت:
https://meet.google.com/mum-umcx-qwt
دو ساعت دیگه شروع میشه...
یکی از دوستانم فرستاد پروژش رو. بنابراین من سعی میکنم schema دیتابیس و presentation رو از قبل حاضر کنم
که نهایتا یک ساعته جمع کنم و وقتتون رو خیلی نگیرم. بعد بپردازم به Question & Answer و البته ریویو کد دوست عزیزمون
@ManiFoldsPython
لینک گوگل میت:
https://meet.google.com/mum-umcx-qwt
دو ساعت دیگه شروع میشه...
یکی از دوستانم فرستاد پروژش رو. بنابراین من سعی میکنم schema دیتابیس و presentation رو از قبل حاضر کنم
که نهایتا یک ساعته جمع کنم و وقتتون رو خیلی نگیرم. بعد بپردازم به Question & Answer و البته ریویو کد دوست عزیزمون
@ManiFoldsPython
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
👍44❤36🔥12🐳12👏3
ببخشید دوستان یکم طول کشید...
میخواستم کامل توضیح بدم که جای سوال نمونه واقعا.
کلش رو record کردم. آپلود میکنم. چند پارت مختلف تقسیم میکنم بعد آپلود میکنم.
نهایتا ACL ما اینطوری پیاده شد. یک dictionary که میتونست ورودی برنامه باشه (از دیتابیس) و کاملا قابل flexible
شاید وقت گذاشتم همین رو پکیج پایتونی کردم برای فست.. ولی یکم سخته چون خیلی felixable هست ACL و نمیشه به این راحتی پکیجش کرد
@ManiFoldsPython
میخواستم کامل توضیح بدم که جای سوال نمونه واقعا.
کلش رو record کردم. آپلود میکنم. چند پارت مختلف تقسیم میکنم بعد آپلود میکنم.
نهایتا ACL ما اینطوری پیاده شد. یک dictionary که میتونست ورودی برنامه باشه (از دیتابیس) و کاملا قابل flexible
شاید وقت گذاشتم همین رو پکیج پایتونی کردم برای فست.. ولی یکم سخته چون خیلی felixable هست ACL و نمیشه به این راحتی پکیجش کرد
@ManiFoldsPython
👍19❤6🔥1
نظرتون رو بگید حتما
دوست دارم فیدبک بدید که چطور بود؟متوجه شدین؟ تا جایی که بودید؟
چه ایراداتی از من میگیرین؟زیاد توضیح میدادم؟ کلا دوست دارم فیدبکتون رو بشنوم.
@ManiFoldsPython
دوست دارم فیدبک بدید که چطور بود؟متوجه شدین؟ تا جایی که بودید؟
چه ایراداتی از من میگیرین؟زیاد توضیح میدادم؟ کلا دوست دارم فیدبکتون رو بشنوم.
@ManiFoldsPython
👍12❤6