🔵 عنوان مقاله
Durable Background Execution with Go and SQLite
🟢 خلاصه مقاله:
این مقاله نشان میدهد چگونه میتوان با ترکیب Go و SQLite یک سیستم اجرای پسزمینهای ساخت که در برابر کرش و راهاندازی مجدد مقاوم است، بدون نیاز به سرویسهای خارجی. الگوی اصلی شامل صف کاری مبتنی بر SQLite با ستونهایی برای وضعیت، شمارش تلاشها و زمان اجاره (lease) است؛ کارگرها کار را در تراکنش میگیرند، با زمان اجاره کوتاه اجرا میکنند، و نتیجه را ثبت میکنند تا در صورت کرش، کار دوباره قابل بازیابی باشد. با فعالسازی WAL، شاخصگذاری درست، backoff نمایی و الزام به idempotency، معمولاً به تضمین at-least-once میرسیم. کنترل همزمانی با worker pool، خاموشسازی تمیز با سیگنالها و context، و رصد شاخصهایی مانند نرخ خطا و زمان پردازش از ملزومات عملیاتی است. برای آزمودن این رفتارها، استفاده از Subtest Grouping in Go (با ایدههایی از Dima Kotik و Redowan Delowar) کمک میکند سناریوها بهصورت گروهی، خوانا و قابل موازیسازی بررسی شوند.
#Go #SQLite #BackgroundJobs #Durability #GoTesting #Subtests #Concurrency #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175982/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Durable Background Execution with Go and SQLite
🟢 خلاصه مقاله:
این مقاله نشان میدهد چگونه میتوان با ترکیب Go و SQLite یک سیستم اجرای پسزمینهای ساخت که در برابر کرش و راهاندازی مجدد مقاوم است، بدون نیاز به سرویسهای خارجی. الگوی اصلی شامل صف کاری مبتنی بر SQLite با ستونهایی برای وضعیت، شمارش تلاشها و زمان اجاره (lease) است؛ کارگرها کار را در تراکنش میگیرند، با زمان اجاره کوتاه اجرا میکنند، و نتیجه را ثبت میکنند تا در صورت کرش، کار دوباره قابل بازیابی باشد. با فعالسازی WAL، شاخصگذاری درست، backoff نمایی و الزام به idempotency، معمولاً به تضمین at-least-once میرسیم. کنترل همزمانی با worker pool، خاموشسازی تمیز با سیگنالها و context، و رصد شاخصهایی مانند نرخ خطا و زمان پردازش از ملزومات عملیاتی است. برای آزمودن این رفتارها، استفاده از Subtest Grouping in Go (با ایدههایی از Dima Kotik و Redowan Delowar) کمک میکند سناریوها بهصورت گروهی، خوانا و قابل موازیسازی بررسی شوند.
#Go #SQLite #BackgroundJobs #Durability #GoTesting #Subtests #Concurrency #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175982/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
threedots.tech
Durable Background Execution with Go and SQLite
A DNS outage is like a flash flood. It hits you and disappears as if it were never there. “It was probably the DNS” became a meme. But, half the time, we do not know the exact cause. The outage is seldom long enough to diagnose, sequester, replicate, simulate…
👍1
🔵 عنوان مقاله
The Concurrency Conundrum: A Story of Curiosity and Code
🟢 خلاصه مقاله:
**این مقاله داستان برخورد با یک مشکل رایج در همزمانی است: سرویس ظاهراً سالمی که زیر بار گاهی قفل میکرد و درخواستها معطل میماندند. با افزودن لاگهای ساختیافته، ابزارهای رهگیری و یک تست حداقلیِ قابلبازتولید، ریشه مشخص شد: ترتیبگیری نادرست قفلها و بخشهای بحرانی طولانی که به بنبست و گاهی رقابت در دسترسی به متغیرها منجر میشد. راهحل با تعریف نظم ثابت در ترتیب اخذ قفلها، جایگزینی قفل سراسری با قفلهای ریزدانه و read-write، کوچککردن بخشهای بحرانی و پرهیز از I/O زیر قفل، بهکارگیری try-lock با backoff و timeout، و در مسیرهای پرتردد، حرکت به سمت پیاممحوری بهجای وضعیت مشترک اجرا شد. سپس با Thread Sanitizer و ابزارهای تشخیص بنبست در CI، تستهای تنشی و مبتنی بر ویژگی، و سنجههای مربوط به تراکم قفل، سامانه سختجانتر شد. جمعبندی: مدل همزمانی را ساده نگه دارید، دادههای نامتغیر و عملیات idempotent را ترجیح دهید، از سازوکارهای سطحبالا استفاده کنید، و ترتیب قفلها و ناورداییها را مستند و پایشپذیر کنید.
#Concurrency #Locking #Deadlock #RaceConditions #Multithreading #Debugging #SoftwareEngineering #Reliability
🟣لینک مقاله:
https://golangweekly.com/link/176333/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Concurrency Conundrum: A Story of Curiosity and Code
🟢 خلاصه مقاله:
**این مقاله داستان برخورد با یک مشکل رایج در همزمانی است: سرویس ظاهراً سالمی که زیر بار گاهی قفل میکرد و درخواستها معطل میماندند. با افزودن لاگهای ساختیافته، ابزارهای رهگیری و یک تست حداقلیِ قابلبازتولید، ریشه مشخص شد: ترتیبگیری نادرست قفلها و بخشهای بحرانی طولانی که به بنبست و گاهی رقابت در دسترسی به متغیرها منجر میشد. راهحل با تعریف نظم ثابت در ترتیب اخذ قفلها، جایگزینی قفل سراسری با قفلهای ریزدانه و read-write، کوچککردن بخشهای بحرانی و پرهیز از I/O زیر قفل، بهکارگیری try-lock با backoff و timeout، و در مسیرهای پرتردد، حرکت به سمت پیاممحوری بهجای وضعیت مشترک اجرا شد. سپس با Thread Sanitizer و ابزارهای تشخیص بنبست در CI، تستهای تنشی و مبتنی بر ویژگی، و سنجههای مربوط به تراکم قفل، سامانه سختجانتر شد. جمعبندی: مدل همزمانی را ساده نگه دارید، دادههای نامتغیر و عملیات idempotent را ترجیح دهید، از سازوکارهای سطحبالا استفاده کنید، و ترتیب قفلها و ناورداییها را مستند و پایشپذیر کنید.
#Concurrency #Locking #Deadlock #RaceConditions #Multithreading #Debugging #SoftwareEngineering #Reliability
🟣لینک مقاله:
https://golangweekly.com/link/176333/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Wawandco
The Concurrency Conundrum: A Story of Curiosity and Code | Wawandco
Building a simple reservation system sounds easy—until concurrency steps in. As a product grows, naive checks break down. This post unpacks why atomicity isn’t enough, and how pessimistic vs. optimistic locking prevent overbooking at scale.
❤1👍1
🔵 عنوان مقاله
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
docs.serviceradar.cloud
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go | ServiceRadar
How ServiceRadar turned a 19-hour TCP discovery job into a sub-second SYN scan by leaning on raw sockets, BPF, and Go assembly.
🔵 عنوان مقاله
their favorite Go related blog posts of all time.
🟢 خلاصه مقاله:
این شماره جدید از خبرنامه Golang Weekly فهرستی منتخب از «بهترین پستهای وبلاگی مرتبط با Go» را گرد آورده است؛ مجموعهای منسجم که بهجای فهرست صرفِ لینکها، مسیر مطالعهای ارائه میدهد برای درک اصول ماندگار Go. موضوعات کلیدی مانند همروندی با goroutine و channel، خطاپرداری شفاف، استفاده از interface و ترکیبپذیری، آزموننویسی و ابزارها، همچنین بهینهسازی کارایی، پروفایلینگ و مدیریت حافظه پوشش داده میشوند. هر انتخاب با توضیحی کوتاه درباره ارزش ماندگارش و اینکه به درد چه کسی و چه مسئلهای میخورد همراه است؛ نوآموزان میتوانند آن را نقشه راه یادگیری بدانند و باتجربهها نیز برای بازبینی مبانی و دیدگاههای عمیقتر از آن بهره ببرند. این گردآوری تصویری از مسیر بلوغ جامعه Go نیز ارائه میکند؛ از نوشتههای اولیه که روحیه طراحی زبان را شکل دادند تا جمعبندیهای اخیر که بر تجربههای تولیدی تکیه دارند—مجموعهای برای نشانگذاری، اشتراک با تیم و رجوعهای مکرر.
#Go #Golang #GolangWeekly #Programming #SoftwareEngineering #Concurrency #GoTips #DevCommunity
🟣لینک مقاله:
https://golangweekly.com/link/176329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
their favorite Go related blog posts of all time.
🟢 خلاصه مقاله:
این شماره جدید از خبرنامه Golang Weekly فهرستی منتخب از «بهترین پستهای وبلاگی مرتبط با Go» را گرد آورده است؛ مجموعهای منسجم که بهجای فهرست صرفِ لینکها، مسیر مطالعهای ارائه میدهد برای درک اصول ماندگار Go. موضوعات کلیدی مانند همروندی با goroutine و channel، خطاپرداری شفاف، استفاده از interface و ترکیبپذیری، آزموننویسی و ابزارها، همچنین بهینهسازی کارایی، پروفایلینگ و مدیریت حافظه پوشش داده میشوند. هر انتخاب با توضیحی کوتاه درباره ارزش ماندگارش و اینکه به درد چه کسی و چه مسئلهای میخورد همراه است؛ نوآموزان میتوانند آن را نقشه راه یادگیری بدانند و باتجربهها نیز برای بازبینی مبانی و دیدگاههای عمیقتر از آن بهره ببرند. این گردآوری تصویری از مسیر بلوغ جامعه Go نیز ارائه میکند؛ از نوشتههای اولیه که روحیه طراحی زبان را شکل دادند تا جمعبندیهای اخیر که بر تجربههای تولیدی تکیه دارند—مجموعهای برای نشانگذاری، اشتراک با تیم و رجوعهای مکرر.
#Go #Golang #GolangWeekly #Programming #SoftwareEngineering #Concurrency #GoTips #DevCommunity
🟣لینک مقاله:
https://golangweekly.com/link/176329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Reddit
From the golang community on Reddit
Explore this post and more from the golang community
❤1👍1
🔵 عنوان مقاله
Chans: Building Blocks for Idiomatic Go Pipelines
🟢 خلاصه مقاله:
** آنتون در مقاله «Chans: Building Blocks for Idiomatic Go Pipelines» بستهی chans را معرفی میکند؛ مجموعهای از عملگرهای عمومی و نوعامن روی channelها در زبان Go—مثل filter، map، partition و takeWhile—برای ساختpipelineهای همزمان بهشکل idiomatic. این بسته با کاهش کد تکراری و افزایش ترکیبپذیری، نوشتن جریانهای پردازش داده را سادهتر، خواناتر و قابل نگهداریتر میکند و برای پردازش جریانها، رویدادها و کارهای IO-محور بسیار کاربردی است.
#Go #Concurrency #Channels #Pipelines #Generics #FunctionalProgramming #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/176627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Chans: Building Blocks for Idiomatic Go Pipelines
🟢 خلاصه مقاله:
** آنتون در مقاله «Chans: Building Blocks for Idiomatic Go Pipelines» بستهی chans را معرفی میکند؛ مجموعهای از عملگرهای عمومی و نوعامن روی channelها در زبان Go—مثل filter، map، partition و takeWhile—برای ساختpipelineهای همزمان بهشکل idiomatic. این بسته با کاهش کد تکراری و افزایش ترکیبپذیری، نوشتن جریانهای پردازش داده را سادهتر، خواناتر و قابل نگهداریتر میکند و برای پردازش جریانها، رویدادها و کارهای IO-محور بسیار کاربردی است.
#Go #Concurrency #Channels #Pipelines #Generics #FunctionalProgramming #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/176627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Building blocks for idiomatic Go pipelines
Unopinionated and composable channel operations.
👍3
🔵 عنوان مقاله
What is sync.Pool and How to Use It Properly
🟢 خلاصه مقاله:
این مطلب دو بخش کلیدی از دنیای Go را پوشش میدهد: نخست، sync.Pool بهعنوان سازوکاری برای استفاده مجدد از اشیای موقت با هدف کاهش allocation و فشار بر GC. استفاده درست از آن یعنی: فقط برای اشیای کوتاهعمر و بدون مالکیت منابع خارجی، تعریف New برای ساخت در صورت خالی بودن، مقداردهی/Reset قبل از Put، و عدم اتکا به ماندگاری یا اندازه Pool. نتیجهگیری مهم: sync.Pool جایگزین cache پایدار نیست و باید با بنچمارکگیری مزیتش را سنجید. دوم، مقاله Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go توضیح میدهد که چگونه متن کد را به token تبدیل میکند، شناسهها، لیترالها و عملگرها را میشناسد، با فاصلهها و کامنتها و خطاها برخورد میکند و خروجی را به parser میسپارد. ترکیب این دو دیدگاه، هم به بهینهسازی عملکرد برنامهها کمک میکند و هم درک عمیقتری از فرایند پردازش کد در Go میدهد.
#Go #Golang #syncPool #Compiler #Scanner #Performance #Concurrency #MemoryManagement
🟣لینک مقاله:
https://golangweekly.com/link/176904/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
What is sync.Pool and How to Use It Properly
🟢 خلاصه مقاله:
این مطلب دو بخش کلیدی از دنیای Go را پوشش میدهد: نخست، sync.Pool بهعنوان سازوکاری برای استفاده مجدد از اشیای موقت با هدف کاهش allocation و فشار بر GC. استفاده درست از آن یعنی: فقط برای اشیای کوتاهعمر و بدون مالکیت منابع خارجی، تعریف New برای ساخت در صورت خالی بودن، مقداردهی/Reset قبل از Put، و عدم اتکا به ماندگاری یا اندازه Pool. نتیجهگیری مهم: sync.Pool جایگزین cache پایدار نیست و باید با بنچمارکگیری مزیتش را سنجید. دوم، مقاله Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go توضیح میدهد که چگونه متن کد را به token تبدیل میکند، شناسهها، لیترالها و عملگرها را میشناسد، با فاصلهها و کامنتها و خطاها برخورد میکند و خروجی را به parser میسپارد. ترکیب این دو دیدگاه، هم به بهینهسازی عملکرد برنامهها کمک میکند و هم درک عمیقتری از فرایند پردازش کد در Go میدهد.
#Go #Golang #syncPool #Compiler #Scanner #Performance #Concurrency #MemoryManagement
🟣لینک مقاله:
https://golangweekly.com/link/176904/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
What Is sync.Pool in Go & How to Use It Properly
We'll not only talk about what sync.Pool is, but also look into how empty interfaces and slices behave under the hood, so we can understand how to use sync.Pool correctly in real situations.
Keep in mind this video is for learning purposes, so NOT every…
Keep in mind this video is for learning purposes, so NOT every…