بیشتره مواقع در فرایند تست نویسی ای که نیازه بررسی کنیم آیا رکوردمون از دیتابیس حذف میشه یا نه میایم از ()assertDatabaseMissing استفاده میکنیم تا ببینیم این یوزری که مشخص کردیم رو میتونه حذف کنه یا خیر.
این یه روش رایج هستش اما میتونیم بجاش از هلپر ()assertModelMissing استفاده کنیم که باعث بهینه تر شدن فرایند تست نویسی هم میشه. 🪴🌴
از جمله مزایای استفاده ازین هلپر :
✔️ قابل فهم تر شدن (حتی از نامش هم مشخصه که میخواد چیکار کنه)
✔️ کوتاه شدن کد (در تصویر قابل رویته)
✔️ تاثیر واضح و قابل رویت بر کلین کد
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://twitter.com/OussamaMater/status/1791200027156652060?s=19
این یه روش رایج هستش اما میتونیم بجاش از هلپر ()assertModelMissing استفاده کنیم که باعث بهینه تر شدن فرایند تست نویسی هم میشه. 🪴🌴
از جمله مزایای استفاده ازین هلپر :
✔️ قابل فهم تر شدن (حتی از نامش هم مشخصه که میخواد چیکار کنه)
✔️ کوتاه شدن کد (در تصویر قابل رویته)
✔️ تاثیر واضح و قابل رویت بر کلین کد
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنین 👇🏾)
https://twitter.com/OussamaMater/status/1791200027156652060?s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Assert Model Missing
When writing tests, we often use "assertDatabaseMissing()" to check whether a model has been deleted. Did you know that Laravel ships with a cool helper called "assertModelMissing()" to do exactly that? 🚀
#laravel
When writing tests, we often use "assertDatabaseMissing()" to check whether a model has been deleted. Did you know that Laravel ships with a cool helper called "assertModelMissing()" to do exactly that? 🚀
#laravel
🔥3❤1
Forwarded from CodeCrafters (mahyar)
خب در ادامه پست های استفاده از ایندکس در جئداول دیتابیس قرار در این پست با Multi-Column Indexes اشنا بشیم/
ایندکسهای چندستونی (Multi-Column Indexes) برای بهبود کارایی جستجو در جداولی که به طور مکرر از چندین ستون در کوئریهای خود استفاده میکنند، بسیار مفید هستند. این نوع ایندکسها بر روی بیش از یک ستون از جدول ایجاد میشوند و میتوانند به طور همزمان ترتیب چند ستون را برای بهبود سرعت جستجو حفظ کنند.
ویژگیهای ایندکسهای چندستونی
1. ترتیب ستونها:
- ترتیب ستونهایی که در ایندکس تعریف میشوند بسیار مهم است.
- ایندکس ابتدا بر اساس ستون اول مرتب میشود و سپس در داخل هر مقدار ستون اول، بر اساس ستون دوم و به همین ترتیب ادامه مییابد.
- انتخاب ترتیب مناسب ستونها بر اساس الگوهای کوئری معمول، میتواند تاثیر زیادی بر کارایی جستجو داشته باشد.
2. بهبود کارایی:
- ایندکسهای چندستونی میتوانند کارایی کوئریهایی را که از این ستونها در شرط WHERE، ORDER BY، و GROUP BY استفاده میکنند، بهبود بخشند.
- در کوئریهایی که فقط از ستون اول ایندکس استفاده میکنند نیز میتواند بهبود کارایی ایجاد کند.
3. محدودیتها:
- ایندکسهای چندستونی میتوانند فضای بیشتری را نسبت به ایندکسهای تکستونی اشغال کنند.
- بهروزرسانیهای جداولی که دارای ایندکسهای چندستونی هستند میتوانند زمانبرتر باشند به دلیل نیاز به بروزرسانی ساختار ایندکس.
مثالها و کد
فرض کنید یک جدول به نام
ایجاد ایندکس چندستونی
در SQL، ایجاد یک ایندکس چندستونی به شکل زیر است:
این ایندکس ابتدا بر اساس
استفاده از ایندکس چندستونی در کوئریها
مثال 1: جستجو بر اساس هر دو ستون
در این کوئری، هر دو ستون
مثال 2: جستجو بر اساس ستون اول
در این کوئری، تنها ستون
مثال 3: جستجو بر اساس ستون دوم
در این کوئری، تنها ستون
بهروزرسانی و حذف ایندکس
برای حذف یک ایندکس چندستونی:
نکات مهم
1. انتخاب ستونها: ستونهایی را انتخاب کنید که در بیشتر کوئریها استفاده میشوند و ترتیب آنها را بر اساس بیشترین تاثیر بر کارایی جستجو تعیین کنید.
2. نگهداری و بهروزرسانی: با افزایش تعداد ایندکسها، عملیات نوشتن (INSERT, UPDATE, DELETE) کندتر میشود. به همین دلیل، باید توازن مناسبی بین تعداد ایندکسها و نیازهای جستجو برقرار کرد.
3. تحلیل کارایی: استفاده از ابزارهای تحلیل کارایی (مانند EXPLAIN در SQL) برای بررسی تاثیر ایندکسها بر کوئریها مفید است.
با توجه به این نکات، ایندکسهای چندستونی میتوانند به طور قابل توجهی کارایی دیتابیس شما را بهبود بخشند اگر به درستی طراحی و استفاده شوند.
#database
#postgresql
ایندکسهای چندستونی (Multi-Column Indexes) برای بهبود کارایی جستجو در جداولی که به طور مکرر از چندین ستون در کوئریهای خود استفاده میکنند، بسیار مفید هستند. این نوع ایندکسها بر روی بیش از یک ستون از جدول ایجاد میشوند و میتوانند به طور همزمان ترتیب چند ستون را برای بهبود سرعت جستجو حفظ کنند.
ویژگیهای ایندکسهای چندستونی
1. ترتیب ستونها:
- ترتیب ستونهایی که در ایندکس تعریف میشوند بسیار مهم است.
- ایندکس ابتدا بر اساس ستون اول مرتب میشود و سپس در داخل هر مقدار ستون اول، بر اساس ستون دوم و به همین ترتیب ادامه مییابد.
- انتخاب ترتیب مناسب ستونها بر اساس الگوهای کوئری معمول، میتواند تاثیر زیادی بر کارایی جستجو داشته باشد.
2. بهبود کارایی:
- ایندکسهای چندستونی میتوانند کارایی کوئریهایی را که از این ستونها در شرط WHERE، ORDER BY، و GROUP BY استفاده میکنند، بهبود بخشند.
- در کوئریهایی که فقط از ستون اول ایندکس استفاده میکنند نیز میتواند بهبود کارایی ایجاد کند.
3. محدودیتها:
- ایندکسهای چندستونی میتوانند فضای بیشتری را نسبت به ایندکسهای تکستونی اشغال کنند.
- بهروزرسانیهای جداولی که دارای ایندکسهای چندستونی هستند میتوانند زمانبرتر باشند به دلیل نیاز به بروزرسانی ساختار ایندکس.
مثالها و کد
فرض کنید یک جدول به نام
employees داریم که شامل ستونهای first_name، last_name، و department_id است و میخواهیم یک ایندکس چندستونی بر روی ستونهای last_name و department_id ایجاد کنیم.ایجاد ایندکس چندستونی
در SQL، ایجاد یک ایندکس چندستونی به شکل زیر است:
CREATE INDEX idx_lastname_department ON employees (last_name, department_id);
این ایندکس ابتدا بر اساس
last_name و سپس بر اساس department_id مرتب میشود.استفاده از ایندکس چندستونی در کوئریها
مثال 1: جستجو بر اساس هر دو ستون
SELECT * FROM employees WHERE last_name = 'Doe' AND department_id = 5;
در این کوئری، هر دو ستون
last_name و department_id استفاده شدهاند، بنابراین ایندکس idx_lastname_department به طور کامل بهرهبرداری میشود و کارایی جستجو افزایش مییابد.مثال 2: جستجو بر اساس ستون اول
SELECT * FROM employees WHERE last_name = 'Doe';
در این کوئری، تنها ستون
last_name استفاده شده است که ستون اول ایندکس است. بنابراین ایندکس هنوز هم میتواند کارایی جستجو را بهبود بخشد.مثال 3: جستجو بر اساس ستون دوم
SELECT * FROM employees WHERE department_id = 5;
در این کوئری، تنها ستون
department_id استفاده شده است که ستون دوم ایندکس است. این کوئری نمیتواند از ایندکس idx_lastname_department بهرهبرداری کند و به احتمال زیاد از اسکن کامل جدول استفاده خواهد کرد.بهروزرسانی و حذف ایندکس
برای حذف یک ایندکس چندستونی:
DROP INDEX idx_lastname_department ON employees;
نکات مهم
1. انتخاب ستونها: ستونهایی را انتخاب کنید که در بیشتر کوئریها استفاده میشوند و ترتیب آنها را بر اساس بیشترین تاثیر بر کارایی جستجو تعیین کنید.
2. نگهداری و بهروزرسانی: با افزایش تعداد ایندکسها، عملیات نوشتن (INSERT, UPDATE, DELETE) کندتر میشود. به همین دلیل، باید توازن مناسبی بین تعداد ایندکسها و نیازهای جستجو برقرار کرد.
3. تحلیل کارایی: استفاده از ابزارهای تحلیل کارایی (مانند EXPLAIN در SQL) برای بررسی تاثیر ایندکسها بر کوئریها مفید است.
با توجه به این نکات، ایندکسهای چندستونی میتوانند به طور قابل توجهی کارایی دیتابیس شما را بهبود بخشند اگر به درستی طراحی و استفاده شوند.
#database
#postgresql
👍3
این طراحیه route که مشاهده میکنین برای یه سری از مواقع میتونه باعث زیباتر شدن کدتون بشه :)
استفاده از این طرز نوشتاری میتونه در کلین کد و کوتاه تر شدنش موثر واقع بشه و از تکرار یه سری کلمات جلوگیری بشه...
(البته در نظر داشته باشید که باید کنترلر هاشون مشترک باشه)
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/PovilasKorop/status/1792854101908136134?t=NB4uthliq4x3FxpuaX91vg&s=35
استفاده از این طرز نوشتاری میتونه در کلین کد و کوتاه تر شدنش موثر واقع بشه و از تکرار یه سری کلمات جلوگیری بشه...
(البته در نظر داشته باشید که باید کنترلر هاشون مشترک باشه)
@GoldenCodeir
#Laravel
(به منبع و مثالش دقت کنین👇🏾)
https://x.com/PovilasKorop/status/1792854101908136134?t=NB4uthliq4x3FxpuaX91vg&s=35
X (formerly Twitter)
Povilas Korop | Laravel Courses Creator & Youtuber (@PovilasKorop) on X
Laravel tip.
If you use many non-resource methods of one Controller in your Routes, consider using a Route Controller group, instead.
If you use many non-resource methods of one Controller in your Routes, consider using a Route Controller group, instead.
❤11👍2
Golden Code
در لاراول چجوری میشه ستون number رو با استفاده از مایگریشن به جدول users اضافه کنیم؟
پس از اجرای کد زیر، کاربر چه وضعیتی را مشاهده خواهد کرد؟
php artisan down
php artisan down
Anonymous Quiz
26%
501
11%
502
50%
503
13%
419
👍3❤2🔥2
"همونطور که میدونید در FormRequest میتونیم قوانین مدنظرمون رو در متود rules تعریف کنیم...
اما اگه بخواهید پیام خطای پیش فرض اعتبارسنجی رو برای یک فیلد خاص و یک قانون اعتبار سنجیه خاص تغییر بدین، کافیه متود ()messages رو به FormRequest اضافه کنید.
📌 بریم یه مثال بزنیم :
به تصویر توجه کنین، میخوایم پیام خطای مربوط به اعتبار سنجیه فیلد name برای قانون required رو تغییر بدیم، به راحتی میتونیم با استفاده از متود messages این کارو انجام بدیم.
خروجی :
اگر name خالی بمونه خطایی که تعریف کردیم نمایش داده میشه."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/PovilasKorop/status/1793941262698971531?s=35
اما اگه بخواهید پیام خطای پیش فرض اعتبارسنجی رو برای یک فیلد خاص و یک قانون اعتبار سنجیه خاص تغییر بدین، کافیه متود ()messages رو به FormRequest اضافه کنید.
📌 بریم یه مثال بزنیم :
به تصویر توجه کنین، میخوایم پیام خطای مربوط به اعتبار سنجیه فیلد name برای قانون required رو تغییر بدیم، به راحتی میتونیم با استفاده از متود messages این کارو انجام بدیم.
خروجی :
اگر name خالی بمونه خطایی که تعریف کردیم نمایش داده میشه."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/PovilasKorop/status/1793941262698971531?s=35
❤6👍2❤🔥1
ممکنه بعضی مواقع بخواید بررسی کنین که آیا همه عناصر در مجموعه ، تابع یک شرط هستن یا خیر.
لاراول با متود ()every همینکارو انجام میده.✔️
در دو مثال زیر ، یک شرط به طرق مختلف بررسی شده (آیا همه ی آیتم ها بزرگتر از ۲ هستند؟)
مثال ۱: پاسخ false
مثال ۲: یک آرایه خالی ایجاد شده و با متود every اقدام به بررسی شرط کردیم.
(پاسخ true میشه)
چرا؟
(چون عنصری وجود نداره که بخواد شرط رو نقض کنه)
📌 برخی مزایای متود every:
خواناتر شدن کد
تعامل خوب با اکثر متودای کالکشن
بهبود performance (وقتی شرط false بشه عملیات متوقف میشه)"
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال توجه کنید👇🏾)
https://twitter.com/OussamaMater/status/1795907677702193378?t=RNSJQRVQfui92BI_BfOZ2g&s=19
لاراول با متود ()every همینکارو انجام میده.✔️
در دو مثال زیر ، یک شرط به طرق مختلف بررسی شده (آیا همه ی آیتم ها بزرگتر از ۲ هستند؟)
مثال ۱: پاسخ false
مثال ۲: یک آرایه خالی ایجاد شده و با متود every اقدام به بررسی شرط کردیم.
(پاسخ true میشه)
چرا؟
(چون عنصری وجود نداره که بخواد شرط رو نقض کنه)
📌 برخی مزایای متود every:
خواناتر شدن کد
تعامل خوب با اکثر متودای کالکشن
بهبود performance (وقتی شرط false بشه عملیات متوقف میشه)"
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال توجه کنید👇🏾)
https://twitter.com/OussamaMater/status/1795907677702193378?t=RNSJQRVQfui92BI_BfOZ2g&s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: The "every" Collection Method
Sometimes you may want to check if every element in the collection passes a condition. Luckily, Laravel ships with the "every" method to do exactly that 🚀
#laravel
Sometimes you may want to check if every element in the collection passes a condition. Luckily, Laravel ships with the "every" method to do exactly that 🚀
#laravel
❤2❤🔥1👍1🔥1
Forwarded from کداکسپلور | CodeExplore (Bardia)
فرق گیت هاب و گیت لب چیه ، از کدومش استفاده کنم !! 🧐
🔹 در کنار شباهتهای این دو سرویس که دو نوع از پر کاربردترین سرویس های مدیریت مخزن گیت است، به طور حتم تفاوتهای بسیاری نیز مشاهده میشود . ما در این جا فقط به تفاوت های این دو می پردازیم .
🔻 تفاوت ها :
در قدم اول اینکه میدونین بیس و کار هر دو تا پلتفرم یکی هستش و هر دو ساخته شدند تا یک کاری رو انجام بدن اما !
گیت لب امکان اجازه به کاربران در جهت استفاده از مخزن خصوصی به صورت رایگان را میدهد. در حالی که گیت هاب برای مخزنهای شخصی خود به پرداختهای ماهانه و یا سالانه نیازمند است. به این دلیل که github به کمپانی مایکروسافت واگذار شده است.
یکی از بزرگترین مشکل گیت لب این است که برای کاربران ساکن ایران به دلیل تحریم ها یک مقدار مشکلاتی را به وجود می آوردن ، اما گیت هاپ کاملا آزاد است و کیتواندی ثبت نام و از مزایا آن استفاده کنید
در مورد سابقه این دو سرویس ، گیت لب یک مقدار از گیت هاب کارکشته تر است اما گیت هاب در این چند وقت واقعا رشد عجیبی نسبت به گیت لب کرده و اکثر توسعه دهندگان از سرویس گیت هاب استفاده می کنند .
#پست_پیشنهادی
☕️ @CodeExplore
🔹 در کنار شباهتهای این دو سرویس که دو نوع از پر کاربردترین سرویس های مدیریت مخزن گیت است، به طور حتم تفاوتهای بسیاری نیز مشاهده میشود . ما در این جا فقط به تفاوت های این دو می پردازیم .
🔻 تفاوت ها :
در قدم اول اینکه میدونین بیس و کار هر دو تا پلتفرم یکی هستش و هر دو ساخته شدند تا یک کاری رو انجام بدن اما !
گیت لب امکان اجازه به کاربران در جهت استفاده از مخزن خصوصی به صورت رایگان را میدهد. در حالی که گیت هاب برای مخزنهای شخصی خود به پرداختهای ماهانه و یا سالانه نیازمند است. به این دلیل که github به کمپانی مایکروسافت واگذار شده است.
یکی از بزرگترین مشکل گیت لب این است که برای کاربران ساکن ایران به دلیل تحریم ها یک مقدار مشکلاتی را به وجود می آوردن ، اما گیت هاپ کاملا آزاد است و کیتواندی ثبت نام و از مزایا آن استفاده کنید
در مورد سابقه این دو سرویس ، گیت لب یک مقدار از گیت هاب کارکشته تر است اما گیت هاب در این چند وقت واقعا رشد عجیبی نسبت به گیت لب کرده و اکثر توسعه دهندگان از سرویس گیت هاب استفاده می کنند .
#پست_پیشنهادی
☕️ @CodeExplore
👍6
Forwarded from Pishro App
بصورت کلی Property webhook به برنامهنویسان این امکان رو میده تا رفتار پیشفرض دسترسی به properties و تغییر آنها را با استفاده از توابع "get" و "set" تغییر دهند. این قابلیت از زبانهایی مانند Kotlin، C# و Swift الهام گرفته شده است.
Property Hooks دو نوع "hook" برای دسترسی و تغییر مقدار properties فراهم میکند:
get:
این hook برای تعیین منطق دلخواه هنگام خواندن مقدار property استفاده میشود. به عنوان مثال، میتوانید property را قبل از برگرداندن مقدار آن تغییر دهید.
set:
این hook برای تعیین منطق دلخواه هنگام تنظیم مقدار property استفاده میشود. به عنوان مثال، میتوانید مقادیر را اعتبارسنجی یا تغییر دهید قبل از اینکه به property اختصاص داده شوند.
class User {
public string $fullName {
get => $this->first . " " . $this->last;
set {
[$this->first, $this->last] = explode(' ', $value, 2);
}
}
public function __construct(public string $first, public string $last) {}
}
$user = new User('John', 'Doe');
echo $user->fullName; // John Doe
$user->fullName = 'Jane Smith';
echo $user->first; // Janeکاهش کدهای تکراری: نیازی به تعریف متدهای getter و setter برای هر property نیست.
انعطافپذیری بیشتر: امکان تعریف منطق دلخواه برای دسترسی و تغییر properties.
کد خواناتر: خوانایی و نگهداری کدها بهتر میشود.
ویژگی Property Hooks قابلیتهای متعددی برای بهبود و سادهسازی دسترسی به properties فراهم میکنند و از این جهت یک ابزار قدرتمند برای توسعهدهندگان PHP خواهند بود.
#php
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🤮1
لاراول هلپری با نام ()optional در اختیارمون گذاشته که وقتی ازش استفاده کنیم میتونیم بر نتایج خطاهای مربوط به مقدار null ، مدیریت بهتری داشته باشیم تا برنامه به دلیل null بودن یک مقدار ، با خطا مواجه نشه...
تصویر رو مشاهده کنید
اگر مقدار برای user برابر null بشه دیگه خطایی رخ نمیده.(بدلیل استفاده از optional)
اما اگه دیتایی داشته باشه ، اون callback براش اجرا خواهد شد.✔️
#Laravel
#لاراول
#اموزشی_لاراول
#کد_نویسی
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثال دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1796866799663042779
تصویر رو مشاهده کنید
اگر مقدار برای user برابر null بشه دیگه خطایی رخ نمیده.(بدلیل استفاده از optional)
اما اگه دیتایی داشته باشه ، اون callback براش اجرا خواهد شد.✔️
#Laravel
#لاراول
#اموزشی_لاراول
#کد_نویسی
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثال دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1796866799663042779
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel Tip
Use Laravel's optional() helper with a callback to handle null values gracefully. 🕶️ That way, you can perform operations on potentially null values without throwing errors.
Use Laravel's optional() helper with a callback to handle null values gracefully. 🕶️ That way, you can perform operations on potentially null values without throwing errors.
⚡2👍2❤1🔥1
Forwarded from CleverDevs (Mahdi)
👈 5 نکته برای بهبود UI, UX سایتتون(پارت1) :
یه روانشناس آلمانی به اسم Hedwig von Restorff تو سال 1933 طی یه آزمایش چند تا آیتم شبیه به هم و یک آیتم متفاوت رو کنار هم گذاشت و طبق بررسی مشخص شد که اون آیتم متفاوت کنار آیتمهای یکسان، توجه خیلی بیشتری رو جلب میکنه.
حالا تو سایت چه استفادهای داره؟
میتونیم توی اسلایدری که محصولمون رو گذاشتیم، اسلایدی که زودتر باید فروش بره رو به یه نحوی نسبت به بقیه اسلاید ها مجزا کنیم(مثل تصویر).
#UX #UI src
@CleverDevs - @CleverDevsGp
1. Isolation
یه روانشناس آلمانی به اسم Hedwig von Restorff تو سال 1933 طی یه آزمایش چند تا آیتم شبیه به هم و یک آیتم متفاوت رو کنار هم گذاشت و طبق بررسی مشخص شد که اون آیتم متفاوت کنار آیتمهای یکسان، توجه خیلی بیشتری رو جلب میکنه.
حالا تو سایت چه استفادهای داره؟
میتونیم توی اسلایدری که محصولمون رو گذاشتیم، اسلایدی که زودتر باید فروش بره رو به یه نحوی نسبت به بقیه اسلاید ها مجزا کنیم(مثل تصویر).
#UX #UI src
@CleverDevs - @CleverDevsGp
👍2❤1💯1
"اگر نیاز داشته باشیم در کوئری نویسی از sql خام برای دریافت دیتای حاصل از کوئری استفاده کنیم درین شرایط میتونیم از متودی تحت عنوان ()rawValue استفاده کنیم.
در مثال سوم خواسته شده که دو ستون first_name و last_name که مربوط به یوزر مدنظر هستند رو در کنار هم تحویل بده."
@GoldenCodeir
#Laravel
#لاراول
#برنامه_نویسی
این مقاله فارسی هم خوب بود :
https://vrgl.ir/Xppdh
(📌 به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1797953958335725973
در مثال سوم خواسته شده که دو ستون first_name و last_name که مربوط به یوزر مدنظر هستند رو در کنار هم تحویل بده."
@GoldenCodeir
#Laravel
#لاراول
#برنامه_نویسی
این مقاله فارسی هم خوب بود :
https://vrgl.ir/Xppdh
(📌 به منبع و مثالش دقت کنید👇🏾)
https://x.com/laravelbackpack/status/1797953958335725973
👍3❤2🔥2💯1
Forwarded from CleverDevs (Mammad)
-اصل Explain Yourself in Code در کلین کد
این اصل میگه که وقتی میشه کد رو جوری نوشت که خودش کارشو توضیح بده چه نیازی به کامنت اضافس ؟
یعنی چی ؟ مثال پایین رو ببینید
این کد بهتره یا اینکه جای کامنت این شرط رو توی تابع با اسم درست بزاریم ؟ مثل این
کلا دوثانیه وقتتون رو میگیره تا جای کامنت این کارو بکنید. بیشتر مواقع اینکه یه تابع بسازی که بتونه کد رو هم توضیح بده بهتر از کامنت نوشتنه
#CleanCode
@CleverDevs - @CleverDevsGp
این اصل میگه که وقتی میشه کد رو جوری نوشت که خودش کارشو توضیح بده چه نیازی به کامنت اضافس ؟
یعنی چی ؟ مثال پایین رو ببینید
// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65))
این کد بهتره یا اینکه جای کامنت این شرط رو توی تابع با اسم درست بزاریم ؟ مثل این
if (employee.isEligibleForFullBenefits())
کلا دوثانیه وقتتون رو میگیره تا جای کامنت این کارو بکنید. بیشتر مواقع اینکه یه تابع بسازی که بتونه کد رو هم توضیح بده بهتر از کامنت نوشتنه
#CleanCode
@CleverDevs - @CleverDevsGp
👍8🔥3❤2👎1
"گاهی ممکنه نیاز بشه عددی طولانی به کاربر نمایش بدیم ، درین شرایط خواندن عدد واسه کاربر کمی دشوار میشه.
برای نمایش دادن بهتر برخی اعداد به کاربر، میتونیم از هلپری بانام Number استفاده کنیم.✔️
مثال شماره ۱:
عدد ۱۰۰۰ رو دادیم به هلپر، خروجی: 1thousand
در مثال ۲ هم عدد رو رُند کرده برامون.
مثال شماره ۳(تصویر):
اینجا که عدد 12340000 رو داریم،برای نمایش بهتر به کاربر میتونیم ازین هلپر استفاده کنیم.
حالا خروجیش چی میشه؟ 1.23million
چرا؟ چون بر اساس دو رقم اعشار تعیین شده."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال دقت کنید👇🏾)
https://x.com/OussamaMater/status/1797365006935248910?s=19
برای نمایش دادن بهتر برخی اعداد به کاربر، میتونیم از هلپری بانام Number استفاده کنیم.✔️
مثال شماره ۱:
عدد ۱۰۰۰ رو دادیم به هلپر، خروجی: 1thousand
در مثال ۲ هم عدد رو رُند کرده برامون.
مثال شماره ۳(تصویر):
اینجا که عدد 12340000 رو داریم،برای نمایش بهتر به کاربر میتونیم ازین هلپر استفاده کنیم.
حالا خروجیش چی میشه؟ 1.23million
چرا؟ چون بر اساس دو رقم اعشار تعیین شده."
@GoldenCodeir
#Laravel
#لاراول
(به منبع و مثال دقت کنید👇🏾)
https://x.com/OussamaMater/status/1797365006935248910?s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Human-readable Numbers
Sometimes you may want to format numbers for your users in a human-readable format. The "Number" helper allows you to do just that 🚀
#laravel
Sometimes you may want to format numbers for your users in a human-readable format. The "Number" helper allows you to do just that 🚀
#laravel
👍5❤1💯1
Forwarded from Pishro App
نوشتن کد مانند ایراد سخنرانی است. اگر از کلمات بزرگ زیادی استفاده کنید، مخاطبان خود را گیج میکنید. اگر هر کلمه را تعریف کنید، مخاطبان خود را به خواب میبرید.
به همین ترتیب، وقتی کد مینویسید، نباید فقط روی عملکرد آن تمرکز کنید. شما باید هدف داشته باشید که کدتان قابل خواندن، قابل فهم و قابل نگهداری برای خوانندگان آینده باشد.
به نقل از مهندس نرمافزار، مارتین فاولر، "هر کسی میتواند کدی بنویسد که یک کامپیوتر آن را بفهمد. برنامهنویسان خوب کدی مینویسند که انسانها آن را بفهمند."
به عنوان توسعهدهندگان نرمافزار، درک چگونگی نوشتن کد تمیز که کاربردی، آسان برای خواندن و مطابقت با بهترین شیوهها باشد، به شما کمک میکند تا به طور مستمر نرمافزار بهتری ایجاد کنید.
#clean_code
👾 @pishroapp
به همین ترتیب، وقتی کد مینویسید، نباید فقط روی عملکرد آن تمرکز کنید. شما باید هدف داشته باشید که کدتان قابل خواندن، قابل فهم و قابل نگهداری برای خوانندگان آینده باشد.
به نقل از مهندس نرمافزار، مارتین فاولر، "هر کسی میتواند کدی بنویسد که یک کامپیوتر آن را بفهمد. برنامهنویسان خوب کدی مینویسند که انسانها آن را بفهمند."
به عنوان توسعهدهندگان نرمافزار، درک چگونگی نوشتن کد تمیز که کاربردی، آسان برای خواندن و مطابقت با بهترین شیوهها باشد، به شما کمک میکند تا به طور مستمر نرمافزار بهتری ایجاد کنید.
#clean_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
Forwarded from Md Daily
چند Best Practice در طراحی REST API
امروزه که همه چی به هم وصله، REST APIs با طراحی خوب، پایه و اساس برنامههای کاربردی کارآمد و قابل ارتقا هستن.
نوشتن دیزاین های REST API تمیز به چند دلیل خیلی مهمه:
استفاده راحتتر: یه API با طراحی خوب، کاربرپسند و سادست، و برای توسعهدهندهها با هر سطحی قابل استفادهست. اینجوری دیگه نیازی به صرف زمان زیاد برای یادگیری نیست.
نگهداری راحتتر: کد تمیز، نگهداری رو راحتتر میکنه. با این کار پیدا کردن و رفع اشکال، اضافه کردن قابلیتهای جدید و ارتقای API سادهتر و هزینههای توسعه هم کم میشه.
کاهش زمان توسعه: با مشخصات API دقیق و مستندات شفاف، میشه خیلی سریعتر برنامهنویسی کرد چون دیگه نیازی به حدس و گمان و تستهای مفصل نیست. اینجوری هم در زمان و هم در منابع صرفهجویی میشه.
مقیاسپذیری بیشتر: یه طراحی تمیز، با ارائه یه معماری ماژولار که به راحتی قابل گسترشه، امکان مقیاسپذیری راحت رو فراهم میکنه. اینجوری API میتونه با نیازهای برنامه شما رشد کنه و مشکلی پیش نیاد.
استفاده مجدد بیشتر: یه API با طراحی خوب رو میشه تو چند برنامه دیگه هم استفاده کرد، اینجوری دیگه نیازی به تکرار کار نیست و همه چی منظمتر میشه. اینجوری توسعه برنامهها سادهتر میشه و در زمان و تلاش هم صرفهجویی میشه.
مستندات بهتر: طراحیهای تمیز، مستندسازی رو هم سادهتر میکنن و نحوه کارکرد API و نحوه استفاده درست ازش رو به طور کامل برای برنامهنویسها توضیح میدن. اینجوری همه چی شفاف میشه و استفاده از API هم راحتتر میشه.
رولز ها یا قوانین URI
ساختار یه URI به شکل زیره:
مثال:
تو دنیای URI دو نوع منبع (resource) داریم:
منابع مجموعه (Collection resources): این نوع منبع، مجموعهای از منابع دیگه رو در خودش داره. میشه اون رو به یه جدول تو دیتابیس تشبیه کرد. مثلا میشه یه منبع مجموعه به اسم users داشته باشیم که لیستی از تمام کاربرها رو در خودش داره.
منابع تکی (Singleton resources): این نوع منبع، فقط شامل یه منبع واحده. میشه اون رو به یه رکورد تو دیتابیس تشبیه کرد. مثلا میشه یه منبع تکی به اسم users/123 داشته باشیم که اطلاعات مربوط به یه کاربر خاص با شناسه ۱۲۳ رو نشون بده
نکات مهم طراحی Rest Api
۱. منابع Collection باید جمع (plural) باشن :
۲. منابع Singleton باید مفرد (singular) باشن و با شناسه یکتاشون (unique id) جایگزین بشن:
فرض کن میخوای اطلاعات یه بازیکن خاص رو نمایش بدی، بجای استفاده از players/Ronaldo بهتره از شناسه عددی یا کد اون بازیکن استفاده کنی، مثلا players/12345.
۴. برای بهتر خونده شدن، از خط تیره (-) به جای زیرخط (_) استفاده کنید:
۵. تو مسیرهای URI از حروف کوچک استفاده کنید:
۶. تو URI ها از پسوند فایل استفاده نکنید:
۷. از اسم فانکشن های CRUD تو URI استفاده نکنید:
برای عملیات ایجاد، خواندن، بروزرسانی و حذف منابع، از اسم هایی مثل create, read, update, delete تو URI استفاده نکن. بجاش از Http Method های استاندارد استفاده کن.
۸. بخش کوئری (query) تو URI فقط برای منابع Collection قابل استفاده است:
۹. از بخش کوئری برای اسکرول (paging) کردن نتایج منابع مجموعه استفاده کنید:
نسخه بندی API برای موارد زیر اهمیت داره:
حفظ سازگاری قبلی (Maintaining backward compatibility)
تضمین یک API سازگار و با طراحی خوب: استفاده از نامگذاریهای یکسان تو همه نسخهها به یه تجربه کاربری خوب کمک میکنه. تغییر endpoint این تجربه رو بهم میریزه و نسخه بندی به جلوگیری از این موضوع کمک میکنه.
چند استراتزی برای نسخه بندی API:
URI Versioning (پیشنهادی):
Header Versioning:
🆔 @MdDaily
امروزه که همه چی به هم وصله، REST APIs با طراحی خوب، پایه و اساس برنامههای کاربردی کارآمد و قابل ارتقا هستن.
نوشتن دیزاین های REST API تمیز به چند دلیل خیلی مهمه:
استفاده راحتتر: یه API با طراحی خوب، کاربرپسند و سادست، و برای توسعهدهندهها با هر سطحی قابل استفادهست. اینجوری دیگه نیازی به صرف زمان زیاد برای یادگیری نیست.
نگهداری راحتتر: کد تمیز، نگهداری رو راحتتر میکنه. با این کار پیدا کردن و رفع اشکال، اضافه کردن قابلیتهای جدید و ارتقای API سادهتر و هزینههای توسعه هم کم میشه.
کاهش زمان توسعه: با مشخصات API دقیق و مستندات شفاف، میشه خیلی سریعتر برنامهنویسی کرد چون دیگه نیازی به حدس و گمان و تستهای مفصل نیست. اینجوری هم در زمان و هم در منابع صرفهجویی میشه.
مقیاسپذیری بیشتر: یه طراحی تمیز، با ارائه یه معماری ماژولار که به راحتی قابل گسترشه، امکان مقیاسپذیری راحت رو فراهم میکنه. اینجوری API میتونه با نیازهای برنامه شما رشد کنه و مشکلی پیش نیاد.
استفاده مجدد بیشتر: یه API با طراحی خوب رو میشه تو چند برنامه دیگه هم استفاده کرد، اینجوری دیگه نیازی به تکرار کار نیست و همه چی منظمتر میشه. اینجوری توسعه برنامهها سادهتر میشه و در زمان و تلاش هم صرفهجویی میشه.
مستندات بهتر: طراحیهای تمیز، مستندسازی رو هم سادهتر میکنن و نحوه کارکرد API و نحوه استفاده درست ازش رو به طور کامل برای برنامهنویسها توضیح میدن. اینجوری همه چی شفاف میشه و استفاده از API هم راحتتر میشه.
رولز ها یا قوانین URI
ساختار یه URI به شکل زیره:
scheme :// authority / path [?query][#fragment]
مثال:
https://soccer.api.org/teams/dortmund/players?name=Rona#2
تو دنیای URI دو نوع منبع (resource) داریم:
منابع مجموعه (Collection resources): این نوع منبع، مجموعهای از منابع دیگه رو در خودش داره. میشه اون رو به یه جدول تو دیتابیس تشبیه کرد. مثلا میشه یه منبع مجموعه به اسم users داشته باشیم که لیستی از تمام کاربرها رو در خودش داره.
منابع تکی (Singleton resources): این نوع منبع، فقط شامل یه منبع واحده. میشه اون رو به یه رکورد تو دیتابیس تشبیه کرد. مثلا میشه یه منبع تکی به اسم users/123 داشته باشیم که اطلاعات مربوط به یه کاربر خاص با شناسه ۱۲۳ رو نشون بده
نکات مهم طراحی Rest Api
۱. منابع Collection باید جمع (plural) باشن :
✅ soccer.api.org/teams/dortmond
❌ soccer.api.org/team/dortmond
۲. منابع Singleton باید مفرد (singular) باشن و با شناسه یکتاشون (unique id) جایگزین بشن:
فرض کن میخوای اطلاعات یه بازیکن خاص رو نمایش بدی، بجای استفاده از players/Ronaldo بهتره از شناسه عددی یا کد اون بازیکن استفاده کنی، مثلا players/12345.
✅ soccer.api.org/teams/dortmond/players/58c1aaae-205a-11ef-aeea-a64c74618950۳. اسلش ته آدرس رو حذف کنید:
✅ soccer.api.org/teams/dortmond/players
❌ soccer.api.org/teams/dortmond/players/
۴. برای بهتر خونده شدن، از خط تیره (-) به جای زیرخط (_) استفاده کنید:
✅ api.blog.com/blogs/this-is-my-blog
❌ api.blog.com/blogs/this_is_my_blog
۵. تو مسیرهای URI از حروف کوچک استفاده کنید:
✅ api.example.com/my-api/my-resource
❌ api.example.com/My-Api/My-Resource
۶. تو URI ها از پسوند فایل استفاده نکنید:
✅ api.example.com/api/resource
❌ api.example.com/api/resource.json
۷. از اسم فانکشن های CRUD تو URI استفاده نکنید:
برای عملیات ایجاد، خواندن، بروزرسانی و حذف منابع، از اسم هایی مثل create, read, update, delete تو URI استفاده نکن. بجاش از Http Method های استاندارد استفاده کن.
✅ DELETE api.example.com/api/resource
❌ GET api.example.com/api.resource/delete
✅ GET /users
❌ GET /getUsers
۸. بخش کوئری (query) تو URI فقط برای منابع Collection قابل استفاده است:
✅ GET /users?role=admin
❌ GET /users/admin
۹. از بخش کوئری برای اسکرول (paging) کردن نتایج منابع مجموعه استفاده کنید:
✅ GET /users?pageSize=25&pageStartIndex=50نسخه بندی API (Versioning)
نسخه بندی API برای موارد زیر اهمیت داره:
حفظ سازگاری قبلی (Maintaining backward compatibility)
تضمین یک API سازگار و با طراحی خوب: استفاده از نامگذاریهای یکسان تو همه نسخهها به یه تجربه کاربری خوب کمک میکنه. تغییر endpoint این تجربه رو بهم میریزه و نسخه بندی به جلوگیری از این موضوع کمک میکنه.
چند استراتزی برای نسخه بندی API:
URI Versioning (پیشنهادی):
✅ GET /api/v1/users
✅ GET /api/v2/users
Header Versioning:
✅ GET /api/users
Headers: { "X-API-Version": "1" }
✅ GET /api/users
Headers: { "X-API-Version": "2" }🆔 @MdDaily
❤6🔥2👍1💅1
در لاراول یه هلپر مفید داریم با نام literal که بهمون این امکان رو میده با استفاده از آرگومان های نامگذاری شده، یک آبجکت php بسازیم.
مزایاش ؟؟
افزایش خوانایی کد .
ساده تر شدن نحوه مدیریتشون .( مخصوصا در شرایطی که تعداد آرگومان ها زیاده مدیریت برامون ساده تر میشه با استفاده از هلپر literal ).
به مثالش در تصویر دقت کنین تا بهتر براتون جابیفته.
#Laravel
#لاراول
#برنامه_نویسی_وب
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800258725078274249?s=19
مزایاش ؟؟
افزایش خوانایی کد .
ساده تر شدن نحوه مدیریتشون .( مخصوصا در شرایطی که تعداد آرگومان ها زیاده مدیریت برامون ساده تر میشه با استفاده از هلپر literal ).
به مثالش در تصویر دقت کنین تا بهتر براتون جابیفته.
#Laravel
#لاراول
#برنامه_نویسی_وب
#برنامه_نویسی
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800258725078274249?s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: The "literal" Helper
Did you know that Laravel ships with a cool helper "literal" that allows you to create a PHP object using named arguments? 🚀
#laravel
Did you know that Laravel ships with a cool helper "literal" that allows you to create a PHP object using named arguments? 🚀
#laravel
👍9❤2💯2
Forwarded from Pishro App
نام متغیرها باید معنی دار و توصیف کننده داده هایی باشد که توی اون متغیر وجود داره.
اینکار باعث میشه خوانایی کد بالاتر و درک اون ساده تر بشه.
برای نمونه قطعه کد زیر رو ببینید:
// Bad Example
int x = 5;
// Good Example
int numberOfStudents = 5;
بصورت کلی همونطور که گفتم سعی کنید از اسم های خلاصه شده و نامفهوم در هیچ کجای کد استفاده نکنید
#clean_code
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1🔥1
در لاراول وقتی با کالکشن ها کار میکنیم اگر بخوایم اولین آیتمی که با شرط مورد نظرمون مطابقت داره رو بگیریم، میتونیم از متود ()sole استفاده کنیم.👌🏾
اگر هم بیشتر از یه آیتم با شرط مطابقت داشته باشه exception برمیگرده.
همچنین اگر هیچ آیتمی مطابق با شرط نباشه باز هم exception برمیگرده.
طرز کارش سادست،کافیه به تصویر دقت کنین ✔️
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800982923039912370?t=Xc2MWc7xLWTSTsRWfQWfDQ&s=35
اگر هم بیشتر از یه آیتم با شرط مطابقت داشته باشه exception برمیگرده.
همچنین اگر هیچ آیتمی مطابق با شرط نباشه باز هم exception برمیگرده.
طرز کارش سادست،کافیه به تصویر دقت کنین ✔️
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1800982923039912370?t=Xc2MWc7xLWTSTsRWfQWfDQ&s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: The "sole" Method
When working with collections, whether regular or Eloquent, if you want to get the first item that matches the condition and ensure it is the only one, use the "sole" method 🚀
#laravel
When working with collections, whether regular or Eloquent, if you want to get the first item that matches the condition and ensure it is the only one, use the "sole" method 🚀
#laravel
👍5
Forwarded from یک برنامه نویس تنبل (Raymond Dev)
یه نکته مهم❗️
بازار کار کاملا سبکش عوض شده.حداقل در مورد فرانت اند این موضوع به وضوح دیده میشه.تو این شرایط،شرکت ها دنبال بهترین گزینه هستن.همین عامل باعث میشه خیلی از افراد ماه ها بیکار بمونن.حالا باید چه کرد؟
🔹خودتون محدود به فریم وورک نکنید.قراره شما فرانت اند دولوپر باشید. نه ری اکت دولوپر! نه انگولار دولوپر.
سعی کنید دامنه دانسته هاتون از ابزار ببرید تو لول مفاهیم که سرعت شیفت کردنتون بین ابزارها سریع تر بشه اگر واقعا میخواید تو این مارکت خراب موندگار باشید.
@TheRaymondDev
بازار کار کاملا سبکش عوض شده.حداقل در مورد فرانت اند این موضوع به وضوح دیده میشه.تو این شرایط،شرکت ها دنبال بهترین گزینه هستن.همین عامل باعث میشه خیلی از افراد ماه ها بیکار بمونن.حالا باید چه کرد؟
🔹خودتون محدود به فریم وورک نکنید.قراره شما فرانت اند دولوپر باشید. نه ری اکت دولوپر! نه انگولار دولوپر.
سعی کنید دامنه دانسته هاتون از ابزار ببرید تو لول مفاهیم که سرعت شیفت کردنتون بین ابزارها سریع تر بشه اگر واقعا میخواید تو این مارکت خراب موندگار باشید.
@TheRaymondDev
👍5❤1
Forwarded from Pishro App
is و isNot هست که می تونین از این دو متد برای مقایسه اشیاء مدل با همدیگه استفاده کنید.این دو متد بررسی میکنن که آیا دو شیء از یک مدل یکسان هستند یا خیر.
به عبارت دیگه، این متدها بررسی میکنند که آیا دو شیء مدل اشاره به همان رکورد در دیتابیس دارند یا خیر.
isاین متد بررسی میکنه که آیا دو مدل یکسان هستند یا نه.
$user1 = User::find(1);
$user2 = User::find(1);
if ($user1->is($user2)) {
echo "Both are the same user.";
}
تومثال بالا؛ چون هر دو شیء
$user1 و $user2 به همان رکورد در دیتابیس اشاره میکنن، شرط برقرار است و پیام "Both are the same user." چاپ میشه.isNotاین متد بررسی میکنه که آیا دو مدل متفاوت هستند یا نه.
$user1 = User::find(1);
$user2 = User::find(2);
if ($user1->isNot($user2)) {
echo "They are different users.";
}
توی مثال بالا هم، چون شیء
$user1 و $user2 به رکوردهای مختلفی در دیتابیس اشاره میکنن، شرط برقرار است و پیام "They are different users." چاپ میشه#laravel #نکته
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
لازم نیست برای چند زبانه کردن سایت دنبال تکنیک و ترفند باشید!
"ترجمه گوگل" بهترین گزینه برای چند زبانه کردن سایت هستش که برای شما دوستان Golden Code ای کدهاشو نوشتم.
- پشتیبانی همه زبان ها
- سرعت بالای ترجمه
- ظاهری زیبا
- استفاده آسان
تنها با چند کپی پیست ازش استفاده کنید و لذت ببرید ❤️
https://github.com/mordadam/google-translate-html-js
"ترجمه گوگل" بهترین گزینه برای چند زبانه کردن سایت هستش که برای شما دوستان Golden Code ای کدهاشو نوشتم.
- پشتیبانی همه زبان ها
- سرعت بالای ترجمه
- ظاهری زیبا
- استفاده آسان
تنها با چند کپی پیست ازش استفاده کنید و لذت ببرید ❤️
https://github.com/mordadam/google-translate-html-js
GitHub
GitHub - mordadam/google-translate-html-js: Google translate (html, js) for all countries with flags, responsive, customization…
Google translate (html, js) for all countries with flags, responsive, customization, high translation speed - mordadam/google-translate-html-js
❤5👏3👍2