کانال آموزشی لاراول
3.06K subscribers
120 photos
4 videos
38 links
📌 کانال اتاق برنامه نویسی
@PapiDon_coding
Download Telegram
کانال آموزشی لاراول
Photo
دستورات کلیدی و نکات مهم Laravel Queue

در این پست، به بررسی دقیق و جامع دستورات صف (Queue) در Laravel می‌پردازیم.

1️⃣ ایجاد جدول‌ها

- php artisan queue:table

- جدول‌های لازم برای ذخیره‌سازی job‌ها در دیتابیس را ایجاد می‌کند. این دستور برای زمانی که از درایور دیتابیس برای صف‌ها استفاده می‌کنید، ضروری است.

- php artisan queue:failed-table

- جدولی برای ذخیره‌سازی اطلاعات job‌هایی که با شکست مواجه شده‌اند ایجاد می‌کند. این به شما کمک می‌کند تا خطاها را ردیابی و مدیریت کنید.

2️⃣ اجرای و مدیریت Worker‌ها

- php artisan queue:work

- یک worker صف را اجرا می‌کند تا job‌های موجود در صف را پردازش کند. این دستور برای شروع فرآیند پردازش صف است.

- php artisan queue:listen

- مشابه queue:work است، اما برای هر job یک پروسه جدید ایجاد می‌کند. مناسب برای محیط توسعه به دلیل آسانی در ردیابی خطاها.

- php artisan queue:restart

- تمام worker‌های صف را ری‌استارت می‌کند. مفید است زمانی که کد جدیدی منتشر شده و می‌خواهید تغییرات را اعمال کنید.

3️⃣ مدیریت Job‌های شکست‌خورده

- php artisan queue:retry {id}

- یک یا چند job شکست‌خورده را برای اجرای مجدد به صف باز می‌گرداند. برای اجرای مجدد job‌هایی که به دلیل خطاهای قابل رفع شکست خورده‌اند.

- php artisan queue:forget {id}

- یک job شکست‌خورده خاص را از جدول job‌های شکست‌خورده حذف می‌کند. استفاده می‌شود وقتی دیگر نیازی به امتحان مجدد یک job نیست.

- php artisan queue:flush

- تمام job‌های شکست‌ خورده را از جدول پاک می‌کند. برای پاک‌سازی و ریست کردن صف‌های شکست‌خورده استفاده می‌شود.

- php artisan queue:failed

- لیستی از تمام job‌های شکست‌خورده را نمایش می‌دهد. برای تحلیل و بررسی خطاها استفاده می‌شود.

4️⃣ تاخیر و تلاش مجدد در Job‌ها

- Dispatching with Delay:

- برای ارسال یک job به صف با تاخیر، می‌توانید از متد dispatch با اضافه کردن ->delay($time) استفاده کنید، مثلاً

SomeJob::dispatch()->delay(now()->addMinutes(10));


- Release for Retry:

- دستور `release($delay)`در داخل یک job اجرا می‌شود تا آن job را برای اجرای مجدد با تاخیر در صف قرار دهد. بسیار مفید برای زمان‌هایی که می‌خواهید یک job را پس از بروز یک خطای موقتی دوباره امتحان کنید.

5️⃣ تعیین زمان انقضا برای تلاش مجدد

- Using retryUntil:

- در داخل کلاس job، متد retryUntil را تعریف کنید تا زمان انقضا برای تلاش‌های مجدد را مشخص کنید. این متد باید تاریخ و زمانی را که می‌خواهید job دیگر امتحان مجدد نشود را بازگرداند.

- مثال:
    public function retryUntil()
{
// تلاش مجدد برای یک ساعت پس از اولین اجرا
return now()->addHours(1);
}




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍95🔥3
کانال آموزشی لاراول
Photo
معرفی ابزار جادویی برای توسعه‌دهندگان Laravel: Blueprint!

🛠 Blueprint

یک ابزار کدنویسی قدرتمند برای فریم‌ورک Laravel است که به توسعه‌دهندگان کمک می‌کند تا با سرعت و کارآمدی بیشتری کد بنویسند. با استفاده از یک فایل YAML ساده، می‌توانید مدل‌ها، کنترلر‌ها، و سایر قسمت‌های پروژه Laravel خود را تعریف و سپس کد مورد نیاز را به صورت خودکار تولید کنید.

⚙️ چگونه کار می‌کند؟

1️⃣ تعریف کامپوننت‌ها: ابتدا با نوشتن یک فایل YAML ساده شروع می‌کنید و در آن مدل‌ها، کنترلر‌ها، و سایر کامپوننت‌های مورد نیاز خود را تعریف می‌کنید.

2️⃣ تولید کد: با اجرای یک دستور ساده در ترمینال، Blueprint کد مورد نیاز شما را بر اساس تعریف‌های YAML ایجاد می‌کند.

3️⃣ توسعه سریعتر: با استفاده از کد تولید شده، می‌توانید بلافاصله به توسعه بخش‌های دیگر پروژه خود بپردازید.

🔥 ویژگی‌های کلیدی:

- تولید خودکار مدل‌ها، کنترلر‌ها، میگریشن‌ها، فکتوری‌ها و بیشتر
- پشتیبانی از تست‌های اتوماتیک برای اطمینان از کیفیت کد
- افزایش چشمگیر سرعت توسعه پروژه‌های Laravel

📘 چگونه شروع کنیم؟

برای شروع با Blueprint، به سادگی آن را از طریق Composer نصب کنید و دستورالعمل‌های موجود در مستندات رسمی را دنبال کنید. توجه داشته باشید که داشتن دانش پایه‌ای از Laravel و YAML برای استفاده موثر از این ابزار ضروری است.

🔗 منابع بیشتر:

برای کسب اطلاعات بیشتر و دسترسی به مستندات کامل، به وب‌سایت رسمی Blueprint مراجعه کنید.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥61👍1
🔥5
کانال آموزشی لاراول
Photo
بهینه‌سازی عملکرد با استفاده از [()Computed]# در Livewire

سلام دوستان! 😊👋
امروز می‌خواهیم در مورد یکی از ویژگی‌های جذاب و کاربردی Livewire صحبت کنیم که می‌تواند به شما در بهینه‌سازی عملکرد برنامه‌های وب کمک کند! نام این ویژگی [()Computed]# است.

🤔 چرا [()Computed]# مهم است؟

فرض کنید یک فانکشن دارید که داده‌هایی را از دیتابیس بازیابی می‌کند. این داده‌ها ممکن است پست‌های یک وبلاگ، لیست محصولات یا هر چیز دیگری باشند. بدون [()Computed]#, هر بار که کاربر عملی را انجام می‌دهد، ممکن است این فانکشن دوباره و دوباره اجرا شود. این می‌تواند منجر به اتلاف منابع و کاهش سرعت برنامه شود.

🛠 چگونه [()Computed]# کمک می‌کند؟

وقتی شما [()Computed]# را به فانکشنی اضافه می‌کنید، Livewire نتیجه فانکشن را "به یاد می‌آورد". اگر دفعه بعد ورودی‌های فانکشن تغییر نکرده باشند، به جای اجرای دوباره فانکشن، Livewire از نتیجه ذخیره‌شده قبلی استفاده می‌کند. این کار باعث می‌شود برنامه شما سریع‌تر و کارآمدتر کار کند.

🧐کجا باید از [()Computed]# استفاده کنیم؟

1️⃣ درخواست‌های پیچیده: اگر فانکشنی دارید که کار پیچیده‌ای انجام می‌دهد یا به داده‌هایی دسترسی دارد که به ندرت تغییر می‌کنند.

2️⃣ صفحات پربازدید: در صفحاتی که تعداد زیادی کاربر به طور همزمان از آن استفاده می‌کنند و نیاز به عملکرد بالایی دارند.

⚙️ نحوه استفاده :

فقط کافی است [()Computed]# را قبل از تعریف فانکشن خود قرار دهید، مثل این:

#[Computed()]
public function posts() {
// کد برای بازیابی پست‌ها
}


با این کار، Livewire فقط در صورت لزوم فانکشن را اجرا می‌کند و نتیجه را برای استفاده‌های بعدی ذخیره می‌کند. 🌱

⚜️خلاصه که [()Computed]# یک ابزار عالی برای بهینه‌سازی عملکرد برنامه‌های وب شماست. با استفاده از این ویژگی، می‌توانید اطمینان حاصل کنید که برنامه شما همیشه با بالاترین سرعت و کارآمدی کار می‌کند.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍143
کانال آموزشی لاراول
Photo
ادغام Cloudflare Turnstile در Laravel و Livewire

مایلید Cloudflare Turnstile CAPTCHA را در اپلیکیشن Laravel یا Livewire خود ادغام کنید؟
این بسته ارائه شده توسط Ryan Chandler، ادغام را بسیار ساده می‌کند.

🤩 استفاده از Cloudflare Turnstile برای Laravel

اسکریپت‌های Turnstile را با استفاده از دستورالعمل Blade @turnstileScripts در بخش <head> فایل چیدمان خود قرار دهید.

<html>
<head>
@turnstileScripts()
</head>
<body>
{{ $slot }}
</body>
</html>


پس از آن، کامپوننت <x-turnstile /> را درون یک <form> استفاده کنید:

<form action="/" method="POST">
<x-turnstile />

<button>
Submit
</button>
</form>


برای تایید پاسخ CAPTCHA، از قانون اعتبارسنجی ارائه شده در سرور استفاده کنید.

use Illuminate\Validation\Rule;

public function submit(Request $request)
{
$request->validate([
'cf-turnstile-response' => ['required', Rule::turnstile()],
]);
}


🔸 Cloudflare Turnstile با Livewire

این بسته همچنین می‌تواند با Livewire ادغام شود. پس از اعتبارسنجی موفقیت‌آمیز، ویژگی مشخص شده درون wire:model با توکن Turnstile به‌روزرسانی خواهد شد.

<x-turnstile wire:model="yourModel" />


برای جزئیات بیشتر در مورد سفارشی‌سازی و ادغام آن در اپلیکیشن خود، بسته را در GitHub بررسی کنید.




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍101
کانال آموزشی لاراول
Photo
🎉 Laravel 11 😍

بالاخره انتظارها به پایان رسید و نسخه ۱۱ فریمورک محبوب لاراول منتشر شد! این نسخه جدید با قابلیت‌های نوآورانه و بهبودهای چشمگیری همراه است که تجربه توسعه‌دهندگان را به سطح جدیدی ارتقا می‌بخشد.

🔍 از مهم‌ترین قابلیت‌های این نسخه می‌توان به موارد زیر اشاره کرد:

1️⃣ ساختار دایرکتوری بهینه‌شده: کدنویسی ماژولار و استفاده مجدد از کد را آسان‌تر می‌کند، که نتیجه‌اش افزایش کارایی در فرآیند توسعه است.

2️⃣ مدیریت تنظیمات: با رویکردی جدید که تمامی تنظیمات از یک منبع بالادستی به ارث می‌برند، تنظیمات را می‌توان به صورت ساده‌تر و متمرکزتری مدیریت کرد.

3️⃣ قابلیت Dumpable: تجربه‌ی دیباگ کردن را با امکان استفاده از متدهای ()dd و ()dump درون کلاس‌ها، بهبود می‌بخشد و دیباگ کردن را در سرتاسر فریمورک یکپارچه و مداوم می‌سازد.

4️⃣ به‌روزرسانی‌های مربوط به مدیریت مسیریابی: تعداد فایل‌های مسیر پیش‌فرض از چهار به دو فایل کاهش یافته و برای افزودن مسیرهای API به صورت انتخابی عمل می‌کنید، که منجر به ساختار برنامه‌ای تمیزتر و سفارشی‌تر می‌شود.

📚 سعی خواهیم کرد موضوعات مهم را در کانال به اشتراک بگذاریم و حتماً درباره آن‌ها مطلب منتشر کنیم. با ما همراه باشید. 🫶😊



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥17👍3🤩1
کانال آموزشی لاراول pinned «🎉 Laravel 11 😍 بالاخره انتظارها به پایان رسید و نسخه ۱۱ فریمورک محبوب لاراول منتشر شد! این نسخه جدید با قابلیت‌های نوآورانه و بهبودهای چشمگیری همراه است که تجربه توسعه‌دهندگان را به سطح جدیدی ارتقا می‌بخشد. 🔍 از مهم‌ترین قابلیت‌های این نسخه می‌توان به موارد…»
🔥 با ارائه نسخه 11 لاراول که SQLite را به‌عنوان پایگاه داده پیش‌فرض برگزیده، آشنایی با این تکنولوژی اکنون از اهمیت بیشتری برخوردار است.

ما در مطلبی که پیشتر در کانال اتاق برنامه نویسی </> به اشتراک گذاشته بودیم، SQLite را بررسی کرده‌ایم.

🔗 👈🏻 لینک مطلب برای مطالعه بیشتر




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🙏7👍5🔥1👏1
کانال آموزشی لاراول
Photo
🔧 راهنمای رفع مشکل اتصال به دیتابیس در لاراول 11

🔸با آغاز به کار نسخه جدید لاراول 11 و تنظیم پیش‌فرض DB_CONNECTION=sqlite، برخی از توسعه‌دهندگان که تمایل دارند از mysql به عنوان دیتابیس پروژه خود استفاده کنند، ممکن است با خطاهای اتصال دیتابیس روبرو شوند. یکی از رایج‌ترین این خطاها مربوط به تنظیمات collation است.

برای مثال، خطای SQLSTATE[HY000]: General error: 1273 Unknown collation: 'utf8mb4_0900_ai_ci' نشان می‌دهد که تنظیمات collation با نسخه فعلی سرور MySQL یا MariaDB شما سازگار نیست.


⛔️ علت خطا و راه‌حل‌ها:

خطای Unknown collation: 'utf8mb4_0900_ai_ci به این دلیل رخ می‌دهد که سرور دیتابیس MySQL یا MariaDB شما از تنظیمات collation utf8mb4_0900_ai_ci پشتیبانی نمی‌کند. این collation برای نسخه‌های جدید MySQL معرفی شده است و به بهبود عملکرد و دقت مقایسه داده‌ها کمک می‌کند، اما در نسخه‌های قدیمی‌تر MySQL یا برخی نسخه‌های MariaDB پشتیبانی نمی‌شود.


🛠 راه‌حل‌ها:

1️⃣ ارتقاء سرور MySQL/MariaDB:

اگر امکان‌پذیر است، سرور دیتابیس را به نسخه‌ای ارتقاء دهید که از این collation پشتیبانی می‌کند.

2️⃣ تغییر Collation در پروژه لاراول:

- به فایل config/database.php در پروژه لاراول خود بروید.

- در بخش اتصالات دیتابیس (mysql در این مورد)، collation را به یک مقدار سازگار با نسخه‌ی MySQL/MariaDB سرورتان تغییر دهید. برای نسخه‌های قدیمی‌تر، utf8mb4_unicode_ci توصیه می‌شود:

     'mysql' => [
...
'collation' => 'utf8mb4_unicode_ci',
...
],


📝 فایل env. پروژه خود را بررسی و اطمینان حاصل کنید که اطلاعات دیتابیس به درستی تنظیم شده‌اند:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=



⚙️ اجرای مایگریشن‌ها

با استفاده از دستور php artisan migrate ، اطمینان حاصل کنید که جدول‌های مورد نیاز در دیتابیس ایجاد شده‌اند. این کار همچنین به حل مشکلات مربوط به عدم وجود جدول‌ها کمک می‌کند.


⚜️برای اطمینان از اعمال تغییرات، دستورات php artisan config:cache و php artisan cache:clear را اجرا کنید تا تنظیمات کش شده پاک شود.



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍132🔥1🙏1
🪻 سال نو مبارک 🪻


تیم پاپیدون سالی پر از برکت، روزی و آرامش و حال خوب رو براتون آرزو می‌کنه
و در هر مسیری از زندگیتون که براش در تلاش هستید به بهترین نحو ممکن به خواسته هاتون برسید و موفقیت رو به بهترین شکل تجربه کنید

❤️🌻🍃🥰
11👍1
1
کانال آموزشی لاراول
Photo
آموزش اضافه کردن Middleware در لاراول 11

امروز می‌خواهم با شما درباره یکی از نوآوری‌های جذاب در نسخه 11 لاراول، یعنی نحوه تعریف و استفاده از Middleware، به اشتراک بگذارم.

🤔 چرا Middleware ؟

در واقع Middlewareها بخش مهمی از هر اپلیکیشن وب هستند که به ما اجازه می‌دهند درخواست‌های وارد شده به اپلیکیشن را پیش از رسیدن به هسته‌ی اپلیکیشن (Core) یا بعد از ارسال پاسخ، فیلتر یا تغییر دهیم. این امکان از جمله کاربردهایی مانند احراز هویت، ثبت لاگ، و مدیریت دسترسی را فراهم می‌کند.

🔄 اما تغییرات در لاراول 11

در نسخه‌های پیشین لاراول، Middleware`ها را در فایل `Kernel.php تعریف می‌کردیم. اما در نسخه 11، لاراول یک رویکرد جدید را معرفی کرده که تعریف Middleware`ها را در فایل `bootstrap/app.php انجام می‌دهیم.

🛠 گام به گام تا اضافه کردن Middleware

1️⃣ ایجاد Middleware: با دستور زیر Middleware مورد نظر خود را ایجاد کنید:

php artisan make:middleware OrgCustomerAuthenticate


2️⃣ تعریف Middleware : Middleware ایجاد شده را در فایل bootstrap/app.php با استفاده از متد withMiddleware و alias تعریف کنید:


->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'auth.org_customer' => \App\Http\Middleware\OrgCustomerAuthenticate::class,
]);
})



3️⃣ اعمال Middleware به روت‌ها: حالا می‌توانید این Middleware را به روت یا گروهی از روت‌ها اعمال کنید:
Route::prefix('/panel')->middleware('auth.org_customer')->group(function() {
Route::get('/', [PanelController::class, 'index'])->name('panelSide');
});


🗝 نکات کلیدی

🔸به خاطر داشته باشید که این تغییرات به شما اجازه می‌دهند با ساختار ساده‌تر و انعطاف‌پذیرتری در پروژه‌های لاراولی خود کار کنید.

🔸استفاده از این روش جدید، مدیریت Middlewareها در لاراول 11 را بسیار روان‌تر می‌کند.




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍132🔥1🙏1
🔥1👏1
کانال آموزشی لاراول
Photo
سلام رفقا
بعد از یه مدت نبودن، دوباره برگشتیم پر از انرژی 🫶


⚡️ نگاهی به ویژگی‌های جدید PHP 8.4

به زودی PHP 8.4 منتشر می‌شود و در این مطلب به بررسی ویژگی‌های اعلام‌شده و امکانات جدید این نسخه خواهیم پرداخت.

📅 زمان انتشار PHP 8.4 چه تاریخی است؟

انتشار رسمی PHP 8.4 برای ۲۱ نوامبر ۲۰۲۴ برنامه‌ریزی شده است. پیش از انتشار رسمی، این نسخه طی ۶ ماه مراحل پیش‌انتشار را از آلفا، بتا و کاندیداهای انتشار طی می‌کند.

💥 Property Hooks در PHP

از زبان‌هایی مثل Kotlin، C# و Swift الهام گرفته شده است. این ویژگی شامل دو نوع سینتکس متفاوت است که شبیه به closures کوتاه و چند خطی هستند:

class User implements Named
{
private bool $isModified = false;

public function __construct(
private string $first,
private string $last
) {}

public string $fullName {
// بازنویسی اکشن "خواندن" با منطق دلخواه
get => $this->first . " " . $this->last;

// بازنویسی اکشن "نوشتن" با منطق دلخواه
set {
[$this->first, $this->last] = explode(' ', $value, 2);
$this->isModified = true;
}
}
}


🤓 در واقع Property hooks کمک می‌کنند تا از کدهای زائد مربوط به getter و setter های خاصیت‌ها خلاص شویم و به یک خاصیت اجازه می‌دهد که دسترسی و به‌روزرسانی‌ها را با استفاده از hooks تعریف کند.

☄️ دسترسی به اعضای کلاس بدون پرانتز

از زمان معرفی دسترسی به اعضای کلاس هنگام نمونه‌سازی، شما باید ()new MyClass را در پرانتز قرار دهید، وگرنه با خطا مواجه می‌شوید. سینتکس پیشنهادی به شما این امکان را می‌دهد که به ثوابت، خصوصیات و متدها بدون نیاز به پرانتز اضافی دسترسی داشته باشید:

// پرانتزهای اضافی برای دسترسی به اعضای کلاس مورد نیاز هستند

$request = (new Request())->withMethod('GET')->withUri('/hello-world');

// خطا PHP (<= PHP 8.3): syntax error, unexpected token "->"

$request = new Request()->withMethod('GET')->withUri('/hello-world');


این به‌روزرسانی مشکل کوچک دسترسی به اعضای کلاس را ساده‌تر می‌کند، به‌طوری که نیازی به افزودن پرانتزهای اضافی یا استفاده از متد سازنده استاتیک نخواهد بود. این تغییر سینتکس PHP را بیشتر با زبان‌های C مانند جاوا، #C و TypeScript همسو می‌کند که نیازی به پرانتزهای احاطه‌کننده ندارند.

🔗 برای مطالعه بیشتر PHP 8.4



کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍157🔥7👏1
Start where you are. Use what you have. Do what you can.

از جایی که هستید شروع کنید. از آنچه دارید استفاده کنید. آنچه می‌توانید انجام دهید.




کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
Forwarded from اتاق برنامه نویسی </> (PapiDon)
🤓 کتاب‌هایی که هر مهندس نرم‌افزاری باید در سال ۲۰۲۴ بخواند ...

🔖The Pragmatic Programmer The Pragmatic Programmer
David Thomas and Andrew Hunt

این کتاب توصیه‌های عملی و حرفه‌ای برای توسعه‌دهندگان ارائه می‌دهد. موضوعاتی مانند مسئولیت‌پذیری شخصی و توسعه حرفه‌ای تا تکنیک‌های معماری را پوشش می‌دهد. با وجود اینکه در سال ۱۹۹۹ نوشته شده است، هنوز در بسیاری از جنبه‌ها معتبر است. ویژگی منحصر به فرد این کتاب این است که به صورت عملی با مجموعه‌ای از نکات برای بهبود فرآیند توسعه به شما آموزش می‌دهد.

🔖The Pragmatic Programmer Modern Software Engineering
David Farley

این کتاب بر ساخت نرم‌افزار عالی تمرکز دارد و نویسنده یک چارچوب محکم برای اتصال بهترین شیوه‌ها مانند Continuous Delivery (CD)، معماری شش ضلعی و Test-Driven Development به ایده‌های اصلی در مهندسی نرم‌افزار ارائه می‌دهد. او همچنین در مورد تاریخچه توسعه نرم‌افزار و ایده‌هایی که صنعت را تغییر داده‌اند، می‌نویسد.

🔖The Pragmatic Programmer Code Complete: A Practical Handbook of Software Construction
Steve McConnell

یکی از کتاب‌هایی که بیش از ۱۵ سال پیش نوشته شده و هنوز معتبر است. این کتاب به طراحی، کدنویسی، اشکال‌زدایی و تست می‌پردازد. در بیش از ۹۰۰ صفحه، نویسندگان نحوه نوشتن برنامه‌ها برای مردم اول و سپس برای کامپیوترها، چگونگی تقسیم کد به دامنه‌ها و چگونگی تسلط بر ویژگی‌های انسانی بهترین برنامه‌نویسان (تواضع، کنجکاوی و مهم‌تر از همه، کنترل اگو) را توضیح می‌دهند.

🔖The Pragmatic Programmer Software Engineering at Google
Titus Winters, Tom Manshreck, and Hyrum Wright

این کتاب درباره برنامه‌نویسی نیست، بلکه در مورد شیوه‌های مهندسی در گوگل برای حفظ و سلامت کدپایه آنها است. در این کتاب، تفاوت بین مهندسی نرم‌افزار و برنامه‌نویسی، اهمیت قانون بیانسه، و چگونگی تست صحیح چیزها و انتشار کوچک و مکرر را خواهید آموخت.

🔖The Pragmatic Programmer Head First Design Patterns
Eric Freeman

این کتاب الگوهای طراحی اصلی نرم‌افزار را برای ایجاد طراحی‌های انعطاف‌پذیرتر، شیک‌تر و قابل استفاده مجدد بدون نیاز به کشف مجدد راه‌حل‌های طراحی توصیف می‌کند. این کتاب به سبک کتاب‌های For Dummies نوشته شده است، به طوری که برای مبتدیان قابل فهم باشد.

🔖The Pragmatic Programmer Grokking Algorithms
Aditya Bhargava

این کتاب به زبانی ساده درباره کاربرد الگوریتم‌های استاندارد در مسائل روزمره توسعه‌دهندگان توضیح می‌دهد. از مرتب‌سازی و جستجو شروع می‌کند و سپس به فشرده‌سازی داده‌ها و هوش مصنوعی با نمونه کدهایی در پایتون می‌پردازد. احتمالاً بهترین کتاب برای شروع یادگیری الگوریتم‌ها است.

🔖The Pragmatic Programmer Designing Data-Intensive Applications
Martin Kleppman

این کتاب مفاهیم پیشرفته داده مانند پایگاه‌های داده و مدل‌های داده و مفاهیم توزیع‌شده مانند تراکنش‌ها، تکرار، سازگاری و غیره را توضیح می‌دهد. این کتاب یکی از تأثیرگذارترین کتاب‌ها در این دسته است.

🔖The Pragmatic Programmer Growing Object-Oriented Software by Tests
Steve Freeman

نویسندگان رویه‌های خود، اهداف طراحی و برخی ابزارهایی که برای انجام کار استفاده می‌کنند را شرح می‌دهند. در یک مثال گسترده، خواهید فهمید که چگونه TDD در چند سطح عمل می‌کند، با استفاده از تست‌ها برای هدایت ویژگی‌های کد و ساختار شیءگرا و استفاده از اشیاء شبیه‌سازی‌شده برای یافتن و سپس تعریف پیوندها بین اشیاء.

🔖The Pragmatic Programmer A Philosophy of Software Design
John Ousterhout

این کتاب توضیح می‌دهد که چگونه سیستم‌های نرم‌افزاری پیچیده را به قطعات قابل پیاده‌سازی مستقل تقسیم کنیم. سپس به مسائل فلسفی در مورد نحوه برخورد با فرآیند طراحی نرم‌افزار می‌پردازد و فهرستی از راهنمایی‌های طراحی برای دنبال کردن ارائه می‌دهد. این کتاب همچنین فهرستی از علائم هشدار برای طراحی بد ارائه می‌دهد. این کتاب یک همراه عالی برای Clean Code است زیرا دیدگاه متفاوتی ارائه می‌دهد.


📁 #Skills

کانال تخصصی لاراول
📌 @PapiDon_state

☕️ اتاق برنامه‌نویسی
📌 @PapiDon_coding
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93👏2🔥1