Gopher Academy
3.33K subscribers
916 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
نسخه ۱.۷.۰ پکیج 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
🔵 عنوان مقاله
oapi-codegen 2.5: Generate Go Boilerplate from OpenAPI 3 Specs

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

نسخه جدید این ابزار و کتابخانه که به توسعه‌دهندگان کمک می‌کند تا مشخصات OpenAI را به کد Go تبدیل کنند، هم برای سرور و هم برای کلاینت مناسب است. این محصول با کاهش نیاز به نوشتن کدهای اضافی، فرآیند توسعه را ساده‌تر کرده و به توسعه‌دهندگان اجازه می‌دهد تا بر روی قابلیت‌های اصلی تمرکز بیشتری داشته باشند. در نسخه 2.5، تغییرات و امکانات جدیدی به منظور بهبود کارایی معرفی شده‌اند و همچنین اشاراتی به پشتیبانی آینده از OpenAPI 3.1 شده است که البته اکنون می‌توان با استفاده از برخی ترفندها به آن دست یافت.

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


👑 @gopher_academy
6
Forwarded from Software Engineer Labdon
اصطلاح requirement driven vibe coding چیست؟

https://t.me/Software_Labdon/599?single

مزیت استفاده از این روش چیست؟

https://t.me/Software_Labdon/601

مفهوم feature creep یا scope creep چیست؟

https://t.me/Software_Labdon/602

مفهوم bureaucratic در توسعه نرم افزار چیست؟

https://t.me/Software_Labdon/603


https://t.me/addlist/QtXiQlynEJwzODBk
2
🔵 عنوان مقاله
A Deep Dive Into Deeply Recursive Go

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

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

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


👑 @gopher_academy
4
Gopher Academy
🔵 عنوان مقاله A Deep Dive Into Deeply Recursive Go 🟢 خلاصه مقاله: در زبان برنامه‌نویسی گو، عدم وجود بهینه‌سازی بازگشت دم (TCO) باعث افزایش خطر بروز اورفلو‌های مرگبار در استک می‌شود. مقاله‌ جوهو به بررسی چندین سناریوی واقعی رجوع می‌کند که نتیجه آن‌ها…
در ادامه، یک خلاصه‌ی مفید و مختصر از مقاله‌ی «A deep dive into deeply recursive Go» نوشته Juho Forsén در بلاگ Mattermost:

---

🧠 مشکل اصلی: بازگشت پشته (stack exhaustion)

* Go به‌دلیل نداشتن بهینه‌سازی tail call (TCO)**، در صورت استفاده از توابع بازگشتی عمیق (deep recursion)، پشته گوروتین‌ها تا رسیدن به حد مجاز حافظه رشد می‌کند و در نهایت با **فاجعه‌ی crash (stack overflow) مواجه می‌شویم ([Mattermost.com][1]).
* در بسیاری از موارد، بازگشت پشته منجر به خطاهای امنیتی DoS شده که در نسخه‌های Go قبلی با CVE ثبت شده‌اند—از جمله در XML, protobuf و parser ([Mattermost.com][1]).

---

✍️ مثال واقعی: فراخوانی داخلی XML

* در Go نسخه‌های قبل از ۱.۱۸، تابع Decoder.Skip() در هنگام رد کردن عناصر XML به‌صورت بازگشتی عمل می‌کرد.
* این مشکل باعث crash شدن برنامه هنگام فرایند unmarshal برای داده‌های بزرگ شد.
* اشتباه مهم: نداشتن پیمایش غیر بازگشتی با ساختار صف عمق (depth via loop) تا رفع مشکل در نسخه‌های بعد ([Mattermost.com][1]).

---

📦 مثال واقعی: protobuf

* نسخه‌های قبل از ۱.۲۷.۱ در `google.golang.org/protobuf`، توابع مصرف دسته (Group) را به‌صورت بازگشتی تعریف می‌کردند.
* کافی بود جریان داده‌ای بزرگ یا هدفمند ارسال شود تا پشته تخلیه و برنامه crash شود.
* راه‌حل: معرفی حد عمق recursion (مقدار ۱۰۰ مانند جاوا/C++) در نسخه ۱.۲۸.۰ ([Mattermost.com][1]).

---

🛡 روش‌های جلوگیری

۱. بازتعریف بازگشت بازگشتی به فرم تکراری (iterative)**، یا استفاده از ساختار داده‌هایی مثل اسلایس برای شبیه‌سازی پشته روی heap.
۲. **محدودسازی عمق recursion
از طریق پارامتر یا فیلد داخلی با بررسی حداکثر عمق.
۳. طراحی معماری مقاوم در برابر crash (مثل سیستم‌های توزیع‌شده با جایگزینی فرآیندها یا کانتینرها در Kubernetes) ([Mattermost.com][1]).

---

❗️ چرا این موضوع مهم است؟

* در Go، خطای پشته قابل بازیابی (recoverable panic) وجود ندارد**؛ stack exhaustion خطایی از نوع fatal است و باعث crash فوری بدون اجرای `defer` یا امکان recovery می‌شود ([Mattermost.com][1]).
* این مسئله می‌تواند باعث **از دست رفتن داده‌ها، اختلال در سیستم و حتی بار امنیتی شود
.
42👍1