کامپایلر Go (گولنگ) با استفاده از زبان Go توسعه داده شده است. در واقع، نسخههای ابتدایی کامپایلر Go ابتدا به زبان C نوشته شده بود، اما پس از آن نسخههای بعدی کامپایلر به زبان Go بازنویسی شدند تا پروژه بهطور کامل خود-میزبان (self-hosted) باشد.
self-hosting به این معنی است که کامپایلر یک زبان برنامهنویسی با همان زبان برنامهنویسی نوشته شده است، و این موضوع برای بسیاری از زبانهای برنامهنویسی مانند Go یک دستاورد مهم محسوب میشود.
در حال حاضر، کامپایلر Go از یک ابزار به نام
➖➖➖➖➖➖➖➖
👑 @gopher_academy
self-hosting به این معنی است که کامپایلر یک زبان برنامهنویسی با همان زبان برنامهنویسی نوشته شده است، و این موضوع برای بسیاری از زبانهای برنامهنویسی مانند Go یک دستاورد مهم محسوب میشود.
در حال حاضر، کامپایلر Go از یک ابزار به نام
gc
استفاده میکند که با Go نوشته شده است و در پروژه رسمی Go موجود است.➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔥13👍6
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن
🟢Introduction to Memory management
🟡 https://t.iss.one/gopher_academy/778
🟢What is it?
🟡 https://t.iss.one/gopher_academy/779
🟢Stack
🟡 https://t.iss.one/gopher_academy/780
🟢Stack & Heap visualized
🟡 https://t.iss.one/gopher_academy/781
🟢Heap
🟡 https://t.iss.one/gopher_academy/782
🟢Why is it important?
🟡 https://t.iss.one/gopher_academy/783
🟢Different approaches?
🟡 https://t.iss.one/gopher_academy/784
🟢Manual memory management
🟡 https://t.iss.one/gopher_academy/787
🟢Garbage collection(GC)
🟡 https://t.iss.one/gopher_academy/788
🟢Garbage collection visualized
🟡 https://t.iss.one/gopher_academy/789
🟢Resource Acquisition is Initialization (RAII)
🟡 https://t.iss.one/gopher_academy/791
🟢Automatic Reference Counting(ARC)
🟡 https://t.iss.one/gopher_academy/792
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟢Introduction to Memory management
🟡 https://t.iss.one/gopher_academy/778
🟢What is it?
🟡 https://t.iss.one/gopher_academy/779
🟢Stack
🟡 https://t.iss.one/gopher_academy/780
🟢Stack & Heap visualized
🟡 https://t.iss.one/gopher_academy/781
🟢Heap
🟡 https://t.iss.one/gopher_academy/782
🟢Why is it important?
🟡 https://t.iss.one/gopher_academy/783
🟢Different approaches?
🟡 https://t.iss.one/gopher_academy/784
🟢Manual memory management
🟡 https://t.iss.one/gopher_academy/787
🟢Garbage collection(GC)
🟡 https://t.iss.one/gopher_academy/788
🟢Garbage collection visualized
🟡 https://t.iss.one/gopher_academy/789
🟢Resource Acquisition is Initialization (RAII)
🟡 https://t.iss.one/gopher_academy/791
🟢Automatic Reference Counting(ARC)
🟡 https://t.iss.one/gopher_academy/792
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍10
❤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
Gnet 2.5: High-Perf, Non-Blocking, Event-Loop Networking Library
🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی یک سیستم برنامهنویسی پرداخته که با استفاده از epoll و kqueue از ابتدا ساخته شده است. این سیستم قادر است در مقایسه با Go net در سناریوهای خاصی، عملکرد بالاتری را با مصرف حافظه کمتری به دست آورد. Go net که یکی از متداولترین کتابخانهها در برنامه نویسی شبکه است، در برخی از موارد کمبودهایی دارد که این سیستم جدید تلاش کرده است تا آن کمبودها را با بهرهگیری از روشها و فناوریهای جدید در زمینه هندلینگ اتصالات و مدیریت حافظه بهبود ببخشد. درکل، این مقاله نشان دهنده پتانسیلها و فواید استفاده از رویکردهای نوین در توسعه نرمافزارهای شبکه است، و تاکید دارد بر اینکه چگونه این رویکردها میتوانند به بهینهسازی عملکرد و کاهش مصرف منابع کمک کنند.
🟣لینک مقاله:
https://github.com/panjf2000/gnet
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - panjf2000/gnet: 🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in…
🚀 gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go. - panjf2000/gnet
👍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
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
GitHub
GitHub - apache/spark-connect-go: Apache Spark Connect Client for Golang
Apache Spark Connect Client for Golang. Contribute to apache/spark-connect-go development by creating an account on GitHub.
👍2🔥1
چرا Go همچنان ایستا نوع باقی مانده است:
تعیین نوع در زمان کامپایل: حتی با استفاده از Generics، کامپایلر Go در زمان کامپایل نوع دادهها را تشخیص داده و آنها را بررسی میکند. این ویژگی از ایجاد خطاهای مربوط به نوع جلوگیری میکند.
ایمنی و کارایی: بر خلاف زبانهای پویا (مثل Python)، Go نمیگذارد که در زمان اجرا نوعها تعیین شوند. این باعث میشود که برنامه در زمان اجرا سریعتر باشد و از نظر مصرف حافظه و منابع بهینهتر عمل کند.
پایداری و اطمینان: Go به دلیل نوع ایستا و بررسی نوعها در زمان کامپایل، امکان باگها و خطاهای ناشی از نوعهای نادرست را کاهش میدهد. با وجود Generics، این اطمینان همچنان حفظ شده است.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
تعیین نوع در زمان کامپایل: حتی با استفاده از 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
💎 Gemfast: A Drop-In 'Gem' Server for Ruby Developers
🟢 خلاصه مقاله:
مقاله معرفی شده به ارائه یک سرور جدید Rubygems (سیستم مدیریت بستههای Ruby) میپردازد که به زبان برنامهنویسی Go نوشته شده است. این سرور به منظور تسهیل در نصب و راهاندازی طراحی شده است. این سرور جدید به کاربران Ruby اجازه میدهد تا بستههای نرمافزاری (gems) را از مخازن رسمی نصب کنند، ذخیرهسازی موقت انجام دهند و همچنین بستههای خصوصی خود را ارائه دهند. این امکان به توسعهدهندگان این قابلیت را میدهد که به شکل موثرتری بر روی عرضه و نگهداری بستههای نرمافزاری خود کنترل داشته باشند، و همزمان از مشکلات احتمالی ناشی از استفاده از مرکز توزیع عمومی جلوگیری کنند.
🟣لینک مقاله:
https://github.com/gemfast/server
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - gemfast/server: A drop in replacement for geminabox written in Go
A drop in replacement for geminabox written in Go. Contribute to gemfast/server development by creating an account on GitHub.
👍3
🔵 عنوان مقاله
Muffet: A Fast, Recursive Website Link Checker
🟢 خلاصه مقاله:
این مقاله به بررسی و توضیح یک ابزار خط فرمان (CLI) برای خزیدن و بازرسی صفحات وب به صورت بازگشتی در سراسر یک وبسایت میپردازد. ابزار مذکور امکان جمعآوری دادهها و اطلاعات از صفحات مختلف وبسایتها را فراهم میکند. این ابزار همچنین به کاربران اجازه میدهد تا الگوها، محتوا، و ویژگیهای مشابه را در صفحات متعدد بررسی و تحلیل کنند، که میتواند در بهبود سئو و بهینهسازی وبسایتها موثر باشد. نکته مهم در مورد این ابزار این است که به صورت خودکار دادهها را دستهبندی و آنالیز میکند، که به کاربران این امکان را میدهد تا به سرعت اطلاعاتی معنادار و قابل بهرهبرداری را دریافت کنند. استفاده از این ابزار میتواند برای توسعهدهندگان وب، متخصصان سئو، و تحلیلگران داده بسیار مفید باشد.
🟣لینک مقاله:
https://github.com/raviqqe/muffet
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Muffet: A Fast, Recursive Website Link Checker
🟢 خلاصه مقاله:
این مقاله به بررسی و توضیح یک ابزار خط فرمان (CLI) برای خزیدن و بازرسی صفحات وب به صورت بازگشتی در سراسر یک وبسایت میپردازد. ابزار مذکور امکان جمعآوری دادهها و اطلاعات از صفحات مختلف وبسایتها را فراهم میکند. این ابزار همچنین به کاربران اجازه میدهد تا الگوها، محتوا، و ویژگیهای مشابه را در صفحات متعدد بررسی و تحلیل کنند، که میتواند در بهبود سئو و بهینهسازی وبسایتها موثر باشد. نکته مهم در مورد این ابزار این است که به صورت خودکار دادهها را دستهبندی و آنالیز میکند، که به کاربران این امکان را میدهد تا به سرعت اطلاعاتی معنادار و قابل بهرهبرداری را دریافت کنند. استفاده از این ابزار میتواند برای توسعهدهندگان وب، متخصصان سئو، و تحلیلگران داده بسیار مفید باشد.
🟣لینک مقاله:
https://github.com/raviqqe/muffet
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - raviqqe/muffet: Fast website link checker in Go
Fast website link checker in Go. Contribute to raviqqe/muffet development by creating an account on GitHub.
🍾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
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
Talos
Talos built Sonic to reduce the time it takes to read and write data from the network with minimal latency
At Talos, we're building the best trading platform to help institutions trade digital assets. Today, we're excited to share the open-sourcing of Sonic, our custom-built Go library designed to reduce the time it takes to read and write data from the network…
🍾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
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
Preslav Rachev
The Two Reasons I Prefer Passing Struct Pointers Around
Choosing consistency over performance.
🔥3❤2
🔵 عنوان مقاله
Gohalt: A General Purpose Throttling Library
🟢 خلاصه مقاله:
مقالهای که مد نظر قرار دارد، به بررسی استفاده از زبان برنامهنویسی Go در ساخت سیستمهای کنترلی مانند خط لولههای جریان محدود (throttling pipelines) و سیستمهای محدودسازی نرخ (rate limiters) میپردازد. نکته جالب توجه در این مقاله، استقبال نویسنده از لوگوی گوفر استفاده شده برای زبان Go است. همچنین، آپدیت و پشتیبانی Go از نسخه 1.22 در این مقاله مورد توجه قرار گرفته است که نشاندهنده قابلیت ارتقا و تطبیق پذیری این زبان با نسخههای جدید است. این موضوعات به خوبی توضیح داده شدهاند که چگونه میتوان از Go برای توسعه سیستمهای مدیریتی اثربخش تر و کارآمد استفاده کرد.
🟣لینک مقاله:
https://github.com/1pkg/gohalt
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Gohalt: A General Purpose Throttling Library
🟢 خلاصه مقاله:
مقالهای که مد نظر قرار دارد، به بررسی استفاده از زبان برنامهنویسی Go در ساخت سیستمهای کنترلی مانند خط لولههای جریان محدود (throttling pipelines) و سیستمهای محدودسازی نرخ (rate limiters) میپردازد. نکته جالب توجه در این مقاله، استقبال نویسنده از لوگوی گوفر استفاده شده برای زبان Go است. همچنین، آپدیت و پشتیبانی Go از نسخه 1.22 در این مقاله مورد توجه قرار گرفته است که نشاندهنده قابلیت ارتقا و تطبیق پذیری این زبان با نسخههای جدید است. این موضوعات به خوبی توضیح داده شدهاند که چگونه میتوان از Go برای توسعه سیستمهای مدیریتی اثربخش تر و کارآمد استفاده کرد.
🟣لینک مقاله:
https://github.com/1pkg/gohalt
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - 1pkg/gohalt: Gohalt 👮♀🛑: Fast; Simple; Powerful; Go Throttler library
Gohalt 👮♀🛑: Fast; Simple; Powerful; Go Throttler library - 1pkg/gohalt
👍4❤1
🔵 عنوان مقاله
Using Go Instead of Bash for Scripts
🟢 خلاصه مقاله:
استفاده از زبان برنامهنویسی Go به جای اسکریپتهای مخصوص به سیستمعاملها به شما این امکان را میدهد که تنها یک بار اسکریپت خود را بنویسید و آن را بر روی تمامی پلتفرمها به کار ببرید، بدون اینکه نیاز باشد زبانهای اسکریپتنویسی خاص به هر سیستمعاملی را فرا بگیرید. با اینکه استفاده از Go ممکن است به مقدار بیشتری کدنویسی نیاز داشته باشد، اما این مسئله میتواند هزینه کوچکی باشد که مزایای آن، بویژه در زمینه بهینهسازی و سهولت در نگهداری کد، بر هزینههای آن غلبه میکند. با استفاده از Go، دیگر نیازی به نوشتن چندین اسکریپت برای سیستمهای مختلف وجود ندارد، که این امر میتواند به کاهش خطاها و صرفهجویی در وقت بینجامد.
🟣لینک مقاله:
https://golangweekly.com/link/159855/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Using Go Instead of Bash for Scripts
🟢 خلاصه مقاله:
استفاده از زبان برنامهنویسی Go به جای اسکریپتهای مخصوص به سیستمعاملها به شما این امکان را میدهد که تنها یک بار اسکریپت خود را بنویسید و آن را بر روی تمامی پلتفرمها به کار ببرید، بدون اینکه نیاز باشد زبانهای اسکریپتنویسی خاص به هر سیستمعاملی را فرا بگیرید. با اینکه استفاده از Go ممکن است به مقدار بیشتری کدنویسی نیاز داشته باشد، اما این مسئله میتواند هزینه کوچکی باشد که مزایای آن، بویژه در زمینه بهینهسازی و سهولت در نگهداری کد، بر هزینههای آن غلبه میکند. با استفاده از Go، دیگر نیازی به نوشتن چندین اسکریپت برای سیستمهای مختلف وجود ندارد، که این امر میتواند به کاهش خطاها و صرفهجویی در وقت بینجامد.
🟣لینک مقاله:
https://golangweekly.com/link/159855/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
blog.kowalczyk.info
Using Go instead of bash for scripts
👍5🍾1
در برنامهنویسی، مفاهیم همزمان (Synchronous) و ناهمزمان (Asynchronous) به نحوه اجرای عملیاتها و تعامل با سیستم اشاره دارند. در ادامه، تفاوتهای کلیدی بین این دو نوع اجرای عملیات را بررسی میکنیم:
1. عملیات همزمان (Synchronous)
در عملیات همزمان، دستورات به ترتیب و یکی پس از دیگری اجرا میشوند. به این معنا که پردازش باید منتظر تکمیل یک عملیات شود تا عملیات بعدی آغاز شود.
ویژگیها:
ترتیب خطی: دستورات به صورت خطی و به ترتیب اجرا میشوند.
مسدودکننده: تا زمانی که یک عملیات به پایان نرسیده باشد، عملیات بعدی شروع نمیشود.
سادهتر: پیادهسازی و درک آن معمولاً سادهتر است.
مثال:
در یک برنامه همزمان، اگر تابعی برای خواندن دادهها از یک فایل داشته باشید، برنامه تا زمانی که خواندن کامل نشود، متوقف میشود و سپس ادامه پیدا میکند.
2. عملیات ناهمزمان (Asynchronous)
در عملیات ناهمزمان، عملیاتها به طور همزمان و مستقل از یکدیگر اجرا میشوند. این به این معناست که برنامه میتواند بدون منتظر ماندن برای تکمیل یک عملیات، به کار خود ادامه دهد.
ویژگیها:
غیرترتیبی: عملیاتها به صورت مستقل و غیرترتیبی اجرا میشوند.
غیرمسدودکننده: برنامه میتواند به انجام کارهای دیگر ادامه دهد در حالی که عملیاتهای دیگر در پسزمینه در حال اجرا هستند.
پیچیدهتر: پیادهسازی و مدیریت کد ناهمزمان میتواند پیچیدهتر باشد و نیاز به مدیریت مناسب اشتباهات و همزمانی دارد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
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
Cryptography in Go: AES Encryption
🟢 خلاصه مقاله:
مقالهای که مطالعه کردهاید آخرین بخش از سه بخش برگرفته شده از کتاب جان درباره Go و رمزنگاری است. در این بخش، به چالشهایی در زمینه رمزنگاری و رمزگشایی با استفاده از AES در زبان برنامهنویسی Go پرداخته شده است. جان، مسائلی را در این زمینه مطرح کرده و سپس پاسخها و توضیحات مفصلی برای آنها ارائه داده است. این توضیحات شامل جزئیات فنی چگونگی استفاده از کتابخانههای AES و تکنیکهای موثر برای ایمنسازی فرایند رمزنگاری در Go میباشد. این بخش به خوانندگان کمک میکند تا درک بهتری از کاربرد AES در عملیات رمزنگاری با Go به دست آورند و از طریق مثالهای عملی، مهارتهای خود را در این زمینه تقویت کنند.
🟣لینک مقاله:
https://golangweekly.com/link/159856/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bitfield Consulting
Encrypting with AES — Bitfield Consulting
AES is an amazing, state-of-the-art encryption system, and it’s built right in to Go as part of the standard library. It’s also incredibly easy to use. Let’s see how!
❤4
🔵 عنوان مقاله
Streamline Your Product Delivery with monday dev
🟢 خلاصه مقاله:
مقالهای که ارائه شده به بررسی ابزاری به نام "monday dev" میپردازد که فرآیند تولید و عرضه محصولات را تسریع بخشیده و سادهسازی میکند. این ابزار تمام مراحل مختلف توسعه محصول، از مرحله ایدهپردازی تا عرضه نهایی، را در یک پلتفرم یکپارچه ارائه میدهد. استفاده از "monday dev" به تیمها این امکان را میدهد که به طور موثرتر و هماهنگتری کار کنند، به این ترتیب از پراکندگی منابع و زمان در جریان توسعه محصول جلوگیری میکند. این پلتفرم با ارائه امکانات و ابزارهای جامع، روند ایدهپردازی تا تحویل محصول را بهینهسازی کرده و بدین ترتیب میتواند به تسریع در عرضه محصول کمک کند، در حالی که همزمان اطمینان حاصل میشود که تمامی جوانب مورد نیاز در نظر گرفته شدهاند.
🟣لینک مقاله:
https://golangweekly.com/link/159869/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Streamline Your Product Delivery with monday dev
🟢 خلاصه مقاله:
مقالهای که ارائه شده به بررسی ابزاری به نام "monday dev" میپردازد که فرآیند تولید و عرضه محصولات را تسریع بخشیده و سادهسازی میکند. این ابزار تمام مراحل مختلف توسعه محصول، از مرحله ایدهپردازی تا عرضه نهایی، را در یک پلتفرم یکپارچه ارائه میدهد. استفاده از "monday dev" به تیمها این امکان را میدهد که به طور موثرتر و هماهنگتری کار کنند، به این ترتیب از پراکندگی منابع و زمان در جریان توسعه محصول جلوگیری میکند. این پلتفرم با ارائه امکانات و ابزارهای جامع، روند ایدهپردازی تا تحویل محصول را بهینهسازی کرده و بدین ترتیب میتواند به تسریع در عرضه محصول کمک کند، در حالی که همزمان اطمینان حاصل میشود که تمامی جوانب مورد نیاز در نظر گرفته شدهاند.
🟣لینک مقاله:
https://golangweekly.com/link/159869/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
monday.com
monday.com - Team Collaboration Software
👍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
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
How I Made My GitHub Profile README Dynamic
🟢 خلاصه مقاله:
مقالهی مورد بحث شرح میدهد که چگونه میتوان پروفایل GitHub خود را با افزودن اطلاعات اضافی مانند پستهای وبلاگ، جذابتر کرد. این کار به نظر پیچیده نیست و با استفاده از ابزارهایی که GitHub فراهم میکند، میتوان اطلاعاتی مانند آخرین پستهای وبلاگ یا سایر دادههای مرتبط را به نمایه شخصی اضافه کرد. این شیوه میتواند به افزایش دیداری و جذابیت پروفایل کمک کند و توجه سایر کاربران و بالقوه کارفرمایان را به خود جلب نماید. این مقاله به طور خاص نشان میدهد که چگونه این فرآیند میتواند به صورت گام به گام پیادهسازی شود و نمونههایی از این کاربرد را ارائه میدهد. این راهنمای کاربردی برای افرادی که به دنبال بهبود حضور آنلاین خود هستند، مفید خواهد بود.
🟣لینک مقاله:
https://tduyng.github.io/blog/dynamic-github-profile-readme/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Duy NG
How I made my GitHub profile README dynamic
Explore the process of making your GitHub profile README dynamic with automated updates of your latest blog posts using GitHub Actions and Python scripting
👍3🍾1
🔵 عنوان مقاله
µ micro: A Go-Powered Terminal-Based Text Editor
🟢 خلاصه مقاله:
"Micro" یک ویرایشگر متن است که با هدف جانشینی برای ویرایشگر "nano" طراحی و توسعه داده شده است. این پروژه که سالهاست در حال توسعه قرار دارد، به عنوان یک نمونه بالغ و خوب از پیادهسازی یک ویرایشگر متن با استفاده از زبان برنامهنویسی Go مطرح است. کد منبع میکرو در مخزن GitHub قابل دسترسی و مشاهده است، که نشاندهنده انتشار آزاد و قابلیت همکاری گستردهای بین توسعهدهندگان میباشد. این ویرایشگر متن با هدف فراهم آوردن تجربهای ساده و کارآمد در ویرایش متون برنامهنویسی و دیگر اسناد متنی راهاندازی شده است.
🟣لینک مقاله:
https://golangweekly.com/link/159257/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
µ 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
Telemetry in Go 1.23 and Beyond
🟢 خلاصه مقاله:
در ابتدای سال 2023، Russ Cox مفهوم 'تلمتری شفاف' را برای زبان برنامه نویسی Go معرفی کرد. در ابتدا، این ویژگی به طور پیشفرض فعال بود، اما به دلیل واکنشهای منفی برخی افراد، تبدیل به ویژگی اختیاری شد و در نسخه 1.23 Go گنجانده شد. در این مقاله، Robert توضیح میدهد که چگونه این نوع تلمتری میتواند مفید باشد، اگر شما تصمیم به فعال کردن آن داشته باشید. تواناییهای تلمتری شفاف شامل جمعآوری دادهها و اطلاعات به صورت زمانواقعی درباره عملکرد و استفاده از نرم افزار است که میتواند کمک شایانی به بهبود و توسعهی بیشتر Go کند. اما با وجود فواید آن، مساله حفظ حریم خصوصی و اطمینان از امنیت دادهها همچنان موضوع مهمی است که باید مورد توجه قرار گیرد.
🟣لینک مقاله:
https://golangweekly.com/link/159550/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Telemetry in Go 1.23 and beyond - The Go Programming Language
Go 1.23 includes opt-in telemetry for the Go toolchain.
❤1