یکی از احمقانه ترین چیزهایی که امروز در Django Rest Framework دیدم رفتار سریالایزر روی فیلد Boolean بود.
شما اگر داخل سریالایزر یک فیلد boolean داشته باشید که required=False باشه یعنی اگر فیلد ورودی داده نشده بود که داخل دیتایی که میدی نیارش.
یعنی اگر من
delivered = serializers.BooleanField(required=False)
name = serializers.CharField(required=False)
داشته باشم و کاربرد ورودی هیچ چیزی بهم نده توقعام اینکه که یک دیکشنری خالی از سریالایزر بگیرم چون هردو فیلد required=False هستن. اما سریالایزر drf همیشه فیلد boolean رو میفرسته :/
یعنی حتی با اینکه شما گفتید این فیلد required=False میاد تو خروجی بهتون delivred میده ولی مقدارش False میکنه :/
ولی فیلد name اگه ورودی نده کلا تو خروجی نمیاد و تنها و تنها این کار برای boolean فیلدها میکنه :) WTF؟
مشکل جدیای به نظرم چون شما توقع دارید این فیلد وجود نداشته باشه اگر به عنوان ورودی نیومده باشه و میایید برای False بودن و یا True بودنش داخل کدتون یک لاجیک خاص مینویسید. و ایده شما اینه که این فیلد اگر ورودی نیاد قرار نیست لاجیک Treu یا False من ران شه دیگه. حالا اگر اومد یا true ران میشه یا false. ولی با این کار DRF تقریبا همیشه منطقی که برای حالت False نوشتید اجرا میشه :)))))
مگر اینکه یک فیلد کاستوم بسازید برای boolean و جلوش رو خودتون بگیرید.
دلیلش هم اینکه drf فیلدها ولیدیت میکنه و اگر ورودی که به delivered دادید به اصطلاح Falsy باشه اون false میکنه اگه برعکسش باشه True میشه و از اونجایی که ورودی ندادن میشه '' یک استرینگ خالی و این عمل فالسی هست اون فیلد برابر با False میشه همیشه :)
واقعا این همه سال هیچ کس نرفته این مشکل حل کنه؟ 😂 اصلا چرا وقتی فیلد ورودی نیومده روش ولیدیشن ران میکنه؟😂
@TorhamDevCH
شما اگر داخل سریالایزر یک فیلد boolean داشته باشید که required=False باشه یعنی اگر فیلد ورودی داده نشده بود که داخل دیتایی که میدی نیارش.
یعنی اگر من
delivered = serializers.BooleanField(required=False)
name = serializers.CharField(required=False)
داشته باشم و کاربرد ورودی هیچ چیزی بهم نده توقعام اینکه که یک دیکشنری خالی از سریالایزر بگیرم چون هردو فیلد required=False هستن. اما سریالایزر drf همیشه فیلد boolean رو میفرسته :/
یعنی حتی با اینکه شما گفتید این فیلد required=False میاد تو خروجی بهتون delivred میده ولی مقدارش False میکنه :/
ولی فیلد name اگه ورودی نده کلا تو خروجی نمیاد و تنها و تنها این کار برای boolean فیلدها میکنه :) WTF؟
مشکل جدیای به نظرم چون شما توقع دارید این فیلد وجود نداشته باشه اگر به عنوان ورودی نیومده باشه و میایید برای False بودن و یا True بودنش داخل کدتون یک لاجیک خاص مینویسید. و ایده شما اینه که این فیلد اگر ورودی نیاد قرار نیست لاجیک Treu یا False من ران شه دیگه. حالا اگر اومد یا true ران میشه یا false. ولی با این کار DRF تقریبا همیشه منطقی که برای حالت False نوشتید اجرا میشه :)))))
مگر اینکه یک فیلد کاستوم بسازید برای boolean و جلوش رو خودتون بگیرید.
دلیلش هم اینکه drf فیلدها ولیدیت میکنه و اگر ورودی که به delivered دادید به اصطلاح Falsy باشه اون false میکنه اگه برعکسش باشه True میشه و از اونجایی که ورودی ندادن میشه '' یک استرینگ خالی و این عمل فالسی هست اون فیلد برابر با False میشه همیشه :)
واقعا این همه سال هیچ کس نرفته این مشکل حل کنه؟ 😂 اصلا چرا وقتی فیلد ورودی نیومده روش ولیدیشن ران میکنه؟😂
@TorhamDevCH
🤣7👍5❤1
https://youtu.be/WpXs7e7kEoI
تفاوت بین json و gRPC و اینکه gRPC چطور کار میکنه و کجا خوبه ازش استفاده کنیم، خوبی و بدیهاش چی میتونه باشه.
#vid_per_day
@TorhamDevCH
تفاوت بین json و gRPC و اینکه gRPC چطور کار میکنه و کجا خوبه ازش استفاده کنیم، خوبی و بدیهاش چی میتونه باشه.
#vid_per_day
@TorhamDevCH
YouTube
Now I Know Why Most People Don’t Use gRPC
✅ Learn how to build robust and scalable software architecture: https://arjan.codes/checklist.
In this video, I’m exploring gRPC, a compelling alternative to REST that’s gaining traction in distributed systems. Watch until the end of the video to find out…
In this video, I’m exploring gRPC, a compelling alternative to REST that’s gaining traction in distributed systems. Watch until the end of the video to find out…
❤5
Creep
Radiohead
❤🔥7
یادم بندازید فردا تمپلیت روزمهام براتون بفرستم. بچهها خواسته بودن :)
❤24👍3
Torham Mohammadian.docx
439.5 KB
تمپلیت رزومهام ترجیحا همین فایل با گوگل داک باز کنید، خودش رو هم با گوگل داک ساختم.
امیدوارم به دردتون بخوره. سوالی داشتید بپرسید
@TorhamDevCH
امیدوارم به دردتون بخوره. سوالی داشتید بپرسید
@TorhamDevCH
❤14🍾2
https://youtu.be/suATPK45sjk
از چندین توسعه دهنده خفن و تکلید میپرسن که پندی که دارن چیه. واقعا نکتههای خفنی گفتن حتماااا ببینید
#vid_per_day
@TorhamDevCH
از چندین توسعه دهنده خفن و تکلید میپرسن که پندی که دارن چیه. واقعا نکتههای خفنی گفتن حتماااا ببینید
#vid_per_day
@TorhamDevCH
YouTube
How to Become a Great Software Developer — Best Advice from Top-Notch Engineers
👉 Check our documentary "Beyond The Success Of Kotlin: https://youtu.be/E8CtE7qTb-Q
👉 Integrate GitHub Copilot and ChatGPT into your daily work for streamlined, efficient development.
https://aw.club/global/en/courses/ai-supported-software-engineering
Leverage…
👉 Integrate GitHub Copilot and ChatGPT into your daily work for streamlined, efficient development.
https://aw.club/global/en/courses/ai-supported-software-engineering
Leverage…
👍3❤1🖕1
همجا گیتهاب شده کوپایلت.
البته ابزار خوبیه. چند وقتی پک گیتهاب گرفتم و از کوپایلت استفاده میکنم کمک میکنه سریعتر کد پیش ببری. بعدا دربارش مینویسم.
@TorhamDevCH
البته ابزار خوبیه. چند وقتی پک گیتهاب گرفتم و از کوپایلت استفاده میکنم کمک میکنه سریعتر کد پیش ببری. بعدا دربارش مینویسم.
@TorhamDevCH
❤2🖕1
Forwarded from BenDev
👍56💔5🖕2
Forwarded from جادی | Jadi
به نظر میرسه اپل قراره با پرداخت یکمیلیارد دلار در سال، از جمنای گوگل برای هوش مصنوعی سیری استفاده کنه. چیزی که واقعا جالبه اینه که اپل ظاهراً پذیرفته که فعلا توان رقابت در این حوزه رو نداره و باید برای داشتن این قابلیتها، از رقیب سنتیاش سرویس بخره.
#اپل #گوگل #خبر
#اپل #گوگل #خبر
❤5👌3🖕1
فرق بین repr و str در پایتون.
سوال اصلی میتونه این باشه که repr کارش چیه و str کارش چیه؟
زمانی که شما دانر repr رو مینوسید باید یک هدف داشته باشید. خروجی repr باید unambiguous باشه. یا فارسیش بدون ابهام، روشن یا صریح باشه.
برای مثال
درست هست و
اشتباه. این در صورتی که MyClass ورودی int دریافت میکنه در نتیجه داندر repr اش باید نشون بده که این ورودیها int هستند نه چیز دیگری.
به عبارت دیگه اگر کسی eval را روی خروجی repr شما اجرا کنه باید بدون خطا اجرا بشه و یک اون کلاس رو بسازه. حالا دقیقا لازم نیست همین چیزی که دارید بسازه ولی باید بدون خطا یک instanse از اون کلاس رو بسازه. به زبان کد:
اما هدف str چیه؟ هدفش خوانایی هستن و قرار نیست بی ابهام یا صریح و شفاف باشه. مثلا اگر کلاس شما برای ساخت به ip به همراه subnet نیاز داره لازم نیست حتما داخل str هم سابنت رو هم قرار بدید و میتونید خلاصه کنید و ip خالی بزارید.
دانر str برای دیدن یوزر هست نه برنامه نویس. در نتیجه چیزهای اضافه رو میتونید پاک کنید.
نکته مهم: اگر قرار یکی از این ۲ دانر رو توسعه بدید همیشه repr رو توسعه بدید چرا که اگر str صدا زده بشه روی آبجکت شما و وجود نداشته باشه به عنوان fallback بعدش repr صدا زده میشه.
تمام اینها رو میتونید با detail بیشتر در کتاب fluent پایتون یا سوال استکاورفلو زیر بخونید. استکاورفلو توصیه میکنم حتما بخونید.
https://stackoverflow.com/questions/1436703/what-is-the-difference-between-str-and-repr
@TorhamDevCH 😳
سوال اصلی میتونه این باشه که repr کارش چیه و str کارش چیه؟
زمانی که شما دانر repr رو مینوسید باید یک هدف داشته باشید. خروجی repr باید unambiguous باشه. یا فارسیش بدون ابهام، روشن یا صریح باشه.
برای مثال
MyClass(1, 2)
درست هست و
MyClass("1", "2")اشتباه. این در صورتی که MyClass ورودی int دریافت میکنه در نتیجه داندر repr اش باید نشون بده که این ورودیها int هستند نه چیز دیگری.
به عبارت دیگه اگر کسی eval را روی خروجی repr شما اجرا کنه باید بدون خطا اجرا بشه و یک اون کلاس رو بسازه. حالا دقیقا لازم نیست همین چیزی که دارید بسازه ولی باید بدون خطا یک instanse از اون کلاس رو بسازه. به زبان کد:
eval(repr(c))==c
اما هدف str چیه؟ هدفش خوانایی هستن و قرار نیست بی ابهام یا صریح و شفاف باشه. مثلا اگر کلاس شما برای ساخت به ip به همراه subnet نیاز داره لازم نیست حتما داخل str هم سابنت رو هم قرار بدید و میتونید خلاصه کنید و ip خالی بزارید.
دانر str برای دیدن یوزر هست نه برنامه نویس. در نتیجه چیزهای اضافه رو میتونید پاک کنید.
نکته مهم: اگر قرار یکی از این ۲ دانر رو توسعه بدید همیشه repr رو توسعه بدید چرا که اگر str صدا زده بشه روی آبجکت شما و وجود نداشته باشه به عنوان fallback بعدش repr صدا زده میشه.
تمام اینها رو میتونید با detail بیشتر در کتاب fluent پایتون یا سوال استکاورفلو زیر بخونید. استکاورفلو توصیه میکنم حتما بخونید.
https://stackoverflow.com/questions/1436703/what-is-the-difference-between-str-and-repr
@TorhamDevCH 😳
Stack Overflow
What is the difference between __str__ and __repr__?
What is the difference between __str__ and __repr__ in Python?
👍12🖕4❤3
یک نکته مهم که باید همیشه رعایت کنید این هست که "شما باید بیشتر dunder متدها رو توسعه بدید بهجای اینکه صدا بزنیدشون"
یعنی چی؟ یعنی شما نباید
صدا بزنید باید str(myobj) صدا بزنید. شما باید خود
توسعه بدید.
تنها داندر متدی که قالبا صدا زده میشه init هست.
به عبارت دیگه. داندر متدها باید توسط مفسر خود پایتون صدا زده بشن نه خود شما.
@TorhamDevCH 😳
یعنی چی؟ یعنی شما نباید
myobj.__str__()
صدا بزنید باید str(myobj) صدا بزنید. شما باید خود
__str__
توسعه بدید.
تنها داندر متدی که قالبا صدا زده میشه init هست.
به عبارت دیگه. داندر متدها باید توسط مفسر خود پایتون صدا زده بشن نه خود شما.
@TorhamDevCH 😳
👍9🖕4
چه زمانی خوبه از .fortmat استفاده کنید و چه زمانی از f-string ؟
در تمام مواقع خوبه که از f-string استفاده کنید. مگر اینکه string شما قرار بعدا مقدار دهی بشه. مثلا اگر یک متن پیامک چند خطی دارید که از فایل کانفیگ خونده میشه اونجا خوبه که از .format و ٪ ها استفاده کنید. به غیر از این بهتره که f-string استفاده کنید. چون بسیار خواناتر هست و کد تمیز تری در نهایت خواهید داشت.
@TorhamDevCH 😳
در تمام مواقع خوبه که از f-string استفاده کنید. مگر اینکه string شما قرار بعدا مقدار دهی بشه. مثلا اگر یک متن پیامک چند خطی دارید که از فایل کانفیگ خونده میشه اونجا خوبه که از .format و ٪ ها استفاده کنید. به غیر از این بهتره که f-string استفاده کنید. چون بسیار خواناتر هست و کد تمیز تری در نهایت خواهید داشت.
@TorhamDevCH 😳
👍11🖕4🔥1
TorhamDev | تورهام 😳 pinned «فرق بین repr و str در پایتون. سوال اصلی میتونه این باشه که repr کارش چیه و str کارش چیه؟ زمانی که شما دانر repr رو مینوسید باید یک هدف داشته باشید. خروجی repr باید unambiguous باشه. یا فارسیش بدون ابهام، روشن یا صریح باشه. برای مثال MyClass(1, 2) درست…»
اگه شما هم هر بار بعد از آپدیت #دبیان به مشکل درایور انویدیا میخورید راه حلش این سه تا کامند. حداقل چندباری که برای من اتفاق افتاده همین بوده.
در نهایت هم میتونید با این کامند چک کنید که کار میکنه یا نه.
@TorhamDevCH 😳
sudo apt update
sudo apt install linux-headers-$(uname -r)
sudo dkms autoinstall
sudo modprobe nvidia
در نهایت هم میتونید با این کامند چک کنید که کار میکنه یا نه.
nvidia-smi
@TorhamDevCH 😳
❤5🖕1
این چند روز گذشته رو داشتم رو این پروژه کار میکردم. کارش ساده است یک habit tracker یا شاید هم میشه گفت todo list تحت ترمیناله. کدش کامل کامل نیست. یکدور باید ریفکتور بشه و دوتا بخش دیگه اش کامل بشه. ولی الان قابل استفاده است. اگه دلتون خواست میتونید مشارک کنید و help page اضافه کنید یا کد رو ریفکتور کنید.
https://github.com/TorhamDev/Ablaze
@TorhamDevCH
https://github.com/TorhamDev/Ablaze
@TorhamDevCH
1👍9🔥2👎1
TorhamDev | تورهام 😳
این چند روز گذشته رو داشتم رو این پروژه کار میکردم. کارش ساده است یک habit tracker یا شاید هم میشه گفت todo list تحت ترمیناله. کدش کامل کامل نیست. یکدور باید ریفکتور بشه و دوتا بخش دیگه اش کامل بشه. ولی الان قابل استفاده است. اگه دلتون خواست میتونید مشارک…
برای دیتابیسش از duckDB استفاده کردم. یک دیتابیس که مثل sqlite داخل یک فایل ساده است. دلیل استفاده هم این بود که قرار یکسری لاگ ذخیره کنم که json هستش و sqlite جیسون هندل نمیکنه.
https://duckdb.org/
https://duckdb.org/
DuckDB
An in-process SQL OLAP database management system
DuckDB is an in-process SQL OLAP database management system. Simple, feature-rich, fast & open source.
1👍6🔥2❤1