Gopher Academy
Kanalga Telegram’da o‘tish
🕸 Gopher Academy 🔷interview golang https://github.com/mrbardia72/Go-Interview-Questions-And-Answers حمایت مالی: https://www.coffeete.ir/mrbardia72 ادمین: @mrbardia72
Ko'proq ko'rsatish3 813
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+230 kunlar
Ma'lumot yuklanmoqda...
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Avgust '26
Avgust '26
+2
0 kanalda
Iyul '26
+58
0 kanalda
Get PRO
Iyun '26
+67
0 kanalda
Get PRO
May '26
+45
0 kanalda
Get PRO
Aprel '26
+24
5 kanalda
Get PRO
Mart '26
+10
0 kanalda
Get PRO
Fevral '26
+79
1 kanalda
Get PRO
Yanvar '26
+29
8 kanalda
Get PRO
Dekabr '25
+103
7 kanalda
Get PRO
Noyabr '25
+72
0 kanalda
Get PRO
Oktabr '25
+598
1 kanalda
Get PRO
Sentabr '25
+61
6 kanalda
Get PRO
Avgust '25
+84
9 kanalda
Get PRO
Iyul '25
+99
10 kanalda
Get PRO
Iyun '25
+47
7 kanalda
Get PRO
May '25
+45
1 kanalda
Get PRO
Aprel '25
+63
8 kanalda
Get PRO
Mart '25
+90
8 kanalda
Get PRO
Fevral '25
+91
3 kanalda
Get PRO
Yanvar '25
+96
3 kanalda
Get PRO
Dekabr '24
+113
7 kanalda
Get PRO
Noyabr '24
+94
2 kanalda
Get PRO
Oktabr '24
+116
4 kanalda
Get PRO
Sentabr '24
+138
4 kanalda
Get PRO
Avgust '24
+101
2 kanalda
Get PRO
Iyul '24
+187
5 kanalda
Get PRO
Iyun '24
+173
11 kanalda
Get PRO
May '24
+301
2 kanalda
Get PRO
Aprel '24
+185
3 kanalda
Get PRO
Mart '24
+172
3 kanalda
Get PRO
Fevral '24
+154
0 kanalda
Get PRO
Yanvar '24
+207
0 kanalda
Get PRO
Dekabr '23
+215
4 kanalda
Get PRO
Noyabr '23
+77
2 kanalda
Get PRO
Oktabr '23
+79
0 kanalda
Get PRO
Sentabr '23
+70
0 kanalda
Get PRO
Avgust '23
+108
0 kanalda
Get PRO
Iyul '23
+68
0 kanalda
Get PRO
Iyun '23
+106
0 kanalda
Get PRO
May '23
+211
0 kanalda
Get PRO
Aprel '23
+142
0 kanalda
Get PRO
Mart '23
+56
0 kanalda
Get PRO
Fevral '23
+70
0 kanalda
Get PRO
Yanvar '23
+62
0 kanalda
Get PRO
Dekabr '22
+14
0 kanalda
Get PRO
Noyabr '22
+24
0 kanalda
Get PRO
Oktabr '22
+15
0 kanalda
Get PRO
Sentabr '22
+78
0 kanalda
Get PRO
Avgust '22
+47
0 kanalda
Get PRO
Iyul '22
+36
0 kanalda
Get PRO
Iyun '22
+26
0 kanalda
Get PRO
May '22
+27
0 kanalda
Get PRO
Aprel '22
+14
0 kanalda
Get PRO
Mart '22
+21
0 kanalda
Get PRO
Fevral '22
+13
0 kanalda
Get PRO
Yanvar '22
+24
0 kanalda
Get PRO
Dekabr '21
+51
0 kanalda
Get PRO
Noyabr '21
+107
0 kanalda
Get PRO
Oktabr '21
+13
0 kanalda
Get PRO
Sentabr '21
+31
0 kanalda
Get PRO
Avgust '21
+29
0 kanalda
Get PRO
Iyul '21
+41
0 kanalda
Get PRO
Iyun '21
+29
0 kanalda
Get PRO
May '21
+26
0 kanalda
Get PRO
Aprel '21
+49
0 kanalda
Get PRO
Mart '21
+376
0 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 01 Avgust | +2 |
Kanal postlari
🔵 عنوان مقاله
soup 2.0: A Beautiful Soup-Inspired Web Scraper
🟢 خلاصه مقاله:
در دنیای توسعه وب و تحلیل دادهها، ابزارهای قدرتمند برای استخراج اطلاعات از صفحات اینترنتی نقش مهمی ایفا میکنند. یکی از معروفترین این ابزارها، کتابخانه "بیوتیفول سوپ" (Beautiful Soup) در زبان پایتون است که برای جمعآوری و تجزیه و تحلیل محتواهای وب بسیار پرکاربرد است. این کتابخانه قابلیت بارگذاری صفحات، تفکیک عناصر HTML و ناوبری آسان در میان عناصر صفحه را فراهم میکند، به گونهای که کاربر میتواند اطلاعات مورد نیاز خود را به سادگی استخراج کند و تحلیلهای خود را انجام دهد.
در پاسخ به نیازهای توسعهدهندگان و تحلیلگران داده، ابزار جدیدی با نام "سوپ ۲.۰" طراحی شده است که کاملاً الهامگرفته از قدرت و سادگی بیوتیفول سوپ است. این ابزار امکاناتی از قبیل بارگذاری صفحات وب، تجزیه و تحلیل ساختارهای HTML و ناوبری در میان عناصر آن را ارائه میدهد. هدف اصلی این پروژه، تسهیل فرآیند استخراج دادههای وب و فراهم کردن یک رابط کاربری ساده و کارآمد برای کاربران است تا بدون صرف زمان زیاد، بتوانند اطلاعات مورد نیاز خود را بهدرستی و کارآمد استخراج کنند.
این ابزار نه تنها برای برنامهنویسان و توسعهدهندگان وب، بلکه برای پژوهشگران حوزه تحلیل داده و علاقهمندان به جمعآوری اطلاعات از وب نیز بسیار مناسب است. به این ترتیب، "سوپ ۲.۰" با ارائه قابلیتهایی مشابه نمونههای محبوب و با امکانات توسعه یافتهتر، حالا گزینهای مطمئن و موثر برای کاربری آسان و سریع در پروژههای مختلف محسوب میشود.
#وباسکریپینگ #تحلیل_وب #استخراج_داده #برنامهنویسی
🟣لینک مقاله:
https://github.com/anaskhan96/soup
➖➖➖➖➖➖➖➖
👑 @gopher_academy
| 2 | امکان تغییر آدرس ایمیل 📧✨
اگر این قابلیت برای حسابت فعال شده باشد، میتوانی آدرس @gmail.com خودت را بدون ساختن حساب جدید تغییر بدهی. این قابلیت بهصورت تدریجی برای کاربران منتشر شده و ممکن است هنوز برای همه فعال نباشد. (Google Help)
روش اول (کامپیوتر - پیشنهاد گوگل) 💻🔍
وارد حساب گوگلت شو:
Google Account
از منوی سمت چپ روی Personal info (اطلاعات شخصی) کلیک کن.
بخش Contact info را باز کن.
روی Email کلیک کن.
گزینه Google Account email را انتخاب کن.
اگر گزینه Change Google Account email یا تغییر آدرس ایمیل گوگل را میبینی:
روی آن کلیک کن.
نام جدید دلخواهت را وارد کن.
اگر آزاد باشد، ادامه بده.
کد تأیید یا مراحل امنیتی را انجام بده. 🔒✅
بعد از تأیید:
ایمیل جدید، آدرس اصلی حسابت میشود.
ایمیل قبلی بهعنوان Alternate Email (آدرس جایگزین) باقی میماند.
ایمیلهایی که به آدرس قدیمی ارسال شوند نیز همچنان به همان Inbox میرسند. (Google Help)
اگر این گزینه را نمیبینی 🚫
اگر در مرحله ۶ گزینه Change Google Account email وجود ندارد، یعنی هنوز این قابلیت برای حسابت فعال نشده است. گوگل آن را بهصورت مرحلهای منتشر میکند و ممکن است چند هفته یا چند ماه دیگر برای حسابت فعال شود. (Google Help)
قبل از تغییر این نکات را بدان 📝👀
همه ایمیلها، فایلهای Drive، عکسهای Photos و اطلاعات حسابت حفظ میشوند. 💾
میتوانی با ایمیل قدیمی و جدید وارد حسابت شوی. 🔑
برخی تنظیمات دستگاه یا برنامهها ممکن است نیاز به ورود مجدد داشته باشند.
فقط هر ۱۲ ماه یکبار میتوانی آدرس را تغییر دهی و تعداد تغییرها نیز محدود است. (Google Help) | 62 |
| 3 | نه تنها بنزین گران شد بلکه سهمیه نیز کمتر شد.
https://t.me/+Bp8JeTpQoiUwMjVk | 123 |
| 4 | 🔵 عنوان مقاله
Adding Go to a Browser Code Runner
🟢 خلاصه مقاله:
در دهه اخیر، توسعهدهندگان همواره به دنبال راههایی بودهاند تا تجربه برنامهنویسی در مرورگرهای وب را آسانتر و کاراتر کنند. یکی از چالشهای رایج، اجرای کدهای زبانهایی مانند Go در محیط مرورگر است. در مقالات و پروژههای مختلف، معمولاً راهحلهایی برای این منظور ارائه شده است که البته هر کدام با موانع و محدودیتهایی همراه هستند.
در این مطلب، نگاهی میاندازیم به فرآیند افزودن زبان برنامهنویسی Go به یک اجراکننده کد در مرورگر، دلایل عدم موفقیت رویکردهای معمول مانند تنظیم متغیر GOOS=js در محیطهای مختلف، و نحوهی حل این مشکل با کامپایل کردن مفسر Yaegi به استاندارد WASI، که نهایتاً اجرای کدهای Go را در مرورگر به صورت روان و بدون مشکل ممکن ساخت.
در ابتدا، باید بدانیم که راهحلهای رایج برای اجرای کدهای Go در بستر مرورگر، تلاش برای تغییر تنظیمات سیستمعامل مجازی و یا استفاده از ابزارهای شبیهساز است. یکی از این روشها، تنظیم متغیر محیطی GOOS برابر با js است، که به طور معمول اجازه میدهد کدهای Go برای اجرا در محیطهای مبتنی بر JavaScript ساخته شوند. اما در عمل، این رویکرد در محیطهای جداشده و ماشینهای مجازی مانند V8 isolation، چندان مؤثر نبود و نتایج قابل قبول حاصل نکرد.
مشکل اصلی در اینجا، محدودیتهای ایزولهسازی V8 و ناتوانی در اجرای برنامههای ساختهشده بر اساس تنظیمات خاص سیستمعامل مجازی است. پس از بررسی این موضوع، تیم توسعه اقدام به کامپایل کردن مفسر Yaegi، یک مفسر بسیار قابل انعطاف برای زبان Go، به استاندارد WASI کرد. این کار باعث شد که مفسر به خوبی در محیطهای جداشده اجرا شده و کدهای Go بدون نیاز به تغییرات زیاد، در مرورگرها به اجرا درآیند.
در نتیجه، این استراتژی، راهحلی پایدار و جامع برای اجرای زبان Go در فضای مرورگر بود، که برخلاف رویکردهای اولیه، توانست مشکلات مربوط به محدودیتهای محیطهای ایزوله و سازگاری با استانداردهای وب را حل کند. این تجربۀ موفقیتآمیز نشان میدهد که مرزهای فناوریهای وب به تدریج در حال درنوردیدن هستند و دسترسی به زبانهای متنوع در مرورگرهای مدرن امکانپذیر شده است.
#برنامهنویسی #گو #مرورگر #WASI
🟣لینک مقاله:
https://blog.lvmbdv.dev/posts/adding-go-to-a-browser-code-runner/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 153 |
| 5 | 🔵 عنوان مقاله
Gore 0.7: A Full-Featured Go REPL Environment
🟢 خلاصه مقاله:
گور ۰.۷: محیط برخط توسعهی کامل و حرفهای زبان گو
در نسخهی جدید گور، تمامی امکانات و ویژگیهایی که در یک محیط توسعهی تعاملی نیاز دارید، در اختیار شما قرار گرفته است. این محیط، امکاناتی نظیر ویرایش خطوط کد، دسترسی به تاریخچهی دستورات، وارد کردن کدهای چند خطی، ارزیابی عبارات و expressions، امکان وارد کردن و استفاده از پکیجها، و حتی در نسخهی ۰.۷، ایجاد aliasهای مختص وارد کردن پکیجها را دارد. همچنین، این محیط به صورت قدرتمند از فناوری gopls برای تکمیل خودکار کد بهره میبرد که کار برنامهنویسان را بسیار راحتتر و سریعتر میکند.
نسخهی ۰.۷ گور، تمامی ابزارهای لازم برای توسعهی سریع و موثر در زبان گو را در قالب یک محیط کاربرپسند فراهم میکند و تجربهی کاربا زبان این برنامهنویس را به سطح جدیدی ارتقاء میدهد.
#برنامهنویسی #گو #توسعه #کدزی
🟣لینک مقاله:
https://github.com/x-motemen/gore
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 200 |
| 6 | 🔵 عنوان مقاله
Watching Go's New Garbage Collector Move Through the Heap
🟢 خلاصه مقاله:
در نسخه ۱.۲۶ زبان برنامهنویسی گو، مجموعه جمعآوری زباله یا گاربیج کالکتر جدید این زبان به عنوان گزینه پیشفرض معرفی شد. این تحولی بزرگ در مدیریت حافظه در گو بود که باعث بهبود چشمگیر در کارایی برنامهها شد. تیم توسعه دهندگان از ابزارهای متفاوتی برای بررسی و ارزیابی عملکرد این گاربیج کالکتر جدید استفاده کردند، که یکی از آنها «perf» است، ابزاری قدرتمند برای تحلیل عملکرد برنامهها و بررسی فرآیندهای مختلف در حافظه.
در این مطالعه، فیل به بررسی حرکت و عملکرد این جمعآوری زباله جدید در حافظه اختصاصی گو میپردازد. او با استفاده از ابزار perf، نقشهای ساده و قابل فهم بر پایه ASCII طراحی کرده است که نموداری تصویری از نحوه کارکرد و حرکت گاربیج کالکتر در heap، بخشهای مختلف حافظه را نشان میدهد. این نقشه به توسعهدهندگان کمک میکند تا بهتر روند پاکسازی حافظه را درک کنند و نقاط ضعف احتمالی را شناسایی نمایند.
این نحوه تحلیل و نمایش گام به گام به توسعهدهندگان اجازه میدهد تا فرآیندهای داخلی مدیریت حافظه را بهتر درک کنند و بتوانند برنامههای خود را بهینهتر کنند. این اطلاعات تصویری و تحلیلی باعث میشود کاربران و توسعهدهندگان درک دقیقتری از فرآیندهای حافظه در گو داشته باشند و بتوانند با اطمینان بیشتری از نسخه جدید بهرهبرداری کنند.
#گو #پایش_حافظه #برنامهنویسی #تحلیل_عملکرد
🟣لینک مقاله:
https://theconsensus.dev/p/2026/07/19/observing-gos-garbage-collector-old-and-new.html
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 202 |
| 7 | 🔵 عنوان مقاله
Go's Proposals for Generic Collection Types in Go 1.28
🟢 خلاصه مقاله:
در راستای توسعه زبان برنامهنویسی Go، گروه کاری Collections پیشنهادهای جامع و مهمی را برای اضافه کردن انواع مجموعهای عمومی در نسخه ۱.۲۸ این زبان ارائه داده است. هدف اصلی این پیشنهادها، بهبود قابلیتهای مجموعهها و ایجاد استانداردی قوی برای ساختارهای دادهای است که در برنامهنویسی روزمره بسیار پرکاربرد هستند. این طرح، قرار است مجموعهای از ساختارهای دادهای مرسوم مانند لیستها، مپها و مجموعهها را در قالبی استاندارد و قابل استفاده در تمامی پروژهها تعریف و به کتابخانه استاندارد زبان اضافه کند.
پیشنهادهای این مجموعه، قرار است قابلیتهایی مدرن، انعطافپذیر و کاربرپسند را در اختیار توسعهدهندگان قرار دهند تا بتوانند بدون نیاز به پیادهسازی مجدد، از قویترین و رایجترین ساختارهای داده بهرهمند شوند. این گام مهم، میتواند توسعه و کارایی برنامههای نوشتهشده در زبان Go را به شکل قابل ملاحظهای افزایش دهد و هماهنگی بیشتری را میان کدهای مختلف ایجاد کند.
در نهایت، هدف این گروه این است که با ارائه این مجموعههای عمومی و استاندارد، زبان Go را به سمت زبان قدرتمندتر، مدرنتر و کاربرپسندتر برساند. این پیشنهاد هماکنون در مرحله بررسی و توسعه قرار دارد و میتواند تغییرات چشمگیری در آینده نزدیک در اکوسیستم زبان Go ایجاد کند.
#زبان_برنامهنویسی #Go #مجموعه_های_عمومی #توسعه_نرمافزار
🟣لینک مقاله:
https://github.com/golang/go/issues/80590
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 187 |
| 8 | 🔵 عنوان مقاله
pgx.CollectRows or Why Nice APIs Don't Have To Be Slow
🟢 خلاصه مقاله:
در بسیاری از برنامههای کاربردی، سرعت و کارایی اهمیت ویژهای دارد. یکی از مشکلات رایج در توسعه نرمافزارهای پایگاه داده، کندی عملیات مربوط به جمعآوری دادهها و تبدیل نتایج است. در این زمینه، ابزارها و کتابخانههایی مانند pgx با امکاناتی مانند CollectRows و RowToStructByName ارائه شدهاند تا فرآیند استخراج و سازماندهی دادهها را سادهتر کنند. اما در عمل، مشاهده شده است که این ابزارها در مقایسه با حلقههای دستنویس شده، بسیار کندتر عمل میکنند. این مشکل باعث شد که توسعهدهندگان به دنبال راهحلهای بهینهسازی و اصلاح عملکرد آنها بگردند.
خوشبختانه، توسعهدهندگان این کتابخانه توانستند در نسخه ۵، اصلاحاتی در قالب کشینگ و ذخیرهسازی دادهها انجام دهند که قابل توجه بود و به بهبود چشمگیر سرعت این ابزارها منجر شد. این اصلاحات باعث شدند عملیات جمعآوری و تبدیل دادهها بسیار سریعتر و مؤثرتر انجام شود و کاربران دیگر نیاز نداشته باشند بین سادگی و سرعت یکی را انتخاب کنند. نتیجه نهایی این است که APIهای قدرتمند میتوانند هم ساده، کاربرپسند و هم سریع باشند، بدون اینکه کاربر مجبور باشد کارایی را فدای راحتی کنند.
در نهایت، این بروزرسانی نشان میدهد که APIهای خوب و کاربرپسند لزوماً نباید کند باشند، بلکه با همکاری و توسعه مداوم، میتوانند همزیستی خوبی بین سادگی و سرعت برقرار کنند و تجربه کاربری بهتری را رقم بزنند.
#برنامهنویسی #پایگاهداده #پایگاهدادهپایدار #کارایی
🟣لینک مقاله:
https://zolstein.substack.com/p/pgxcollectrows-nice-apis-dont-have
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 201 |
| 9 | هفته جاری برای جامعه Go با چند تصمیم مهم در حوزه کتابخانه استاندارد و آینده این زبان همراه بوده است. مهمترین خبر، پذیرش پیشنهاد اضافه شدن Kernel TLS (kTLS) به بسته crypto/tls است؛ قابلیتی که سالها درباره آن بحث میشد و اکنون بهطور رسمی چراغ سبز دریافت کرده است.
پشتیبانی از kTLS به Go این امکان را میدهد که در سیستمعاملهای پشتیبان، بخشی از پردازش TLS را به کرنل واگذار کند. این رویکرد میتواند در برخی سناریوها باعث کاهش سربار پردازشی، بهبود کارایی انتقال داده و استفاده بهینهتر از منابع سیستم شود؛ بهویژه در سرویسهایی که حجم بالایی از ارتباطات رمزنگاریشده را مدیریت میکنند.
در کنار این خبر، گروه کاری Collections نیز پیشنهاد بسته container/... برای ارائه ساختارهای داده عمومی مبتنی بر جنریکها را با هدف انتشار در Go 1.28 مطرح کرده است. این موضوع نشان میدهد که تمرکز توسعهدهندگان Go بیش از گذشته بر بهبود زیرساختهای کتابخانه استاندارد و ارائه ساختارهای داده مدرن معطوف شده است.
از سوی دیگر، یکی دیگر از پیشنهادهای پذیرفتهشده به توسعهدهندگان اجازه میدهد مثالهای (Examples) مستندات Go، محدود به امضای تابع فعلی نباشند. این تغییر با استقبال جامعه Go روبهرو شده است، زیرا نوشتن مثال برای توابع کمکی و سناریوهایی که پیشتر امکان مستندسازی مناسبی نداشتند، از این پس سادهتر خواهد شد.
مجموع این تغییرات نشان میدهد که مسیر توسعه Go همچنان بر بهبود عملکرد، غنیتر شدن کتابخانه استاندارد و ارتقای تجربه توسعهدهندگان متمرکز است.
#GoLang #کتابخانه_استاندارد #برنامه_نویسی #توسعه_نرمافزار | 355 |
| 10 | BDD (Behavior-Driven Development)
یا توسعه نرمافزار مبتنی بر رفتار یک روش توسعه نرمافزار است که تمرکز آن بر رفتار مورد انتظار سیستم از دید کاربر یا کسبوکار است، نه صرفاً جزئیات فنی پیادهسازی.
در واقع تکاملیافتهی TDD (Test-Driven Development) است، اما به جای اینکه فقط برنامهنویسها تست بنویسند، تلاش میکند توسعهدهندگان، تسترها و افراد کسبوکار (Business Analysts/Product Owners) همه با یک زبان مشترک درباره رفتار سیستم صحبت کنند.
ایده اصلی BDD
به جای اینکه بگوییم:
این متد باید مقدار X را برگرداند.
میگوییم:
وقتی کاربر رمز عبور درست وارد میکند، باید وارد حساب کاربری خود شود.
یعنی تمرکز از کد به رفتار سیستم منتقل میشود.
ساختار معروف BDD
معمولاً از قالب زیر استفاده میکند:
Given
When
Then
که به آن Gherkin Syntax گفته میشود.
مثال ساده
فرض کنید سیستم Login داریم.
Feature: User Login
Scenario: Successful Login
Given the user is on the login page
And the user has a valid account
When the user enters the correct username and password
Then the user should be redirected to the dashboard
And a welcome message should be displayed
معنی هر بخش
Given
شرایط اولیه
Given the user has an account
یعنی:
کاربر قبلاً ثبتنام کرده است.
When
اتفاقی که رخ میدهد
When the user clicks Login
Then
نتیجه مورد انتظار
Then the dashboard is displayed
مثال دیگر
فرض کنید ATM داریم.
Feature: Withdraw Money
Scenario: Successful Withdrawal
Given my account balance is $500
When I withdraw $100
Then my balance should become $400
کاملاً شبیه زبان طبیعی است.
حتی مدیر پروژه هم میتواند آن را بخواند.
در TDD
ممکن است تستی مانند این بنویسید:
func TestAddUser(t *testing.T) {
}
اما در BDD همان موضوع به این صورت بیان میشود:
Given a valid user
When the user is created
Then the user should exist in the database
مزایای BDD
۱. مستندات زنده (Living Documentation)
سناریوها هم تست هستند و هم مستندات پروژه.
۲. کاهش سوءتفاهم
همه دقیقاً میدانند سیستم باید چه رفتاری داشته باشد.
۳. تستهای خوانا
به جای:
Test_Create_User_Valid_Name
دارید:
Given a valid name
When creating a user
Then the user is stored
۴. ارتباط بهتر تیم با
Product Owner
QA
Developer
همه یک زبان مشترک دارند.
ابزارهای معروف BDD
اگر زبان Go کار میکنید:
Ginkgo
Gomega
Godog (پیادهسازی Gherkin برای Go)
مثال با Godog:
Feature: Calculator
Scenario: Add two numbers
Given I have entered 10
And I have entered 20
When I press add
Then the result should be 30
سپس برای هر مرحله، کد Go نوشته میشود:
func iHaveEntered(arg int) error {
...
}
func iPressAdd() error {
...
}
func theResultShouldBe(arg int) error {
...
}
مثال واقعی فروشگاه اینترنتی
Feature: Buy Product
Scenario: Product in stock
Given a product has quantity 5
When the customer buys 2 items
Then the stock should become 3
And the order should be created
اگر موجودی کافی نباشد:
Scenario: Product out of stock
Given a product has quantity 1
When the customer buys 2 items
Then the purchase should fail
And an "Out of stock" message should be shown
چرخه BDD
Discuss Behavior
↓
Write Scenario (Given/When/Then)
↓
Run Scenario (Fail)
↓
Write Code
↓
Scenario Passes
↓
Refactor
چه زمانی از BDD استفاده کنیم؟
بیشترین ارزش را در پروژههایی دارد که:
نیازمندیهای کسبوکار پیچیده هستند.
چند تیم (توسعه، QA و محصول) روی یک پروژه کار میکنند.
میخواهید رفتار سیستم بهصورت مستند و قابل اجرا باقی بماند.
برای پروژههای کوچک یا ابزارهای ساده، استفاده از BDD ممکن است هزینهی نگهداری بیشتری نسبت به مزایایش داشته باشد.
جمعبندی
فقط یک روش نوشتن تست نیست؛ بلکه یک شیوهی همکاری و طراحی نرمافزار است. در این رویکرد، ابتدا رفتار مورد انتظار سیستم با زبانی قابل فهم برای همهی اعضای تیم (معمولاً با قالب Given–When–Then) تعریف میشود، سپس این سناریوها به تستهای خودکار تبدیل شده و در نهایت کد به گونهای نوشته میشود که آن رفتارها را برآورده کند. نتیجه این است که تستها، مستندات و نیازمندیهای کسبوکار همسو و همیشه بهروز باقی میمانند. | 338 |
| 11 | 🔵 عنوان مقاله
Qualcomm Posts Linux Patches For X2 Elite Extreme Powered ASUS Zenbook A16
🟢 خلاصه مقاله:
شرکت کوالکام در ادامه تلاشهای خود برای بهبود سازگاری پردازندههای Snapdragon، اکنون مجموعهای جدید از اصلاحات (پچها) را برای هسته لینوکس منتشر کرده است. این پچها به هدف راهاندازی لپتاپهای مجهز به پردازنده X2 Elite Extreme، مانند لپتاپ ASUS Zenbook A16، هنگام بوت شدن در سیستمعامل لینوکس طراحی شده است. این اقدام پس از انتشار اصلاحاتی بود که اجازه میداد لپتاپهای Lenovo Yoga Slim 7x Gen11 و HP EliteBook X G2q X2 Elite، بدون نیاز به ویندوز ۱۱ بر پایه ARM، راهاندازی شوند و کار کنند. حال، مهندسان کوالکام به دنبال توسعه این مسیر هستند تا دستگاههای مبتنی بر X2 Elite Extreme را نیز با موفقیت در لینوکس به کار بیاندازند و تجربه کاربری بهتر و آزادی بیشتری برای کاربران فراهم آورند.
#کوالکام #لینوکس #گجتهای_هوشمند #توسعه فناوری
🟣لینک مقاله:
https://www.phoronix.com/news/Qualcomm-Zenbook-A16-X2EE
➖➖➖➖➖➖➖➖
👑 @Linux_Labdon | 291 |
| 12 | در هفتمین رویداد تکوتاک - سلسله رویدادهای تخصصی در حوزه توسعه نرمافزار همکاران سیستم - که به صورت #رایگان و #آنلاین برگزار میشه، با رویکرد توسعه نرمافزار مبتنی بر رفتار (BDD) آشنا میشیم و درباره این صحبت میکنیم که چطور میتونیم با ایجاد یه زبان مشترک بین توسعهدهندگان، کارشناسان تست و ذینفعان کسبوکار، نیازمندیها رو شفافتر تعریف و مستند کنیم.
همینطور با ساختار Given / When / Then و نقشی که در بهبود همکاری تیمی و توسعه نرمافزار داره آشنا میشیم.
سرفصلهای این رویداد عبارتند از:
✅ آشنایی با Behavior-Driven Development
✅ چرا BDD رو انتخاب کردیم؟
✅ در سیستم ما BDD چگونه پیادهسازی شده؟
✅ یک مثال واقعی از پروژه
✅ استفاده از AI در فرآیند BDD
👨🏻💻 ارائهدهنده: امیر حصاری | تیملید همکاران سیستم
📅 پنجشنبه ۸ مردادماه | ساعت ۱۰ تا ۱۲
🔴 شرکت در رویداد فقط در صورت ثبتنام امکانپذیره.
👈🏻 اطلاعات بیشتر و ثبتنام:
https://B2n.ir/ds9896
لینکدین | اینستاگرام | 304 |
| 13 | براساس دادههای تلهمتری بیش از 22 هزار توسعهدهنده در 4 هزار تیم در faros:
تعداد باگها حدود ۵۴٪ افزایش یافته.
نسبت Incident به Pull Request بیش از ۳ برابر شده.
زمان Review به شکل قابل توجهی افزایش پیدا کرده.
حدود ۳۱٪ Pull Requestهای بیشتری بدون Review انسانی Merge میشه
این گزارش نشون میده که هنوز جامعه مهندسی نرم افزار به بلوغ استفاده از ابزارهای هوش مصنوعی نرسیده و تا حالا بیشتر به سرعت توسعه و خروجی محصول از کد توجه شده تا امنیت و code review.
https://faros.ai/research/ai-acceleration-whiplash
@ | <Ramin Farajpour Cami/> | 292 |
| 14 | اینم نمیدونم دیدید یا نه؟ Anthropic یک سری پرامپت آماده copy-paste در Claude Code مربوط به جنبههای مختلف توسعه نرمافزار در مستنداتش داره. پرامپتهای سادهای هستند و زیر هر کدوم هم توضیح داده شده که چرا کار میکنند.
https://code.claude.com/docs/en/prompt-library
@ | <Hamed/> | 300 |
| 15 | شایان اویسقَرَن، پژوهشگر ایرانی علوم رایانه و استاد دانشگاه واشینگتن، مدال آباکوس سال ۲۰۲۶ اتحادیه بینالمللی ریاضیات را دریافت کرده است؛ جایزهای که به دستاوردهای برجسته پژوهشگران جوان در بخشهای ریاضی علوم رایانه تعلق میگیرد.
کمیته این جایزه میگوید اویسقرن با وارد کردن ابزارهایی از شاخههایی چون هندسه چندجملهایها، نظریه احتمال و نظریه طیفی گرافها، شیوه تحلیل الگوریتمها را گسترش داده و برای حل چند مسئله قدیمی علوم رایانه راههای تازهای گشوده است.
پژوهشهای او بهویژه در دو زمینه مورد توجه قرار گرفتهاند: یافتن مسیرهای نزدیک به بهینه و نمونهگیری تصادفی از مجموعههای بسیار بزرگ و پیچیده.
مدال آباکوس هر چهار سال یکبار اهدا میشود و ادامه جایزهای است که تا سال ۲۰۱۸ به نام رولف نوانلینا شناخته میشد. نامزد دریافت آن باید در آغاز سال برگزاری کنگره جهانی ریاضیدانان هنوز به ۴۰ سالگی نرسیده باشد. این جایزه از مهمترین افتخارات بینالمللی در علوم رایانه نظری به شمار میرود.
اما اهمیت کار اویسقرن تنها با فهرست کردن اصطلاحهای تخصصی روشن نمیشود. بخش مهمی از مسیر علمی او به یکی از مشهورترین پرسشهای علوم رایانه بازمیگردد: چگونه میتوان کوتاهترین مسیر ممکن را برای سفر میان چندین شهر پیدا کرد و در پایان به نقطه آغاز بازگشت؟
این پرسش که «مسئله فروشنده دورهگرد» نام دارد، در ظاهر ساده است. یک فروشنده، راننده یا مأمور توزیع باید از چند شهر یا مقصد عبور کند، هر کدام را یک بار ببیند و به نقطه نخست بازگردد. با افزایش شمار مقصدها، تعداد مسیرهای ممکن چنان سریع زیاد میشود که بررسی همه آنها عملاً ممکن نیست.
در چنین مواردی، پژوهشگران به جای یافتن پاسخ دقیق، الگوریتمی میخواهند که در مدت معقول مسیری نزدیک به بهترین مسیر را پیدا کند و بتوان تضمین کرد که نتیجه آن از حد معینی بدتر نخواهد بود.
https://t.me/futurepulse_persian | 333 |
| 16 | 🔵 عنوان مقاله
Go's Stuck Goroutine Problem (And Why to Let It Fail)
🟢 خلاصه مقاله:
در زبان برنامهنویسی Go، یکی از مشکلات رایج، گیر کردن روروتینها یا همان گوروتینهایی است که به طور ناخواسته متوقف میشوند یا توقف نمیکنند. این وضعیت معمولا زمانی رخ میدهد که عملیات بلندمدت یا بیوقفه درون گوروتینها گرفتار شوند و نتوانند به درستی پایان یابند. این مشکل باعث میشود که برنامههای چندوظیفهای به طور ناخوشایند کند شوند یا در برخی موارد متوقف شوند، که این امر میتواند روند توسعه و نگهداری برنامه را دشوارتر کند.
یکی از دلایل اصلی این مشکل، محدودیتهای مدل اجرای همزمان در زبان Go است. برخلاف زبانهایی مانند Erlang که بر پایه سیستمهای مقاوم در برابر خطا ساخته شدهاند، Go اجازه نمیدهد که گوروتینها مستقیم کشته شوند، زیرا این کار میتواند منجر به مشکلاتی مانند وضعیتهای ناپایدار یا ناپایدارهای حافظه شود. در نتیجه، معمولاً راهکارهای سنتی برای پایان دادن به گوروتینها از جمله ارسال سیگنالهای توقف یا کانالهای لغو، در مواقعی کارآمد نیستند یا ممکن است موجب مشکلات دیگری شوند.
در این زمینه، نسخه ۰.۴۰ از زبان برنامهنویسی River بر اساس فلسفهای الهام گرفته از Erlang، رویکرد «بگذار کار خودش را انجام دهد» یا همان "let it crash" را پیادهسازی کرده است. در این رویکرد، به جای تلاش برای کنترل کامل و دخالت در روند اجرای گوروتینها، آنها را رها میکنیم - به عبارت دیگر، اگر یک گوروتین خراب شد یا گیر کرد، برنامه این مشکل را قبول میکند و اجازه میدهد در صورت نیاز خودش خاموش شود و دوباره راهاندازی گردد. این روش یکی از راهکاری است که به برنامهنویسان کمک میکند تا سیستمهای مقاومتر و پایدارتر ساخته و نگهداری کنند، به خصوص در مواردی که وظایف پسزمینه یا عملیات بلندمدت اهمیت زیادی دارند و نیاز به مدیریت خطاهای پیشبینیشده ندارند.
در نتیجه، در مواجهه با گوروتینهای گیر کرده، بهترین راهحل ممکن این است که به جای تلاش بیوقفه برای کنترل کامل، اجازه دهیم خطاها رخ دهند و سیستم خود را بازیابی کند؛ همان روشی که در اکوسیستم Erlang بسیار رایج است و در حال حاضر با رویکرد جدید River و فلسفه «بگذار کار خودش را بکند»، میتواند راهکار مفیدی باشد.
#برنامهنویسی #Go #سیستمهای مقاوم #توسعهدهی
🟣لینک مقاله:
https://riverqueue.com/blog/go-stuck-jobs
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 346 |
| 17 | 🔵 عنوان مقاله
GoMLX: Accelerated Machine Learning Framework for Go
🟢 خلاصه مقاله:
چارچوب یادگیری ماشین GoMLX که مخصوص زبان برنامهنویسی Go طراحی شده، راهحلی سریع و مؤثر برای توسعه مدلهای هوشمند است. این فریمورک بدون نیاز به زبان پایتون ساخته شده و جایگزینی ایدهآل برای کتابخانههای معروفی مانند TensorFlow یا PyTorch محسوب میشود، در حالی که کاملاً در قالب و سبک برنامهنویسی Go میگنجد.
در نسخههای اخیر، این ابزار پیشرفتهای قابل توجهی داشته است؛ از جمله پشتیبانی بهتر از دستورالعملهای SIMD که عملکرد پردازشی را بسیار بهبود بخشیده، و افزوده شدن صفحه اصلی جدید، همراه با مستندات جامع و کامل. علاوه بر این، قابلیت پشتیبانی از مدلهای متنوع از پروژه Hugging Face به صورت مستقیم، امکانات فوقالعادهای را برای توسعه دهندگان فراهم کرده است.
به کمک این بهروزرسانیها، توسعهدهندگان میتوانند مدلهای یادگیری ماشین را با سرعت و سهولت بیشتری در زبان Go پیادهسازی کنند، و مسیر توسعه پروژههای هوش مصنوعی در این زبان برنامهنویسی را هموارتر سازند.
در نتیجه، GoMLX به عنوان ابزاری قدرتمند و کارآمد در عرصه یادگیری ماشین با زبان Go شناخته شده است که امکاناتی جامع و به روز را در اختیار کاربران قرار میدهد.
#یادگیری_ماشین #گوامدل #هوش_مصنوعی #برنامه_نویسی
🟣لینک مقاله:
https://gomlx.github.io/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 283 |
| 18 | 🔵 عنوان مقاله
oapi-codegen 2.8.0: Now with OpenAPI 3.1 Support
🟢 خلاصه مقاله:
نسخه ۲.۸.۰ ابزار oapi-codegen بهروزرسانی شد و اکنون از استاندارد جدید OpenAPI 3.1 پشتیبانی میکند. این ابزار مدتهاست که به عنوان روشی موثر و معتبر برای تولید کدهای پایه و استانداردهای مشتری و سرور در زبان گو توسعه یافته است. با این بروزرسانی، توسعهدهندگان میتوانند از قابلیتهای پیشرفته و بهروز OpenAPI 3.1 بهرهمند شوند و فرآیند ساخت و یکپارچهسازی APIها را به شکل سادهتر و دقیقتری انجام دهند. این تغییرات فرصتهای جدیدی را برای بهبود کیفیت و سرعت توسعه سرویسهای مبتنی بر API فراهم میآورد و نشاندهنده توسعه مداوم این ابزار قدرتمند است.
#OpenAPI #برنامهنویسی #توسعهAPI #گو
🟣لینک مقاله:
https://github.com/oapi-codegen/oapi-codegen/releases/tag/v2.8.0
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 306 |
| 19 | 🚀 اگر قصد داری زبان انگلیسی رو تقویت کنی، از صفر شروع کنی یا برای مهاجرت آماده بشی، یکی از بهترین اساتیدی که میشناسم استاد منصوریان هست. 🇬🇧
اگر به دنبال یادگیری اصولی، منظم و کاربردی زبان هستی، پیشنهاد میکنم حتماً پیج ایشون رو دنبال کنی. 📚✨
📅 ظرفیت کلاسهای فعلی:
یکشنبه و پنجشنبه: ساعت ۱۴:۳۰ 🕒
شنبه و چهارشنبه: ساعت ۱۹:۰۰ 🕖
👇👇👇👇
Https://t.me/RaziyehMansourian 🔗 | 215 |
| 20 | 🔵 عنوان مقاله
go-diskfs: Manipulate Disks and Disk Images from Go
🟢 خلاصه مقاله:
در دنیای مدیریت و ویرایش دیسکها، ابزارهای مختلفی وجود دارند که به کمک آنها میتوان قسمتهای مختلف یک دیسک را تنظیم یا فایلسیستمهای مختلف را بر روی آن پیادهسازی کرد. ابزارهایی مانند fdisk، mkfs، vfat و mtools جزو ابزارهای اصلی و رایج در این حوزه هستند که هر یک نقش خاص خود را در کارهای مربوط به پارتیشنبندی، ساخت فایلسیستم و مدیریت فایلهای سیستمهای مختلف ایفا میکنند.
در این میان، کتابخانه go-diskfs برای زبان برنامهنویسی Go طراحی شده است که هدف آن فراهم کردن امکان کار با دیسکها و تصاویر دیسک به صورت برنامهنویسی و بدون نیاز به اجرای ابزارهای خارجی است. این کتابخانه به توسعهدهندگان این امکان را میدهد تا قسمتهای مختلف دیسکها، پارتیشنها، فایلسیستمها و فایلهای ایمیج را به راحتی و با قابلیت برنامهریزی مدیریت کنند. بنابراین، در مواردی که نیاز دارید عملیات مشابه آنهایی که با fdisk، mkfs یا mtools انجام میشود، اما در داخل برنامه و به صورت خودکار انجام دهید، این ابزار بسیار کاربردی است.
استفاده از go-diskfs مزایای زیادی دارد؛ اول اینکه توسعهدهندگان میتوانند فرآیندهای مدیریت دیسک را در برنامههای خود وارد کرده و کنترل کامل بر عملیاتهای پارتیشنبندی و ساخت فایلسیستمها داشته باشند. این ابزار مخصوصاً در پروژههایی که نیاز به کار اتوماتیک و مستقیم با دیسکها دارند، بسیار مؤثر است و باعث سادهسازی کارهای پیچیده میشود. در نهایت، این کتابخانه، راهکاری قدرتمند برای رسیدن به مدیریت حرفهای و برنامهنویسی دیسک و ایمیجها در زبان برنامهنویسی محبوب Go است.
#مدیریت_دیسک #برنامهنویسی #ایمیج_دیسک #go
🟣لینک مقاله:
https://github.com/diskfs/go-diskfs
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 307 |
