Go Casts 🚀 – Telegram
Go Casts 🚀
8.38K subscribers
283 photos
20 videos
13 files
502 links
VP of Eng Zarinpal | Ex Snapp! Senior SE
فوق لیسانس هوش مصنوعی از دانشگاه تهران

اشتراک محتوا در مورد مهندسی نرم افزار، هوش مصنوعی، گولنگ
https://gocasts.ir

پروفایل
https://www.linkedin.com/in/gohossein

ارتباط
@lifography

Ai for Software
@aicasts_ir
Download Telegram
بچه ها کسی ایده ای داره چرا دیتابیس postgres یهویی باید sync بودن seq_idهاش عقب بیفته روی همه جدول ها؟

اینجا یه سری نکته گفته
https://dev.to/arctype/how-to-fix-a-sequence-when-it-goes-out-of-sync-in-postgres-480b

ولی برای خودم روشن نیست چرا این اتفاق افتاده، اگه کسی تجربه ای داره بگه لطفا

@gocasts
👍4
یه مقاله جذاب در مورد نوشتن کد سریع از Shopify
درسته که درباره Ruby on Rails نوشته شده اما اکثر نکاتش به خیلی از زبان و فریمورک های دیگه از جمله گولنگ هم قابل تعمیم دادن هست.

دقت کنید که Shopify در یک مقیاس خیلی بزرگ کار میکنه و نکاتش مهمه.

کدی که با Ruby on Rails نوشته میشه معروفه به کند بودن

اما در Shopify در مقیاس میلیون درخواست در دقیقه داره از Ruby on Rails استفاده میشه

تو این مقاله نکات جالبی رو اشاره میکنه برای اینکه کد سریعتری نوشته بشه

اولین نکته ش در مورد ORM یا همون ActiveRecord هست که باید درک کنید توابع مختلف orm چه رفتاری با دیتابیس دارند.

تو گولنگ همین مشکل با gorm وجود داره که به شدت میتونه لود زیادی روی دیتابیس بندازه بدون اینکه برنامه نویس متوجه این قضیه بشه.

دومین نکته ش باز در مورد دیتابیس هست که میگه از select * پرهیز کنید و فقط ستون هایی که لازم دارید رو انتخاب کنید.


نکته دیگه پرهیز از کوئری زدن به ستون هایی هست که index ندارن و در مقیاس بالا باعث میشه که full scan رخ بده
البته ایندکس اضافه کردن باعث lock شدن دیتابیس ممکنه بشه برای writeها و باید مواظب مایگریشن ایندکس باشیم

نکته بعدی کش کردن همه چیز هست…
Cache All The Things
If you can’t make something faster, a good alternative is to cache it. Things like complex view compilation and external API calls benefit greatly from caching. Especially if the resultant data doesn’t change often.

یه سری چیزارو میشه throttle کرد
Throttle Bottlenecks
But what about operations you can’t cache? Things like delivering an email, sending a webhook, or even logging in can be abused by users of an application. Essentially, any expensive operation that can’t be cached should be throttled.

برای یه سری پروسه ها هم میشه job queue و مکانیزم های async در نظر گرفت
Do It Later (In a Job)
Jobs allow us to defer work to another process through queueing systems often backed by Redis. Exporting a dataset, activating a subnoscription, or processing a payment are all great examples of job-worthy work

پرهیز از متاپروگرمینگ
Use Metaprogramming Sparingly
Changing a program’s structure at runtime is a powerful feature. In a highly dynamic language like Ruby, there are significant performance costs associated to metaprogramming.

دونستن تفاوت O(1) و O(n) برای مقیاس پذیر بودن خیلی مهمه
Know the difference between O(n) and O(1)
What O(n) and O(1) mean is that there are two kinds of operations. O(n) is an operation that scales in time with size, and O(1) is one that is constant in time regardless of size.

مثلا جای آرایه بهتره از hash استفاده بشه چون lookup کردن تو hash فارغ از اندازه O(1) هست


Allocate Less
استفاده و مدیریت Garbage Collector
If used improperly, dangerous methods can lead to unwanted side effects in your code. A best practice to follow is to avoid mutating global state while leveraging mutation on local state.

https://shopify.engineering/write-fast-code-ruby-rails


@gocasts
👍247🔥2👏2
لذت بردم از زیبایی این مقاله
مخصوصا اون قسمتی که از cpu cache line حرف میزنه که مطمئن هستم برای خیلی هامون جدیده…

داستانش مفصله، اما حتما بخونید
کلا استفاده از sync.Pool جاهایی که temp objectهایی دارید که زیاد داره allocate میشه، زیاد منظورم به تعداد دفعات زیاد هست، استفاده از sync.Pool برای reuse کردن اون objectها کمک میکنه garbage collector کمتر به زحمت بیفته و performance برنامه خیلی بهتر بشه

هم تو خود net/http و encode/json و sdk گولنگ زیاد استفاده شده و هم فریمورک هایی مثل fasthttp که خیلی سریع هستن ازش استفاده میکنن

حتما به اون تیکه padding دقت کنید که چرا داره اضافه میشه
از زیبایی های sync.Pool اینه که lock-free طراحی شده، هر چند به خاطر modern cpuها و cache line ممکنه که این مکانیزم درست اجرا نشه بدون اون padding

قسمت pin و victim هم جالب بود، بخونید

https://victoriametrics.com/blog/go-sync-pool/


@gocasts
👍145🔥1
زودتر از این ها منتظر بودیم آقای JetBrains
یه ۶ ماهی میشه که برای Rust هم IDE منتشر کردن به اسم RustRover و من تازه با خبر شدم.

خوبیش اینه یه پلن رایگان non-commercial use هم داره

https://jetbrains.com/rust/

با احترام برای نظر همه دوستان، تجربه ای که محصولات JetBrains میده برای توسعه یه چیز دیگه ست.

@gocasts
👍47
بچه های دواپس اگه تجربه استفاده ش رو دارید نظرتون رو در مورد تجربه ش بهم بگید لطفا

ابزار جالبی از Google Cloud Platform هست که زیرساخت رو با terraform کد میکنه، معکوس چیزی که رایجه!

شما معمولا همه زیرساخت رو با terraform کد میکنی، ولی اگه مثلا زیرساخت ت از قبل راه اندازی شده باشه کار سخت میشه، این ابزار میاد زیرساخت فعلی رو به صورت terraform کد میکنه.

https://github.com/GoogleCloudPlatform/terraformer


@gocasts
👍144😍1
جدیدا datadog  یه ابزاری رو معرفی کرده برای گولنگ که بصورت خودکار و در زمان کامپایل auto instrument میکنه برنامه گولنگی شما رو

https://www.datadoghq.com/blog/go-instrumentation-orchestrion/

فعلا tracing رو روی یک سری پکیج محدود ارائه میده که لیست ش اینجا هست و اون پکیج های محدود، پکیج های پرکاربردی هستن
https://github.com/DataDog/orchestrion?tab=readme-ov-file#supported-libraries

مستنداتش اینجا هست
https://datadoghq.dev/orchestrion/docs/

دوستانی که datadog APM استفاده میکنن میتونن فعالش کن

@gocasts
👍9
این کتاب رو شدیدا توصیه میکنم برای مبحث concurrency در گولنگ، فصل به فصل که داره میاد بیرون بخونید و دنبال کنید.

همینطوری تازه تازه و داغ داغ بخورید، ببخشید بخونید که کیفش به همینه :)

تازه سه فصل ش منتشر شده، که فصل سومش در مورد pipelines هست.
https://antonz.org/go-concurrency/pipelines/


#concurrency #golang


@gocasts
👍377🔥2
سلام دوستان
یه گروه راه اندازی کردم که در مورد مباحث مختلف دنیای ابری و سرور و دیتاسنتر و شبکه اشتراک دانش و پرسش و پاسخ داشته باشیم، تو این گروه قراره بدونیم چطوری سرویس هارو دیپلوی کنیم، تنظیمات پروداکشن چطوری باشه، دیتابیس چطوری مدیریت کنیم، از کدوم دیتاسنتر و ارائه دهنده سرور بگیریم و غیره

لطفا دوست داشتید عضو بشید
https://news.1rj.ru/str/serversos_ir


@gocasts
😍15👍9🔥5
تعداد مشارکت کنندگاه دوره از ۵۰۰ نفر گذشت 🔥

بی نهایت از اعتماد شما متشکریم. ان شاءالله که بتونیم پاسخگوی این همه محبت و اعتماد شما باشیم و بتونیم با تولید محتوای بروز، مناسب و برازنده شما، پاسخگوی محبت شما باشیم

دوره +‌ تیمسازی بکند و گولنگ Go Casts
لینک خرید دوره + تیمسازی
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4

@gocasts
14👍6👏1
گوگل یه ide/editor ارائه کرده که کاملا مبتنی بر وب هست و با gemini ai هم integrate شده، تست ش کردم، تجربه جالبی بود، همه چیز on the fly انجام میشه

https://idx.google.com


@gocasts
👍173
بهینه سازی مصرف حافظه برای اپلیکیشن گولنگ

چند تا مقاله میفرستم که نکات ریز و خوبی رو اشاره میکنن برای بهینه سازی مصرف حافظه در گولنگ
دقت کنید که هر جایی لازم نیست این موارد رو رعایت کنید، اما یه سری هاش رو اگه از اول تو پروژه رعایت کنید، خیلی زحمتی نداره براتون و کدتون هم بهینه تر میشه، چه اشکالی داره؟!

Optimizing Memory Usage in Go: Reducing Memory Footprint
https://clouddevs.com/go/optimizing-memory-usage/

Memory Optimization and Garbage Collector Management in Go
https://betterprogramming.pub/memory-optimization-and-garbage-collector-management-in-go-71da4612a960

Memory Allocations
https://go101.org/optimizations/0.3-memory-allocations.html

Optimizing Memory Usage in Golang: When is a Variable Allocated to the Heap
https://hackernoon.com/optimizing-memory-usage-in-golang-when-is-a-variable-allocated-to-the-heap

Mastering Go Memory Optimization: 20 Expert Techniques for Efficient Applications
https://dev.to/aaravjoshi/mastering-go-memory-optimization-20-expert-techniques-for-efficient-applications-4bjc

Enhancing Go Struct Efficiency: Essential Tips for Memory Optimization
https://www.codingexplorations.com/blog/enhancing-go-struct-efficiency-essential-tips-for-memory-optimization

How To Perform Memory Optimization and Garbage Collector Management in Go?
https://dev.to/nikl/how-to-perform-memory-optimization-and-garbage-collector-management-in-go-1j7

Golang Writing memory efficient and CPU optimized Go Structs
https://dev.to/deadlock/golang-writing-memory-efficient-and-cpu-optimized-go-structs-2ick


دوره +‌ تیمسازی بکند و گولنگ Go Casts
لینک خرید دوره + تیمسازی با ۵۰ درصد تخفیف به مبلغ ۴ میلیون و ۵۰۰ هزار تومان
https://gocasts.ir


همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4

@gocasts
👍151😍1
شعار جهانی ش اینه
THE WORST DISEASE YOU’Ve NEVER HEARD OF

سخت ترین بیماری دنیا که تو هرگز راجع به آن نشنیده ای


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


من همیشه سعی میکنم محتوای کانال کاملا مرتبط با بحث های فنی باشه و از این به بعد هم همینطور خواهد بود، اما به عنوان کسی که این موضوع رو میدونم و از نزدیک با تنها ngo حامی این بیماران، خانه ای بی، نزدیک به ۱۰ سال افتخار همکاری رو دارم و میدونم که چقدر پاک و سالم و صادقانه حمایت میکنن، وظیفه حداقلی خودم میدونم تا آخرین نفس، هر چند کوچیک هر از گاهی حمایت‌شون کنم.


هر طور که دوست دارید حمایت کنید، اطلاع رسانی، آگاهی بخشی، حمایت مالی، هر طور که دوست داشتید حمایت کنید

اینم لینک سایت جهت حمایت
https://ebhome.ngo/support


پیشاپیش یلدای همگی مبارک، مرسی که هستید، مخلص همه
یا علی


@gocasts
54👍5😍1
Go Casts 🚀
تعداد مشارکت کنندگاه دوره از ۵۰۰ نفر گذشت 🔥 بی نهایت از اعتماد شما متشکریم. ان شاءالله که بتونیم پاسخگوی این همه محبت و اعتماد شما باشیم و بتونیم با تولید محتوای بروز، مناسب و برازنده شما، پاسخگوی محبت شما باشیم دوره +‌ تیمسازی بکند و گولنگ Go Casts لینک…
معماری Event-Driven یه پارادایم هست که روی produce و consume کردن eventها برای اکشن های مهم سیستم و تغییرات state سیستم تاکید میکنه.

یکی از مهم ترین مزیت هاش چیه؟ اینه که producer خیلی loosely coupled میشه نسبت به consumerها و قسمت های دیگه سیستم.

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

ولی خب چالش هایی هم داره، از جمله اینکه مدیریت eventها پیچیده تر میشه و مدیریت data consistency بین سرویس های مختلف رو سخت تر میکنه.

به همین دلیل، تعریف schemaی مناسب برای eventها و داشتن error handling درست روی produce و consume کردن eventها مهم میشه.

این مقاله رو دوست داشتید بخونید، مفاهیم مقدماتی رو توضیح میده
Introduction to Event-Driven Architecture
https://medium.com/microservicegeeks/introduction-to-event-driven-architecture-e94ef442d824


تعداد مشارکت کنندگاه دوره از ۵۰۰ نفر گذشت 🔥
به همین مناسبت، تخفیف ۵۳ درصدی دوره در نظر گرفتیم
جزییات بیشتر در این پست 👇
https://news.1rj.ru/str/gocasts/572


@gocasts
👍148
یکی از کتاب هایی که درباره sql و anti-patternهاش هست و ریویهای مثبت خوبی داره این کتابه

SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Programmers) 1st Edition

by Bill Karwin (Author)
4.5 out of 5 stars
189 ratings

https://www.amazon.com/SQL-Antipatterns-Programming-Pragmatic-Programmers/dp/1934356557

مزیت این کتاب اینه که نکات کوچیک و ساده رو practical مثال زده و توضیح داده علت اینکه anti-pattern هست چیه

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

@gocasts
👍24🔥4
یه ویدیوی تازه و داغ که یه کتابخونه جدید رو هم معرفی میکنه برای event stream processing

Processing Millions of Events Per Second Reliably Using Generics
https://youtu.be/tedFyfKqKeI?si=HoWXARoDv0BRbQRo

A blazingly fast event stream processing library powering the reveald event processing daemon.
https://github.com/runreveal/kawa

Kawa: The Event Processor for the Grug Brained Developer
https://blog.runreveal.com/kawa-the-event-processor-for-the-grug-brained-developer/


تعداد مشارکت کنندگاه دوره از ۵۰۰ نفر گذشت 🔥
به همین مناسبت، تخفیف ۵۳ درصدی دوره در نظر گرفتیم
جزییات بیشتر در این پست 👇
https://news.1rj.ru/str/gocasts/572


@gocasts
👍9😍1
مقایسه دیدگاه سازنده golang و rust

اگه یه چیزی رو دوست دارید عمیق یاد بگیرید سعی کنید از نگاه خود سازنده اون ابزار هم بهش نگاه کنید.

هیچ ابزاری کامل نیست و اگه بخوایم درک بهتر و راحت تری داشته باشیم بهتره که فلسفه و دیدگاه سازنده ش رو هم کمی بدونیم.

من قبلا یکی از اولین ارائه های rob pike و گولنگ رو تو کانال گذاشتم
https://news.1rj.ru/str/gocasts/97

در مقابل یکی از اولین ارائه های graydon hoare در mozilla رو بخونید
http://venge.net/graydon/talks/intro-talk-2.pdf

مثلا برای گولنگ تو طراحی و اهداف شون اشاره کرده بود که میخواد گرامر زبان منظم و ساده باشه با تعداد keyword کم

و در مقابل rust میگه syntax آخرین دغدغه ای هست که بهش فکر میکنم…

یا میگه multi-paradigm هستم، یعنی FP و OO و procedural رو بسته به استفاده شون تو زبان خواهم داشت.

دونستن این دیدگاه کمک میکنه که اگه مثلا rust یاد میگیری سعی نکنی همه چیز رو OO ببینی، یا همه چیز رو FP ببینی.

یا اگه گولنگ یاد میگیری شکایت نکنی چرا زبانش کوچیک و جمع و جوره و خیلی قابلیت های fancy نداره، و یا GC داره، خب تو طراحی ش همینو میخواسته و همینم انجام داده..

@gocasts
👍35👏31🔥1😁1