#golang
#tip
مشکل کد زیر کجاست؟
خب این برنامه در ظاهر مشکلی نداره، یک اسلایس تعریف و در خط بعدی ایندکس صفرم دارای مقدار شده، اما نکته مهم اینجاست برای متغیر names یک اسلایس با ظرفیت (capacity) 10، اما طول (length) حقیقی صفر ایجاد شده و هنگامی که در خط بعدی تصمیم به مقداردهی یکی از ایندکسهای اسلایس میکنیم برنامه با خطای رانتایم مواجه میشه و نتیجه چنین کدی مساوی با خطای زیر است:
اگر میخواهید به اسلایسی که طول آن صفر است مقداری را اضافه کنید باید با استفاده از تابع ()append به شکل زیر این کار را انجام دهید.
اما اگر نیاز داریم حتما مقادیر در ایندکسهای مشخص در این اسلایس قرار بگیرند باید تعریف متغیر names را به روش درست زیر انجام دهیم:
در این نوع تعریف علاوهبر تعیین ظرفیت، طول حقیقی اسلایس نیز معین میشه تا از خطای رانتایم جلوگیری شود.
دقت کنید تعریف اسلایس با کلمه کلیدی var و تکرار روند بالا بازهم برنامه را با خطای index out of range روبرو خواهد کرد.
#tip
#golang
#tip
مشکل کد زیر کجاست؟
func main() {
names := make([]string, 0, 10)
names[0] = "reza"
fmt.Println(names)
}خب این برنامه در ظاهر مشکلی نداره، یک اسلایس تعریف و در خط بعدی ایندکس صفرم دارای مقدار شده، اما نکته مهم اینجاست برای متغیر names یک اسلایس با ظرفیت (capacity) 10، اما طول (length) حقیقی صفر ایجاد شده و هنگامی که در خط بعدی تصمیم به مقداردهی یکی از ایندکسهای اسلایس میکنیم برنامه با خطای رانتایم مواجه میشه و نتیجه چنین کدی مساوی با خطای زیر است:
panic: runtime error: index out of range [0] with length 0
اگر میخواهید به اسلایسی که طول آن صفر است مقداری را اضافه کنید باید با استفاده از تابع ()append به شکل زیر این کار را انجام دهید.
names = append(names, "reza")
اما اگر نیاز داریم حتما مقادیر در ایندکسهای مشخص در این اسلایس قرار بگیرند باید تعریف متغیر names را به روش درست زیر انجام دهیم:
names := make([]string, 10)
در این نوع تعریف علاوهبر تعیین ظرفیت، طول حقیقی اسلایس نیز معین میشه تا از خطای رانتایم جلوگیری شود.
دقت کنید تعریف اسلایس با کلمه کلیدی var و تکرار روند بالا بازهم برنامه را با خطای index out of range روبرو خواهد کرد.
var ages []int
ages[1] = 29 // this line will fail with runtime error: index out of range [1] with length 0
#tip
#golang
⚡1🔥1😱1
#event
سلام دوستان
در نظر دارم تا اولین وبینار خصوصی برنامهنویسی cloudygo رو با موضوع «انقلاب در حوزه بکاند» برگزار کنم.
طبیعتا این رویداد رایگان، بهصورت آنلاین و در بستر گوگلمیت خواهد بود.
حد نصاب علاقمندان برای برگزاری ۷ نفر و حداکثر نفرات ۱۵ نفر خواهد بود که مسلما در آینده نفرات این وبینار از قابلیتهای پریمیوم کانال cloudygo بهصورت رایگان بهرهمند خواهند شد. (این پیام را برای دوستان برنامهنویس علاقمند خود ارسال کنید)
خواهشمندم در نظرسنجی زیر شرکت کنید تا بهتر بتونیم رویداد رو برگزار یا موقتا کنسل کنیم.
طبیعتا برای اینکه مسیر آموزشهای آینده هموار بشه همه ما باید با یک سری مفاهیم آشنا بشیم تا در زمان درست به یادگیری عمیق بپردازیم.
هدف از این وبینار شروع آشنایی و شرح موضوع درباره مباحث فنی زیر خواهد بود و مختص به یک زبان خاص نیست:
۰. توسعه با زبان گولنگ چرا و چگونه؟
۱. پروژههای بکاند، گیت و دیپلوی سنتی
۲. ریپازیتوری، داکر، پادمن، ریجیستری، کوبرنتیز
۳. دیپلوی و ci cd
۴. مقیاسپذیری چیست و چرا مهم است؟
۵. چطور بدانیم مشکل از کجاست؟
۶. ابزارهای کاربردی برای مدیریت بهتر
هدف من بعد از این وبینار، برگزاری جلسات آینده همراه با خروجی مؤثر و اجرای تکتک قسمتها در یک پروژه واقعی Golang خواهد بود.
سلام دوستان
در نظر دارم تا اولین وبینار خصوصی برنامهنویسی cloudygo رو با موضوع «انقلاب در حوزه بکاند» برگزار کنم.
طبیعتا این رویداد رایگان، بهصورت آنلاین و در بستر گوگلمیت خواهد بود.
حد نصاب علاقمندان برای برگزاری ۷ نفر و حداکثر نفرات ۱۵ نفر خواهد بود که مسلما در آینده نفرات این وبینار از قابلیتهای پریمیوم کانال cloudygo بهصورت رایگان بهرهمند خواهند شد. (این پیام را برای دوستان برنامهنویس علاقمند خود ارسال کنید)
خواهشمندم در نظرسنجی زیر شرکت کنید تا بهتر بتونیم رویداد رو برگزار یا موقتا کنسل کنیم.
طبیعتا برای اینکه مسیر آموزشهای آینده هموار بشه همه ما باید با یک سری مفاهیم آشنا بشیم تا در زمان درست به یادگیری عمیق بپردازیم.
هدف از این وبینار شروع آشنایی و شرح موضوع درباره مباحث فنی زیر خواهد بود و مختص به یک زبان خاص نیست:
۰. توسعه با زبان گولنگ چرا و چگونه؟
۱. پروژههای بکاند، گیت و دیپلوی سنتی
۲. ریپازیتوری، داکر، پادمن، ریجیستری، کوبرنتیز
۳. دیپلوی و ci cd
۴. مقیاسپذیری چیست و چرا مهم است؟
۵. چطور بدانیم مشکل از کجاست؟
۶. ابزارهای کاربردی برای مدیریت بهتر
هدف من بعد از این وبینار، برگزاری جلسات آینده همراه با خروجی مؤثر و اجرای تکتک قسمتها در یک پروژه واقعی Golang خواهد بود.
👏2👍1
در اولین وبینار خصوصی cloudygoشرکت میکنید؟ (زمان برگزاری بهزودی اعلام خواهد شد)
Final Results
80%
بلی
20%
خیر
❤2
#رویداد
#cloudygo
سلام
از همراهی همه شما بسیار ممنونم، این هفته بسیار سرم شلوغ بود!
رویداد Backend Evolution به همت شما، برگزار خواهد شد و در حال آمادهسازی سرفصلها هستم.
امروز بالاخره تونستم یک ساعت وقت بذارم و سایت کامیونیتی رو ایجاد کنم.
https://cloudygo.ir
سایت در آینده بخشهای مختلفی رو شامل خواهد شد و هدف من برگزاری رویدادهای live coding برای آموزش موضوعات مختلف از جمله:
Golang, CI/CD, Docker, Microservices, Kubernetes, Open Telemetry, ...
خواهد بود.
به زودی سرفصل رویداد و زمان برگزاری رو در اختیار شما خواهم گذاشت.
از امشب ثبت نام برای علاقمندان از طریق سایت امکان پذیر است.
#cloudygo
سلام
از همراهی همه شما بسیار ممنونم، این هفته بسیار سرم شلوغ بود!
رویداد Backend Evolution به همت شما، برگزار خواهد شد و در حال آمادهسازی سرفصلها هستم.
امروز بالاخره تونستم یک ساعت وقت بذارم و سایت کامیونیتی رو ایجاد کنم.
https://cloudygo.ir
سایت در آینده بخشهای مختلفی رو شامل خواهد شد و هدف من برگزاری رویدادهای live coding برای آموزش موضوعات مختلف از جمله:
Golang, CI/CD, Docker, Microservices, Kubernetes, Open Telemetry, ...
خواهد بود.
به زودی سرفصل رویداد و زمان برگزاری رو در اختیار شما خواهم گذاشت.
از امشب ثبت نام برای علاقمندان از طریق سایت امکان پذیر است.
👍2👏2
#رویداد
اولین وبینار کلودیگو با عنوان «تحول بکاند» برگزار خواهد شد.
سرفصلهای این وبینار بهصورت زیر خواهد بود:
۰. پروژههای بکاند، گیت و دیپلوی سنتی
۱. داکر، پادمن، کوبرنتیز
- بررسی داکر، پادمن، آموزش کانتینر کردن اپلیکیشن و یادگیری نحوه عملکرد کوبرنتیز
۲. میکروسرویسها و CI CD
- بررسی ماهیت میکروسرویسها و مقیاسپذیری، آموزش راهاندازی یک سرویس CI CD و دیپلوی خودکار
۳. گرفانا، پرمتئوس
- آموزش راهاندازی سرویس گرفانا و پرومتئوس برای مانیتورینگ سرویسهای مختلف
۴. گولنگ
- چرا توسعه با زبان گولنگ را یاد بگیریم؟
- مسیر آینده کلودیگو برای آموزش برنامهنویسی گولنگ با clean arch، میکروسرویس، کوبرنتیز
🗓 زمان برگزاری:
پنجشنبه ۱۰ آبان ۱۴۰۳
ساعت ۱۶:۰۰
پلتفرم: گوگلمیت
📝 ثبتنام:
https://cloudygo.ir
اولین وبینار کلودیگو با عنوان «تحول بکاند» برگزار خواهد شد.
سرفصلهای این وبینار بهصورت زیر خواهد بود:
۰. پروژههای بکاند، گیت و دیپلوی سنتی
۱. داکر، پادمن، کوبرنتیز
- بررسی داکر، پادمن، آموزش کانتینر کردن اپلیکیشن و یادگیری نحوه عملکرد کوبرنتیز
۲. میکروسرویسها و CI CD
- بررسی ماهیت میکروسرویسها و مقیاسپذیری، آموزش راهاندازی یک سرویس CI CD و دیپلوی خودکار
۳. گرفانا، پرمتئوس
- آموزش راهاندازی سرویس گرفانا و پرومتئوس برای مانیتورینگ سرویسهای مختلف
۴. گولنگ
- چرا توسعه با زبان گولنگ را یاد بگیریم؟
- مسیر آینده کلودیگو برای آموزش برنامهنویسی گولنگ با clean arch، میکروسرویس، کوبرنتیز
🗓 زمان برگزاری:
پنجشنبه ۱۰ آبان ۱۴۰۳
ساعت ۱۶:۰۰
پلتفرم: گوگلمیت
📝 ثبتنام:
https://cloudygo.ir
🔥2❤1
#رویداد
فردا پنجشنبه ۱۰ آبان ۱۴۰۳ ساعت ۱۶:۰۰ رویداد Backend Evolution کلودیگو برگزار خواهد شد و عزیزانی که ثبتنام کردهاند، لینک شرکت در رویداد براشون ارسال شده است.
ثبتنام در رویداد از دیشب به پایان رسیده و امیدارم در رویدادهای بعدی همراه ما باشید.
توضیحات:
با عرض پوزش، بهدلیل تداخل تایمزون سرور، ساعت رویداد در ایمیل یادآوری بهدرستی تنظیم نشده بود!
🗓 زمان برگزاری:
پنجشنبه ۱۰ آبان ۱۴۰۳
ساعت ۱۶:۰۰
پلتفرم: گوگلمیت
#cloudygo
#event
فردا پنجشنبه ۱۰ آبان ۱۴۰۳ ساعت ۱۶:۰۰ رویداد Backend Evolution کلودیگو برگزار خواهد شد و عزیزانی که ثبتنام کردهاند، لینک شرکت در رویداد براشون ارسال شده است.
ثبتنام در رویداد از دیشب به پایان رسیده و امیدارم در رویدادهای بعدی همراه ما باشید.
توضیحات:
با عرض پوزش، بهدلیل تداخل تایمزون سرور، ساعت رویداد در ایمیل یادآوری بهدرستی تنظیم نشده بود!
🗓 زمان برگزاری:
پنجشنبه ۱۰ آبان ۱۴۰۳
ساعت ۱۶:۰۰
پلتفرم: گوگلمیت
#cloudygo
#event
🔥2👏2⚡1
یک راهنمای خوب در خصوص نحوه افزایش Observability و Tracing
در برنامههای گولنگ با بررسی بررسی مموری، گوروتینها، تردها و...
https://github.com/DataDog/go-profiler-notes/blob/main/guide/README.md
#blog
#tip
در برنامههای گولنگ با بررسی بررسی مموری، گوروتینها، تردها و...
https://github.com/DataDog/go-profiler-notes/blob/main/guide/README.md
#blog
#tip
GitHub
go-profiler-notes/guide/README.md at main · DataDog/go-profiler-notes
felixge's notes on the various go profiling methods that are available. - DataDog/go-profiler-notes
👍5
#رویداد
فایل ارائه، تمامی کدها و بخشهایی که در وبینار Backend Evolution در موردش صحبت و ایجاد کردیم به تفکیک در ریپازیتوری زیر قرار گرفت. در هر قسمت میتوانید با خواندن فایل readme از اطلاعات مورد نیاز برای استفاده از کدها مطلع شوید.
https://github.com/rezakhademix/cloudygo
فایل ارائه، تمامی کدها و بخشهایی که در وبینار Backend Evolution در موردش صحبت و ایجاد کردیم به تفکیک در ریپازیتوری زیر قرار گرفت. در هر قسمت میتوانید با خواندن فایل readme از اطلاعات مورد نیاز برای استفاده از کدها مطلع شوید.
https://github.com/rezakhademix/cloudygo
👍6🙏2
این صفحه از سایت docker برای کسانی میخوان به زبان ساده در خصوص نحوه داکرایز انواع اپلیکیشنها با زبانهای مختلف اطلاعات کسب کنن، یه سری آموزش و راهنمایی گذاشته که همشون مختصر و به دور از حاشیه رفتن هستند.
همچنین در مورد دیپلوی با کوبرنتیز، swarm، کانتینر کردن دیتابیسها و... هم آموزشهای جالبی داره!
https://docs.docker.com/guides/
#blog
همچنین در مورد دیپلوی با کوبرنتیز، swarm، کانتینر کردن دیتابیسها و... هم آموزشهای جالبی داره!
https://docs.docker.com/guides/
#blog
Docker Documentation
Guides
Explore the Docker guides
👍4
این مقاله درخصوص نحوه تشخیص مموریلیکهایی (memroy leak) که در پروژههای بزرگ گولنگ ایجاد میشه صحبت میکنه و میگه چطور این مشکلات را پیدا کنیم.
https://www.freecodecamp.org/news/how-i-investigated-memory-leaks-in-go-using-pprof-on-a-large-codebase-4bec4325e192/
#blog
#tip
https://www.freecodecamp.org/news/how-i-investigated-memory-leaks-in-go-using-pprof-on-a-large-codebase-4bec4325e192/
#blog
#tip
freeCodeCamp.org
How I investigated memory leaks in Go using pprof on a large codebase
By Jonathan Levison I have been working with Go for the better part of the year, implementing a scalable blockchain infrastructure at Orbs, and it’s been an exciting year. Over the course of 2018, we researched on which language to choose for our blo...
👍4
اگه هنوز اینترفیسها در گولنگ براتون خوب جا نیفتاده، به مقاله زیر یه نگاهی بندازین!
https://www.calhoun.io/crash-course-on-go-interfaces/
#blog
#tip
https://www.calhoun.io/crash-course-on-go-interfaces/
#blog
#tip
Calhoun.io
Crash Course on Go Interfaces - Calhoun.io
Interfaces in Go are going to be a foreign concept to many developers. For many, they will be coming from dynamic languages where interfaces aren't necessary, and for the devs coming from languages like Java they will have to drastically adjust their mind
👏1🙏1👨💻1
گولنگ ۱.۲۴ در ماه فوریه ۲۰۲۵ ارائه میشه و بالاخره توسعههندگان تصمیم گرفتن تگ omitzero رو برای پکیج encoding/json فعال کنن و از این به بعد با نوشتن این تگ علاوه بر مقادیر پیشفرض، استراکچرهای خالی هم حذف میشن!
در ورژنهای فعلی گولنگ تگ omitempty رو داشتیم اما تنها فیلدهای با مقادیر پیش فرض رو حذف میکرد.
یه نگاه به نمونه کد زیر بندازین تا بیشتر موضوع روشن بشه:
تگ omitempty استراکچر درونی Posts رو حذف نمیکنه و فقط فیلدهای Name و Tags رو به شرطی حذف میکنه که مقدار پیشفرض گولنگی خودشون رو داشته باشن.
برای اینکه این مقادیر رو حذف کنید باید اینترفیس marshaler رو خودتون برای استراکت پیادهسازی کنید اما با ورژن ۱.۲۴ با تگ omitzero استراکتهای خالی به شکل خودکار حذف میشن.
لینک ریلیز ۱.۲۴ گولنگ برای جزییات بیشتر:
https://tip.golang.org/doc/go1.24
#tip
#golang
در ورژنهای فعلی گولنگ تگ omitempty رو داشتیم اما تنها فیلدهای با مقادیر پیش فرض رو حذف میکرد.
یه نگاه به نمونه کد زیر بندازین تا بیشتر موضوع روشن بشه:
type Blog struct {
Name string `json:"omitempty"`
Tags []string `json:"omitempty"`
Posts Posts `json:"omitempty"`
}تگ omitempty استراکچر درونی Posts رو حذف نمیکنه و فقط فیلدهای Name و Tags رو به شرطی حذف میکنه که مقدار پیشفرض گولنگی خودشون رو داشته باشن.
برای اینکه این مقادیر رو حذف کنید باید اینترفیس marshaler رو خودتون برای استراکت پیادهسازی کنید اما با ورژن ۱.۲۴ با تگ omitzero استراکتهای خالی به شکل خودکار حذف میشن.
type Blog struct {
Name string `json:"omitzero"`
Tags []string `json:"omitzero"`
Posts Posts `json:"omitzero"`
}لینک ریلیز ۱.۲۴ گولنگ برای جزییات بیشتر:
https://tip.golang.org/doc/go1.24
#tip
#golang
👏5
تفسیر کردن آبجکتهای json در همه زبانهای برنامهنویسی میتونه مثل حرکت کردن در یک میدان مین باشه! 💣
اگر تا حالا در این حوزه عمیق نشدین حتما یه سر به مقاله زیر بزنید که در مورد موضوعات بسیار جالبی در خصوص parse کردن آبجکتهای json صحبت میکنه.
Parsing Json Is A Minefield
#blog
#tip
#deep
اگر تا حالا در این حوزه عمیق نشدین حتما یه سر به مقاله زیر بزنید که در مورد موضوعات بسیار جالبی در خصوص parse کردن آبجکتهای json صحبت میکنه.
Parsing Json Is A Minefield
#blog
#tip
#deep
⚡2👍2
این داستان: وقتی خودمون با دست خودمون N+1 میسازیم!
یکی از مهمترین موضوعات زمانی که داریم اطلاعات رو از دیتابیس میخونیم، هزینههای پنهانی هستش که خودمون در هنگام نوشتن کوئری ایجاد میکنیم و حواسمون نیست. به کوئری زیر دقت و فرض کنید اپلیکیشنی مشابه اینستاگرام داریم و میخوایم خیلی ساده در یک کوئری پستها و تعداد لایکها رو از دیتابیس فراخوانی کنیم.
اگر با بعضی واژهها در کوئری بالا آشنا نیستید مهم نیست، هدف ما بررسی سابکوئری:
سابکوئری بالا رو میشه با روشهای دیگهای هم نوشت و تقریبا همه ما عادت کردیم در بسیاری از موارد وقتی میخوایم دیتایی مرتبط با نتایج مورد نظرمون از جدولهای دیگه فراخوانی کنیم سریعا سراغ سابکوئریها بریم.
اما باید دقت کنیم که این سابکوئریها در دل خودشون یک N+1 ایجاد میکنن و به ازای تکتک ریفهایی که فراخوانی کردیم، تکرار میشن و بهراحتی ما رو در رکوردهای بالا دچار مشکل میکنن!
راهحل چنین موضوعاتی استفاده از pre aggregating و CTE هستش.
بهتره در چنین مواقعی با استفاده از WITH در PostgreSQL یا MySQL یا MariaDB از تکرار کوئریها بهصورت پنهان در Joinها جلوگیری کنیم. نسخه اصلاح شده کوئری:
کوئری بالا هم خوانایی بیشتری داره و هم پرفورمنس بهتری! کاری که هیچ ORM درکی از انجامش نداره!
#episode_0
#story
#tip
یکی از مهمترین موضوعات زمانی که داریم اطلاعات رو از دیتابیس میخونیم، هزینههای پنهانی هستش که خودمون در هنگام نوشتن کوئری ایجاد میکنیم و حواسمون نیست. به کوئری زیر دقت و فرض کنید اپلیکیشنی مشابه اینستاگرام داریم و میخوایم خیلی ساده در یک کوئری پستها و تعداد لایکها رو از دیتابیس فراخوانی کنیم.
SELECT
posts.id,
posts.caption,
posts.content_url,
COALESCE(
(
SELECT COUNT(*)
FROM post_reactions
WHERE post_reactions.post_id = posts.id
),
0
) AS reactions_count
FROM
posts LEFT JOIN post_reactions ON post_reactions.post_id = posts.id
اگر با بعضی واژهها در کوئری بالا آشنا نیستید مهم نیست، هدف ما بررسی سابکوئری:
SELECT COUNT(*)
FROM post_reactions
WHERE post_reactions.post_id = posts.id
سابکوئری بالا رو میشه با روشهای دیگهای هم نوشت و تقریبا همه ما عادت کردیم در بسیاری از موارد وقتی میخوایم دیتایی مرتبط با نتایج مورد نظرمون از جدولهای دیگه فراخوانی کنیم سریعا سراغ سابکوئریها بریم.
اما باید دقت کنیم که این سابکوئریها در دل خودشون یک N+1 ایجاد میکنن و به ازای تکتک ریفهایی که فراخوانی کردیم، تکرار میشن و بهراحتی ما رو در رکوردهای بالا دچار مشکل میکنن!
راهحل چنین موضوعاتی استفاده از pre aggregating و CTE هستش.
بهتره در چنین مواقعی با استفاده از WITH در PostgreSQL یا MySQL یا MariaDB از تکرار کوئریها بهصورت پنهان در Joinها جلوگیری کنیم. نسخه اصلاح شده کوئری:
WITH
reaction_counts AS (
SELECT post_id, COUNT(*) AS reactions_count
FROM post_reactions
GROUP BY
post_id
),
SELECT
posts.id,
posts.caption,
posts.content_url,
reaction_counts.reactions_count
FROM
LEFT JOIN reaction_counts ON reaction_counts.post_id = posts.id
کوئری بالا هم خوانایی بیشتری داره و هم پرفورمنس بهتری! کاری که هیچ ORM درکی از انجامش نداره!
#episode_0
#story
#tip
🔥3❤1
یکی از بهترین روشها برای اینکه عملکرد کدهاتون رو بهتر کنید اینه که بنچمارکهای مختلفی روی کد مورد نظرتون اجرا کنید تا مشخص بشه چه قسمتهایی باید بهبود پیدا کنن.
مقاله زیر توضیحات کاملی در خصوص بنچمارک کدهای گولنگی بیان کرده و هر بخش رو با مثال شفافتر کرده!
از زمانی که وارد توسعه با گولنگ شدم همیشه از کدها بنچمارک میگیرم و هربار شگفت زده میشم که تغییرات کوچیک چقدر میتونه سرعت اجرا و بهینه بودن کدها را بیشتر کنه. مقاله زیر رو بخونید خالی از لطف نیست.
https://stackademic.com/blog/profiling-go-applications-in-the-right-way-with-examples
#tip
#bench
مقاله زیر توضیحات کاملی در خصوص بنچمارک کدهای گولنگی بیان کرده و هر بخش رو با مثال شفافتر کرده!
از زمانی که وارد توسعه با گولنگ شدم همیشه از کدها بنچمارک میگیرم و هربار شگفت زده میشم که تغییرات کوچیک چقدر میتونه سرعت اجرا و بهینه بودن کدها را بیشتر کنه. مقاله زیر رو بخونید خالی از لطف نیست.
https://stackademic.com/blog/profiling-go-applications-in-the-right-way-with-examples
#tip
#bench
Stackademic
Profiling Go Applications in the Right Way with Examples
👍4
اگر در اپلیکیشنی که دارید زیاد از time.Time استفاده میکنید میتونید با استفاده از ایجاد یک تایپ دلخواه و استفاده int64 میزان مصرف مموری رو تا حد قابل قبولی کاهش بدید و پرفورمنس رو بهتر کنید. به مثال زیر دقت کنید:
#tip
#golang
type Timestamp int64
func (t Timestamp) Time() time.Time {
return time.Unix(int64(t), 0)
}
#tip
#golang
👍3
مقاله زیر به ما آموزش میده چطور 1,000,000 رکورد دیتا رو در 4 ثانیه در PostgreSQL ذخیره کنیم!
https://www.timescale.com/learn/testing-postgres-ingest-insert-vs-batch-insert-vs-copy?ref=timescale.com
#tip
#postgresql
#database
https://www.timescale.com/learn/testing-postgres-ingest-insert-vs-batch-insert-vs-copy?ref=timescale.com
#tip
#postgresql
#database
👏5
در سالهای اخیر مسیر شغلی DevOps خیلی جدیتر داره دنبال میشه و در مقیاس کلی هم تغییرات زیادی به خودش دیده.
معمولا roadmapهای متفاوتی برای این مسیر بیان میشه که یکی از جالبترینها، ریپازیتوری 90DaysDevOps هستش.
این ریپازیتوری 27K استار داره و توسط خود کامیونیتی DevOps در خصوص مسیر یادگیری، قوانین، ابزارها و... ویدیوهای آموزشی و محتوای قابل قبولی داره و هر سال هم بهروز میشه.
https://github.com/MichaelCade/90DaysOfDevOps/tree/main
#devops
#github
معمولا roadmapهای متفاوتی برای این مسیر بیان میشه که یکی از جالبترینها، ریپازیتوری 90DaysDevOps هستش.
این ریپازیتوری 27K استار داره و توسط خود کامیونیتی DevOps در خصوص مسیر یادگیری، قوانین، ابزارها و... ویدیوهای آموزشی و محتوای قابل قبولی داره و هر سال هم بهروز میشه.
https://github.com/MichaelCade/90DaysOfDevOps/tree/main
#devops
#github
👍4🔥2
اگر هنوز یه quick start خوب برای یادگیری پرومتئوس و گرافانا پیدا نکردین یه نگاهی به ریپازیتوری زیر بندازین.
این ریپازیتوری 4.4k استار داره و علاوه بر داکرایز کردن، در خصوص هشدارها (alerts) و دیپلوی کردن هم نکات اولیه رو به سادگی بیان میکنه.
https://github.com/vegasbrianc/prometheus?tab=readme-ov-file
#github
این ریپازیتوری 4.4k استار داره و علاوه بر داکرایز کردن، در خصوص هشدارها (alerts) و دیپلوی کردن هم نکات اولیه رو به سادگی بیان میکنه.
https://github.com/vegasbrianc/prometheus?tab=readme-ov-file
#github
👍4👏1
اگر در گیتهاب فعالیت میکنید میتونید با وارد شدن به لینک زیر خلاصهای از فعالیتهاتون رو زیر ذرهبین ببرین!
https://githubunwrapped.com/
#fun
#github
https://githubunwrapped.com/
#fun
#github
Githubunwrapped
#GitHubUnwrapped - Your coding year in review
Get your personalized video of your GitHub activity in 2025.
👍3