Gopher Academy
3.33K subscribers
914 photos
40 videos
279 files
1.95K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72

ادمین تبلیغات:
@labdon_ads
Download Telegram
🙏

https://t.me/addlist/KpzXaiSpKENkMGM0
3👍1🔥1🎉1🕊1🍾1
🔵 عنوان مقاله
2X-40X Faster Docker Builds with Blacksmith

🟢 خلاصه مقاله:

ابزار Blacksmith با ایجاد یک تغییر کد یک خطی، امکان ساخت افزایشی برای تصاویر Docker را در اجراکننده GitHub Actions با نصب حافظه لایه‌ای Docker فراهم می‌کند. این رویکرد جدید با کاهش زمان ساخت و تکراری‌نبودن فرآیند، کارآمدی را افزایش می‌دهد. بیش از ۳۰۰ شرکت، از جمله Ashby، Clerk و Mintlify از Blacksmith استفاده کرده‌اند، که نشان‌دهنده تأثیر قابل توجه آن در بهینه‌سازی فرایندهای توسعه است.

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


👑 @gopher_academy
👍2
در گولنگ (و به‌طور کلی در سیستم‌های مبتنی بر یونیکس)، تفاوت stdin`، `stdout و stderr در واقع به کانال‌های ورودی/خروجی استاندارد مربوط می‌شه. این مفاهیم پایه‌ای در اکثر زبان‌ها یکسان هستند، ولی تو Go هم به شکل زیر کاربرد دارن:

---

## 📥 1. stdin — Standard Input
این همون ورودی استاندارد**ه که برنامه ازش داده می‌گیره. پیش‌فرض اینه که از **کیبورد یا خط فرمان میاد.

### مثال Go:

package main

import (
"bufio"
"fmt"
"os"
)

func main() {
fmt.Print("Enter your name: ")
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
fmt.Println("Hello,", scanner.Text())
}
}

> اینجا os.Stdin ورودی رو می‌خونه.

---

## 📤 2. stdout — Standard Output
خروجی استاندارده که معمولاً به ترمینال یا همان صفحه نمایش می‌ره. اکثر توابع fmt.Print, fmt.Println, fmt.Printf از os.Stdout استفاده می‌کنن.

### مثال:

fmt.Fprintln(os.Stdout, "This is a normal message.")


---

## ❗️ 3. stderr — Standard Error
خروجی برای خطاها. فرقش با stdout اینه که حتی اگر خروجی برنامه به یه فایل هدایت بشه (> out.txt)، خطاها هنوز روی ترمینال باقی می‌مونن مگر اینکه مشخصاً مسیر stderr هم تغییر کنه.


### مثال:

fmt.Fprintln(os.Stderr, "This is an error message.")


👑 @gopher_academy
👍2🔥1
تفاوت بین stdout و stderr توی ظاهر ممکنه کوچیک به نظر بیاد، ولی توی دنیای واقعی (به‌خصوص در سرور‌ها، لاگینگ، کانتینرها و automation) خیلی مهمه.


## 🔧 مثال کاربردی: اجرای برنامه و جداسازی خروجی‌ها

فرض کن برنامه‌ای داریم به نام myapp که هم لاگ عادی داره و هم خطا:


// main.go
package main

import (
"fmt"
"os"
)

func main() {
fmt.Fprintln(os.Stdout, "Everything is running fine.") // خروجی عادی
fmt.Fprintln(os.Stderr, "Oops! Something went wrong!") // پیام خطا
}



الان اگه اینو تو ترمینال اجرا کنیم:

go run main.go


هردو پیام روی ترمینال میان. ولی اگه بخوای فقط خروجی معمول رو بریزی تو فایل:

go run main.go > output.txt


📁 نتیجه:
- output.txt: فقط شامل "Everything is running fine."
- پیام خطا همچنان روی ترمیناله

اما اگه بخوای خطا رو هم بریزی تو یه فایل دیگه:


go run main.go > output.txt 2> error.txt



📁 نتیجه:

- output.txt → خروجی عادی (stdout)
- error.txt → پیام خطا (stderr)

---


## 🐳 در دنیای کانتینرها (مثلاً Docker)

خیلی از ابزارهای لاگینگ (مثل fluentd, logstash, یا خود docker logs) فقط stdout و stderr رو بررسی می‌کنن. پس جداسازی درستش باعث میشه:
- مانیتورینگ بهتر انجام بشه
- خطاها مشخص‌تر باشن
- عملکرد بهتر در CI/CD


👑 @gopher_academy
4👍1
🔵 عنوان مقاله
Revive 1.8: A Faster, Configurable, Flexible Linter for Go

🟢 خلاصه مقاله:

مقاله‌ای در مورد ابزار جدیدی است که به عنوان جایگزینی برای "golint"، ابزار فرمت‌بندی محبوب زبان برنامه‌نویسی Go، ارائه شده است. این ابزار جدید با ارائه بازخورد سازمان‌یافته‌تر، گزینه‌های سفارشی‌سازی و عملکرد بهبود یافته، فرآیند فرمت‌بندی را تقویت می‌کند. این ابزار توسط پروژه‌ها و کتابخانه‌های بزرگ Go به سرعت پذیرفته شده است. فایل README در مخزن GitHub توضیح می‌دهد که این ابزار جدید چگونه از golint متفاوت است، و به جزئیات تقویت‌های عملکردی، ویژگی‌های قابل تنظیم، و بهبود عملکرد آن می‌پردازد.

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
urfave/cli 3.1: A Declarative Way to Build Go CLI Apps

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Chroma 2.16: Pure Go Syntax Highlighting

🟢 خلاصه مقاله:

این مقاله ابزاری قدرتمند را توضیح می‌دهد که قادر است کد منبع را به فرمت‌های خواناتر مثل HTML با برجسته‌سازی نحوی، متن رنگی ANSI، و یا استخراج توکن‌های خام در قالب JSON تبدیل کند. این ابزار بیشتر ویژگی‌های Pygments، که یک برجسته‌کننده نحوی محبوب است، را داراست و از لکسرها و سبک‌های Pygments نیز پشتیبانی می‌کند. همچنین، یک محیط آزمایش آنلاین برای امتحان این ابزار فراهم است که کاربران می‌توانند عملکرد آن را به صورت زنده ببینند و در پروژه‌های کدنویسی خود به کار ببرند.

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


👑 @gopher_academy
🔵 عنوان مقاله
Hunting Zombie Processes in Go and Docker

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

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
A No Nonsense Guide to Go Project Layout

🟢 خلاصه مقاله:

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

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
🖼️ ImageProxy 0.12: A Caching Proxy Server and Transformer for Image Files

🟢 خلاصه مقاله:

مقاله‌ای در مورد پروژه‌ای طولانی‌مدت که راه‌کاری برای میزبانی کارآمد فایل‌های تصویری فراهم می‌کند، علاوه بر این، امکان تغییرات ابتدایی مانند تغییر اندازه، برش دادن و چرخاندن تصاویر را نیز می‌دهد صحبت می‌کند. نسخه 0.12 که نخستین انتشار پس از چندین سال است، به‌روزرسانی وابستگی‌ها و افزودن یک ماژول برای Caddy را به همراه دارد.

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
🤖 MCP Go: A Go Implementation of the Model Context Protocol

🟢 خلاصه مقاله:

پروتکل مدل کانتکست (MCP)، روشی نوظهور در زمینه هوش مصنوعی و یادگیری ماشین است که به مدل‌های زبان بزرگ و ابزارهای توسعه مبتنی بر AI امکان دسترسی به خدمات خارجی را می‌دهد. در حالی که استفاده از زبان برنامه‌نویسی پایتون در این زمینه غالب بوده، استفاده از زبان Go برای توسعه سرورهای MCP نیز مورد توجه قرار گرفته است. Go به دلیل کارایی بالا و قابلیت توسعه‌پذیری خود، گزینه مطلوبی برای توسعه سرورهای MCP محسوب می‌شود و این تغییر، امکان مشارکت بیشتر توسعه‌دهندگان مسلط به این زبان را فراهم می‌آورد.

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


👑 @gopher_academy
بندر عباس 💔🖤
🕊3010
🔵 عنوان مقاله
Doltgres Beta Launch: A Version Controlled SQL Database

🟢 خلاصه مقاله:

DoltHub علاوه بر انتشار مقالات آموزشی درباره زبان برنامه‌نویسی Go در وبلاگ خود، نرم‌افزار پایگاه داده به نام Doltgres را توسعه داده است. Doltgres که از Postgres الهام گرفته، قابلیت‌هایی مشابه Git مانند ادغام و شاخه‌بندی داده‌ها را ارائه می‌دهد و کلیه اجزای آن با زبان Go ساخته شده‌اند. این ویژگی‌ها، کنترل نسخه و مدیریت پایگاه داده را برای توسعه‌دهندگان بهبود می‌بخشد.

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


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


🔵 گولنگ - همه چیز از اخبار تا نکات کلیدی و معرفی ابزارهای این حوزه

🔴 @gopher_academy

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

🔴 @gopher_job


🔵 بروزترین اخبار درحوزه انواع دیتابیس ها ردیس مانگو پستگرس و سایر دیتابیس ها

🔴 @database_academy

🔵 دنیای بلاکچین و ارز های دیجیتال

🔴 @Blockchain_labdon

🟢 حوزه های تحت پوشش
Bitcoin,
Ethereum,
Altcoins,
Blockchain,
Policy & Regulations,
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
1🍾1
🔵 عنوان مقاله
Preventing Accidental Struct Copies

🟢 خلاصه مقاله:

در زبان برنامه‌نویسی Go، امکان کپی کردن ساختار‌ها بر اساس مقدار وجود دارد که می‌تواند باعث بروز اشکالات پیچیده شود، به‌خصوص زمانی که این کپی شامل مواردی مانند sync.WaitGroup یا Mutex می‌شود. مقاله به روشی برای جلوگیری از کپی نادرست این ساختارهای حیاتی با استفاده از یک ترفند به نام noCopy و ابزار 'go vet' با قابلیت بررسی copylocks می‌پردازد که این مشکلات را شناسایی می‌کند. استفاده از این رویکرد و ابزار، به توسعه‌دهندگان کمک می‌کند تا از پایداری و عملکرد برنامه‌های خود در مقابله با خطاهای همزمانی ناشی از کپی اشتباه قفل‌ها اطمینان حاصل کنند.

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


👑 @gopher_academy
👍3
Gopher Academy pinned «بندر عباس 💔🖤»
🔵 عنوان مقاله
Optimizing Heap Allocations

🟢 خلاصه مقاله:

مقاله اخیر به بررسی یک تغییر کوچک در کد که باعث کاهش 30 درصدی عملکرد شد، پرداخت. این تحلیل نشان داد که چگونه متغیرها به جای تخصیص در استک به تله‌ی حافظه‌ی هیپ گرفتار شده‌اند که باعث افت عملکرد شده‌است. این دانش به درک بهتر تاثیر تخصیص حافظه بر عملکرد نرم‌افزار کمک کرده و هشداری به توسعه‌دهندگان است تا حتی تغییرات جزئی را بی‌توجه نگیرند. این اطلاعات می‌تواند در جلوگیری از کاهش عملکرد غیرمنتظره و بهینه‌سازی کد موجود مفید باشد.

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


👑 @gopher_academy
👍3
🔵 عنوان مقاله
GoMud: A MUD (Multi-User Dungeon) Server

🟢 خلاصه مقاله:

مقاله‌ای به بررسی پروژه‌ای در دست توسعه می‌پردازد که شامل یک دنیای بازی زندانی منبع باز و کتابخانه‌ای است که ویژگی‌های اصلی مرتبط با زندان‌های چند کاربری (MUDs) مانند نقشه‌ها، دارایی‌ها و تجهیزات، و چرخه‌های روز و شب را مدیریت می‌کند. این پروژه به بازیکنان اجازه می‌دهد تا از طریق Telnet یا HTTP به بازی متصل شوند و محیط بازی تعاملی و قابل توسعه‌ای را ارائه می‌دهد.

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


👑 @gopher_academy
👍3
‏اینکه بوشهری‌ها جشنواره موسیقی رو به دسته عزاداری تبدیل میکنن،
اصفهانیا در سازمان انتقال خون رو از جا میکنن تا خون بدن،
مردم گیلان و تبریز نصف روز تو صف اهداءخون هستند
و پزشکا برای درمان رایگان آدرس میذارن
و اردبیلیا جشن تیم فوتبالشونو به بعد موکول می کنن

فقط یک معنا داره:👇

❤️‌ ایران


https://t.me/addlist/KpzXaiSpKENkMGM0
130🕊3
🔵 عنوان مقاله
GitHub MCP Server: GitHub's Official MCP Server

🟢 خلاصه مقاله:
**
در حالی که پروتکل مدل کانتکست به سمت استاندارد صنعتی برای ارتقاء قدرت‌های نمایندگان هوش مصنوعی در تعامل با محیط‌های بیرونی خود پیش می‌رود، گیت‌هاب سرور رسمی خود را منتشر کرده است که قابلیت ادغام با VS Code و Claude Desktop را دارد. این سرور پشتیبانی گسترده‌ای از ابزارهای مربوط به مسائل، درخواست‌های کشیدن، مخازن و بیشتر را ارائه می‌دهد، که به بهبود فرایندهای توسعه نرم‌افزار کمک می‌کند.

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


👑 @gopher_academy
👍1