Gopher Academy
3.33K subscribers
915 photos
40 videos
279 files
1.96K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
شروع یک پروژه Go همیشه با یک سؤال مهم همراهه:
ساختار پروژه‌ رو چطور طراحی کنیم؟
یکی از چالش‌های اولیه در پروژه‌های گولنگ، انتخاب یک ساختار ماژولار، خوانا و مقیاس‌پذیره. الکس ادواردز در مقاله‌ی زیر، ۱۱ نکته کاربردی برای ساختاردهی پروژه‌های Go مطرح کرده که خوندنش میتونه توی این مورد بهمون کمک کنه:

https://www.alexedwards.net/blog/11-tips-for-structuring-your-go-projects


<Abbas Pourhadi/>
8
Gopher Academy
شروع یک پروژه Go همیشه با یک سؤال مهم همراهه: ساختار پروژه‌ رو چطور طراحی کنیم؟ یکی از چالش‌های اولیه در پروژه‌های گولنگ، انتخاب یک ساختار ماژولار، خوانا و مقیاس‌پذیره. الکس ادواردز در مقاله‌ی زیر، ۱۱ نکته کاربردی برای ساختاردهی پروژه‌های Go مطرح کرده که…
🧭 راهنمای ساختاربندی پروژه‌های Go

1. ساختار را بر اساس نیاز پروژه انتخاب کنید
سبک‌های ساختاری بسته به نوع پروژه (CLI، کتابخانه، وب‌اپ/میکروسرویس) متفاوت است و «یک ساختار برتر» وجود ندارد .


2. کارآمدی مهم‌تر از کمال
هدف این باشد که ساختار پروژه قابل فهم، قابل تغییر و قابل نگهداری باشد؛ نه لزوماً کامل و بی‌نقص .


3. از روی عادت‌ به ساختار زبان‌های دیگر نقل رعایت نکنید
اGo فلسفه‌ٔ ساده خود را دارد؛ تقلید ساختار Django یا Rails ممکن است منجر به سردرگمی شود .


4. هر پوشه=هر package
ایجاد فولدر فقط به دلیل نظم ظاهری اشتباه است. فقط هنگامی package بسازید که منطق مستقلی بخواهید .


5. با یک skeleton استاندارد شروع کنید

پروژه‌های کوچک: همهٔ فایل‌ها در روت

main.go, foo.go, bar.go

وقتی پکیج‌های داخلی نیاز بود:

internal/foo/foo.go
main.go

پروژه‌های بزرگ‌تر با چند executable:

cmd/app1/, cmd/app2/, internal/, go.mod, README.md


6. اجازه دهید ساختار با رشد پروژه تغییر کند
نیاز به تغییر ساختار را با توسعه واقعی پروژه شناسایی کنید؛ نه از ابتدا همه‌چیز را طراحی کنید .


7. اگر بلاتکلیف هستید، با دو فایل شروع کنید
فقط go.mod و main.go؛ باقی را با نیاز واقعی اضافه کنید .


8. موارد مرتبط را در کنار هم نگه دارید
توابع کمکی، typeها و متدها مرتبط را نزدیک هم نگه دارید تا خوانایی بیشتر شود .


9. اندازه فایل مهم نیست، تا وقتی درست است
فایل‌های بزرگ ایرادی ندارند، مگر اینکه واقعا نگهداری را سخت کنند .


10. پکیج‌سازی فقط وقتی لازم باشد
پکیج‌های خیلی کوچک یا کم‌اهمیت اضافه نکنید؛ مگر برای استفاده مجدد یا جداسازی لایه‌ها .


11. به علائم هشدار توجه کنید

مشکل در پیدا کردن کد

تغییرات کوچک توزیع‌شده در کل پروژه

پیچیدگی در debugging

وابستگی‌های دورانی و مشکل در error handling
→ وقت بازنگری ساختار است .

جمع‌بندی

هدف: ساختاری موثر، خوانا، و قابل نگهداری.

روش:

1. شروع ساده،

2. استفاده از ساختار پیشنهادی (مثل پوشه‌های cmd/, internal/)،

3. اجازه دهید پروژه رشد کند و ساختار با آن عینا وفق پیدا کند.

هشدار: وقتی احساس کردید ساختار کارآمد نیست، فکری برای بازطراحی آن بکنید.

https://t.me/addlist/QtXiQlynEJwzODBk
👍72🍾2
🔵 عنوان مقاله
Kubernetes Best Practices 2025: Comprehensive White Paper

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

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

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


👑 @gopher_academy
5
نسخه ۱.۷.۰ پکیج env منتشر شد 🥳:

https://github.com/nasermirzaei89/env

چرا این پکیج رو نوشتم؟
- چون تقریبا همیشه اپلیکیشن‌هام درون Dockerfile قرار میگیره و صرفا گرفتن کانفیگ از متغیرهای محیطی کافیه
- به جای فقط متغیر رشته‌ای نوع های دیگه رو هم میخونه، از جمله bool، عدد، اسلایس...

توی نسخه جدید چی شده؟
- پکیج testify با چندتا تابع دست‌نویس جایگزین شده تا این کتابخونه Zero Dependency بشه

ای کسانی که از کتابخونه های بزرگ کانفیگ استفاده می‌کنید
ترکیب این کتابخونه و 
github.com/joho/godotenv
بی‌نظیره 😎

اما مثلا وقتی از
github.com/spf13/viper
استفاده می‌کنید با خودش نزدیک ۲۰ تا دیپندنسی داره، دیگه خود دانید 🫠
🔥62👍1🕊1🍾1
🔵 عنوان مقاله
cpuid 2.3: CPU Feature Identification for Go

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

این مقاله راهنمایی عملی برای تعیین مشخصات فنی پردازنده مرکزی کامپیوتر (CPU) است که شامل تعداد هسته‌های فیزیکی و منطقی، خانواده پردازنده، و جزئیات مشابه می‌باشد. این راهنما از پردازنده‌های معماری‌های x86/x64 و ARM64 پشتیبانی می‌کند و برای کاربرانی که به اطلاعات دقیق فنی سیستم خود نیاز دارند بسیار مفید است.

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


👑 @gopher_academy
2🎉2👍1
Forwarded from Linux Labdon
لینوکس بالاخره از مرز ۵٪ در آمریکا عبور کرد!

▪️طبق آمار StatCounter، برای اولین بار سهم سیستم‌عامل‌های لینوکسی در آمریکا از ۵٪ گذشت؛ اتفاقی که خیلی‌ها منتظرش بودن!

▫️پایان پشتیبانی ویندوز 10
▫️سیاست‌های آزاردهنده مایکروسافت
▫️و البته محبوبیت دیوانه‌وار Steam Deck

+ همه اینا باعث شدن کاربرا کم‌کم از ویندوز دل بکنن و برن سراغ دنیای آزاد لینوکس.


👑 @Linux_Labdon
🍾7🎉2🕊11
🔵 عنوان مقاله
pproftui: A Terminal-Based Diagnostic Tool for pprof Data

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

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

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


👑 @gopher_academy
4
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Managing OpenAI API keys with HashiCorp Vault's dynamic secrets plugin (4 minute read)

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفت، به توسعه یک پلاگین جدید برای HashiCorp Vault پرداخته است که هدف آن افزایش امنیت کلیدهای API شرکت OpenAI است. این پلاگین با تولید دینامیک توکن‌های با مدت زمان کوتاه که به صورت خودکار منقضی می‌شوند، به ارتقاء امنیت کمک می‌کند. با استفاده از این پلاگین، کاربران قادر خواهند بود تا کلیدهای API را در محیطی امن تر و کنترل شده‌تر مدیریت نمایند. این فرآیند نه تنها ریسک دسترسی بی‌مجاز به کلیدهای طولانی‌مدت را کاهش می‌دهد بلکه به افزایش امنیت داده‌ها و کاربردهایی که از این کلیدها استفاده می‌کنند نیز کمک می‌کند. استفاده از توکن‌های کوتاه مدت و خودکار این امکان را به ارمغان می‌آورد که هر گونه نفوذ احتمالی به سرعت محدود و کنترل شود. این پلاگین نوآوری مهمی در زمینه مدیریت امنیتی کلیدهای API به شمار می‌رود.

🟣لینک مقاله:
https://www.hashicorp.com/en/blog/managing-openai-api-keys-with-hashicorp-vault-s-dynamic-secrets-plugin?utm_source=tldrdevops


👑 @DevOps_Labdon
5
🔵 عنوان مقاله
Introducing go-cdc-chunkers: A New Way to Chunk and Deduplicate Everything

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

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

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


👑 @gopher_academy
2👍2
Forwarded from Database Labdon
🔵 عنوان مقاله
Redka: Redis Re-Implemented with SQL

🟢 خلاصه مقاله:
این مقاله به بررسی و توضیح یک فروشگاه داده مبتنی بر زبان برنامه‌نویسی Go می‌پردازد که سازگار با API رِدیس است اما در پشت صحنه از SQL استفاده می‌کند تا عملیات‌ها را مدیریت نماید. تاکنون، این سیستم بر پایه SQLite عمل می‌کرده است، اما نسخه ۰.۶ پشتیبانی از Postgres را معرفی می‌کند. این پشتیبانی جدید امکان استفاده از قابلیت‌های بیشتری را برای کاربران فراهم می‌آورد، زیرا Postgres یک سیستم مدیریت پایگاه داده‌ی قوی‌تر نسبت به SQLite است و امکانات گسترده‌تری را در زمینه‌ی مقیاس‌پذیری و امنیت فراهم می‌آورد. این تغییر به کاربران اجازه می‌دهد تا از یک رابط برنامه‌نویسی آشنا استفاده کنند، در حالی که از قدرت و انعطاف‌پذیری SQL بهره‌مند شوند.

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


👑 @Database_Academy
5
🔵 عنوان مقاله
You Don't Need testify/assert

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

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

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


👑 @gopher_academy
👍3
🔵 عنوان مقاله
Fix Slow Postgres Queries with pganalyze Query Advisor

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

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

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


👑 @gopher_academy
2🕊1
Forwarded from AI Labdon
یک پروژه شسته رُفته از پیاده سازی یک RAG پیشرفته با استفاده از llamaIndex و روی Google Cloud Vertex AI. که این موضوعات را هم پوشش میده:
- RAG design, indexing, retrieval, evaluation metrics

میتونید کامل هم روی Cloud یا لوکال اجرا کنید و تکنیکهای مختلف را تست کنید.
Github: https://github.com/GoogleCloudPlatform/generative-ai/tree/main/gemini/sample-apps/llamaindex-rag

<Mehdi Allahyari/>
2🔥1
Forwarded from Software Engineer Labdon
این Requirement Driven Vibe Coding چیه؟

یعنی قبلا ازینکه پروژه رو شروع کنیم٬‌ میشینیم قشنگ User Story و Requirementها رو می نویسیم و بر اساس اون جلو می ریم.

چندتا اسکرین‌شات که چجوری این Requirementهارو می نویسیم
4🔥1
📢 اگر تلگرام پرمیوم دارید، کانال ما رو Boost کنید ! 🚀

با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙

https://t.me/boost/gopher_academy
4