🔵 عنوان مقاله
RobotGo 1.0: Native Cross-Platform GUI Automation
🟢 خلاصه مقاله:
نسخه ۱.۰ رباتگو: اتوماسیون گرافیکی چندپلتفرمی بومی
رباتگو یک ابزار قدرتمند است که به شما امکان میدهد با استفاده از آن کنترل کامل بر روی نشانگر موس، صفحهکلید و خواندن محتوای صفحه نمایش در سیستمهای مختلف مانند macOS، ویندوز و لینوکس (در محیط X11) داشته باشید. این چارچوب متنباز و حرفهای، راهی ساده و موثر برای اتوماسیون عملیاتهای گرافیکی در برنامهها و اسکریپتهای خود فراهم میکند.
گسترش این ابزار باعث شده تا توسعهدهندگان بتوانند به راحتی و بدون نیاز به نصب نرمافزارهای اضافی، وظایف تکراری را به صورت خودکار انجام دهند. از طریق رباتگو، میتوان عملیاتهایی مانند حرکت اوتوماتیک موس، فشردن کلیدهای مختلف، خواندن محتویات روی صفحه و تعامل با رابطهای کاربری را در سیستمعاملهای مختلف انجام داد. این پلتفرم بومی و چندپلتفرمی، انعطافپذیری و سرعت بالایی دارد و توسعهدهندگان را قادر میسازد بدون نگرانی درباره سازگاری، برنامههای اتوماسیون خود را پیادهسازی کنند.
در نتیجه، نسخه ۱.۰ رباتگو گامی مهم در مسیر توسعه ابزارهای اتوماسیونی مستقل و قابل اعتماد است که به راحتی در محیطهای مختلف عملیاتی میشود و کارایی برنامههای اتوماسیونی را به شکل قابل توجهی افزایش میدهد.
#اتوماسیون #رباتگو #گرافیکى #چندپلتفرم
🟣لینک مقاله:
https://golangweekly.com/link/178264/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
RobotGo 1.0: Native Cross-Platform GUI Automation
🟢 خلاصه مقاله:
نسخه ۱.۰ رباتگو: اتوماسیون گرافیکی چندپلتفرمی بومی
رباتگو یک ابزار قدرتمند است که به شما امکان میدهد با استفاده از آن کنترل کامل بر روی نشانگر موس، صفحهکلید و خواندن محتوای صفحه نمایش در سیستمهای مختلف مانند macOS، ویندوز و لینوکس (در محیط X11) داشته باشید. این چارچوب متنباز و حرفهای، راهی ساده و موثر برای اتوماسیون عملیاتهای گرافیکی در برنامهها و اسکریپتهای خود فراهم میکند.
گسترش این ابزار باعث شده تا توسعهدهندگان بتوانند به راحتی و بدون نیاز به نصب نرمافزارهای اضافی، وظایف تکراری را به صورت خودکار انجام دهند. از طریق رباتگو، میتوان عملیاتهایی مانند حرکت اوتوماتیک موس، فشردن کلیدهای مختلف، خواندن محتویات روی صفحه و تعامل با رابطهای کاربری را در سیستمعاملهای مختلف انجام داد. این پلتفرم بومی و چندپلتفرمی، انعطافپذیری و سرعت بالایی دارد و توسعهدهندگان را قادر میسازد بدون نگرانی درباره سازگاری، برنامههای اتوماسیون خود را پیادهسازی کنند.
در نتیجه، نسخه ۱.۰ رباتگو گامی مهم در مسیر توسعه ابزارهای اتوماسیونی مستقل و قابل اعتماد است که به راحتی در محیطهای مختلف عملیاتی میشود و کارایی برنامههای اتوماسیونی را به شکل قابل توجهی افزایش میدهد.
#اتوماسیون #رباتگو #گرافیکى #چندپلتفرم
🟣لینک مقاله:
https://golangweekly.com/link/178264/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - go-vgo/robotgo: RobotGo, Go Native cross-platform RPA, GUI automation, Auto test and Computer use @vcaesar
RobotGo, Go Native cross-platform RPA, GUI automation, Auto test and Computer use @vcaesar - go-vgo/robotgo
🔵 عنوان مقاله
An Interactive Tour of Go 1.25
🟢 خلاصه مقاله:
در این مطلب، به بررسی گام به گام نسخه ۱.۲۵ زبان برنامهنویسی Go میپردازیم. در واقع، آنتونی، توسعهدهنده و فعال در جامعه Go، قبلتر نگاهی جامعی به نسخه ۱.۲۴ این زبان داشت. بر اساس آمار، لینک دیدار او از نسخه ۱.۲۴، در طول سال جاری، دومین لینک پرکلیک دنیای توسعهدهندگان بود. این نشان میدهد که جامعه برنامهنویسان نسبت به بروزرسانی و امکانات جدید Go، علاقهمندی ویژهای نشان میدهد.
در این سفر تعاملی، قرار است ویژگیها و بهبودهای نسخه ۱.۲۵ با زبانی روشن و جزئیات کافی بررسی شود. هدف آن است که باسلیقهترین توسعهدهندگان هم بتوانند به شکل قابل فهم و جذابی با تغییرات این نسخه آشنا شوند و بهرهمند شوند. با ادامه این راهنمای تعاملی، نگاهی دقیقتر به بهبودهای فنی، قابلیتهای جدید و تغییراتی که توسعه برنامههای به مراتب بهتر را امکانپذیر میسازد، خواهیم داشت.
در مجموع، این بازدید رسمی و کامل از نسخه ۱.۲۵، فرصت مغتنمی برای توسعهدهندگان است تا با پیشرفتهای جاری در زبان محبوب Go آشنا شوند و از آن در پروژههای خود بهرهمند گردند. این محتوا، ضمن حفظ دقت، سعی کرده است که جریان منطقی و طبیعی مطالب را برای خوانندگان فارسیزبان فراهم کند، تا آنان بتوانند به راحتی با نسخه جدید این زبان برنامهنویسی آشنا شوند.
#برنامهنویسی #Go زبان #نسخه۱.۲۵ #توسعهدهندگان
🟣لینک مقاله:
https://golangweekly.com/link/178526/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
An Interactive Tour of Go 1.25
🟢 خلاصه مقاله:
در این مطلب، به بررسی گام به گام نسخه ۱.۲۵ زبان برنامهنویسی Go میپردازیم. در واقع، آنتونی، توسعهدهنده و فعال در جامعه Go، قبلتر نگاهی جامعی به نسخه ۱.۲۴ این زبان داشت. بر اساس آمار، لینک دیدار او از نسخه ۱.۲۴، در طول سال جاری، دومین لینک پرکلیک دنیای توسعهدهندگان بود. این نشان میدهد که جامعه برنامهنویسان نسبت به بروزرسانی و امکانات جدید Go، علاقهمندی ویژهای نشان میدهد.
در این سفر تعاملی، قرار است ویژگیها و بهبودهای نسخه ۱.۲۵ با زبانی روشن و جزئیات کافی بررسی شود. هدف آن است که باسلیقهترین توسعهدهندگان هم بتوانند به شکل قابل فهم و جذابی با تغییرات این نسخه آشنا شوند و بهرهمند شوند. با ادامه این راهنمای تعاملی، نگاهی دقیقتر به بهبودهای فنی، قابلیتهای جدید و تغییراتی که توسعه برنامههای به مراتب بهتر را امکانپذیر میسازد، خواهیم داشت.
در مجموع، این بازدید رسمی و کامل از نسخه ۱.۲۵، فرصت مغتنمی برای توسعهدهندگان است تا با پیشرفتهای جاری در زبان محبوب Go آشنا شوند و از آن در پروژههای خود بهرهمند گردند. این محتوا، ضمن حفظ دقت، سعی کرده است که جریان منطقی و طبیعی مطالب را برای خوانندگان فارسیزبان فراهم کند، تا آنان بتوانند به راحتی با نسخه جدید این زبان برنامهنویسی آشنا شوند.
#برنامهنویسی #Go زبان #نسخه۱.۲۵ #توسعهدهندگان
🟣لینک مقاله:
https://golangweekly.com/link/178526/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Go 1.25 interactive tour
Fake clock, new GC, flight recorder and more.
🔵 عنوان مقاله
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
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
Datadog
How Go 1.24's Swiss Tables saved us hundreds of gigabytes | Datadog
Go 1.24's Swiss Tables cut our map memory usage by up to 70% in high-traffic workloads. Here's how we profiled the savings and improved performance.
❤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 ★ ]]>
🎄 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
یعنی این تیکه از صحبت های 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
A No Nonsense Guide to Go Project Layout
🟢 خلاصه مقاله:
در دنیای توسعه نرمافزار، سازماندهی پروژههای گو یکی از مهمترین عوامل موفقیت است. در مقالهای کاربردی و بدون حاشیه، نویسنده بر اهمیت دوری کردن از ساختارهای پیچیده و سنگین تأکید میکند و میگوید در پروژههای کوچک، بهتر است روی یک ساختار ساده و قابل فهم تمرکز کنید. این رویکرد نه تنها فرآیند توسعه را روانتر میکند، بلکه نگهداری کد و همکاری تیمی را نیز آسانتر میسازد.
نویسنده در این مقاله به خوانندگان توصیه میکند که از طراحی ساختارهایی با بستهبندیهای بیپایان و اغراقآمیز خودداری کنند و به جای آن، بر مرتبسازی منطقی و پایهای پروژه تمرکز نمایند. این کار باعث میشود که پروژههای کوچک و متوسط انعطافپذیری بیشتری داشته باشند و در مسیر رشد، دچار دشواری نشوند. همچنین، تکنیکها و راهکارهایی را برای جلوگیری از پیچیدگیهای بیمورد پیشنهاد میدهد تا توسعهدهندگان بتوانند تمرکز خود را بر روی قابلیتها و بهبودهای اصلی پروژه حفظ کنند.
در نهایت، این مقاله که در سال ۲۰۲۴ نوشته شده و در سال ۲۰۲۵ بهروزرسانی شده، راهنمایی عملی و عملی برای برنامهنویسان و تیمهای توسعه است که میخواهند از ساختارهای بیدلیل پیچیده پرهیز کرده و پروژههایی ساده، قابل مدیریت و توسعهپذیر داشته باشند. رعایت این نکات ساده ولی مؤثر میتواند تفاوت قابل توجهی در کیفیت و بهرهوری تیمهای فنی ایجاد کند.
#برنامه_نویسی #گو #پروژه_ساده #مدیریت_پروژه
🟣لینک مقاله:
https://golangweekly.com/link/178529/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Laurentsv
No nonsense guide to Go projects layout
It’s a recurring question on gopher slack and discord: «How should I set up my go project repository?». Unfortunately, there are a lot of both outdated and o...
❤3
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
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
reflects on 12 years of building Ebitengine
🟢 خلاصه مقاله:
در این مقاله، به مرور دوازده سال تلاش و توسعه در پروژه Ebitengine میپردازیم. این مدت زمان نشاندهندهی عزم و پشتکار تیم توسعهدهنده است که با تمرکز بر بهبود و پیشرفت، توانسته است نمونههای قابل توجهی از بازیهای ویدیویی را با استفاده از Ebitengine در سال ۲۰۲۵ عرضه کند. یکی از افتخارات این پلتفرم، ایجاد زمینهای قدرتمند برای توسعه بازیهای مبتنی بر فناوریهای نوین است که توسعهدهندگان را قادر میسازد ایدههای خلاقانه خود را به دنیای واقعیت مجازی و بازیهای مقیاسپذیر ارتقاء دهند.
در ادامه، نگاهی به چند نمونه از بازیهای ساخته شده با بهرهگیری از این موتور در سال جاری خواهیم داشت. این بازیها نه تنها نشاندهندهی انعطافپذیری و قدرت فنی Ebitengine هستند، بلکه توانستهاند توجه جامعهی گیمرها و توسعهدهندگان را جلب کنند و در عرصه رقابتی صنعت بازی محبوبیت زیادی کسب کنند. این دستاوردها گواهی بر توانمندی و پتانسیل بالای این پلتفرم در آیندهی توسعه بازیهای مستقل و چندمنظوره است.
در پایان، برنامههای آینده و نوآوریهای احتمالی در راه است که قرار است سطح جدیدی از امکانات و ویژگیها را برای توسعهدهندگان فراهم کند. تیم توسعهدهنده قصد دارد با تمرکز بر بهبود کارایی، افزودن قابلیتهای جدید و ارتقاء تجربه کاربری، Ebitengine را به یک ابزار کامل و بینظیر در دنیای توسعه بازی تبدیل کند. این مسیر نوید بخش آیندهای پرپتانسیل و پرامید برای صنعت بازیهای ویدیویی است.
#بازی_سازی #توسعه_بازی #فناوری_نوین #Ebitengine
🟣لینک مقاله:
https://golangweekly.com/link/178259/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Ebitengine - A dead simple 2D game engine for Go
Ebitengine in 2025 - Ebitengine
Ebitengine is an open source game engine for the Go programming language. Ebitengine's simple API allows you to quickly and easily develop 2D games that can be deployed across multiple platforms.
❤2👍1
🧠 داستان Page Fault، Interrupt، MMU و حافظه در لینوکس — توضیحی که واقعاً نیازه برای درک بهتر اتفاقات پشت پرده
اگر تا حالا با خطاهایی مثل
اما 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
نتیجه:
در زبان Go
نتیجه:
در هر دو:
*ا MMU آدرس را بررسی میکند
* صفحه نامعتبر است
*ا Page Fault رخ میدهد
*ا Kernel برنامه را متوقف میکند
🟢حالا Page Fault سالم و ناسالم رو بریم بررسی کنیم
✅ Valid Page Fault
* صفحه وجود دارد ولی هنوز در RAM نیست
*ا Kernel آن را از disk / swap میآورد
* برنامه ادامه میدهد
❌ Invalid Page Fault
* آدرس نامعتبر یا مجوز اشتباه
*ا Kernel سیگنال
* برنامه 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. تابع
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 فضای حافظهٔ مجازی خودش را دارد:
بخشها:
*ا Text: کد برنامه (read-only)
*ا Data / BSS: متغیرهای global
*ا Heap: malloc / new
*ا Stack: توابع و متغیرهای محلی
📌 اگر Stack و Heap به هم برسند → Page Fault → Crash
🔗 ارتباط همهٔ مفاهیم
* اMMU تشخیص میدهد
*ا Page Table مرجع است
*ا Kernel حل میکند
*ا Program ادامه میدهد یا میمیرد 😄
✨ جمعبندی نهایی
* Page Fault: آژیر مدیریت حافظه
* Interrupt: وقفهٔ رویدادهای سیستم
* MMU: مترجم و پلیس حافظه
* Page Table: نقشهٔ راه
* User / Kernel Mode: دیوار امنیت
* Stack / Heap: میدان مین برنامهنویس 😅
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
اگر تا حالا با خطاهایی مثل
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
Telegram
Labdon
Bardia invites you to add the folder “Labdon”, which includes 8 chats.
👍4❤1
🔵 عنوان مقاله
The Draft Go 1.26 Release Notes
🟢 خلاصه مقاله:
در هفته جاری، با توجه به نزدیک بودن موعد نهایی انتشار و تثبیت ویژگیهای نسخه، مرور مجدد یادداشتهای پیشنویس نسخه آزمایشی Go 1.26 اهمیت ویژهای دارد. این یادداشتهای در حال تکمیل، نکات و تغییرات مهمی را شامل میشوند که تیم توسعه برای انتشار رسمی در نظر گرفته است، بنابراین بهتر است قبل از قطعی شدن نهایی، از جزئیات آنها مطمئن شویم. اگر قصد دارید نسخه RC1 را آزمایش کنید، تمرکز بر این یادداشتها میتواند کمک کند تا از تغییرات و ویژگیهای جدید به خوبی مطلع شوید و اشکالات احتمالی را پیش از انتشار نهایی شناسایی کنید.
نسخه آزمایشی Go 1.26 در حال حاضر در مرحله پیشنویس قرار دارد و بررسی دقیق آن در این زمان، اطمینان حاصل میکند که تمامی اصلاحات و ویژگیهای جدید به درستی اعمال شده است. این اقدام به توسعهدهندگان کمک میکند تا سریعتر با تغییرات آشنا شده و در صورت نیاز، بازخوردهای مفیدی ارائه دهند. بنابراین، اگر در فرآیند آزمایش نسخههای آزمایشی شرکت میکنید، توجه ویژه به این یادداشتهای نسخه در حال نهایی شدن، اهمیت زیادی دارد.
در مجموع، تمامی اعضای تیم و توسعهدهندگان باید این یادداشتهای پیشنویس را بررسی کنند تا مطمئن شوند تمامی اصلاحات، بهبودها و ویژگیهای جدید به درستی در نسخه نهایی لحاظ شده است. این مرحله برای تضمین کیفیت، کارایی و پایداری نسخه نهایی بسیار حیاتی است و نقش کلیدی در موفقیت انتشار بر عهده دارد.
#گو #نسخه_آزمایشی #توسعه_نرمافزار #نکات_مهم
🟣لینک مقاله:
https://golangweekly.com/link/178517/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Draft Go 1.26 Release Notes
🟢 خلاصه مقاله:
در هفته جاری، با توجه به نزدیک بودن موعد نهایی انتشار و تثبیت ویژگیهای نسخه، مرور مجدد یادداشتهای پیشنویس نسخه آزمایشی Go 1.26 اهمیت ویژهای دارد. این یادداشتهای در حال تکمیل، نکات و تغییرات مهمی را شامل میشوند که تیم توسعه برای انتشار رسمی در نظر گرفته است، بنابراین بهتر است قبل از قطعی شدن نهایی، از جزئیات آنها مطمئن شویم. اگر قصد دارید نسخه RC1 را آزمایش کنید، تمرکز بر این یادداشتها میتواند کمک کند تا از تغییرات و ویژگیهای جدید به خوبی مطلع شوید و اشکالات احتمالی را پیش از انتشار نهایی شناسایی کنید.
نسخه آزمایشی Go 1.26 در حال حاضر در مرحله پیشنویس قرار دارد و بررسی دقیق آن در این زمان، اطمینان حاصل میکند که تمامی اصلاحات و ویژگیهای جدید به درستی اعمال شده است. این اقدام به توسعهدهندگان کمک میکند تا سریعتر با تغییرات آشنا شده و در صورت نیاز، بازخوردهای مفیدی ارائه دهند. بنابراین، اگر در فرآیند آزمایش نسخههای آزمایشی شرکت میکنید، توجه ویژه به این یادداشتهای نسخه در حال نهایی شدن، اهمیت زیادی دارد.
در مجموع، تمامی اعضای تیم و توسعهدهندگان باید این یادداشتهای پیشنویس را بررسی کنند تا مطمئن شوند تمامی اصلاحات، بهبودها و ویژگیهای جدید به درستی در نسخه نهایی لحاظ شده است. این مرحله برای تضمین کیفیت، کارایی و پایداری نسخه نهایی بسیار حیاتی است و نقش کلیدی در موفقیت انتشار بر عهده دارد.
#گو #نسخه_آزمایشی #توسعه_نرمافزار #نکات_مهم
🟣لینک مقاله:
https://golangweekly.com/link/178517/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
tip.golang.org
Go 1.26 Release Notes - The Go Programming Language
🔵 عنوان مقاله
Go Concurrency Explorer and Visualizer
🟢 خلاصه مقاله:
پس از مشاهده سخنرانی راب پایک درباره الگوهای همزمانی در زبان برنامهنویسی گو، یکی از توسعهدهندگان تصمیم گرفت تا یک محیط کد نویسی زنده مبتنی بر WebAssembly (WASM) و ابزار تصویربرداری را راهاندازی کند. هدف اصلی این پروژه فراهم کردن فضایی تعاملی است که بتوان از طریق آن به صورت عملی، الگوهای رایج همزمانی در برنامهنویسی گو را بهتر درک و تجربه کرد. این ابزار نه تنها امکان نوشتن و اجرا کردن کدهای همزمانی را به صورت زنده فراهم میکند، بلکه به کاربران کمک میکند تا به شکل تصویری و تعاملی روند اجرای این الگوها را مشاهده و درک کنند.
در کنار این، مجموعهای از آموزشها و راهنماییهای مختلف نیز در دسترس است که کاربران میتوانند با بهرهگیری از آنها، مهارت خود را در درک مفاهیم همزمانی در زبان گو تقویت کنند. این پروژه به عنوان یک ابزار آموزشی مؤثر، فرصت مناسبی است برای توسعهدهندگان و علاقهمندان به برنامهنویسی همزمان، تا بتوانند به صورت عملی و تصویری مفاهیم پیچیده را بهتر درک کرده و در پروژههای خود کاربردیتر استفاده کنند.
در مجموع، این ابتکار، پلی است میان تئوری و عمل، و کمک میکند تا اطلاعات فنی به شکلی سادهتر، جذابتر و قابل فهمتر در اختیار کاربران قرار گیرد، و سطح مهارت آنها در بهرهگیری از قدرت همزمانی زبان گو ارتقا یابد.
#برنامه_نویسی #گواتصال #تصویرسازی_کد #یادگیری_تعاملید
🟣لینک مقاله:
https://golangweekly.com/link/178534/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go Concurrency Explorer and Visualizer
🟢 خلاصه مقاله:
پس از مشاهده سخنرانی راب پایک درباره الگوهای همزمانی در زبان برنامهنویسی گو، یکی از توسعهدهندگان تصمیم گرفت تا یک محیط کد نویسی زنده مبتنی بر WebAssembly (WASM) و ابزار تصویربرداری را راهاندازی کند. هدف اصلی این پروژه فراهم کردن فضایی تعاملی است که بتوان از طریق آن به صورت عملی، الگوهای رایج همزمانی در برنامهنویسی گو را بهتر درک و تجربه کرد. این ابزار نه تنها امکان نوشتن و اجرا کردن کدهای همزمانی را به صورت زنده فراهم میکند، بلکه به کاربران کمک میکند تا به شکل تصویری و تعاملی روند اجرای این الگوها را مشاهده و درک کنند.
در کنار این، مجموعهای از آموزشها و راهنماییهای مختلف نیز در دسترس است که کاربران میتوانند با بهرهگیری از آنها، مهارت خود را در درک مفاهیم همزمانی در زبان گو تقویت کنند. این پروژه به عنوان یک ابزار آموزشی مؤثر، فرصت مناسبی است برای توسعهدهندگان و علاقهمندان به برنامهنویسی همزمان، تا بتوانند به صورت عملی و تصویری مفاهیم پیچیده را بهتر درک کرده و در پروژههای خود کاربردیتر استفاده کنند.
در مجموع، این ابتکار، پلی است میان تئوری و عمل، و کمک میکند تا اطلاعات فنی به شکلی سادهتر، جذابتر و قابل فهمتر در اختیار کاربران قرار گیرد، و سطح مهارت آنها در بهرهگیری از قدرت همزمانی زبان گو ارتقا یابد.
#برنامه_نویسی #گواتصال #تصویرسازی_کد #یادگیری_تعاملید
🟣لینک مقاله:
https://golangweekly.com/link/178534/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go Concurrency Rocks
Interactive exploration of Go concurrency patterns
❤2
شرکت Microsoft قصد دارد تا پایان سال ۲۰۳۰ تمام کدهای نوشتهشده به زبانهای C و C++ را با Rust جایگزین کند.
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
🍾3❤2🔥1🕊1
❌با این دلار
❌با این حقوقی که شرکت های ایرانی میدن
ما صرفاً داریم تلاش میکنیم که «زنده» بمونیم فقط
آینده ای که هر روز بی ارزش میشه
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
❌با این حقوقی که شرکت های ایرانی میدن
ما صرفاً داریم تلاش میکنیم که «زنده» بمونیم فقط
آینده ای که هر روز بی ارزش میشه
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
👍13🕊2👾1
اخباری منتشر شد که مایکروسافت داره تیمی درست میکنه که میلیونها خط کدهای ویندوز رو با استفاده از هوش مصنوعی و با نظارت انسانی یک تیم کوچک از زبان C به Rust تبدیل کنند. البته گفته شده که هدف این تیم بیشتر امکان سنجی است تا سیاست اصلی مایکروسافت در تغییر کدهای ویندزو
<Alireza Shirazi/>
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
<Alireza Shirazi/>
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
🏆2👾2
درود دوستان،
بعد از مدتها این ریپو رو تکمیل کردم؛ البته هنوز کاملاً نهایی نیست و قطعاً به مشارکت شما، بر اساس تجربهای که دارید، نیاز داره.
خوشحال میشم نگاهی بهش بندازید و اگر احساس کردید چیزی کم هست یا جای بهبود داره، لطفاً توی گیتهاب براش Issue ثبت کنید.
این ریپازیتوری Go-Interview-Questions-And-Answers در GitHub، یک مجموعهی جامع از سوالات، پاسخها و راهنماهای مرتبط با مصاحبه و یادگیری Go هست که برای آمادگی در سطوح مختلف، بهویژه برای مهندسان بکاند و توسعهدهندگان Go، طراحی شده.
📌 ساختار کلی این مجموعه به شکل زیره:
* پوشههای مجزا برای:
* اbest-practice بهترین روشها و استانداردهای توسعه
* اdesign اصول و مفاهیم طراحی نرمافزار
* اinterview-golang سوالات و مفاهیم کلیدی Go (از concurrency گرفته تا interface و data types)
* اroadmap مسیرهای یادگیری ساختیافته برای Go، همراه با برنامهریزی هفتگی یادگیری
🔍 📚 این ریپازیتوری فقط محدود به سوال و جواب نیست، بلکه شامل راهنماهای مفهومی و کاربردی دربارهی موضوعاتی مثل:
*ا concurrency و الگوهای رایج آن
* نوعها و سیستم تایپ در Go
* بهترین شیوهها در طراحی API و ساختاردهی پروژههای بزرگ
* نحوهی آمادهسازی مؤثر برای مصاحبههای Go
این مجموعه میتونه برای هر توسعهدهندهی Go، بهویژه کسانی که قصد دارن در مصاحبهها و فرآیند استخدام موفقتر عمل کنن، بسیار مفید باشه.
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers
https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
بعد از مدتها این ریپو رو تکمیل کردم؛ البته هنوز کاملاً نهایی نیست و قطعاً به مشارکت شما، بر اساس تجربهای که دارید، نیاز داره.
خوشحال میشم نگاهی بهش بندازید و اگر احساس کردید چیزی کم هست یا جای بهبود داره، لطفاً توی گیتهاب براش Issue ثبت کنید.
این ریپازیتوری Go-Interview-Questions-And-Answers در GitHub، یک مجموعهی جامع از سوالات، پاسخها و راهنماهای مرتبط با مصاحبه و یادگیری Go هست که برای آمادگی در سطوح مختلف، بهویژه برای مهندسان بکاند و توسعهدهندگان Go، طراحی شده.
📌 ساختار کلی این مجموعه به شکل زیره:
* پوشههای مجزا برای:
* اbest-practice بهترین روشها و استانداردهای توسعه
* اdesign اصول و مفاهیم طراحی نرمافزار
* اinterview-golang سوالات و مفاهیم کلیدی Go (از concurrency گرفته تا interface و data types)
* اroadmap مسیرهای یادگیری ساختیافته برای Go، همراه با برنامهریزی هفتگی یادگیری
🔍 📚 این ریپازیتوری فقط محدود به سوال و جواب نیست، بلکه شامل راهنماهای مفهومی و کاربردی دربارهی موضوعاتی مثل:
*ا concurrency و الگوهای رایج آن
* نوعها و سیستم تایپ در Go
* بهترین شیوهها در طراحی API و ساختاردهی پروژههای بزرگ
* نحوهی آمادهسازی مؤثر برای مصاحبههای Go
این مجموعه میتونه برای هر توسعهدهندهی Go، بهویژه کسانی که قصد دارن در مصاحبهها و فرآیند استخدام موفقتر عمل کنن، بسیار مفید باشه.
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers
https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
🔥9🏆2❤1🍾1
قابلیت Git Worktree: سلاح مخفی کار با Code Agentها
یه مشکل کلاسیک هست که وسط یه فیچری، باید یه branch دیگه رو چک کنی. و روند git stashو switch و کارتو بکن و برگرد و unstash... خستهکنندهست.
ولی وقتی داری با agentها کار میکنی (Cursor، Claude Code و ...)، این مشکل ۱۰ برابر میشه. Agent میخواد فایلها رو عوض کنه، build بزنه، شاید خرابکاری کنه. نمیخوای working directory اصلیت رو بهم بریزه.
راهحلش میشه git worktree
مفهومش سادهست. پروژهات دو بخش داره: پوشه .git که دیتابیسته (کامیتها، برنچها، تاریخچه) و working directory که فایلهای واقعی هستن. مشکل اینه که فقط یه working directory داری، پس فقط یه branch میتونی checkout داشته باشی.
درواقع worktree یه working directory دوم میسازه که به همون .git وصله. پوشه جدا، branch جدا، ولی همون history.
فقط ۳ تا دستور لازمه:
git worktree add ../project-agent feature-branch
git worktree list
git worktree remove ../project-agent
چرا برای Agent ها عالیه؟ وقتی ClaudeCode یا ابزارهای مشابه یه agent رو توی worktree mode اجرا میکنن، یه worktree جدید میسازن، فایلهاتو کپی میکنن اونجا، agent توی isolation کامل کارشو میکنه، و آخر یه دکمه Apply میدن که merge کنی. Agent میتونه هر کاری بکنه، working directory اصلیت دستنخورده میمونه.
یه نکته مهم هم اینه که node_modules و فایلهای .env منتقل نمیشن چون توی gitignore هستن. هرچی agent ها قویتر میشن، این pattern ضروریتر میشه.
این مقاله رو هم میتونید بخونید
https://www.marcohaber.dev/blog/git-worktrees
<Hasan Nazari/>
یه مشکل کلاسیک هست که وسط یه فیچری، باید یه branch دیگه رو چک کنی. و روند git stashو switch و کارتو بکن و برگرد و unstash... خستهکنندهست.
ولی وقتی داری با agentها کار میکنی (Cursor، Claude Code و ...)، این مشکل ۱۰ برابر میشه. Agent میخواد فایلها رو عوض کنه، build بزنه، شاید خرابکاری کنه. نمیخوای working directory اصلیت رو بهم بریزه.
راهحلش میشه git worktree
مفهومش سادهست. پروژهات دو بخش داره: پوشه .git که دیتابیسته (کامیتها، برنچها، تاریخچه) و working directory که فایلهای واقعی هستن. مشکل اینه که فقط یه working directory داری، پس فقط یه branch میتونی checkout داشته باشی.
درواقع worktree یه working directory دوم میسازه که به همون .git وصله. پوشه جدا، branch جدا، ولی همون history.
فقط ۳ تا دستور لازمه:
git worktree add ../project-agent feature-branch
git worktree list
git worktree remove ../project-agent
چرا برای Agent ها عالیه؟ وقتی ClaudeCode یا ابزارهای مشابه یه agent رو توی worktree mode اجرا میکنن، یه worktree جدید میسازن، فایلهاتو کپی میکنن اونجا، agent توی isolation کامل کارشو میکنه، و آخر یه دکمه Apply میدن که merge کنی. Agent میتونه هر کاری بکنه، working directory اصلیت دستنخورده میمونه.
یه نکته مهم هم اینه که node_modules و فایلهای .env منتقل نمیشن چون توی gitignore هستن. هرچی agent ها قویتر میشن، این pattern ضروریتر میشه.
این مقاله رو هم میتونید بخونید
https://www.marcohaber.dev/blog/git-worktrees
<Hasan Nazari/>
❤3👍1
یک لیست ارزشمند شامل 20 دوره رایگان برای علاقه مندان به برنامه نویسی
1- Rust
https://youtube.com/playlist?list=PLPoSdR46FgI412aItyJhj2bF66cudB6Qs
2- Typenoscript
https://youtube.com/playlist?list=PL0Zuz27SZ-6NS8GXt5nPrcYpust89zq_b
3- C#
https://youtube.com/watch?v=0QUgvfuKvWU
4- SQL
https://youtube.com/playlist?list=PLNcg_FV9n7qZY_2eAtUzEUulNjTJREhQe
5- PHP
https://youtube.com/playlist?list=PLr3d3QYzkw2xabQRUpcZ_IBk9W50M9pe-
6- C
https://youtube.com/playlist?list=PL9IEJIKnBJjG5H0ylFAzpzs9gSmW_eICB
7- JavaScript
https://youtube.com/playlist?list=PLIJrr73KDmRw2Fwwjt6cPC_tk5vcSICCu
8- Java
https://youtube.com/playlist?list=PLsyeobzWxl7pe_IiTfNyr55kwJPWbgxB5
9- Machine Learning
https://youtube.com/watch?v=hDKCxebp88A
10- Language Modeling
https://youtube.com/playlist?list=PLoROMvodv4rOY23Y0BoGoBGgQ1zmU_MT_
11- Generative AI
https://youtube.com/watch?v=mEsleV16qdo
12- Python
https://youtube.com/playlist?list=PLUl4u3cNGP62A-ynp6v6-LGBCzeH3VAQB
13- DSA
https://youtube.com/playlist?list=PLgUwDviBIf0oF6QL8m22w1hIDC1vJ_BHz
14- React 19
https://youtube.com/playlist?list=PLC3y8-rFHvwg9D7EOSEBabuutIdKZN5V3
15- React Native
https://youtube.com/watch?v=f8Z9JyB2EIE
16- Django
https://youtube.com/playlist?list=PL4cUxeGkcC9iqfAag3a_BKEX1N43uJutw
17- C++
https://youtube.com/watch?v=FpfHmAkRVK4
18- Go
https://youtube.com/playlist?list=PL4cUxeGkcC9gC88BEo9czgyS72A3doDeM
19- Kotlin
https://youtube.com/watch?v=TEXaoSC_8lQ
20- Swift
https://youtube.com/watch?v=CwA1VWP0Ldw
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
1- Rust
https://youtube.com/playlist?list=PLPoSdR46FgI412aItyJhj2bF66cudB6Qs
2- Typenoscript
https://youtube.com/playlist?list=PL0Zuz27SZ-6NS8GXt5nPrcYpust89zq_b
3- C#
https://youtube.com/watch?v=0QUgvfuKvWU
4- SQL
https://youtube.com/playlist?list=PLNcg_FV9n7qZY_2eAtUzEUulNjTJREhQe
5- PHP
https://youtube.com/playlist?list=PLr3d3QYzkw2xabQRUpcZ_IBk9W50M9pe-
6- C
https://youtube.com/playlist?list=PL9IEJIKnBJjG5H0ylFAzpzs9gSmW_eICB
7- JavaScript
https://youtube.com/playlist?list=PLIJrr73KDmRw2Fwwjt6cPC_tk5vcSICCu
8- Java
https://youtube.com/playlist?list=PLsyeobzWxl7pe_IiTfNyr55kwJPWbgxB5
9- Machine Learning
https://youtube.com/watch?v=hDKCxebp88A
10- Language Modeling
https://youtube.com/playlist?list=PLoROMvodv4rOY23Y0BoGoBGgQ1zmU_MT_
11- Generative AI
https://youtube.com/watch?v=mEsleV16qdo
12- Python
https://youtube.com/playlist?list=PLUl4u3cNGP62A-ynp6v6-LGBCzeH3VAQB
13- DSA
https://youtube.com/playlist?list=PLgUwDviBIf0oF6QL8m22w1hIDC1vJ_BHz
14- React 19
https://youtube.com/playlist?list=PLC3y8-rFHvwg9D7EOSEBabuutIdKZN5V3
15- React Native
https://youtube.com/watch?v=f8Z9JyB2EIE
16- Django
https://youtube.com/playlist?list=PL4cUxeGkcC9iqfAag3a_BKEX1N43uJutw
17- C++
https://youtube.com/watch?v=FpfHmAkRVK4
18- Go
https://youtube.com/playlist?list=PL4cUxeGkcC9gC88BEo9czgyS72A3doDeM
19- Kotlin
https://youtube.com/watch?v=TEXaoSC_8lQ
20- Swift
https://youtube.com/watch?v=CwA1VWP0Ldw
👉 https://news.1rj.ru/str/addlist/AJ7rh2IzIh02NTI0
❤5