Gopher Academy – Telegram
Gopher Academy
3.89K subscribers
941 photos
43 videos
280 files
2.35K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
go tool is One of Go's Best Additions in Years

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

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

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

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

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

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


👑 @gopher_academy
1🏆1
2🏆1
📌 ا Green Tea GC چیست؟

ا Green Tea یک جمع‌کننده زباله (Garbage Collector) جدید و تجربی (experimental) در Go است که در Go 1.25 عرضه شده و می‌توان آن را با flag GOEXPERIMENT=greenteagc فعال کرد.

هدف اصلی Green Tea این است که:
هزینه‌ی CPU برای جمع‌آوری زباله را کاهش دهد
کارایی حافظه را با Locality بهتر بالا ببرد
و جمع‌آوری زباله را با الگوهای مدرن سخت‌افزار همگام‌تر کند

⚙️ چرا Green Tea ایجاد شد؟

در GC معمولی :

🔹ا Garbage Collector با روش classique به صورت mark-sweep concurrent کار می‌کند.
🔹 این روش برای “پیمایش گراف اشاره‌گرها (pointers)” طراحی شده است که در سیستم‌های کوچک خوب عمل می‌کند، اما در سیستم‌های چند هسته‌ (multi-core) و حجم زیاد heap مشکل دارد:

* پردازش پراکنده‌ی حافظه باعث کاهش شدید cache locality می‌شود
*ا CPU زمان زیادی منتظر می‌ماند تا داده‌ها از حافظه اصلی بارگذاری شوند (cache misses)

به عبارت دیگر، GC سنتی نمی‌داند حافظه چطور در RAM ذخیره شده است و همین باعث کاهش کارایی و مصرف غیرضروری CPU می‌شود.

🧠 3) تفاوت اصلی Green Tea با GC سنتی Go

📌 جمع‌آوری به جای *Objects*، بر اساس *Memory Blocks*

در GC سنتی، کار GC این‌گونه است:

ترسیم گراف → دنبال کردن اشاره‌گرها به صورت پراکنده


اما Green Tea به جای اینکه روی هر شیء (object) تمرکز کند، حافظه را در بلوک‌های بزرگ‌تر (spans) اسکن می‌کند و کار را روی آن‌ها انجام می‌دهد:

برای هر span:

اscan کل بلوک به صورت مرتب


این یعنی:
✔️ داده‌هایی که نزدیک هم هستند با هم پردازش می‌شوند
✔️ا cache locality بالاتر می‌رود
✔️ا CPU زمان کمتری منتظر کندی حافظه می‌ماند ([Medium][2])

🧩 4) چه مزایایی دارد؟

بر اساس پست رسمی Go و تست‌ها:

🚀 1. کاهش هزینه‌ی GC

بسیاری از برنامه‌ها 10% تا حتی 40% زمان صرفه‌جویی در GC دیده‌اند.

🧠 2. افزایش Cache Locality

با پردازش بلوک‌های حافظه به جای اشاره‌گرهای پراکنده،
ا CPU کمتر منتظر می‌ماند تا داده از RAM بیاید.

⚙️ 3. آماده برای سخت‌افزارهای مدرن

این روش می‌تواند از SIMD برای اسکن سریع‌تر حافظه استفاده کند که در سخت‌افزارهای جدید عملکرد عالی دارد.

🌀 4. بهتر روی چند هسته

به خاطر روش span-based، می‌توان کار GC را بهتر بین هسته‌ها تقسیم کرد (work-stealing و parallel).

⚠️ 5) محدودیت‌ها و نکات عملی

🔹 تجربی است: هنوز پیش‌فرض نیست و باید با GOEXPERIMENT=greenteagc فعال شود.
🔹 در بعضی بارهای کاری (workloads) ممکن است اثر خاصی نداشته باشد یا حتی کمی بدتر شود، مخصوصاً زمانی که حافظه به شکل پراکنده‌تر استفاده شود.
🔹 هدف تیم Go این است که در Go 1.26 به‌صورت پیش‌فرض فعال شود اگر بازخورد کافی دریافت کنند.


📌 جمع‌بندی

ا Green Tea Garbage Collector نمایانگر یک گام بزرگ در طراحی حافظه‌ی Go است:
کاهش مصرف CPU در GC
استفاده بهتر از حافظه و Cache
انطباق با سخت‌افزارهای چند هسته‌ای
و در نهایت، **تبدیل شدن به GC پیش‌فرض در نسخه‌های آینده Go**، اگر بازخوردها مثبت باشد.

👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
👍4
🔵 عنوان مقاله
The “10x” Commandments of Highly Effective Go

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

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

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

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

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


👑 @gopher_academy
Gopher Academy
🚀 کد تمیز از AI بدون هزینه اضافه! ♥️این پرامت برای کاهش هزینه مصرف توکن و دریافت کد خالص و کاربردی طراحی شده است. 💸دیگه وقتی از Claude یا ChatGPT یا هر هوش مصنوعی دیگری برات کد تولید میکنه به صورت پیش فرض به ازای هر تغییری در کد با README، فایل تست، و…
☝️☝️☝️☝️
یه سری تغییرات و بهبود جدید اضافه کردم 👇
🔹 اضافه شدن پیام Git استاندارد به‌همراه توضیح تغییرات
🔹 بهبود ساختار کلی ریپو
🔹 یه پرامت برای پشتیبانی از تمام زبان‌های برنامه‌نویسی
🔹یه پرامت فقط مختص ستفاده از Golang
🔹یه پرامت هم اضافه شد برای بخش CI/CD Pipeline
👍1
🔵 عنوان مقاله
numerous videos of talks from GopherCon 2025

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

در حالی که در سال نو میلادی قصد داریم برخی از این سخنرانی‌ها را در کنار هم معرفی کنیم، هم‌اکنون ۱۴ عنوان سخنرانی از این کنفرانس در دسترس است که می‌توانید تماشا کنید و از دانش و دیدگاه‌های متخصصان بهره‌مند شوید. تماشای این ویدئوها فرصت بی‌نظیری است برای هر توسعه‌دهنده‌ای که می‌خواهد مهارت‌های خود را در زمینه Go تقویت کند و با آخرین روندهای فنی آشنا شود.

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

#برنامه‌نویسی #گو #کنفرانس_فنی #توسعه_فناوری

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


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

🟢 خلاصه مقاله:
نسخه ۱.۰ ربات‌گو: اتوماسیون گرافیکی چندپلتفرمی بومی

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

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

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

#اتوماسیون #رباتگو #گرافیکى #چندپلتفرم

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


👑 @gopher_academy
🔵 عنوان مقاله
An Interactive Tour of Go 1.25

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

در این سفر تعاملی، قرار است ویژگی‌ها و بهبودهای نسخه ۱.۲۵ با زبانی روشن و جزئیات کافی بررسی شود. هدف آن است که باسلیقه‌ترین توسعه‌دهندگان هم بتوانند به شکل قابل فهم و جذابی با تغییرات این نسخه آشنا شوند و بهره‌مند شوند. با ادامه این راهنمای تعاملی، نگاهی دقیق‌تر به بهبودهای فنی، قابلیت‌های جدید و تغییراتی که توسعه برنامه‌های به مراتب بهتر را امکان‌پذیر می‌سازد، خواهیم داشت.

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

#برنامه‌نویسی #Go زبان #نسخه۱.۲۵ #توسعه‌دهندگان

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


👑 @gopher_academy
🔵 عنوان مقاله
How Go 1.24's Swiss Tables 'Saved Us Hundreds of Gigabytes'

🟢 خلاصه مقاله:
در نسخه 1.24 زبان برنامه‌نویسی Go، یک تغییر مهم و تاثیرگذار صورت گرفت که نقش قابل توجهی در بهبود کارایی و کاهش مصرف حافظه داشت. این نسخه از زبان، با معرفی پیاده‌سازی نوع جدیدی از جدول‌های «سوئیس» (Swiss Tables)، توانست میزان مصرف حافظه در برنامه‌های مبتنی بر نقشه‌های درون حافظه‌ای (درایم‌مپ) را به طور چشمگیری کاهش دهد.

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

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

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

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


👑 @gopher_academy
4
🎙️ عنوان پادکست:
🎄 An Adventful Sweet 16 for Go! 🎂
خلاصه پادکست:
golang.org/x/crypto v0.45.0 released🎂 Blog post: Go's Sweet 16macOS 12 losing support in Go 1.27🗒️ Interview with Neil VassNeil's notesLearn Go with TestsChris Do Dev on YouTubeJonathan's joke assert library ★ Support this podcast on Patreon ★ ]]>
👍3
Forwarded from AI Labdon
https://youtu.be/HfJwezWWu08?t=426
یعنی این تیکه از صحبت های The PrimeTime انقدر دارک بود که دارم ناامید میشم به گیتهاب
اینکه CEO کل سازمان گیتهاب داره با AI میره جلو
حتی پالمر نقش پایین تری داره و این موضوع خیلی عجیبه
یعنی کل گیتهاب داره با هدایت هوش مصنوعی میره جلو؟
شهر عجیبیه

<Shayan GeeDook/>

👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
1👾1
🔵 عنوان مقاله
A No Nonsense Guide to Go Project Layout

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

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

در نهایت، این مقاله که در سال ۲۰۲۴ نوشته شده و در سال ۲۰۲۵ به‌روزرسانی شده، راهنمایی عملی و عملی برای برنامه‌نویسان و تیم‌های توسعه است که می‌خواهند از ساختارهای بی‌دلیل پیچیده پرهیز کرده و پروژه‌هایی ساده، قابل مدیریت و توسعه‌پذیر داشته باشند. رعایت این نکات ساده ولی مؤثر می‌تواند تفاوت قابل توجهی در کیفیت و بهره‌وری تیم‌های فنی ایجاد کند.

#برنامه_نویسی #گو #پروژه_ساده #مدیریت_پروژه

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


👑 @gopher_academy
3
👇👇👇👇

page fault trap

#Go #Golang #SoftwareEngineering


👑 @gopher_academy
🍾1
Gopher Academy
👇👇👇👇 page fault trap #Go #Golang #SoftwareEngineering 👑 @gopher_academy
👉 Heman Hosseinpana
Technical Lead Snapp!



چند روز پیش در یکی از تردهای ایمیل گروه گولنگ، بحثی بین چند دولوپر شناخته‌شده از جمله Rob Pike (یکی از طراحان اصلی زبان Go) درباره‌ی نحوه‌ی مدیریت پشته در Go مطرح شده بود‌که به نظرم خیلی جالب اومد.
موضوع اصلی این بود که آیا می‌توان به‌جای بررسی دستی در هر تابع، از page fault trap برای رشد خودکار پشته استفاده کرد یا نه؟

مساله اینه که در Go، هر تابع قبل از اجرا بررسی می‌کند که آیا فضای کافی روی پشته وجود دارد یا نه. اگر نبود، تابع runtime.morestack صدا زده می‌شود تا استک بزرگ‌تر شود.
این بررسی حدود ۱۰ دستورالعمل CPU زمان می‌برد و باعث می‌شود اندازه‌ی کد کمی بزرگ‌تر شود (حدود ۵ تا ۱۰٪ افزایش).
این افزایش اندازه‌ی کد می‌تواند فشار بیشتری به کش L1 دستورالعمل‌ها (L1i cache) وارد کند.

نویسنده ایمیل پیشنهاد داده بود که به‌جای این بررسی‌ها، اجازه دهیم وقتی پشته پر شد، CPU خودش خطای حافظه (page fault) بدهد و سیستم‌عامل پشته را گسترش دهد.
اما این روش نیازمند چندین context switch بین برنامه و کرنل است (حداقل ۳ یا ۴ بار) و در عمل بسیار کندتر از روش فعلی است.

جواب Rob Pike واقعا نمونه بارز این مساله‌ست که سادگی عموما انتخابی آگاهانه و از روی تجربه است:

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

ضمناً، استفاده از trapها (یعنی تکیه بر خطاهای سخت‌افزاری مثل page fault برای رشد پشته) قبلاً هم دردسرساز بوده است. من سیستم‌های دیگری را دیده‌ام که سعی کردند از این روش استفاده کنند، اما اغلب به خاطر پیچیدگی غیرمنتظره رهایش کردند.
نمی‌گویم غیرممکن است، اما آسان هم نیست. و از طرفی انجام این کار به صورت portable (سازگار با همه سیستم‌عامل‌ها و معماری‌ها) سخت است چون جزئیات آن به سخت‌افزار و سیستم‌عامل وابسته است

#Go #Golang #SoftwareEngineering


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

🟢 خلاصه مقاله:
در این مقاله، به مرور دوازده سال تلاش و توسعه در پروژه Ebitengine می‌پردازیم. این مدت زمان نشان‌دهنده‌ی عزم و پشتکار تیم توسعه‌دهنده است که با تمرکز بر بهبود و پیشرفت، توانسته است نمونه‌های قابل توجهی از بازی‌های ویدیویی را با استفاده از Ebitengine در سال ۲۰۲۵ عرضه کند. یکی از افتخارات این پلتفرم، ایجاد زمینه‌ای قدرتمند برای توسعه بازی‌های مبتنی بر فناوری‌های نوین است که توسعه‌دهندگان را قادر می‌سازد ایده‌های خلاقانه خود را به دنیای واقعیت مجازی و بازی‌های مقیاس‌پذیر ارتقاء دهند.

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

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

#بازی_سازی #توسعه_بازی #فناوری_نوین #Ebitengine

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


👑 @gopher_academy
2👍1
🧠 داستان Page Fault، Interrupt، MMU و حافظه در لینوکس — توضیحی که واقعاً نیازه برای درک بهتر اتفاقات پشت پرده


اگر تا حالا با خطاهایی مثل Segmentation Fault`، `panic: invalid memory address یا کرش‌های عجیب روبه‌رو شدی، ریشهٔ همه‌شون به یک‌جا برمی‌گرده:👇😳

اما Page Fault دقیقاً چیه؟
چه فرقی با Interrupt داره؟
این MMU و Page Table دقیقاً چه‌کار می‌کنن؟
و اینا چه ربطی به User Mode، Kernel Mode و Stack / Heap دارن؟

🔴 این Page Fault چیه؟

درواقعه Page Fault زمانی رخ می‌دهد که یک برنامه بخواهد به حافظه‌ای دسترسی پیدا کند که:

* یا در RAM نیست
* یا اجازهٔ دسترسی به آن را ندارد
* یا اصلاً متعلق به آن برنامه نیست

در این لحظه:

*ا CPU اجرای برنامه را متوقف می‌کند
* کنترل به سیستم‌عامل داده می‌شود
*ا Kernel تصمیم می‌گیرد چه‌کار کند

📌 نکتهٔ مهم:

ا Page Fault همیشه «خطا» نیست — پایهٔ Virtual Memory است

🧪 مثال واقعی (C / Go)

درزبان برنامه نویسی C

int *p = NULL;
*p = 10;


نتیجه:

Segmentation Fault


در زبان Go

var p *int
*p = 10


نتیجه:

panic: invalid memory address


در هر دو:

*ا MMU آدرس را بررسی می‌کند
* صفحه نامعتبر است
*ا Page Fault رخ می‌دهد
*ا Kernel برنامه را متوقف می‌کند


🟢حالا Page Fault سالم و ناسالم رو بریم بررسی کنیم

Valid Page Fault

* صفحه وجود دارد ولی هنوز در RAM نیست
*ا Kernel آن را از disk / swap می‌آورد
* برنامه ادامه می‌دهد

Invalid Page Fault

* آدرس نامعتبر یا مجوز اشتباه
*ا Kernel سیگنال SIGSEGV می‌فرستد
* برنامه crash می‌کند

🔵 تفاوت Page Fault و Interrupt

| ویژگی | Page Fault | Interrupt

| منبع | داخل CPU / MMU | سخت‌افزار خارجی

| زمان | همزمان با دستور | غیرهمزمان

| علت | دسترسی حافظه | رویداد سیستم

| تقصیر برنامه؟ | معمولاً بله |

| قابل mask؟ | |


📌 جملهٔ طلایی:
ا Page Fault نتیجهٔ نیاز یا اشتباه برنامه استا
ا Interrupt نتیجهٔ نیاز سیستم است

🧠ا MMU چیست؟

در واقعه MMU (Memory Management Unit) قطعه‌ای سخت‌افزاری داخل CPU است که:

* آدرس مجازی را به آدرس فیزیکی تبدیل می‌کند
* مجوزهای Read / Write / Execute را بررسی می‌کند
* بین پردازه‌ها ایزوله‌سازی ایجاد می‌کند
* در صورت مشکل → Page Fault می‌سازد

هر دسترسی به حافظه = عبور از MMU

اPage Table چیست؟

ا Page Table نقشه‌ای است که سیستم‌عامل می‌سازد و MMU از آن استفاده می‌کند.

می‌گوید:

* این صفحهٔ مجازی کجاست؟
* در RAM هست یا نه؟
* چه مجوزی دارد؟

ا Page Table Entry شامل:

* Frame Number
* Present Bit
* R / W / X
* User / Kernel
* Dirty / Accessed

⚙️ مسیر واقعی Page Fault در Linux

1. برنامه اجرا می‌شود
2.ا MMU خطا را تشخیص می‌دهد
3ا. CPU وارد Kernel Mode می‌شود
4. تابع do_page_fault() اجرا می‌شود
5ا Kernel تصمیم می‌گیرد:

* صفحه را لود کند
* یا برنامه را نابود کند

🔐 User Mode vs Kernel Mode

User Mode

* اجرای برنامه‌ها
* بدون دسترسی مستقیم به:

* حافظهٔ سیستم
* سخت‌افزار
*ا Page Table

Kernel Mode

* اجرای سیستم‌عامل
* دسترسی کامل
* مدیریت:

* حافظه
*ا Process
* فایل‌سیستم
*ا Driver

📌اPage Fault = ورود اجباری از User Mode به Kernel Mode


🧩 ا Memory Layout یک Process

هر Process فضای حافظهٔ مجازی خودش را دارد:

| Stack ↓ |
| |
| Heap ↑ |
| Data |
| BSS |
| Text |


بخش‌ها:

Text: کد برنامه (read-only)

Data / BSS: متغیرهای global

Heap: malloc / new

Stack: توابع و متغیرهای محلی

📌 اگر Stack و Heap به هم برسند → Page Fault → Crash


🔗 ارتباط همهٔ مفاهیم

Program
↓ virtual address
MMU
↓ Page Table
Kernel (on fault)
↓ decision
RAM / Disk


* اMMU تشخیص می‌دهد
*ا Page Table مرجع است
*ا Kernel حل می‌کند
*ا Program ادامه می‌دهد یا می‌میرد 😄


جمع‌بندی نهایی

* Page Fault: آژیر مدیریت حافظه
* Interrupt: وقفهٔ رویدادهای سیستم
* MMU: مترجم و پلیس حافظه
* Page Table: نقشهٔ راه
* User / Kernel Mode: دیوار امنیت
* Stack / Heap: میدان مین برنامه‌نویس 😅

👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
👍41
🔵 عنوان مقاله
The Draft Go 1.26 Release Notes

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

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

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

#گو #نسخه_آزمایشی #توسعه_نرم‌افزار #نکات_مهم

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


👑 @gopher_academy
🔵 عنوان مقاله
Go Concurrency Explorer and Visualizer

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

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

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

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

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


👑 @gopher_academy
2
شرکت Microsoft قصد دارد تا پایان سال ۲۰۳۰ تمام کدهای نوشته‌شده به زبان‌های C و C++ را با Rust جایگزین کند.

👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
🍾32🔥1🕊1
با این دلار
با این حقوقی که شرکت های ایرانی میدن

ما صرفاً داریم تلاش می‌کنیم که «زنده» بمونیم فقط

آینده ای که هر روز بی ارزش میشه

👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
👍13🕊2👾1
اخباری منتشر شد که مایکروسافت داره تیمی درست میکنه که میلیون‌ها خط کدهای ویندوز رو با استفاده از هوش مصنوعی و با نظارت انسانی یک تیم کوچک از زبان C به Rust تبدیل کنند. البته گفته شده که هدف این تیم بیشتر امکان سنجی است تا سیاست اصلی مایکروسافت در تغییر کدهای ویندزو

<Alireza Shirazi/>
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
🏆2👾2