Skip to content

Commit 89dbaa7

Browse files
committed
fix: section and index note
1 parent cb5b8ce commit 89dbaa7

File tree

10 files changed

+12
-14
lines changed

10 files changed

+12
-14
lines changed

app/desktop/book.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
//go:embed content
2222
var Book embed.FS
2323

24-
const VERSION = "6.1.2"
24+
const VERSION = "6.1.3"
2525

2626
func main() {
2727
port := flag.Int64("port", 8080, "port for listen and serve example 8080")

content/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ a {
195195
این کتاب برای کسانی که تازه می‌خواهند زبان گو را یادبگیرند یا اینکه افراد باتجربه در زبان گو هستند، مناسب می‌باشد و همچنین اگر قصد دارید زبان گو را به عنوان استک جدید شروع کنید، این کتاب یک راهنمای کلی برای یادگیری زبان گو خواهد بود.
196196

197197
{{< hint info >}}
198-
این کتاب تقدیم می‌شود به [#جادی_میرمیرانی](https://jadi.net/) که فعال حوزهٔ تکنولوژی‌های جدید و جامعهٔ نرم‌افزار آزاد و متن‌باز است.
198+
این کتاب تقدیم می‌شود به [#جادی_میرمیرانی](https://jadi.net/)، فعال در حوزهٔ فناوری‌های نوین و جامعهٔ نرم‌افزارهای آزاد و متن‌باز. همچنین یادی کنیم از [مرحوم صابر راستی‌کردار](https://rastikerdar.github.io/vazirmatn/fa)، طراح فونت وزیر، که از اعضای فعال جامعهٔ نرم‌افزارهای آزاد و متن‌باز بود.
199199
{{< /hint >}}
200200

201201
<div class="content">

content/chapter 4/4.24-tracing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: 4.24 آموزش tracing
33
slug: tracing
4-
weight: 7023
4+
weight: 7028
55
---
66

77
در این فصل، این مورد را یاد خواهیم گرفت که چگونه یک برنامه در حال اجرا را ردیابی کنیم و آن را با ابزار ردیابی مشاهده کنیم. در این حالت با استفاده از کتابخانه استاندارد، یک ردیابی ایجاد خواهیم کرد.

content/chapter 4/4.25-profiling.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: 4.25 آموزش profiling
33
slug: profiling
4-
weight: 7024
4+
weight: 7029
55
---
66

77
پروفایلینگ یک تکنیک مفید برای شناسایی {{< tooltip text="گلوگاه‌های" note="bottlenecks" >}} {{< tooltip text="عملکرد" note="performance" >}}، بررسی مصرف حافظه و به دست آوردن بینش درباره سربار جمع‌آوری زباله (Garbage Collection) و موارد دیگر است. اکوسیستم Go ابزارهای فوق‌العاده‌ای برای این منظور ارائه می‌دهد. امکان فعال و غیرفعال کردن پروفایلینگ به ویژه هنگام رفع اشکال در یک برنامه CLI نوشته شده با Go بسیار مفید است.
@@ -101,8 +101,6 @@ func add(a, b int) int {
101101

102102
شاید در این مرحله این سوال برای شما پیش بیاید که چه اتفاقی می‌افتد اگر فضای پشته تمام شود. در زبان‌هایی مانند C، این موضوع باعث خطای سرریز پشته (stack overflow) می‌شود. اما در Go، این مشکل به صورت خودکار با ایجاد یک نسخه کپی از پشته که دو برابر بزرگتر است، مدیریت می‌شود. این قابلیت به goroutineها اجازه می‌دهد که با پشته‌های بسیار کوچک، معمولاً 2 کیلوبایت، شروع کنند و یکی از عوامل اصلی مقیاس‌پذیری بیشتر goroutineها نسبت به نخ‌های سیستم‌عامل همین موضوع است.
103103

104-
یکی دیگر از جنبه‌های پشته، نحوه استفاده از آن در ایجاد ردیابی پشته (stack trace) است. این موضوع کمی پیشرفته‌تر است، اما اگر علاقه‌مند هستید، می‌توانید به مستندات «ردیابی پشته در Go» که در این مخزن موجود است، مراجعه کنید.
105-
106104
#### 4.25.1.2.2 هیپ (Heap)
107105

108106
تخصیص‌های پشته عالی هستند، اما در بسیاری از موارد Go نمی‌تواند از آن‌ها استفاده کند. رایج‌ترین حالت زمانی است که باید اشاره‌گری به یک متغیر محلی از یک تابع بازگردانده شود. این موضوع را می‌توان در نسخه اصلاح‌شده مثال تابع `add()` که در بالا آمد، مشاهده کرد:
@@ -134,7 +132,7 @@ Go این مشکل را با استفاده از جمع‌آوری زباله د
134132
- **بازاستفاده (Reuse)**: تخصیص‌های هیپ را دوباره استفاده کنید به جای اینکه آن‌ها را با تخصیص‌های جدید جایگزین کنید.
135133
- **بازیافت (Recycle)**: برخی از تخصیص‌های هیپ غیرقابل اجتناب هستند. بگذارید GC آن‌ها را بازیافت کند و بر روی مسائل دیگر تمرکز کنید.
136134

137-
همانند مدل ذهنی قبلی در این راهنما، همه موارد بالا نمایی به شدت ساده شده از واقعیت است. اما امیدوارم که این مدل به اندازه کافی مفید باشد تا باقی‌مانده این راهنما را درک کنید و شما را به مطالعه مقالات بیشتری در این زمینه ترغیب کند. یکی از مقالاتی که حتماً باید بخوانید، مقاله «به Go رسیدن: سفر جمع‌آوری زباله Go» است که ایده خوبی از پیشرفت‌های GC Go در طول سال‌ها و سرعت بهبود آن ارائه می‌دهد.
135+
همانند مدل ذهنی قبلی در این راهنما، همه موارد بالا نمایی به شدت ساده شده از واقعیت است. اما امیدوارم که این مدل به اندازه کافی مفید باشد تا باقی‌مانده این راهنما را درک کنید و شما را به مطالعه مقالات بیشتری در این زمینه ترغیب کند.
138136

139137
## 4.25.2 درک عمیق پروفایلرهای (Profilers) گو
140138

@@ -159,7 +157,7 @@ Go این مشکل را با استفاده از جمع‌آوری زباله د
159157

160158
پروفایلر CPU در Go می‌تواند به شما کمک کند تا قسمت‌هایی از کد خود را که زمان CPU زیادی مصرف می‌کنند، شناسایی کنید.
161159

162-
⚠️ توجه داشته باشید که زمان CPU معمولاً با زمان واقعی که کاربران شما تجربه می‌کنند (که به آن تاخیر می‌گویند) متفاوت است. به عنوان مثال، یک درخواست HTTP معمولاً ممکن است ۱۰۰ میلی‌ثانیه طول بکشد، اما تنها ۵ میلی‌ثانیه از زمان CPU را مصرف کند و ۹۵ میلی‌ثانیه را در انتظار پاسخ از پایگاه داده بگذراند. همچنین ممکن است یک درخواست ۱۰۰ میلی‌ثانیه طول بکشد، اما ۲۰۰ میلی‌ثانیه از زمان CPU را صرف کند اگر دو goroutine به طور همزمان کارهای پردازشی سنگین انجام دهند. اگر این موضوع برای شما گیج‌کننده است، لطفاً به بخش **برنامه‌ریز goroutine** مراجعه کنید.
160+
⚠️ توجه داشته باشید که زمان CPU معمولاً با زمان واقعی که کاربران شما تجربه می‌کنند (که به آن تاخیر می‌گویند) متفاوت است. به عنوان مثال، یک درخواست HTTP معمولاً ممکن است ۱۰۰ میلی‌ثانیه طول بکشد، اما تنها ۵ میلی‌ثانیه از زمان CPU را مصرف کند و ۹۵ میلی‌ثانیه را در انتظار پاسخ از پایگاه داده بگذراند. همچنین ممکن است یک درخواست ۱۰۰ میلی‌ثانیه طول بکشد، اما ۲۰۰ میلی‌ثانیه از زمان CPU را صرف کند اگر دو goroutine به طور همزمان کارهای پردازشی سنگین انجام دهند. اگر این موضوع برای شما گیج‌کننده است.
163161

164162
شما می‌توانید پروفایلر CPU را از طریق APIهای مختلف کنترل کنید:
165163

content/chapter 4/oop/4.23.1-encapsulation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: '4.23.1 کپسوله سازی (Encapsulation)'
33
slug: go-encapsulation
4-
weight: 7951
4+
weight: 7024
55
---
66

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

content/chapter 4/oop/4.23.2-inheritance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: '4.22.2 ارث بری'
33
slug: go-inheritance
4-
weight: 7952
4+
weight: 7025
55
---
66

77
در زبان گو ارث بری در واقع type embedding هست با استفاده [type embedding](../../../chapter-2/type-embedding/) می توانید یک type را داخل type دیگری جاسازی کنید و به واسطه type والد قابل دسترس است.

content/chapter 4/oop/4.23.3-polymorphism.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: '4.23.3 پلی مورفیسم (Polymorphism)'
33
slug: go-polymorphism
4-
weight: 7953
4+
weight: 7025
55
---
66

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

content/chapter 4/oop/4.23.4-overriding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: '4.23.4 overriding'
33
slug: go-overriding
4-
weight: 7954
4+
weight: 7026
55
---
66

77
در زبان گو مثل سایر زبان های شی گرا امکان overriding مستقیم یک متد وجود ندارد اما در عوض شما می توانید با استفاده از [type embedding](../../../chapter-2/type-embedding/) و پیاده سازی متد یک اینترفیس این تکنیک را انجام دهید و به متدی که override انجام داده Shadow Method می گویند.

content/chapter 4/oop/4.23.5-abstraction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: '4.23.5 abstraction'
33
slug: go-abstraction
4-
weight: 7955
4+
weight: 7027
55
---
66

77
**Abstraction** (به معنای انتزاع)، فرآیند حذف یا از بین بردن برخی ویژگی‌های غیرضروری یک چیز به‌منظور کاهش، خلاصه‌سازی و به کار بردن آن در مجموعه‌ای از ویژگی‌های ضروری است. در برنامه‌نویسی شیءگرا(OOP)، انتزاع یکی از سه مفهوم اصلی (به همراه مفاهیم Encapsulation و Inheritance) است.

content/chapter 4/oop/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: '4.23 شی گرایی در زبان گو'
3-
weight: 7950
3+
weight: 7023
44
bookCollapseSection: true
55
---
66

0 commit comments

Comments
 (0)