Gopher Academy
3.86K subscribers
935 photos
43 videos
280 files
2.27K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Advancing Go Garbage Collection with Green Tea

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

مایکل در توضیحات خود به معرفی رویکرد جدیدی می‌پردازد که به‌نام "چای سبز" (Green Tea) شناخته می‌شود. این تکنیک با هدف بهبود کارایی و کاهش وقفه‌های ناشی از جمع‌آوری زباله در نسخه جدید Go 1.26 طراحی شده است. این روش تلاش می‌کند فرآیند جمع‌آوری زباله را به شکلی مؤثرتر و کمتر متمرکز بر توقف برنامه انجام دهد، اما در عین حال عملکرد کلی را حفظ کند یا حتی بهبود بخشد. در نتیجه، توسعه‌دهندگان می‌توانند برنامه‌هایی سازگارتر، سریع‌تر و کارآمدتر بنویسند.

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

#آموزش_برنامه‌نویسی #زبان_برنامه‌نویسی_گو #جمع‌آوری_زباله #توسعه_نرم‌افزار

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


👑 @gopher_academy
🔵 عنوان مقاله
reporting secrets in unlisted GitHub Gist posts too

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

مقاله اخیر در خبرنامه Golang Weekly به این مسئله اشاره می‌کند که چرا باید با دقت بیشتری به یادداشت‌های Gist غیر قابل لیست کردن توجه کنیم. افراد ممکن است تصور کنند که این یادداشت‌ها تنها برای خودشان باقی می‌مانند، اما اگر تنظیمات اشتباه باشد یا لینک‌های مستقیم به آن‌ها در اختیار دیگران قرار گیرد، اطلاعات حساس، مثل کلیدهای API یا کدهای رمزگذاری، ممکن است فاش شود. بنابراین، کنترل و نظارت بر این نوع مطالب اهمیت ویژه‌ای دارد تا از افشای ناخواسته اسرار کسب‌وکار و امنیتی جلوگیری شود.

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

#امنیت_نرم‌افزار #GitHubGist #حریم_خصوصی #کدهای_مخفی

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


👑 @gopher_academy
🔵 عنوان مقاله
Why I Built My Own Static Site Generator in Go

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

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

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

#توسعه_وب #برنامه_نویسی_گوا #مولد_سایت #ابزارهای_مخنصی

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


👑 @gopher_academy
🔵 عنوان مقاله
Graceful Shutdown in Go

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

در مقاله اخیر خبرنامه Golang Weekly، نحوه پیاده‌سازی shutdown مؤثر و امن در برنامه‌های Go مورد بررسی قرار گرفته است. این فرآیند معمولاً با کنترل سیگنال‌های سیستم، مانند SIGINT یا SIGTERM، آغاز می‌شود. برنامه با دریافت این سیگنال، روند پایان‌کار را آغاز می‌کند و ابتدا کلیه درخواست‌های در حال پردازش را تمام می‌کند، سپس منابع را آزاد می‌سازد و در نهایت خارج می‌شود. این رویکرد به توسعه‌دهندگان کمک می‌کند تا برنامه‌هایی پایدارتر و قابل اطمینان‌تر بنویسند که بتوانند بدون مشکل در فرآیندهای 종료، کار خود را به پایان برسانند.

در این مقاله، ابزارها و روش‌های مختلفی برای پیاده‌سازی این مرحله نهایی در برنامه‌های Go معرفی شده است، از جمله استفاده از کانال‌ها، WaitGroups و context برای هماهنگ‌سازی پایان عملیات. رعایت این نکات کلیدی، خصوصاً در سرویس‌های وب و برنامه‌های سروری، می‌تواند به بهبود کارایی و کاهش خطاهای پس‌زمینه کمک کند. در نتیجه، هر برنامه‌نویس Go باید به اهمیت “Graceful Shutdown” واقف باشد و از بهترین روش‌ها برای پیاده‌سازی آن بهره گیرد.

#برنامه‌نویسی_گو #Shutdown_سلامت #کدنویسی_پایدار #نکات_مهم

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


👑 @gopher_academy
1👍1🍾1
Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
👾151
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Kagenti: Cloud-native AI

🟢 خلاصه مقاله:
کاینجنتی یک پلتفرم میان‌افزاری (میان‌پایه) مبتنی بر ابر است که برای استقرار و مدیریت عوامل هوشمند چندچارچوبی هوش مصنوعی طراحی شده است. این پلتفرم به صورت بومی در محیط ابری ساخته شده و امکان راه‌اندازی و سازماندهی این عوامل را بر روی سیستم‌های کلاود مبتنی بر کوبرنتیس فراهم می‌کند. کاینجنتی از رابط‌های برنامه‌نویسی استاندارد REST استفاده می‌کند و با پشتیبانی از شناسه‌های دینامیک Managed by SPIRE و پروتکل‌های A2A و MCP، امنیت و سازگاری بالا را فراهم می‌آورد.

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

#هوش_مصنوعی #کلاود #کوبنتیس #پلتفرم‌های_باز

🟣لینک مقاله:
https://ku.bz/PtCLJSqjZ


👑 @DevOps_Labdon
1
Forwarded from Software Engineer Labdon
پردازش ۴۰ میلیارد رکورد در روز — معماری یک سیستم مقیاس‌پذیر!
خیلی‌ها فکر می‌کنن پردازش ده‌ها میلیارد رکورد در روز فقط از پس غول‌های جهانی مثل Meta یا Netflix برمیاد — اما من یک معماری عملیاتی ساختم که روزانه بالغ بر ۴۰ میلیارد رکورد (معادل تقریبا ۵۰۰ هزار رکورد بر ثانیه) رو از Kafka مصرف و به‌صورت بهینه در ClickHouse ذخیره می‌کنه.

چالش اصلی
بار نامتعادل روی کلاستر توزیع‌شده شلوغ با ۲۰ نود و ۵۲ پارتیشن و عدم تفکیک داده
نیاز به پردازش کم‌تأخیر
حفظ Consistency در حجم عظیم داده

راه‌حل معماری
مصرف‌کننده‌های موازی با Unbounded Channel
پردازش کاملاً Stateless برای scale عمودی و افقی
دسته‌بندی و فشرده‌سازی در Batchهای ۱,۰۰۰,۰۰۰ رکوردی (قابل کانفیگ)
نوشتن مستقیم در ClickHouse با Insertهای ستون‌محور
و Commit offset تنها بعد از نوشتن موفق
جدا کردن مسیر ingest از persist برای افزایش throughput

<Amirhossein Maleki/>
در دنیای برنامه‌نویسی (مخصوصاً Go و سیستم‌های performance-critical)، اصطلاحات زیادی شبیه CPU-bound hot path داریم که برای تحلیل performance استفاده می‌شن.

اینجا براتون کامل‌ترین لیست اصطلاحات مهم رو گذاشتم – بسیار بدردتون می‌خوره 👇

🧠 1) CPU-bound

کدی که محدودیتش CPU هست، نه I/O.

🧠 2) I/O-bound

کدی که محدودیتش عملیات ورودی/خروجی هست:
شبکه
دیسک
دیتابیس
فایل‌سیستم
مثال:

resp, _ := http.Get(url) // IO-bound

🧠 3) Memory-bound

وقتی سرعت برنامه توسط سرعت دسترسی به حافظه محدود می‌شود:

اcache miss زیاد
اdata layout بد
اallocation زیاد
مثلاً:

bigArray := make([]int, 10_000_000)

🧠 4) Hot Path / Hot Loop

مسیر پرتکرار اجرای برنامه
بهینه‌سازی این بخش بیشترین اثر را دارد.

🧠 5) Cold Path

مسیر کم‌استفاده، چندان بحرانی نیست.

🧠 6) Critical Path

مسیر اصلی که کل latency سیستم به آن وابسته است.

🧠 7) Fast Path / Slow Path

پترن بسیار معروف در performance:

اFast path → مسیر سریع، معمولاً برای شرایط رایج

اSlow path → مسیر fallback برای شرایط غیرمعمول


مثال Go runtime:

if smallAllocation {
fastPath()
} else {
slowPath() // calls GC-heavy functions
}


🧠 8) Cold Cache / Hot Cache

وقتی داده در CPU cache باشد (hot) یا نباشد (cold).

🧠 9) Cache Miss / Cache Hit

اCache hit → داده در L1/L2 است → بسیار سریع

اCache miss → باید از RAM بخواند → خیلی کند

🧠 10) Branch Mis-Prediction

وقتی CPU حدس اشتباهی درباره if/else بزند → باعث لَگ و flush pipeline می‌شود.

🧠 11) Lock Contention

وقتی چند goroutine برای دسترسی به یک lock دعوا دارند.

🧠 12) False Sharing

وقتی چند goroutine روی فیلدهایی که روی یک cache line قرار گرفته‌اند می‌نویسند → باعث کاهش شدید performance می‌شود.

🧠 13) Data Locality

یعنی داده‌های مربوط به هم کنار هم در حافظه قرار گرفته باشند.

🧠 14) Zero-copy

یعنی انتقال داده بدون duplicate در حافظه — بسیار مهم در شبکه.

🧠 15) Throughput vs Latency

اLatency: زمان انجام یک عملیات

اThroughput: تعداد عملیات در واحد زمان


دو مفهوم کلیدی در performance.

🧠 16) Backpressure

وقتی مصرف‌کننده نمی‌تواند سرعت تولیدکننده را تحمل کند → سیستم فشار می‌دهد که سرعت کم شود.

🧠 17) Bottleneck

گلوگاه سرعت سیستم؛ جایی که سیستم را کند می‌کند.

🧠 18) Profiling


🧠 19) Micro-optimizations

بهینه‌سازی‌های کوچک مثل:

اinline کردن
حذف allocation
کم کردن branch اضافی

🧠 20) Dead Time / Idle Time

وقتی CPU یا goroutine منتظر I/O است → idle است.

🧠 21) Parallelism vs Concurrency

تفاوت بسیار مهم:

اconcurrency برنامه‌ات می‌تواند چند کار را مدیریت کند

اparallelism یعنی چند کار همزمان روی چند core اجرا می‌شود

🧠 22) Work Stealing

استراتژی scheduler مثل Go برای توزیع goroutineها بین CPU cores.

🧠 23) GC Pressure

وقتی کد باعث heap allocation زیاد شود → GC زیاد فعال می‌شود → performance می‌خورد زمین.

🧠 24) Hot Allocation

وقتی یک تخصیص حافظه در مسیر پرتکرار برنامه انجام می‌شود → شدیداً performance را نابود می‌کند.

🧠 25) Cold Start

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

👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
5🍾1
🎙️ عنوان پادکست:
🍪 No more all-you-can-eat Cookies
خلاصه پادکست:
Security releases🍪 Go 1.25.2 and 1.24.8 with 10 security fixes🌐 golang.org/x/net v0.45.0 with 2 security fixesMeetups @ Conferences🇺🇸 San Fransisco, CA, USA — Oct 23 @ Forge🇮🇱 Tel Aviv, Israel — Dec 10 @ Cato Networks🇺🇸 GoWest @ Lehi, Utah USA — Oct 24🧦 New swag in the Cup o' Go store!Proposals👷🏿‍♀️ Accepted: go fix to apply fixes from modernizers and gofix analyzersOn hold: Add experimental HTTP/3 support👖 gofumpt: Should clothing naked returns b...
🏆1
🔵 عنوان مقاله
Modernizing Reddit's Backend Infrastructure (with Go)

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

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

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

#توسعه_وب #مدرن‌سازی_زیرساخت #گودرتیکرد #پایگاه‌داده

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


👑 @gopher_academy
🍾2
متد `time.NewTicker` برای اجرای عملیاتی تکراری در فواصل زمانی مشخص به کار می‌رود.

📌 تعریف:

ticker := time.NewTicker(duration)


duration → فاصله زمانی بین اجرای هر بار (مثلاً: 1*time.Second)
* اticker.C → یک کانال (channel) است که هر بار بعد از گذشت مدت زمان مشخص، یک مقدار time.Time در آن ارسال می‌شود.

🧠 کاربرد اصلی:

اجرای یک عملیات به صورت پریودیک (دوره‌ای)
مثلاً برای:

چک کردن وضعیت سرویس‌ها
خواندن داده از صف یا کانال
اجرای یک تسک background در فواصل زمانی مشخص


مثال ساده:

package main

import (
"fmt"
"time"
)

func main() {
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()

for i := 0; i < 5; i++ {
t := <-ticker.C
fmt.Println("Tick at", t)
}
}


⏱️ خروجی:

Tick at 2025-12-06 10:57:34.182664644 +0330 +0330 m=+2.000047534
Tick at 2025-12-06 10:57:36.182664842 +0330 +0330 m=+4.000047715
Tick at 2025-12-06 10:57:38.182665098 +0330 +0330 m=+6.000047982
Tick at 2025-12-06 10:57:40.182664344 +0330 +0330 m=+8.000047217
Tick at 2025-12-06 10:57:42.182664808 +0330 +0330 m=+10.000047690


⚠️ نکات مهم:

* حتماً بعد از پایان استفاده ticker.Stop() فراخوانی بشه تا نشتی منابع (goroutine leak) نداشته باشیم.
NewTicker در کنار select هم بسیار کاربرد داره.
🏆2🐳1
🔵 عنوان مقاله
Avoiding Splintered Failure Modes in Go

🟢 خلاصه مقاله:
در برنامه‌نویسی با زبان گو، یکی از چالش‌های مهم جلوگیری از بروز خطاهای جدی در ساختارهای نرم‌افزاری است. یکی از مشکلات رایج در توسعه برنامه‌ها، شکست‌های شکسته یا جدا شده (Splintered Failure Modes) هستند که ممکن است منجر به شکست‌های سخت و دشوار در عیب‌یابی شوند. بنابراین، پیشگیری از این نوع شکست‌ها اهمیت زیادی دارد تا برنامه‌های پایدار و قابل اعتماد ساخته شوند.

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

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

#برنامه‌نویسی #گو #پایداری_نرم‌افزار #توسعه_مقاوم

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


👑 @gopher_academy
1👍1
📌 ارور copylocks

🧩 ارور رایج Go:

assignment copies lock value to ... (copylocks)


اگه توی ساختار‌هات از sync.Mutex یا sync.RWMutex استفاده می‌کنی و ناگهان این خطا رو دیدی، یعنی داری یک struct که داخلش lock داره رو *کپی* می‌کنی — و این توی Go ممنوعه! 🚫

🔍 مشکل از کجاست؟

فرض کن تعریف پروژه به این شکله:

type Project struct {
ID string
mu sync.RWMutex
}


و تو این کار رو انجام می‌دی:

project = *projectFromCache


اینجا Go میگه:

> داری یک Mutex رو کپی می‌کنی!
>و Mutex نباید کپی بشه، چون ممکنه لاک شده باشه و نسخهٔ کپی‌شده وضعیت اشتباه داشته باشه.

این باعث deadlock میشه.

بهترین راه‌حل

به‌جای کپی‌کردن struct، فقط اشاره‌گر رو منتقل کن:

project = projectFromCache


🔹 با این کار Mutex کپی نمی‌شه
🔹 فقط آدرس struct منتقل میشه
🔹 رفتار کاملاً امن و درست می‌مونه

🎯 نکته طلایی

هر وقت struct شامل Mutex بود:

کپی struct ممنوع
✔️ استفاده از pointer توصیه‌شده
👍2🍾1
Forwarded from AI Labdon
🔥 گوگل ، مسیر شغلی آیندت رو مشخص میکنه | معرفی ابزار career Dreamer

▪️گوگل یه ابزار جدید داده بیرون به اسم Career Dreamer (فعلاً فقط با IP آمریکا) ، این سرویس با کمک هوش مصنوعی، علایق و مهارت‌هاتو آنالیز میکنه و دقیقاً میگه کدوم مسیر شغلی بهت میخوره.

1⃣ تحلیل شخصی هوشمند
• اطلاعات تجربیات و توانایی‌هاتو می‌گیره و مسیرهای شغلی مناسب پیشنهاد می‌کنه.

2⃣ آموزش رایگان
• به دوره‌های رایگان Grow with Google وصل میشه تا مهارت‌های لازم همون شغل رو یاد بگیری.

3⃣ ساخت رزومه با Gemini
• به Gemini وصل میشه و خودش برات رزومه، کاور لتر و متن‌های حرفه‌ای استخدامی می‌سازه.

🔗 لینک دسترسی : career Dreamer
(فعلاً فقط با IP آمریکا کار میکنه)

👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
🔵 عنوان مقاله
The Type-Safe Error Checking Proposal

🟢 خلاصه مقاله:
پیشنهاد بررسی خطاهای نوع‌ساز در زبان برنامه‌نویسی گو

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

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

#برنامه_نویسی #گو #خطا #نسخه_جدید

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


👑 @gopher_academy
👍1