⚖️ Логирование в Go: сравнение 8 лучших библиотек
С появлением в версии Go 1.21 нового базового стандартного пакета логирования (
Надо смотреть в контексте достоинств/недостатков, производительности, гибкости, функциональных возможностей, простоты использования и поддержки сообщества. Об этом и пойдет речь в статье👇
👀 Читать
С появлением в версии Go 1.21 нового базового стандартного пакета логирования (
log/slog
) другие библиотеки с открытым исходным кодом можно считать устаревшими? А вот и нет.Надо смотреть в контексте достоинств/недостатков, производительности, гибкости, функциональных возможностей, простоты использования и поддержки сообщества. Об этом и пойдет речь в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
Betterstack
Logging in Go: A Comparison of the Top 9 Libraries | Better Stack Community
This article compares 9 Go logging libraries, discussing and comparing their features, performance, pros and cons, to determine which library is right for you
🤔6👍1
Какой из перечисленных софт скиллов, по вашему мнению, является наиболее ценным для ИТ-специалиста в команде? Можно выбрать несколько вариантов.
Anonymous Poll
68%
Умение общаться с коллегами (коммуникабельность)
59%
Способность к самостоятельному обучению
50%
Умение управлять своим временем и приоритетами
15%
Эмпатия и понимание потребностей пользователя
9%
Лидерские качества
42%
Умение быстро адаптировать в изменяющейся обстановке
32%
Внимательность
19%
Креативность и гибкость
19%
Пунктуальность
3%
Свой вариант (напишу в комментарии)
👏5👍1
Free Gophers Pack.png
3.5 MB
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🎉2👍1
William Kennedy на практике разбирается с принципом работы функций Contains, Delete и Equal.
👉 Перейти к серии
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Библиотека Go разработчика | Golang
Серия руководств по работе с новым пакетом slices от Ardan Labs:
1️⃣Binary Search
2️⃣Clip, Clone и Compact
3️⃣Compare
4️⃣Contains, Delete и Equal
1️⃣Binary Search
2️⃣Clip, Clone и Compact
3️⃣Compare
4️⃣Contains, Delete и Equal
👍4
Подробное руководство по операциям с файлами в Go: на заметку начинающему разработчику
Погрузитесь в мир файловых операций в Go и изучите расширенные концепции, включая манипулирование файлами, чтение, запись, обработка ошибок и многое другое.
🔗 Читать
Погрузитесь в мир файловых операций в Go и изучите расширенные концепции, включая манипулирование файлами, чтение, запись, обработка ошибок и многое другое.
🔗 Читать
Honeybadger Developer Blog
A comprehensive guide to file operations in Go
Dive into the world of file operations in Go and explore advanced concepts such as file manipulation, reading, writing, error handling, and more. It's time level up your Go skills.
👍12
🍪Хоть сейчас и мало кого заинтересуешь «печеньками» и «кикером в офисе», эйчары до сих пор в описаниях вакансий делают упор на удобном расположении офиса, бесплатном кофе и классных тимбилдингах.
🧗♀️Но это, скорее, верхушка айсберга и приятное дополнение к тому, что должно помогать сотруднику сохранять страсть к своей работе и не выгореть на первом же году работы. А «под водой» — интересные и разноплановые задачи, которые бросают вызов нашим скиллам и заставляют получать новые знания, и благодаря которым каждый день мы приходим на работу с удовольствием.
💬А что «зажигает» именно вас? Ради чего вы каждый день приходите на работу или садитесь за рабочий компьютер в случае удаленки? Как думаете, зависит ли счастье сотрудников от интересных задач?
🧗♀️Но это, скорее, верхушка айсберга и приятное дополнение к тому, что должно помогать сотруднику сохранять страсть к своей работе и не выгореть на первом же году работы. А «под водой» — интересные и разноплановые задачи, которые бросают вызов нашим скиллам и заставляют получать новые знания, и благодаря которым каждый день мы приходим на работу с удовольствием.
💬А что «зажигает» именно вас? Ради чего вы каждый день приходите на работу или садитесь за рабочий компьютер в случае удаленки? Как думаете, зависит ли счастье сотрудников от интересных задач?
❤9👍1
🤩 Команда Uber очень любит и развивает проекты с открытым исходным кодом, в том числе и на Go. В их техническом стеке Go тоже присутствует: cadence и H3-Go 👇
GitHub
GitHub - uber/cadvisor: Analyzes resource usage and performance characteristics of running containers.
Analyzes resource usage and performance characteristics of running containers. - uber/cadvisor
👍4
Forwarded from Библиотека программиста | программирование, кодинг, разработка
😴Вы ведь там не спите?! И правильно — ведь у нас для вас есть предложение отправиться в путешествие по техническому стеку Uber (аналогичный недавний пост про Netflix)
Иллюстрация основана на исследованиях из технических блогов Uber и проектов с открытым исходным кодом:
📌Фронтенд
• Веб: Fusion.js (React-фреймворк для создания надежных веб-приложений) + Visualization.js для сценариев геопространственной визуализации.
• Mobile: кроссплатформенная система RIB с архитектурой VIPER вместо MVC.
📌Бэкенд:
• Uber Gateway как динамическая конфигурация поверх Nginx. Сервис использует gRPC и QUIC для взаимодействия клиент-сервер, а также Apache Thrift для описания интерфейсов.
• Единое хранилище конфигураций под названием Flipr (позже измененное на UCDP), H3 в качестве библиотеки хранилища location-index, Spring Boot для сервисов на основе Java, uAct для архитектуры, управляемой событиями, и Cadence для оркестрации.
📌Базы данных: для OLTP используется DocStore, под капотом у которой MySQL + PostgreSQL + движок RocksDB.
📌Big data: управление осуществляется с помощью семейства Hadoop. В качестве форматов файлов используются Hudi и Parquet, а Alluxio — для кэширования. Данные временных рядов хранятся в Pinot и AresDB.
📌Обработка данных: Hive, Spark и фреймворк с открытым исходным кодом Marmaray + Apache Kafka и Apache Flink.
📌DevOps: Uber использует Monorepo с упрощенным окружением под названием devpod. CD управляется через Netflix Spinnaker, метрики передаются в uMetric, уведомления в uMonitor и базу данных observability M3.
🔗Подробнее
#инфографика #проектирование_систем
Иллюстрация основана на исследованиях из технических блогов Uber и проектов с открытым исходным кодом:
📌Фронтенд
• Веб: Fusion.js (React-фреймворк для создания надежных веб-приложений) + Visualization.js для сценариев геопространственной визуализации.
• Mobile: кроссплатформенная система RIB с архитектурой VIPER вместо MVC.
📌Бэкенд:
• Uber Gateway как динамическая конфигурация поверх Nginx. Сервис использует gRPC и QUIC для взаимодействия клиент-сервер, а также Apache Thrift для описания интерфейсов.
• Единое хранилище конфигураций под названием Flipr (позже измененное на UCDP), H3 в качестве библиотеки хранилища location-index, Spring Boot для сервисов на основе Java, uAct для архитектуры, управляемой событиями, и Cadence для оркестрации.
📌Базы данных: для OLTP используется DocStore, под капотом у которой MySQL + PostgreSQL + движок RocksDB.
📌Big data: управление осуществляется с помощью семейства Hadoop. В качестве форматов файлов используются Hudi и Parquet, а Alluxio — для кэширования. Данные временных рядов хранятся в Pinot и AresDB.
📌Обработка данных: Hive, Spark и фреймворк с открытым исходным кодом Marmaray + Apache Kafka и Apache Flink.
📌DevOps: Uber использует Monorepo с упрощенным окружением под названием devpod. CD управляется через Netflix Spinnaker, метрики передаются в uMetric, уведомления в uMonitor и базу данных observability M3.
🔗Подробнее
#инфографика #проектирование_систем
👍8❤2🤔1🌚1
📚Найти подходящую для себя книгу по Go, которая принесет максимальную пользу, — не самая простая задача. Но решение есть: Awesome Go Books. Репозиторий поддерживается и обновляется новыми книгами. Пользуйтесь 😍
🔗GitHub
#перечитываястарое
🔗GitHub
#перечитываястарое
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - dariubs/GoBooks: List of Golang books
List of Golang books. Contribute to dariubs/GoBooks development by creating an account on GitHub.
🔥19👍3
Реализация плагина ClickHouse для Telegraf на Go
Telegraf — серверный агент для сбора и отправки всех показателей и событий из баз данных, систем и сенсоров IoT. А как на счет поддержи ClickHouse? Она есть, но имеет несколько недостатков.
Автор статьи решил это исправить и, надо сказать, получилось быстро и эффективно. Вывод один: не бойтесь писать интеграции самостоятельно — оно того стоит.
👀 Читать
Telegraf — серверный агент для сбора и отправки всех показателей и событий из баз данных, систем и сенсоров IoT. А как на счет поддержи ClickHouse? Она есть, но имеет несколько недостатков.
Автор статьи решил это исправить и, надо сказать, получилось быстро и эффективно. Вывод один: не бойтесь писать интеграции самостоятельно — оно того стоит.
Please open Telegram to view this post
VIEW IN TELEGRAM
1823.pl
Implementing a ClickHouse output plugin for Telegraf in Go - d1823.pl
A process of implementing a Go-based ClickHouse output plugin for Telegraf, along with the surprises and pitfalls.
👍5
Кажется, этот формат значительно удобнее, чем смотреть весь плейлист в поисках чего-то полезного. Вас ждет краткое описание докладов на следующие темы:
1⃣Rubiks-Kube
2⃣Is unit testing an afterthought or a necessity?
3⃣Generics in Go
4⃣Metaprogramming in Go
5⃣Fuzz testing
6⃣Cache design patterns
7⃣Checkpoint Restoration Using CRIU
8⃣Dive into debugging distributed systems using Delve
9⃣Hardening Go Concurrency: using Formal methods to verify correctness
Please open Telegram to view this post
VIEW IN TELEGRAM
AdiTechSavvys Blogs on Golang
Gophercon India 2023
A blog highlighting my learnings from GCI2023. With details about the Talks that took place.
🔥9👍1
🔗Cокращатель ссылок на Go: с нуля до деплоя
Go-разработчик Ильдар Карымов делится опытом разработки просто проекта на Go. Вы узнаете, как на практике использовать Echo и MongoDB, прикрутить GitHub-аутентификацию и задеплоить на Digital Ocean.
📺 Смотреть
Go-разработчик Ильдар Карымов делится опытом разработки просто проекта на Go. Вы узнаете, как на практике использовать Echo и MongoDB, прикрутить GitHub-аутентификацию и задеплоить на Digital Ocean.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Forwarded from Библиотека Go для собеса | вопросы с собеседований
💬Что из себя представляет паттерн «Функциональные опции» в Go и как его реализовать?
▪️Паттерн «Функциональные опции» в Go предлагает гибкий способ настройки структур без раскрытия внутренних полей.
▪️Он особенно полезен, если вы хотите предоставить дополнительную конфигурацию, или в будущем могут появиться дополнительные параметры конфигурации. Он также отлично подходит для библиотек.
📌Базовый пример без функциональных опций:
▪️Со временем наши требования меняются, и нам может понадобиться поддерживать больше вариантов конфигурации. Вместо изменения сигнатуры функции
👉 Сначала мы определяем функциональную опцию:
👉 и функцию, удовлетворяющую типу:
👉 изменяем нашу функцию NewServer:
👉 и теперь мы можем делать вот так:
📌Этот паттерн позволяет нам гибко настраивать параметры, сохраняя при этом читабельность и не раскрывая внутренние поля.
▪️Паттерн «Функциональные опции» в Go предлагает гибкий способ настройки структур без раскрытия внутренних полей.
▪️Он особенно полезен, если вы хотите предоставить дополнительную конфигурацию, или в будущем могут появиться дополнительные параметры конфигурации. Он также отлично подходит для библиотек.
📌Базовый пример без функциональных опций:
type Server struct {
host string
port int
protocol string
}
func NewServer(host string, port int) *Server {
return &Server{
host: host,
port: port,
protocol: "http",
}
}
▪️Со временем наши требования меняются, и нам может понадобиться поддерживать больше вариантов конфигурации. Вместо изменения сигнатуры функции
NewServer
, что может быть проблематично и несовместимо с предыдущими версиями, мы можем использовать функциональные опции.👉 Сначала мы определяем функциональную опцию:
type ServerOption func(*Server)
👉 и функцию, удовлетворяющую типу:
func WithPort (port int) ServerOption {
return func(s *Server) {
s.port = port
}
👉 изменяем нашу функцию NewServer:
func NewServer(host string, opts ...ServerOption) *Server {
server : = &Server{
host: host,
port: 443,
protocol: "https"
}
for _, opt : = range opts {
opt (server)
}
return server
}
👉 и теперь мы можем делать вот так:
server1 := NewServer("localhost")
server2 := NewServer("localhost", WithPort(8080))
📌Этот паттерн позволяет нам гибко настраивать параметры, сохраняя при этом читабельность и не раскрывая внутренние поля.
❤37🔥21👍10🌚3😁1
Какие из перечисленных хард скиллов, по вашему мнению, наиболее важны для разработчика? Можно выбрать несколько вариантов.
Anonymous Poll
53%
Знание языков программирования
66%
Понимание алгоритмов и структур данных
51%
Работа с базами данных и SQL
35%
Опыт работы с системами контроля версий
26%
Опыт работы с фреймворками и библиотеками
18%
Понимание принципов DevOps
67%
Знание основных принципов проектирования и архитектуры ПО
23%
Опыт тестирования ПО
12%
Знание математики
4%
Свой вариант (напишу в комментарии)
🧠Решаем задачи по Go и практикуемся на квизах
Напоминаем, что у нас появился новый канал с задачами по Go, квизами и кодом. Подписывайтесь, чтобы практиковаться вместе с нами.
👉Перейти в канал
Напоминаем, что у нас появился новый канал с задачами по Go, квизами и кодом. Подписывайтесь, чтобы практиковаться вместе с нами.
👉Перейти в канал
👍3😁1
Go 1.21 включает предварительную версию изменения области видимости цикла for, которое команда Go планирует добавить в Go 1.22, устраняя одну из наиболее распространенных ошибок Go.
🤔 В чем сыр-бор?
• На первом скрине код должен вывести "a,b,c", верно?
• На самом деле мы получаем "c,c,c". Причины такого поведения описаны здесь.
• Эту проблему также можно воспроизвести без конкурентности (второй пример).
• Ошибка такого рода вызвала проблемы в проде у многих компаний, включая публично задокументированную проблему в Lets Encrypt.
📌В Go 1.22 команда Go планирует измененить циклы for, чтобы они имели область видимости для каждой итерации, а не для каждого цикла.
• Чтобы обеспечить обратную совместимость с существующим кодом, новая семантика будет применяться только в пакетах, содержащихся в модулях, которые объявляют go >= 1.22 в файлах go.mod.
• Go 1.21 включает предварительный просмотр изменения области видимости. Если вы скомпилируете свой код с переменной окружения GOEXPERIMENT=loopvarset, новая семантика будет применена ко всем циклам.
• На первом скрине код должен вывести "a,b,c", верно?
• На самом деле мы получаем "c,c,c". Причины такого поведения описаны здесь.
• Эту проблему также можно воспроизвести без конкурентности (второй пример).
• Ошибка такого рода вызвала проблемы в проде у многих компаний, включая публично задокументированную проблему в Lets Encrypt.
📌В Go 1.22 команда Go планирует измененить циклы for, чтобы они имели область видимости для каждой итерации, а не для каждого цикла.
• Чтобы обеспечить обратную совместимость с существующим кодом, новая семантика будет применяться только в пакетах, содержащихся в модулях, которые объявляют go >= 1.22 в файлах go.mod.
• Go 1.21 включает предварительный просмотр изменения области видимости. Если вы скомпилируете свой код с переменной окружения GOEXPERIMENT=loopvarset, новая семантика будет применена ко всем циклам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💯20🤔8👍6🔥5
Go-разработчик Ильдар Карымов делится опытом разработки Telegram-бота, который автоматически достаёт свежие новости и статьи про Go из разных источников, генерирует для них саммари с помощью ChatGPT, после чего публикует их в Telegram-канал.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍2😁1
Таненбаум vs Торвальдс (микроядро vs монолит)
Старый добрый профессиональный спор, который перерос в холивар. Первыми его начали известные разработчики Эндрю Таненбаум и Линус Торвальдс в начале 90-х в одной из новостных групп «Юзнета».
Таненбаум и Торвальдс холиварили из-за архитектуры ядра ОС. Первый утверждал, что лучше использовать микроядра, второй — монолитное ядро. И сколько раз они не возвращались к публичному обсуждению архитектуры ядра, каждый оставался при своём мнении.
А что сейчас? Да ничего не изменилось. Холивар разгорается при обсуждении абсолютно любой темы.
Любите холиварить?
👍 — конечно — в споре рождается истина
🤔 — ненавижу — только мешает работать
💯 — смотря где и при каких обстоятельствах
#холивар
Старый добрый профессиональный спор, который перерос в холивар. Первыми его начали известные разработчики Эндрю Таненбаум и Линус Торвальдс в начале 90-х в одной из новостных групп «Юзнета».
Таненбаум и Торвальдс холиварили из-за архитектуры ядра ОС. Первый утверждал, что лучше использовать микроядра, второй — монолитное ядро. И сколько раз они не возвращались к публичному обсуждению архитектуры ядра, каждый оставался при своём мнении.
А что сейчас? Да ничего не изменилось. Холивар разгорается при обсуждении абсолютно любой темы.
Любите холиварить?
👍 — конечно — в споре рождается истина
🤔 — ненавижу — только мешает работать
💯 — смотря где и при каких обстоятельствах
#холивар
💯70👍38🥱16🤔11