Gopher Academy
3.86K subscribers
935 photos
43 videos
280 files
2.27K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
Forwarded from Software Engineer Labdon
تایم اوت بالا در سرویس‌ها: مشکل از کیه؟ API Manager یا Backend؟ ️

یکی از رایج‌ترین سؤال‌ها در تیم‌های یکپارچه‌سازی اینه که:
«وقتی زمان پاسخ‌دهی یک سرویس زیاده، من که API Manager یا ESB هستم Timeout رو روی چند ثانیه تنظیم کنم؟»

ظاهرش ساده‌ست؛ ولی پشتش یک نکته مهم وجود داره:
تایم اوت رو ESB یا API Manager تعیین نمی‌کنه؛ معماری سیستم تعیین می‌کنه.
خیلی وقت‌ها Timeout بالا فقط مشکل "طولانی بودن پردازش" نیست، بلکه نشونه یک مشکل بزرگ‌تره.

چرا نباید Timeout رو زیاد کنیم؟
اگر Backend کند باشه، طولانی‌کردن Timeout فقط مشکل رو پنهان می‌کنه.
مثلاً Lag در گیت‌وی باعث می‌شه کانکشن‌ها قفل بشن و Load کل سیستم بالا بره.
صف درخواست‌ها روی گیت‌وی ساخته می‌شه و کل سیستم ناپایدار می‌شه.

چه کارهایی باید انجام بشه؟
1- ریشه مشکل کندی سرویس رو پیدا کن
کوئری‌های سنگین دیتابیس
تعداد I/O زیاد
سرویس‌های زنجیره‌ای کند
یا Memory leak
یا Thread pool ناکافی
تا وقتی این‌ها درست نشه، هیچ تایم اوتی مساعد نخواهد بود.

2- تایم‌اوت (Timeout) باید متناسب با نوع سرویس باشه
سرویس‌های synchronous مثل اطلاعات مشتری: ۳–۱۰ ثانیه
سرویس‌های پردازش سنگین: اصلاً synchronous نباید باشن

3- کارهای سنگین رو asynchronous کن
برای عملیات طولانی از:
Kafka
Redis queue
Celery
SQS
Internal event bus
استفاده کن و نتیجه رو بعداً تحویل بده.

4- بخش API Manager محل پردازش نیست
بخش ESB/WSO2/APIM فقط باید:
درخواست رو مدیریت کنه
امنیت رو برقرار کنه
نرخ و دسترسی رو کنترل کنه
نه اینکه ۳۰ ثانیه منتظر بمونه یک Backend تموم بشه!

5- تایم‌اوت‌های چندگانه تنظیم کن
Gateway timeout
Backend timeout
Load balancer timeout
Client timeout
این‌ها باید یکپارچه و هماهنگ باشن.

نتیجه
اگر یک سرویس کند است، بهترین راه‌حل "زیاد کردن Timeout" نیست.
 راه‌حل طراحی درست و انتقال پردازش‌های سنگین به async است.
تایم‌اوت باید حداقلی، منطقی و قابل پیش‌بینی باشد، نه پنهان‌کننده مشکل.

<Mobin Mokhtarzadeh/>
-----------
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
2👍1
🔵 عنوان مقاله
The Go team's latest meeting notes

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

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

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

#برنامه_ریزی_۲۰۲۶ #پشتیبانی_رایگان #مقیاس‌پذیری #پشتیبانی_SIMD

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


👑 @gopher_academy
2👍2
Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
🔵 عنوان مقاله
v0.45.0 of golang.org/x/crypto

🟢 خلاصه مقاله:
نسخه ۰.۴۵.۰ بسته golang.org/x/crypto منتشر شده است که به منظور برطرف‌سازی دو مسئله امنیتی در بخش‌های crypto/ssh و crypto/ssh/agent طراحی شده است. این بروزرسانی با هدف افزایش ایمنی و جلوگیری از بهره‌برداری‌های مخرب از آسیب‌پذیری‌های شناخته شده، منتشر شده است. کاربران و توسعه‌دهندگانی که از این بسته استفاده می‌کنند، توصیه می‌شود نسخه جدید را به زودی به‌کار بگیرند تا سیستم‌هایشان در مقابل خطرات احتمالی محافظت شود.

#امنیت #گولنگ #کدباز #بروزرسانی

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


👑 @gopher_academy
1
🔵 عنوان مقاله
A Million Ways to Die From a Data Race in Go

🟢 خلاصه مقاله:
در دنیای برنامه‌نویسی، خطاهای ناشی از رقابت داده‌ها (data race) یکی از مشکلات رایج و پرچالش به حساب می‌آیند که می‌توانند سبب مرگ برنامه شوند. در مقاله‌ای با عنوان «یک میلیون راه برای مردن در اثر رقابت داده در زبان گو» به راحتی می‌توان به تاثیرات منفی این خطاها پی برد. این مشکلات معمولا در برنامه‌هایی رخ می‌دهند که چندین نخ (thread) همزمان دسترسی همزمان به داده‌های مشترک دارند، بدون اینکه مکانیزم‌های حفاظتی کافی برای جلوگیری از تداخل‌ها اعمال شده باشد. نتیجه این خطاها غالباً unpredictable است و ممکن است باعث کرش سیستم، از دست دادن داده‌ها یا رفتارهای عجیب و غریب شود.

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

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

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

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

#برنامه‌نویسی #گولنگ #مدیریت_همزمانی #کدنویسی

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


👑 @gopher_academy
🔵 عنوان مقاله
learn more about Go's release cycle here.

🟢 خلاصه مقاله:
بیشتر در مورد چرخه عرضه Go و زمان‌بندی بروزرسانی‌های این زبان برنامه‌نویسی بیاموزید. در خبرنامه هفتگی Golang Weekly، جدیدترین مقالات و به‌روزرسانی‌ها درباره روند توسعه و انتشار نسخه‌های Go منتشر می‌شود. داشتن آگاهی از این فرایندها کمک می‌کند توسعه‌دهندگان بهتر برنامه‌ریزی کرده و از امکانات جدید بهره‌مند شوند.

#زبان_برنامه_نویسی #Golang #بروزرسانی #توسعه_نرم‌افزار

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Goyek 3.0: A Go Library for Task Automation

🟢 خلاصه مقاله:
کتابخانه گویک ۳.۰: یک کتابخانه قدرتمند برای خودکارسازی وظایف در گولنگ

کتابخانه گویک ۳.۰ یک ابزار ساده و در عین حال چندپلتفرم است که برای خودکارسازی وظایف طراحی شده است. این کتابخانه، مشابه ابزارهایی مانند make، امکان تعریف وظایف را در قالبی مشابه زبان قالب‌سازی Cobra فراهم می‌کند. در این سیستم، وظایف به گونه‌ای تعریف می‌شوند که فضای تعبیر و اجرای آن‌ها بسیار واضح و قابل فهم است، و اقدامات انجام‌شده حس یک تست واحد را دارد. نسخه سوم این ابزار، برخی تغییرات قابل توجهی داشته که باید در هنگام بروزرسانی مورد توجه قرار گیرد.

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

#خودکارسازی #گولنگ #برنامه‌نویسی #توسعه

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


👑 @gopher_academy
🔵 عنوان مقاله
Advancing Go Garbage Collection with Green Tea

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

مایکل در توضیحات خود به معرفی رویکرد جدیدی می‌پردازد که به‌نام "چای سبز" (Green Tea) شناخته می‌شود. این تکنیک با هدف بهبود کارایی و کاهش وقفه‌های ناشی از جمع‌آوری زباله در نسخه جدید Go 1.26 طراحی شده است. این روش تلاش می‌کند فرآیند جمع‌آوری زباله را به شکلی مؤثرتر و کمتر متمرکز بر توقف برنامه انجام دهد، اما در عین حال عملکرد کلی را حفظ کند یا حتی بهبود بخشد. در نتیجه، توسعه‌دهندگان می‌توانند برنامه‌هایی سازگارتر، سریع‌تر و کارآمدتر بنویسند.

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

#آموزش_برنامه‌نویسی #زبان_برنامه‌نویسی_گو #جمع‌آوری_زباله #توسعه_نرم‌افزار

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


👑 @gopher_academy
🔵 عنوان مقاله
reporting secrets in unlisted GitHub Gist posts too

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

مقاله اخیر در خبرنامه Golang Weekly به این مسئله اشاره می‌کند که چرا باید با دقت بیشتری به یادداشت‌های Gist غیر قابل لیست کردن توجه کنیم. افراد ممکن است تصور کنند که این یادداشت‌ها تنها برای خودشان باقی می‌مانند، اما اگر تنظیمات اشتباه باشد یا لینک‌های مستقیم به آن‌ها در اختیار دیگران قرار گیرد، اطلاعات حساس، مثل کلیدهای API یا کدهای رمزگذاری، ممکن است فاش شود. بنابراین، کنترل و نظارت بر این نوع مطالب اهمیت ویژه‌ای دارد تا از افشای ناخواسته اسرار کسب‌وکار و امنیتی جلوگیری شود.

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

#امنیت_نرم‌افزار #GitHubGist #حریم_خصوصی #کدهای_مخفی

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


👑 @gopher_academy
🔵 عنوان مقاله
Why I Built My Own Static Site Generator in Go

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

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

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

#توسعه_وب #برنامه_نویسی_گوا #مولد_سایت #ابزارهای_مخنصی

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


👑 @gopher_academy
🔵 عنوان مقاله
Graceful Shutdown in Go

🟢 خلاصه مقاله:
در برنامه‌نویسی به زبان Go، مدیریت صحیح پایان‌ کار برنامه اهمیت زیادی دارد. یکی از روش‌های موثر برای اطمینان از بسته شدن سالم برنامه، استفاده از مفهوم “Graceful Shutdown” است. این روش کمک می‌کند تا مواردی مانند بستن فایل‌ها، خاتمه دادن به درخواست‌های فعال و آزادسازی منابع به شکل منظم و امن انجام شود، و از بروز خطا یا از دست رفتن داده‌ها جلوگیری گردد.

در مقاله اخیر خبرنامه Golang Weekly، نحوه پیاده‌سازی shutdown مؤثر و امن در برنامه‌های Go مورد بررسی قرار گرفته است. این فرآیند معمولاً با کنترل سیگنال‌های سیستم، مانند SIGINT یا SIGTERM، آغاز می‌شود. برنامه با دریافت این سیگنال، روند پایان‌کار را آغاز می‌کند و ابتدا کلیه درخواست‌های در حال پردازش را تمام می‌کند، سپس منابع را آزاد می‌سازد و در نهایت خارج می‌شود. این رویکرد به توسعه‌دهندگان کمک می‌کند تا برنامه‌هایی پایدارتر و قابل اطمینان‌تر بنویسند که بتوانند بدون مشکل در فرآیندهای 종료، کار خود را به پایان برسانند.

در این مقاله، ابزارها و روش‌های مختلفی برای پیاده‌سازی این مرحله نهایی در برنامه‌های Go معرفی شده است، از جمله استفاده از کانال‌ها، WaitGroups و context برای هماهنگ‌سازی پایان عملیات. رعایت این نکات کلیدی، خصوصاً در سرویس‌های وب و برنامه‌های سروری، می‌تواند به بهبود کارایی و کاهش خطاهای پس‌زمینه کمک کند. در نتیجه، هر برنامه‌نویس Go باید به اهمیت “Graceful Shutdown” واقف باشد و از بهترین روش‌ها برای پیاده‌سازی آن بهره گیرد.

#برنامه‌نویسی_گو #Shutdown_سلامت #کدنویسی_پایدار #نکات_مهم

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


👑 @gopher_academy
1👍1🍾1
Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
👾151
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Kagenti: Cloud-native AI

🟢 خلاصه مقاله:
کاینجنتی یک پلتفرم میان‌افزاری (میان‌پایه) مبتنی بر ابر است که برای استقرار و مدیریت عوامل هوشمند چندچارچوبی هوش مصنوعی طراحی شده است. این پلتفرم به صورت بومی در محیط ابری ساخته شده و امکان راه‌اندازی و سازماندهی این عوامل را بر روی سیستم‌های کلاود مبتنی بر کوبرنتیس فراهم می‌کند. کاینجنتی از رابط‌های برنامه‌نویسی استاندارد REST استفاده می‌کند و با پشتیبانی از شناسه‌های دینامیک Managed by SPIRE و پروتکل‌های A2A و MCP، امنیت و سازگاری بالا را فراهم می‌آورد.

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

#هوش_مصنوعی #کلاود #کوبنتیس #پلتفرم‌های_باز

🟣لینک مقاله:
https://ku.bz/PtCLJSqjZ


👑 @DevOps_Labdon
1