Gopher Academy
3.86K subscribers
936 photos
43 videos
280 files
2.3K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
porting the TypeScript compiler to Go

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

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

#TypeScript #برنامه_نویسی #پروژه_بازنویسی #توسعه

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
go-size-analyzer: Analyze the Size of Dependencies in Compiled Go Binaries

🟢 خلاصه مقاله:
ابزار go-size-analyzer امکان تحلیل اندازه وابستگی‌ها در باینری‌های کامپایل شده زبان Go را فراهم می‌کند. این ابزار از فرمت‌های مختلفی مانند ELF، Mach-O، PE و حتی WebAssembly پشتیبانی می‌کند، و به شما اجازه می‌دهد تا تجزیه و تحلیل دقیقی از سایز فایل‌ها به تفکیک بسته‌ها و بخش‌های داخلی آن‌ها داشته باشید. این ویژگی به توسعه‌دهندگان کمک می‌کند تا بفهمند هر بخش از فایل‌های باینری چه میزان فضا اشغال کرده و آیا بخش‌هایی وجود دارند که می‌توان بهینه‌سازی شوند یا نه.

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

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Gremlins: A Mutation Testing Tool for Small Go Modules

🟢 خلاصه مقاله:
گِرمیلینز: ابزاری برای تست جهش در ماژول‌های کوچک زبان Go

در دنیای توسعه نرم‌افزار، تست‌های واحد یکی از مهم‌ترین روش‌ها برای اطمینان از صحت کد است. ابزار "گِرمیلینز" روشی متفاوت و نوآورانه برای ارزیابی کیفیت این تست‌ها ارائه می‌دهد. این ابزار با وارد کردن اختلالاتی کوچک در کد و در کنار آن، تغییراتی در کدهای مرتبط، فرآیندی شبیه به استرس تست را انجام می‌کند. هدف این است که بررسی کند آیا تست‌ها قادرند تغییرات ناگهانی و احتمالی را شناسایی و نمره دهند؛ یعنی چقدر از صحت و استحکام آن‌ها محافظت می‌کنند. هرچقدر این تغییرات بیشتر باشد، نشان‌دهنده ضعف در مجموعه تست‌ها و نیاز به اصلاح است.

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

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

#تست_جهش #ابزار_نرم_افزار #GoLang #توسعه_نرم‌افزار

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


👑 @gopher_academy
1
🔵 عنوان مقاله
reflects on 12 years of building Ebitengine

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

همچنین، تعدادی از بازی‌هایی که با بهره‌گیری از Ebitengine در سال ۲۰۲۵ منتشر شده‌اند، معرفی می‌شوند. این بازی‌ها نمونه‌هایی از توانایی‌های فنی و خلاقیت‌های توسعه‌دهندگان هستند و نشان می‌دهند که چگونه Ebitengine به عنوان یک ابزار قدرتمند، روند ساخت بازی‌های متنوع را تسهیل کرده است.

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

#بازی_سازی #Ebitengine #توسعه_بازی #کد_باز

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


👑 @gopher_academy
1🔥1
شما نتفلیکس نیستید! پس چرا از روز اول با پیچیدگی میکروسرویس‌ها خودکشی می‌کنید؟

صنعت نرم‌افزار در حال یک بازگشت عقلانی به سمت معماری‌های یکپارچه مدرن (Modular Monolith) است. جایی که یاد می‌گیریم معماری کد (Logical) باید از معماری استقرار (Physical) کاملا جدا باشه.

در اولین مقاله‌ام در ویرگول، با کالبدشکافی پروژه اپن‌سورس Quick Connect، معماری Code-Level Monolith رو معرفی کردم. معماری‌ای که حلقه گمشده بین سادگی و مقیاس‌پذیریه.

در این معماری:
۱. امروز: با سرعت بالا و هزینه کم به صورت یکپارچه دپلوی می‌کنید
۲. فردا: بدون بازنویسی کد و فقط با تغییر کانفیگ، ماژول‌های پرفشار رو جدا کرده و میکروسرویس می‌کنید (مثل Grafana Loki).

با این رویکرد، یکبار برای همیشه پرونده جنگ مونولیت علیه میکروسرویس رو ببندید!

مطالعه کامل مقاله (فارسی و انگلیسی):

ویرگول:
https://virgool.io/@alirezafeyze44/code-level-monolith-art-flexible-deployment-yad18surpcil

Dev.to:
https://dev.to/alireza_feizi_2aa9c86cac4/code-level-monolith-the-hybrid-architecture-the-art-of-flexible-deployment-2jm2

| <Alireza Feizi/>

👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
🔥5👍32
🔵 عنوان مقاله
Kaiju Engine: A 2D and 3D Game Engine in Go

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

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

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

#موتور_بازی #بازی_سازی #Vulkan #برنامه‌نویسی

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


👑 @gopher_academy
2
🎙️ عنوان پادکست:
🪿 Goose noose? 🤘 Excellent! 🎸
خلاصه پادکست:
Conference videos🇬🇧 GopherCon UKFyneConfProposals💧 Accepted: add new goroutine leak profile as a GOEXPERIMENTFull discussion of this feature in Episode 127🪿 Added to minutes: add GOOS=noos bare metal support🫣 Added to minutes: Add bytes.Buffer.Peek👍 Added to minutes: Add must.DoBlog posts✈️ Go blog: Flight Recorder in Go 1.25 by Carlos Amedee and Michael Knyszek🫖 We tried Go's experimental Green Tea garbage collector and it didn't help performance by Zach Musgravedo v2.0...
👍1
🚀 پروژه چت Real-Time با Go منتشر شد!

۱۰۰K کاربر همزمان
۸۰۰۰ پیام/ثانیه
WebSocket + MessagePack
PostgreSQL Replication
RabbitMQ Cluster
Redis + S3
Docker Ready
کاملاً Open Source

🔗 GitHub
👉 https://github.com/mehdi124/chat-service

📝 Medium
👉 https://mehdi124.medium.com/building-a-scalable-real-time-chat-service-in-go-1f4cbee48b2a


⭐️ Star یادتون نره!

#golang #opensource #chat #websocket


👑 @gopher_academy
🔥51👍1🏆1🍾1👾1
Gopher Academy
توضیحات👇👇👇👇 👑 @gopher_academy
این تصویر ساختار کامل درخت radix tree در مدیریت حافظه‌ی Go روی معماری linux/amd64 را نشان می‌دهد — همان جایی که allocator از خلاصه‌ها (*summaries*) برای دنبال‌کردن وضعیت صفحات حافظه استفاده می‌کند.


🌐 فضای آدرس مجازی

در معماری x86-64 (amd64)**، فضای آدرس مجازی برابر است با:

> 2⁴⁸ بایت = 256 ترابایت

این یعنی Go می‌تواند آدرس‌های حافظه را از ۰ تا 256TB در محدوده‌ی مجازی نگاشت کند.

🌳 ساختار درخت Radix

در این معماری، درخت **۵ سطح دارد (از Level 0 تا Level 4).

* سطح 0 تا 3: نودهای داخلی هستند که از ادغام ۸ فرزندشان تشکیل می‌شوند.
* سطح 4: برگ‌ها (leaf nodes) هستند که هرکدام یک bitmap شامل 512 صفحه را خلاصه می‌کنند.

هر صفحه (page) در Go برابر است با 8KB.

📦 اندازه‌ی خلاصه‌ها (Summaries)

هر نود خلاصه‌ای از نوع (start, max, end) نگه می‌دارد:

* start: تعداد صفحات آزاد از ابتدای بخش
* end: تعداد صفحات آزاد از انتهای بخش
* max: طول بزرگ‌ترین بخش آزاد در میانه‌ی آن

این سه مقدار به Go اجازه می‌دهد به سرعت بفهمد در هر بخش از حافظه چند صفحه‌ی پیوسته‌ی آزاد وجود دارد.


⚙️ نکته‌ی مهم:

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

👑 @gopher_academy
👍1🐳1🏆1
🔵 عنوان مقاله
RobotGo 1.0: Native Cross-Platform GUI Automation

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

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

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

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

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


👑 @gopher_academy
Forwarded from VIP
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!

اگر به موضوعات زیر علاقه‌مندی:

🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصت‌های شغلی ریموت (خارجی و داخلی)

ما برات یه مجموعه کانال‌های تخصصی ساختیم تا همیشه به‌روز، حرفه‌ای و الهام‌بخش بمونی!
📚 یادگیری، فرصت، شبکه‌سازی و پیشرفت، همش اینجاست...

📌 از این لینک همه چنل‌هامونو یه‌جا ببین و جوین شو:

👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
🍾1
🔵 عنوان مقاله
Compressing Embedded Files in Go

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

در مقاله اخیر خبرنامه Golang Weekly، روش‌های مختلفی برای فشرده‌سازی فایل‌های جاسازی‌شده در برنامه‌های نوشته شده با Go مورد بررسی قرار گرفته است. یکی از راهکارهای مرسوم، استفاده از کتابخانه‌های فشرده‌سازی مانند gzip و zip است که کار را بسیار ساده و مؤثر می‌کند. این روش‌ها امکان افزودن فایلی فشرده شده را به پروژه و استخراج آن در زمان اجرا فراهم می‌کنند، بدون اینکه تأثیر زیادی بر عملکرد برنامه داشته باشند.

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

در نهایت، نویسنده تأکید کرده است که با بهره‌گیری از ابزارهای موجود و رعایت نکات فنی، می‌توان به راحتی فایل‌های تعبیه‌شده در برنامه‌های Go را با کاهش حجم مناسب، عملکرد بهبود یافته و نگهداری آسان‌تر مدیریت کرد. این روش‌ها برای توسعه‌دهندگان بسیار ارزشمند است و می‌تواند روند توسعه نرم‌افزار را تسریع کند.

#فشرده‌سازی #برنامه‌نویسیGo #کدمنبع #توسعه‌دهندگان

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
gorush 1.20: A Push Notification Server, Built on Gin

🟢 خلاصه مقاله:
گروش ۱.۲۰: سرور نوتیفیکیشن‌های پوش (Push Notification) بر پایه فریم‌ورک Gin

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

از ویژگی‌های برجسته این سرور می‌توان به پشتیبانی از سرویس‌های محبوب مانند APNS اپل، Firebase Cloud Messaging (FCM) و HMS Push Server شرکت هوآوی اشاره کرد. این امکان به توسعه‌دهندگان اجازه می‌دهد پیام‌های اطلاع‌رسانی را به کاربران آی‌او‌اس، اندروید و دیگر پلت‌فرم‌ها به راحتی ارسال کنند. در نتیجه، گروش ۱.۲۰ یک ابزار جامع و کارآمد در حوزه مدیریت و ارسال نوتیفیکیشن است.

#نوتیفیکیشن #پوشینگ #توسعه_دهندگان #فناوری

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


👑 @gopher_academy
🚀 کد تمیز از AI بدون هزینه اضافه!

♥️این پرامت برای کاهش هزینه مصرف توکن و دریافت کد خالص و کاربردی طراحی شده است.

💸دیگه وقتی از Claude یا ChatGPT یا هر هوش مصنوعی دیگری برات کد تولید میکنه
به صورت پیش فرض به ازای هر تغییری در کد با README، فایل تست، و هزار تا فایل دیگه که باعث افزایش هزینه مصرفی توکن میشه دست و پنجه نرم کنی

⚡️ با این پرامپت دقیقاً چی میگیری؟
فقط کد اصلی و کاربردی
بدون فایل‌های اضافی
صرفه‌جویی در مصرف توکن

چی نمیگیری؟
•فایل های README و documentation
• تست‌ها و mock data
• فایل‌های Docker و CI/CD
• کامنت‌های طولانی
• کدهای boilerplate غیرضروری

🎯 برای چی مناسبه؟
• کدنویسی سریع و کارآمد
• کاهش هزینه API
• پروژه‌های شخصی و استارتاپی


⭐️ مناسب برای:
تمام مدل‌های AI

👇👇 github 👇👇
https://github.com/mrbardia72/minimal-code-ai


#AI #Coding #Prompt #Developer
3
🔵 عنوان مقاله
Go Proposal: Secret Mode

🟢 خلاصه مقاله:
حالت مخفی در Go 1.26 قرار است به عنوان یک ویژگی جدید ارائه شود و در کنار یک پرچم (flag) فعال می‌شود. این حالت به توسعه‌دهندگان امکان می‌دهد تا تابعی را اجرا کنند که پس از اتمام، به طور خودکار حافظه موقتی مربوط به آن، شامل پشته و ثبات‌ها، پاک‌سازی می‌شود. هدف اصلی این ویژگی حفاظت از اطلاعات حساس است، به طوری که این اطلاعات حتی برای مدت کوتاهی در حافظه باقی نماند و امکان سوءاستفاده یا مشاهده نادرست محدود شود.

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

#امنیت #برنامه‌نویسی #گو #حافظه

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


👑 @gopher_academy
👍3
بهینه سازی گولنگ برای سیستم های پردازشی با حجم بالای داده

این مقاله نکات جالبی نوشته برای وقتی که یه سرویس گولنگی داری که باید real-time از دیتابیس Postgres بخونه و به Elasticsearch بنویسه. البته نکاتی که گفته کاربردشون محدود به این ابزارها نمیشه و در سناریوهای مشابه هم میشه استفاده شون کرد.

طبق تجربه در این مسیر احتمالا سه تا چالش اصلی داری: دیسک دیتابیس که پر میشه اگه کند بخونی، حافظه که منفجر میشه اگه زیاد buffer کنی، و GC که CPU رو می‌بلعه اگه زیاد allocate کنی.

یکی از اولین جاهایی که باید بهینه کنی، JSON serialization هست. کتابخانه استاندارد encoding/json امن و راحته، ولی برای حجم بالا کند میشه. جایگزین‌هایی مثل jsoniter با کاهش reflection overhead می‌تونن توان عملیاتی رو به شکل محسوسی بالا ببرن. البته جایگزین کردنش چالش هایی هم داره و باید edge case ها رو تست کنی.

قدم بعدی sync.Pool هست. هر event که از replication slot میاد، struct میسازی، buffer برای JSON میگیری، slice و map میسازی. زیر لود بالا، این آبشار allocationها GC رو دیوونه میکنه. با pool کردن bufferها و structهای پرتکرار، تعداد allocationها رو به شدت کم میکنی و GC pause time میاد پایین.

همچنین GC tuning باید آخرین کار باشه، نه اولین. اول allocationها رو کم کن، بعد serialization رو بهینه کن، بعد اگه هنوز spike داشتی برو سراغ تنظیمات GC. از Go 1.25 هم یه GC آزمایشی جدید اومده که برای سرویس‌های throughput-heavy مناسبه.

https://packagemain.tech/p/golang-optimizations-for-highvolume?triedRedirect=true

@ | <Hossein Nazari/>
🐳21
Gopher Academy
🔵 عنوان مقاله Go Proposal: Secret Mode 🟢 خلاصه مقاله: حالت مخفی در Go 1.26 قرار است به عنوان یک ویژگی جدید ارائه شود و در کنار یک پرچم (flag) فعال می‌شود. این حالت به توسعه‌دهندگان امکان می‌دهد تا تابعی را اجرا کنند که پس از اتمام، به طور خودکار حافظه…
🚨 ویژگی امنیتی مهم در Go 1.26 🚨

پایان نگرانی از لو رفتن کلیدها در حافظه!

در Go 1.26 یک پکیج جدید به اسم `secret` معرفی شده که مشکل قدیمی باقی ماندن داده‌های حساس در RAM رو حل می‌کنه 🔐

ا secret.Do چیه؟

با استفاده از:

secret.Do(func() {
// sensitive code
})


هر داده حساسی که داخل این بلاک ساخته بشه:

* بعد از اجرا از حافظه کاملاً پاک میشه
* حتی اگر panic رخ بده
* شامل کلید خام، AES state و round keys

🧠 مثال کاربردی

رمزنگاری پیام با AES-GCM و کلید موقت:

* کلید ۳۲ بایتی به‌صورت موقت ساخته میشه
* اCipher و state داخلی AES محافظت میشه
* فقط ciphertext از بلاک خارج میشه
* کلید و state بعدش zeroize میشن

مناسب برای:


* Password handling
* Token generation
* Private keys
* Crypto & Auth services
* Zero-trust systems



🔥 چرا مهمه؟

قبل از Go 1.26:

* اGarbage Collector حافظه رو صفر نمی‌کرد
* کلیدها ممکن بود توی memory dump لو برن

حالا:
ا API رسمی
بدون unsafe
امنیت واقعی در سطح حافظه


📌 نکته مهم:
این قابلیت برای پاک‌سازی امن حافظه‌ست**، نه جایگزین طراحی درست رمزنگاری یا key exchange.

🚀 اگر با Go کار می‌کنی، این feature رو **جدی بگیر

امنیت از RAM شروع میشه!

#golang #go1_26 #security #cryptography #backend #programming
👍73🔥3
🔵 عنوان مقاله
discussed their favorite 'don't do this' lessons

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

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

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

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

#برنامه‌نویسی #پروژه_موفق #درسهای_توسعه #زبان_اگو

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Go Escape Analysis and Why My Function Return Worked

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

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

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

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

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


👑 @gopher_academy
1
بازیِ برنامه‌نویسی داره کلاً عوض میشه و اگر حواستون نباشه، ممکنه جا بمونید!
دانشگاه استنفورد یه دوره جدید راه انداخته به اسم «The Modern Software Developer» که حرف حسابش اینه: دورانِ صرفاً «کد زدن» با دست داره تموم میشه. الان دیگه شما باید یاد بگیرید چطوری با AI Agentها کار کنید، چطوری از ابزارهایی مثل Cursor و Warp استفاده کنید و در واقع به جای کدنویس، «معمار» و «مدیر» هوش مصنوعی باشید.

تو این دوره دقیقاً دارن یاد میدن که چطور فرایند توسعه نرم‌افزار داره از «تایپ کردن سینتکس» به «تعامل با AI» برای ساخت سیستم‌های پیچیده تغییر می‌کنه. خلاصه اینکه آینده‌ی شغلی شما دیگه فقط به دونستن الگوریتم نیست، به اینه که چقدر خوب می‌تونید از این ابزارهای جدید کار بکشید.

تمام مطالب اعم از اسلایدها و پروژه ها را هم گذاشتند.
پیشنهاد می‌کنم حتماً یه سر به سرفصل‌هاش بزنید تا ببینید دنیا دست کیه:
https://themodernsoftware.dev

| <Mehdi Allahyari/>
8👍2