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
📊 Егор Толстой и Анна Симонова опросили 500 Go-разработчиков и узнали много интересного: для каких задач используют Go, насколько часто применяют дженерики, какие инструменты в арсенале. А кроме этого, собрали большой список самых полезных книг, курсов, подкастов и Telegram-каналов.
📌Основные тезисы:
◆ Большинство участников опроса оценивают свой уровень как Middle и Senior.
◆ До Middle Go-разработчик обычно растет 1-2 года, а тимлидом может стать уже через 3.
◆ В основном Golang применяется в продуктовой разработке на проектах большого масштаба.
◆ Большинство пришло в Go из других ЯП. Среди неожиданных профессий: кладовщик, нефтяник, врач и музыкант. 17% Go‑разработчиков начали свою карьеру в IT сразу с Golang. Чаще всего в Golang приходят из Python и PHP.
◆ Для большинства опрошенных Go — основной язык программирования.
◆ Почти половина опрошенных в качестве второго регулярно используемого языка выбирают Python. А треть — JavaScript.
◆ Половина опрошенных переписывала сервисы на Go с других языков. В основном с PHP.
◆ Подавляющее большинство опрошенных используют Go для микросервисов.
◆ Основная IDE для работы — GoLand / IntelliJ IDEA.
◆ Больше половины Go-разработчиков работают с macOS.
◆ Абсолютное большинство готово использовать Go не только для работы, но и для написания пет‑проектов.
◆ Вне зависимости от грейда, Go‑разработчики заинтересованы в прокачке знаний по архитектуре и распределенным системам.
◆ Дженерики ждали все, а в итоге регулярно используют только 10% разработчиков.
◆ Каждый пятый Go-разработчик ждет того часа, когда в языке оптимизируют процесс обработки ошибок.
◆ Лишь треть опрошенных пользуется AI‑инструментами на регулярной основе.
◆ Основные источники знаний для большинства Go-разработчиков — это чтение статей и просмотр YouTube.
◆ Каждый шестой Go-разработчик открывал в этом году книги Роберта Мартина.
◆ Треть разработчиков обучались Go не самостоятельно, а на профильных курсах.
◆ 30% Go-разработчиков живут не в России. Больше половины переехали в последние 1,5 года.
◆ Большинство Go-разработчиков не планируют менять место работы.
◆ Самый частый способ выхода из Go — переход в управление разработкой или смена ЯП.
◆ 40% тех, кто хочет сменить язык программирования, в первую очередь смотрят на Rust.
👉 Читать исследование
#аналитика
📌Основные тезисы:
◆ Большинство участников опроса оценивают свой уровень как Middle и Senior.
◆ До Middle Go-разработчик обычно растет 1-2 года, а тимлидом может стать уже через 3.
◆ В основном Golang применяется в продуктовой разработке на проектах большого масштаба.
◆ Большинство пришло в Go из других ЯП. Среди неожиданных профессий: кладовщик, нефтяник, врач и музыкант. 17% Go‑разработчиков начали свою карьеру в IT сразу с Golang. Чаще всего в Golang приходят из Python и PHP.
◆ Для большинства опрошенных Go — основной язык программирования.
◆ Почти половина опрошенных в качестве второго регулярно используемого языка выбирают Python. А треть — JavaScript.
◆ Половина опрошенных переписывала сервисы на Go с других языков. В основном с PHP.
◆ Подавляющее большинство опрошенных используют Go для микросервисов.
◆ Основная IDE для работы — GoLand / IntelliJ IDEA.
◆ Больше половины Go-разработчиков работают с macOS.
◆ Абсолютное большинство готово использовать Go не только для работы, но и для написания пет‑проектов.
◆ Вне зависимости от грейда, Go‑разработчики заинтересованы в прокачке знаний по архитектуре и распределенным системам.
◆ Дженерики ждали все, а в итоге регулярно используют только 10% разработчиков.
◆ Каждый пятый Go-разработчик ждет того часа, когда в языке оптимизируют процесс обработки ошибок.
◆ Лишь треть опрошенных пользуется AI‑инструментами на регулярной основе.
◆ Основные источники знаний для большинства Go-разработчиков — это чтение статей и просмотр YouTube.
◆ Каждый шестой Go-разработчик открывал в этом году книги Роберта Мартина.
◆ Треть разработчиков обучались Go не самостоятельно, а на профильных курсах.
◆ 30% Go-разработчиков живут не в России. Больше половины переехали в последние 1,5 года.
◆ Большинство Go-разработчиков не планируют менять место работы.
◆ Самый частый способ выхода из Go — переход в управление разработкой или смена ЯП.
◆ 40% тех, кто хочет сменить язык программирования, в первую очередь смотрят на Rust.
👉 Читать исследование
#аналитика
Исследование Go-разработчиков 2023
Исследование Go-разработчиков
2023
2023
DevCrowd вместе с Lamoda Tech провели исследование Go-разработчиков 2023
👍23❤4⚡1
⚒️Как использовать ресурсы Kubernetes по максимуму для работы с Go-приложениями
Антон Жуков, руководитель группы разработки в Сбермаркете, делится опытом работы с Kubernetes.
Вы узнаете о возможных проблемах и решениях, а также о том, как грамотно использовать ресурсы этой платформы, чтобы выжать максимум из Go-приложений.
В конце описан кейс настройки GOMAXPROCS на примере реального приложения, которая привела к повышению производительности на 20-50%.
👉 Читать
Антон Жуков, руководитель группы разработки в Сбермаркете, делится опытом работы с Kubernetes.
Вы узнаете о возможных проблемах и решениях, а также о том, как грамотно использовать ресурсы этой платформы, чтобы выжать максимум из Go-приложений.
В конце описан кейс настройки GOMAXPROCS на примере реального приложения, которая привела к повышению производительности на 20-50%.
👉 Читать
👍17❤1
📌Подборка для Go-разработчика:
📺 Как делать микросервисы единообразными, когда их много, а разрабы все разные? / Олег Козырев, Авито
📺 Разработка, основанная на паранойе / Мясников Алексей, Яндекс
📺 Микросервисы в небольшой команде разработки: зачем вам нужен PaaS? / Алексей Коротин, Sports.ru
📺 Обработка ошибок в Go в 2023 / Виталий Попов, InDrive
#чтопроисходит
📺 Как делать микросервисы единообразными, когда их много, а разрабы все разные? / Олег Козырев, Авито
📺 Разработка, основанная на паранойе / Мясников Алексей, Яндекс
📺 Микросервисы в небольшой команде разработки: зачем вам нужен PaaS? / Алексей Коротин, Sports.ru
📺 Обработка ошибок в Go в 2023 / Виталий Попов, InDrive
#чтопроисходит
👍10
🤔 Сложно ли поменять стек разработки?
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️Изучение нового языка
✔️Ознакомление с экосистемой языка
✔️Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
#холивар
Выйти на тот же уровень производительности в другом стеке в том же направлении (бэкенд/фронтенд) может занять от нескольких месяцев до полугода. Конечно, у каждого это время различается, но в любом случае оно включает:
✔️Изучение нового языка
✔️Ознакомление с экосистемой языка
✔️Понимание инфраструктуры (сборка, доставка и т. д.)
💬 А вы меняли стек? Сколько времени это заняло?
#холивар
👍14❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🤩Следующее поколение CLI
Charmbracelet, создатели CLI-пакетов для Go, задумали что-то грандиозное. Они собрали 6 миллионов долларов на создание CLI-инструментов «следующего поколения».
Подробности о планах еще впереди, а сейчас можно ознакомиться с пакетами и инструментами, которые Charmbracelet выпустила на данный момент: от Glow, Glamour и LipGloss до SoftServe, Wish и VHS.
👉 Читать
Charmbracelet, создатели CLI-пакетов для Go, задумали что-то грандиозное. Они собрали 6 миллионов долларов на создание CLI-инструментов «следующего поколения».
Подробности о планах еще впереди, а сейчас можно ознакомиться с пакетами и инструментами, которые Charmbracelet выпустила на данный момент: от Glow, Glamour и LipGloss до SoftServe, Wish и VHS.
👉 Читать
👍41❤2🔥1😁1🌚1