Gopher Academy
3.85K subscribers
924 photos
40 videos
280 files
2.08K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Garble: A Toolchain to Obfuscate Go Builds

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

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Go is Not Java

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

🟣لینک مقاله:
https://blog.vertigrated.com/go-is-not-java


👑 @gopher_academy
5👍5🍾3🔥1
🔵 عنوان مقاله
FAIR: A Go Library for Serving Resources 'Fairly'

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

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


👑 @gopher_academy
2
🔰تعریف مهندسی معکوس

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

🔵کاربرد اصلی مهندسی معکوس در یکی از دو مورد زیر است:

🔴وقتی جواب یک مسئله را می‌دانیم. اما نمی‌دانیم این جواب پاسخ به چه سوالی است.

🔴وقتی سوال و پاسخ را می‌دانیم. اما نمی‌دانیم مسیر و فرایند رسیدن به این پاسخ چه بوده است.


👑 @gopher_academy
👍5🔥1
😢یادش بخیر دوران دبیرستان😅
چه ذوقی میکردیم وقتی اجرا میکردیم

👑 @gopher_academy
10🍾2👍1🔥1
🔵 عنوان مقاله
Awesome Ebitengine: A Curated List of Ebitengine Resources

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

🟣لینک مقاله:
https://github.com/sedyh/awesome-ebitengine


👑 @gopher_academy
2
🔵 عنوان مقاله
Secure Randomness in Go 1.22

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

🟣لینک مقاله:
https://go.dev/blog/chacha8rand


👑 @gopher_academy
3
🔵 عنوان مقاله
Nimble Terminal Charts: Charting for Bubble Tea

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

🟣لینک مقاله:
https://github.com/NimbleMarkets/ntcharts


👑 @gopher_academy
👍2
🔵 عنوان مقاله
go2type: A Go to TypeScript API Client Generator

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

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


👑 @gopher_academy
👍3🔥1
✍️Massimo DevMassimo Dev

سوال مصاحبه: چطور میشه بررسی کرد که نام کاربری بین یک میلیارد کاربر تکراری نباشه؟ 🤔

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

### مشکل کجاست؟ 😟
اگه بخوایم از روش‌های سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبه‌رو می‌شیم:
- کندی در درخواست‌ها ⌛️
- فشار زیاد به دیتابیس💥 که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاس‌پذیری 🚧 یعنی وقتی تعداد درخواست‌ها زیاد بشه، سرور نمی‌تونه همه رو مدیریت کنه.

### استفاده از Redis: سریع ولی پرمصرف ⚡️💾
ردیس Redis کمک می‌کنه که بررسی نام کاربری خیلی سریع بشه، چون داده‌ها رو توی حافظه ذخیره می‌کنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف می‌کنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! 😳 که تو سیستم‌های بزرگ، خیلی پرهزینه و غیرعملی میشه.

### فیلتر Bloom: ساده، بهینه و کم‌مصرف 💡
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینه‌تره که فضای حافظه خیلی کمتری استفاده می‌کنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره! 😎

اما فیلتر Bloom چیه؟ بذار یه مثال ساده بزنم:
فرض کن یه کیف داری که یه سری جیب کوچیک داره. هر بار که می‌خوای یه نام کاربری جدید رو ذخیره کنی، یه سری کلید (یعنی همون الگوریتم‌های هش) بهت میگه تو کدوم جیب‌های کیف بذاری. بعد اگه بخوای ببینی اون نام کاربری قبلاً ذخیره شده یا نه، فقط کافیه جیب‌های مشخص شده رو چک کنی. اگه تو هر جیب چیزی باشه، یعنی احتمالاً اون نام کاربری قبلاً استفاده شده. ولی اگه یکی از جیب‌ها خالی باشه، مطمئنی که اون نام کاربری وجود نداره. 😄

با این روش:
- حافظه کمی استفاده میشه 🧠
- سرعت بررسی خیلی بالاست ⚡️

البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشم‌پوشیه.

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


👑 @gopher_academy
7🔥1🍾1
🔵 عنوان مقاله
caddy-exec: Caddy Module for Running One-Off Commands

🟢 خلاصه مقاله:
مقاله به بررسی "Caddy" می‌پردازد، یک سرور HTTP(S) که با زبان برنامه‌نویسی Go نوشته شده است. Caddy به‌خاطر سازگاری و عملکرد بالا در بین توسعه‌دهندگان محبوبیت زیادی دارد. یکی از ویژگی‌های برجسته این سرور، قابلیت افزودن افزونه‌هاست که امکان تریگر (فعال‌سازی) دستورات در زمان‌های مختلف، از جمله هنگام راه‌اندازی یا خاموش‌شدن سرور، و هم‌چنین از طریق مسیرهای معین را فراهم می‌کند. این ویژگی‌ها Caddy را به یک ابزار قوی و انعطاف‌پذیر تبدیل می‌کنند که برای مدیریت و بهینه‌سازی عملیات‌های وب سرور در محیط‌های مختلف مناسب است. این مقاله به توضیح و بررسی جامعی از چگونگی کارکرد و مزایای استفاده از این افزونه در Caddy پرداخته است.

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


👑 @gopher_academy
👍3
Forwarded from Bardia & Erfan
🍾حدیث روز

🕸 @labdon_academy
👍81🔥1🍾1
🔵 عنوان مقاله
What's in an (Alias) Name?

🟢 خلاصه مقاله:
مقاله مذکور به موضوع اضافه شدن انواع نام‌های مستعار عمومی (Generic alias types) به زبان برنامه‌نویسی Go در نسخه 1.24، که انتظار می‌رود در فوریه 2025 منتشر شود، می‌پردازد. این ویژگی جدید بر پایه نام‌های مستعار موجود و جنریک‌ها (generics) ساخته شده است. یکی از مهم‌ترین کاربردهای نام‌های مستعار توانایی بازسازی کد بدون از بین بردن سازگاری با نسخه‌های قبلی است. رابرت در این مقاله به توضیح مفهوم نام‌های مستعار و دلایلی که گنجاندن آن‌ها در جنریک‌ها کار بیشتری را می‌طلبد پرداخته است. گسترش نام‌های مستعار به جنریک‌ها قابلیت‌های زبان برنامه‌نویسی Go را تقویت می‌کند و امکان ارتقاء کد را فراهم می‌آورد، در حالی که حفظ سازگاری و قابل استفاده بودن در پروژه‌های موجود را تضمین می‌کند.

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
Revive 1.4: A Faster, Configurable, Flexible Linter for Go

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

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


👑 @gopher_academy
👍2
😱اینم یه چک لیست امنیتی برای api که توسعه میدید
گزینه خوبیه

https://roadmap.sh/best-practices/api-security


👑 @gopher_academy
2👍2🍾1
🔵 عنوان مقاله
Sets in Go: Using Maps and Recommended Packages

🟢 خلاصه مقاله:
معرفی خلاصه‌ای از مقاله‌ای در مورد ایجاد مجموعه‌ها در زبان برنامه‌نویسی Go است. این مقاله بر این تاکید دارد که زبان Go به طور بومی نوع داده‌ای برای مجموعه‌ها ندارد، اما می‌توان با استفاده از نقشه‌ها (maps) یک مجموعه را پیاده‌سازی کرد. همچنین، بسته‌هایی مانند golang-set وجود دارند که این پروسه را ساده‌تر می‌کنند. نویسنده مقاله، Willem، روش‌های کار با این ابزارها را نشان می‌دهد و چگونگی استفاده از نقشه‌ها برای ایجاد داده‌های مجموعه‌ای به طور کارآمد را توضیح می‌دهد. این بینش می‌تواند برای برنامه‌نویسانی که در حال کار با Go هستند و نیاز به مدیریت مجموعه های داده‌ای بدون تکرار دارند، مفید باشد.

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


👑 @gopher_academy
🔥4
🔵 عنوان مقاله
Using Structs for Generic Argument Lists

🟢 خلاصه مقاله:
در این مقاله، یک الگوریتم جدید با یک الگوریتم قدیمی مقایسه می‌شود تا اطمینان حاصل شود که هر دو پاسخ یکسانی به دست می‌دهند. این مقایسه به منظور آزمایش بازنویسی‌ها و بهینه‌سازی‌های کد انجام می‌گیرد. استفاده از ساختارهای داده‌ای (structs) به همراه generics (کلیات) در زبان‌های برنامه‌نویسی کمک می‌کند تا کد نوشته شده ساده‌تر و مدیریت‌پذیرتر باشد. برای این منظور، نویسنده توضیح می‌دهد که چگونه می‌توان با استفاده از "پرچم‌های ویژه" مخصوص آزمایش، اطمینان حاصل کرد که تغییرات جدید در کد، کارآیی الگوریتم‌ها را به خطر نمی‌اندازد. فرآیند مقایسه الگوریتم‌ها به صورت موازی و گاهی اوقات به صورت تدریجی آزمایش و پیاده‌سازی می‌شود تا به تدریج جایگزین الگوریتم‌های قدیمی‌تر شود، بدون اینکه به سیستم جاری آسیب برساند.

🟣لینک مقاله:
https://www.emoses.org/posts/reusable-patterns-in-go/


👑 @gopher_academy
🔥1
Forwarded from Bardia & Erfan
کارکردن با افرادی که ...


🕸 @labdon_academy
5👍4🍾2🔥1
در بحث بهینه‌سازی بین دو تعریف زیر در Go:

var x *[]user  
// اشاره‌گر به یک slice از نوع user

var y []*user 
// یک slice از اشاره‌گرها به user


انتخاب بین این دو به نیاز و سناریوی خاصی که در برنامه‌تان دارید بستگی دارد. اما از دیدگاه بهینه‌سازی و کارایی، در اکثر موارد استفاده از y []*user بهینه‌تر است. دلایل این انتخاب را در ادامه توضیح می‌دهم.

### 1. تفاوت در حافظه و سربار (Memory Overhead):

ا- x *[]user (اشاره‌گر به slice از user):
ا  - x فقط یک اشاره‌گر به یک slice است، بنابراین شما باید یک ساختار slice کامل در جای دیگری از حافظه داشته باشید. این یعنی دو مرتبه نگهداری اطلاعات در حافظه:

    1. اشاره‌گر x که به یک slice اشاره می‌کند.

    2. خود ساختار slice که شامل اطلاعاتی مثل طول (length)، ظرفیت (capacity) و اشاره‌گر به آرایه پشتیبان (underlying array) است.

  - از طرفی، در صورتی که داده‌ها را تغییر دهید (مثلاً به slice مقدار جدیدی اضافه کنید)، باید در حافظه دوباره مقداردهی شود و سربار اضافی در مدیریت حافظه ایجاد می‌شود.

ا- y []*user (slice از اشاره‌گرها به user):
  ا- y یک slice از اشاره‌گرهاست و هر خانه آن فقط یک اشاره‌گر به یک user است. در اینجا شما فقط اشاره‌گرها را ذخیره می‌کنید و از فضای کمتری برای نگهداری هر عنصر استفاده می‌شود.

  - در واقع، داده‌ها از طریق اشاره‌گرها به مکان دیگری از حافظه اشاره دارند، که این بهینه‌تر است اگر شما قرار نیست ساختارهای user را مکرراً کپی کنید.

  - هر بار که یک عنصر به این slice اضافه کنید، تنها یک اشاره‌گر اضافه می‌شود و سربار اضافی برای کپی‌کردن ساختارهای بزرگ user وجود ندارد.

### 2. سهولت استفاده و تغییرپذیری:

- x *[]user:
  - برای هر بار دسترسی یا تغییر مقدار داخل x، باید ابتدا اشاره‌گر x را dereference کنید. این کار پیچیدگی کد را افزایش می‌دهد و نیازمند دستورات اضافی است.

  - مدیریت حافظه می‌تواند پیچیده‌تر باشد، به‌ویژه اگر در کدتان جابجایی یا تغییرات زیادی در slice رخ دهد.

- y []*user:
  - استفاده از y ساده‌تر است زیرا مستقیماً با یک slice سروکار دارید و نیازی به dereference نیست.

  - کار با اشاره‌گرها در Go معمولاً کارآمدتر است و نیاز به جابجایی و کپی داده‌ها کمتر است.

### 3. کارایی در عمل (Performance):

- x *[]user:
  - در این حالت هر بار که داده‌ها به slice اضافه یا تغییر داده شوند، اگر ظرفیت slice پر شده باشد، ممکن است نیاز به تخصیص حافظه جدید و کپی داده‌ها به مکان جدید باشد. این می‌تواند عملکرد را تحت تأثیر قرار دهد.

  - همچنین، داشتن اشاره‌گر اضافی ممکن است باعث افزایش سربار در حافظه و زمان دسترسی شود.

- y []*user:
  - بهینه‌تر است چون شما مستقیماً اشاره‌گرها به ساختارهای user را در slice ذخیره می‌کنید. هیچ نیازی به کپی‌کردن کل ساختار user نیست.
  - این روش کارایی بالاتری دارد، به‌ویژه زمانی که ساختار user بزرگ باشد و کپی‌کردن آن هزینه‌بر باشد.

### نتیجه‌گیری:
در بیشتر سناریوها، y []*user بهینه‌تر است:
- کمتر بودن سربار حافظه: به جای کپی‌کردن داده‌های بزرگ، تنها اشاره‌گرها را در slice نگه می‌دارید.
- عملکرد بهتر در تغییرات slice: تغییر دادن و مدیریت اشاره‌گرها سریع‌تر است و سربار کمتری در مقایسه با کپی کردن ساختارهای بزرگ دارد.

- سادگی و سهولت استفاده:
y []*user نیازی به dereference اضافی ندارد و مدیریت آن راحت‌تر است.

با این حال، اگر نیاز خاصی دارید که به یک اشاره‌گر به یک slice نیاز باشد، مانند مواقعی که می‌خواهید یک ساختار slice را بین چندین تابع به اشتراک بگذارید و آن را تغییر دهید، استفاده از x *[]user ممکن است مفید باشد.


👑 @gopher_academy
👍6
🔵 عنوان مقاله
The Hookdeck Event Gateway

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

🟣لینک مقاله:
https://hookdeck.com?ref=goweekly-506


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Logdy: A Web-Based Viewer for Logs

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

🟣لینک مقاله:
https://logdy.dev/


👑 @gopher_academy
2🔥1