یکی از مهارت های مهمی که برنامه نویس های باتجربه تیم باید داشته باشن اینه که محصول نرم افزاری رو از اون همه گنگی و ابهام فنی و بیزینسی اول مسیر، از دل جاده پر پیچ و خم خاکی تو کوهستان برسونه به اول اتوبان، بقیه ش دیگه حله..
تو این مسیر سخت، ابهام های بیزینسی شفاف شدن، معماری نرم افزار شفاف شده، ساختار کلی کد و practiceهای جانبی مثل ci/cd و deployment و api documentation و تست به نقطه خوبی رسیدن و بقیه مسیر بقدری راحت شده که برنامه نویس های دیگه هم به خوبی میتونن کار توسعه رو پیش ببرن.
@gocasts
تو این مسیر سخت، ابهام های بیزینسی شفاف شدن، معماری نرم افزار شفاف شده، ساختار کلی کد و practiceهای جانبی مثل ci/cd و deployment و api documentation و تست به نقطه خوبی رسیدن و بقیه مسیر بقدری راحت شده که برنامه نویس های دیگه هم به خوبی میتونن کار توسعه رو پیش ببرن.
@gocasts
👍23❤4
گولنگ ۱۵ ساله شد.
سرعت رشد خوب گولنگ در فراگیر شدن چشمگیر بوده در این مدت. مخصوصا در حوزه ابزارهای cloud این قضیه خیلی بیشتر دیده میشه.
حالا خبر نویدبخش تیم گولنگ هم توجه ویژه به توسعه زیرساخت های هوش مصنوعی با گولنگ هست که در صورت محقق شدن میتونه به گولنگ اجازه بده نقش موثرتری در دنیای کامپیوتر و هوش مصنوعی ایفا کنه.
Go Turns 15
https://go.dev/blog/15years
@gocasts
سرعت رشد خوب گولنگ در فراگیر شدن چشمگیر بوده در این مدت. مخصوصا در حوزه ابزارهای cloud این قضیه خیلی بیشتر دیده میشه.
حالا خبر نویدبخش تیم گولنگ هم توجه ویژه به توسعه زیرساخت های هوش مصنوعی با گولنگ هست که در صورت محقق شدن میتونه به گولنگ اجازه بده نقش موثرتری در دنیای کامپیوتر و هوش مصنوعی ایفا کنه.
Go Turns 15
https://go.dev/blog/15years
@gocasts
go.dev
Go Turns 15 - The Go Programming Language
Happy 15th birthday, Go!
😍23👏4❤2👍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
بنظرم اگه به این موضوع توجه کنیم، وسواس کمتری در مورد سیاست های کلی کد و معماری به خرج میدیم.
بهتره تلاش کنیم خودمون یه تعداد کمی اصول خوب رو که دست و پاگیر هم نباشن قرارداد کنیم، و طبق همون پیش بریم.
تاکید دارم روی تعداد کم، چون اگه زیاد باشه کار خراب میشه.
این لینک توضیحات و داکیومنت گوگل داک
https://news.1rj.ru/str/gocasts/116
اینم لینک ویدیو در یوتیوب
https://youtu.be/uibCosfk4-Y
@gocasts
Telegram
Go Casts 🚀
Design by Contract
شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه
همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو…
شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه
همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو…
👍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
اخیرا نسخه ۲ این ابزار منتشر شده که تطبیق خوبی با opentelemetry داره.
https://www.cncf.io/blog/2024/11/12/jaeger-v2-released-opentelemetry-in-the-core/
@gocasts
CNCF
Jaeger v2 released: OpenTelemetry in the core!
Project post by the Jaeger maintainers Jaeger, the popular open-source distributed tracing platform, has had a successful 9 year history as being one of the first graduated projects in the Cloud…
❤10👍6🔥1
همون جمله اول عنوان ش رو با دقت گوش بدیم کافیه، قرار نیست کوبرنتیز و داستان هاش رو بیاریم که infra بسازیم صرف ساختن infra، اون زیرساخت باید برای کاری باشه که لازمته، اگه لازمش نداری سردرد های زیرساخت پیچیده رو برای خودت بوجود نیار.
https://thenewstack.io/make-workloads-not-infrastructure-redefining-k8s-platforms/
@gocasts
https://thenewstack.io/make-workloads-not-infrastructure-redefining-k8s-platforms/
@gocasts
The New Stack
Make Workloads, Not Infrastructure: Redefining K8s Platforms
A Kubernetes platform that supports Devs as much as Ops should empower teams to make workloads, not just infrastructure.
👍9❤3
Forwarded from فرصت شغلی گولنگ و فناوری
موقعیت شغلی Python با امکان امریه سربازی
یک شرکت دانش بنیان واقع در دانشگاه صنعتی شریف جهت توسعه ی زیرساخت های نرم افزاری خود نیازمند به یک نیروی مسلط به زبان برنامه نویسی پایتون با حداقل دو سال سابقه ی کار می باشد. نوع همکاری به صورت تمام وقت است و این شرکت قابلیت جذب نیروی امریه ی سربازی را نیز داراست.
متقاضیان محترم لطفاً رزومه ی خود را ارسال نمایید .
https://survey.porsline.ir/s/gP83SKUp
@gocasts
یک شرکت دانش بنیان واقع در دانشگاه صنعتی شریف جهت توسعه ی زیرساخت های نرم افزاری خود نیازمند به یک نیروی مسلط به زبان برنامه نویسی پایتون با حداقل دو سال سابقه ی کار می باشد. نوع همکاری به صورت تمام وقت است و این شرکت قابلیت جذب نیروی امریه ی سربازی را نیز داراست.
متقاضیان محترم لطفاً رزومه ی خود را ارسال نمایید .
https://survey.porsline.ir/s/gP83SKUp
@gocasts
Porsline
python-resume-140308
با پُرسلاین به راحتی پرسشنامه خود را طراحی و ارسال کنید و با گزارشهای لحظهای آن به سرعت تصمیم بگیرید.
❤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
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
👍10❤4🔥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
دوره + تیمسازی بکند و گولنگ 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
به این جمله دقت کنید
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
Porsline
gocasts-bootcamp-14030902-black-friday
با پُرسلاین به راحتی پرسشنامه خود را طراحی و ارسال کنید و با گزارشهای لحظهای آن به سرعت تصمیم بگیرید.
❤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
خلاصه ش اینه که 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
دوره + تیمسازی بکند و گولنگ 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
اینجا یه سری نکته گفته
https://dev.to/arctype/how-to-fix-a-sequence-when-it-goes-out-of-sync-in-postgres-480b
ولی برای خودم روشن نیست چرا این اتفاق افتاده، اگه کسی تجربه ای داره بگه لطفا
@gocasts
DEV Community
How to fix a sequence when it goes out of sync in Postgres
Postgres is one of the most advanced and widely used open-source RDBMS (Relational Database...
👍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
درسته که درباره 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
Shopify
How to Write Fast Code in Ruby on Rails - Shopify
Part of Shopify’s success with Ruby on Rails is an emphasis on writing fast code. But, how do you really write fast code? Let’s talk about a few ways to start writing faster code in Active Record, Rails, and Ruby.
👍24❤7🔥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
مخصوصا اون قسمتی که از 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
👍14❤5🔥1
زودتر از این ها منتظر بودیم آقای JetBrains
یه ۶ ماهی میشه که برای Rust هم IDE منتشر کردن به اسم RustRover و من تازه با خبر شدم.
خوبیش اینه یه پلن رایگان non-commercial use هم داره
https://jetbrains.com/rust/
با احترام برای نظر همه دوستان، تجربه ای که محصولات JetBrains میده برای توسعه یه چیز دیگه ست.
@gocasts
یه ۶ ماهی میشه که برای 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
ابزار جالبی از Google Cloud Platform هست که زیرساخت رو با terraform کد میکنه، معکوس چیزی که رایجه!
شما معمولا همه زیرساخت رو با terraform کد میکنی، ولی اگه مثلا زیرساخت ت از قبل راه اندازی شده باشه کار سخت میشه، این ابزار میاد زیرساخت فعلی رو به صورت terraform کد میکنه.
https://github.com/GoogleCloudPlatform/terraformer
@gocasts
👍14❤4😍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
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
CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system.
https://github.com/IceWhaleTech/CasaOS
@gocasts
https://github.com/IceWhaleTech/CasaOS
@gocasts
GitHub
GitHub - IceWhaleTech/CasaOS: CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system.
CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system. - IceWhaleTech/CasaOS
👍12
این کتاب رو شدیدا توصیه میکنم برای مبحث concurrency در گولنگ، فصل به فصل که داره میاد بیرون بخونید و دنبال کنید.
همینطوری تازه تازه و داغ داغ بخورید، ببخشید بخونید که کیفش به همینه :)
تازه سه فصل ش منتشر شده، که فصل سومش در مورد pipelines هست.
https://antonz.org/go-concurrency/pipelines/
#concurrency #golang
@gocasts
همینطوری تازه تازه و داغ داغ بخورید، ببخشید بخونید که کیفش به همینه :)
تازه سه فصل ش منتشر شده، که فصل سومش در مورد pipelines هست.
https://antonz.org/go-concurrency/pipelines/
#concurrency #golang
@gocasts
👍37❤7🔥2
سلام دوستان
یه گروه راه اندازی کردم که در مورد مباحث مختلف دنیای ابری و سرور و دیتاسنتر و شبکه اشتراک دانش و پرسش و پاسخ داشته باشیم، تو این گروه قراره بدونیم چطوری سرویس هارو دیپلوی کنیم، تنظیمات پروداکشن چطوری باشه، دیتابیس چطوری مدیریت کنیم، از کدوم دیتاسنتر و ارائه دهنده سرور بگیریم و غیره
لطفا دوست داشتید عضو بشید
https://news.1rj.ru/str/serversos_ir
@gocasts
یه گروه راه اندازی کردم که در مورد مباحث مختلف دنیای ابری و سرور و دیتاسنتر و شبکه اشتراک دانش و پرسش و پاسخ داشته باشیم، تو این گروه قراره بدونیم چطوری سرویس هارو دیپلوی کنیم، تنظیمات پروداکشن چطوری باشه، دیتابیس چطوری مدیریت کنیم، از کدوم دیتاسنتر و ارائه دهنده سرور بگیریم و غیره
لطفا دوست داشتید عضو بشید
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
بی نهایت از اعتماد شما متشکریم. ان شاءالله که بتونیم پاسخگوی این همه محبت و اعتماد شما باشیم و بتونیم با تولید محتوای بروز، مناسب و برازنده شما، پاسخگوی محبت شما باشیم
دوره + تیمسازی بکند و گولنگ 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