Gopher Academy
3.34K subscribers
918 photos
40 videos
279 files
1.99K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
کلیدی‌ترین تفاوت‌های بین context.WithTimeout و context.WithDeadline در نحوه‌ی مدیریت زمان‌بندی و خاتمه‌ی contextها در Go است:

### 1. مبنای زمان‌بندی
- **context.WithTimeout**:
یک بازه زمانی ثابت مشخص می‌کند. Context پس از گذشت مدت زمان مشخص از زمان فراخوانی این تابع، منقضی می‌شود.
- مثال: اگر context.WithTimeout(ctx, 5*time.Second) فراخوانی شود، context پس از ۵ ثانیه منقضی می‌شود.
- **context.WithDeadline**:
یک زمان مشخص در آینده تعیین می‌کند. Context دقیقا در لحظه‌ی مشخص شده در deadline منقضی می‌شود.
- مثال: اگر context.WithDeadline(ctx, time.Now().Add(5*time.Second)) فراخوانی شود، context در لحظه‌ی دقیق مشخص شده (۵ ثانیه بعد) منقضی می‌شود.
مورد استفادهستفاده**
- **WithTimeout**:
زمانی که مدت زمان اجرای یک عملیات برای شما مهم است و می‌خواهید پس از مدت مشخصی عملیات خاتمه یابد، از WithTimeout استفاده می‌شود.
- **WithDeadline**:
زمانی که به یک deadline دقیق نیاز دارید (مانند زمانی که می‌خواهید قبل از یک لحظه‌ی دقیق، عملیاتی خاتمه یابد)، از WithDeadline استفاده پیاده‌سازی داخWithTimeout **WithTimeout** به عنوان یک shortcut برای WithDeadline عمل می‌کند و در واقع از WithDeadline استفاده می‌کند تا زمانی که مدت مشخص شده به پایان برسد. به این معنا که WithTimeout(ctx, d) معادل WithDeadline(ctx, time.Now().Add(d)) است.

### 4. **انعطاف‌پذیری بیشتر WithDeadline**
- در مواردی که زمان دقیق (مربوط به یک deadline خاص) برای شما مهم است، WithDeadline انعطاف بیشتری فراهم می‌کند، زیرا می‌توانید زمان مشخصی را به عنوان نقطکاربردهای رایج. **کاربردهای رایج**
- **context.WithTimeout** معمولاً برای تعیین یک بازه زمانی ثابت برای خاتمه دادن به عملیاتی مانند درcontext.WithDeadline**context.WithDeadline** اغلب در سیستم‌های توزیع شده یا عملیاتی که یک زمان‌بندی خاص برای اتمام دارند، کاربرد دارد.

### مثال‌ها:
// WithTimeout: منقضی شدن پس از 5 ثانیه
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

// WithDeadline: منقضی شدن در یک زمان دقیق
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(5*time.Second))
defer cancel()

در نهایت، انتخاب بین این دو تابع بستگی به نوع نیاز شما به زمان‌بندی و مدیریت زمان اجرای عملیات‌ها دارد.



👑 @gopher_academy
🎉21
Gopher Academy
کلیدی‌ترین تفاوت‌های بین context.WithTimeout و context.WithDeadline در نحوه‌ی مدیریت زمان‌بندی و خاتمه‌ی contextها در Go است: ### 1. مبنای زمان‌بندی - **context.WithTimeout**: یک بازه زمانی ثابت مشخص می‌کند. Context پس از گذشت مدت زمان مشخص از زمان فراخوانی…
برای درک بهتر از مکانیزم داخلی context.WithTimeout و context.WithDeadline، باید به نحوه‌ی پیاده‌سازی آن‌ها در کتابخانه‌ی context و چگونگی استفاده از تایمرها در Go توجه کنیم.


این دو تابع هر دو بر اساس context پایه‌ای ساخته می‌شوند، اما تفاوت اصلی آن‌ها در نحوه‌ی مدیریت زمان و استفاده از تایمرهای داخلی است.

### 1. ساختار Context
هر دو WithTimeout و WithDeadline با ایجاد یک derived context (مشتق‌شده از context اصلی) کار می‌کنند. این context جدید مشابه context اصلی است، اما به جای آن که تا انتهای عمر برنامه معتبر باشد، در یک زمان مشخص منقضی می‌شود. مکانیزم داخلی به این صورت است:

- **WithTimeout**:
این تابع مدت زمانی به عنوان ورودی می‌گیرد و به کمک آن یک تایمر تنظیم می‌کند. تایمر از زمان فعلی (time.Now()) شروع به شمارش می‌کند و بعد از اتمام مدت زمان مشخص شده، context منقضی می‌شود.
- تایمر در واقع یک goroutine راه‌اندازی می‌کند که بعد از گذشت زمان، یک سیگنال خاتمه (Done) ارسال می‌کند.

- **WithDeadline**:
مشابه WithTimeout است، اما به جای این که مدت زمان از حالا محاسبه شود، زمانی ثابت برای خاتمه داده می‌شود. Goroutine مشابهی برای زمان دقیق پایان شروع می‌شود. این تابع می‌تواند مفید باشد در مواقعی که باید عملیات حتماً قبل از یک زمان خاص خاتمه یابد.
مکانیزم استفاده از تایمرهاایمرها**
در هر دو روش، تایمرها با استفاده از time.AfterFunc یا time.NewTimer در Go پیاده‌سازی می‌شوند. تایمر به‌گونه‌ای عمل می‌کند که وقتی زمان مشخص شده به پایان برسد، کانال Done فعال شده و پیام خاتمه ارسال می‌شود. در این زمان، عملیات مرتبط باید متوقف شود و با بررسی کانال Done از ادامه‌ی کار بازماند.
نحوه‌ی لغو Contextontext**
هر دو تابع به همراه یک تابع cancel بازگردانده می‌شوند. این تابع cancel به شما اجازه می‌دهد به صورت دستی context را قبل از پایان زمان آن لغو کنید. وقتی cancel فراخوانی شود، تایمر مربوط به context متوقف شده و کانال Done نیز بسته می‌شود. این مکانیزم به شما کمک می‌کند تا منابع استفاده‌شده توسط تایمرها را پاک‌سازی کنید و از اجرای بی‌مورد جلوگیری نمایید.
نحوه‌ی بررسی انقضای Contextontext**
هنگامی که عملیات در جریان است، شما می‌توانید با استفاده از ctx.Done() بررسی کنید که آیا context منقضی شده یا خیر. این تابع یک کانال بازمی‌گرداند که در صورت انقضای context، بسته می‌شود و به goroutine‌ها سیگنال می‌دهد که عملیات فعلی را خاتمه دهند. این سیگنال‌دهی از طریق select یا بررسی مستقیم کانال انجام می‌شود.

### 5. **پیاده‌سازی داخلی WithTimeout به کمک WithDeadline**
در کد داخلی کتابخانه context، پیاده‌سازی WithTimeout به صورت مستقیم از WithDeadline استفاده می‌کند:

func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
return WithDeadline(parent, time.Now().Add(timeout))
}

این تابع فقط زمان حال (time.Now()) را به timeout اضافه کرده و آن را به WithDeadline ارسال می‌کند. به همین دلیل، WithTimeout در واقع یک shortcut برای WithDeadline است.

### 6. **زمان‌بندی دقیق‌تر با WithDeadline**
در WithDeadline شما می‌توانید یک زمان دقیق برای انقضا مشخص کنید. مثلاً می‌توانید تعیین کنید که context در ساعت مشخصی منقضی شود، بدون توجه به این که در حال حاضر چقدر زمان باقی‌مانده است. این ویژگی برای مواردی مفید است که نیاز دارید چندین عملیات به طور همزمان و هماهنگ با یک deadline خاص به پایان برسند.

### نتیجه‌گیری:
- WithTimeout برای محدود کردن مدت زمان یک عملیات مفید است.
- WithDeadline برای تعیین یک زمان دقیق (مانند یک deadline واقعی) استفاده می‌شود.
- هر دو تابع مکانیزم‌های مشابهی از تایمرهای Go استفاده می‌کنند و هر دو به کمک goroutine‌ها برای ارسال سیگنال خاتمه عمل می‌کنند.


👑 @gopher_academy
👍21🎉1
Forwarded from Bardia & Erfan
تأثیر دانش زبان انگلیسی در دنیای برنامه‌نویسی از نگاه موسسه زبان آفاق

https://www.zoomit.ir/pr/428701-afagh-lc/


👑 @labdon_academy
🎉1🍓1👻1
🔵 عنوان مقاله
Product for Engineers: A Newsletter Helping Flex Your Product Muscle

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Go Gets High-Resolution Timers on Windows

🟢 خلاصه مقاله:
در این مقاله به بررسی پشتیبانی افزوده شده برای تایمرهای با وضوح بالا در نسخه 1.23 زبان برنامه‌نویسی Go بر روی سیستم‌عامل ویندوز پرداخته شده است. در نسخه‌های پیشین، وضوح تایمرها در حدود 15.6 میلی‌ثانیه بود، اما با به‌روزرسانی‌های جدید، این وضوح به تقریباً 0.5 میلی‌ثانیه افزایش یافته است. این بهبود قابل توجه، امکان دقت بیشتری را در زمان‌بندی عملیات و به خصوص در برنامه‌هایی که نیازمند پردازش زمانی دقیق هستند، فراهم می‌کند. این تغییر می‌تواند تاثیرات مهمی در بهبود عملکرد کلی برنامه‌های نوشته شده به زبان Go داشته باشد، به ویژه در محیط‌هایی که پاسخگویی سریع الزامی است.

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


👑 @gopher_academy
👍1🔥1
✍️Farshad AkbariFarshad Akbari



💡 آشنایی با کتابخانه sync در Go و کاربردهای آن برای مدیریت همزمانی

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

1️⃣ Mutex (قفل متقابل)

Mutex برای جلوگیری از دسترسی همزمان گوروتین‌ها به یک منبع مشترک استفاده می‌شود. مثلا اگر چند گوروتین بخواهند به طور همزمان یک متغیر را تغییر دهند، با استفاده از Mutex می‌توانیم قفل دسترسی به این منبع را به یک گوروتین محدود کنیم.

2️⃣ WaitGroup (انتظار برای پایان گوروتین‌ها)

وقتی چند گوروتین همزمان اجرا می‌شوند و می‌خواهیم تا پایان کار همه‌ی آن‌ها صبر کنیم، WaitGroup کاربرد دارد. این ابزار به ما اجازه می‌دهد که منتظر بمانیم تا همه گوروتین‌ها کارشان را تمام کنند.

3️⃣ Once (اجرا فقط یک‌بار)

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


🔍 جمع‌بندی

کتابخانه sync به توسعه‌دهندگان Go کمک می‌کند تا همزمانی را به خوبی مدیریت کنند و از بروز مشکلاتی مثل شرایط رقابتی جلوگیری کنند. استفاده درست از این ابزارها باعث افزایش کارایی و ایمنی برنامه‌های چندوظیفه‌ای می‌شود.

👑 @gopher_academy
5👍1
🔵 عنوان مقاله
Writing a Circuit Breaker in Go

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

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


👑 @gopher_academy
🔵 عنوان مقاله
Sidekick: Bare Metal to Production Ready in Minutes

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شده به معرفی ابزار جدیدی به نام "Sidekick" می‌پردازد که با الهام از "Kamal" ساخته شده و به زبان برنامه‌نویسی Go نوشته شده است. هدف اصلی Sidekick این است که فرآیند استقرار نرم‌افزارها را بر روی سرورهای خصوصی به صورتی ساده و با استفاده از تنها یک دستور، مشابه به سرویس Fly.io، فراهم آورد. نویسنده مقاله هنوز فرصتی برای امتحان این ابزار نداشته‌ است اما علاقه‌مند است که به زودی آن را بیازماید. از انجا که Sidekick بر اساس تجربیات و مفاهیم مشابه به Kamal طراحی شده، این ابزار می‌تواند راه‌حلی نوین و قدرتمند برای توسعه‌دهندگان و متخصصان IT در بهبود و تسهیل روند استقرار و مدیریت برنامه‌ها بر روی وی‌پی‌اس‌ها باشد.

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


👑 @gopher_academy
🔥1
🔵 عنوان مقاله
Kamal 2: Thou Need Not PaaS

🟢 خلاصه مقاله:
مقاله به بررسی ابزار استقرار بر اساس کانتینر به نام Kamal از شرکت 37Signals می‌پردازد، شرکتی که بیشتر به خاطر توسعه Ruby on Rails شناخته شده است. اگرچه Kamal زبان‌ناپذیر است و از زبان‌های برنامه‌نویسی مختلف پشتیبانی می‌کند. این مقاله به توضیح و نمایش استقرار یک برنامه ساده به زبان Go با استفاده از یک دموی اسکرین‌کست می‌پردازد و سپس به مثالی با زبان Ruby می‌رسد. Kamal به عنوان یک گزینه جدید و قابل اعتماد برای استقرار برنامه‌های Go در سرورهای مدیریت‌ شده توسط خود معرفی شده است که می‌تواند راه برای استفاده گسترده‌تر از آن را هموار سازد. ابزار مذکور می‌تواند تحولی در استقرار سریع و آسان نرم‌افزارها بر روی پلتفرم‌های مختلف به ارمغان بیاورد.

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
go-pretty: Pretty Print Tables, Lists and Text on the Terminal

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Giu 0.9: A Dear ImGui-Based Cross Platform GUI Framework

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته است به توضیح و بررسی نحوه ساخت برنامه‌های کاربردی گرافیکی (GUI) با استفاده از زبان برنامه‌نویسی Go بر بستر کتابخانه Dear ImGui پرداخته است. نسخه 0.9 این فریمورک به عنوان نسخه‌ای که تغییرات عمده‌ای ندارد شناخته شده، اما قابلیت‌های فریمورک را تکمیل کرده و مستندات بیشتری به آن افزوده شده است. این افزایش مستندات به توسعه‌دهندگان کمک می‌کند تا با استفاده از این ابزار بهترین بهره‌برداری را داشته باشند و بتوانند برنامه‌های کاربردی GUI قدرتمند و کارآمدی را توسعه دهند.

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


👑 @gopher_academy
وضعیت این روزها.....

👑 @gopher_academy
👍4😈2💋1💘1
🔵 عنوان مقاله
Watermill: Library for Building Event-Driven Apps

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

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
  Russ Cox on Passing the Torch

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

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


👑 @gopher_academy
🙏2😈2
در زبان برنامه‌نویسی Go، خطای nilness: nil dereference in field selection به این معنی است که شما سعی کرده‌اید به فیلدی از یک متغیر اشاره‌گری دسترسی پیدا کنید که مقدار آن nil است. این خطا معمولاً زمانی رخ می‌دهد که به یک فیلد یا متد از یک اشاره‌گر nil دسترسی پیدا کنید، و Go به طور ایستا (در زمان کامپایل) شناسایی کرده است که ممکن است این دسترسی منجر به panic شود.

برای رفع این خطا، باید مطمئن شوید که قبل از دسترسی به فیلدها یا متدهای اشاره‌گر، بررسی کنید که مقدار اشاره‌گر nil نباشد.


👑 @gopher_academy
🔥3
🔵 عنوان مقاله
Greenmask: Postgres Data Masking and Obfuscation Tool

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

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


👑 @gopher_academy
👍4
🔵 عنوان مقاله
'When I Told 4,091 Writers They Weren’t Getting Paid..'

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

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
Gomponents 1.0: HTML View Components in Pure Go

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

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


👑 @gopher_academy
🔥1🎉1
🔵 عنوان مقاله
Go Blueprint: Create New Go Projects with a Defined Structure

🟢 خلاصه مقاله:
این مقاله به معرفی ابزار جدیدی برای پیاده‌سازی پروژه‌های جدید در زبان برنامه‌نویسی Go می‌پردازد، که به کاربران امکان می‌دهد به سرعت یک برنامه با ساختار پرونده‌ای پیش‌تعریف‌شده و تولید کد خودکار راه‌اندازی کنند. این ابزار به کاربران اجازه می‌دهد تا اپلیکیشن‌هایی بر پایه چارچوب‌های معروفی مانند Chi، Gin و Fiber و دیگر فریم‌ورک‌ها بسازند. همچنین، پشتیبانی از پایگاه‌های داده و ابزارهای اختیاری مانند HTMX و Tailwind CSS را فراهم می‌کند. اطلاعات بیشتر و منابع مرتبط در مخزن GitHub قرار دارند. این ابزار یکی از ابزارهای رو به افزایشی است که توسعه‌دهندگان را قادر می‌سازد تا بدون صرف زمان زیاد برای پیکربندی‌های اولیه، سریعاً پروژه‌های Go خود را آغاز کنند.

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


👑 @gopher_academy
👍3
🔵 عنوان مقاله
Automate Complex Workflows Across Clouds & Data Platforms

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

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


👑 @gopher_academy
🔥1
🔸بهینه سازی با {}struct در زبان Go🔸

کاهش سربار استفاده از حافظه در سناریو های خاص با استفاده از {}struct در زبان Go

لینک مقاله 👉

https://devdrug.com/article/optimization-with-empty-struct-in-go-language


👑 @gopher_academy
🔥4