Forwarded from Syntax | سینتکس (Daimon)
🔍 بررسی استراتژی جداسازی عملیات چک کردن وجود و بازیابی اطلاعات از دیتابیس
دو رویکرد اصلی در این زمینه در نظر داریم:
1️⃣ جداسازی مسئولیتها:
در این روش، دو متد جداگانه داریم:
-
-
مزایا:
✅ رعایت Single responsibility(SRP)
✅ خوانایی و وضوح بیشتر کد
✅ امکان استفاده مجدد از هر متد به صورت مستقل
معایب:
❌ افزایش تعداد کوئریهای ارسالی به دیتابیس
2️⃣ ترکیب عملیات در یک متد:
در این روش، یک متد واحد داریم:
-
مزایا:
✅ کاهش تعداد کوئریهای ارسالی به دیتابیس
✅ بهبود کارایی
معایب:
❌ احتمال نقض اصل Single responsibility
❌ کاهش خوانایی و وضوح کد
🤔 حالا سوال این است: کدام رویکرد بهتر است؟
پاسخ: بستگی دارد!
باید فاکتورهایی مانند نیازهای پروژه، الگوهای استفاده، و اولویتهای تیم را در نظر گرفت. اما یک راه حل میانه هم وجود دارد:
3️⃣ رویکرد میانه:
در این روش، یک متد اصلی داریم که میتواند مبنای سایر عملیات باشد:
این رویکرد مزایای هر دو روش را ترکیب میکند:
✅ تنها یک کوئری به دیتابیس زده میشود
✅ اصل مسئولیت تکی تا حد زیادی رعایت میشود
✅ انعطافپذیری بیشتری در استفاده داریم
✅ کد خوانا و قابل نگهداری است
شما کدام رویکرد را ترجیح میدهید؟
@Syntax_fa
دو رویکرد اصلی در این زمینه در نظر داریم:
1️⃣ جداسازی مسئولیتها:
در این روش، دو متد جداگانه داریم:
-
check_user_exists(user_id)-
get_user_by_id(user_id)مزایا:
✅ رعایت Single responsibility(SRP)
✅ خوانایی و وضوح بیشتر کد
✅ امکان استفاده مجدد از هر متد به صورت مستقل
معایب:
❌ افزایش تعداد کوئریهای ارسالی به دیتابیس
2️⃣ ترکیب عملیات در یک متد:
در این روش، یک متد واحد داریم:
-
get_user(user_id)مزایا:
✅ کاهش تعداد کوئریهای ارسالی به دیتابیس
✅ بهبود کارایی
معایب:
❌ احتمال نقض اصل Single responsibility
❌ کاهش خوانایی و وضوح کد
🤔 حالا سوال این است: کدام رویکرد بهتر است؟
پاسخ: بستگی دارد!
باید فاکتورهایی مانند نیازهای پروژه، الگوهای استفاده، و اولویتهای تیم را در نظر گرفت. اما یک راه حل میانه هم وجود دارد:
3️⃣ رویکرد میانه:
در این روش، یک متد اصلی داریم که میتواند مبنای سایر عملیات باشد:
class UserService:
@staticmethod
def get_user(user_id: int) -> Optional[User]:
try:
return User.objects.get(id=user_id)
except User.DoesNotExist:
return None
@staticmethod
def check_user_exists(user_id: int) -> bool:
return UserService.get_user(user_id) is not None
@staticmethod
def get_user_or_raise(user_id: int) -> User:
user = UserService.get_user(user_id)
if user is None:
raise ObjectDoesNotExist(f"User with id {user_id} does not exist")
return user
این رویکرد مزایای هر دو روش را ترکیب میکند:
✅ تنها یک کوئری به دیتابیس زده میشود
✅ اصل مسئولیت تکی تا حد زیادی رعایت میشود
✅ انعطافپذیری بیشتری در استفاده داریم
✅ کد خوانا و قابل نگهداری است
شما کدام رویکرد را ترجیح میدهید؟
@Syntax_fa
👍1
Forwarded from Agora (Alireza Azadi)
YouTube
Crafting a Linux kernel scheduler that runs in user-space using Rust - RIGHI, Andrea
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
🔶 وردپرس کنترل پلاگین WP Engine را بهدست گرفت.
افزونهی بسیار محبوب ACF متعلق به WP-Engine اکنون با نام جدید و تحتنظر وردپرس دردسترس کاربران قرار گرفته است و هم اکنون افزونهی ACF با نام Secure Custom Fields با نسخه جدید منتشر شده است.
#خبر
#وردپرس
@TheRaymondDev
افزونهی بسیار محبوب ACF متعلق به WP-Engine اکنون با نام جدید و تحتنظر وردپرس دردسترس کاربران قرار گرفته است و هم اکنون افزونهی ACF با نام Secure Custom Fields با نسخه جدید منتشر شده است.
#خبر
#وردپرس
@TheRaymondDev
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
Forwarded from Linuxor ?
یه روش سریع برای اشتراک گذاری یک فولدر یا دایرکتوری با ماشین VirtualBox
کافیه مثل عکس وارد Shared Folders بشید و یه فولدر اضافه کنید و داخل ماشین مجازی با کامند زیر مانتش کنید:
sudo mount -t vboxsf MyFilesOnHost ./MyFilesOnVirtualMachine
که MyFilesOnHost فولدر داخل هاسته و MyFilesOnVirtualMachine یه فولدر خالی داخل ماشین مجازی.
الان هرچی داخل MyFilesOnHost بریزین از MyFilesOnVirtualMachine قابل استفادس و بر عکس.
🐧 @Linuxor
کافیه مثل عکس وارد Shared Folders بشید و یه فولدر اضافه کنید و داخل ماشین مجازی با کامند زیر مانتش کنید:
sudo mount -t vboxsf MyFilesOnHost ./MyFilesOnVirtualMachine
که MyFilesOnHost فولدر داخل هاسته و MyFilesOnVirtualMachine یه فولدر خالی داخل ماشین مجازی.
الان هرچی داخل MyFilesOnHost بریزین از MyFilesOnVirtualMachine قابل استفادس و بر عکس.
🐧 @Linuxor
Forwarded from ⚝ (Amir Hossein "Amiria" Maher)
Forwarded from LearnPOV | لرن پی او وی
پست جدیدمون سبکش با بقیه پستا متفاوته، چند فریمشو گذاشتم اگر دوست دوست داشتید ببینید حتما 🔥🤩
ایشالا از این به بعد با همین روال میریم جلو 🙌😁
🌐 مشاهده پست
https://www.instagram.com/reel/DBEThRdMMbX
ایشالا از این به بعد با همین روال میریم جلو 🙌😁
🌐 مشاهده پست
https://www.instagram.com/reel/DBEThRdMMbX
#️⃣ #NEWPost #uiux
🚀 @coolycode
Forwarded from DevTwitter | توییت برنامه نویسی
همیشه دنبال یه فایل منیجر سبک و خوشگل و راحت واسه لاراول بودم و پکیج هایی مثل Unisharp lfm هم سنگین بودن و هم dependency ها و css, js های زیادی داشتن.
اینگونه بود که دست به کار شدم و یه پکیج فایل منیجر مینیمال جمع و جور خوشگل واسه لاراول با Vue3 نوشتم
بسیار سبکه و کاملا بر اساس SOLID هست و کاملا Ajax. فعلا در حد پیمایش، آپلود، تغییر نام، جابجایی آیتم ها، دانلود و ساخت دایرکتوری.
میتونید توی ادیتور ها هم استفادش کنید. مثل CKEditor
https://github.com/keyvanlotfi/laravel-filemanager
@DevTwitter | <Keyvan Lotfi Kamran/>
اینگونه بود که دست به کار شدم و یه پکیج فایل منیجر مینیمال جمع و جور خوشگل واسه لاراول با Vue3 نوشتم
بسیار سبکه و کاملا بر اساس SOLID هست و کاملا Ajax. فعلا در حد پیمایش، آپلود، تغییر نام، جابجایی آیتم ها، دانلود و ساخت دایرکتوری.
میتونید توی ادیتور ها هم استفادش کنید. مثل CKEditor
https://github.com/keyvanlotfi/laravel-filemanager
@DevTwitter | <Keyvan Lotfi Kamran/>
Forwarded from نوشتههای ترمینالی
اگه با زبان کلوژر (clojure) و vscode کار میکنید از این repl داخل ادیتور غافل نشید.
https://calva.io/
کلا هم اگه دنبال یادگیری lisp هستید ولی یه چیزی عملی میخواین بین dialect های مختلفی که داره من racket و clojure رو دوست داشتم.
توسط دوست خوبم دانیال #ارسالی
https://calva.io/
کلا هم اگه دنبال یادگیری lisp هستید ولی یه چیزی عملی میخواین بین dialect های مختلفی که داره من racket و clojure رو دوست داشتم.
توسط دوست خوبم دانیال #ارسالی
calva.io
Clojure Interactive Programming for Visual Studio Code
Learn how to use Calva, a rich IDE for enjoyable and productive Clojure and ClojureScript Interactive Programming in VS Code.
Forwarded from Quera
⛴ مسابقه کشتیبان
🎒مهارت سنجی مسیرهای شغلی برنامهنویسی در #فناپـکمپس
⭐️ در دو مسیر برنامهنویسی:
- #C و NET.
- Java
📅جمعه ۲۷ مهر ماه ساعت ۱۶
🟡 نفرات برتر این مسابقات، وارد دوره آموزشی این مسیرها میشن که توی پاییز ۱۴۰۳ برگزار میشه.
🔵 ثبتنام فقط در یکی از مسیرها امکان پذیره
🟢 ثبتنام رایگان:
https://quera.org/r/g16tq
〰️〰️〰️〰️
#Quera #Quera_Contest
🎒مهارت سنجی مسیرهای شغلی برنامهنویسی در #فناپـکمپس
⭐️ در دو مسیر برنامهنویسی:
- #C و NET.
- Java
📅جمعه ۲۷ مهر ماه ساعت ۱۶
🟡 نفرات برتر این مسابقات، وارد دوره آموزشی این مسیرها میشن که توی پاییز ۱۴۰۳ برگزار میشه.
🔵 ثبتنام فقط در یکی از مسیرها امکان پذیره
🟢 ثبتنام رایگان:
https://quera.org/r/g16tq
〰️〰️〰️〰️
#Quera #Quera_Contest
Forwarded from Geek Alerts
This media is not supported in your browser
VIEW IN TELEGRAM
پنجمین پرتاب آزمایشی استارشیپ، بزرگترین و سنگینترین موشک ساخته شده توسط انسان، با موفقیت انجام شد و شرکت اسپیساکس در عملیاتی تونست این موشک رو سالم به زمین برگردونه! برعکس پرتاب قبل که روی آب فرود اومد.
اسپیساکس امروز، یکشنبه در ساعت ۱۵:۵۵ به وقت ایران، این موشک رو برای پنجمین بار از مرکز استاربیس در جنوب تگزاس پرتاب کرد و دقایقی بعد با سالم فرود آوردنش رو سکوی پرتاب، تونست به پیشرفت چشمگیری در این آزمایش برسه.
x.
hadi @geekalerts
اسپیساکس امروز، یکشنبه در ساعت ۱۵:۵۵ به وقت ایران، این موشک رو برای پنجمین بار از مرکز استاربیس در جنوب تگزاس پرتاب کرد و دقایقی بعد با سالم فرود آوردنش رو سکوی پرتاب، تونست به پیشرفت چشمگیری در این آزمایش برسه.
x.
hadi @geekalerts
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
Ubuntu24.10.pdf
1.7 MB
🔸جزئیات کامل از ویژگی های جدید اوبونتو نسخه 24.10
🔸در ادامه این پست:
🔸جزئیات کاملی از ویژگی های نسخه جدید اوبونتو در قالب فایل pdf قرار دادم. امیدوارم مفید باشد.
نویسنده حسین سیلانی
🔸در ادامه این پست:
https://t.iss.one/linuxtnt/3947
🔸جزئیات کاملی از ویژگی های نسخه جدید اوبونتو در قالب فایل pdf قرار دادم. امیدوارم مفید باشد.
نویسنده حسین سیلانی
Forwarded from DevTwitter | توییت برنامه نویسی
دوره Large Language Model Agents که در دانشگاه برکلی داره برگزار میشه رو میتونید به صورت رایگان شرکت کنید.
تو این دوره شما ابتدا با LLM ها آشنا میشین و بعد یاد میگیرید چطور agent بسازید و در آخر با فرصتها، تهدیدها و محدودیت agentها آشنا خواهید شد.
https://llmagents-learning.org/f24
@DevTwitter | <Reza Jafari/>
تو این دوره شما ابتدا با LLM ها آشنا میشین و بعد یاد میگیرید چطور agent بسازید و در آخر با فرصتها، تهدیدها و محدودیت agentها آشنا خواهید شد.
https://llmagents-learning.org/f24
@DevTwitter | <Reza Jafari/>
Forwarded from Seyed Mahdi Notes (Seyed Mahdi)
Programming patterns aren't 'Good practice' or 'The right way to do things', they exist to help make things easier for you. They're meant as good solutions to common problems. But once they stop being easy, they stop being useful.