Gopher Academy
3.86K subscribers
927 photos
40 videos
280 files
2.09K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
3
🍾3
🔵 عنوان مقاله
Gnet 2.5: High-Perf, Non-Blocking, Event-Loop Networking Library

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

🟣لینک مقاله:
https://github.com/panjf2000/gnet


👑 @gopher_academy
👍1
🔵 عنوان مقاله
spark-connect-go: Apache Spark Connect Client for Go

🟢 خلاصه مقاله:
مقاله مورد بررسی به توصیف محصول نرم‌افزاری جدید به نام "Spark Connect" برای کلاینت Apache Spark در زبان برنامه‌نویسی Go می‌پردازد. این محصول، که هنوز در مرحله آزمایشی بسیار بالایی قرار دارد، امکان اتصال و تعامل برنامه‌های نوشته شده به زبان Go با Apache Spark را فراهم می‌کند. Apache Spark یک موتور محاسباتی قدرتمند برای پردازش داده‌های بزرگ است و استفاده از آن در زمینه‌های تحلیل داده و یادگیری ماشین رایج است. با اضافه شدن پشتیبانی از زبان Go، توسعه‌دهندگانی که در این زبان تخصص دارند می‌توانند از قابلیت‌های محاسباتی Spark بهره‌مند شوند. این گام نوین می‌تواند فرصت‌های تازه‌ای را برای بهینه‌سازی و افزایش کارایی پروژه‌های مبتنی بر داده ایجاد کند و در نهایت به پیشبرد دانش و فناوری در حوزه‌های مختلف کمک کند.

🟣لینک مقاله:
https://github.com/apache/spark-connect-go


👑 @gopher_academy
👍2🔥1
چرا Go همچنان ایستا نوع باقی مانده است:

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

ایمنی و کارایی: بر خلاف زبان‌های پویا (مثل Python)، Go نمی‌گذارد که در زمان اجرا نوع‌ها تعیین شوند. این باعث می‌شود که برنامه در زمان اجرا سریع‌تر باشد و از نظر مصرف حافظه و منابع بهینه‌تر عمل کند.

پایداری و اطمینان: Go به دلیل نوع ایستا و بررسی نوع‌ها در زمان کامپایل، امکان باگ‌ها و خطاهای ناشی از نوع‌های نادرست را کاهش می‌دهد. با وجود Generics، این اطمینان همچنان حفظ شده است.


👑 @gopher_academy
👍13
🔵 عنوان مقاله
💎 Gemfast: A Drop-In 'Gem' Server for Ruby Developers

🟢 خلاصه مقاله:
مقاله معرفی شده به ارائه یک سرور جدید Rubygems (سیستم مدیریت بسته‌های Ruby) می‌پردازد که به زبان برنامه‌نویسی Go نوشته شده است. این سرور به منظور تسهیل در نصب و راه‌اندازی طراحی شده است. این سرور جدید به کاربران Ruby اجازه می‌دهد تا بسته‌های نرم‌افزاری (gems) را از مخازن رسمی نصب کنند، ذخیره‌سازی موقت انجام دهند و همچنین بسته‌های خصوصی خود را ارائه دهند. این امکان به توسعه‌دهندگان این قابلیت را می‌دهد که به شکل موثرتری بر روی عرضه و نگهداری بسته‌های نرم‌افزاری خود کنترل داشته باشند، و همزمان از مشکلات احتمالی ناشی از استفاده از مرکز توزیع عمومی جلوگیری کنند.

🟣لینک مقاله:
https://github.com/gemfast/server


👑 @gopher_academy
👍3
🔵 عنوان مقاله
Muffet: A Fast, Recursive Website Link Checker

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

🟣لینک مقاله:
https://github.com/raviqqe/muffet


👑 @gopher_academy
🍾1
🔵 عنوان مقاله
Sonic: A Newly Open Sourced Low Latency Network and I/O Library

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به معرفی کتابخانه جدیدی به نام Sonic می‌پردازد که برای زبان برنامه‌نویسی Go توسعه داده شده است. Sonic، که اخیراً توسط یک شرکت تخصصی در زمینه زیرساخت‌های معاملاتی به صورت منبع باز منتشر شده است، یک کتابخانه شبکه و I/O ناهمزمان است. این کتابخانه به عنوان جایگزینی برای بسته net در Go عمل می‌کند و از برنامه‌نویسان می‌خواهد تا بدون نیاز به استفاده از چندین goroutine برای کنترل چندین اتصال و عملیات خواندن/نوشتن در فرایند واحد، برنامه‌های کارآمدتری بنویسند. این ویژگی می‌تواند به بهبود عملکرد و کارایی برنامه‌های مبتنی بر شبکه کمک کند. اطلاعات بیشتر و منابع مرتبط با این کتابخانه در مخزن GitHub موجود است.

🟣لینک مقاله:
https://www.talos.com/insights/talos-goes-sonic


👑 @gopher_academy
🍾2👍1
🔵 عنوان مقاله
The Two Reasons I Prefer Passing Struct Pointers Around

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

🟣لینک مقاله:
https://preslav.me/2024/04/23/two-reasons-to-prefer-struct-pointers-in-golang/


👑 @gopher_academy
🔥32
🔵 عنوان مقاله
Gohalt: A General Purpose Throttling Library

🟢 خلاصه مقاله:
مقاله‌ای که مد نظر قرار دارد، به بررسی استفاده از زبان برنامه‌نویسی Go در ساخت سیستم‌های کنترلی مانند خط لوله‌های جریان محدود (throttling pipelines) و سیستم‌های محدودسازی نرخ (rate limiters) می‌پردازد. نکته جالب توجه در این مقاله، استقبال نویسنده از لوگوی گوفر استفاده شده برای زبان Go است. همچنین، آپدیت و پشتیبانی Go از نسخه 1.22 در این مقاله مورد توجه قرار گرفته است که نشان‌دهنده قابلیت ارتقا و تطبیق پذیری این زبان با نسخه‌های جدید است. این موضوعات به خوبی توضیح داده شده‌اند که چگونه می‌توان از Go برای توسعه سیستم‌های مدیریتی اثربخش تر و کارآمد استفاده کرد.

🟣لینک مقاله:
https://github.com/1pkg/gohalt


👑 @gopher_academy
👍41
🔵 عنوان مقاله
Using Go Instead of Bash for Scripts

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

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


👑 @gopher_academy
👍5🍾1
در برنامه‌نویسی، مفاهیم همزمان (Synchronous) و ناهمزمان (Asynchronous) به نحوه اجرای عملیات‌ها و تعامل با سیستم اشاره دارند. در ادامه، تفاوت‌های کلیدی بین این دو نوع اجرای عملیات را بررسی می‌کنیم:

1. عملیات همزمان (Synchronous)
در عملیات همزمان، دستورات به ترتیب و یکی پس از دیگری اجرا می‌شوند. به این معنا که پردازش باید منتظر تکمیل یک عملیات شود تا عملیات بعدی آغاز شود.

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

2. عملیات ناهمزمان (Asynchronous)
در عملیات ناهمزمان، عملیات‌ها به طور هم‌زمان و مستقل از یکدیگر اجرا می‌شوند. این به این معناست که برنامه می‌تواند بدون منتظر ماندن برای تکمیل یک عملیات، به کار خود ادامه دهد.

ویژگی‌ها:
غیرترتیبی: عملیات‌ها به صورت مستقل و غیرترتیبی اجرا می‌شوند.
غیرمسدودکننده: برنامه می‌تواند به انجام کارهای دیگر ادامه دهد در حالی که عملیات‌های دیگر در پس‌زمینه در حال اجرا هستند.
پیچیده‌تر: پیاده‌سازی و مدیریت کد ناهمزمان می‌تواند پیچیده‌تر باشد و نیاز به مدیریت مناسب اشتباهات و همزمانی دارد.

👑 @gopher_academy
3👍7
🔵 عنوان مقاله
Cryptography in Go: AES Encryption

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


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


👑 @gopher_academy
4
🔵 عنوان مقاله
Streamline Your Product Delivery with monday dev

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

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
Tokens for LLMs: Byte Pair Encoding in Go

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

🟣لینک مقاله:
https://eli.thegreenplace.net/2024/tokens-for-llms-byte-pair-encoding-in-go/


👑 @gopher_academy
4
🔵 عنوان مقاله
How I Made My GitHub Profile README Dynamic

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

🟣لینک مقاله:
https://tduyng.github.io/blog/dynamic-github-profile-readme/


👑 @gopher_academy
👍3🍾1
🔵 عنوان مقاله
µ micro: A Go-Powered Terminal-Based Text Editor

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Telemetry in Go 1.23 and Beyond

🟢 خلاصه مقاله:
در ابتدای سال 2023، Russ Cox مفهوم 'تلمتری شفاف' را برای زبان برنامه نویسی Go معرفی کرد. در ابتدا، این ویژگی به طور پیش‌فرض فعال بود، اما به دلیل واکنش‌های منفی برخی افراد، تبدیل به ویژگی اختیاری شد و در نسخه 1.23 Go گنجانده شد. در این مقاله، Robert توضیح می‌دهد که چگونه این نوع تلمتری می‌تواند مفید باشد، اگر شما تصمیم به فعال کردن آن داشته باشید. توانایی‌های تلمتری شفاف شامل جمع‌آوری داده‌ها و اطلاعات به صورت زمان‌واقعی درباره عملکرد و استفاده از نرم افزار است که می‌تواند کمک شایانی به بهبود و توسعه‌ی بیشتر Go کند. اما با وجود فواید آن، مساله حفظ حریم خصوصی و اطمینان از امنیت داده‌ها همچنان موضوع مهمی است که باید مورد توجه قرار گیرد.

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


👑 @gopher_academy
1
🔵 عنوان مقاله
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