Gopher Academy
3.38K subscribers
923 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
🔵 عنوان مقاله
How Render Enforces Access Controls with Go Generics

🟢 خلاصه مقاله:

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

🟣لینک مقاله:
https://render.com/blog/how-render-enforces-access-controls-with-go-generics


👑 @gopher_academy
🔵 عنوان مقاله
elem-go: A Type-Safe Way to Create and Manipulate HTML Elements

🟢 خلاصه مقاله:
مقاله‌ی مورد بررسی به معرفی ورژن 0.25.0 یک کتابخانه برنامه‌نویسی به نام Go اشاره دارد که امکان ساخت المان‌های HTML از طریق کد Go را به صورت ایمن نوع‌بندی شده فراهم می‌کند. این ویژگی به توسعه دهندگان کمک می‌کند تا با المان‌ها، خصوصیات و ویژگی‌ها در زبان برنامه‌نویسی Go بدون نیاز به کد نویسی مستقیم HTML به طور مؤثری کار کنند. همچنین، این ورژن جدید قابلیتی با نام StyleManager اضافه کرده است که امکان مدیریت استایل‌های CSS به شکل برنامه‌ای را می‌دهد. برای درک بهتر، مقاله به نمونه‌کدهایی اشاره دارد که نحوه‌ی استفاده از این ویژگی‌های جدید را نشان می‌دهند. این ویژگی‌ها امکان پذیر ساختن توسعه‌ی وب‌سایت‌ها را به شیوه‌ای کارآمد و سریع‌تر فراهم می‌کند.

🟣لینک مقاله:
https://github.com/chasefleming/elem-go


👑 @gopher_academy
👍31🍾1
🔵 عنوان مقاله
makefile-graph: Turn a Makefile into a Graph

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

🟣لینک مقاله:
https://github.com/dnaeon/makefile-graph


👑 @gopher_academy
👍4🔥2🍾1
🔵 عنوان مقاله
Go Event-Driven: Your Unfair Advantage to Tame Chaos

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

🟣لینک مقاله:
https://threedots.tech/event-driven/?utm_source=golang-weekly


👑 @gopher_academy
👍5
22 شهریور روز جهانی برنامه نویسه
مبارک همه ی برنامه نویس های گذشته، حال و آینده


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

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

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


👑 @gopher_academy
👍4
🔵 عنوان مقاله
Ergo 3.0: An Actor-Based Framework for Go

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

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


👑 @gopher_academy
👍5
چجوری کامیت های تمیز و مفهومی بنویسم؟!
کامیت به عنوان اجزای سازنده, کار یک برنامه نویس عمل می کنند.  آنها اگر که به درستی نوشته شوند، ارزش قابل توجهی دارند.  یک پیام commit به خوبی نوشته شده ضروری است زیرا آنها زمینه را فراهم می کنند، در غیر این صورت یک پیام commit در وهله اول مورد نیاز نخواهد بود.

آقای پیتر هاترر میگه:
یک کامیت خوب نشان می دهد که آیا یک توسعه دهنده یک همکار خوب است .

خب، کامیت های شما باید تمیز و قابل درک باشه:
به عنوان مثال اگر میخواید در UI تغییراتی اعمال کنید، کامیت رو به صورت زیر بنویسید:

git commit -m "Enhance UI: Header and sidebar Improvements"

یا
git commit -m " fix: prevent racing of requests"

مورد بعدی سابجکت لاین نباید از ۵۰ کاراکتر بیشتر باشد.
فقط کلمه اول رو capital بنویسید.
نیازی به قرار دادن نقطه در اخر پیام نیست.
پیام کامیت رو به صورت امری بنویسد نه به صورت گذشته.
توضیح دهید چرا و چی، نه چطور.


DevTwitter | <Mohammad Abdorrahmani/>

👑 @gopher_academy
👍7
🔵 عنوان مقاله
A Small Mandelbrot Set Renderer in Go

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

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


👑 @gopher_academy
👍4
🔵 عنوان مقاله
go-astiav: ffmpeg and libav Bindings for Go

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

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


👑 @gopher_academy
کامپایلر Go (گولنگ) با استفاده از زبان Go توسعه داده شده است. در واقع، نسخه‌های ابتدایی کامپایلر Go ابتدا به زبان C نوشته شده بود، اما پس از آن نسخه‌های بعدی کامپایلر به زبان Go بازنویسی شدند تا پروژه به‌طور کامل خود-میزبان (self-hosted) باشد.

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
👍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
👍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