Gopher Academy
3.86K subscribers
930 photos
41 videos
280 files
2.13K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
Learn Go with test-driven development
با روش TDD زبان برنامه‌نویسی go رو یاد بگیرید.

#go #golang #tdd #test #red #green #refactor #testing #driven #development

https://github.com/quii/learn-go-with-tests


🔰 @gopher_academy
🔥8
🔵 عنوان مقاله
PegoMock 4.3: A Powerful Yet Simple Mocking Framework

🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگه‌داری تست‌ها را آسان می‌کند. هسته اصلی آن، زبانی است که به‌جای کدهای طولانی، نیت تست را شفاف بیان می‌کند. این ابزار از stubbing و argument matching پشتیبانی می‌کند؛ یعنی می‌توانید رفتار وابستگی‌های شبیه‌سازی‌شده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطاف‌پذیر تنظیم کنید. نتیجه، تست‌هایی شفاف، کم‌بوایلرپلیت و قابل اتکا برای تیم‌هاست.

#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
How to Reproduce and Fix an I/O Data Race with Go and DTrace

🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبه‌رو می‌شود که فقط در CI رخ می‌دهد: یک data race در سطح I/O فایل‌ها که باعث شکست گهگاه تست‌ها می‌شود. چون این رقابت در مرز فایل‌سیستم رخ می‌دهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمی‌دهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد می‌کند: اجرای تکراری تست‌ها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیب‌های نادری که خطا را می‌سازند آشکار شوند. با استفاده از DTrace و رصد فراخوانی‌های سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار می‌شود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.

راهکار با اتمی‌سازی و هماهنگ‌سازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریال‌سازی دسترسی به مسیرهای مشترک. در تست‌ها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنال‌های قطعی به‌جای تأخیرهای زمانی استفاده می‌شود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابت‌های I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.

#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition

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


👑 @gopher_academy
🔵 عنوان مقاله
How to Get Started with GitHub Copilot CLI

🟢 خلاصه مقاله:
** این مطلب با راهنمایی‌ای عملی از Andrea Griffiths (GitHub) نشان می‌دهد چگونه با GitHub Copilot CLI شروع کنید تا در ترمینال، درخواست‌های زبانی خود را به دستورات شِل تبدیل کنید، خطاها و فلگ‌های ناشناخته را توضیح بگیرید و سریع‌تر اشکال‌زدایی کنید. روند آغاز کار ساده است: نصب و ورود به GitHub CLI، افزودن افزونه Copilot و بررسی فعال بودن دسترسی Copilot روی حساب GitHub؛ سپس با gh copilot help و دستورات تولید/توضیح فرمان‌ها، می‌توانید قبل از اجرا خروجی‌ها را بررسی کنید تا از ایمنی کار مطمئن شوید. این ابزار روی Bash، Zsh و PowerShell کار می‌کند و برای وظایف روزمره مثل جست‌وجو، مدیریت پردازه‌ها و کار با Git چرخه بازخورد را کوتاه می‌کند.

هم‌زمان، نوشته‌ای از Redowan Delowar درباره Organizing Go Tests پیشنهاد می‌شود که ساختاردهی حرفه‌ای تست‌های Go را مرور می‌کند: کنار هم نگه‌داشتن فایل‌های *_test.go با کد، به‌کارگیری تست‌های جدول‌محور و زیربخش‌ها با t.Run، استفاده از پوشه testdata برای داده‌های تست، همراه با بنچمارک‌ها، مثال‌ها، نام‌گذاری شفاف، گزارش پوشش و اتصال go test به CI. مجموع این توصیه‌ها هم بهره‌وری توسعه را بالا می‌برد و هم کیفیت و قابلیت اعتماد تست‌ها را.

#GitHub #Copilot #CLI #Go #Testing #DeveloperTools #Productivity #DevOps

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


👑 @gopher_academy