Go Casts 🚀 – Telegram
Go Casts 🚀
8.41K subscribers
283 photos
20 videos
13 files
501 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
یکی از مهارت های مهمی که برنامه نویس های باتجربه تیم باید داشته باشن اینه که محصول نرم افزاری رو از اون همه گنگی و ابهام فنی و بیزینسی اول مسیر، از دل جاده پر پیچ و خم خاکی تو کوهستان برسونه به اول اتوبان، بقیه ش دیگه حله..

تو این مسیر سخت، ابهام های بیزینسی شفاف شدن، معماری نرم افزار شفاف شده، ساختار کلی کد و practiceهای جانبی مثل ci/cd و deployment و api documentation و تست به نقطه خوبی رسیدن و بقیه مسیر بقدری راحت شده که برنامه نویس های دیگه هم به خوبی میتونن کار توسعه رو پیش ببرن.


@gocasts
👍234
گولنگ ۱۵ ساله شد.

سرعت رشد خوب گولنگ در فراگیر شدن چشمگیر بوده در این مدت. مخصوصا در حوزه ابزارهای cloud این قضیه خیلی بیشتر دیده میشه.

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

Go Turns 15
https://go.dev/blog/15years


@gocasts
😍23👏42👍2🔥2
Go Casts 🚀
Design by Contract شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو هم…
دو سال پیش در مورد design by contract صحبت کردم و سعی کردم در یک ویدیو توضیح بدم در موردش.

بنظرم اگه به این موضوع توجه کنیم، وسواس کمتری در مورد سیاست های کلی کد و معماری به خرج میدیم.

بهتره تلاش کنیم خودمون یه تعداد کمی اصول خوب رو که دست و پاگیر هم نباشن قرارداد کنیم، و طبق همون پیش بریم.

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

این لینک توضیحات و داکیومنت گوگل داک
https://news.1rj.ru/str/gocasts/116

اینم لینک ویدیو در یوتیوب
https://youtu.be/uibCosfk4-Y


@gocasts
👍7👏1
اگه سیستم شما دچار مشکل latency هست یکی از کارهایی که به شما کمک میکنه ریشه مشکل رو پیدا کنید tracing هست. حالا اگه سیستم شما از چند microservice تشکیل شده باشه، برای trace کردن احتیاج به distributed tracing دارید که Jaeger ابزار معروفی برای این کار هست.

اخیرا نسخه ۲ این ابزار منتشر شده که تطبیق خوبی با opentelemetry داره.


https://www.cncf.io/blog/2024/11/12/jaeger-v2-released-opentelemetry-in-the-core/


@gocasts
10👍6🔥1
همون جمله اول عنوان ش رو با دقت گوش بدیم کافیه، قرار نیست کوبرنتیز و داستان هاش رو بیاریم که infra بسازیم صرف ساختن infra، اون زیرساخت باید برای کاری باشه که لازمته، اگه لازمش نداری سردرد های زیرساخت پیچیده رو برای خودت بوجود نیار.


https://thenewstack.io/make-workloads-not-infrastructure-redefining-k8s-platforms/


@gocasts
👍93
موقعیت شغلی Python با امکان امریه سربازی

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

https://survey.porsline.ir/s/gP83SKUp


@gocasts
6👍2
دو مقاله شیک و قشنگ در مورد دیتابیس ها بصورت کلی و postgres

Things I Wished More Developers Knew About Databases
https://rakyll.medium.com/things-i-wished-more-developers-knew-about-databases-2d0178464f78


What I Wish Someone Told Me About Postgres
https://challahnoscript.com/what_i_wish_someone_told_me_about_postgres


@gocasts
#database
👍104🔥2👏1
Go Casts 🚀
استخدام 🚀 ماه قبل دوستان فعال تیمسازی رو به دو شرکت و کارفرما معرفی کردیم و الحمدلله یکی از بچه ها استخدام شد. بین ناامیدی و موفقیت، یه مرز باریک وجود داره که با توکل به خدا، تلاش و صبوری میشه بهش رسید. ایمان جان بعد از چند ماه فعالیت جدی در تیمسازی و تلاش…
حراجمعه به Go Casts رسید!

دوره +‌ تیمسازی بکند و گولنگ 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
6👍3👏1
Go Casts 🚀
حراجمعه به Go Casts رسید! دوره +‌ تیمسازی بکند و گولنگ Go Casts لینک خرید دوره + تیمسازی با ۵۰ درصد تخفیف به مبلغ ۴ میلیون و ۵۰۰ هزار تومان https://gocasts.ir همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده https://news.1rj.ru/str/gocasts/434 تو این پست…
بچه های فنی blackfriday که دغدغه لود دارید
به این جمله دقت کنید
let it crash to the rescue

ممکنه دغدغه concurrent transaction داشته باشید که ممکنه به روش هایی مثل گرفتن lock فکر کنید برای انجام تراکنش ها، این قضیه مخصوصا روی پیک تایم های بلک فرایدی احتمال رخ دادنش زیاده

من پیشنهاد میکنم که lock نگیرید، چون اگه بنچمارک بگیرید میبینید که احتمال رخ دادن deadlock خیلی کمه، اما رخ میده
وقتی شما از راه حل های locking استفاده میکنید، یعنی دارید برای کمتر از ۱ درصد مواقع یک بار اضافه ای به کل سیستم اضافه میکنید، مثلا ممکنه distributed locking اضافه کنید برای انجام کل تراکنش ها

حالا فرض کنید که برای این کمتر از ۱ درصد مواقع lock اضافه نکردید، چه اتفاقی میفته؟ احتمالا یک سری از تراکنش ها (کمتر از ۱ درصد احتمال زیاد) از سمت دیتابیس با خطا مواجه میشن
مثلا برای postgres ممکنه این خطا رو بگیرید
pq: deadlock detected

چون خود دیتابیس وقتی transaction باز میکنی حواسش به این چیزا هست

کافیه یه retry ساده روی خطای تراکنش بذارید که اگه خطا pq: deadlock detected بود یه بار دیگه با فاصله چند میلی ثانیه تراکنش رو امتحان کنه، احتمال خیلی زیاد در retry اول و یا حتی در retry دوم و سوم بدون مشکل deadlock تراکنش ثبت میشه.


قشنگی این راه حل چیه؟
اینکه به خاطر سناریو کمتر از ۱ درصد نیومدی راه حل و مکانیزم و معماری رو برای کل سناریوها تغییر بدی و سربار اضافه کنی

این یه جورایی نگاه let it crash هست، که میگه اجازه بده crash کنه، حالا یه فکری میکنم براش….

جواب گرفتم که میگم….

مطمئن نیستم ولی ممکنه روی یه سری دیتابیس ها حتی بدون گرفتن transaction هم deadlock تشخیص داده بشه و اگه فقط یک رکورد رو میخوای آپدیت کنی نیازی به گرفتن تراکنش دیتابیس نباشه

دقت کنید که در نهایت برای let it crash یه جایی داره error handling صورت میگیره، مثلا اینجا لازم نیست تو لایه اپلیکیشن lock بگیریم چون دیتابیس خودش این کار رو میکنه، یعنی لایه بندی داره قضیه، تو سطح اپلیکیشن کاری نمیکنی چون از دیتابیس مطمئنی



دوره +‌ تیمسازی بکند و گولنگ 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👍10🔥2
Go Casts 🚀
حراجمعه به Go Casts رسید! دوره +‌ تیمسازی بکند و گولنگ Go Casts لینک خرید دوره + تیمسازی با ۵۰ درصد تخفیف به مبلغ ۴ میلیون و ۵۰۰ هزار تومان https://gocasts.ir همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده https://news.1rj.ru/str/gocasts/434 تو این پست…
مقاله کوتاه و جالبی بود

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

Go Production Performance Gotcha - GOMAXPROCS
https://metoro.io/blog/go-production-performance-gotcha-gomaxprocs

همچنین نکته دیگه ش اینه که روز به روز استفاده از eBPF بیشتر میشه، مخصوصا برای auto instrumentation که قبلا اینجا در موردش گفته بودم
https://news.1rj.ru/str/gocasts/333


دوره +‌ تیمسازی بکند و گولنگ 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
5👍1
یکی از دوستانی که در تیمسازی ۳ فعالیت موثر خوبی دارند لطف داشتند و فیدبک شون رو نسبت به تیمسازی گفتند.



دوره +‌ تیمسازی بکند و گولنگ 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
7
بچه ها کسی ایده ای داره چرا دیتابیس 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