مقدمه
در این کتاب ما یک برنامه وب (Web Application) به نام Snippetbox میسازیم که به کاربران اجازه میدهد تا قطعات متن را کپی و به اشتراک بگذارند - شبیه به Pastebin یا Gists گیتهاب. در پایان ساخت، برنامه به این شکل خواهد بود:
برنامه ما با یک صفحه وب ساده شروع میشود. سپس در هر فصل آن را گام به گام توسعه میدهیم تا کاربران بتوانند از طریق برنامه، قطعات متن را ذخیره و مشاهده کنند. این مسیر ما را از موضوعاتی مانند ساختار پروژه، مسیریابی درخواستها (Request Routing)، کار با پایگاه داده (Database)، پردازش فرمها (Form Processing) و نمایش امن دادههای پویا (Dynamic Data Display) عبور میدهد.
سپس در ادامه کتاب، حسابهای کاربری را اضافه میکنیم و برنامه را محدود میکنیم تا فقط کاربران ثبتنام شده بتوانند قطعات متن ایجاد کنند. این ما را با موضوعات پیشرفتهتری مانند پیکربندی سرور HTTPS، مدیریت جلسات (Session Management)، احراز هویت کاربران (User Authentication) و middleware آشنا میکند.
قوانین و قراردادها
بلوکهای کد در این کتاب با پسزمینه نقرهای نمایش داده میشوند، مانند مثال زیر. اگر یک بلوک کد به خصوص طولانی باشد، قسمتهای غیر مرتبط ممکن است با سه نقطه جایگزین شوند. برای سهولت در دنبال کردن، اکثر بلوکهای کد یک نوار عنوان در بالا دارند که نام فایل حاوی کد را نشان میدهد. مانند این:
package main ... // Indicates that some existing code has been omitted. func sayHello() { fmt.Println("Hello world!") }
دستورات ترمینال (Terminal Commands) با پسزمینه سیاه نمایش داده میشوند و با علامت دلار شروع میشوند. این دستورات باید در هر سیستم عامل مبتنی بر یونیکس، از جمله مک OSX و لینوکس کار کنند. خروجی نمونه به رنگ نقرهای زیر دستور نمایش داده میشود، مانند این:
$ echo "Hello world!" Hello world!
اگر از ویندوز استفاده میکنید، باید دستور را با معادل DOS جایگزین کنید یا عملیات را از طریق رابط گرافیکی معمول ویندوز انجام دهید.
لطفاً توجه داشته باشید که تاریخها و برچسبهای زمانی نشان داده شده در تصاویر و خروجی نمونه از دستورات فقط جنبه نمایشی دارند. آنها لزوماً با یکدیگر هماهنگ نیستند یا به صورت زمانی در طول کتاب پیشرفت نمیکنند.
برخی از فصلهای این کتاب با بخش اطلاعات اضافی به پایان میرسند. این بخشها شامل اطلاعاتی هستند که برای ساخت برنامه ما مرتبط نیستند، اما همچنان مهم (یا گاهی اوقات، فقط جالب) هستند که بدانید. اگر در Go بسیار تازهکار هستید، ممکن است بخواهید این قسمتها را رد کنید و بعداً به آنها برگردید.
واژهنامه اصطلاحات فنی
| اصطلاح فارسی | معادل انگلیسی | توضیح |
|---|---|---|
| برنامه وب | Web Application | برنامهای که از طریق مرورگر وب قابل دسترسی است و با کاربران از طریق پروتکل HTTP ارتباط برقرار میکند |
| مسیریابی درخواستها | Request Routing | فرآیند هدایت درخواستهای HTTP به توابع پردازشگر مناسب بر اساس URL و روش درخواست |
| پایگاه داده | Database | سیستم ذخیرهسازی ساختاریافته برای نگهداری و بازیابی دادهها |
| پردازش فرمها | Form Processing | فرآیند دریافت، اعتبارسنجی و پردازش دادههای ارسال شده توسط کاربر از طریق فرمهای HTML |
| دادههای پویا | Dynamic Data | دادههایی که به صورت پویا در زمان اجرا تولید میشوند و در قالب HTML به کاربر نمایش داده میشوند |
| مدیریت جلسات | Session Management | فرآیند نگهداری و مدیریت اطلاعات کاربر در طول مدت تعامل با برنامه وب |
| احراز هویت کاربران | User Authentication | فرآیند تأیید هویت کاربران و کنترل دسترسی آنها به بخشهای مختلف برنامه |
| Middleware | Middleware | لایههای نرمافزاری که بین درخواست HTTP و پردازشگر نهایی قرار میگیرند و وظایف مشترک را انجام میدهند |