Script
Это библиотека на языке Go для выполнения тех задач, которые хорошо умеют делать shell-скрипты: чтение файлов, выполнение подпроцессов, подсчет строк, сопоставление строк и так далее.
Почему бы не сделать так, чтобы писать программы системного администрирования на Go было так же легко, как и в обычном shell? script призван сделать это именно таким образом.
Сценарии оболочки часто представляют собой последовательность операций над потоком данных (конвейер). Именно так работает и скрипт.
https://github.com/bitfield/script
👉 @golang_lib
Это библиотека на языке Go для выполнения тех задач, которые хорошо умеют делать shell-скрипты: чтение файлов, выполнение подпроцессов, подсчет строк, сопоставление строк и так далее.
Почему бы не сделать так, чтобы писать программы системного администрирования на Go было так же легко, как и в обычном shell? script призван сделать это именно таким образом.
Сценарии оболочки часто представляют собой последовательность операций над потоком данных (конвейер). Именно так работает и скрипт.
https://github.com/bitfield/script
👉 @golang_lib
👍14
Использование брокера сообщений Apache Kafka в распределенных очередях
24 июля в 20:00 мск
❓Хотите узнать, как эффективно управлять сообщениями в масштабируемых распределенных системах? Тогда этот открытый вебинар для вас!
Мы разберем основы и архитектуру Apache Kafka, принципы работы с распределенными очередями, а также научимся настраивать и развертывать кластер Kafka в Docker. Вы увидите реальные примеры использования Kafka для обмена сообщениями между сервисами и узнаете о лучших практиках и рекомендациях по интеграции Kafka в ваши проекты.
💻 Урок будет полезен Fullstack и Backend-разработчикам, DevOps-инженерам, архитекторам ПО и администраторам систем, а также всем, кто хочет углубить свои знания об Apache Kafka и его применении.
🔴 Регистрация открыта: https://vk.cc/cyu34x
24 июля в 20:00 мск
❓Хотите узнать, как эффективно управлять сообщениями в масштабируемых распределенных системах? Тогда этот открытый вебинар для вас!
Мы разберем основы и архитектуру Apache Kafka, принципы работы с распределенными очередями, а также научимся настраивать и развертывать кластер Kafka в Docker. Вы увидите реальные примеры использования Kafka для обмена сообщениями между сервисами и узнаете о лучших практиках и рекомендациях по интеграции Kafka в ваши проекты.
💻 Урок будет полезен Fullstack и Backend-разработчикам, DevOps-инженерам, архитекторам ПО и администраторам систем, а также всем, кто хочет углубить свои знания об Apache Kafka и его применении.
🔴 Регистрация открыта: https://vk.cc/cyu34x
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎2👍1
Try / Go in Y minutes
Go заимствует концепции императивных языков со статической типизацией. Он быстро компилируется и быстро выполняется, добавляет понятный параллелизм, поскольку многоядерные процессоры стали обычным явлением, и успешно используется в больших кодовых базах.
Go поставляется с богатой стандартной библиотекой и большим, развивающимся сообществом.
Руководство основано на книге Learn Go in Y Minutes, с небольшими изменениями, связанными с разделением кода на фрагменты, которые могут выполняться независимо. Большое спасибо авторам!
https://codapi.org/try/go/
👉 @golang_lib
Go заимствует концепции императивных языков со статической типизацией. Он быстро компилируется и быстро выполняется, добавляет понятный параллелизм, поскольку многоядерные процессоры стали обычным явлением, и успешно используется в больших кодовых базах.
Go поставляется с богатой стандартной библиотекой и большим, развивающимся сообществом.
Руководство основано на книге Learn Go in Y Minutes, с небольшими изменениями, связанными с разделением кода на фрагменты, которые могут выполняться независимо. Большое спасибо авторам!
https://codapi.org/try/go/
👉 @golang_lib
👍2
Для чего в приведенном коде предназначена конструкция "_ struct{}"?
Конструкция
Это значит, что мы не сможем случайно инициализировать ProgInfo без указания имён полей, что может помочь избежать ошибок и повысить читаемость кода, особенно когда структура со временем расширяется новыми полями.
В Go, когда мы инициализируем структуру без указания имён полей, например:
Это называется неименованным или позиционным литералом. Такой способ инициализации может привести к ошибкам, особенно если порядок полей в структуре изменится или будут добавлены новые поля.
Добавление поля
👉 @golang_lib
Конструкция
_ struct{}
используется для предотвращения создания литералов структур без именованных полей при инициализации ProgInfo. Это значит, что мы не сможем случайно инициализировать ProgInfo без указания имён полей, что может помочь избежать ошибок и повысить читаемость кода, особенно когда структура со временем расширяется новыми полями.
В Go, когда мы инициализируем структуру без указания имён полей, например:
info := ProgInfo{0, 1, 2, 3}
Это называется неименованным или позиционным литералом. Такой способ инициализации может привести к ошибкам, особенно если порядок полей в структуре изменится или будут добавлены новые поля.
Добавление поля
_ struct{}
делает такую инициализацию невозможной, требуя от разработчика использовать именованные литералы, где каждое значение присваивается конкретному имени поля:info := ProgInfo{
Flags: 0,
Reguse: 1,
Regset: 2,
Regindex: 3,
}
👉 @golang_lib
👍20❤3
5 способов писать эффективный код на Go: от названий переменных до архитектуры
Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалёв и эксперт по разработке ПО Даниил Подольский в YADRO обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом.
Статья будет полезна начинающим специалистам и командам, которые недавно работают вместе. Опытных разработчиков приглашаем в комментарии — расскажите, какие практики для повышения эффективности кода используете вы.
https://habr.com/ru/companies/yadro/articles/803323/
👉 @golang_lib
Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалёв и эксперт по разработке ПО Даниил Подольский в YADRO обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом.
Статья будет полезна начинающим специалистам и командам, которые недавно работают вместе. Опытных разработчиков приглашаем в комментарии — расскажите, какие практики для повышения эффективности кода используете вы.
https://habr.com/ru/companies/yadro/articles/803323/
👉 @golang_lib
👍5
Создаем блог на Go
Упражнение по созданию блога
https://www.calhoun.io/building-a-blog-exercise/
Создание блога на Go: Рендеринг Raw Markdown
https://www.calhoun.io/building-a-blog-part-1/
Создание блога на Go: Рендеринг Markdown в HTML
https://www.calhoun.io/building-a-blog-part-2/
👉 @golang_lib
Упражнение по созданию блога
https://www.calhoun.io/building-a-blog-exercise/
Создание блога на Go: Рендеринг Raw Markdown
https://www.calhoun.io/building-a-blog-part-1/
Создание блога на Go: Рендеринг Markdown в HTML
https://www.calhoun.io/building-a-blog-part-2/
👉 @golang_lib
👍3
Пишем рантайм Golang на чистом C
Часть №1 | Планировщик Go
Часть №2 | Масштабирование планировщика
источник
👉 @golang_lib
Часть №1 | Планировщик Go
Часть №2 | Масштабирование планировщика
источник
👉 @golang_lib
👍6👎1
Как защитить свое Go-приложение
Очень важно думать о том, чтобы приложения были надежными и защищёнными. Go — язык, который известен своей простотой и производительностью. Но ни один язык не безопасен сам по себе и об этом нужно заботится самостоятельно.
В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.
https://habr.com/ru/companies/otus/articles/834336/
👉 @golang_lib
Очень важно думать о том, чтобы приложения были надежными и защищёнными. Go — язык, который известен своей простотой и производительностью. Но ни один язык не безопасен сам по себе и об этом нужно заботится самостоятельно.
В этой статье мы поделимся с вами методами, которые помогут сделать ваши Go-приложения неприступными крепостями.
https://habr.com/ru/companies/otus/articles/834336/
👉 @golang_lib
👍3👎1
🥳 Вышел Go 1.23.0!
📝 Release notes: https://go.dev/doc/go1.23
⬇️ Download: https://go.dev/dl/#go1.23.0
#golang
👉 @golang_lib
📝 Release notes: https://go.dev/doc/go1.23
⬇️ Download: https://go.dev/dl/#go1.23.0
#golang
👉 @golang_lib
👍7🤯2👎1
Как использовать defer в Go
Defer — это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.
В этой статье мы и рассмотрим как использовать defer в Golang.
https://habr.com/ru/companies/otus/articles/833702/
#golang
👉 @golang_lib
Defer — это ключевое слово в Go, которое позволяет отложить выполнение функции до момента завершения выполнения текущей функции. Это относительно простой способ управлять ресурсами.
В этой статье мы и рассмотрим как использовать defer в Golang.
https://habr.com/ru/companies/otus/articles/833702/
#golang
👉 @golang_lib
👍5
12 личных приёмов работы с Go, которые повысили мою продуктивность
Возможно, вы не встречали эти техники раньше, так как я разработал их специально для использования в моей команде.
https://blog.devtrovert.com/p/12-personal-go-tricks-that-transformed
#golang
👉 @golang_lib
Возможно, вы не встречали эти техники раньше, так как я разработал их специально для использования в моей команде.
https://blog.devtrovert.com/p/12-personal-go-tricks-that-transformed
#golang
👉 @golang_lib
Реализация in-memory кэша на Go
В постоянно развивающемся мире разработки программного обеспечения производительность является ключевым фактором. Независимо от того, создаёте ли вы веб-приложение, микросервис или любую другую программную систему, оптимизация задержки ваших API (времени отклика) может улучшить пользовательский опыт и снизить операционные затраты (ЦП/память). Один из эффективных методов повышения производительности — использование кэша в памяти. В этом блоге мы углубимся в реализацию кэша в памяти на Go (как с использованием дженериков, так и без них).
https://www.mohitkhare.com/blog/go-in-memory-cache/
#golang
👉 @golang_lib
В постоянно развивающемся мире разработки программного обеспечения производительность является ключевым фактором. Независимо от того, создаёте ли вы веб-приложение, микросервис или любую другую программную систему, оптимизация задержки ваших API (времени отклика) может улучшить пользовательский опыт и снизить операционные затраты (ЦП/память). Один из эффективных методов повышения производительности — использование кэша в памяти. В этом блоге мы углубимся в реализацию кэша в памяти на Go (как с использованием дженериков, так и без них).
https://www.mohitkhare.com/blog/go-in-memory-cache/
#golang
👉 @golang_lib
👍4
«Бобер выдыхай»: Go, WinAPI и ассемблер
Что вам приходит в голову при слове «Golang»? Google и микросервисы? Я тоже так думал, но реальность оказалась значительно интересней.
https://habr.com/ru/articles/837454/
#golang
👉 @golang_lib
Что вам приходит в голову при слове «Golang»? Google и микросервисы? Я тоже так думал, но реальность оказалась значительно интересней.
https://habr.com/ru/articles/837454/
#golang
👉 @golang_lib
Как мы ускорили Golang-тесты на CI
В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.
В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.
Во всех golang-сервисах пишут тесты на свой код. В разных сервисах подход к тестированию немного различается, но сейчас я не буду углубляться в виды тестирования. Общее между всеми сервисами — «в среднем по больнице» тесты гоняются на CI более 5 минут.
Я пришел в СберМаркет в конце августа 2023 года. Глядя на набор Unit-тестов в одном из наших сервисов Odin, я немного расстроился. Каждый раз нужно было ждать на CI больше 6 минут, чтобы узнать, все ли хорошо с тестами. Их в наборе было около 400.
Я подумал, что неплохо было бы разобраться со скоростью. Предположил, что проблема может быть связана с базой данных, неоптимальным сидированием, что можно улучшить очистку и добавить параллелизма. И даже начал накидывать в голове план ускорения...
https://habr.com/ru/companies/kuper/articles/806725/
#golang
👉 @golang_lib
В этой статье я расскажу о том, как желание улучшить свой рабочий процесс CI помогло ускорить все golang-пайплайны в PaaS СберМаркета.
В СберМаркете микросервисная архитектура. В качестве CI/CD используется GitLab. На CI гоняются вполне типовые задачи по тестированию, различным проверкам, сборкам образов и т. д. Часть job предоставляется самим сервисом, часть — внедряется в пайплайн сервиса нашей платформой.
Во всех golang-сервисах пишут тесты на свой код. В разных сервисах подход к тестированию немного различается, но сейчас я не буду углубляться в виды тестирования. Общее между всеми сервисами — «в среднем по больнице» тесты гоняются на CI более 5 минут.
Я пришел в СберМаркет в конце августа 2023 года. Глядя на набор Unit-тестов в одном из наших сервисов Odin, я немного расстроился. Каждый раз нужно было ждать на CI больше 6 минут, чтобы узнать, все ли хорошо с тестами. Их в наборе было около 400.
Я подумал, что неплохо было бы разобраться со скоростью. Предположил, что проблема может быть связана с базой данных, неоптимальным сидированием, что можно улучшить очистку и добавить параллелизма. И даже начал накидывать в голове план ускорения...
https://habr.com/ru/companies/kuper/articles/806725/
#golang
👉 @golang_lib
👍4
Huma — REST/HTTP API фреймворк для Golang с поддержкой OpenAPI 3.1
Современный, простой, быстрый и гибкий микрофреймворк для создания HTTP REST/RPC API на Go, поддерживаемый OpenAPI 3 и JSON Schema.
https://github.com/danielgtaylor/huma
#golang
👉 @golang_lib
Современный, простой, быстрый и гибкий микрофреймворк для создания HTTP REST/RPC API на Go, поддерживаемый OpenAPI 3 и JSON Schema.
https://github.com/danielgtaylor/huma
#golang
👉 @golang_lib
👍5
Использование миграций баз данных в Go
Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В нашем проекте команда решила не использовать ORM (Object-Relational Mapping), а вместо этого применить миграции. Так как я работал только с ORM, мне, как и автору статьи, было мало знакомо понятие миграций баз данных. В поисках информации о миграциях и популярных решениях, я наткнулся на эту статью. Перевод статьи я оставил ниже. Возможно, она будет вам полезна. Буду признателен, если вы сможете поделиться библиотеками, которые используете.
https://habr.com/ru/articles/809301/
original https://blog.stackademic.com/using-database-migrations-with-golang-7f6736f580c8
#golang
👉 @golang_lib
Недавно мы столкнулись с необходимостью найти библиотеку для удобной работы с базами данных. В нашем проекте команда решила не использовать ORM (Object-Relational Mapping), а вместо этого применить миграции. Так как я работал только с ORM, мне, как и автору статьи, было мало знакомо понятие миграций баз данных. В поисках информации о миграциях и популярных решениях, я наткнулся на эту статью. Перевод статьи я оставил ниже. Возможно, она будет вам полезна. Буду признателен, если вы сможете поделиться библиотеками, которые используете.
https://habr.com/ru/articles/809301/
original https://blog.stackademic.com/using-database-migrations-with-golang-7f6736f580c8
#golang
👉 @golang_lib
👍5
Функциональные опции в Go
Салют! Меня зовут Дима, я руковожу командой разработки ядра цифровой медицины в Республике Узбекистан. Сегодня я хочу поделиться своими знаниями о паттерне, который может значительно упростить работу, если ты пишешь на Go. Речь пойдет о функциональных опциях.
Поначалу это может показаться немного сложным, но на самом деле идея и реализация очень просты. Поверь, как только ты разберешься, твой код станет немного гибче и проще.
К сожалению в Go нет богатого функционала управления “обязательными” и “необязательными” аргументами функции, также нет приятного способа присваивания дефолтных значений этим аргументам, однако есть небольшой лайфхак, об этом сегодня и пойдет речь.
Представь что у тебя есть функция, у которой много параметров для конфигурации. Как обычно пишутся такие функции? Ты создаешь структуру, пихаешь в неё все имеющиеся параметры, затем пишешь для неё конструктор, в который также суешь все эти параметры в виде аргументов. Теперь при вызове функции приходится каждый раз прописывать одни и те же аргументы для конфигурации. Это может быстро превратиться в кошмар, особенно если этих параметров становится 10, 15 или даже 20. Запутаться или ошибиться в таком случае очень легко, так как функция превращается в свалку аргументов.
https://habr.com/ru/articles/842594/
#golang
👉 @golang_lib
Салют! Меня зовут Дима, я руковожу командой разработки ядра цифровой медицины в Республике Узбекистан. Сегодня я хочу поделиться своими знаниями о паттерне, который может значительно упростить работу, если ты пишешь на Go. Речь пойдет о функциональных опциях.
Поначалу это может показаться немного сложным, но на самом деле идея и реализация очень просты. Поверь, как только ты разберешься, твой код станет немного гибче и проще.
К сожалению в Go нет богатого функционала управления “обязательными” и “необязательными” аргументами функции, также нет приятного способа присваивания дефолтных значений этим аргументам, однако есть небольшой лайфхак, об этом сегодня и пойдет речь.
Представь что у тебя есть функция, у которой много параметров для конфигурации. Как обычно пишутся такие функции? Ты создаешь структуру, пихаешь в неё все имеющиеся параметры, затем пишешь для неё конструктор, в который также суешь все эти параметры в виде аргументов. Теперь при вызове функции приходится каждый раз прописывать одни и те же аргументы для конфигурации. Это может быстро превратиться в кошмар, особенно если этих параметров становится 10, 15 или даже 20. Запутаться или ошибиться в таком случае очень легко, так как функция превращается в свалку аргументов.
https://habr.com/ru/articles/842594/
#golang
👉 @golang_lib
👍5❤1
Как построить полноценное распределенное файловое хранилище на Golang
https://www.youtube.com/watch?v=bymQakvTY40
#golang
👉 @golang_lib
https://www.youtube.com/watch?v=bymQakvTY40
#golang
👉 @golang_lib
YouTube
How To Build A Complete Distributed File Storage In Golang
► Join my Discord community for free education 👉 https://discord.com/invite/Ac7CWREe58
► Exclusive Videos, Mini courses, Resume reviews, and coaching 👉 http://thetotalcoder.com
► 33% OFF on my Go + HTMX + Templ Course 👉https://bit.ly/3UFruxO
► Enjoy a…
► Exclusive Videos, Mini courses, Resume reviews, and coaching 👉 http://thetotalcoder.com
► 33% OFF on my Go + HTMX + Templ Course 👉https://bit.ly/3UFruxO
► Enjoy a…
👍8
Когда Kubernetes и Go не очень хорошо работают вместе
Go не знает об ограничениях, установленных для его контейнера, что приводит к некоторым проблемам, которые нелегко отследить. Это история о том, как я наткнулся на одну из них.
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together
👉 @golang_lib
Go не знает об ограничениях, установленных для его контейнера, что приводит к некоторым проблемам, которые нелегко отследить. Это история о том, как я наткнулся на одну из них.
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together
👉 @golang_lib