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
Media is too big
VIEW IN TELEGRAM
دیزاین دیتابیس کدینگ چلنج و نکات مربوطه دیزاین
@ManiFoldsPython
@ManiFoldsPython
❤12🔥3
ممنون از همه دوستانی که امروز تو لایو حضور داشتن. خیلی خوشحال شدم از حجم استقبال تو لایو!
۲ ساعت و ۲۰ دقیقه شد لایو. ۵۰ دقیقه بیشتر از چیزی که پلن ریخته بودیم متاسفانه. کدشو تکمیل کردم گیت هابشم اینجا میفرستم که بتونید کلون کنید و ببینید. طول هفته مشغولم و آخر هفته فقط سرم خلوته احتمالا میفته شنبه یا یک شنبه هفته آینده. تو کانال همرو با 4k اپلود کردم که حجمش شد ۹ گیگ. یک نسخه دیگه هم آپلود میکنم که ۱ گیگ خواهد شد با کیفیت پایینتر
@ManiFoldsPython
۲ ساعت و ۲۰ دقیقه شد لایو. ۵۰ دقیقه بیشتر از چیزی که پلن ریخته بودیم متاسفانه. کدشو تکمیل کردم گیت هابشم اینجا میفرستم که بتونید کلون کنید و ببینید. طول هفته مشغولم و آخر هفته فقط سرم خلوته احتمالا میفته شنبه یا یک شنبه هفته آینده. تو کانال همرو با 4k اپلود کردم که حجمش شد ۹ گیگ. یک نسخه دیگه هم آپلود میکنم که ۱ گیگ خواهد شد با کیفیت پایینتر
@ManiFoldsPython
❤29👍2👏2
من اکثر newsletter هایی که میاد برام رو unsub میکنم
ولی واقعا مال آریان خیلی قشنگه
توصیه میکنم حتما سابش کنید
https://www.arjancodes.com/
@ManiFoldsPython
ولی واقعا مال آریان خیلی قشنگه
توصیه میکنم حتما سابش کنید
https://www.arjancodes.com/
@ManiFoldsPython
👍4