Gopher Academy
3.34K subscribers
918 photos
40 videos
279 files
1.99K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
برای یادگیری زبان برنامه‌نویسی Go (Golang)، مجموعه‌ای از بهترین کتاب‌ها را می‌توان معرفی کرد که توسط توسعه‌دهندگان برجسته و شناخته شده نوشته شده‌اند. این کتاب‌ها می‌توانند به شما کمک کنند تا از سطح مبتدی تا پیشرفته، مهارت‌های خود را در Golang ارتقا دهید.

در زیر لیستی از بهترین کتاب‌ها در زمینه Golang آورده شده است:

🔻بهترین کتاب‌ها برای یادگیری Golang

1. The Go Programming Language
   - نویسندگان:
Alan A. A. Donovan و Brian W. Kernighan
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب یکی از جامع‌ترین و پرطرفدارترین منابع برای یادگیری Go است. با استفاده از مثال‌های عملی و توضیحات دقیق، به خوانندگان کمک می‌کند تا به خوبی با اصول و مفاهیم Go آشنا شوند.

2. Go in Action
   - نویسندگان:
William Kennedy, Brian Ketelsen, Erik St. Martin
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب به خوانندگان کمک می‌کند تا به سرعت مفاهیم پایه‌ای Golang را یاد بگیرند و آن‌ها را در پروژه‌های واقعی به کار بگیرند. نویسندگان با تجربه خود، نکات عملی و مفید را به اشتراک می‌گذارند.

3. Learning Go
   - نویسنده:
Jon Bodner
   - سطح: مبتدی
   - خلاصه: این کتاب برای افرادی که تازه با Golang آشنا می‌شوند مناسب است و با زبانی ساده و روان، مفاهیم اصلی را به خوانندگان آموزش می‌دهد.

4. Head First Go
   - نویسنده:
Jay McGavren
   - سطح: مبتدی تا متوسط
   - خلاصه: این کتاب از سری کتاب‌های "Head First" است که با رویکردی تعاملی و تصویری به آموزش مفاهیم می‌پردازد. این رویکرد کمک می‌کند تا یادگیری تعاملی و مؤثرتری داشته باشید.

5. Introducing Go
   - نویسنده:
Caleb Doxsey
   - سطح: مبتدی
   - خلاصه: این کتاب یک راهنمای فشرده و سریع برای آشنایی با مفاهیم پایه‌ای Go است. برای کسانی که می‌خواهند به سرعت با اصول Go آشنا شوند، مناسب است.

6. Go Programming Blueprints
   - نویسنده:
Mat Ryer
   - سطح: متوسط تا پیشرفته
   - خلاصه: این کتاب بیشتر بر روی پروژه‌های کاربردی و مثال‌های عملی تمرکز دارد و به خوانندگان کمک می‌کند تا با استفاده از Go، برنامه‌های کاربردی واقعی بنویسند.

7. Concurrency in Go
   - نویسنده:
Katherine Cox-Buday
   - سطح: متوسط تا پیشرفته
   - خلاصه: این کتاب به طور خاص بر روی مفاهیم همزمانی (Concurrency) در Go تمرکز دارد. برای کسانی که می‌خواهند به عمق مباحث پیشرفته همزمانی در Go پی ببرند، مناسب است.

8. Go Web Programming
   - نویسنده:
Sau Sheong Chang
   - سطح: متوسط
   - خلاصه: این کتاب به خوانندگان کمک می‌کند تا نحوه ساخت برنامه‌های وب با استفاده از Golang را یاد بگیرند. شامل مثال‌های عملی و کاربردی برای توسعه‌دهندگان وب است.

9. Mastering Go
   - نویسنده:
Mihalis Tsoukalos
   - سطح: پیشرفته
   - خلاصه: این کتاب برای توسعه‌دهندگانی که می‌خواهند به سطح بالاتری از مهارت در Golang برسند، مناسب است. شامل مباحث پیشرفته و نکات کاربردی برای حرفه‌ای‌ها است.

10. Go Design Patterns
    - نویسندگان:
Mario Castro Contreras, Andrey Breslav
    - سطح: متوسط تا پیشرفته
    - خلاصه: این کتاب به خوانندگان کمک می‌کند تا با الگوهای طراحی در Golang آشنا شوند و از آن‌ها در پروژه‌های خود استفاده کنند.

🔻 نتیجه‌گیری
این لیست از کتاب‌ها می‌تواند به شما کمک کند تا به صورت جامع و مرحله به مرحله زبان برنامه‌نویسی Golang را یاد بگیرید و مهارت‌های خود را به سطح بالاتری ارتقا دهید. بسته به سطح دانش و نیازهای خود، می‌توانید یکی یا چند مورد از این کتاب‌ها را انتخاب کرده و مطالعه کنید.


👑 @gopher_academy
👍14🔥2🍾2
📌 BackEnd (Golang) Engineer

📝 Type: Visa Sponsorship
🌍 Relocation Package:

🏢 Company: moon active

📍 Location: POLAND

⌨️ Category: #Programming

🔗 Tags: #python #golang #redis #rabbitmq #gcp #grpc #sqs #c #server #kubernetes #aws #docker #devops #cloud #scrum #sql


👑 @gopher_academy
👍2🍾2💯1
کوری هاوس (Cory House)
کوری هاوس متخصص React و JavaScript است. کوری مشاور اصلی در reactjsconsulting.com است. او می‌گوید:

سورس‌کد مثل یک جوک (لطیفه) است؛ اگه مجبور به توضیح آن شدید، بدانید که اصلاً خوب نوشته نشده است.



👑 @gopher_academy
👍12
چقدر از chat gpt استفاده می کنید
Final Results
92%
اگر نیازم بشه
10%
اطمینانی ندارم بهش
🎃1
در Go، رشته‌ها (strings) به صورت immutable طراحی شده‌اند. این به این معناست که پس از ایجاد یک رشته، محتوای آن نمی‌تواند تغییر کند. دلایل متعددی برای این طراحی وجود دارد:

1. کاهش پیچیدگی و افزایش کارایی:
- وقتی یک رشته immutable باشد، عملیات همزمانی (concurrency) به طور قابل توجهی ساده‌تر می‌شود زیرا نیازی نیست نگران تغییرات غیرمنتظره در رشته باشید.
- کپی‌برداری از رشته‌ها در این حالت بسیار ساده‌تر و سریع‌تر است، زیرا تنها نیاز به کپی کردن یک اشاره‌گر و طول رشته دارید، نه محتوای آن.

2. امنیت و پیش‌بینی‌پذیری:
- تغییرناپذیری رشته‌ها به معنای آن است که می‌توانید به راحتی رشته‌ها را به عنوان کلید در ساختارهای داده‌ای مانند نقشه‌ها (maps) استفاده کنید، بدون اینکه نگران تغییرات آن‌ها باشید.
- همچنین، این ویژگی باعث می‌شود که کد پیش‌بینی‌پذیرتر و کم‌خطاتر باشد.

3. سازگاری با UTF-8:
- رشته‌ها در Go به صورت مجموعه‌ای از بایت‌ها ذخیره می‌شوند که از UTF-8 پشتیبانی می‌کنند. این طراحی باعث می‌شود که رشته‌ها به راحتی قابل انتقال و تبادل بین سیستم‌های مختلف باشند.

### مثال:

در مثال زیر، اگرچه به نظر می‌رسد محتوای رشته تغییر می‌کند، اما در واقع یک رشته جدید ایجاد می‌شود و متغیر s به رشته جدید اشاره می‌کند:

package main

import (
"fmt"
)

func main() {
s := "Hello"
s = s + " World"
fmt.Println(s) // Output: Hello World
}


در اینجا، s = s + " World" باعث ایجاد یک رشته جدید در حافظه می‌شود که شامل محتوای s و " World" است. سپس متغیر s به این رشته جدید اشاره می‌کند.

### نتیجه‌گیری

طراحی immutable برای رشته‌ها در Go مزایای متعددی دارد از جمله افزایش کارایی، امنیت و سادگی در همزمانی. این طراحی همچنین باعث می‌شود که کار با رشته‌ها در برنامه‌های بزرگ و پیچیده ساده‌تر و کم‌خطاتر باشد.


👑 @gopher_academy
👍15🔥1💯1
رالف جانسون (Ralph Johnson)
رالف ای. جانسون، دانشیار پژوهشی در گروه علوم کامپیوتر در دانشگاه ایلینوی در اوربانا-شامپین است. او درباره نرم‌افزار می‌گوید:

قبل از اینکه نرم‌افزار قابل استفاده مجدد باشد، ابتدا باید قابل استفاده باشد.



👑 @gopher_academy
👍3💋3🔥1🕊1🍾1
🖐درود به همه دوستان گوفری

😍ما یه چنل زدیم مربوط به موقعیت های شغلی گولنگ (خارجی و داخلی) رو داخلش قرار میدیم

🔷️ از این به بعد موقعیت های شغلی گولنگ و رزومه های کارجویان رو داخل چنل زیر قرار میدیم


😉 و حتی دوستانی که دنبال موقعیت شغلی گولنگ هستن می تونن رزومه خودشون رو بدن به ما و براشون توی چنل بزاریم(فقط رزومه های گولنگی مورد قبول هست)

👇👇👇جوین بدید به چنل جدید 👇👇👇

@gopher_job
👍9🍾21🔥1🕊1
یک سایت جامع برای یادگیری و آشنایی با ابزارها و پروژه‌های اکوسیستم کلود نیتیو که می‌تونه توی مصاحبه‌ها و پیشرفت شغلی‌تون بهتون کمک کنه.

#cloudnative #system #design #devops #kubernetes

https://landscape.cncf.io/


👑 @gopher_academy
👍11
Gopher Academy pinned «🖐درود به همه دوستان گوفری 😍ما یه چنل زدیم مربوط به موقعیت های شغلی گولنگ (خارجی و داخلی) رو داخلش قرار میدیم 🔷️ از این به بعد موقعیت های شغلی گولنگ و رزومه های کارجویان رو داخل چنل زیر قرار میدیم 😉 و حتی دوستانی که دنبال موقعیت شغلی گولنگ هستن می تونن…»
یکی از مهم ترین قابلیت های گولنگ concurrency هست که قدرتش رو از go scheduler داره

این ویدیو سعی کرده بصورت مصور و عمیق scheduler رو بررسی کنه که کلی نکته داره و میتونه دید خوبی به شما بده در مورد نحوه کارش

Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency

https://youtu.be/-K11rY57K7k?si=1Qdlhna11caQIXFK

#DevTwitter | <Hossein Nazari/>


👑 @gopher_academy
🔥82👍1🕊1
‏اگر دوست دارید بدونید که در لایه های مختلف برنامه ای که توسعه دادید چه ابزار هایی هست که بتونید ازشون استفاده کنید (از دیتابیس گرفته تا CI/CD) این سایت احتمالا کمکتون کنه.

به اضافه اطلاعات خیلی خوبی راجع به هر ابزار داده:

landscape.cncf.io

#DevTwitter | <Reza/>

👑 @gopher_academy
👍8🔥2
یک نقشه تعاملی عااالی از کرنل لینوکس Linux kernel
خدایش زحمت کشیده
یک مرجع عالی ،
makelinux.github.io/kernel/map/

#DevTwitter | <MehrdadLinux/>

👑 @gopher_academy
7
🎃

👑 @gopher_academy
🎃8👍2🍾2
🎯کتاب
Seven Concurrency Models in Seven Weeks

🌷 این کتاب به بررسی مدل های مختلف برای مدیریت همزمانی در نرم‌افزار می‌پردازد. این مدل‌ها شامل "Thread and Locks"، "برنامه‌نویسی تابعی"، "مدل Actor"، "فرآیندهای ترتیبی ارتباطی"، "پردازش جریان"، "پیمانه‌بندی داده‌ها"، و "معماری Lambda" هستند. هر فصل به طور عملی و با مثال‌هایی از دنیای واقعی، مزایا و چالش‌های هر مدل را توضیح می‌دهد. کتاب هدف دارد تا توسعه‌دهندگان را برای بهره‌برداری از چند هسته‌ای‌ها، مدیریت هزاران کاربر و داده‌های بزرگ، و اطمینان از کارکرد پایدار نرم‌افزار در مقابل خطاهای سخت‌افزاری و نرم‌افزاری آماده کند.


👑 @gopher_academy
👍102🔥1💯1🍾1
✍️ Rouzbeh SabzeheiRouzbeh Sabzehei


تو سیستم هایی که باید از قدرت پردازش های Concurrent بهره گرفته بشه یا به اصطلاح Multi-thread نوشته بشه. یکی از دغدغه ها همیشه بحث دسترسی به دیتای Share بین Thread های مختلف هست. اگر این دسترسی (از نوع Read و یا Write ) با استفاده از تکنیک های خاصی انجام نشه میتونه مشکلاتی مثل Data Race و یا Undefined Behavior رو بوجود بیاره.

یکی از راه حل ها استفاده از روش Lock هست که معمولا از Mutex یا RwLock و یا روش های مرسوم دیگه استفاده میشه. جدا از افت پرفورمنسی که این روش داره اگر به درستی استفاده نشه ممکنه منجر به Deadlock و یا مشکلات دیگر Sync نگه داشتن دیتا بشه. اینجور باگ ها بسیار خطرناک هستند و به دلیل پیچیدگی لایه های مختلف از اپلیکیشن گرفته تا سیستم عامل و CPU در زمان و نحوه اجرای این Lock ها ممکنه احتمال رخ دادنش کم باشه و خیلی دیر شناسایی بشه.

توی مطالعه هایی که انجام شده استفاده از روش های Lock-Free (استفاده از Atomic ها) میتونه این مشکلات رو حل کنه و تو مواردی تونسته پرفورمنس رو نسبت به حالت مشابه استفاده از Mutex به نزدیک 63% افزایش بده. یکی از کلیدی ترین الگوریتم ها توی این مطالعات CAS یا Compare and Swap بوده.

البته استفاده از Atomic ها تو بعضی سناریو ها میتونه پیچیدگی کد رو چند برابر کنه و ممکنه رو بعضی معماری های پردازنده های مختلف جواب نده.

کد زیر یک نمونه ساده از مقایسه Mutex و Atomic ها برای یک سناروی مشابه افزایش یک شمارنده عددی هست که با Rust نوشته شده.

👑 @gopher_academy
👍8🔥1💅1
✍️ Rouzbeh SabzeheiRouzbeh Sabzehei

ا استفاده از تکنیک Const Expression میتونید موقع کامپایل محاسبات و پردازش هاتون رو انجام بدید. این روش اجازه میده محاسبات مختلفتون موقع ران تایم نباشه و اینجوری سرعت نرم افزار رو تو محاسبات مشخص بالا ببرید. تو ++C میتونید با constexpr و در Rust با const از این ویژگی استفاده کنید.

تو مقاله اخیری که میخوندم برای یک الگوریتم ساده که حلقه ای بود برای محاسبه فاکتوریل یک سری اعداد استفاده از این روش تونسته بود سرعت رو از 2.69 نانوثانیه به 0.245 نانوثانیه در هر پیمایش حلقه کاهش بده یعنی نزدیک 91% بهبود سرعت !


👑 @gopher_academy
👍3🎃2💅2🔥1🍓1
✍️ Rouzbeh SabzeheiRouzbeh Sabzehei

یکی از مواردی که تاثیر زیادی تو Performance نرم افزار داره استفاده از تکنیک Cache Warming هست. به این صورت که دیتای موردنیاز برای پردازش آماده میشه و از قبل در لایه های Cache پردازنده ( L1, L2 و L3 ) Load میشه. در ادامه CPU برای دسترسی به دیتا یا Instruction های موردنیاز لازم نیست از RAM دیتا رو بگیره و میتونه از دیتایی که Cache کرده استفاده کنه.

به طور تقریبی خوندن دیتا از L1 نزدیک ۲۰۰ برابر و L2 نزدیک ۲۰ برابر سریعتر از RAM هست. استفاده از الگو هایی مثل Pre Fetching و Data Oriented Design میتونه باعث Cache Warming بشه


👑 @gopher_academy
🔥7👍21
🔹این مقاله به بررسی ویژگی‌های جدید و بهبودهای اعمال شده در نسخه 1.23 زبان برنامه‌نویسی Go می‌پردازد.

نکات اصلی:

🔻معرفی Iterators: بسته‌های iter، slices و maps برای کار با توالی‌های داده به صورت استاندارد ارائه شده‌اند.
🔻بهبود تایمرها: مشکلات مربوط به توقف و بازنشانی تایمرها بهبود یافته است.

🔻تInterning مقادیر: بهینه‌سازی حافظه با ذخیره تنها یک نمونه از مقادیر تغییرناپذیر انجام شده است.
🔻مدیریت کوکی‌ها و فایل سیستم: قابلیت‌های جدیدی برای مدیریت کوکی‌ها و کپی‌کردن فایل‌ها معرفی شده است.
🔻ابزارها و runtime: ابزارهای جدیدی برای جمع‌آوری داده‌های تلمتری و بهبود عملکرد trace و vet اضافه شده است.

نتایج مهم:

🔻افزایش کارایی و ساده‌سازی مدیریت داده‌ها.
🔻بهبود عملکرد تایمرها و استفاده بهینه‌تر از حافظه.
🔻ارتقاء قابلیت‌های ابزارها و runtime برای تسهیل کار برنامه‌نویسان.

🟢Go 1.23: Interactive release notes
🔵https://antonz.org/go-1-23/


👑 @gopher_academy
👍5🕊21
چقدر از مطالبی که گذاشته میشه راضی هستید؟
درکل از روند فعالیت کانال راضی هستید؟
اگر نظر پیشنهادی انتقادی داشتید توی بیو کانال ای دی من هست
Final Results
64%
عالیه
34%
متوسط
5%
ضعیف
11💯1
Gopher Academy pinned «چقدر از مطالبی که گذاشته میشه راضی هستید؟
درکل از روند فعالیت کانال راضی هستید؟
اگر نظر پیشنهادی انتقادی داشتید توی بیو کانال ای دی من هست
»
مقاله "First Impressions of Go 1.23's range-over-func Feature" به بررسی ویژگی جدید "range-over-func" در Go 1.23 می‌پردازد. نویسنده ابتدا با تردید به این ویژگی نگاه می‌کند، اما پس از بررسی عملی و پیاده‌سازی آن در کتابخانه Kivik، به نتایج مثبتی می‌رسد. ویژگی range-over-func امکان ایجاد iteratorهایی با استفاده از توابع را فراهم می‌کند که باعث ساده‌تر شدن کد و افزایش خوانایی آن می‌شود. نتیجه‌گیری نویسنده این است که این ویژگی یادگیری پیچیده‌ای ندارد و می‌تواند به بهبود کدهای موجود کمک کند.


🟢Go 1.23: Interactive release notes
🔵https://boldlygo.tech/posts/2024-07-18-range-over-func/


👑 @gopher_academy
👍61🔥1