Codoloper

آموزش برنامه‌نویسی به فارسی

یاد بگیر، پیشرفت کن، بساز.

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

داکیومنت ها:

CSSاچ تی ام البیشتر
1// برنامه‌نویسی به فارسی
2import { learn } from 'codoloper'
3
4const developer = learn({
5"lang": "فارسی"
6"level": "همه سطوح"
7free: true
8})
100+
صفحه مستندات
3+
زبان ها / فریمورک ها
رایگان
دسترسی کامل
چرا کدلپر؟

ارزش‌های ما

یادگیری برنامه‌نویسی نباید پیچیده باشد - ما مسیر را ساده می‌کنیم.

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

مستندات ترجمه‌شده

مستندات مهم‌ترین تکنولوژی‌ها، به فارسی روان.

نوشته‌ها

بلاگ

تازه‌ترین مطالب آموزشی و خبرهای مرتبط.

آپدیت 1602 نکست جی اس منتشر شد - Next js Update نوشته شده توسط عرفان دهقانی

آپدیت 1602 نکست جی اس منتشر شد - Next js Update

نسخه 16.2 فریمورک Next.js منتشر شد.

این به‌روزرسانی با تمرکز بر بهبود عملکرد، تجربه توسعه‌دهندگان و قابلیت‌های مرتبط با هوش مصنوعی عرضه شده و تغییرات قابل توجهی را به همراه دارد.

مهم‌ترین قابلیت‌های این نسخه:

  • حدود ۴۰۰٪ افزایش سرعت راه‌اندازی محیط توسعه (next dev)
  • حدود ۵۰٪ بهبود سرعت رندرینگ
  • طراحی جدید صفحه پیش‌فرض خطای 500
  • نمایش لاگ اجرای Server Functionها در ترمینال توسعه
  • اضافه شدن Hydration Diff Indicator برای نمایش دقیق تفاوت خروجی سرور و کلاینت هنگام بروز خطا
  • پشتیبانی از فلگ --inspect در next start برای اتصال دیباگر Node.js به سرور Production
  • بهبودهای گسترده در Turbopack و رفع بیش از ۲۰۰ باگ و مشکل گزارش‌شده
  • بهبود قابلیت‌های مرتبط با Agentها و ابزارهای هوش مصنوعی

اگر از Next.js استفاده می‌کنید، این نسخه می‌تواند تجربه توسعه سریع‌تر و بهتری را برای شما فراهم کند.

بروزرسانی به نسخه جدید:

# با ابزار کامند لاین اتومانیک
npx @next/codemod@canary upgrade latest
 
# به صورت دستی
npm install next@latest react@latest react-dom@latest
 
# ساخت پروژه جدید
npx create-next-app@latest

برای مطالعه جدیدترین اخبار، به‌روزرسانی‌ها و قابلیت‌های دنیای برنامه‌نویسی، کدلپر را دنبال کنید.

 

پروتکل های اینترنتی چیستی و چرایی ها نوشته شده توسط عرفان دهقانی

پروتکل های اینترنتی چیستی و چرایی ها

زمان مطالعه: حدود ۵ دقیقه

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

در این مقاله می‌خواهیم خیلی ساده بفهمیم پروتکل‌های اینترنتی چه هستند، چرا مهم‌اند و چه انواعی دارند.


پروتکل اینترنتی چیست؟

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

مثلاً فرض کنید می‌خواهید یک ایمیل بفرستید. کامپیوتر شما باید بداند:

  • ایمیل را چطور بسته‌بندی کند.
  • آدرس مقصد را کجا بنویسد.
  • اگر خطایی پیش آمد، چه کار کند.

همه این‌ها را پروتکل‌ها تعیین می‌کنند!


پروتکل‌ها به چه دردی می‌خورند؟

بدون پروتکل‌ها، اینترنت مثل یک جاده بدون چراغ و تابلو می‌شود: ماشین‌ها به هم می‌خورند، بسته‌های اطلاعات گم می‌شوند و هیچ چیز درست کار نمی‌کند.

پروتکل‌ها سه کار اصلی انجام می‌دهند:

  1. ارتباط را ممکن می‌کنند: مثلاً وقتی شما یک سایت را باز می‌کنید، پروتکل HTTP کمک می‌کند تا مرورگر شما با سرور حرف بزنند.
  2. اطلاعات را مرتب می‌فرستند: پروتکل TCP مطمئن می‌شود همه داده‌ها به درستی و به ترتیب به مقصد برسند.
  3. خطاها را مدیریت می‌کنند: اگر داده‌ها گم شوند، پروتکل‌ها دوباره آن‌ها را می‌فرستند.

انواع پروتکل‌های اینترنتی

تصویری که راجع به پروتکل های اینترنتی مانند http, tcp, ftp و چیز های دیگر

پروتکل‌های اینترنتی انواع مختلفی دارند، هرکدام برای یک کار خاص. بیایید با مهم‌ترین آن‌ها آشنا شویم:

۱. پروتکل TCP/IP: ستون فقرات اینترنت

TCP/IP مثل سیستم پستی اینترنت است. دو بخش اصلی دارد:

  • IP (Internet Protocol): آدرس هر دستگاه در اینترنت را مشخص می‌کند (مثل شماره پستی خانه شما).
  • TCP (Transmission Control Protocol): مطمئن می‌شود داده‌ها سالم و کامل به مقصد می‌رسند.

مثلاً وقتی فیلمی در یوتیوب تماشا می‌کنید، IP آدرس شما و سرور یوتیوب را پیدا می‌کند و TCP قطعات فیلم را به ترتیب به شما می‌رساند.

۲. پروتکل HTTP/HTTPS: زبان وب

وقتی آدرس یک سایت را وارد می‌کنید (مثل https://google.com)، مرورگر شما از HTTP یا HTTPS استفاده می‌کند تا صفحه را از سرور بگیرد.

  • HTTP ساده است، اما اطلاعات را رمزنگاری نمی‌کند (مثل فرستادن نامه بدون پاکت).
  • HTTPS امن‌تر است و داده‌ها را رمز می‌کند (مثل فرستادن نامه در یک صندوق امن).

۳. پروتکل DNS: دفترچه تلفن اینترنت

آدرس‌های اینترنتی مثل google.com برای انسان‌ها راحت‌اند، اما کامپیوترها فقط عددها (مثل 142.250.190.78) را می‌فهمند.

DNS مثل یک دفترچه تلفن عمل می‌کند و اسم سایت‌ها را به آدرس‌های IP تبدیل می‌کند.

۴. پروتکل FTP: انتقال فایل

اگر بخواهید یک فایل حجیم (مثل یک فیلم یا نرم‌افزار) را از یک سرور دانلود کنید، FTP کمک می‌کند این کار سریع‌تر و منظم‌تر انجام شود.

۵. پروتکل SMTP/POP3: ایمیل فرستادن و دریافت کردن

  • SMTP برای فرستادن ایمیل استفاده می‌شود (مثل وقتی شما یک ایمیل جدید می‌زنید).
  • POP3/IMAP برای دریافت ایمیل‌ها از سرور به کار می‌روند.

جمع‌بندی: چرا پروتکل‌ها مهم‌اند؟

پروتکل‌های اینترنتی مثل قوانین نامرئی هستند که اینترنت را کنترل می‌کنند. بدون آن‌ها:

  • داده‌ها گم می‌شدند.
  • ارتباط بین دستگاه‌ها قطع می‌شد.
  • اینترنت تبدیل به یک آشفتگی بزرگ می‌شد!

حالا که با پروتکل‌ها آشنا شدید، دفعه بعد که یک سایت را باز می‌کنید یا ایمیل می‌فرستید، می‌دانید چه مکانیسم‌هایی پشت پرده کار می‌کنند!

بررسی PHP ورژن 8 - چه چیز جدیدی داره نوشته شده توسط عرفان دهقانی

بررسی PHP ورژن 8 - چه چیز جدیدی داره

PHP 8 چه چیز جدیدی دارد؟ سفری به مهم‌ترین تحولات این نسخه

PHP 8 در نوامبر 2020 منتشر شد و بدون شک یکی از بزرگ‌ترین به‌روزرسانی‌های تاریخ این زبان است. این نسخه مملو از ویژگی‌های جدید، بهبود کارایی و تغییرات ساختاری است که کدنویسی را لذت‌بخش‌تر، خوانایی کدها را بیشتر و اجرای برنامه‌ها را سریع‌تر می‌کند.

در ادامه، مهم‌ترین قابلیت‌های PHP 8 را با مثال بررسی می‌کنیم.

۱. کامپایلر JIT (Just-In-Time)

شاید مهم‌ترین تغییر فنی در PHP 8، افزوده شدن کامپایلر JIT باشد. در نسخه‌های پیشین، کد PHP همیشه به بایت‌کد تبدیل و سپس توسط ماشین مجازی Zend اجرا می‌شد. اما در PHP 8، JIT می‌تواند بخش‌هایی از کد را مستقیماً به زبان ماشین ترجمه کند.

در کارهای سنگین محاسباتی (مانند پردازش تصویر، شبیه‌سازی و عملیات ریاضی) تا ۳ برابر افزایش سرعت دیده می‌شود. البته برای برنامه‌های معمولی وب (مانند وردپرس یا لاراول)، بهبود سرعت چشمگیر نیست، اما پتانسیل بسیار بالایی برای کاربردهای خاص دارد.

۲. Attributes (نشانه‌گذاری‌های بومی)

تا پیش از PHP 8، برای افزودن متادیتا به کلاس‌ها و متدها مجبور بودید از DocBlock کامنت‌ها استفاده کنید. اما PHP 8 اتربیوت‌ها را معرفی کرد: یک روش بومی و ساختاریافته برای نشانه‌گذاری کد.

#[Route('/api/users', methods: ['GET'])]
class UserController {
    #[Inject]
    private UserRepository $repository;
}

این ویژگی باعث می‌شود ابزارهایی مانند Doctrine، Symfony و Laravel دیگر نیازی به پردازش کامنت‌ها نداشته باشند و کد تمیزتر و سریع‌تری داشته باشید.

۳. Named Arguments (آرگومان‌های نام‌دار)

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

function createUser($name, $email, $role = 'user', $isActive = true) {
    // ...
}

// فراخوانی با Named Arguments
createUser(
    name: 'احمد',
    email: 'ahmad@example.com',
    isActive: false
    // نقش همان 'user' باقی می‌ماند
);

این قابلیت به خصوص برای توابع با پارامترهای زیاد یا پیش‌فرض بسیار مفید است.

۴. Constructor Property Promotion

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

قبلاً:

class User {
    private string $name;
    private int $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

حالا در PHP 8:

class User {
    public function __construct(
        private string $name,
        private int $age
    ) {}
}

کد بسیار کم‌حجم‌تر و خواناتر شده است.

۵. Match Expression (جایگزین بهتری برای Switch)

عبارت match شبیه switch است، اما با تفاوت‌های مهم: نیاز به break ندارد، مقدار بازگشتی دارد و مقایسه از نوع Strict (===) است.

$statusCode = 404;

$message = match($statusCode) {
    200, 201 => 'موفق',
    404 => 'پیدا نشد',
    500 => 'خطای سرور',
    default => 'ناشناخته'
};

echo $message; // پیدا نشد

این روش خواناتر و امن‌تر از switch سنتی است.

۶. Nullsafe Operator

فرض کنید می‌خواهید به یک پراپرتی از یک آبجکت برسید، اما ممکن است خود آبجکت یا واسط‌ها null باشند. در PHP 8 با عملگر ?-> می‌توانید زنجیره‌ای از دسترسی‌ها را بدون نگرانی از خطای Null انجام دهید.

$city = $user?->getAddress()?->city?->getName();

اگر هرکدام از این مراحل null باشد، کل عبارت null برمی‌گرداند و خطایی رخ نمی‌دهد.

۷. انواع ترکیبی (Union Types)

حالا می‌توانید برای یک پارامتر یا خروجی بیش از یک نوع داده را مشخص کنید.

function validate($input): int|float|false {
    // می‌تواند int یا float برگرداند، یا false در صورت خطا
}

این قابلیت امنیت نوع‌ها را به طرز چشمگیری افزایش می‌دهد.

۸. بهبود در توابع داخلی

PHP 8 توابع رشته‌ای جدیدی معرفی کرد که استفاده رایج را ساده‌تر می‌کنند:

  • str_contains(): بررسی وجود زیررشته در رشته
  • str_starts_with() و str_ends_with()
  • get_debug_type(): نمایش نوع واقعی متغیر
if (str_contains('Hello world', 'world')) {
    echo 'پیدا شد';
}

دیگر نیازی به استفاده از strpos() !== false نیست.

۹. Weak Maps

نقشه‌های ضعیف (Weak Maps) به شما اجازه می‌دهند اشیاء را به عنوان کلید در یک آرایه ذخیره کنید، بدون اینکه مانع از پاک شدن آن شیء توسط گاربیج کالکتور شوند. این ویژگی برای پیاده‌سازی کش و سیستم‌های ذخیره‌سازی موقت عالی است.

۱۰. TypeError بهبودیافته

حالا خطاهای نوع در توابع دقیق‌تر و کمک‌کننده‌تر هستند. پیغام خطا نشان می‌دهد دقیقاً چه نوعی انتظار می‌رفته و چه نوعی دریافت شده است.

جمع‌بندی: آیا به PHP 8 بریم؟

پاسخ بله است، اما با رعایت یکسری نکات:

  • برنامه‌های قدیمی ممکن است با تغییرات ناسازگار (مانند حذف برخی توابع) مواجه شوند.
  • اکثر فریمورک‌های محبوب (Laravel، Symfony، WordPress) از PHP 8 پشتیبانی کامل دارند.
  • افزایش سرعت، کدنویسی خواناتر و کاهش خطاهای رایج ارزش ارتقا را دارد.

PHP 8 سنگی محکم در مسیر تکامل این زبان است. اگر هنوز از PHP 7 استفاده می‌کنید، زمان مناسبی است برای مهاجرت به PHP 8 یا حتی PHP 8.1 و 8.2 که بهبودهای بیشتری نیز ارائه داده‌اند.