داکرایز کردن الستیک 🫎 نکات ریز خودش رو داره اما ریپازیتوری docker elk میتونه در این پروسه کمکتون کنه تا راحتتر به هدفتون برسید.
#docker
#elk
#docker
#elk
GitHub
GitHub - deviantony/docker-elk: The Elastic stack (ELK) powered by Docker and Compose.
The Elastic stack (ELK) powered by Docker and Compose. - deviantony/docker-elk
👍1
این مقاله دید جالبی در رابطه با دیپلوی کردن سرویسهای داکری مطرح میکنه و دوباره موضوع مهم تگ زدن رو برامون یادآوری میکنه تا راحتتر بتونیم رولبک و از مشکلات احتمالی جلوگیری کنیم
#blog
#blog
Smartinary LLC
Why you should use immutable Docker tags
Many companies use tags such as for images of their Docker-based services. Those tags are usually automatically updated to point at the most recently built…
👏2👍1
#blog
شما با postgresql میتونید لاگ تغییرات جدولها رو داشته باشید و به صورت خودکار تمام تغییرات رو لاگ کنید. البته برای سیستمهای زیر بار یا اینترپرایز پیشنهاد نمیشه و راهحلهای بهتری هست اما این مقاله رو به این خاطر بخونید که بیشتر با postgresql و قابلیتهاش آشنا بشید.
https://www.cybertec-postgresql.com/en/tracking-changes-in-postgresql/
شما با postgresql میتونید لاگ تغییرات جدولها رو داشته باشید و به صورت خودکار تمام تغییرات رو لاگ کنید. البته برای سیستمهای زیر بار یا اینترپرایز پیشنهاد نمیشه و راهحلهای بهتری هست اما این مقاله رو به این خاطر بخونید که بیشتر با postgresql و قابلیتهاش آشنا بشید.
https://www.cybertec-postgresql.com/en/tracking-changes-in-postgresql/
CYBERTEC PostgreSQL | Services & Support
Tracking changes in PostgreSQL
UPDATED 2023 - How to track changes made to tables in PostgreSQL - instructions how to use a generic changelog trigger for tracking changes.
⚡2
#blog
#tip
نحوه نوشتن کدها در گولنگ یا همان code style guide یکی از بحثهای مهم هستش که گاها بهش کم توجه میشه.
اینکه شما باید متغیرها رو در نزدیک جایی که مورد استفاده قرار میگیرن، تعریف کنید یا شروع کردن لاگ یا پرینت با حروف بزرگ یک bad practice محسوب میشه.
این مقاله لیست کل قانونهایی که خود گوگل برای بهتر و خواناتر نوشتن گولنگ منتشر کرده و خوندنش خالی از لطف نیست.
https://google.github.io/styleguide/go/best-practices
#tip
نحوه نوشتن کدها در گولنگ یا همان code style guide یکی از بحثهای مهم هستش که گاها بهش کم توجه میشه.
اینکه شما باید متغیرها رو در نزدیک جایی که مورد استفاده قرار میگیرن، تعریف کنید یا شروع کردن لاگ یا پرینت با حروف بزرگ یک bad practice محسوب میشه.
fmt.Sprintf("Here is a bad practice: %s", "don't do this")
fmt.Sprintf("here is a good practice: %s", "do this!")این مقاله لیست کل قانونهایی که خود گوگل برای بهتر و خواناتر نوشتن گولنگ منتشر کرده و خوندنش خالی از لطف نیست.
https://google.github.io/styleguide/go/best-practices
👍3👏1
#blog
#tip
این مقاله از techblog تیندر در مورد نحوه طراحی APIهای خودشون صحبت میکنه و سناریوهایی رو میگه که هممون تجربه کردیم. مثلا همیشه میدونیم واکشی اطلاعات با متد GET انجام میشه اما در برخی اوقات نیاز داریم از متد POST استفاده کنیم. اگه وقت کردین بخونیدش نکات ریز جالبی داره و خالی از لطف نیست.
https://medium.com/tinder/tinder-api-style-guide-part-1-081804a7ef40
#tip
این مقاله از techblog تیندر در مورد نحوه طراحی APIهای خودشون صحبت میکنه و سناریوهایی رو میگه که هممون تجربه کردیم. مثلا همیشه میدونیم واکشی اطلاعات با متد GET انجام میشه اما در برخی اوقات نیاز داریم از متد POST استفاده کنیم. اگه وقت کردین بخونیدش نکات ریز جالبی داره و خالی از لطف نیست.
https://medium.com/tinder/tinder-api-style-guide-part-1-081804a7ef40
Medium
Tinder API Style Guide — Part 1
Authored by: Nishant Mittal
⚡2👏1
#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