Gopher Academy
3.28K subscribers
899 photos
40 videos
279 files
1.83K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

لینک چنل های ما:
https://linktr.ee/Labdon

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72

ادمین تبلیغات:
@labdon_ads
Download Telegram
Gopher Academy
https://antonz.org/go-concurrency/ antonz.org Gist of Go: Concurrency Interactive book on concurrent programming with many exercises. https://t.me/addlist/KpzXaiSpKENkMGM0
کتاب "Gist of Go: Concurrency"

نوشته آنتون ژیانوف یه منبع تعاملی و کاربردی برای یادگیری برنامه‌نویسی هم‌روند (Concurrency) در زبان گولنگه. این کتاب به جای اینکه فقط مفاهیم تئوری مثل گوروتین‌ها، کانال‌ها و سلکت رو توضیح بده، از طریق تمرین‌های عملی و ساده (که هر کدوم تو یه صفحه جا می‌شن) شما رو از صفر تا تسلط به ابزارهای هم‌روندی گولنگ می‌رسونه. این تمرین‌ها به شکلی طراحی شدن که به سناریوهای واقعی نزدیک باشن و برای برنامه‌نویسایی که با اصول اولیه گولنگ آشنا هستن، عالیه—نیازی به دانش قبلی از هم‌روندی ندارید چون همه‌چیز قدم به قدم آموزش داده می‌شه.



کتاب روی درک عمیق و کاربرد عملی ابزارهای هم‌روندی تمرکز داره و با مثال‌های تعاملی تو مرورگر، یادگیری رو جذاب‌تر می‌کنه. بخش‌هایی مثل گوروتین‌ها، کانال‌ها، پایپ‌لاین‌ها، مدیریت زمان، کانتکست و گروه‌های انتظار رو پوشش می‌ده و هنوز در حال تکمیله (تا حالا ۶ فصل از ۱۲ فصلش منتشر شده). اگه دنبال یه راهنمای جمع‌وجور و متمرکز برای ساخت برنامه‌های مقیاس‌پذیر و کارآمد با گولنگ هستید، این کتاب یه انتخاب قوی و متفاوت نسبت به آموزش‌های معمولیه.


👑 @gopher_academy
🔵 عنوان مقاله
GoChromecast: Discover Devices and Stream Media to Chromecast Devices

🟢 خلاصه مقاله:
مقاله‌ی مورد بحث به بررسی و تشریح ابزاری می‌پردازد که با زبان برنامه‌نویسی Go ساخته شده و برای پیاده‌سازی پروتکل مورد استفاده توسط دستگاه‌های Chromecast طراحی شده است. نویسنده، جزئیات فنی ابزار را توضیح می‌دهد، از جمله چگونگی ارتباط آن با دستگاه‌های Chromecast و نحوه مدیریت داده‌ها و فرمان‌ها بین دستگاه‌ها. همچنین، کاربرد اصلی این ابزار، که توانایی گسترده‌سازی تعاملات میان نرم‌افزار و دستگاه‌های Chromecast را فراهم می‌آورد، مورد تأکید قرار گرفته است. مقاله همچنین به بررسی مزایای استفاده از Go در توسعه چنین ابزارهایی می‌پردازد، که شامل سهولت در نگهداری کد، کارایی بالا و قابلیت انعطاف‌پذیری در مقابل تغییرات است. در نهایت، نویسنده بر اهمیت ادامه توسعه و بهینه‌سازی ابزار تأکید می‌کند تا بتواند پاسخگوی نیازهای در حال تغییر کاربران و تکنولوژی باشد.

🟣لینک مقاله:
https://golangweekly.com/link/166136/web


👑 @gopher_academy
🔵 عنوان مقاله
Minecraft From Scratch: A Simple Go Minecraft Clone

🟢 خلاصه مقاله:
این مقاله به توصیف یک پروژه جذاب می‌پردازد که هدف آن بازآفرینی مناظر بی‌پایان و قابل ناوبری تولیدشده به طور خودکار در بازی Minecraft با استفاده از زبان برنامه نویسی Go و کتابخانۀ گرافیکی OpenGL 4.1 است. برای اتصال برنامه نویسی Go به OpenGL از برندگی go-gl/gl استفاده شده که نیازمند استفاده از cgo (یک ابزار در زبان Go برای اتصال به کتابخانه‌های C) است. این پروژه به توسعه‌دهندگان و طرفداران Minecraft فرصتی می‌دهد تا دانش خود را در زمینه گرافیک کامپیوتری تعمیق بخشند و همچنین با عملکردهای پیچیدۀ ریاضی و الگوریتم‌های تولید پروسیجرال (خودکار) آشنا شوند. این مطالعه می‌تواند درک عمیق‌تری از چالش‌ها و فرصت‌های موجود در توسعه بازی‌های ویدیویی بر پایه تکنولوژی‌های جدید را ارائه دهد.

🟣لینک مقاله:
https://golangweekly.com/link/166130/web


👑 @gopher_academy
بدرود اسکایپ 💐
ادیتور Zed

یه گزینه جذاب و نوظهور برای برنامه‌نویس‌هاست که به خاطر سرعت بالا و طراحی مدرنش حسابی سر زبون‌ها افتاده.

این ادیتور با زبان Rust نوشته شده که باعث می‌شه عملکرد فوق‌العاده‌ای داشته باشه، مخصوصاً نسبت به ادیتور مثل VS Code  هست و گاهی کند به نظر میان.

بریم یه نگاه کلی بهش بندازیم:

نقاط قوت:
- سرعت دیوانه‌وار:
چون از Rust و یه فریم‌ورک رندر GPU-based (به اسم GPUI) استفاده می‌کنه، باز کردن فایل‌ها، تایپ کردن و جابه‌جایی توی کد تقریباً آنی حس می‌شه. برای پروژه‌های بزرگ یا سیستم‌های ضعیف‌تر، این یه مزیت بزرگه.

- همکاری تیمی:
این Zed از همون اول با قابلیت همکاری چندنفره (multiplayer) طراحی شده. می‌تونی با تیمت به‌صورت زنده کد بزنی، چت کنی یا حتی صفحه‌ت رو به اشتراک بذاری—بدون نیاز به افزونه جدا.

- مینیمال و ساده:
رابط کاربریش خلوت و متمرکزه، بدون شلوغی‌های اضافی. برای کسایی که از پیچیدگی VS Code خسته شدن، حس تازگی داره.

- پشتیبانی:
خیلی از ویژگی‌ها (مثل Git، و یا هایلایت سینتکس) به‌صورت پیش‌فرض توش هستن و نیازی به نصب افزونه‌های متعدد نداری.

- اوپن‌سورس:
از سال 2024 به‌صورت متن‌باز دراومده و جامعه می‌تونه به توسعه‌ش کمک کنه.

نقاط ضعف:
- پشتیبانی محدود از سیستم‌عامل‌ها:
فعلاً فقط روی macOS و Linux رسمی کار می‌کنه (هرچند برای Windows هم راه‌حل‌های غیررسمی هست). اگه ویندوزی هستی، ممکنه برات دردسر بشه.😅

- اکوسیستم در حال رشد:
هنوز افزونه‌ها و زبان‌های پشتیبانی‌شده‌ش به اندازه VS Code یا JetBrains گسترده نیستن.
مثلاً اگه زبانی خاص کار می‌کنی، ممکنه LSP مناسبش هنوز کامل نباشه.

- کمبود بعضی ابزارها:
دیباگر داخلی هنوز به بلوغ نرسیده و برای بعضی‌ها یه خلا بزرگه (هرچند دارن روش کار می‌کنن).

- منحنی یادگیری:
اگه عادت به Vim داری، حالت Vim Mode داره، ولی کاملاً شبیه Neovim نیست و ممکنه نیاز به تطبیق داشته باشی.

نظر شخصی: 
به نظرم Zed یه نفس تازه تو دنیای ادیتورهاست. اگه سرعت و همکاری تیمی برات اولویت داره، یا دنبال یه جایگزین سبک‌تر برای VS Code هستی، حتماً ارزش امتحان کردن داره. اما اگه وابسته به اکوسیستم غنی افزونه‌ها یا دیباگینگ پیشرفته هستی، شاید هنوز به بلوغ کافی نرسیده باشه که کاملاً جایگزین ابزارهای اصلیت بشه. شنیدم بعضی‌ها (مثلاً توی پست‌های X) از سرعتش خیلی تعریف کردن و امیدوارن با اضافه شدن دیباگر، حتی از Neovim هم ردش کنن—که ادعای بزرگیه!



👑 @gopher_academy
Please open Telegram to view this post
VIEW IN TELEGRAM
معرفی و بررسی کتاب "Go 101" نوشته‌ی Tapir Liu باشه

این کتاب یه منبع خیلی خوب و جامع برای یادگیری عمیق زبان برنامه‌نویسی گولنگ (Go) هست که هم برای مبتدی‌ها و هم برای برنامه‌نویس‌های باتجربه مناسبه. حالا نظرم رو درباره‌ش خلاصه می‌گم:

نقاط قوت:
- تمرکز روی جزئیات:
برخلاف خیلی از منابع که فقط سطحی به گولنگ می‌پردازن، Go 101 عمیقاً وارد سینتکس، سمنتیک و رفتارهای runtime می‌شه. چیزایی که توی مستندات رسمی گولنگ پیدا نمی‌کنی رو اینجا توضیح می‌ده.

- ساختار روشن:
با یه رویکرد قدم‌به‌قدم، از مفاهیم پایه مثل متغیرها و نوع‌ها شروع می‌کنه و تا موضوعات پیشرفته‌تر مثل هم‌روندی (concurrency) پیش می‌ره.

- به‌روز بودن:
این کتاب مدام آپدیت می‌شه (تا Go 1.24 آماده‌ست) و با تغییرات زبان همگام نگه داشته می‌شه.

- رایگان و اوپن‌سورس:
نسخه آنلاینش تو سایت go101.org در دسترسه و می‌تونی به‌راحتی مطالعه‌ش کنی.

نقاط ضعف:
- ممکنه برای تازه‌کارا سنگین باشه:
اگه هیچ پیش‌زمینه‌ای از گولنگ یا برنامه‌نویسی نداری، شاید اول نیاز به یه منبع ساده‌تر داشته باشی و بعد سراغ این بری.

- تمرکز تئوری:
بیشتر روی "چرا" و "چطور" کار کردن گولنگ تمرکز داره تا پروژه‌های عملی. اگه دنبال آموزش پروژه‌محور باشی، باید کنارش یه منبع دیگه هم داشته باشی.

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


👑 @gopher_academy
توی گولنگ (Go)، فایل go.mod برای مدیریت ماژول‌ها و وابستگی‌ها استفاده می‌شه و یه سری دستورات کلیدی با ابزار go وجود داره که می‌تونی باهاشون این فایل رو مدیریت کنی. در ادامه مهم‌ترین دستورات مرتبط با go.mod رو برات می‌نویسم، همراه با توضیح کوتاه:

---
### 1. شروع یه ماژول جدید
go mod init <module-name>

- کاربرد: یه فایل go.mod جدید توی پروژه‌ت ایجاد می‌کنه و نام ماژول رو مشخص می‌کنه (مثلاً github.com/username/project).
- مثال:
  go mod init github.com/me/myapp

---
### 2. اضافه کردن وابستگی
go get <package-path>

- کاربرد: یه پکیج رو به پروژه اضافه می‌کنه و توی go.mod ثبتش می‌کنه.
- مثال:
  go get github.com/gorilla/mux

- نکته: می‌تونی نسخه خاص رو با @ مشخص کنی (مثل @v1.0.0).
---
### 3. به‌روزرسانی وابستگی‌ها
go get -u

- کاربرد: همه وابستگی‌ها رو به آخرین نسخه‌شون آپدیت می‌کنه و go.mod رو به‌روز می‌کنه.
- مثال:
  go get -u github.com/gorilla/mux

(فقط یه پکیج خاص رو آپدیت می‌کنه)
---
### 4. حذف وابستگی‌های بلااستفاده
go mod tidy

- کاربرد: وابستگی‌هایی که توی کدت استفاده نمی‌شن رو از go.mod پاک می‌کنه و فایل رو مرتب نگه می‌داره.
- مثال:
  go mod tidy

---
### 5. دانلود وابستگی‌ها
go mod download

- کاربرد: همه وابستگی‌های لیست‌شده توی go.mod رو دانلود می‌کنه (بدون تغییر فایل).
- مثال:
  go mod download

---
### 6. مشاهده وابستگی‌ها
go list -m all

- کاربرد: لیست همه ماژول‌ها و نسخه‌هاشون که توی پروژه استفاده شدن رو نشون می‌ده.
- مثال:
  go list -m all

---
### 7. ویرایش دستی go.mod
go mod edit -require=<package@version>

- کاربرد: یه وابستگی خاص رو با نسخه مشخص به go.mod اضافه می‌کنه.
- مثال:
  go mod edit -require=github.com/gorilla/mux@v1.8.0

```bash
go mod edit -replace <old-path>=<new-path>
- **کاربرد:** جایگزین یه ماژول با نسخه دیگه (مثلاً محلی) می‌کنه.
- **مثال:**

bash
go mod edit -replace github.com/old/repo=./local/repo


---

### 8. **بررسی مشکلات**

bash
go mod verify
- **کاربرد:** چک می‌کنه که وابستگی‌های دانلودشده با `go.mod` همخونی دارن و دستکاری نشدن.
- **مثال:**

bash
go mod verify


---

### 9. **تبدیل پروژه قدیمی به ماژول**

bash
go mod init
- **کاربرد:** اگه پروژه‌ت قبلاً بدون ماژول بوده، این دستور یه `go.mod` براش می‌سازه و وابستگی‌ها رو حدس می‌زنه.
- **مثال:**

bash
go mod init
`

---


نکته کاربردی:
معمولاً توی پروژه‌های روزمره، بیشتر با go mod init`، `go get`، و `go mod tidy کار داری. بقیه دستورات بیشتر توی سناریوهای خاص یا دیباگینگ به کار می‌رن.


👑 @gopher_academy
### 10. گراف وابستگی‌ها
go mod graph

- کاربرد: یه گراف متنی از همه وابستگی‌ها و ارتباط بینشون رو نشون می‌ده (ماژول‌ها و نسخه‌هاشون).
- مثال:

  go mod graph

- خروجی: مثلاً main github.com/gorilla/mux@v1.8.0 نشون می‌ده که ماژول اصلی به mux وابسته‌ست.

---

### 11. چرا یه وابستگی استفاده شده
go mod why -m <module>

- کاربرد: توضیح می‌ده که چرا یه ماژول خاص توی پروژه‌ت لازمه و کدوم بخش از کدت بهش وابسته‌ست.
- مثال:

  go mod why -m github.com/gorilla/mux

---

### 12. پاک کردن کش ماژول‌ها
go clean -modcache

- کاربرد: کش محلی ماژول‌ها (توی ~/go/pkg/mod) رو پاک می‌کنه. اگه مشکلی با وابستگی‌ها داری، این می‌تونه کمک کنه.
- مثال:

  go clean -modcache

---

### 13. استفاده از vendor
go mod vendor

- کاربرد: یه پوشه vendor/ توی پروژه‌ت می‌سازه و همه وابستگی‌ها رو اونجا کپی می‌کنه (برای سازگاری با پروژه‌های قدیمی یا بدون اینترنت).
- مثال:

  go mod vendor

- نکته: بعدش می‌تونی با go build -mod=vendor ازش استفاده کنی.

---

### 14. تغییر نسخه Go
go mod edit -go=<version>

- کاربرد: نسخه گولنگی که پروژه‌ت باهاش سازگاره رو توی go.mod تغییر می‌ده.
- مثال:

  go mod edit -go=1.21

---

### 15. حذف یه وابستگی خاص
go mod edit -droprequire=<module>

- کاربرد: یه ماژول خاص رو از لیست وابستگی‌های go.mod حذف می‌کنه (بدون چک کردن استفاده).
- مثال:

  go mod edit -droprequire=github.com/old/repo

---

### 16. حذف جایگزینی (replace)
go mod edit -dropreplace=<old-path>

- کاربرد: یه قانون جایگزینی رو از go.mod پاک می‌کنه.
- مثال:

  go mod edit -dropreplace=github.com/old/repo

---

### 17. اجرا با حالت فقط خواندنی
go build -mod=readonly

- کاربرد: پروژه رو می‌سازه بدون اینکه go.mod یا go.sum رو تغییر بده (برای تست سازگاری).
- مثال:

  go build -mod=readonly

---

### 18. دانلود نسخه خاص بدون تغییر go.mod
go get <module>@<version>

- کاربرد: فقط نسخه خاصی از یه ماژول رو دانلود می‌کنه، ولی اگه توی کدت استفاده نشه، توی go.mod ثبت نمی‌شه (با go mod tidy پاک می‌شه).
- مثال:

  go get github.com/gorilla/mux@v1.7.0

---

جمع‌بندی:
دستورات بالا بیشتر برای مدیریت پیشرفته‌تر یا رفع مشکلات خاص کاربرد دارن. مثلاً go mod graph و go mod why برای دیباگینگ وابستگی‌ها عالی‌ان، یا go mod vendor برای سناریوهای آفلاین. اگه بخوای روزمره کار کنی، همون دستورات قبلی (مثل go get و go mod tidy) کافین، ولی اینا توی پروژه‌های بزرگ یا پیچیده به کار میان.


👑 @gopher_academy
زبان برنامه‌نویسی Go (گولنگ) دارای ۲۶ نوع داده (Type) است که به دسته‌های مختلفی تقسیم می‌شوند. این انواع داده‌ها شامل انواع پایه‌ای، ترکیبی، مرجع و سایر انواع خاص هستند. در ادامه، این ۲۶ نوع داده را به تفکیک دسته‌بندی‌های اصلی بررسی می‌کنیم:

---

### ۱. انواع پایه‌ای (Basic Types):
این انواع داده‌های ساده و اولیه هستند که برای ذخیره مقادیر اساسی مانند اعداد، کاراکترها و مقادیر بولی استفاده می‌شوند.

1. **bool**: نوع داده بولی (true یا false).
2. **string**: نوع داده رشته‌ای (دنباله‌ای از کارint **int**: نوع داده عدد صحیح با اندازه وابسته به پلتفرم (معمولاً ۳۲ یا int8**int8**: نوع داده عدد صحیح ۸ بint16*int16**: نوع داده عدد صحیح ۱۶ بint32*int32**: نوع داده عدد صحیح ۳۲ بint64*int64**: نوع داده عدد صحیح ۶۴ بuint**uint**: نوع داده عدد صحیح بدون علامت با اندازه وابسته به پلتuint8*uint8**: نوع داده عدد صحیح بدون علامت ۸ بیuint16uint16**: نوع داده عدد صحیح بدون علامت ۱۶ بیuint32uint32**: نوع داده عدد صحیح بدون علامت ۳۲ بیuint64uint64**: نوع داده عدد صحیح uintptr۶۴ بیتی.
13. **uintptr**: نوع داده عدد صحیح بدون علامت براbyteآدرس‌هایbyte14. **byte**: معادل uint8، برایruneاده‌های rune15. **rune**: معادل int32، برای ذخfloat32های Ufloat32 **float32**: نfloat64اری ۳float64 **float64**: نوع داده اعشاری ۶complex64*complex64**: نوع داده مختلط با بخش‌های واقعی و موهومی float32.
19. **complex128**: نوع داده مختلط با بخش‌های واقعی و موهومی float64.

---

### ۲. انواع ترکیبی (Composite Types):
این انواع داده‌هایی هستند که از ترکیب چندین نوع داده پایه‌ای یا آرایه (Array)رایه (Array)0. آرایه (Array): مجموعه‌ای از عناصر با نوع یکسان و اندازه ثابت.
   - مثال: [3]int (آربرش (Slice)ز نوع int).

21. برش (Slice): مجموعه‌ای از عناصر با نوع یکسان و اندازه پویا.
   - مثال: []int (برش از نوع int).

22. ساختار (Struct): مجموعه‌ای از فیلدها با انواع مختلف.
   - مثال:
   
     type Person struct {
         Name string
         Age  int
     }
    

23. نقشه (Map): مجموعه‌ای از جفت‌های کلید-مقدار.
   - مثال: map[string]int (نقشه با کلیدهای string و مقادیر int).

---

### ۳. انواع مرجع (Reference Types):
این انواع داده‌هایی هاشاره‌گر (Pointer)Pointer)می‌کنند.

24. اشاره‌گر (Pointer): اشاره‌گر به یک مکان در حافظه.
   - مثال: *int (اشاکانال (Channel)ز نوع int).

25. کانال (Channel): برای ارتباط بین گوروتین‌ها (goroutines).
   - مثال: chan int (کاناانواع خاص (Special Types)int).

---

### ۴. انواع خاص (Special Types):
این انواع داده‌هایی هتابع (Function)unction)ستفاده می‌شوند.

26. تابع (Function): نوع داده‌ای که یک تابع را نشان می‌دهد.
   - مثال: func(int, int) int (تابعی که دو پارامتر int می‌گیرد و یک int برمی‌گرداند).

---

### جمع‌بندی:
زبان Go دارای انواع پایه‌ای پایه‌ایی زیر تقسیم می‌شوند:
- انواع پایه‌ای: شامل bool, string, انواع عددی (int, float, complex), byte, rune و uintptr.
- انواع ترکیبی: شانواع مرجعبرش‌ها، ساختارها و نانواع خاصنواع خاص شامل اشاره‌گرها و کانال‌ها.
- انواع خاص: شامل توابع.

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


👑 @gopher_academy
🔵 عنوان مقاله
Testing Concurrent Code with testing/synctest

🟢 خلاصه مقاله:
مقاله‌ای که مورد نظر شماست، به بررسی یکی از ویژگی‌های قدرتمند زبان برنامه‌نویسی Go، یعنی همزمانی (Concurrency) پرداخته است. نویسنده بیان می‌کند که با وجود قدرت همزمانی در Go، تست کردن برنامه‌هایی که به شدت بر همزمانی تکیه دارند می‌تواند پیچیده باشد. در نسخه 1.24، Go یک بسته جدید و آزمایشی معرفی کرده است که مخصوص تست کد‌های مرتبط با زمان و همزمانی است. این بسته جدید هنوز در مرحله آزمایشی قرار دارد و فعال‌سازی آن نیازمند تنظیم متغیر محیطی است. تیم توسعه‌دهنده Go از کاربران می‌خواهد که از این بسته استفاده کرده و نظرات خود را ارسال نمایند تا بتوانند بهبودهای لازم را در نسخه‌های آتی اعمال کنند.

🟣لینک مقاله:
https://golangweekly.com/link/166110/web


👑 @gopher_academy
🔵 عنوان مقاله
Extensible Wasm Applications with Go

🟢 خلاصه مقاله:
قابلیت ساختن یک WASI و صدور عملکردهای Go به Wasm در نسخه 1.24 Go، پیشرفت قابل توجهی را نشان می‌دهد و توانایی‌های سامانه‌سازی وب با استفاده از Go را بهبود می‌بخشد. این ویژگی‌ها به توسعه‌دهندگان امکان می‌دهد که برنامه‌های کاربردی Wasm مبتنی بر Go را با قابلیت‌ها و تنوع بیشتری بسازند. این پیشرفت‌ها تجارب کاربری را بهبود بخشیده و گسترش دامنه استفاده‌های ممکن با WebAssembly در محیط‌های مختلف را فراهم می‌کنند، از برنامه‌های تحت وب گرفته تا برنامه‌های سخت‌افزاری و اینترنت اشیاء. این تغییرات نه تنها برنامه‌های کاربردی Go را قوی‌تر می‌کند، بلکه استانداردسازی‌های جدیدی را در زمینه توسعه نرم‌افزار معرفی می‌کند و توسعه‌دهندگان را قادر می‌سازد که به طور موثرتری با سایر زبان‌ها و پلتفرم‌ها همکاری کنند.

🟣لینک مقاله:
https://golangweekly.com/link/166115/web


👑 @gopher_academy
🔵 عنوان مقاله
godoc.nvim: Fuzzy Search Go's Docs from Neovim

🟢 خلاصه مقاله:
مقاله مورد بحث به ارائه یک ویژگی جدید در ویرایشگر Neovim می‌پردازد که امکان جستجو و مرور سریع در مستندات زبان برنامه‌نویسی Go را فراهم می‌آورد. این ویژگی به توسعه‌دهندگان اجازه می‌دهد که بدون ترک محیط Neovim به اطلاعات مورد نیاز خود دسترسی پیدا کنند، که می‌تواند به بهبود بهره‌وری و کارایی کمک کند. روند استفاده از این ابزار نیز بسیار ساده است؛ کاربران تنها با استفاده از برخی دستورات خاص می‌توانند جستجو در مستندات را آغاز کنند و سپس نتایج را درون همان ویرایشگر مشاهده نمایند. این امکان جدید در Neovim به طور موثری پیوستگی و یکپارچگی محیط توسعه را افزایش داده و تجربه‌ی کاربری توسعه‌دهندگان را تا حد زیادی بهبود می‌بخشد.

🟣لینک مقاله:
https://golangweekly.com/link/166134/web


👑 @gopher_academy
🔵 عنوان مقاله
Calling Rust from 'Cursed' Go

🟢 خلاصه مقاله:
مکانیزم Cgo در زبان برنامه‌نویسی Go برای فراخوانی توابع خارجی/بیگانه وجود دارد اما عملکرد آن اغلب نگرانی‌هایی را ایجاد می‌کند. حالا purego، روشی در مرحله بتا وجود دارد که امکان انجام چنین فراخوانی‌هایی را بدون استفاده از Cgo فراهم می‌آورد.

(Note: Cgo is a tool provided by the Go programming language to allow Go code to interact with C libraries by using import "C". This enables Go programs to call C code and link with C libraries.)

🟣لینک مقاله:
https://golangweekly.com/link/166486/web


👑 @gopher_academy
Forwarded from 𓄂 Bardia 𓆃
👇 لیست کانال‌های مجموعه Labdon با به‌روزترین اخبار، آموزش‌ها و ترفندها در حوزه‌های مختلف:


🔵 گولنگ - همه چیز از اخبار تا نکات کلیدی
🔴 @gopher_academy

🔵 موقعیت شغلی های گولنگ چه ایرانی و چه خارجی
🔴 @gopher_job


🔵 انواع دیتابیس ها ردیس مانگو پستگرس و سایر دیتابیس ها
🔴 @database_academy
🟢 حوزه های تحت پوشش

(redis , mysql , postgresl , mongo ,etc)

🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش

(Bitcoin, Ethereum, Altcoins, Blockchain, Policy & Regulations, AI, NFTs, DeFi)


🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش

(Engineering, Architecture, Design, Testing, Security , QA)


🔵 لینوکس- از توزیع‌ها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش

(Linux Distributions, Open Source Software, Security Tips ,New Releases & Features)


🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش

(CI/CD Pipelines, Cloud Infrastructure, Containerization & Orchestration, Monitoring & Performance, Infrastructure as Code, Security in DevOps)

🕸 @labdon_academy
Forwarded from DevOps Labdon
🔵 عنوان مقاله
We switched from Java to Go and don't regret it (7 minute read)

🟢 خلاصه مقاله:
مقاله‌‌ای که به بررسی تجربه‌ی یک توسعه‌دهنده در طول بیش از دهه‌ای‌ که با زبان برنامه‌نویسی جاوا کار کرده و سپس به زبان Go تغییر مسیر داده است می‌پردازد. این فرد در جاوا، از ساخت برنامه‌های سوئینگ گرفته تا وب‌اپلیکیشن‌های سنتی و توسعه با استفاده از Spring Boot و Kotlin را تجربه کرده است. با این حال، برای پروژه‌‌های مبتنی بر کلود و کوبرنتیس به Go روی آورده‌اند، زیرا زمان راه‌اندازی سریع‌تر، مصرف منابع کمتر، و اکوسیستم سبک‌وزن این زبان مزیت‌های قابل توجهی را نشان داده است. این در حالی است که جاوا همچنان با چهارچوب‌های قوی و پشتیبانی فراگیر IDE خود، تاثیرگذار مانده است. در نهایت، تغییر به Go باعث تسریع روند توسعه شده و منابع را به شکل چشمگیری بهینه‌سازی کرده است.

🟣لینک مقاله:
https://glasskube.dev/blog/from-java-to-go/?utm_source=tldrdevops


👑 @DevOps_Labdon
🔵 عنوان مقاله
Gore 0.6: A Full Featured Go REPL Environment

🟢 خلاصه مقاله:
در این بیلد جدید، شما تمام ویژگی‌های مورد انتظار مانند ویرایش خط، تاریخچه، ورودی چند خطی، توانایی وارد کردن بسته‌ها (packages)، و همچنین تکمیل کد با قدرت گرفته از gopls را در اختیار دارید.

توضیح: "gopls" یک ابزار زبان سرور برای زبان برنامه‌نویسی Go است که تکمیل خودکار کد، شناسایی خطاها و سایر ویژگی‌های مفید هنگام کدنویسی را فراهم می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/166493/web


👑 @gopher_academy
🔵 عنوان مقاله
Go Clean Template

🟢 خلاصه مقاله:
الهام‌گرفته از اصول «کد تمیز» باب عمو (Uncle Bob)، این مخزن تلاش می‌کند تا یک «قالب معماری تمیز» برای ساختن سرویس‌های محرکه‌شده توسط زبان برنامه‌نویسی Go ارائه دهد که به خوبی سازمان‌دهی شده‌اند و به هم‌ریختگی تبدیل نخواهند شد. شما قضاوت کنید.

🟣لینک مقاله:
https://golangweekly.com/link/166495/web


👑 @gopher_academy
🔵 عنوان مقاله
Faster Go Maps with Swiss Tables

🟢 خلاصه مقاله:
یکی از جدیدترین ویژگی‌های زبان برنامه‌نویسی گو، پیاده‌سازی بهبود یافته‌ی ساختمان داده نقشه (map) است که توسط یک الگوریتم جدول هش جدید به نام Swiss Table پشتیبانی می‌شود. این الگوریتم عملیات‌های روی نقشه‌ها را تا ۶۰ درصد در میکروبنچمارک‌ها (microbenchmarks، آزمایش‌های کوچک برای بررسی کارایی قطعات مجزا) سریع‌تر می‌کند، در حالی که میزان استفاده از حافظه را نیز کاهش می‌دهد. در اینجا نگاهی داریم به نحوه کارکرد آن.

🟣لینک مقاله:
https://golangweekly.com/link/166477/web


👑 @gopher_academy
تایپ‌اسکریپت رو دارن با Go باز نویسی می‌کنن و تا الان ۱۰ برابر سریع‌تر از قبل شده. چیزی که خیلی جالبه اینه که تیم توسعه‌اش با C# خیلی نزدیکه (چون پشت جفتشون مایکروسافته) و حتی سازنده‌اشونم یکیه. اما با این حال با وجود رقابتی که الان بین C# و Go هست، اومدن Go رو انتخاب کردن.

<Yasha/>

https://t.me/addlist/KpzXaiSpKENkMGM0