Let's Go › فهرست
قبلی · فهرست · بعدی

فهرست

واژه‌نامه اصطلاحات تخصصی

در این جدول ابتدا توضیح فارسی هر مفهوم آمده است؛ معادل انگلیسی آن در ستون کناری برای مراجعه هنگام خواندن کد و مستندات درج شده است.

توضیح اصطلاح
تأیید هویت کاربر؛ معمولاً با نام کاربری و رمز عبور یا نشست (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