Gopher Academy
3.33K subscribers
917 photos
40 videos
279 files
1.97K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
اDWARF یک فرمت استاندارد برای ذخیره‌سازی اطلاعات اشکال‌زدایی (debugging information) است که توسط کامپایلرها تولید می‌شود. این اطلاعات به دیباگرها کمک می‌کند تا بتوانند کد ماشین را به کد منبعی که توسعه‌دهنده نوشته است، مرتبط کنند. DWARF شامل اطلاعاتی در مورد متغیرها، توابع، خطوط کد، و ساختارهای داده است که دیباگر می‌تواند از آنها برای دنبال کردن اجرای برنامه، تشخیص باگ‌ها، و نمایش دقیق متغیرها در طول اجرای برنامه استفاده کند.

چند مورد از اطلاعاتی که DWARF فراهم می‌کند:

1. نام متغیرها و توابع: DWARF حاوی اطلاعاتی در مورد متغیرها و توابعی است که در کد منبع تعریف شده‌اند. این اطلاعات به دیباگر کمک می‌کند تا هنگام بررسی وضعیت برنامه، نام متغیرها و توابع را نشان دهد.

2. آدرس‌دهی و محل متغیرها: DWARF به دیباگرها اجازه می‌دهد مکان دقیق متغیرها در حافظه (در رجیسترها یا پشته) را پیدا کنند.

3. اطلاعات نوع داده‌ها: DWARF اطلاعاتی در مورد نوع داده‌های متغیرها (مثل int، struct، array) را شامل می‌شود، که به دیباگرها اجازه می‌دهد تا مقادیر متغیرها را به درستی نمایش دهند.

4. ارتباط خطوط کد با کد ماشین: DWARF به دیباگر امکان می‌دهد که بین خطوط کد منبع (source code) و دستورات اجرایی (کد ماشین) ارتباط برقرار کند. به عنوان مثال، اگر خطایی در زمان اجرا رخ دهد، دیباگر می‌تواند خط دقیق در کد منبع را نمایش دهد.

چرا DWARF مهم است؟
DWARF برای فرایند اشکال‌زدایی بسیار حیاتی است زیرا بدون آن، دیباگرها نمی‌توانند اطلاعات دقیق و مفیدی را درباره عملکرد داخلی برنامه نشان دهند. به ویژه در سیستم‌های پیچیده یا برنامه‌هایی با چندین ماژول، DWARF کمک می‌کند که برنامه‌نویس بتواند مشکلات را بهتر شناسایی و رفع کند.

حذف اطلاعات DWARF:
هنگامی که برنامه را برای استفاده نهایی (production) کامپایل می‌کنید، معمولاً اطلاعات DWARF را حذف می‌کنند (با فلگ -w) زیرا این اطلاعات تنها برای اشکال‌زدایی مفید است و در نسخه نهایی نیازی به آن نیست. حذف این اطلاعات باعث کاهش حجم فایل اجرایی و جلوگیری از افشای ساختار داخلی برنامه می‌شود.

👑 @gopher_academy
1👍21🎉1
🔵 عنوان مقاله
Script 0.23: Make It Easier to Write Shell-like Scripts in Go

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

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


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

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

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


👑 @gopher_academy
👍2🎉1
جدول سمبل‌ها (Symbol Table) یک ساختار داده‌ای است که کامپایلرها و لینک‌کننده‌ها از آن استفاده می‌کنند تا اطلاعات مربوط به سمبل‌های موجود در برنامه را نگهداری کنند. سمبل‌ها می‌توانند شامل نام متغیرها، توابع، انواع داده‌ها، و اطلاعاتی درباره مکان و استفاده از این موارد در حافظه باشند.

کاربردهای جدول سمبل‌ها:

1. اشکال‌زدایی (Debugging): جدول سمبل‌ها به دیباگرها کمک می‌کند تا بتوانند کد سطح بالا را با کد ماشین مرتبط کنند. مثلاً وقتی در دیباگر متغیری را بررسی می‌کنید، از جدول سمبل‌ها برای یافتن آدرس آن متغیر استفاده می‌شود.

2. لینک‌دهی (Linking): در زمان لینک کردن بخش‌های مختلف یک برنامه، لینک‌کننده از جدول سمبل‌ها برای اتصال بخش‌های مختلف استفاده می‌کند. مثلاً اگر یک تابع در فایل A تعریف شده و در فایل B فراخوانی شده باشد، جدول سمبل‌ها کمک می‌کند لینک‌کننده آدرس درست آن تابع را پیدا کند.

3. بهینه‌سازی: جدول سمبل‌ها می‌تواند به کامپایلر در بهینه‌سازی کد کمک کند، چرا که اطلاعات مفیدی درباره استفاده و مکان متغیرها و توابع در اختیار دارد.

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

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

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

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


👑 @gopher_academy
👍31
🔵 عنوان مقاله
Maelstrom: A Fast, Contained Test Runner for Multiple Languages

🟢 خلاصه مقاله:
مجموعه‌ای از ابزارها که برای زبان‌های برنامه‌نویسی Go، Rust و Python پشتیبانی می‌کند، این ابزارها توانایی اجرای تست‌ها در میکرو-کانتینرهای ایزوله را دارند و ادعا می‌کند که به‌راحتی با تست‌های موجود شما کار می‌کنند. این تست‌ها می‌توانند هم بر روی ماشین محلی شما و هم در سراسر خوشه‌ای از سرورها اجرا شوند. اطلاعات بیشتر و دسترسی به کد این ابزارها از طریق مخزن GitHub قابل دسترس است. این امکان اطمینان می‌دهد که تست‌ها در محیط‌های کنترل‌شده و جدا شده به خوبی عمل کنند و به توسعه‌دهندگان این قدرت را می‌دهد که بتوانند بدون نگرانی از تداخل‌های محتمل، تست‌های خود را به‌طور مؤثری اجرا کنند.

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


👑 @gopher_academy
👍21🎉1
برای ایجاد یک نمونه ساده از چگونگی کار با Nginx و Golang، می‌توانید یک سرور وب ساده در Golang راه‌اندازی کنید و سپس Nginx را به عنوان یک پروکسی معکوس (reverse proxy) برای این سرور پیکربندی کنید.

### 1. ایجاد سرور وب ساده در Golang

ابتدا یک سرور وب ساده با استفاده از Golang ایجاد کنید. این سرور یک پیام خوشامدگویی را در پاسخ به درخواست‌های HTTP ارسال می‌کند.

// main.go
package main

import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, welcome to your subdomain!")
}

func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}

فایل بالا را به نام main.go ذخیره کنید و سپس با استفاده از دستور زیر سرور را اجرا کنید:

go run main.go

این سرور اکنون در حال اجرا بر روی پورت 8080 است و به هر درخواستی پاسخ می‌دهد.

### 2. پیکربندی Nginx به عنوان پروکسی معکوس

حال باید Nginx را به گونه‌ای پیکربندی کنید که به عنوان یک پروکسی معکوس عمل کند و درخواست‌ها را به سرور Golang ارسال کند.

ابتدا مطمئن شوید که Nginx نصب شده است. اگر نصب نشده، می‌توانید آن را با استفاده از دستورات زیر نصب کنید:

# On Ubuntu/Debian
sudo apt update
sudo apt install nginx

# On CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx

سپس فایل پیکربندی Nginx را ویرایش کنید. فایل پیکربندی معمولاً در مسیر /etc/nginx/nginx.conf یا /etc/nginx/sites-available/default قرار دارد. محتوای فایل پیکربندی می‌تواند به شکل زیر باشد:

server {
listen 80;
server_name yourdomain.com *.yourdomain.com;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

در این پیکربندی:
- listen 80;
باعث می‌شود Nginx به درخواست‌های HTTP روی پورت 80 گوش دهد.
- server_name yourdomain.com *.yourdomain.com;
باعث می‌شود Nginx به درخواست‌های دامنه اصلی و تمامی ساب‌دامین‌ها پاسخ دهد.
- proxy_pass http://127.0.0.1:8080;
درخواست‌ها را به سرور Golang که روی پورت 8080 اجرا می‌شود، هدایت می‌کند.
-
proxy_set_header
هدرهای HTTP مورد نیاز را تنظیم می‌کند.

### 3. راه‌اندازی و تست

بعد از ویرایش پیکربندی، Nginx را راه‌اندازی یا مجدداً راه‌اندازی کنید تا تنظیمات جدید اعمال شوند:

sudo systemctl restart nginx

اکنون Nginx به عنوان پروکسی معکوس عمل می‌کند و درخواست‌ها را به سرور Golang شما ارسال می‌کند. با ورود به دامنه yourdomain.com یا هر یک از ساب‌دامین‌های آن در مرورگر، باید پیام "Hello, welcome to your subdomain!" را مشاهده کنید.

### نتیجه‌گیری

با این پیکربندی، شما یک سرور Golang ساده دارید که توسط Nginx به عنوان پروکسی معکوس پشتیبانی می‌شود. Nginx درخواست‌ها را به سرور Golang ارسال می‌کند و پاسخ‌ها را به کاربر بازمی‌گرداند. این تنظیمات به شما اجازه می‌دهد تا ساب‌دامین‌های داینامیک را به راحتی مدیریت کنید و سرور Golang خود را به طور موثرتری به کاربران ارائه دهید.

👑 @gopher_academy
👍81
🔵 عنوان مقاله
PG Back Web 0.3: A Postgres Backup System with Web Interface

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

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


👑 @gopher_academy
👍1🙏1💯1
🔵 عنوان مقاله
What's in an (Alias) Name?

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

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


👑 @gopher_academy
👍2
در این کانال مطالب متنوعی در زمینه های مختلف علوم کامپیوتر و تکنولوژی آموزش داده میشود که شامل:

🔰هوش مصنوعی
👨‍💻 آموزش برنامه نویسی
🌐امنیت وشبکه
🖥طراحی صفحات وب
💡ترفند های جالب

https://t.me/Digitallearning5
🔵 عنوان مقاله
Streamline Your Product Delivery with monday dev

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

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


👑 @gopher_academy
1
Forwarded from DevOps Labdon
در Kubernetes، کلاستر (Cluster) و نیم‌اسپیس (Namespace) دو مفهوم اصلی هستند که هر کدام نقش متفاوتی در مدیریت و سازماندهی منابع دارند:

### 1. کلاستر (Cluster):
کلاستر در Kubernetes به مجموعه‌ای از نودها (nodes) گفته می‌شود که با هم کار می‌کنند تا منابع محاسباتی را فراهم کنند و اپلیکیشن‌ها را اجرا کنند. هر کلاستر Kubernetes شامل یک یا چند نود است که می‌تواند شامل نودهای اصلی (master node) و نودهای کارگر (worker node) باشد.

در کلاستر:
- نودهای کارگر پادها و سرویس‌های اپلیکیشن‌ها را اجرا می‌کنند.
- نود اصلی وظیفه مدیریت و هماهنگی منابع، مدیریت وضعیت پادها و سرویس‌ها، و فراهم کردن API Kubernetes را برعهده دارد.

کلاستر معمولاً به عنوان یک محیط جداگانه استفاده می‌شود و شامل تمام منابع محاسباتی و شبکه‌ای مورد نیاز برای اجرای برنامه‌های کانتینری است.

### 2. نیم‌اسپیس (Namespace):
نیم‌اسپیس‌ها به عنوان یک مکانیزم برای تقسیم منطقی یک کلاستر عمل می‌کنند. نیم‌اسپیس‌ها به شما اجازه می‌دهند که منابع و اپلیکیشن‌های مختلف را در یک کلاستر مدیریت و جداسازی کنید.

ویژگی‌های کلیدی نیم‌اسپیس:
- جداسازی منابع: هر نیم‌اسپیس یک محدوده جداگانه برای منابع مثل پادها، سرویس‌ها، و سایر آبجکت‌ها فراهم می‌کند. این کمک می‌کند که از برخورد منابع در یک کلاستر جلوگیری شود.
- مدیریت دسترسی‌ها: نیم‌اسپیس‌ها به شما امکان می‌دهند که با استفاده از RBAC (Role-Based Access Control) دسترسی‌ها را برای تیم‌ها و کاربران مختلف تعریف کنید.
- مدیریت بهتر در محیط‌های اشتراکی: در یک کلاستر بزرگ که چند تیم مختلف ممکن است در حال استفاده از منابع باشند، نیم‌اسپیس‌ها کمک می‌کنند که هر تیم منابع خود را به‌صورت مستقل مدیریت کند.

### تفاوت‌های کلیدی:
- کلاستر: یک کلاستر مجموعه‌ای از نودها است که زیرساخت محاسباتی را فراهم می‌کند و محیطی را برای اجرای پادها در Kubernetes مهیا می‌سازد. هر کلاستر می‌تواند شامل چندین نیم‌اسپیس باشد.
- نیم‌اسپیس: نیم‌اسپیس یک واحد سازمانی داخلی در کلاستر است که به جداسازی منابع و مدیریت آنها کمک می‌کند. نیم‌اسپیس‌ها منابع یک کلاستر را تقسیم‌بندی می‌کنند، اما خود کلاستر را تقسیم نمی‌کنند.

### مثال:
فرض کنید یک سازمان از یک کلاستر برای اجرای چندین اپلیکیشن استفاده می‌کند. برای جداسازی تیم‌های مختلف یا اپلیکیشن‌های مختلف در همان کلاستر، می‌توان از **نیم‌اسپیس**ها استفاده کرد تا هر تیم بتواند منابع خود را جدا از دیگران مدیریت کند. این باعث می‌شود که مدیریت اپلیکیشن‌ها ساده‌تر و مؤثرتر باشد.


👑 @DevOps_Labdon
1🙏2👌1
🔵 عنوان مقاله
Sets in Go: Using Maps and Recommended Packages

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


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


👑 @gopher_academy
🔵 عنوان مقاله
Register Allocation in the Go Compiler

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

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


👑 @gopher_academy
Forwarded from Bardia & Erfan
✍️ Mahsa HafeziKhomamy

🕸 @labdon_academy
💘1
🔵 عنوان مقاله
Go's Singleflight Melts in Your Code, Not in Your DB

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

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


👑 @gopher_academy
👍3🔥2
🔵 عنوان مقاله
Stuck on What to Build? Guided Learning with Real Projects

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

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


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

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

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


👑 @gopher_academy
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
🍾101
🔵 عنوان مقاله
Developing a Go Bot That Embeds Ichiban Prolog

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

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


👑 @gopher_academy
🙏4