Forwarded from فرصت شغلی گولنگ و فناوری
ما توی داروخانه دیجیکالا دنبال مهندسین نرمافزاری هستیم که با Go و چند ابزار دیگه تجربه داشته باشن.
لینک موقعیت شغلی
https://jobinja.ir/companies/digikala/jobs/AvLY
@gocasts
لینک موقعیت شغلی
https://jobinja.ir/companies/digikala/jobs/AvLY
@gocasts
جابینجا، شغلی رویایی خود را پیدا کنید
استخدام (Senior Software Engineer(Pharmacy در دیجیکالا | جابینجا
استخدام برای فرصت شغلی (Senior Software Engineer(Pharmacy در Digikala,
Actively collaborate with cross-functional teams, including QA engineers, product managers, and ...
Actively collaborate with cross-functional teams, including QA engineers, product managers, and ...
👍5❤2
مقاله جالبی بود
خیلی فنی و عمیق توضیح داده، ولی کلا خوبه که بدونید این فیچر dedup برای OpenZFS میتونه write to disk رو efficientتر کنه اگه performance نسخه جدیدش قابل قبول باشه.
OpenZFS deduplication is good now and you shouldn't use it
https://despairlabs.com/blog/posts/2024-10-27-openzfs-dedup-is-good-dont-use-it/?utm_source=substack&utm_medium=email
این قضیه مخصوصا تو سرویس های blob storage میتونه کمک کنه، مثلا ceph که به عنوان یکی از solutionهای معروف برای blob storage استفاده میشه از zfs استفاده میکنه به عنوان backend volume
https://docs.ceph.com/en/reef/dev/ceph-volume/zfs/
@gocasts
خیلی فنی و عمیق توضیح داده، ولی کلا خوبه که بدونید این فیچر dedup برای OpenZFS میتونه write to disk رو efficientتر کنه اگه performance نسخه جدیدش قابل قبول باشه.
OpenZFS deduplication is good now and you shouldn't use it
https://despairlabs.com/blog/posts/2024-10-27-openzfs-dedup-is-good-dont-use-it/?utm_source=substack&utm_medium=email
این قضیه مخصوصا تو سرویس های blob storage میتونه کمک کنه، مثلا ceph که به عنوان یکی از solutionهای معروف برای blob storage استفاده میشه از zfs استفاده میکنه به عنوان backend volume
https://docs.ceph.com/en/reef/dev/ceph-volume/zfs/
@gocasts
despair labs
OpenZFS deduplication is good now and you shouldn't use it
OpenZFS 2.3.0 will be released any day now, and it includes the new “Fast Dedup” feature. My team at Klara spent many months in 2023 and 2024 working on it, and we reckon it’s pretty good, a huge step up from the old dedup as well as being a solid base for…
👍5❤1👏1
اگه دیسک سرورتون پر شده این دستور سرور رو زنده میکنه
با sudo هم این میشه
https://stackoverflow.com/questions/42510002/docker-how-to-clear-the-logs-properly-for-a-docker-container
البته دیگه لاگی ندارید بفهمید چه بلایی سر سیستم تون اومده، مواظب باشید!
@gocasts
truncate -s 0 /var/lib/docker/containers/**/*-json.log
با sudo هم این میشه
sudo sh -c "truncate -s 0 /var/lib/docker/containers/**/*-json.log"
https://stackoverflow.com/questions/42510002/docker-how-to-clear-the-logs-properly-for-a-docker-container
البته دیگه لاگی ندارید بفهمید چه بلایی سر سیستم تون اومده، مواظب باشید!
@gocasts
Stack Overflow
Docker: How to clear the logs properly for a Docker container?
I use docker logs [container-name] to see the logs of a specific container.
Is there an elegant way to clear these logs?
Is there an elegant way to clear these logs?
😁15👍9🔥7
مصاحبه هایی که انجام میدید یه برگ برنده دارید که دست خودتونه، اونم تجربیات شماست، سعی کنید به قدری تجربیات فنی تون رو خوب بیان کنید، که مصاحبه کننده قبل از پرسش هر سوالی قانع بشه که شما به اندازه کافی خوب هستید، معمولا تجربیات شما رو قبل از سوالات دیگه ای میپرسن، پس فرصت خوبیه که با قدرت تمام خودتون رو به رخ بکشید، همچنین ممکنه از دل تجربیات خودتون ازتون سوال بپرسن، که باز این قضیه سوالات مصاحبه کننده رو پیش بینی پذیرتر میکنه براتون. اصلا دست کمش نگیرید، خیلی مهمه از نظر من
Re-imagining Technical Interviews: Valuing Experience Over Exam Skills
https://danielabaron.me/blog/reimagining-technical-interviews
@gocasts
Re-imagining Technical Interviews: Valuing Experience Over Exam Skills
https://danielabaron.me/blog/reimagining-technical-interviews
@gocasts
danielabaron.me
Re-imagining Technical Interviews: Valuing Experience Over Exam Skills
Exploring the shortcomings of traditional technical interviews and advocating for more relevant assessment methods to better reflect the demands of modern software engineering roles.
❤14👍8
دنبال یه سری منبع در مورد golang internals بودم که با این repository آشنا شدم، به صورت موضوعی لینک های خوبی رو معرفی کرده، دوست داشتید بررسی کنید.
A collection of articles and videos to understand Golang internals.
https://github.com/emluque/golang-internals-resources
@gocasts
A collection of articles and videos to understand Golang internals.
https://github.com/emluque/golang-internals-resources
@gocasts
GitHub
GitHub - emluque/golang-internals-resources: A collection of articles and videos to understand Golang internals.
A collection of articles and videos to understand Golang internals. - emluque/golang-internals-resources
👍7❤3
استخدام 🚀
ماه قبل دوستان فعال تیمسازی رو به دو شرکت و کارفرما معرفی کردیم و الحمدلله یکی از بچه ها استخدام شد.
بین ناامیدی و موفقیت، یه مرز باریک وجود داره که با توکل به خدا، تلاش و صبوری میشه بهش رسید.
ایمان جان بعد از چند ماه فعالیت جدی در تیمسازی و تلاش برای استخدام موفق شد الحمدلله
دوستانی که خارج از تهران هستند، به خاطر کمتر بودن موقعیت دورکاری نگرانی بیشتری بابت استخدام دارند.
شرح تصاویر
۱ - انگیزه دادن برای شروع
۲ - تاکید بر فعالیت جدی در تیمسازی
۳ - خبر استخدام
۴ - تاکید بر همراهی
۵ - تاییدیه کارفرما
دوره + تیمسازی بکند و گولنگ 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
🔥10❤6👍1
یکی از مهارت های مهمی که برنامه نویس های باتجربه تیم باید داشته باشن اینه که محصول نرم افزاری رو از اون همه گنگی و ابهام فنی و بیزینسی اول مسیر، از دل جاده پر پیچ و خم خاکی تو کوهستان برسونه به اول اتوبان، بقیه ش دیگه حله..
تو این مسیر سخت، ابهام های بیزینسی شفاف شدن، معماری نرم افزار شفاف شده، ساختار کلی کد و 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