فهرست
واژهنامه اصطلاحات تخصصی
در این جدول ابتدا توضیح فارسی هر مفهوم آمده است؛ معادل انگلیسی آن در ستون کناری برای مراجعه هنگام خواندن کد و مستندات درج شده است.
| توضیح | اصطلاح |
|---|---|
| تأیید هویت کاربر؛ معمولاً با نام کاربری و رمز عبور یا نشست (session). | authentication |
| تعیین اینکه کاربر احراز هویتشده به چه منابعی دسترسی دارد (مثلاً فقط صاحب snippet بتواند آن را حذف کند). | authorization |
| الگوریتم درهمسازی (hash) رمز عبور با salt؛ برای ذخیره امن رمزها در پایگاه داده بهکار میرود. | bcrypt |
| مجموعهٔ تمام کد منبع یک پروژه، شامل بستهها، قالبها و فایلهای پیکربندی. | codebase |
| حملهای که سایت دیگری کاربر لاگینشده را وادار میکند درخواست ناخواسته به برنامهٔ شما بفرستد. | CSRF |
| حالت توسعه که جزئیات خطا (مثل stack trace) را در پاسخ HTTP نشان میدهد؛ در production معمولاً خاموش است. | debug |
| تستی که کل جریان کاربر را از درخواست HTTP تا پاسخ (و گاهی پایگاه داده) پوشش میدهد. | end-to-end |
| چارچوبی که ساختار، ابزارها و قراردادهای زیادی را از پیش فراهم میکند؛ این کتاب عمداً بدون framework پیش میرود. | framework |
| خاموش کردن سرور بهگونهای که اتصالهای باز تمام شوند و درخواستهای در حال پردازش فرصت اتمام داشته باشند. | graceful shutdown |
کدی که یک درخواست HTTP را میگیرد و پاسخ میسازد؛ در Go معمولاً رابط http.Handler را برآورده میکند. |
handler |
| پروتکل استاندارد ارتباط مرورگر و سرور؛ متد، مسیر، هدر و بدنهٔ پیام را تعریف میکند. | HTTP |
HTTP رمزنگاریشده با TLS؛ آدرسها معمولاً با https:// شروع میشوند. |
HTTPS |
| در Go، مجموعهای از متدها که یک نوع باید پیادهسازی کند؛ پلی بین انواع مختلف بدون وابستگی مستقیم. | interface |
| لایهای از کد که قبل یا بعد از handler اصلی اجرا میشود (مثلاً لاگ، احراز هویت، بازیابی از panic). | middleware |
| پیادهسازی ساختگی از وابستگی (مثلاً پایگاه داده) برای تست بدون سرویس واقعی. | mock |
| الگوی URL ثبتشده در مسیریاب که به یک handler مشخص وصل میشود. | route |
| انتخاب handler مناسب بر اساس متد HTTP و مسیر (و گاهی host) هر درخواست. | routing |
| ذخیرهٔ وضعیت کاربر بین درخواستهای جداگانه HTTP (که خودش بیحالت است). | session |
| زبان پرسوجوی ساختاریافته برای خواندن و نوشتن داده در پایگاههای رابطهای. | SQL |
| نوع مرکب در Go؛ فیلدهای مرتبط را در یک واحد نامگذاریشده گروه میکند. | struct |
| فایل متنی با جاینگهدارها که با دادهٔ پویا به HTML (یا خروجی دیگر) تبدیل میشود. | template / templating |
| لایهٔ امنیتی که ارتباط HTTP را رمزنگاری میکند؛ پایهٔ HTTPS. | TLS |
| تست یک تابع، متد یا بخش کوچک بهتنهایی، با وابستگیهای کنترلشده. | unit test |
| تست همزمانی چند لایه (مثلاً handler + مدل + پایگاه داده واقعی یا تست). | integration test |
| درصد خطوط یا شاخههای کدی که حداقل یک بار در اجرای تستها دیده شدهاند. | test coverage |
| پیام یکبارمصرف (مثلاً «با موفقیت ذخیره شد») که بعد از redirect در صفحهٔ بعد نشان داده میشود. | flash message |
| مقدار تصادفی مخفی در فرم که سرور آن را با مقدار session مقایسه میکند تا CSRF سختتر شود. | CSRF token |
| دستور SQL از پیش آماده که مقادیر را جدا bind میکند؛ خط دفاع در برابر SQL injection. | prepared statement |
| چند عملیات پایگاه داده که یا همه با هم commit میشوند یا هیچکدام (rollback). | transaction |
| وارد کردن وابستگیها (logger، DB و …) از بیرون بهجای ساختن مستقیم داخل کامپوننت. | dependency injection |
| تزریق اسکریپت مخرب به صفحهٔ وب تا در مرورگر قربانی اجرا شود. | XSS |
لایهٔ تبدیل بین دو نوع؛ مثلاً http.HandlerFunc تابع معمولی را به http.Handler تبدیل میکند. |
adapter |
| کاربری که هویتش تأیید شده و معمولاً نشست فعال دارد. | authenticated |
| کلید session که شناسهٔ کاربر لاگینشده را نگه میدارد؛ در این پروژه برای مجوزدهی استفاده میشود. | authenticatedUserID |
| فایل اجرایی کامپایلشدهٔ Go؛ معمولاً وابستگی runtime را در خود ندارد (با CGO متفاوت است). | binary |
| ستون یا نوع داده برای ذخیرهٔ دادهٔ باینری حجیم (مثلاً تصویر) در پایگاه داده. | BLOB |
| فرآیند کامپایل و بستهبندی برنامه برای اجرا یا استقرار. | build |
| نگهداشتن نسخهٔ آمادهٔ داده یا خروجی در حافظه برای پاسخ سریعتر به درخواستهای بعدی. | cache |
| مجموعهٔ الگوریتمهای TLS که سرور و کلاینت برای یک اتصال امن توافق میکنند. | cipher suite |
| رابط متنی ترمینال برای اجرای دستورات و برنامهها. | CLI |
| تابعی که به متغیرهای محدودهٔ بیرونی خود دسترسی دارد، حتی بعد از خروج از آن محدوده. | closure |
پارامتر اختیاری هنگام اجرای برنامه از خط فرمان (مثلاً -addr=:4000). |
command-line flag |
| تبدیل کد Go به دستورالعمل قابل اجرا توسط ماشین. | compile |
نوعی در Go که میتوان با == و != مقایسهاش کرد (برخلاف slice و map). |
comparable |
| مجموعهٔ اتصالهای باز و قابل استفادهٔ مجدد به پایگاه داده؛ از باز و بستن مکرر جلوگیری میکند. | connection pool |
هدر HTTP که نوع بدنهٔ پاسخ را اعلام میکند (مثلاً text/html). |
Content-Type |
کلید سفارشی برای ذخیرهٔ امن داده در context.Context هر درخواست، بدون تداخل با کلیدهای دیگر. |
context key |
| دادهٔ کوچک که سرور در مرورگر ذخیره میکند و در درخواستهای بعدی برمیگرداند. | cookie |
| کتابخانهای که برنامهٔ Go را به یک سامانهٔ پایگاه داده (مثلاً MySQL) وصل میکند. | database driver |
| نصب و راهاندازی نسخهٔ برنامه روی سرور واقعی برای کاربران نهایی. | deployment |
| کتابخانه، ماژول یا سرویسی که کد شما برای کار به آن نیاز دارد. | dependency |
| محیطی برای نوشتن و آزمایش کد با تنظیمات شلتر (مثلاً نمایش خطای کامل). | development |
| رشتهٔ اتصال به پایگاه داده (آدرس، نام DB، کاربر و …) که درایور از آن استفاده میکند. | DSN |
قرار دادن فایلهای استاتیک یا قالب داخل باینری با //go:embed تا بدون کپی جدا روی دیسک سرو شوند. |
embed |
| قرار دادن یک نوع داخل نوع دیگر در Go تا متدها و فیلدها بهارث بروند. | embedding |
| مقدار پیکربندی در سطح سیستمعامل که برنامه هنگام اجرا میخواند. | environment variable |
برخورد با خطاها بهصورت صریح (برگرداندن error، لاگ، پاسخ HTTP مناسب) بهجای نادیده گرفتن. |
error handling |
| تبدیل کاراکترهای ویژه به شکل امن برای HTML یا SQL تا تزریق محتوا سخت شود. | escaping |
سرو کردن فایلهای ثابت (CSS، JS، تصویر) از دیسک یا embed؛ در Go معمولاً http.FileServer. |
file server |
| همان مفهوم flash message؛ دادهٔ موقت نشست که فقط یک بار خوانده میشود. | flash |
خواندن فیلدهای ارسالشده از فرم HTML (application/x-www-form-urlencoded یا multipart). |
form parsing |
| بررسی صحت و کفایت دادهٔ ورودی فرم قبل از ذخیره یا پردازش. | form validation |
نوشتن توابع و انواعی که با چند نوع داده کار میکنند (مثلاً Equal[T]). |
generics |
| سریالسازی دادهٔ Go با فرمت باینری داخلی؛ در session manager این کتاب استفاده میشود. | gob-encoded |
| واحد اجرای سبکوزن Go؛ سرور HTTP هر درخواست را معمولاً در goroutine جدا پردازش میکند. | goroutine |
| تابع کوچک مشترک برای کار تکراری (مثلاً رندر قالب یا ارسال خطای HTTP). | helper |
| حداکثر مدت بیکاری یک اتصال قبل از بسته شدن توسط سرور. | IdleTimeout |
عملی که اجرای چندبارهٔ آن نتیجهٔ اضافه نمیدهد؛ مثلاً GET معمولاً idempotent است، POST اغلب نیست. |
idempotent |
| ابزاری برای ثبت رویدادها و خطاها (متنی یا ساختاریافته). | logger |
| سقف اندازهٔ هدرهای HTTP یک درخواست؛ محدودیت در برابر حملات مصرف حافظه. | MaxHeaderBytes |
| تغییر کنترلشدهٔ طرح جداول پایگاه داده (افزودن ستون، ایندکس و …) همراه با نسخهبندی. | migration |
واحد وابستگی و نسخهبندی در Go؛ با go.mod تعریف میشود. |
module |
مقدار «نامشخص» یا خالی در SQL؛ در Go اغلب با sql.Null* نمایش داده میشود. |
NULL |
| دایرکتوری کد Go با یک نام import مشترک؛ واحد سازماندهی در سطح زبان. | package |
| خطای غیرقابل بازیابی در Go که اگر handle نشود برنامه را متوقف میکند. | panic |
| تبدیل دادهٔ خام (رشته، بایت، فرم) به ساختار قابل استفاده در برنامه. | parse |
جاینگهدار ? در SQL که مقدار واقعی بعداً بهصورت امن bind میشود. |
placeholder parameter |
| بعد از ارسال موفق فرم با POST، redirect به GET تا refresh دوباره فرم را ارسال نکند. | Post-Redirect-Get |
| محیط زندهای که کاربران واقعی از برنامه استفاده میکنند؛ تنظیمات امنتر و خطای کمتر. | production |
| ابزار Go برای یافتن دسترسی همزمان ناامن به داده از چند goroutine. | race detector |
| حداکثر زمان خواندن هدر HTTP قبل از قطع اتصال. | ReadHeaderTimeout |
| حداکثر زمان خواندن کل درخواست (هدر و بدنه). | ReadTimeout |
| پاسخ HTTP که مرورگر را به URL دیگری میبرد (کدهای 3xx). | redirect |
| متغیر session برای ذخیرهٔ مسیر بازگشت کاربر بعد از ورود موفق. | redirectPathAfterLogin |
| اجرای قالب با داده و تولید HTML (یا خروجی نهایی) برای ارسال به کاربر. | render |
| فضای مخصوص هر درخواست HTTP برای ذخیرهٔ داده (مثلاً وضعیت احراز هویت) در طول پردازش. | request context |
| فیلدهای متاداده در پاسخ HTTP (نوع محتوا، کوکی تنظیمشده، کد وضعیت و …). | response header |
سبک API که منابع را با URL و متدهای HTTP (GET, POST, …) مدل میکند. |
RESTful |
| هنگامی که برنامه در حال اجراست (برخلاف زمان کامپایل). | runtime |
| ویژگی کوکی که ارسال آن در درخواست cross-site را محدود میکند؛ کمک به دفاع CSRF. | SameSite |
| مسیریاب HTTP در Go؛ درخواست را بر اساس متد و مسیر به handler مناسب میفرستد. | servemux |
| کوکی حاوی شناسهٔ نشست که سرور کاربر را بین درخواستها میشناسد. | session cookie |
| شناسهٔ یکتای هر نشست در سمت سرور یا کوکی. | session ID |
| لایهٔ مدیریت ایجاد، خواندن، بهروزرسانی و حذف نشستها (در این کتاب با scs). | session manager |
| مقدار تصادفی غیرقابل حدس برای شناسایی امن نشست. | session token |
| حملهٔ DoS که اتصال را با ارسال آهستهٔ هدر باز نگه میدارد تا منابع سرور تمام شود. | Slowloris |
| تزریق دستور SQL مخرب از طریق ورودی کاربر؛ با prepared statement و escaping کاهش مییابد. | SQL injection |
| فهرست توابع فراخوانیشده تا محل خطا؛ در حالت debug به کاربر نشان داده میشود. | stack trace |
بررسی کد بدون اجرا (مثلاً go vet) برای یافتن اشکالهای رایج. |
static analysis |
| فایلهایی که برای هر کاربر یکساناند: CSS، JavaScript، تصویر و فونت. | static files |
| عدد سهرقمی در پاسخ HTTP (مثلاً 200 موفق، 404 پیدا نشد، 500 خطای سرور). | status code |
| لاگ با فیلدهای مشخص (سطح، زمان، پیام) که برای جستجو و تحلیل مناسبتر است. | structured logging |
تست تو در تو داخل یک تابع تست با t.Run؛ خروجی و شکست جداگانه دارند. |
sub-test |
| نوشتن تست بهصورت جدول ورودی/خروجی مورد انتظار و حلقه روی سطرها. | table-driven tests |
| نوشتن تست قبل از پیادهسازی ویژگی و سپس کدنویسی تا تست سبز شود. | TDD |
| نگهداشتن قالبهای کامپایلشده در حافظه بهجای parse کردن از دیسک در هر درخواست. | template cache |
بررسی در تست که نتیجه با انتظار مطابقت دارد (مثلاً Equal()). |
test assertions |
اجرای کد برای اطمینان از رفتار صحیح؛ در Go با بستهٔ testing. |
testing |
| قطع عملیات اگر در مدت مشخصی تمام نشود؛ برای جلوگیری از اتصالهای معلق. | timeout |
استخراج نوع مشخص از مقدار interface در Go (مثلاً v.(string)). |
type assertion |
| کاربری که هنوز لاگین نکرده یا نشست معتبر ندارد. | unauthenticated |
| کامپوننت یا تابعی که قوانین اعتبارسنجی ورودی را اعمال میکند. | validator |
بخش متغیر مسیر URL (مثلاً {id}) که مقدارش در handler خوانده میشود. |
wildcard |
| حداکثر زمان نوشتن پاسخ HTTP به کلاینت. | WriteTimeout |
| تابعی که تابع دیگر را میپوشاند تا رفتار اضافه (لاگ، احراز هویت و …) داشته باشد. | wrapper |