golang українською
79 subscribers
10 photos
1 video
60 links
Telegram автора: @nesymno
Linkedin автора: bit.ly/nesymno-linkedin
Github каналу: bit.ly/uagolang-github
Download Telegram
Дуже хороший ресурс для вивчення дизайн патернів з прикладами і поясненнями:

https://refactoring.guru/uk/design-patterns

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#design_patterns@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Конкурентність та примітиви синхронізації в Go

Знайшов трохи часу для статті, яку обіцяв.
Розберемо ключові питання та стандартні інструменти Go.

Українською:
https://uagolang.notion.site/Go-1960710a945c8047bf95e4c93aec744c

English:
https://uagolang.notion.site/Concurrency-and-Synchronization-Primitives-in-Go-1980710a945c80d59236dcb741874ec7

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#авторське@uagolang #concurrency@uagolang #mutex@uagolang #atomic@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
Навалилось проблем, не хочу вдаватись в деталі, постараюсь закінчити другу частину статті по операторам k8s до наступного тижня.
🫡3👍1
Хочу задати питання: чи працював хтось з кубернетісом? (хоча б в плані, що інфра там всередині)
Чи був у вас досвід як розробника в налаштуванні k8s кластерів чи, можливо, встановлення якихось інших сервісів, необхідних для функціонування?
Поділіться досвідом, якщо він у вас був, будь ласка! 🫡
Всім привіт. Сьогодні п'ятниця, а це означає, що настав час поділитись цікавими проектами на Go!

1. Fx - DI фреймворк від Uber. Дозволяє легко організувати додаток на основі модулів та забезпечує автоматичну ініціалізацію залежностей. Не раз стикався з проблемою DI у великих проєктах, і Fx реально вирішує більшість болей. Спочатку може здаватися складним, але розібратись однозначно варто. Використовую в продакшені.

🔗 Репозиторій: https://github.com/uber-go/fx

2. Microservices Framework Go-Micro - фреймворк для створення мікросервісів на Go. Забезпечує реєстрацію сервісів, балансування навантаження, обробку запитів, гнучку аутентифікацію та підтримку плагінів. Коли треба було швидко запустити кілька сервісів, що спілкуються через gRPC, go-micro реально зекономив купу часу. Великий плюс – підтримка плагінів, що дозволяє легко кастомізувати під свої потреби. Використовував в продакшені.

🔗 Репозиторій: https://github.com/go-micro/go-micro

3. CLI Framework Cobra - фреймворк для створення командних інтерфейсів у Go. Використовується в kubectl, hugo, helm та багатьох інших відомих CLI-додатках. Писати CLI без cobra – те ще задоволення. Коли вперше спробував, реально оцінив, наскільки зручно працювати з командами та аргументами. Якщо тобі треба створити CLI-утиліту – рекомендую.

🔗 Репозиторій: https://github.com/spf13/cobra

4. Configuration Management Viper - бібліотека для зчитування конфігурацій у Go. Підтримує YAML, JSON, TOML, env-змінні, прапори CLI та віддалені конфігураційні сховища. Можливість працювати з конфігами в різних форматах та перемикатися між ними без змін коду – те, що треба для будь-якого серйозного проєкту. Використовую всюди, де є складна конфігурація.

🔗 Репозиторій: https://github.com/spf13/viper

5. Lightweight DI: Do - ще одна бібліотека для DI, але набагато легша, ніж Fx. Дозволяє зручно реєструвати та використовувати залежності без зайвої магії. Якщо Fx здається занадто складним або надлишковим, do – чудова альтернатива. Дуже проста у використанні та добре підійде для будь-яких проєктів. Використовую в продакшені.

🔗 Репозиторій: https://github.com/samber/do

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#підбірки@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Всім привіт! Нарешті закінчив другу статтю з циклу по операторам k8s! Це зайняло більше часу, ніж я очікував.
Надіюсь, вам сподобається, я дуже старався 🙂

Українською:
https://uagolang.notion.site/k8s-2-1800710a945c8082a56cfa6a9d181008

English:
https://uagolang.notion.site/Manage-k8s-resources-using-operators-Part-2-1800710a945c81ef9d56d4bfafae66f2

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#авторське@uagolang #platform_engineering@uagolang #k8s@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
golang українською pinned «Всім привіт! Нарешті закінчив другу статтю з циклу по операторам k8s! Це зайняло більше часу, ніж я очікував. Надіюсь, вам сподобається, я дуже старався 🙂 Українською: https://uagolang.notion.site/k8s-2-1800710a945c8082a56cfa6a9d181008 English: https://…»
Дні летять, наче навіжені 😱
Сьогодні знову п'ятниця, а це означає, що час поділитись новою підбіркою 👍

1️⃣ Logrus - гнучкий логгер з підтримкою рівнів логування та форматування JSON. Також є можливість писати хуки для обробки логів в залежності від їх рівня. Використовую майже в кожному проєкті.

🔗 Репозиторій: https://github.com/sirupsen/logrus

2️⃣ Anteon (в минулому Ddosify) - модерний генератор навантаження та моніторингу k8s кластерів, який дозволяє тестувати API та веб-сайти на продуктивність. Він підтримує HTTP, HTTPS, WebSocket, TCP, UDP і може використовуватися як CLI або бібліотека. Чесно кажучи, поки сам його тільки тестую, можливо, напишу статтю за результатами досліджень.

🔗 Репозиторій: https://github.com/getanteon/anteon

3️⃣ Compress - бібліотека для оптимізованого стиснення даних у форматах lz4, zstd, gzip, snappy. Вона швидша за стандартні бібліотеки Go і споживає менше пам’яті, а також має підтримку багатопотокового стиснення. Рекомендую для продакшена.

🔗 Репозиторій: https://github.com/klauspost/compress

4️⃣ Prometheus go-клієнт - офіційний клієнт для інтеграції Prometheus у Go-додатки. Він дозволяє збирати метрики та моніторити різні характеристики: CPU, RAM, HTTP-запити тощо. Думаю, багато хто тут так чи інакше працював з Prometheus, а якщо ні - спробуйте. Метрики і моніторинг must have для будь-якого проєкту в продакшені.

🔗 Репозиторій: https://github.com/prometheus/client_golang

5️⃣ ChromeDP - потужний інструмент для автоматизації браузера Chrome, який працює напряму через Chrome DevTools Protocol (CDP). Він дозволяє керувати браузером без потреби в Selenium/WebDriver і писати e2e тести на Go! Підтримує headless-режим та вміє робити скріншоти. Якщо хочете перенести автоматизоване тестування з Java чи JS - варто звернути увагу.

🔗 Репозиторій: https://github.com/chromedp/chromedp

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#підбірки@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
Media is too big
VIEW IN TELEGRAM
Побачив на просторах іншого Go комʼюніті. Що це? Це - скарб, ахахаха
🤣3
Доброго ранку, шановні колеги! Сьогодні я хотів би поділитись репозиторієм нашого ком'юніті, де будуть зібрані практичні приклади вирішення тих чи інших проблем, або ж розгляд цікавих питань щодо роботи golang всередині, які не тягнуть на окрему статтю (адже їх вже й так багато різних на різний смак, а у мене немає стільки часу на написання великої кількості).

Прошу переглянути. Прикладів поки небагато, але деякі з них доволі цікаві. Хтось просив пояснити alignment в структурах - там це є.

https://github.com/uagolang/practice

В коментарях пишіть, які теми цікавлять ще. Особисто в мене в планах на найближчий час більш детально зупинитись на конкурентності та патернах для вирішення проблем з нею пов'язаних 🙈

Став 👍 якщо сподобався матеріал!
Слава Україні 🇺🇦🇺🇦

#practice@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍21
Всім доброго ранку! Займаюсь 3 частиною статті по операторам в k8s.
Випустити планую наступного тижня. Це буде заключна стаття, в якій розберемо, як писати тести для реконсайлера ресурсів.
Має бути цікаво! Буде розглянуто декілька видів тестів. Вважаю, що це дасть всім більше розуміння щодо того - що і навіщо покривати тестами. Як мінімум, в першу чергу :)

Stay tuned!

#announce@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Всім привіт! Дуже вибачаюсь, в п'ятницю підбірка не вийшла. Була накладка з часом останні декілька днів, не встиг її закінчити 🙃
Але технічний борг має бути закритим, тож давайте розглянемо сьогоднішню підбірку!

1⃣ Watermill – бібліотека для побудови event-driven систем. Дозволяє легко реалізувати pub/sub-архітектуру, підтримує Kafka, NATS, Google Pub/Sub та інші брокери повідомлень. В продакшені не використовував.

🔗 Репозиторій: github.com/ThreeDotsLabs/watermill

2⃣ Gookit Event – простий та ефективний інструмент для роботи з подіями у Go. Дозволяє легко додавати event-driven логіку до застосунків, підтримує синхронне та асинхронне виконання обробників.

🔗 Репозиторій: https://github.com/gookit/event

3⃣ GoFeatureFlag – lightweight система фіча-флагів для Go-додатків. Дозволяє керувати функціоналом без зміни коду, підтримує JSON, файли, REST API та віддалені конфігурації. Дає можливість проводити A/B-тестування. Використовував в продакшені.

🔗 Репозиторій: https://github.com/thomaspoignant/go-feature-flag

4⃣ Carbon – зручна бібліотека для роботи з датами та часом у Go. Вона робить форматування, парсинг та маніпуляції з датами простішими та інтуїтивнішими. Має можливість підключення i18n та має багато підтримуваних мов, в тому числі і українську 👍

🔗 Репозиторій: https://github.com/dromara/carbon

5⃣ Fyne – кросплатформовий UI-фреймворк для створення нативних десктоп-додатків на Go. Підтримує Windows, macOS, Linux, Android та iOS! Призначений для створення програм, які запускаються на десктопних і мобільних пристроях з єдиною кодовою базою.

🔗 Репозиторій: https://github.com/fyne-io/fyne

Став 👍 якщо сподобався матеріал, пропонуй теми для статей чи питання, що потребують освітлення!
Слава Україні 🇺🇦🇺🇦

#підбірки@uagolang #friday5@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍5
Всім привіт! Планував завтра випускати статтю, але схоже, що не встигну. Тому стаття буде доступна в понеділок, 17 березня.
Вибачаюсь, тестування займає набагато більше часу, ніж просто імплементація :(

#announce@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Всім привіт та вітаю з п'ятницею! Сьогодні все по плану, і я його притримуюсь. Отже, погнали! 👋

1⃣ Lo – чули про lodash в js? Це те ж саме, тільки на Go. Потужний пакет, що дозволяє значно скоротити кількість коду шляхом використання готових функцій для роботи зі слайсами та мапами. Все на дженериках. Використовую в продакшені.

🔗 Репозиторій: https://github.com/samber/lo

2⃣ Env – простий та зрозумілий парсер змінних середовища в структуру. Під капотом рефлексія. Використовую в продакшені.

🔗 Репозиторій: https://github.com/caarlos0/env

3⃣ Conc – бібліотека, що реалізує всі основні способи синхронізації горутин, даючи приємний синтаксичний цукор та зменшення кількості коду. Особисто я не використовую в продакшені. І вам не раджу, якщо ви не розумієте принципів та інструментів синхронізації в Go. Це просто такий собі lodash для конкурентності.

🔗 Репозиторій: https://github.com/sourcegraph/conc

4⃣ CIRCL – бібліотека від Cloudflare, що дозволяє розгортати криптографічні алгоритми, що націлені на роботу з пост-квантовою та еліптичною криптографією. Звучить складно. Особисто я в цьому нічого не розумію поки, але так як розвиток квантових комп'ютерів продовжується - можна взяти для експериментів. Самі автори зазначають, що це не prod-ready версія. Та і де б ми її використовували?)

🔗 Репозиторій: https://github.com/cloudflare/circl

5⃣ Air – бібліотека, що забезпечує hot-reload для Go додатків. Проста в налаштуванні і працює добре, дуже корисно для локальної розробки. Я мав і негативний досвід - дебагер. Власне, так і не зміг його налаштувати для проєктів, що стартують (локально) на docker-compose чи просто в докері. В продакшені, звичайно, такого використовувати не варто. Лише для локальної розробки.

🔗 Репозиторій: https://github.com/air-verse/air

Став 👍 якщо сподобався матеріал! Розказуй знайомим гошникам про канал, це дуже допоможе йому в розвитку.
Слава Україні 🇺🇦🇺🇦

#підбірки@uagolang #friday5@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎1
Всіх вітаю в цей тяжкий день - понеділок!
Бажаю всім вам гарного дня та хочу поділитись заключною частиною циклу статей про управління ресурсами в Kubernetes.

Сьогодні поговоримо про тестування загалом та відносно нашої задачі - покрити тестами наш оператор контролерів.
Занурюємось! Приємного прочитання!

Українською:
https://uagolang.notion.site/k8s-3-1800710a945c80df8193f1cf3c0a347a

English:
https://uagolang.notion.site/Manage-k8s-resources-using-operators-Part-3-1800710a945c818aa9b3f86277ec0632

Став 👍 якщо сподобався матеріал! Розказуй знайомим гошникам про канал, це дуже допоможе йому в розвитку.
Слава Україні 🇺🇦🇺🇦

#авторське@uagolang #kubernetes@uagolang #platform_engineering@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
Всім гошникам фізкульт-привіт 👋 в цю п'ятницю! РАСТовчанам - за кораблем 😂🙊
Як зазвичай, ловіть підбірку з 5 пакетів на Go, що можуть стати вам в нагоді!

1⃣ DiceDB - доволі нова, але дуже непогана (а іноді навіть краща) альтернатива Redis (який тепер ще й платним став). Особливістю цієї in-memory db є те, що підписавшись на ресурс, DiceDB сама буде сповіщати всіх підписників, а не навпаки як у випадку polling data.

🔗
Репозиторій: https://github.com/DiceDB

2⃣ bubbletea – фреймворк для створення консольних додатків на Go, що дозволяє розробляти багатофункціональні інтерактивні інтерфейси в терміналі. Не використовував, але хочу вивчити його.

🔗 Репозиторій: https://github.com/charmbracelet/bubbletea

3⃣ goyek – на мій погляд доволі новий, але перспективний пакет для рутинної автоматизації, що зазвичай робиться в Make. Все доволі просто і на Go. Особисто мені Make абсолютно підходить і об'єктивно швидше потрібну рутину автоматизувати там. Але якщо необхідне якесь комплексне рішення, що буде потребувати глибоких знань bash, то чому б не реалізувати це добре знайомою тобі мовою?

🔗 Репозиторій: https://github.com/goyek/goyek

4⃣ trivy - інструмент для виявлення вразливостей, неправильних конфігурацій та секретів у контейнерах, Kubernetes, кодових репозиторіях та хмарах.

🔗 Репозиторій: https://github.com/aquasecurity/trivy

5⃣ gocv – пакет на Go для computer vision, що дозволяє використовувати бібліотеку OpenCV 4 та деякі інші бібліотеки. Поки що не клацав, але цей пакет мене так зацікавив, що планую в ньому підрозібратись та написати статтю щодо його використання. Він може робити обробку відео, знаходити предмети в real-time і всяке таке, що пов'язано з Computer Vision. До речі, дуже перспективний напрямок в наш час, наприклад, знаходження цілі при втраті контролю під час дії РЕБ для дронів камікадзе.

🔗 Репозиторій: https://github.com/hybridgroup/gocv

Став 👍 якщо сподобався матеріал! Розказуй знайомим гошникам про канал, це дуже допоможе йому в розвитку.
Слава Україні 🇺🇦🇺🇦

#підбірки@uagolang #friday5@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Всім доброго ранку! Надіюсь, виспались і готові вриватись в робочий тиждень!
Я ще думаю над своєю наступною статтею (можете щось пропонувати, але не щось тривіальне), а поки вирішив перекласти цікаву статтю про HTTP/2 та в Go зокрема.
Приємного прочитання!

Українською:
https://uagolang.notion.site/HTTP-2-Golang-1960710a945c8060bba6ca60b8952c49

Оригінал:
https://victoriametrics.com/blog/go-http2/index.html

Став 👍 якщо сподобався матеріал! Розказуй знайомим гошникам про канал, це дуже допоможе йому в розвитку.
Слава Україні 🇺🇦🇺🇦

#переклад@uagolang #http2@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍1
Ми ростемо, нас вже 54! Дуже вам дякую за довіру, далі - більше!
От думаю, можливо на 100 підписників зробити якийсь конкурс чи вебінар...
Ще не думав взагалі над деталями, просто прийшла в голову така ідея)

#offtop@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
4
На 100 підписників робимо
Anonymous Poll
21%
Конкурс з призами
79%
Вебінар