Forwarded from Python BackendHub (Mani)
تو بحث کردن دو روش داریم:
Strawman: یعنی ضعیفترین و دمدستیترین برداشت از حرف طرف مقابل رو میگیری و همونو میکوبی.
Steelman: یعنی قویترین و منطقیترین نسخه از حرف طرف مقابل رو تصور میکنی و بعد اونو نقد میکنی.
تو بحثهای تکنیکال و تو حوزه خودمون، حداقل steelman باشید. یعنی قبل از اینکه یه ایده رو بکوبید، سعی کنید بهترین حالت ممکنش رو در بیارید و بعد نقد کنید. ولی میبینم یک عده اخیرا کلا دلیلی نمیارن؛ ایده رو از بیسیک میزنن و میگن «کلا خوب نیست» بدون حتی یه خط استدلال! جملشون هم انگلیسی مینویسن که مثلا جذبه بیشتری داشته باشه :)) اینطوری نه بحث جلو میره، نه کسی چیزی یاد میگیره. اگه میخواید نقد کنید، اول قویترین نسخهی ایده رو بسازید، بعد برید سراغ نقد.
@PyBackendHub
Strawman: یعنی ضعیفترین و دمدستیترین برداشت از حرف طرف مقابل رو میگیری و همونو میکوبی.
Steelman: یعنی قویترین و منطقیترین نسخه از حرف طرف مقابل رو تصور میکنی و بعد اونو نقد میکنی.
تو بحثهای تکنیکال و تو حوزه خودمون، حداقل steelman باشید. یعنی قبل از اینکه یه ایده رو بکوبید، سعی کنید بهترین حالت ممکنش رو در بیارید و بعد نقد کنید. ولی میبینم یک عده اخیرا کلا دلیلی نمیارن؛ ایده رو از بیسیک میزنن و میگن «کلا خوب نیست» بدون حتی یه خط استدلال! جملشون هم انگلیسی مینویسن که مثلا جذبه بیشتری داشته باشه :)) اینطوری نه بحث جلو میره، نه کسی چیزی یاد میگیره. اگه میخواید نقد کنید، اول قویترین نسخهی ایده رو بسازید، بعد برید سراغ نقد.
@PyBackendHub
👍4❤1
Forwarded from Python BackendHub (Mani)
یک سوال رو میخوام مطرح کنم , شما یک فانکشن
فانکشن
سوالی که پیش میاد اینه که شما چطور توابعتون رو طراحی میکنید که این مشکل به وجود نیاد؟ کدتون احتمالا این شکلیه.
همونطور که میبینید نحوه استفاده inner1 و inner2 کاپل شده به یوزر. من اگه حواسم نباشه lock=true رو نذارم کدم در برابر ریس کاندیشن سیف نیست. اگه یک نفر دیگه یک جای دیگه دوباره inner1 رو استفاده کنه و یادش بره یوزر رو لاک کنه بازم همین مشکلو داریم. درواقع یک استیت مشترک بین چند فانکشن داریم که فقط میشه چشمی دنبالش کرد... قبل اینکه پست بعدیو بخونید یکم بهش فکر کنید ببینید راه حلی داره این موضوع؟
@PyBackendHub
parent دارید. داخل این فانکشن شما باید یوزر رو بگیرید (`getUser`) و بعد سه تا فانکشن inner1 و inner2 و inner3 رو صدا بزنید و یوزر رو بهشون بدید تا یک پردازشی تو دیتابیس انجام بده.فانکشن
inner1 و inner2 یوزر آیدی میگیرن و نیاز دارن یوزر لاک باشه تو دیتابیس وگرنه ممکنه ریس کاندیشن بخوره. ولی فانکشن ۳ براش مهم نیست چون پردازشی که میکنه ریس کاندیشن نمیخوره.سوالی که پیش میاد اینه که شما چطور توابعتون رو طراحی میکنید که این مشکل به وجود نیاد؟ کدتون احتمالا این شکلیه.
def parent():
user = get_user(lock=True)
inner1(user)
inner2(user)
inner3(user)
همونطور که میبینید نحوه استفاده inner1 و inner2 کاپل شده به یوزر. من اگه حواسم نباشه lock=true رو نذارم کدم در برابر ریس کاندیشن سیف نیست. اگه یک نفر دیگه یک جای دیگه دوباره inner1 رو استفاده کنه و یادش بره یوزر رو لاک کنه بازم همین مشکلو داریم. درواقع یک استیت مشترک بین چند فانکشن داریم که فقط میشه چشمی دنبالش کرد... قبل اینکه پست بعدیو بخونید یکم بهش فکر کنید ببینید راه حلی داره این موضوع؟
@PyBackendHub
👨💻1
Forwarded from Python BackendHub (Mani)
برند تایپ یا همون New Type یعنی یه تایپ جدید بسازی رو همون تایپ قدیمی، بدون این که تو رانتایم هیچ خرجی داشته باشه. یه جورایی مثل اینه که سابکلس بسازی ولی واقعاً سابکلس نکردی.
فایدهش چیه؟ به تایپچکر میفهمونی مثلا UserId با یه string فرق داره. تو رانتایم هردوش استرینگن ولی تو تایپ دیگه یکی نیستن.
تو مثال ما، یه UserId درست میکنیم، بعد یه برند جنریک به اسم Locked<T>. اگه تو getUser(true) صدا بزنیم خروجیش میشه Locked<UserId>. حالا توابعی که میخوان یوزر لاک شده باشه فقط همینو قبول میکنن. یعنی دولوپر مجبوره قبل استفاده یوزر رو لاک کنه، وگرنه تایپچکر گیر میده و کدت دیپلوی نمیشه.
اگه اینو نداشتیم، باید تو هر تابع دوباره یوزر رو لاک میکردیم که هم تکراری میشه هم رانتایم گرونتر.
مزایا:
- جلوی خطا رو میگیره
- خودش یه جور داکیومنت زندهست
- یه بار لاک میکنی، رانتایم سریعتره
- نگه داری کدتون رو راحت تر میکنه (maintainability)
ضررش؟ فقط دو سه خط تایپ بیشتر مینویسی، همین. که البته مقایسه کنی با کدی که باید بیشتر مینوشتی چون این تایپا رو نداشتی هیچ بود.
@PyBackendHub
فایدهش چیه؟ به تایپچکر میفهمونی مثلا UserId با یه string فرق داره. تو رانتایم هردوش استرینگن ولی تو تایپ دیگه یکی نیستن.
تو مثال ما، یه UserId درست میکنیم، بعد یه برند جنریک به اسم Locked<T>. اگه تو getUser(true) صدا بزنیم خروجیش میشه Locked<UserId>. حالا توابعی که میخوان یوزر لاک شده باشه فقط همینو قبول میکنن. یعنی دولوپر مجبوره قبل استفاده یوزر رو لاک کنه، وگرنه تایپچکر گیر میده و کدت دیپلوی نمیشه.
اگه اینو نداشتیم، باید تو هر تابع دوباره یوزر رو لاک میکردیم که هم تکراری میشه هم رانتایم گرونتر.
مزایا:
- جلوی خطا رو میگیره
- خودش یه جور داکیومنت زندهست
- یه بار لاک میکنی، رانتایم سریعتره
- نگه داری کدتون رو راحت تر میکنه (maintainability)
ضررش؟ فقط دو سه خط تایپ بیشتر مینویسی، همین. که البته مقایسه کنی با کدی که باید بیشتر مینوشتی چون این تایپا رو نداشتی هیچ بود.
@PyBackendHub
❤1
خوب شرکت هم استکش رو از پایتون به گولنگ داره تغییر میده و بنده ماه آخرم و تعدیل میشم :)
here we go again
برم رزومه رو مرتب کنم
here we go again
برم رزومه رو مرتب کنم
💔45🍾4🤣3🗿1
خیلی جالب بود. :)
همش از یک کاغذ شروع شد =)
https://www.youtube.com/watch?v=Pu7LvnxV6N0
golang used the same thing for it's complier btw :D
@TorhamDevCH
همش از یک کاغذ شروع شد =)
https://www.youtube.com/watch?v=Pu7LvnxV6N0
golang used the same thing for it's complier btw :D
@TorhamDevCH
YouTube
What is Bootstrapping Anyway? - Computerphile
Where does it all start? How is it was say "C is written in C" - Matt Godbolt breaks it down by building it up!
Find out more about Matt from his blog: https://bit.ly/C_MGodbolt
Computerphile is supported by Jane Street. Learn more about them (and exciting…
Find out more about Matt from his blog: https://bit.ly/C_MGodbolt
Computerphile is supported by Jane Street. Learn more about them (and exciting…
❤2🔥1
روزی یک مقاله رو یادتونه؟ متاسفانه خیلی وقت نمیکنم مقاله بخونم :( و این باعث شد دیگه ادامهاش ندم، خوندن مقاله کمی با دیدن آموزش یا ویدیو فرق میکنه حداقل برای من. چون باید نکاتش بفهمم و گاهی یک یادداشت کوچیکی ازش بردارم ولی ویدیو دیدن این مشکل نداره و اگه نکته ای باشه قالبا کسی که ویدیو رو ساخته بهش اشاره میکنه. در نتیجه از این لحظه روزی یک ویدیو معرفی میکنم، احتمالا روزی یکدونه بیشتر چون من خیلی در یوتیوب وقت میگذرونم :)
👍11❤1
ویدیو امروز، itertools. تو ویدیو تمام ۲۱ فانکشنالیتی itertools معرفی میکنه مثالشون میگه و اینکه چه کاربردی میتونن داشته باشن.
موضوع این نیست که همشون رو حفظ باشیم، موضوع اینه بدونید وجود دارن و در مواقع مناسب دربارش گوگل کنید و استفاده کنید :)
https://youtu.be/1p7xa_BHYDs
#vid_per_day
@TorhamDevCH
موضوع این نیست که همشون رو حفظ باشیم، موضوع اینه بدونید وجود دارن و در مواقع مناسب دربارش گوگل کنید و استفاده کنید :)
https://youtu.be/1p7xa_BHYDs
#vid_per_day
@TorhamDevCH
YouTube
Python itertools - The key to mastering iteration
The key to iteration in Python
A key feature of Python is it's incredible support for lazy iteration. Defining and consuming lazy sequences in Python are easy. You can even define an infinite sequence like powers of 2 or prime numbers! To make working with…
A key feature of Python is it's incredible support for lazy iteration. Defining and consuming lazy sequences in Python are easy. You can even define an infinite sequence like powers of 2 or prime numbers! To make working with…
👍11❤1🔥1
TorhamDev | تورهام 😳 pinned «روزی یک مقاله رو یادتونه؟ متاسفانه خیلی وقت نمیکنم مقاله بخونم :( و این باعث شد دیگه ادامهاش ندم، خوندن مقاله کمی با دیدن آموزش یا ویدیو فرق میکنه حداقل برای من. چون باید نکاتش بفهمم و گاهی یک یادداشت کوچیکی ازش بردارم ولی ویدیو دیدن این مشکل نداره و اگه…»
https://www.youtube.com/watch?v=vBH6GRJ1REM
ویدئو امروز درباره دیتاکلس هستش. کاربردش و اینکه کجاها به درد میخوره. استفاده ازش خیلی خوبه، تو بیشتر کدهای بزرگ حتما خواهیدیدش. داخل sqlalchemy هم میتونی مدلهاتون با دیتاکلس درست کنید حتی
#vid_per_day
@TorhamDevCH
ویدئو امروز درباره دیتاکلس هستش. کاربردش و اینکه کجاها به درد میخوره. استفاده ازش خیلی خوبه، تو بیشتر کدهای بزرگ حتما خواهیدیدش. داخل sqlalchemy هم میتونی مدلهاتون با دیتاکلس درست کنید حتی
#vid_per_day
@TorhamDevCH
YouTube
Python dataclasses will save you HOURS, also featuring attrs
Get rid of boilerplate writing classes using dataclasses!
In this video we learn about dataclasses and how to use them, as well as the related attrs library that dataclasses were based on.
Note: As of Python 3.10 dataclasses DO support slots.
― mCoding…
In this video we learn about dataclasses and how to use them, as well as the related attrs library that dataclasses were based on.
Note: As of Python 3.10 dataclasses DO support slots.
― mCoding…
❤3
- اومدم پکیجهای اضافه رو پاک کنم، زدم تمام نتورک پکیجها رو پاک کردم.
- دیدم به اینترنت وصل نمیتونم بشم هیجوره
- ۲ ساعت دیباگش کردم و با low لول ترین حالت ممکن تونستم به شبکه lan وصل شم.
- دوباره پکیجهای نتورک نصب کردم.
میخاستم جیغ بکشم یکجاهاییش.
@TorhamDevCH
- دیدم به اینترنت وصل نمیتونم بشم هیجوره
- ۲ ساعت دیباگش کردم و با low لول ترین حالت ممکن تونستم به شبکه lan وصل شم.
- دوباره پکیجهای نتورک نصب کردم.
میخاستم جیغ بکشم یکجاهاییش.
@TorhamDevCH
🤣20❤1