🤩Сборка мусора, модульное тестирование и горутины сделали Go лучшим выбором для Krater, кроссплатформенного приложения для локальной отладки приложений Laravel (да, тот самый PHP-фреймворк).
🤔Несколько месяцев назад разработчики Krater решили мигрировать на Wails (Go), хотя изначально он был написан на Tauri (Rust). Под катом — опыт команды и предпосылки такого решения👇
🔗 Читать
🤔Несколько месяцев назад разработчики Krater решили мигрировать на Wails (Go), хотя изначально он был написан на Tauri (Rust). Под катом — опыт команды и предпосылки такого решения👇
🔗 Читать
blog.moonguard.dev
Why Golang instead of Rust to develop the Krater desktop app | MoonGuard - Web Monitoring Tools
We talk about our experience developing Krater in Rust and why we decided to migrate Krater from Rust to Golang. From Tauri to Wails plus the addition of prioritizing comfort and development experience when creating products.
👍15🔥1
Обнаружение утечек памяти в Go-приложении: лучшие практики и инструменты
Обзор инструментов, которые вы можете использовать для отслеживания утечек памяти, включая утечки в горутинах.
👉 Читать
Обзор инструментов, которые вы можете использовать для отслеживания утечек памяти, включая утечки в горутинах.
👉 Читать
👍15😁3🥱1
❔ Результаты ежегодного опроса разработчиков StackOverflow: 20+ главных инсайтов 2023 года
В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.
🔗 Читать статью
🔗 Зеркало
В данной статье мы собрали 20+ главных инсайтов, которые помогут лучше понять, что происходит в ИТ-сфере в мире.
🔗 Читать статью
🔗 Зеркало
🥱3👍2🔥1
🤔Динамика закрытия пулл-реквестов, прирост кодовой базы, активность разработчиков по часам и по дням недели и многое другое... Что только не придумают для оценки производительности разработчика.
💬А в вашей команде есть метрики оценки личной производительности? Если да, то какие и как они измеряются?
#холивар
💬А в вашей команде есть метрики оценки личной производительности? Если да, то какие и как они измеряются?
#холивар
📌Go Time
🎤 Опыт, полученный на GopherCon 2023: как организатора, ведущего воркшопов и докладчика
🎤 Семь смертных грехов Gо: по мотивам доклада John Gregory на GopherCon "7 Deadly Gopher Sins"
🎤 Что нового в криптографических библиотеках Go: Filippo Valsorda и Roland Shoemaker из команды Go делятся новостями старой доброй криптографии
📌Cup o' Go
🎤 Gopls 0.14 с включенной телеметрией уже скоро и многое другое
🎤 range over int & range over func в деталях и многое другое
🎤 Интервью с мейнтейнером testcontainers и многое другое
#подкасты
🎤 Опыт, полученный на GopherCon 2023: как организатора, ведущего воркшопов и докладчика
🎤 Семь смертных грехов Gо: по мотивам доклада John Gregory на GopherCon "7 Deadly Gopher Sins"
🎤 Что нового в криптографических библиотеках Go: Filippo Valsorda и Roland Shoemaker из команды Go делятся новостями старой доброй криптографии
📌Cup o' Go
🎤 Gopls 0.14 с включенной телеметрией уже скоро и многое другое
🎤 range over int & range over func в деталях и многое другое
🎤 Интервью с мейнтейнером testcontainers и многое другое
#подкасты
👍5
How to Generate Unique IDs in Distributed Systems.pdf
9.1 MB
Как генерировать уникальные идентификаторы в распределенных системах: 6 ключевых стратегий
В распределенном окружении два узла могут одновременно назначать идентификаторы. Задача состоит в том, чтобы эти идентификаторы оставались уникальными, избегая дублирования и обеспечивая согласованность системы. Читайте подробнее на Medium или в PDF:
◆ UUID
◆ NanoID
◆ Sequence
◆ ObjectID
◆ Twitter Snowflake
◆ Sonyflake
В распределенном окружении два узла могут одновременно назначать идентификаторы. Задача состоит в том, чтобы эти идентификаторы оставались уникальными, избегая дублирования и обеспечивая согласованность системы. Читайте подробнее на Medium или в PDF:
◆ UUID
◆ NanoID
◆ Sequence
◆ ObjectID
◆ Twitter Snowflake
◆ Sonyflake
👍16
⚡️С выпуском версии 9.3.0 официальный клиент Redis делает большой шаг вперед благодаря прямой поддержке JSON
📌Простой пример того, как начать работу с JSON в Go-Redis:
#новости #инструменты
📌Простой пример того, как начать работу с JSON в Go-Redis:
var ctx = context.Background()
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
type Bicycle struct {
Brand string
Model string
Price int
}
bicycle := Bicycle{
Brand: "Velorim",
Model: "Jigger",
Price: 270,
}
_, err := client.JSONSet(ctx, "bicycle:1", "$", bicycle).Result()
if err != nil {
panic(err)
}
res, err := client.JSONGet(ctx, "bicycle:1", ".Model").Result()
if err != nil {
panic(err)
}
fmt.Println("bicycle:1 model is", res)
#новости #инструменты
GitHub
Release 9.3.0 · redis/go-redis
What's new?
JSON support
We are continuing to add support for more Redis data types in Go-Redis. Today, we are happy to announce support for JSON. JSON is a Redis data structure for storing, qu...
JSON support
We are continuing to add support for more Redis data types in Go-Redis. Today, we are happy to announce support for JSON. JSON is a Redis data structure for storing, qu...
👍50🔥8🎉5❤3🥱1
Какие меры вы принимаете для предотвращения или борьбы с профессиональным выгоранием? Можно выбрать несколько вариантов.
Anonymous Poll
13%
У меня нет проблем с выгоранием
26%
Регулярные перерывы в течение рабочего дня
32%
Хобби и интересы вне работы
30%
Регулярные занятия спортом или физическая активность
5%
Медитация
20%
Постановка чётких границ между работой и личной жизнью
16%
Смена проектов или области деятельности внутри ИТ для восстановления интереса и мотивации
15%
Пет-проекты
1%
Свой вариант (напишу в комментариях)
28%
Посмотреть результаты
👍2❤1
Goroutine_Scheduler_Revealed_You’ll_Never_See_Goroutines_the_Same.pdf
7.2 MB
Подводные камни конкурентности: серия статей для Go-разработчика с простыми и наглядными примерами
⚡Горутины: основы
⚡Каналы: введение
⚡Каналы: select & for range
⚡Планировщик горутин
⚡Горутины: основы
⚡Каналы: введение
⚡Каналы: select & for range
⚡Планировщик горутин
👍11🔥1
Хотите готовиться к собеседованию по Go и не только на реальных примерах? Тогда пост ниже для вас👇
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🙇♂️Коллекция тестовых заданий для самостоятельного выполнения от разных ИТ-компаний, собранная сообществом вместе с командой Хекслет: маст-хэв при подготовке к собесу.
🔗 GitHub
🔗 GitHub
👍15
🥳Сегодня четырнадцатый день рождения релиза Go с открытым исходным кодом: за плечами у команды Go и сообщества два полнофункциональных релиза и другие важные фичи
☑️Выпуски Go 1.20 в феврале и Go 1.21 в августе
☑️Завезли profile-guided optimization и встроенное управление тулчейном
☑️Добавлена поддержка сбора профилей покрытия в бинарных сборках, созданных go build
☑️Совместимость еще больше улучшена за счет расширения соглашений об использовании GODEBUG
☑️Новый пакет структурированного логирования и многие другие изменения стандартной библиотеки
👉 Подробнее в статье Расса Кокса
☑️Выпуски Go 1.20 в феврале и Go 1.21 в августе
☑️Завезли profile-guided optimization и встроенное управление тулчейном
☑️Добавлена поддержка сбора профилей покрытия в бинарных сборках, созданных go build
☑️Совместимость еще больше улучшена за счет расширения соглашений об использовании GODEBUG
☑️Новый пакет структурированного логирования и многие другие изменения стандартной библиотеки
👉 Подробнее в статье Расса Кокса
go.dev
Fourteen Years of Go - The Go Programming Language
Happy Birthday, Go!
🎉29👍3
Гайд по разработке системы уведомлений в реальном времени с помощью Go + Kafka:
• Что такое Kafka?
• Как настроить рабочее пространство проекта?
• Как создать модели пользователя и уведомлений?
• Как настроить Kafka producer?
• Как настроить Kafka consumer?
• Тестирование проекта
👉 Читать
• Что такое Kafka?
• Как настроить рабочее пространство проекта?
• Как создать модели пользователя и уведомлений?
• Как настроить Kafka producer?
• Как настроить Kafka consumer?
• Тестирование проекта
👉 Читать
👍16❤2😁1
🔍Статические SQL-запросы часто оказываются недостаточными при необходимости создания условных запросов, а разработка динамических запросов в Go требует глубоких знаний SQL и тонкостей работы с языком.
🤔Проблемы включают предотвращение SQL-инъекций, использование параметризованных запросов, управление сложностью запросов, оптимизацию производительности и поддержание читаемости кода.
📚В статье рассмотрены стратегии и библиотеки, предназначенные для решения этих проблем, и представлена новая библиотека под названием tqla, которая использует пакет text/template для безопасной генерации динамических условных SQL-запросов.
👉 GitHub
🤔Проблемы включают предотвращение SQL-инъекций, использование параметризованных запросов, управление сложностью запросов, оптимизацию производительности и поддержание читаемости кода.
📚В статье рассмотрены стратегии и библиотеки, предназначенные для решения этих проблем, и представлена новая библиотека под названием tqla, которая использует пакет text/template для безопасной генерации динамических условных SQL-запросов.
t, err := tqla.New(tqla.WithPlaceHolder(tqla.Dollar), tqla.WithFuncMap(exampleFuncs))
if err != nil {
return err
}
insertStmt, insertArgs, err:= t.Compile(`{{ $length := sub ( len . ) 1 }}
INSERT INTO 'todos' ('id', 'title', 'description', 'completed', 'created_at')
VALUES {{ range $i, $v := . }}
( {{$v.Id}}, {{$v.Title}}, {{$v.Description}}, {{ $v.Complete }}, {{ $v.CreatedAt }} ){{if lt $i $length}},{{else}};{{end -}}
{{end}}`, todos)
if err != nil {
return err
}
_, err := db.Exec(insertStmt, insertArgs...)
👉 GitHub
Vaunt | Blog
Golang Dynamic SQL Templating
Learn how to build dynamic SQL queries in Golang leveraging a new open-source library called tqla developed by Vaunt.
🔥6👍3❤2🌚1
🔧NilAway — инструмент статического анализа для обнаружения потенциальных nil-паник в коде на Go, который позволяет ловить их во время компиляции, а не во время выполнения.
🤩Команда Uber постаралась, сделав похожий на nilness инструмент с гораздо более сложными и мощными методами статического анализа для отслеживания потоков nil как внутри пакета, так и между пакетами.
Результат👇
🤩Команда Uber постаралась, сделав похожий на nilness инструмент с гораздо более сложными и мощными методами статического анализа для отслеживания потоков nil как внутри пакета, так и между пакетами.
var p *P
if someCondition {
p = &P{}
}
print(p.f)
Результат👇
go.uber.org/example.go:12:9: error: Potential nil panic detected. Observed nil flow from source to dereference point:
-> go.uber.org/example.go:12:9: unassigned variable p accessed field f
GitHub
GitHub - uber-go/nilaway: Static analysis tool to detect potential nil panics in Go code
Static analysis tool to detect potential nil panics in Go code - uber-go/nilaway
👍45🔥2😁1
Разработка высокопроизводительного синтаксического анализатора JSON: от теории к практике
Создать синтаксический анализатор JSON непросто, а создать быстрый — еще сложнее. В выступлении на GopherCon Signapore 2023 Дэйв Чейни демонстрирует, как написать высокопроизводительный синтаксический анализатор JSON. Ниже — сценарий выступления, превращенный в статью в блоге.
👉 Читать
Создать синтаксический анализатор JSON непросто, а создать быстрый — еще сложнее. В выступлении на GopherCon Signapore 2023 Дэйв Чейни демонстрирует, как написать высокопроизводительный синтаксический анализатор JSON. Ниже — сценарий выступления, превращенный в статью в блоге.
👉 Читать
dave.cheney.net
Building a high performance JSON parser
👍5