این صفحه از سایت 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
Profiling is an essential technique for analyzing applications and identifying bottlenecks hindering the application’s performance.
👍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 2024.
👍3
#github_unwrapped
برای من جالبتر از چیزی بود که فکر میکردم :)
#110 pull request
#814 contribution
پرکارترین روز هفته #دوشنبه
برای من جالبتر از چیزی بود که فکر میکردم :)
#110 pull request
#814 contribution
پرکارترین روز هفته #دوشنبه
⚡1👨💻1
این مقاله از وبسایت مهندسای RisingWave نکات جالبی داره و خیلی شفاف بیان میکنه چرا تصمیم گرفتن etcd رو بذارن کنار و از PostgreSQL برای مدیریت بهتر metadata استفاده کنن.
در واقع RisingWave یک سیستم متنباز Continuous Analytics و ETL pipeline و Event management هستش.
خیلی جالبه که اعلام میکنند با این جابهجایی دیکه سیستمشون از latency پایین و خوبی که با etc داشتن بهره نمیبره اما با پوستگرس تونستن مسائلی مثل: scaleability و developer friendly بودن رو بخاطر ابزارهای بیشتر در حوزه cloud با کیفیت بهتری داشته باشند.
مقاله:
https://risingwave.com/blog/risingwave-replaces-etcd-postgres/
لینک گیتهاب RisingWave:
https://github.com/risingwavelabs/risingwave
#story
#database
#PostgreSQL
در واقع RisingWave یک سیستم متنباز Continuous Analytics و ETL pipeline و Event management هستش.
خیلی جالبه که اعلام میکنند با این جابهجایی دیکه سیستمشون از latency پایین و خوبی که با etc داشتن بهره نمیبره اما با پوستگرس تونستن مسائلی مثل: scaleability و developer friendly بودن رو بخاطر ابزارهای بیشتر در حوزه cloud با کیفیت بهتری داشته باشند.
مقاله:
https://risingwave.com/blog/risingwave-replaces-etcd-postgres/
لینک گیتهاب RisingWave:
https://github.com/risingwavelabs/risingwave
#story
#database
#PostgreSQL
Why We Ditched etcd for SQL to Scale RisingWave's Metadata
Explore RisingWave's journey from etcd to a Postgres meta store. We detail the challenges, trade-offs, and how this move unlocked new levels of scalability
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
پکیج go-tmpl بهتون این امکان رو میده خیلی ساده کدهای گولنگ رو با HTML ترکیب کنید. هرچند که خود استانداد لایبرری گولنگ از این موضوع پشتیبانی میکنه اما خب این پکیج امکانات جالبی داره که در ویدیو بالا میتونید ببینید.
https://github.com/a-h/templ
#golang
#packge
https://github.com/a-h/templ
#golang
#packge
👍6
گزارش سالانه اکوسیستم برنامهنویسان سایت jetbrains برای سال ۲۰۲۴ منتشر شد.
🥇جاوااسکریپت در صدر
🥈پایتون در جایگاه دوم
🏆 گولنگ بیشترین زبان مورد استفاده برای وبسرویسها
🏆 گولنگ بیشترین زبان مورد استفاده در حوزه cloud
https://www.jetbrains.com/lp/devecosystem-2024/
#blog
🥇جاوااسکریپت در صدر
🥈پایتون در جایگاه دوم
🏆 گولنگ بیشترین زبان مورد استفاده برای وبسرویسها
🏆 گولنگ بیشترین زبان مورد استفاده در حوزه cloud
https://www.jetbrains.com/lp/devecosystem-2024/
#blog
JetBrains: Developer Tools for Professionals and Teams
Software Developers Statistics 2024 - State of Developer Ecosystem Report
Explore key software developer statistics for 2024 in the State of Developer Ecosystem Report. Trends, insights, and tools shaping the developer world
❤1
تمام تغییرات زبان گولنگ در نسخه 1.24 رو در لینک زیر مشاهده و اجرا کنید!
لینک زیر یک محیط تعاملی برای درک بهتر قابلیتهای Golang در ورژن 1.24 است.
https://antonz.org/go-1-24/
#golang
#tip
لینک زیر یک محیط تعاملی برای درک بهتر قابلیتهای Golang در ورژن 1.24 است.
https://antonz.org/go-1-24/
#golang
#tip
antonz.org
Go 1.24 interactive tour
Weak pointers, faster maps, directory-scoped access, and more.
👏2⚡1
همانطور که میدونید، همه ما میتونیم براساس نیازمون یک یا چند extension روی دیتابیس پوستگرس نصب کنیم. افزونههایی برای ایندکس کردن، mask کردن دیتاهای حساس و... اما خب همین افزونهها ممکنه در آینده باعث سردرد بشن. پکیج Pig با زبان گولنگ نوشته شده و یک extension manager خیلی ساده و خوب برای نصب و بهروزرسانی و مدیریت افزونههای PostgreSQL هست.
https://github.com/pgsty/pig
#tip
#database
#PostgreSQL
https://github.com/pgsty/pig
#tip
#database
#PostgreSQL
GitHub
GitHub - pgsty/pig: PostgreSQL Extension Manager
PostgreSQL Extension Manager. Contribute to pgsty/pig development by creating an account on GitHub.
👍2👏1
#teach_me_live
دوره آموزش برنامهنویسی گولنگ، از مقدماتی تا پیشرفته بهصورت جلسات live coding و پروژه محور
سرفصلها و جزییات بخشهای دوره:
https://cloudygo.ir/register
دوره آموزش برنامهنویسی گولنگ، از مقدماتی تا پیشرفته بهصورت جلسات live coding و پروژه محور
سرفصلها و جزییات بخشهای دوره:
https://cloudygo.ir/register
👍2🔥1