Codoloper

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

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

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

داکیومنت ها:

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

ارزش‌های ما

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

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

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

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

نوشته‌ها

بلاگ

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

آموزش نصب زبان سی و کامپایلر آن نوشته شده توسط عرفان دهقانی

آموزش نصب زبان سی و کامپایلر آن

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


🪟 ویندوز

ساده‌ترین روش نصب کامپایلر C روی ویندوز، استفاده از winget است.

💻 مراحل نصب

ترمینال (CMD یا Windows Terminal) رو باز کنید و دستور زیر رو بزنید:

winget install MartinStorsjo.LLVM-MinGW.MSVCRT

بعد از تموم شدن نصب، ترمینال رو ببندید و دوباره باز کنید. دستور gcc خودش به PATH اضافه میشه و آماده‌ی استفاده‌ست.

✅ تست نصب

gcc --version

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


🍎 مک (macOS)

روی مک دو روش اصلی برای نصب کامپایلر C وجود داره: از طریق Xcode Command Line Tools (ساده‌ترین روش) یا از طریق Homebrew (برای کنترل بیشتر).

روش اول: Xcode Command Line Tools (پیشنهادی)

اپل به صورت پیش‌فرض ابزارهای توسعه شامل clang و gcc رو از طریق Xcode ارائه می‌ده. ترمینال رو باز کنید و دستور زیر رو بزنید:

xcode-select --install

یک پنجره گرافیکی باز میشه و از شما می‌خواد نصب رو تأیید کنید. روی Install کلیک کنید و منتظر بمونید تا دانلود و نصب تموم بشه (بسته به سرعت اینترنت چند دقیقه طول می‌کشه).

✅ تست نصب

gcc --version

روی مک، gcc در واقع یک alias برای clang هست که کاملاً سازگار با کد C استاندارد است. اگه خروجی‌ای شبیه این دیدید، نصب موفق بوده:

Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin23.0.0

روش دوم: نصب GCC اصلی با Homebrew

اگه می‌خواید نسخه اصلی GCC (نه clang) داشته باشید، ابتدا Homebrew رو نصب کنید:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

بعد از نصب Homebrew، GCC رو نصب کنید:

brew install gcc

GCC نصب‌شده از طریق Homebrew با نام مشخص نسخه در دسترسه، مثلاً gcc-13. برای راحتی می‌تونید alias بسازید:

alias gcc='gcc-13'

این خط رو به فایل ~/.zshrc (یا ~/.bashrc) اضافه کنید تا دائمی بشه.


🐧 لینوکس

روی اکثر توزیع‌های لینوکس، GCC یا از قبل نصبه یا با یک دستور ساده نصب میشه. روش نصب بسته به توزیعی که استفاده می‌کنید فرق داره.

اوبونتو / دبیان و توزیع‌های مشابه

ابتدا لیست پکیج‌ها رو به‌روز کنید:

sudo apt update

سپس GCC رو نصب کنید:

sudo apt install gcc

اگه می‌خواید مجموعه کامل ابزارهای توسعه (شامل make، g++ و غیره) رو یک‌جا نصب کنید:

sudo apt install build-essential

Fedora / RHEL / CentOS

sudo dnf install gcc

یا برای مجموعه کامل ابزارهای توسعه:

sudo dnf groupinstall "Development Tools"

Arch Linux / Manjaro

sudo pacman -S gcc

یا برای مجموعه کامل:

sudo pacman -S base-devel

✅ تست نصب (برای همه توزیع‌ها)

gcc --version

اگه خروجی شبیه زیر دیدید، نصب موفق بوده:

gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0

🚀 اولین برنامه C روی هر سیستم‌عامل

بعد از نصب کامپایلر، می‌تونید اولین برنامه‌تون رو تست کنید. یک فایل به نام hello.c بسازید با این محتوا:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

سپس با دستور زیر کامپایل و اجرا کنید:

gcc hello.c -o hello

روی ویندوز:

.\hello.exe

روی مک و لینوکس:

./hello

اگه Hello, World! در خروجی دیدید، همه چیز درست کار می‌کنه و آماده‌ی شروع برنامه‌نویسی C هستید! 🎉

کامپایلر زبان C چگونه کار میکند  نوشته شده توسط عرفان دهقانی

کامپایلر زبان C چگونه کار میکند

مدت زمان تقریبی مطالعه: ۶ دقیقه

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

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


تاریخچه مختصری از کامپایلر زبان C

برای درک بهتر کامپایلر، نگاهی کوتاه به تاریخچه آن مفید است. زبان C توسط دنیس ریچی (Dennis Ritchie) در آزمایشگاه‌های بل (Bell Labs) در اوایل دهه ۱۹۷۰ میلادی توسعه یافت، عمدتاً برای نوشتن سیستم عامل یونیکس. اولین کامپایلر C، که بخشی از Portable C Compiler (PCC) بود، در سال ۱۹۷۲ معرفی شد.

با گذشت زمان، کامپایلرهای معروفی مانند GCC (GNU Compiler Collection) در سال ۱۹۸۷ توسط ریچارد استالمن (Richard Stallman) توسعه یافت، که امروزه یکی از محبوب‌ترین کامپایلرهای رایگان و متن‌باز برای C است. Clang، بخشی از پروژه LLVM، نیز در سال ۲۰۰۷ توسط اپل معرفی شد و به دلیل سرعت و تشخیص خطاهای بهتر، محبوبیت یافته است.

این تاریخچه نشان می‌دهد که کامپایلرهای C از ابزارهای ساده به سیستم‌های پیشرفته‌ای تبدیل شده‌اند که استانداردهای ANSI C (مانند C89، C99 و C11) را پشتیبانی می‌کنند.


چگونگی کارکرد کامپایلر زبان C

کامپایلر زبان C یک برنامه نرم‌افزاری است که کد منبع نوشته‌شده به زبان C (با پسوند .c) را به کد ماشین (معمولاً فایل اجرایی) تبدیل می‌کند. برخلاف زبان‌های تفسیری مانند پایتون که کد را خط به خط اجرا می‌کنند، C یک زبان کامپایل‌شده است، یعنی کل کد قبل از اجرا به زبان ماشین ترجمه می‌شود.

این فرآیند شامل چندین مرحله است که به طور کلی به چهار فاز اصلی تقسیم می‌شود: پیش‌پردازش (Preprocessing)، کامپایل (Compilation)، اسمبلی (Assembly) و لینکینگ (Linking).

کامپایلرها مانند GCC این مراحل را به صورت خودکار مدیریت می‌کنند، اما برنامه‌نویس می‌تواند با دستوراتی مانند gcc -E (برای پیش‌پردازش) یا gcc -S (برای تولید کد اسمبلی) هر مرحله را جداگانه اجرا کند.


جریان کاری کامپایلر (فرآیند کامپایل)

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

۱. پیش‌پردازش (Preprocessing)

این مرحله توسط پیش‌پردازنده (preprocessor) انجام می‌شود که بخشی از کامپایلر است. پیش‌پردازنده دستورات خاصی مانند #define، #include و #ifdef را پردازش می‌کند. برای مثال، #define یک ماکرو تعریف می‌کند که جایگزین مقادیر ثابت می‌شود. خروجی این مرحله یک فایل موقتی (معمولاً با پسوند .i) است. هیچ چک سینتکسی در این مرحله انجام نمی‌شود؛ فقط جایگزینی متن صورت می‌گیرد.

۲. تجزیه و تحلیل Lexical (Lexical Analysis)

در این فاز، کامپایلر کد را به توکن‌ها (tokens) تقسیم می‌کند. توکن‌ها شامل کلمات کلیدی (مانند int، if)، شناسه‌ها (variables)، عملگرها (+، =) و ثابت‌ها هستند. این مرحله توسط lexer یا scanner انجام می‌شود و خطاهای ساده مانند کاراکترهای نامعتبر را تشخیص می‌دهد.

۳. تجزیه و تحلیل نحوی (Syntax Analysis)

parser توکن‌ها را بررسی می‌کند تا ساختار نحوی کد را بر اساس گرامر زبان C تأیید کند. برای مثال، چک می‌کند که آیا بعد از if یک پرانتز وجود دارد یا خیر. خروجی این مرحله یک درخت نحوی (syntax tree) است که ساختار کد را نشان می‌دهد.

۴. تجزیه و تحلیل معنایی (Semantic Analysis)

در این مرحله، کامپایلر معنای کد را چک می‌کند؛ مثلاً بررسی می‌کند که آیا متغیرها تعریف شده‌اند، انواع داده‌ها سازگار هستند (type checking)، و هیچ تناقضی وجود ندارد. اگر خطایی مانند استفاده از متغیر تعریف‌نشده پیدا شود، کامپایلر آن را گزارش می‌دهد.

۵. بهینه‌سازی (Optimization)

کامپایلر کد را برای کارایی بیشتر بهینه می‌کند، مانند حذف کدهای مرده (dead code elimination) یا بازنویسی حلقه‌ها برای سرعت بالاتر. این مرحله اختیاری است و با فلگ‌هایی مانند -O2 در GCC فعال می‌شود.

۶. تولید کد (Code Generation)

درخت نحوی به کد اسمبلی (با پسوند .s) تبدیل می‌شود. این کد وابسته به معماری ماشین (مانند x86 یا ARM) است.

۷. اسمبلی (Assembly)

assembler کد اسمبلی را به فایل آبجکت (object file با پسوند .o) تبدیل می‌کند که شامل کد ماشین باینری است.

۸. لینکینگ (Linking)

linker فایل‌های آبجکت را با کتابخانه‌های استاندارد (مانند libc) ترکیب می‌کند تا فایل اجرایی (مانند a.out یا .exe) تولید شود. لینکینگ می‌تواند استاتیک (static) باشد که کتابخانه‌ها را داخل فایل اجرایی کپی می‌کند، یا دینامیک (dynamic) که به کتابخانه‌های خارجی اشاره می‌کند.

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

gcc main.c -o output

نحوه ورودی‌ها و خروجی‌ها

ورودی اصلی کامپایلر زبان C، فایل کد منبع با پسوند .c است. ورودی‌های دیگر می‌توانند شامل فلگ‌های کامپایلر (مانند -Wall برای هشدارها) یا فایل‌های هدر (.h) باشند که از طریق #include ادغام می‌شوند.

خروجی‌ها بسته به مرحله متفاوت هستند:

  • پس از پیش‌پردازش: فایل .i با کد گسترش‌یافته.
  • پس از کامپایل: فایل اسمبلی .s.
  • پس از اسمبلی: فایل آبجکت .o.
  • پس از لینکینگ: فایل اجرایی که می‌تواند مستقیماً اجرا شود (مانند ./output در لینوکس).

برای پروژه‌های بزرگ، چندین فایل .c کامپایل شده و لینک می‌شوند:

gcc file1.c file2.c -o program

خروجی همچنین می‌تواند شامل فایل‌های دیباگ (با -g) یا بهینه‌شده باشد.


مکانیسم include کردن در زبان C

یکی از ویژگی‌های کلیدی پیش‌پردازنده C، دستور #include است که اجازه می‌دهد کد از فایل‌های دیگر ادغام شود. این مکانیسم برای سازماندهی کد و استفاده مجدد بسیار مفید است.

چگونگی کارکرد #include

وقتی کامپایلر به #include <stdio.h> یا #include "myheader.h" می‌رسد، محتوای فایل مربوطه را جایگزین می‌کند. علامت <> برای فایل‌های استاندارد سیستم (مانند /usr/include) استفاده می‌شود، در حالی که "" برای فایل‌های محلی (در دایرکتوری فعلی) است.

جریان ادغام

پیش‌پردازنده فایل هدر را پیدا کرده، محتوای آن را کپی می‌کند و در کد منبع جایگذاری می‌نماید. اگر هدر شامل include دیگری باشد، این فرآیند بازگشتی ادامه می‌یابد. برای جلوگیری از ادغام تکراری، از گاردهای هدر استفاده می‌شود:

#ifndef HEADER_H
#define HEADER_H
// محتوای هدر
#endif

مزایا و نکات

include کردن کتابخانه‌هایی مانند stdio.h توابع ورودی/خروجی (مانند printf) را فراهم می‌کند. اما استفاده بیش از حد می‌تواند زمان کامپایل را افزایش دهد. کامپایلر مسیرهای جستجو را با فلگ -I مشخص می‌کند.

برای مثال، در کد ساده زیر:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

پیش‌پردازنده محتوای stdio.h را ادغام می‌کند، که شامل تعریف printf است.


نتیجه‌گیری

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

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

اچ تی ام ال چیست - HTML نوشته شده توسط عرفان دهقانی

اچ تی ام ال چیست - HTML

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

HyperText Markup Language یا به اختصار HTML، ستون فقرات هر وب‌سایتی در اینترنت است. اگر وب را به یک ساختمان تشبیه کنیم، HTML مانند اسکلت آن است که ساختار اصلی را شکل می‌دهد. CSS و جاوااسکریپت به ترتیب ظاهر و رفتار را اضافه می‌کنند، اما بدون HTML، هیچ‌کدام از این‌ها جایی برای اجرا ندارند. در این مقاله، به تاریخچه HTML، منشأ آن، کاربردهایش و فریم‌ورک‌ها و ابزارهای مرتبط با آن می‌پردازیم. این توضیحات به زبانی ساده و قابل فهم ارائه می‌شود، اما با حفظ لحنی رسمی و حرفه‌ای. HTML نه تنها پایه وب است، بلکه ابزاری است که به همه امکان می‌دهد محتوای دیجیتال را به شکلی ساختاریافته ایجاد کنند.

تاریخچه HTML

HTML در اواخر دهه ۱۹۸۰ میلادی توسط تیم برنرز-لی، فیزیکدان بریتانیایی در سازمان CERN، ابداع شد. در آن زمان، برنرز-لی به دنبال راهی بود تا دانشمندان بتوانند اسناد علمی را به راحتی در شبکه‌ای جهانی به اشتراک بگذارند. او در سال ۱۹۸۹ ایده World Wide Web را مطرح کرد و HTML را به عنوان زبانی برای ساختاردهی به اسناد وب توسعه داد. اولین نسخه HTML در سال ۱۹۹۰ معرفی شد و شامل تگ‌های ساده‌ای مانند <p> برای پاراگراف و <a> برای لینک بود.

در سال ۱۹۹۴، کنسرسیوم جهانی وب (W3C) تشکیل شد تا استانداردهای وب را تعریف کند. HTML 2.0 در نوامبر ۱۹۹۵ منتشر شد و ویژگی‌های بیشتری مانند فرم‌ها و جداول را معرفی کرد. HTML 3.2 در ژانویه ۱۹۹۷ و HTML 4.0 در دسامبر ۱۹۹۷ منتشر شدند که پشتیبانی از استایل‌دهی با CSS و اسکریپت‌نویسی را بهبود بخشیدند. HTML 4.01 در دسامبر ۱۹۹۹ به استانداردی پرکاربرد تبدیل شد.

در سال ۲۰۰۴، گروه WHATWG (Web Hypertext Application Technology Working Group) شروع به کار روی HTML5 کرد، که در اکتبر ۲۰۱۴ توسط W3C به عنوان استاندارد رسمی پذیرفته شد. HTML5 قابلیت‌های مدرن مانند تگ‌های معنایی (مثل <article> و <section>)، پشتیبانی از ویدئو و صدا، و APIهای پیشرفته برای اپلیکیشن‌های وب را معرفی کرد. امروزه، HTML5 همچنان استاندارد اصلی است و به طور مداوم از طریق به‌روزرسانی‌های WHATWG توسعه می‌یابد. این تاریخچه نشان می‌دهد که HTML از یک ابزار ساده برای اشتراک اسناد به پایه‌ای برای وب مدرن تبدیل شده است.

کاربردهای HTML

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

یکی از مهم‌ترین کاربردهای HTML، ایجاد ساختار معنایی (semantic) است. تگ‌های معنایی مانند <header>، <nav> و <footer> نه تنها به سازماندهی محتوا کمک می‌کنند، بلکه برای موتورهای جستجو و ابزارهای دسترسی‌پذیری (مثل صفحه‌خوان‌ها) مفیدند. این کار باعث می‌شود وب‌سایت‌ها برای کاربران و ربات‌ها قابل فهم‌تر باشند.

HTML همچنین در ایجاد اپلیکیشن‌های وب، ایمیل‌های HTML، و حتی اسناد دیجیتال مانند PDFهای تعاملی کاربرد دارد. با HTML5، امکان افزودن محتوای چندرسانه‌ای (ویدئو و صدا) بدون نیاز به افزونه‌هایی مانند Flash فراهم شد. همچنین، HTML در کنار CSS و جاوااسکریپت، برای ساخت وب‌سایت‌های responsive که در دستگاه‌های مختلف به خوبی نمایش داده می‌شوند، ضروری است. به طور خلاصه، HTML زبان پایه‌ای است که وب را به فضایی تعاملی و قابل دسترس تبدیل کرده است.

فریم‌ورک‌ها و ابزارهای HTML

HTML به تنهایی برای ایجاد ساختار کافی است، اما فریم‌ورک‌ها و ابزارها کار توسعه را سریع‌تر و کارآمدتر می‌کنند. این ابزارها معمولاً در کنار CSS و جاوااسکریپت استفاده می‌شوند، اما برخی مستقیماً به HTML مرتبطند یا فرآیند کار با آن را بهبود می‌دهند. در ادامه، چند مورد از مهم‌ترین فریم‌ورک‌ها و ابزارهای مرتبط با HTML معرفی می‌شوند:

  • Bootstrap: فریم‌ورکی که در سال ۲۰۱۱ توسط توییتر معرفی شد. اگرچه بیشتر به CSS معروف است، Bootstrap شامل قالب‌های HTML آماده برای کامپوننت‌هایی مانند navbar، فرم‌ها و دکمه‌ها است که توسعه وب‌سایت‌های responsive را تسریع می‌کند.

  • Tailwind CSS: این فریم‌ورک utility-first که در سال ۲۰۱۷ منتشر شد، به توسعه‌دهندگان امکان می‌دهد با استفاده از کلاس‌های آماده در HTML، استایل‌دهی را مستقیماً در کد HTML انجام دهند. این روش نیاز به نوشتن CSS جداگانه را کاهش می‌دهد.

  • Jekyll و Hugo: این‌ها ابزارهای تولیدکننده سایت استاتیک (Static Site Generators) هستند که از قالب‌های HTML برای ایجاد وب‌سایت‌های سریع و ساده استفاده می‌کنند. Jekyll در سال ۲۰۰۸ و Hugo در سال ۲۰۱۳ معرفی شدند و برای وبلاگ‌ها و سایت‌های محتوامحور محبوب‌اند.

  • React: کتابخانه جاوااسکریپت توسعه‌یافته توسط فیسبوک در سال ۲۰۱۳، که از JSX (ترکیبی از HTML و جاوااسکریپت) برای ساخت رابط‌های کاربری پویا استفاده می‌کند. JSX به توسعه‌دهندگان اجازه می‌دهد کد HTML را درون جاوااسکریپت بنویسند.

  • Vue.js و Angular: این فریم‌ورک‌های جاوااسکریپت (به ترتیب از سال‌های ۲۰۱۴ و ۲۰۱۶) از قالب‌های HTML برای تعریف ساختار رابط‌های کاربری استفاده می‌کنند. این ابزارها برای ساخت اپلیکیشن‌های وب پیچیده مناسب‌اند.

  • Pug (قبلاً Jade): یک موتور قالب‌سازی (Template Engine) که از سال ۲۰۱۰ وجود دارد. Pug سینتکس ساده‌تری برای نوشتن HTML ارائه می‌دهد که کد را کوتاه‌تر و خواناتر می‌کند و سپس به HTML استاندارد کامپایل می‌شود.

این فریم‌ورک‌ها و ابزارها به توسعه‌دهندگان کمک می‌کنند تا با HTML سریع‌تر و مؤثرتر کار کنند، به‌ویژه در پروژه‌های بزرگ یا زمانی که نیاز به رابط‌های کاربری پیچیده است.

نتیجه‌گیری

HTML از یک زبان ساده برای به اشتراک گذاشتن اسناد علمی در دهه ۱۹۸۰ به پایه‌ای برای وب مدرن تبدیل شده است. این زبان با فراهم کردن ساختار معنایی، امکان ایجاد وب‌سایت‌های قابل دسترس و کاربرپسند را فراهم کرده است. فریم‌ورک‌ها و ابزارهایی مانند Bootstrap، React و Pug، کار با HTML را سریع‌تر و انعطاف‌پذیرتر کرده‌اند. اگر می‌خواهید طراحی وب را شروع کنید، یادگیری HTML اولین قدم ضروری است. با HTML، می‌توانید پایه‌ای محکم برای خلق دنیای دیجیتال بسازید.

سی اس اس چیست - CSS - Cascading Style Sheets نوشته شده توسط عرفان دهقانی

سی اس اس چیست - CSS - Cascading Style Sheets

زمان مطالعه: حدود 4 دقیقه
Cascading Style Sheets یا به اختصار CSS، یکی از ستون‌های اصلی طراحی وب مدرن است. اگر HTML را به اسکلت یک ساختمان تشبیه کنیم، CSS مانند رنگ، دکور و چیدمان داخلی است که آن را زیبا و کاربردی می‌کند. در این مقاله، به تاریخچه CSS، منشأ آن، کاربردهایش و فریم‌ورک‌ها و کتابخانه‌های مرتبط با آن می‌پردازیم. این توضیحات به زبانی ساده و قابل فهم ارائه می‌شود، اما با حفظ لحنی رسمی و حرفه‌ای. CSS وب را از یک فضای صرفاً متنی به دنیایی بصری و جذاب تبدیل کرده و به توسعه‌دهندگان کمک می‌کند تا صفحات وب را به شکلی کارآمدتر طراحی کنند.

تاریخچه و منشأ CSS

CSS در اوایل دهه ۱۹۹۰ میلادی شکل گرفت، زمانی که وب در حال رشد بود و نیاز به جداسازی محتوا از ظاهر احساس می‌شد. ایده CSS توسط هاکون ویوم لی (Håkon Wium Lie)، که در CERN با تیم برنرز-لی (خالق وب) همکاری می‌کرد، در اکتبر ۱۹۹۴ پیشنهاد شد. برت بوس (Bert Bos) نیز نقش مهمی در توسعه آن داشت و به عنوان یکی از خالقان مشترک شناخته می‌شود. هدف اصلی این بود که استایل‌دهی از HTML جدا شود، چون در آن زمان استایل‌ها مستقیماً در تگ‌های HTML نوشته می‌شدند که مدیریت کد را دشوار می‌کرد.

اولین نسخه، یعنی CSS1، در دسامبر ۱۹۹۶ توسط کنسرسیوم جهانی وب (W3C) منتشر شد و ویژگی‌های پایه‌ای مانند فونت، رنگ و حاشیه را معرفی کرد. CSS2 در مه ۱۹۹۸ آمد و قابلیت‌هایی مثل موقعیت‌دهی عناصر و پشتیبانی از رسانه‌های مختلف (مانند چاپ) را اضافه کرد. نسخه CSS2.1 در ژوئن ۲۰۱۱ نهایی شد و مشکلات قبلی را اصلاح کرد. CSS3 از سال ۱۹۹۸ به صورت ماژولار توسعه یافت، یعنی به بخش‌های کوچک‌تر تقسیم شد تا به‌روزرسانی آسان‌تر شود. امروزه، CSS به جای نسخه‌بندی کلی، از طریق ماژول‌های مستقل پیشرفت می‌کند. این تاریخچه نشان می‌دهد که CSS از یک نیاز ساده به یک استاندارد جهانی تبدیل شده است.

کاربردهای CSS

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

یکی از بزرگ‌ترین فواید CSS، جداسازی محتوا (HTML) از استایل (CSS) است. این کار باعث می‌شود که تغییر ظاهر یک سایت، مثلاً رنگ یا چیدمان، بدون نیاز به ویرایش تمام صفحات HTML ممکن باشد. کافی است فایل CSS را تغییر دهید. این ویژگی در سایت‌های بزرگ باعث صرفه‌جویی در زمان و کاهش پیچیدگی می‌شود.

CSS برای طراحی responsive (واکنش‌گرا) هم حیاتی است. با استفاده از media queries، می‌توانید استایل‌ها را برای دستگاه‌های مختلف مانند موبایل یا دسکتاپ تنظیم کنید. همچنین، CSS دسترسی‌پذیری را بهبود می‌بخشد؛ مثلاً با تعریف استایل‌های مناسب برای کاربرانی که از صفحه‌خوان‌ها استفاده می‌کنند. علاوه بر وب، CSS در استایل‌دهی به اسناد XML، گرافیک‌های SVG و حتی رابط‌های کاربری ابزارک‌های GTK کاربرد دارد. به طور خلاصه، CSS وب را کاربرپسندتر، زیباتر و منعطف‌تر کرده است.

فریم‌ورک‌ها و کتابخانه‌های CSS

CSS به تنهایی قدرتمند است، اما فریم‌ورک‌ها و کتابخانه‌ها کار با آن را سریع‌تر و ساده‌تر کرده‌اند. این ابزارها مجموعه‌ای از استایل‌های آماده یا روش‌های سازماندهی کد ارائه می‌دهند. در ادامه، به چند مورد از مهم‌ترین فریم‌ورک‌ها و کتابخانه‌های CSS اشاره می‌کنیم:

  • Bootstrap: یکی از محبوب‌ترین فریم‌ورک‌های CSS که توسط تیم توییتر در سال ۲۰۱۱ توسعه یافت. Bootstrap مجموعه‌ای از کلاس‌های آماده برای چیدمان‌های گریدی، دکمه‌ها، فرم‌ها و کامپوننت‌های responsive ارائه می‌دهد. این فریم‌ورک برای توسعه سریع وب‌سایت‌های مدرن بسیار مناسب است.

  • Tailwind CSS: یک فریم‌ورک utility-first که در سال ۲۰۱۷ معرفی شد. به جای کلاس‌های آماده برای کامپوننت‌ها، Tailwind کلاس‌های کوچک و کاربردی (مانند text-center یا p-4) ارائه می‌دهد که به شما امکان می‌دهد استایل‌ها را مستقیماً در HTML اعمال کنید. این رویکرد انعطاف‌پذیری بالایی دارد.

  • Foundation: فریم‌ورکی از شرکت ZURB که از سال ۲۰۱۱ عرضه شد. Foundation بر طراحی responsive تمرکز دارد و ابزارهایی برای ساخت رابط‌های کاربری پیچیده با کد تمیز ارائه می‌دهد. این فریم‌ورک بیشتر برای پروژه‌های حرفه‌ای مناسب است.

  • Bulma: یک فریم‌ورک سبک و مدرن که از سال ۲۰۱۶ محبوب شد. Bulma بر سادگی و استفاده از Flexbox برای چیدمان تمرکز دارد و نیازی به جاوااسکریپت ندارد، که آن را برای پروژه‌های سبک مناسب می‌کند.

  • SASS و LESS: این‌ها پیش‌پردازنده‌های CSS هستند که قابلیت‌هایی مثل متغیرها، توابع و میکسین‌ها را به CSS اضافه می‌کنند. SASS (از سال ۲۰۰۶) و LESS (از سال ۲۰۰۹) کد CSS را خواناتر و قابل مدیریت‌تر می‌کنند و در نهایت به CSS استاندارد کامپایل می‌شوند.

  • CSS-in-JS: رویکردی مدرن که در آن استایل‌ها درون جاوااسکریپت نوشته می‌شوند، مانند کتابخانه‌هایی مثل styled-components یا Emotion. این روش برای اپلیکیشن‌های React بسیار محبوب است و امکان مدیریت دینامیک استایل‌ها را فراهم می‌کند.

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

نتیجه‌گیری

CSS از یک ایده ساده در دهه ۱۹۹۰ به ابزاری ضروری برای طراحی وب تبدیل شده است. با جداسازی محتوا از استایل، امکان طراحی وب‌سایت‌های زیبا، responsive و کاربرپسند را فراهم کرده است. فریم‌ورک‌ها و کتابخانه‌هایی مانند Bootstrap، Tailwind و Bulma، همراه با پیش‌پردازنده‌هایی مثل SASS، CSS را به سطح جدیدی از کارایی و انعطاف‌پذیری رسانده‌اند. اگر می‌خواهید وارد دنیای طراحی وب شوید، یادگیری CSS و ابزارهای مرتبطش نقطه شروع فوق‌العاده‌ای است.

جیسون یا جیسان چیست - JSON - JavaScript Object Notation نوشته شده توسط عرفان دهقانی

جیسون یا جیسان چیست - JSON - JavaScript Object Notation

جی‌سان یا JSON (JavaScript Object Notation) یک فرمت تبادل داده سبک (lightweight) می‌باشد که خواندن و نوشتن آن برای انسان و تولید و پارس کردن آن برای ماشین‌ها آسان است.

این زبان بر مبنای یک زیرمجموعه از زبان برنامه‌نویسی JavaScript، استاندارد ECMA-262 ویرایش سوم - دسامبر 1999، است.

JSON به صورت متنی (text) بوده و کاملاً مستقل از زبان به‌کار رفته است، اما از قوانینی استفاده می‌کند که برای برنامه‌نویسان زبان‌های خانواده C (شامل C، C++، Java، JavaScript، Perl، Python، و بسیاری زبان‌های دیگر) آشنا می‌باشد. این خصوصیات JSON را یک زبان تبادل‌داده‌ای ایده‌آل کرده است.


چرا JSON؟

ویژگی‌های JSON آن را به یک فرمت تبادل داده ایده‌آل تبدیل می‌کنند:

  • متن‌باز و سبک: صدور و مصرف آن کم‌حجم است و لزوماً به کتابخانه‌های سنگین نیاز ندارد.
  • قابل خواندن توسط انسان: نگارش آن ساده و نزدیک به ساختارهای برنامه‌نویسی معمول است.
  • قابل پارس شدن توسط ماشین: انواع داده‌ای ساده و قواعد مشخصی دارد که پیاده‌سازی parser را آسان می‌کند.
  • مستقل از زبان: پشتیبانی توسط زبان‌های متعددی دارد و انتقال داده بین محیط‌های گوناگون را آسان می‌سازد.

ساختارها و نوع‌های داده در JSON

JSON بر مبنای دو ساختار داده‌ای اصلی ساخته شده است:

  • یک مجموعه از زوج‌های نام/ارزش (name/value). در زبان‌های گوناگون این ساختار یک شیء (object)، ساختار (struct)، دیکشنری (dictionary)، جدول مخلوط (hash table)، لیست کلیددار (keyed list) یا آرایه انجمنی (associative array) شناخته می‌شود.
  • یک لیست منظم از ارزش‌ها. در بسیاری از زبان‌ها این ساختار یک آرایه (array)، بردار (vector)، لیست (list)، یا دنباله (sequence) شناخته می‌شود.

در JSON از فرم‌های زیر استفاده می‌شود:

۱. شیء (object)

یک مجموعه نامنظم از زوج‌های نام/ارزش که با { } در برگرفته شده‌اند. در انتهای هر نام یک : (دو نقطه) قرار می‌گیرد و زوج‌های نام/ارزش با , (ویرگول) جدا می‌شوند.

{
  "name": "Ali",
  "age": 30,
  "married": true
}

۲. آرایه (array)

یک فهرست مرتب از مقادیر که بین [ ] قرار گرفته‌اند.

["apple", "banana", "cherry"]

نوع‌های داده در JSON

یک ارزش (value) در JSON می‌تواند یکی از موارد زیر باشد:

  • رشته (string): متنی بین "..." با یونیکد و پشتیبانی escape.
  • عدد (number): مشابه C یا Java، فقط به شکل اعشاری.
  • بولین (boolean): true یا false.
  • تهی (null): نشان‌دهنده نبود مقدار.
  • شیء یا آرایه: می‌توانند به‌صورت تو در تو باشند.

فضای خالی (whitespace) بین نشانه‌ها مجاز است و تأثیری بر ساختار ندارد.


قواعد نگارش و سینتکس (Syntax)

یک object با { (آکولاد باز) شروع، و با } (آکولاد بسته) تمام می‌شود. در انتهای هر نام یک : (دو نقطه) قرار می‌گیرد و زوج‌های نام/ارزش با , (ویرگول) جدا می‌شوند.

{ "a": 1, "b": 2 }

یک array با [ (براکت باز) شروع، و با ] (براکت بسته) تمام می‌شود. ارزش‌ها توسط , (ویرگول) از هم جدا می‌شوند.

[1, "two", null]

مثال‌های واقعی از JSON

مثال ۱

{
  "glossary": {
    "title": "example glossary",
    "GlossDiv": {
      "title": "S",
      "GlossList": {
        "GlossEntry": {
          "ID": "SGML",
          "GlossDef": {
            "para": "A metamarkup language...",
            "GlossSeeAlso": ["GML", "XML"]
          },
          "GlossSee": "markup"
        }
      }
    }
  }
}

مثال ۲

{
  "menu": {
    "id": "file",
    "value": "File",
    "popup": {
      "menuitem": [
        { "value": "New", "onclick": "CreateNewDoc()" },
        { "value": "Open", "onclick": "OpenDoc()" },
        { "value": "Close", "onclick": "CloseDoc()" }
      ]
    }
  }
}

مزایا و محدودیت‌ها

مزایا

  • خوانایی بالا و شباهت زیاد به دیکشنری در زبان‌های ساخت‌یافته.
  • پشتیبانی گسترده در REST API، Ajax و ذخیره‌سازی مرورگر.
  • تبادل داده سریع و سبک بین سرویس‌ها.

محدودیت‌ها

  • عدم پشتیبانی از کامنت، برخلاف JSON5 یا YAML.
  • قابلیت ذخیره فقط داده خام، نه کد یا تاریخچه.
  • مسائل امنیتی هنگام استفاده نادرست از eval() در JavaScript (باید از JSON.parse() استفاده شود).

نحوه استفاده در توسعه نرم‌افزار

  • خواندن (parse): تبدیل متن JSON به ساختار داده‌ای زبان مقصد (مثلاً json.loads() در Python).
  • نوشتن (serialize): تبدیل داده ساختارمند به متن JSON (مثلاً JSON.stringify() در JavaScript).
  • ارسال و دریافت از API‌ها: اغلب API‌های REST از JSON استفاده می‌کنند؛ معمولاً همراه با Content-Type: application/json.
ترمینال لینوکس چیست - آموزش دستورات معروف نوشته شده توسط عرفان دهقانی

ترمینال لینوکس چیست - آموزش دستورات معروف

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

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

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


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

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

در ادامه، دستورات ضروری را در چند دسته‌بندی کاربردی معرفی می‌کنیم.


دستورات پایه برای شروع

۱. pwd (چاپ مسیر فعلی)

این دستور نشان می‌دهد که در کدام پوشه هستید. وقتی در ترمینال گم شدید، pwd مثل یک نقشه راه شما را پیدا می‌کند.

pwd

خروجی: /home/user/documents

۲. ls (لیست کردن)

این دستور محتویات یک پوشه را نشان می‌دهد. می‌توانید از گزینه‌هایی مثل ls -l (نمایش جزئیات) یا ls -a (نمایش فایل‌های مخفی) استفاده کنید.

ls -l

خروجی: لیست فایل‌ها با اطلاعاتی مثل اندازه و تاریخ.

۳. cd (تغییر مسیر)

برای جابه‌جایی بین پوشه‌ها از cd استفاده کنید. مثلاً cd documents شما را به پوشه documents می‌برد و cd .. یک قدم به عقب برمی‌گردد.

cd /var/log

مدیریت فایل‌ها و پوشه‌ها

۴. mkdir (ساخت پوشه)

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

mkdir new_folder

۵. rm (حذف)

برای حذف فایل یا پوشه از rm استفاده کنید. برای حذف پوشه‌ها، از rm -r استفاده کنید و برای ایمنی بیشتر، rm -i از شما تأیید می‌خواهد.

rm -r old_folder

۶. cp (کپی)

این دستور برای کپی کردن فایل‌ها یا پوشه‌ها به کار می‌رود. گزینه -r برای کپی کردن پوشه‌ها لازم است.

cp file.txt /home/user/backup/

۷. mv (انتقال یا تغییر نام)

برای جابه‌جایی یا تغییر نام فایل‌ها و پوشه‌ها از mv استفاده کنید.

mv file.txt new_file.txt

مشاهده و ویرایش فایل‌ها

۸. cat (نمایش محتوا)

این دستور محتوای یک فایل متنی را در ترمینال نمایش می‌دهد.

cat notes.txt

۹. nano یا vim (ویرایش فایل)

برای ویرایش فایل‌های متنی، nano یک ویرایشگر ساده و کاربرپسند است. vim پیشرفته‌تر است اما نیاز به یادگیری دارد.

nano config.txt

۱۰. less (مشاهده فایل‌های بزرگ)

برای خواندن فایل‌های طولانی بدون به‌هم‌ریختگی، از less استفاده کنید. با کلید q از آن خارج می‌شوید.

less logfile.log

مدیریت سیستم و نرم‌افزارها

۱۱. apt یا yum (نصب و به‌روزرسانی نرم‌افزار)

در توزیع‌های مبتنی بر دبیان (مثل اوبونتو)، از apt برای نصب و مدیریت نرم‌افزارها استفاده کنید. در توزیع‌های مبتنی بر رد هت (مثل CentOS)، yum یا dnf معادل آن است.

sudo apt update
sudo apt install python3

۱۲. ps (مشاهده پروسه‌ها)

این دستور پروسه‌های در حال اجرا را نشان می‌دهد. گزینه ps aux اطلاعات کامل‌تری می‌دهد.

ps aux

۱۳. kill (متوقف کردن پروسه)

برای بستن یک برنامه یا پروسه گیرکرده، از kill به همراه شماره پروسه (PID) استفاده کنید.

kill 1234

کار با شبکه

۱۴. ping (بررسی اتصال)

این دستور بررسی می‌کند که آیا می‌توانید به یک سرور یا وب‌سایت وصل شوید.

ping google.com

۱۵. wget یا curl (دانلود فایل)

برای دانلود فایل از اینترنت، wget یا curl ابزارهای قدرتمندی هستند.

wget https://example.com/file.zip

۱۶. ssh (اتصال امن)

برای اتصال به یک سرور دوردست، از ssh استفاده کنید. این دستور به پروتکل SSH که قبلاً توضیح دادیم وابسته است.

ssh user@192.168.1.100

ابزارهای پیشرفته‌تر

۱۷. grep (جستجو در متن)

برای جستجوی یک عبارت خاص در فایل‌ها یا خروجی دستورات، از grep استفاده کنید.

grep "error" logfile.log

۱۸. find (جستجوی فایل)

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

find /home -name "*.txt"

۱۹. df و du (مدیریت فضای دیسک)

df -h فضای خالی دیسک را نشان می‌دهد و du -sh اندازه یک پوشه را محاسبه می‌کند.

df -h
du -sh /var/log

۲۰. top یا htop (نظارت بر سیستم)

این دستورات منابع سیستم مثل CPU و رم را در لحظه نشان می‌دهند. htop کاربرپسندتر است اما ممکن است نیاز به نصب داشته باشد.

top

نکات تکمیلی برای استفاده از ترمینال

  • sudo: برای اجرای دستورات با دسترسی مدیر (root) از sudo استفاده کنید، اما مراقب باشید چون می‌تواند خطرناک باشد.
  • لوله‌کشی (|): با علامت | می‌توانید خروجی یک دستور را به دستور دیگر بفرستید. مثلاً ls | grep txt فقط فایل‌های با پسوند txt را نشان می‌دهد.
  • مانوال‌ها: با دستور man (مثل man ls) می‌توانید راهنمای هر دستور را بخوانید.

چرا این دستورات مهم‌اند؟

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


جمع‌بندی

ترمینال لینوکس قلب تپنده این سیستم‌عامل است. با یادگیری دستورات پایه مثل ls، cd و cp، مدیریت فایل‌ها و پوشه‌ها مثل آب خوردن می‌شود. دستورات شبکه مثل ping و ssh به شما کمک می‌کنند با دنیای بیرون ارتباط برقرار کنید، و ابزارهایی مثل grep و find برای جستجو و تحلیل داده‌ها عالی هستند.

اگر تازه‌کار هستید، از دستورات ساده شروع کنید و کم‌کم سراغ ابزارهای پیشرفته‌تر بروید. ترمینال لینوکس مثل یک دوست وفادار است که هرچه بیشتر با آن کار کنید، بیشتر قدرتش را کشف می‌کنید!

داکر چیست و چرا ازش استفاده کنیم - Docker نوشته شده توسط عرفان دهقانی

داکر چیست و چرا ازش استفاده کنیم - Docker

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

حالا نوبت داکر (Docker) است؛ ابزاری که مثل یک کارآفرین خلاق دنیای فناوری را متحول کرده. داکر مثل یک جعبه ابزار هوشمند است که نرم‌افزارها را در بسته‌های قابل حمل و سبک به نام کانتینر نگه می‌دارد و کار توسعه و اجرای برنامه‌ها را حسابی ساده کرده.

بیایید با زبانی ساده بفهمیم داکر چیست، چطور به وجود آمد و چرا این‌قدر مهم است.

داکر چه جور چیزی است؟

فکر کنید بخواهید یک دستگاه پخش موسیقی را با تمام تنظیمات و قطعاتش به یک شهر دیگر ببرید. حالا اگر بخواهید این دستگاه روی هر سیستمی، بدون هیچ دردسری، همان‌طور کار کند، چه؟ داکر دقیقاً این کار را برای نرم‌افزارها انجام می‌دهد. داکر یک فناوری است که برنامه‌ها را همراه با تمام چیزهایی که برای اجرا نیاز دارند (مثل سیستم‌عامل، کتابخانه‌ها و تنظیمات) در بسته‌های کوچکی به نام کانتینر قرار می‌دهد. این کانتینرها مثل جعبه‌های قابل حملی هستند که می‌توانید آن‌ها را روی هر سیستمی باز کنید و برنامه‌تان درست مثل قبل کار کند.

داستان پیدایش داکر

سال ۲۰۱۳ بود که شرکت dotCloud ایده داکر را به دنیا معرفی کرد. آن موقع، برنامه‌نویسان با یک مشکل بزرگ دست‌وپنجه نرم می‌کردند: برنامه‌ای که روی کامپیوتر خودشان عالی کار می‌کرد، روی سرور یا سیستم‌های دیگر به مشکل می‌خورد. چرا؟ چون تنظیمات، نسخه‌های نرم‌افزاری یا سیستم‌عامل‌ها متفاوت بودند. داکر با الهام از فناوری‌های قدیمی‌تر مثل کانتینرهای لینوکس (LXC)، راه‌حلی سبک و سریع ارائه داد که این مشکلات را حل کرد. خیلی زود، غول‌های فناوری مثل آمازون، گوگل و مایکروسافت عاشق داکر شدند و این ابزار به یکی از ستون‌های دنیای فناوری تبدیل شد.

داکر چه فایده‌ای دارد؟

داکر مثل یک دستیار همه‌فن‌حریف است که کارهای زیادی را ساده می‌کند. بیایید چند تا از فوایدش را ببینیم:

  • یکسان‌سازی محیط‌ها: با داکر، برنامه‌تان روی هر سیستمی، از لپ‌تاپ گرفته تا سرورهای ابری، دقیقاً به یک شکل کار می‌کند.
  • سرعت و سبکی: کانتینرهای داکر خیلی سبک‌تر از ماشین‌های مجازی هستند و منابع کمتری مصرف می‌کنند.
  • حمل‌ونقل آسان: می‌توانید یک کانتینر را مثل یک فایل ساده از سیستمی به سیستم دیگر ببرید، بدون نگرانی از خراب شدن برنامه.
  • مقیاس‌پذیری سریع: اگر سایت شما ناگهان پربازدید شد، داکر به شما کمک می‌کند در چند ثانیه کانتینرهای بیشتری راه بیندازید.

کجاها از داکر استفاده می‌شود؟

داکر توی جاهای زیادی کاربرد دارد، انگار یک ابزار همه‌کاره است:

  • ساخت و توسعه برنامه: برنامه‌نویسان از داکر برای تست و توسعه برنامه‌ها در محیط‌های یکسان استفاده می‌کنند.
  • اجرای سرویس‌های بزرگ: وب‌سایت‌های غول‌پیکری مثل نتفلیکس یا اسپاتیفای از داکر برای مدیریت سرورهایشان استفاده می‌کنند.
  • آزمایشگاه‌های امن: داکر به تیم‌ها اجازه می‌دهد محیط‌های آزمایشی بسازند و بدون ترس از خرابکاری، ایده‌های جدید را تست کنند.
  • جهان ابری: سرویس‌های ابری مثل AWS و گوگل کلود از داکر برای اجرای هزاران برنامه به‌صورت همزمان استفاده می‌کنند.

چرا داکر؟

داکر به چند دلیل حسابی محبوب شده:

  • رایگان و متن‌باز: هرکسی می‌تواند از داکر استفاده کند و حتی کدهایش را تغییر دهد.
  • سبک و پرسرعت: کانتینرها خیلی سریع راه‌اندازی می‌شوند و منابع کمی نیاز دارند.
  • انعطاف بی‌نهایت: داکر با انواع سیستم‌ها و پلتفرم‌های ابری کار می‌کند.
  • حمایت جامعه: میلیون‌ها نفر در دنیا داکر را توسعه می‌دهند و کانتینرهای آماده برای هر چیزی (از پایگاه داده تا وب‌سرور) وجود دارد.

مروری بر مسیر داکر

  • ۲۰۱۳: داکر توسط dotCloud متولد شد و دنیای برنامه‌نویسی را تکان داد.
  • ۲۰۱۴-۲۰۱۶: شرکت‌های بزرگ و کوچک شروع به استفاده گسترده از داکر کردند و ابزارهایی مثل کوبورنتیس برای مدیریت کانتینرها ساخته شد.
  • امروز: داکر قلب تپنده بسیاری از سیستم‌های مدرن است، از استارتاپ‌ها تا شرکت‌های عظیم فناوری.

جمع‌بندی

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

SSH به زبان ساده - SSH چیست نوشته شده توسط عرفان دهقانی

SSH به زبان ساده - SSH چیست

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

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

بیایید با هم ببینیم SSH چیست، از کجا آمده، و به چه دردی می‌خورد.

SSH چیست؟

SSH یا Secure Shell (به معنی پوسته امن) یک پروتکل اینترنتی است که به شما اجازه می‌دهد از راه دور به یک کامپیوتر دیگر وصل شوید و آن را کنترل کنید، انگار که جلوی همان کامپیوتر نشسته‌اید. اما چیزی که SSH را خاص می‌کند، امنیت بالای آن است. این پروتکل تمام اطلاعات ردوبدل‌شده بین دو دستگاه را رمزنگاری می‌کند تا هیچ‌کس نتواند آن‌ها را بخواند یا دستکاری کند.

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

از کجا آمده؟

SSH در سال ۱۹۹۵ توسط یک برنامه‌نویس فنلاندی به نام تاتو یلونن طراحی شد. در آن زمان، روش‌های قدیمی برای اتصال به کامپیوترهای دوردست (مثل Telnet) اصلاً امن نبودند و هکرها به‌راحتی می‌توانستند اطلاعات را شنود کنند. مثلاً اگر رمز عبور شما از طریق Telnet ارسال می‌شد، ممکن بود کسی آن را بدزدد!

تاتو یلونن تصمیم گرفت یک راه‌حل امن‌تر بسازد. او نسخه اولیه SSH را منتشر کرد و خیلی زود این پروتکل محبوب شد. بعدها، نسخه بهبودیافته‌ای به نام SSH-2 در سال ۱۹۹۶ معرفی شد که هنوز هم استاندارد اصلی است.

SSH به چه دردی می‌خورد؟

SSH مثل یک کلید جادویی است که درهای زیادی را باز می‌کند. بیایید چند کاربرد اصلی‌اش را ببینیم:

  1. کنترل از راه دور: اگر بخواهید یک سرور (مثلاً سرور وب‌سایت یک شرکت) را از دور مدیریت کنید، SSH به شما اجازه می‌دهد دستورات لازم را اجرا کنید. مثلاً می‌توانید نرم‌افزار نصب کنید، فایل‌ها را جابه‌جا کنید یا تنظیمات را تغییر دهید.

  2. انتقال امن فایل‌ها: با استفاده از ابزارهایی مثل SCP یا SFTP که بر پایه SSH کار می‌کنند، می‌توانید فایل‌ها را با امنیت کامل بین دو کامپیوتر منتقل کنید. این مثل فرستادن یک بسته با یک کامیون زره‌پوش است!

  3. تونل‌سازی امن: SSH می‌تواند یک تونل امن بین دو دستگاه ایجاد کند. مثلاً اگر بخواهید از یک شبکه ناامن (مثل وای‌فای عمومی) به یک سرور وصل شوید، SSH اطلاعات شما را رمزنگاری می‌کند تا هکرها نتوانند آن‌ها را ببینند.

  4. اتوماسیون و مدیریت سیستم‌ها: برنامه‌نویسان و مدیران سیستم از SSH برای خودکار کردن کارها روی سرورها استفاده می‌کنند، مثل به‌روزرسانی نرم‌افزارها یا گرفتن نسخه پشتیبان.

چرا SSH مهم است؟

SSH چند ویژگی کلیدی دارد که آن را به یکی از پرکاربردترین پروتکل‌ها تبدیل کرده است:

  • امنیت بالا: SSH تمام اطلاعات را رمزنگاری می‌کند، یعنی حتی اگر کسی داده‌های شما را در مسیر سرقت کند، نمی‌تواند آن‌ها را بخواند.
  • انعطاف‌پذیری: SSH روی سیستم‌های مختلف مثل لینوکس، ویندوز و مک کار می‌کند.
  • رایگان و متن‌باز: مثل لینوکس، کدهای SSH هم برای همه در دسترس است و می‌توان آن را بررسی و بهبود داد.
  • کنترل کامل: با SSH می‌توانید تقریباً هر کاری را روی یک کامپیوتر دوردست انجام دهید، از اجرای دستورات ساده تا مدیریت پیچیده سرورها.

تاریخچه کوتاه SSH

  • ۱۹۹۵: تاتو یلونن نسخه اولیه SSH را منتشر کرد تا جایگزین ابزارهای ناامن مثل Telnet شود.
  • ۱۹۹۶: نسخه دوم (SSH-2) معرفی شد که امنیت و امکانات بیشتری داشت.
  • ۲۰۰۰ها: SSH به استانداردی برای مدیریت سرورها و انتقال امن داده‌ها تبدیل شد.
  • امروز: SSH در همه‌جا، از سرورهای وب گرفته تا دستگاه‌های اینترنت اشیا (IoT)، استفاده می‌شود.

جمع‌بندی

SSH مثل یک نگهبان قابل اعتماد است که ارتباط شما با کامپیوترهای دوردست را امن و ساده می‌کند. چه بخواهید یک سرور را مدیریت کنید، چه فایل‌های مهم را منتقل کنید یا از یک شبکه ناامن استفاده کنید، SSH تضمین می‌کند که داده‌هایتان در امان بمانند. دفعه بعد که از یک وب‌سایت یا سرویسی استفاده می‌کنید که روی یک سرور لینوکسی کار می‌کند، احتمالاً SSH پشت پرده مشغول کار است تا همه‌چیز امن و منظم پیش برود!

بررسی سیستم عامل linux - لینوکس از صفر تا بینهایت نوشته شده توسط عرفان دهقانی

بررسی سیستم عامل linux - لینوکس از صفر تا بینهایت

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

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

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

اما لینوکس دقیقاً چیست، از کجا آمده و به چه دردی می‌خورد؟ در این مقاله به زبان ساده به این سؤالات پاسخ می‌دهیم.

لینوکس چیست؟

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

اما چیزی که لینوکس را خاص می‌کند، این است که متن‌باز (Open Source) است. یعنی کدهایش برای همه در دسترس است و هرکسی می‌تواند آن را تغییر دهد، بهبود بدهد یا حتی نسخه خودش را بسازد. مثل این است که دستور پخت یک غذا را داشته باشید و بتوانید آن را به سلیقه خودتان تغییر دهید!

از کجا آمده؟

داستان لینوکس از سال ۱۹۹۱ شروع شد. یک دانشجوی فنلاندی به نام لینوس توروالدز تصمیم گرفت یک سیستم‌عامل رایگان و قابل تغییر بسازد. او هسته اولیه لینوکس (که به آن کرنل می‌گویند) را نوشت. این هسته مثل قلب سیستم‌عامل است که با سخت‌افزار ارتباط برقرار می‌کند.

لینوکس از یک پروژه دیگر به نام یونیکس الهام گرفته بود. یونیکس یک سیستم‌عامل قدرتمند بود که در دهه ۱۹۷۰ برای کامپیوترهای بزرگ ساخته شده بود، اما گران و محدود بود. لینوکس آمد تا شبیه یونیکس باشد، اما رایگان و برای همه در دسترس.

با کمک برنامه‌نویس‌های داوطلب از سراسر دنیا، لینوکس کم‌کم بهتر شد و به چیزی تبدیل شد که امروز می‌بینیم. شرکت‌ها و افراد زیادی نسخه‌های مختلف لینوکس را ساختند که به آن‌ها توزیع (Distribution) می‌گویند، مثل اوبونتو، فدورا یا دبیان.

به چه دردی می‌خورد؟

لینوکس مثل یک ابزار همه‌کاره است که در جاهای مختلف استفاده می‌شود. بیایید چند کاربرد اصلی‌اش را ببینیم:

  1. رایانه‌های شخصی: اگر دوست دارید سیستمی سبک، امن و رایگان داشته باشید، می‌توانید لینوکس را روی لپ‌تاپ یا کامپیوترتان نصب کنید. مثلاً اوبونتو برای کاربران معمولی خیلی ساده و کاربرپسند است.

  2. سرورها: بیشتر وب‌سایت‌هایی که هر روز استفاده می‌کنید (مثل گوگل یا فیسبوک) روی سرورهای لینوکسی کار می‌کنند. لینوکس به خاطر امنیت و پایداری‌اش برای سرورها عالی است.

  3. گوشی‌های هوشمند: سیستم‌عامل اندروید که روی گوشی‌های موبایل است، در واقع بر پایه لینوکس ساخته شده! پس هر روز بدون اینکه بدانید با لینوکس کار می‌کنید.

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

  5. یادگیری و برنامه‌نویسی: اگر می‌خواهید برنامه‌نویسی یاد بگیرید یا سیستم‌های کامپیوتری را بهتر بفهمید، لینوکس به شما کنترل زیادی روی سیستم می‌دهد و ابزارهای زیادی برای برنامه‌نویسان دارد.

چرا لینوکس مهم است؟

لینوکس چند ویژگی فوق‌العاده دارد که آن را از بقیه سیستم‌عامل‌ها متمایز می‌کند:

  • رایگان است: لازم نیست برای استفاده از لینوکس پول بدهید.
  • امن است: چون کدهایش باز است، افراد زیادی آن را بررسی می‌کنند و مشکلات امنیتی سریع برطرف می‌شوند.
  • انعطاف‌پذیر است: می‌توانید لینوکس را برای هر کاری تنظیم کنید، از یک کامپیوتر ساده تا یک سرور بزرگ.
  • جامعه بزرگ: میلیون‌ها نفر در دنیا از لینوکس استفاده می‌کنند و همیشه می‌توانید از کمک آن‌ها استفاده کنید.

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

  • ۱۹۹۱: لینوس توروالدز هسته لینوکس را منتشر کرد.
  • ۱۹۹۰: برنامه‌نویسان داوطلب از سراسر دنیا به پروژه لینوکس پیوستند و آن را گسترش دادند.
  • ۲۰۰۰: لینوکس به سرورها، شرکت‌ها و حتی کامپیوترهای خانگی راه پیدا کرد.
  • امروز: لینوکس در همه‌چیز از ابررایانه‌ها تا گوشی‌های هوشمند استفاده می‌شود و یکی از مهم‌ترین فناوری‌های دنیاست.

جمع‌بندی

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

آپدیت 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 که بهبودهای بیشتری نیز ارائه داده‌اند.