فصل صفرم: مفاهیم برنامه نویسی وب

1. معرفی دوره متخصص جنگو

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

2. نکاتی مهم قبل از شروع دوره

پیش نیازهای دوره:

  • آشنایی اولیه با زبان برنامه‌نویسی پایتون

  • آشنایی با مفاهیم پایه‌ای وب

ابزارهای مورد نیاز:

  • نصب پایتون و جنگو

  • ویرایشگر متن مناسب (مثل Visual Studio Code یا PyCharm)

  • مرورگر وب (مثل گوگل کروم)

3. مفهوم شبکه

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

local area network

  • PAN: Personal Area Network
  • keyboard
  • Headphone
  • Wifi
  • Mouse
  • Bluetooth
  • LAN: Local Area Network برای اتصال سیستم ها و ابزار ها در مسافت های کوتاه
  • CAN: Campus Area Network ارتباط سیستم های دانشگاه با سیستم های سایر بخش های دانشگاه
  • MAN: Metropolitan Area Network آنها شبکه های شهری و مجتمع را به هم متصل می کنند
  • WAN: Wide Area Network اتصال پوششی سیستم ها در فواصل بسیار دور

نوع شبکه از نظر معماری

  • Client-Server یک سیستم قدرتمندتر به عنوان نقطه مرکزی عمل می کند و بقیه سیستم ها به نام (کلاینت) به این سیستم بزرگتر متصل می شوند.
  • Peer-to-Peer در اتصال همتا به همتا و هر سیستمی می تواند سرور یا مشتری باشد.
  • Hybrid ترکیبی از دو معماری قبلی

انواع توپولوژی شبکه

types of  network topologies

  • Star Topology (توپولوژی ستاره): در این توپولوژی، هر دستگاه به یک نقطه مرکزی متصل می‌شود که معمولاً یک سوئیچ یا هاب است. این نقطه مرکزی مسئول اداره ترافیک شبکه است و ارتباطات بین دستگاه‌ها از طریق آن صورت می‌گیرد.

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

  • Mesh Topology (توپولوژی شبکه): در این توپولوژی، هر دستگاه با همه دستگاه‌های دیگر متصل است. این اتصالات ممکن است مستقیم یا از طریق تجهیزات میانی مثل روترها باشند. این توپولوژی بسیار انعطاف‌پذیر و قابل اعتماد است، اما نیاز به مدیریت پیچیده‌تری دارد.

  • Bus Topology (توپولوژی پرتوی): در این توپولوژی، تمام دستگاه‌ها به یک لینی که به عنوان خط اصلی یا "پرتو" شناخته می‌شود، متصل هستند. اطلاعات از یک طرف به سمت دیگر ارسال می‌شوند و توسط دستگاه‌ها در مسیر درست شده، تشخیص داده می‌شود.

  • Tree Topology (توپولوژی درختی): این توپولوژی از ترکیب توپولوژی ستاره و شبکه تشکیل شده است. دستگاه‌ها در این توپولوژی به شکل یک ساختار درختی سلسله مراتبی به هم متصل هستند، که یک یا چند دستگاه به عنوان ریشه عمل می‌کنند و به دستگاه‌های دیگر متصل می‌شوند.

  • Mesh Topology (توپولوژی پوششی): این توپولوژی شبیه به توپولوژی شبکه است، با این تفاوت که تمام دستگاه‌ها به صورت مستقیم به یکدیگر متصل هستند، بدون نیاز به دستگاه‌های میانی. این توپولوژی برای حل مشکلات ردیابی و پیکربندی داده‌ها بسیار موثر است.

نوع‌های شبکه‌های ارتباطی

نوع‌های شبکه‌های ارتباطی

  • Internet (اتصالات اینترنتی جهانی) این نوع اتصالات بیانگر ارتباطاتی است که از طریق اینترنت بین افراد، سازمان‌ها، و شبکه‌های مختلف در سراسر جهان برقرار می‌شود. این اتصالات از طریق ارائه‌دهندگان خدمات اینترنت و شبکه‌های عمومی برقرار می‌شود و به کاربران امکان ارتباط با یکدیگر را فراهم می‌کند.
  • Extranet (اتصالات برون‌سازمانی) این نوع اتصالات به ارتباطاتی اشاره دارد که برون از مرزها و محدوده‌های یک سازمان برقرار می‌کنند. این ارتباطات معمولاً بین یک سازمان و موجودیت‌های دیگر مانند شرکای تجاری، مشتریان، تأمین‌کنندگان، یا حتی مخاطبین خدمات است. این نوع ارتباطات ممکن است از طریق اینترنت یا اتصالات خصوصی بین شرکت‌ها برقرار شود.
  • Intranet (اتصالات درون‌سازمانی) این نوع اتصالات به ارتباطات داخلی یک سازمان یا سازمان‌های مرتبط با یکدیگر اشاره دارد. این ارتباطات از طریق شبکه‌های داخلی یا محدوده محلی (LAN) درون سازمان برقرار می‌شوند و برای ارتباطات داخلی، انتقال داده‌ها، به اشتراک گذاری منابع، و هماهنگی فعالیت‌ها درون سازمانی مورد استفاده قرار می‌گیرند.

4. IP (Internet Protocol Address)

آدرس IP یک شناسه منحصر به فرد است که به هر دستگاهی در شبکه داده می‌شود تا بتواند با دیگر دستگاه‌ها ارتباط برقرار کند. آدرس IP به دو نوع تقسیم می‌شود:

  • IPv4: شامل ۴ بخش عددی بین ۰ تا ۲۵۵ که با نقطه از هم جدا می‌شوند، مثل 192.168.1.1

  • IPv6: شامل ۸ بخش هگزادسیمال که با کولون از هم جدا می‌شوند، مثل 2001:0db8:85a3:0000:0000:8a2e:0370:7334

5. DNS (Domain Name Server)

سیستم نام دامنه (DNS) سرویسی است که نام‌های دامنه قابل خواندن برای انسان (مثل <www.example.com>) را به آدرس‌های IP عددی تبدیل می‌کند. DNS مانند دفترچه تلفن اینترنت عمل می‌کند.

plaintext
Root Domain
           -----------------
Protocol   Domain Name
--------   -------------
https://www.exampledomain.com
        -----             ---
        Subdomain         Top Level Domain
Component example
Protocol https
Domain Name <www.example.com>
Subdomain www
Top Level Domain .com
Second Level Domain example
Root Domain example.com

6. اجزای url

URL کامل: https://username:password@www.example.com:8080/directory/page?key1=value1&key2=value2#section

plaintext
Username   Password  Protocol Subdomain Second Level Domain  Top Level Domain  Port Number Path           Query String           Fragment
---------  --------  -------- --------- -------------------- ----------------  ----------- -------------- ---------------------- -------------
username   password  https:// www.      example              .com              :8080       /directory/page?key1=value1&key2=value2#section
Component Example
Protocol https
Domain Name <www.example.com>
Subdomain www
Top Level Domain com
Second Level Domain example
Root Domain example.com
Path directory/page
Parameters key1=value1&key2=value2
Fragment section
Port Number 8080
Username username
Password password
Query String ?query_parameter
  • توضیحات اجزا:

  • Protocol (پروتکل): https:// پروتکل مشخص می‌کند که چگونه داده‌ها بین سرور و کلاینت انتقال پیدا می‌کنند. در این مثال، پروتکل https است.

  • Username (نام کاربری): username این بخش از URL شامل نام کاربری است که برای احراز هویت به کار می‌رود.
  • Password (رمز عبور): password این بخش از URL شامل رمز عبور است که برای احراز هویت به کار می‌رود.
  • Subdomain (زیر دامنه): www زیر دامنه بخشی از دامنه است که معمولاً قبل از نام دامنه اصلی می‌آید. در این مثال، زیر دامنه www است.
  • Second Level Domain (دامنه سطح دوم): example دامنه سطح دوم، نام اصلی دامنه است که کاربران برای دسترسی به سایت استفاده می‌کنند. در این مثال، دامنه سطح دوم example است.
  • Top Level Domain (دامنه سطح بالا): .com دامنه سطح بالا، پسوند دامنه است که نوع سازمان یا کشور را مشخص می‌کند. در این مثال، دامنه سطح بالا .com است.
  • Port Number (شماره پورت): :8080 شماره پورت مشخص می‌کند که درخواست‌ها به کدام پورت سرور ارسال شوند. در این مثال، شماره پورت 8080 است.
  • Path (مسیر): /directory/page مسیر، محل فایل یا منبعی خاص را در سرور مشخص می‌کند. در این مثال، مسیر /directory/page است.
  • Query String (رشته پرس و جو): ?key1=value1&key2=value2 رشته پرس و جو شامل پارامترهایی است که به سرور ارسال می‌شوند تا اطلاعات خاصی بازیابی یا عملیاتی خاص انجام شود. در این مثال، رشته پرس و جو ?key1=value1&key2=value2 است.
  • Fragment (قطعه): #section قطعه به قسمتی از صفحه اشاره دارد که کاربر باید به آن هدایت شود. در این مثال، قطعه #section است.

اتصال اجزا در یک URL کامل: https://username:password@www.example.com:8080/directory/page?key1=value1&key2=value2#section

7. مفهوم دامنه

دامنه نامی است که برای شناسایی یک وب‌سایت در اینترنت استفاده می‌شود، مانند <www.example.com>. دامنه‌ها به سطوح مختلف تقسیم می‌شوند:

انواع پسوند دامنه (Domain Extensions)

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

  • gTLD (generic Top-Level Domain): این پسوندها عمومی هستند و به دسته‌های خاصی تعلق ندارند. برخی از معروف‌ترین gTLDها شامل موارد زیر هستند:
  • .com (تجاری)
  • .org (سازمان‌ها)
  • .net (شبکه)
  • .info (اطلاعات)
  • .biz (تجارت)
  • ccTLD (country code Top-Level Domain): این پسوندها بر اساس کدهای کشورها تعیین می‌شوند و به هر کشور یا منطقه جغرافیایی یک ccTLD منحصر به فرد تعلق می‌گیرد. برخی از معروف‌ترین ccTLDها شامل موارد زیر هستند:
  • .us (ایالات متحده)
  • .uk (انگلستان)
  • .ca (کانادا)
  • .de (آلمان)
  • .cn (چین)
  • sTLD (sponsored Top-Level Domain): این پسوندها به دسته‌ها یا جوامع خاصی تعلق دارند و تحت حمایت و مدیریت سازمان‌ها یا جوامع خاصی قرار دارند. برخی از معروف‌ترین sTLDها شامل موارد زیر هستند:
  • .edu (آموزشی)
  • .gov (دولت‌ها)
  • .mil (نظامی)
  • .aero (صنعت هواپیمایی)
  • .museum (موزه‌ها)
  • انواع پسوندهای دامنه ایرانی (ccTLDs for Iran)
  • .ir (عمومی)
  • .co.ir (شرکت‌ها)
  • .ac.ir (موسسات آموزشی)
  • .gov.ir (نهادهای دولتی)
  • .org.ir (سازمان‌های غیرانتفاعی)
  • .net.ir (شرکت‌های شبکه و اینترنت)
  • .sch.ir (مدارس)
  • .id.ir (افراد حقیقی)

8. مفهوم پورت

پورت‌ها در شبکه‌های کامپیوتری، نقاط انتهایی ارتباطی برای ارسال و دریافت داده‌ها هستند. هر پورت به یک شماره منحصر به فرد بین 0 تا 65535 اختصاص داده می‌شود.

  • شماره پورت: 0-65535
  • پورت‌های شناخته شده (Well Known Ports): 0-1023
  • پورت‌های ثبت شده (Registered Ports): 1024-49151
  • پورت‌های دینامیک (پورت‌های خصوصی): 49152-65535

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

Port توضیحات
20 FTP (انتقال فایل - Data Transfer)
21 FTP (انتقال فایل - Control)
22 SSH (دسترسی امن به شل)
25 SMTP (ارسال ایمیل)
53 DNS (سیستم نام دامنه)
80 HTTP (پروتکل انتقال ابرمتن)
110 POP3 (دریافت ایمیل)
123 NTP (پروتکل زمان شبکه)
143 IMAP (پروتکل دسترسی به پیام اینترنتی)
179 BGP (پروتکل دروازه مرزی)
443 HTTPS (HTTP امن)
465 SMTPS (ارسال امن ایمیل با SSL)
993 IMAPS (IMAP امن با SSL)
995 POP3S (POP3 امن با SSL)
3306 MySQL (پایگاه داده)
3389 RDP (پروتکل دسکتاپ از راه دور)
5432 PostgreSQL (پایگاه داده)
5900 VNC (کنترل از راه دور دسکتاپ)
6379 Redis (پایگاه داده در حافظه)
8080 HTTP پروکسی/آزمایشگاهی

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

9. مفهوم سرور، هاست و لوکال هاست

سرور (Server)

سرور یک کامپیوتر یا سیستمی است که منابع، داده‌ها، خدمات یا برنامه‌ها را به سایر کامپیوترها (کلاینت‌ها) در شبکه ارائه می‌دهد. انواع مختلفی از سرورها وجود دارند که هر کدام وظایف خاصی را انجام می‌دهند:

  • وب سرور (Web Server): سرویس‌دهی به صفحات وب و محتواهای مربوط به آن.
  • سرور کاربردی (Application Server): اجرای برنامه‌های کاربردی و ارائه سرویس‌های مرتبط.
  • سرور ایمیل (Email Server): مدیریت ارسال و دریافت ایمیل‌ها.
  • سرور فکس (Fax Server): ارسال و دریافت فکس‌ها از طریق شبکه.
  • سرور FTP (FTP Server): انتقال فایل‌ها از طریق پروتکل FTP.
  • سرور اخبار (News Server): مدیریت و توزیع اخبار و مطالب.
  • سرور استریمینگ (Streaming Server): پخش محتوای چندرسانه‌ای به صورت زنده یا بر تقاضا.
  • سرور IRC (Internet Relay Chat Server): ارائه خدمات چت آنلاین.
  • سرور گروه‌افزار (Groupware Server): ارائه ابزارهای همکاری و مدیریت پروژه.
  • سرور لیست (List Server): مدیریت لیست‌های ایمیل و ارسال اخبار و اطلاعیه‌ها.
  • سرور فایل (File Server): ذخیره و مدیریت فایل‌ها.
  • سرور تلنت (Telnet Server): دسترسی از راه دور به سیستم‌ها.
  • سرور پایگاه داده (Database Server): مدیریت و ارائه دسترسی به پایگاه داده‌ها.
  • سرور پروکسی (Proxy Server): واسطه‌گری بین کلاینت و سرورهای دیگر برای افزایش امنیت و کارایی.

هاست (Host)

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

  • پایگاه داده (Database): ارائه فضای ذخیره‌سازی و مدیریت پایگاه داده‌ها.
  • پنل کنترل (Control Panel): ابزار مدیریتی برای کنترل تنظیمات هاست.
  • وبسایت (Website): میزبانی وبسایت‌ها و ارائه خدمات مربوط به آن‌ها.
  • سازنده وبسایت (Website Builder): ابزارهایی برای ایجاد و مدیریت وبسایت‌ها بدون نیاز به کدنویسی.
  • حساب‌های ایمیل (Email Accounts): ارائه فضای ذخیره‌سازی و مدیریت ایمیل‌ها.
انواع هاست
  • هاست اشتراکی (Shared Hosting): منابع سرور بین چندین کاربر مشترک می‌شود.
  • هاست VPS (VPS Hosting): سرور مجازی خصوصی با منابع اختصاصی اما به اشتراک‌گذاشته شده.
  • هاست اختصاصی (Dedicated Hosting): سرور اختصاصی برای یک کاربر خاص با منابع کامل.
  • هاست ابری (Cloud Hosting): منابع سرور از طریق چندین سرور فیزیکی به صورت ابری ارائه می‌شود.

لوکال هاست (Localhost)

لوکال هاست به کامپیوتری اشاره دارد که در حال حاضر در حال استفاده است و از طریق آدرس IP 127.0.0.1 یا نام "localhost" قابل دسترسی است. معمولاً برای توسعه و تست برنامه‌ها به صورت محلی استفاده می‌شود.

دیتاسنتر (Data Center)

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

10. مفهوم کلاینت (Client)

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

11. مفهوم پروتکل

  • HTTP (Hypertext Transfer Protocol): پروتکل انتقال ابرمتن برای وب (پورت 80)
  • HTTPS (Hypertext Transfer Protocol Secure): نسخه امن HTTP با استفاده از SSL/TLS (پورت 443)
  • FTP (File Transfer Protocol): پروتکل انتقال فایل (پورت‌های 21 و 20)
  • SFTP (Secure File Transfer Protocol): پروتکل انتقال فایل امن از طریق SSH (پورت 22)
  • TCP/IP (Transmission Control Protocol/Internet Protocol): پروتکل اصلی اینترنت برای انتقال داده‌ها
  • IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange): پروتکل‌های قدیمی شبکه‌های Novell
  • NetBEUI (NetBIOS Extended User Interface): پروتکل شبکه‌های محلی کوچک
  • Telnet (Telecommunication Network): پروتکل دسترسی از راه دور به خط فرمان (پورت 23)
  • SMTP (Simple Mail Transfer Protocol): پروتکل ارسال ایمیل (پورت 25)
  • POP3 (Post Office Protocol version 3): پروتکل دسترسی به ایمیل (پورت 110)
  • IMAP (Internet Message Access Protocol): پروتکل دسترسی به ایمیل (پورت 143)
  • SSH (Secure Shell): پروتکل دسترسی امن از راه دور (پورت 22)
  • AppleTalk: مجموعه پروتکل‌های شبکه‌های اپل
  • DHCP (Dynamic Host Configuration Protocol): پروتکل اختصاص خودکار آدرس‌های IP (پورت‌های 67 و 68)
  • DNS (Domain Name System): پروتکل تبدیل نام دامنه به آدرس IP (پورت 53)
  • ICMP (Internet Control Message Protocol): پروتکل ارسال پیام‌های کنترل و خطا
  • UDP (User Datagram Protocol): پروتکل ارسال بسته‌های داده بدون اتصال
  • FTAM (File Transfer, Access, and Management): پروتکل انتقال و مدیریت فایل‌ها در شبکه‌های OSI
  • RTP (Real-time Transport Protocol): پروتکل انتقال داده‌های چندرسانه‌ای در زمان واقعی
  • LCP (Link Control Protocol): پروتکل کنترل و مدیریت ارتباطات لینک در PPP
  • SNMP (Simple Network Management Protocol): پروتکل مدیریت و نظارت بر دستگاه‌های شبکه (پورت 161)
  • NCP (NetWare Core Protocol): پروتکل دسترسی به سرویس‌های شبکه در NetWare
  • LDAP (Lightweight Directory Access Protocol): پروتکل دسترسی و مدیریت اطلاعات دایرکتوری (پورت 389)
  • NFS (Network File System): پروتکل دسترسی به فایل‌ها در شبکه
  • SIP (Session Initiation Protocol): پروتکل مدیریت جلسات صوتی و ویدیویی (پورت 5060)
  • RDP (Remote Desktop Protocol): پروتکل دسترسی از راه دور به دسکتاپ ویندوز (پورت 3389)
  • SMB (Server Message Block): پروتکل اشتراک‌گذاری فایل و منابع در شبکه‌های ویندوز (پورت 445)
  • TFTP (Trivial File Transfer Protocol): پروتکل ساده انتقال فایل (پورت 69)
  • NNTP (Network News Transfer Protocol): پروتکل انتقال اخبار شبکه (پورت 119)
  • BGP (Border Gateway Protocol): پروتکل مسیریابی بین شبکه‌های بزرگ (پورت 179)
  • RIP (Routing Information Protocol): پروتکل مسیریابی در شبکه‌های محلی و گسترده (پورت 520)
  • OSPF (Open Shortest Path First): پروتکل مسیریابی داخلی برای شبکه‌های IP

12. مفهوم وب

وب به مجموعه‌ای از صفحات متصل به هم در اینترنت اشاره دارد که از طریق مرورگرهای وب قابل دسترسی هستند. وب در طی چند دهه گذشته به سه نسل اصلی تقسیم شده است که هر کدام ویژگی‌ها و امکانات خاص خود را دارند. این نسل‌ها به عنوان Web 1.0، Web 2.0 و Web 3.0 شناخته می‌شوند.

Web 1.0 (1990-2005)

Web 1.0 به اولین نسل وب اشاره دارد که از اواخر دهه 1980 تا اوایل دهه 2000 میلادی رواج داشت. ویژگی‌های اصلی Web 1.0 شامل موارد زیر است:

  • Basic Web Page: صفحات وب ساده و استاتیک که تنها شامل متن و تصاویر پایه‌ای بودند.
  • HTML: استفاده از زبان نشانه‌گذاری ابرمتن (HTML) برای ایجاد و ساختاردهی صفحات وب.
  • E-commerce: آغاز تجارت الکترونیک با سایت‌هایی مانند Amazon و eBay.
  • Java & JavaScript: معرفی زبان‌های برنامه‌نویسی جاوا و جاوااسکریپت برای ایجاد عملکردهای تعاملی در وب‌سایت‌ها.

Web 2.0 (از 2006)

Web 2.0 به نسل دوم وب اشاره دارد که از اوایل دهه 2000 شروع شد و تا کنون ادامه دارد. Web 2.0 به وب تعاملی و اجتماعی معروف است. ویژگی‌های اصلی Web 2.0 شامل موارد زیر است:

  • Social Media: پیدایش و رشد شبکه‌های اجتماعی مانند فیس‌بوک، توییتر و اینستاگرام.
  • User Generated Content: کاربران قادر به ایجاد و به اشتراک‌گذاری محتواهای خود شدند (مانند وبلاگ‌ها و ویکی‌ها).
  • Mobile Access: دسترسی به وب از طریق دستگاه‌های موبایل.
  • High-quality Camera & Video: کیفیت بالای دوربین‌ها و ویدیوها در دستگاه‌های موبایل و به اشتراک‌گذاری آسان آن‌ها.
  • Apps: ظهور و گسترش برنامه‌های کاربردی تحت وب و موبایل.
  • Corps Monetizing Your Data: شرکت‌ها شروع به درآمدزایی از داده‌های کاربران کردند.
  • High Speed Communication: ارتباطات با سرعت بالا، مانند باند پهن و فیبر نوری.
  • Global Internet Access: دسترسی جهانی به اینترنت.

Web 3.0 (در حال ظهور)

Web 3.0 به نسل سوم وب اشاره دارد که هنوز در حال توسعه است و به عنوان وب معنایی نیز شناخته می‌شود. ویژگی‌های اصلی Web 3.0 شامل موارد زیر است:

  • Semantic Web: هدف از وب معنایی ایجاد داده‌های ساختاریافته‌ای است که ماشین‌ها بتوانند به راحتی آن‌ها را پردازش و تحلیل کنند.
  • Dapps (Decentralized Applications): برنامه‌های غیرمتمرکز که بر روی بلاک‌چین‌ها اجرا می‌شوند.
  • User Monetize Their Data: کاربران می‌توانند از داده‌های خود کسب درآمد کنند.
  • NFTs (Non-Fungible Tokens): توکن‌های غیرقابل تعویض که مالکیت دیجیتالی اشیاء را نشان می‌دهند.
  • VR & AR (Metaverse): واقعیت مجازی و افزوده که به دنیای مجازی و متاورس مرتبط است.
  • Permissionless Blockchains: بلاک‌چین‌های بدون نیاز به مجوز که برای همه قابل دسترسی هستند.
  • Artificial Intelligence: استفاده گسترده از هوش مصنوعی برای بهبود تجربه کاربری و ارائه خدمات هوشمند.
  • Interoperability: توانایی سیستم‌ها و برنامه‌ها برای همکاری و تبادل داده با یکدیگر.

13. مفهوم Request و Response (مهم)

در پروتکل HTTP، ارتباط بین کلاینت (معمولاً مرورگر وب) و سرور به وسیله درخواست‌ها (Requests) و پاسخ‌ها (Responses) صورت می‌گیرد.

Request (درخواست)

درخواست HTTP شامل چندین بخش است:

  1. Start-Line: شامل خط درخواست (Request-Line) است.
  2. Headers: اطلاعات اضافی در مورد درخواست.
  3. Empty-Line: خط خالی که بین هدرها و بدنه قرار می‌گیرد.
  4. Body: داده‌ای که ارسال می‌شود (در صورت وجود).
Request-Line

شامل سه بخش است:

  • Method: روش HTTP (مانند GET، POST).
  • Request-URI: آدرس مورد نظر (مانند /api/testfully.html).
  • HTTP Version: نسخه پروتکل HTTP.
plaintext
GET /api/testfully.html HTTP/1.1
Headers

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

plaintext
Host: example.com
Accept: image/gif, image/jpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla
Content-Language: en
A Blank Line

خط خالی که بین هدرها و بدنه درخواست قرار دارد.

Body

بدنه درخواست شامل داده‌ای است که در درخواست ارسال می‌شود (در صورت وجود).

plaintext
testId=12345&testName=test+number+one

Structure of Requests

plaintext
GET /api/testfully.html HTTP/1.1           |-> request-line
Host: example.com                          |
Accept: image/gif, image/jpeg, */*         |
Accept-Language: en-us                     |
Accept-Encoding: gzip, deflate             |-> request header
User-Agent: Mozilla                        |
Content-Language: en                       |

                                           |-> A Blank Line
testId=12345&testName=test+number+one      |-> request message body

Response (پاسخ)

پاسخ HTTP نیز شامل چندین بخش است:

  1. Start-Line: شامل خط وضعیت (Status-Line) است.
  2. Headers: اطلاعات اضافی در مورد پاسخ.
  3. Empty-Line: خط خالی که بین هدرها و بدنه قرار می‌گیرد.
  4. Body: داده‌ای که به کلاینت ارسال می‌شود.
Status-Line

شامل سه بخش است:

  • HTTP Version: نسخه پروتکل HTTP.
  • Status Code: کد وضعیت HTTP.
  • Reason Phrase: توضیح کوتاهی در مورد وضعیت.
plaintext
HTTP/1.1 200 OK
Headers

هدرهای پاسخ شامل اطلاعات اضافی هستند مانند نوع محتوا، تاریخ آخرین تغییر و غیره.

plaintext
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
A Blank Line

خط خالی که بین هدرها و بدنه پاسخ قرار دارد.

Body

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

plaintext
<html>
<body>
<h1>Hello, world!</h1>
</body>
</html>

Structure of Responses

plaintext
HTTP/1.1 200 OK                                |-> status line
Date: Mon, 27 Jul 2009 12:28:53 GMT            |
Server: Apache/2.2.14 (Win32)                  |
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT   |-> header
Content-Length: 88                             |
Content-Type: text/html                        |
Connection: Closed                             |
<html>                                         |
<body>                                         |
<h1>Hello, world!</h1>                         |-> Body
</body>                                        |
</html>                                        |

HTTP Status Codes

1xx (Informational)

  • اطلاعاتی که نشان‌دهنده ادامه پردازش درخواست است.

2xx (Success)

  • موفقیت‌آمیز بودن درخواست.
Status Code Reason Phrase
200 OK

3xx (Redirection)

  • نیاز به اقدامات بیشتری توسط کاربر.
Status Code Reason Phrase
301 Permanent Redirect
302 Temporary Redirect
303 Not Modified

4xx (Client Error)

  • خطاهایی که به دلیل درخواست‌های نادرست کلاینت رخ می‌دهند.
Status Code Reason Phrase
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed

5xx (Server Error)

  • خطاهایی که به دلیل مشکلات سرور رخ می‌دهند.
Status Code Reason Phrase
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout

14. کوکی‌ها و سشن‌ها

کوکی‌ها (Cookies)

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

ویژگی‌های کوکی‌ها:

  • ذخیره‌سازی در سمت کاربر: کوکی‌ها در مرورگر ذخیره می‌شوند.
  • طول عمر: می‌تواند موقت (session cookies) یا دائمی (persistent cookies) باشد.
  • محدودیت حجم: حدود 4KB.
  • ارسال خودکار: در هر درخواست HTTP ارسال می‌شوند.

نمونه کاربردهای کوکی‌ها:

  • ذخیره اطلاعات ورود.
  • نگه‌داری تنظیمات کاربر.
  • پیگیری فعالیت‌ها برای اهداف تبلیغاتی.
plaintext
Set-Cookie: sessionId=abc123; Expires=Wed, 09 Jun 2023 10:18:14 GMT; Path=/; HttpOnly

سشن‌ها (Sessions)

سشن‌ها مکانیزمی هستند که اطلاعات وضعیت را در سمت سرور ذخیره می‌کنند و هر سشن با یک شناسه منحصر به فرد (Session ID) شناسایی می‌شود.

ویژگی‌های سشن‌ها:

  • ذخیره‌سازی در سمت سرور: داده‌ها در سرور ذخیره می‌شوند.
  • شناسه سشن: هر سشن یک شناسه منحصر به فرد دارد.
  • امنیت بیشتر: داده‌ها در سمت سرور ذخیره می‌شوند.
  • طول عمر کوتاه‌تر: معمولاً کوتاه‌تر و وابسته به مدت زمان فعالیت کاربر.

نمونه کاربردهای سشن‌ها:

  • نگه‌داری اطلاعات ورود.
  • ذخیره موقت اطلاعات سبد خرید.
  • پیگیری وضعیت کاربر در فرم‌های چند مرحله‌ای.
plaintext
session['user_id'] = 42
session['cart'] = ['item1', 'item2']

مقایسه کوکی‌ها و سشن‌ها

ویژگی کوکی‌ها سشن‌ها
مکان ذخیره‌سازی سمت کاربر (مرورگر) سمت سرور
طول عمر موقت یا دائمی کوتاه‌تر، وابسته به مدت فعالیت
امنیت کمتر (قابل دستکاری) بیشتر (در سمت سرور ذخیره می‌شود)
حجم حدود 4KB محدودیت کمتر (وابسته به سرور)
استفاده رایج نگه‌داری تنظیمات، پیگیری‌ها ذخیره اطلاعات ورود، سبد خرید

ترکیب کوکی‌ها و سشن‌ها

در بسیاری از موارد، کوکی‌ها و سشن‌ها به صورت ترکیبی استفاده می‌شوند. به عنوان مثال، یک کوکی برای ذخیره شناسه سشن (Session ID) استفاده می‌شود و داده‌های مربوط به سشن در سرور ذخیره می‌شوند. این روش به امنیت بیشتر و کارایی بهتر کمک می‌کند.

15. مفهوم فریم‌ورک

فریم‌ورک (Framework) مجموعه‌ای از ابزارها، کتابخانه‌ها و قوانین است که برای توسعه نرم‌افزارها استفاده می‌شود. فریم‌ورک‌ها به توسعه‌دهندگان کمک می‌کنند تا با ارائه ساختارها و الگوهای استاندارد، کار خود را ساده‌تر و سریع‌تر انجام دهند.

ویژگی‌های اصلی فریم‌ورک‌ها:

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

نمونه‌هایی از فریم‌ورک‌ها:

  • فریم‌ورک‌های وب: مانند Django برای پایتون، Laravel برای PHP، و Ruby on Rails برای روبی.
  • فریم‌ورک‌های رابط کاربری: مانند React و Angular برای جاوااسکریپت.
  • فریم‌ورک‌های موبایل: مانند React Native و Flutter.

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

16. تفاوت فرانت‌اند و بک‌اند

فرانت‌اند (Front-End) و بک‌اند (Back-End) دو بخش اصلی توسعه وب هستند که هر کدام وظایف و تکنولوژی‌های متفاوتی دارند:

فرانت‌اند (Front-End)

  • تعریف: بخش قابل مشاهده و تعامل کاربران با وب‌سایت یا برنامه وب.
  • وظایف اصلی: طراحی و ایجاد رابط کاربری، اطمینان از تجربه کاربری (UX) خوب و پاسخگویی (responsive) سایت برای دستگاه‌های مختلف.
  • تکنولوژی‌ها: HTML (برای ساختار صفحات)، CSS (برای طراحی و ظاهر)، جاوااسکریپت (برای تعاملات و دینامیک بودن صفحات).
  • ابزارها و فریم‌ورک‌ها: React، Angular، Vue.js، Bootstrap، SASS.

بک‌اند (Back-End)

  • تعریف: بخش سروری و پشت صحنه که کاربران به طور مستقیم با آن تعامل ندارند.
  • وظایف اصلی: مدیریت منطق سرور، تعامل با پایگاه داده، مدیریت احراز هویت و ذخیره‌سازی داده‌ها.
  • تکنولوژی‌ها: زبان‌های برنامه‌نویسی مانند Python، Java، Ruby، PHP، Node.js.
  • پایگاه‌های داده: MySQL، PostgreSQL، MongoDB، SQLite.
  • فریم‌ورک‌ها و کتابخانه‌ها: Django، Flask، Spring Boot، Express.js، Laravel.

تفاوت‌ها

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

17. جنگو چیست؟

جنگو (Django) یک فریم‌ورک وب سطح بالا برای زبان برنامه‌نویسی پایتون است که طراحی شده است تا توسعه وب را سریع‌تر، ساده‌تر و امن‌تر کند. جنگو با پیروی از فلسفه "باتری‌ها گنجانده شده‌اند" (batteries included)، بسیاری از امکانات و ابزارهای مورد نیاز برای توسعه وب را به صورت پیش‌فرض فراهم می‌کند.

ویژگی‌های کلیدی جنگو

  1. توسعه سریع: جنگو با فراهم کردن ابزارها و الگوهای رایج، توسعه وب را سریع‌تر می‌کند.
  2. امنیت: جنگو با تمرکز بر امنیت، از مشکلات رایج امنیتی مانند تزریق SQL، حملات XSS و CSRF جلوگیری می‌کند.
  3. مقیاس‌پذیری: جنگو به گونه‌ای طراحی شده است که می‌تواند بار سنگین ترافیک و داده‌ها را مدیریت کند.
  4. انعطاف‌پذیری: جنگو به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از افزونه‌ها و برنامه‌های سفارشی، پروژه‌های خود را به دلخواه گسترش دهند.
  5. پشتیبانی از ORM: جنگو یک سیستم مدیریت پایگاه داده به نام ORM (Object-Relational Mapping) ارائه می‌دهد که به توسعه‌دهندگان اجازه می‌دهد تا با پایگاه داده‌ها به روشی شی‌گرا کار کنند.
  6. مدیریت آسان: جنگو یک رابط کاربری مدیریتی داخلی دارد که به توسعه‌دهندگان اجازه می‌دهد تا به راحتی محتوا و داده‌ها را مدیریت کنند.

کاربردهای جنگو

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

نمونه‌هایی از پروژه‌های معروف با جنگو

  • Instagram: یکی از بزرگترین شبکه‌های اجتماعی دنیا.
  • Pinterest: یک پلتفرم به اشتراک‌گذاری تصاویر و ایده‌ها.
  • Disqus: یک سرویس مدیریت نظرات برای وب‌سایت‌ها.

18. معماری MVT و ساختار جنگو (مهم)

  • Model-View-Template (MVT): الگوی معماری مورد استفاده در جنگو که شامل سه جزء است:

  • Model: مدیریت داده‌ها و تعامل با پایگاه داده. مثال: یک مدل کاربر که اطلاعات کاربر را ذخیره می‌کند.

  • View: منطق تجاری و پردازش درخواست‌ها. مثال: تابعی که درخواست‌های کاربر را پردازش و داده‌ها را به قالب‌ها ارسال می‌کند.
  • Template: قالب‌های HTML که نحوه نمایش داده‌ها به کاربر را تعیین می‌کند. مثال: فایل HTML که داده‌های کاربران را به صورت جدولی نمایش می‌دهد.