golang українською
79 subscribers
10 photos
1 video
60 links
Telegram автора: @nesymno
Linkedin автора: bit.ly/nesymno-linkedin
Github каналу: bit.ly/uagolang-github
Download Telegram
golang українською pinned «На 100 підписників робимо»
Знаєте, погрузився я трохи в це все гошне ком'юніті українське, і таке враження, що його ведуть студенти)
Це непогано, але має мало спільного з професійною діяльністю, як на мене...

Писати ігри на Go звичайно непогана навичка, але хорошого розробника від початківця відрізняє якраз досвід виконання певних типових (а іноді і зовсім нетипових) бізнес-задач. Я не претендую на істину останньої інстанції, а просто ділюсь думками виключно зі свого довіду.
Можеш написати Doom на Go? Це звичайно прекрасно, але у нас тут навантаження на сервера зросло і нам необхідно провести певне performance review потенційно ресурсо-затратних операцій в нашій системі... А можливо якийсь інструмент не виправдовує себе, або задачі, які наш бізнес вирішує, можна більш оптимально виконати за допомогою іншого, більш підходящого інструменту?

І яким би обізнаним гофером ти не був - важливі не максимально різнобічні знання (хоча і таке існує, але конкуренція, самі розумієте), а саме розуміння бізнес процесів та вплив написаного тобою коду на систему. З позитивного - мені дуже сподобалась ідея коротко розказувати про якісь нюанси в Go. Я був здивований, але Telegram вміє підсвічувати різні мови в code блоці.

Також планував зробити анонс наступної статті, але хай це буде сюрпризом 😈

#thoughts@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴2
Всім привіт! Буду іноді закидати вам задачки. Якісь складні, якісь легкі - різні.
Почнемо з легкого, отже, що виведе даний код?
Чи бачите ви тут якісь помилки? Які? Як виправити і чому вони виникають?
Які потенційні проблеми в коді (в цьому, неправильному варіанті) ви бачите?

Playground: https://goplay.tools/snippet/VWtsgqD0_a6

Відповіді пишіть в коментарях та прикріплюйте також посилання на playground, як у мене.

package main

import (
"fmt"
"math/rand"
"sync"
"time"
)

func worker(id int, tasks <-chan int, results chan<- int, wg *sync.WaitGroup) {
defer wg.Done()

for task := range tasks {
delay := time.Duration(rand.Intn(300)) * time.Millisecond
time.Sleep(delay)

select {
case results <- task * 2:
fmt.Printf("Worker %d processed task %d\n", id, task)
case <-time.After(100 * time.Millisecond):
fmt.Printf("Worker %d timeout on task %d\n", id, task)
}
}
}

func main() {
rand.Seed(time.Now().UnixNano())
taskCount := 10
workerCount := 3

tasks := make(chan int, taskCount)
results := make(chan int, taskCount)

var wg sync.WaitGroup

for i := 1; i <= workerCount; i++ {
wg.Add(1)
go worker(i, tasks, results, &wg)
}

for i := 1; i <= taskCount; i++ {
tasks <- i
}
close(tasks)
close(results)

wg.Wait()

for res := range results {
fmt.Println("Result:", res)
}
}


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

Очікувана відповідь з моїми коментарями:
https://goplay.tools/snippet/NUxjHFKc-Q4

Дякую @andrsj та @intelimed, що витратили свій час, ви молодці! Надіюсь на участь багатьох в наступній задачі!

#offtop@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴1
Хелоу синім трудягам 👋🤣

Сьогодні у нас по плану підбірка з черговими 5-ма пакетами Go. Варто зазначити, що пакети, з якими я працював досить тісно починають закінчуватись, то ж майте на увазі, що не всіма пакетами, якими я тут ділюсь я користувався. Але так чи інакше вони мені здались цікавими, тому тримайте!

1⃣ imaging - потужна та універсальна бібліотека Go для обробки зображень. Вона надає широкий спектр функцій обробки зображень. Працював з нею на одному з минулий проєктів, що був тісно пов'язаний із зображеннями та відео, їх редагуванням, зміною форматів і всяке таке. Має обмежений список підтримуваних типів.

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

2⃣ go-exif – бібліотека для роботи з EXIF даними в зображеннях та відео. Дозволяє додавати, видаляти та оновлювати EXIF-метадані. Корисно, якщо необхідно прибрати копірайти чи якісь девайсні деталі в метаданих.

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

3⃣ pulumi – інструмент IaC (Infrastructure as Code), що дозволяє описувати інфраструктуру прямо Go кодом (і не тільки Go!). Поки що не працював з ним, але в планах є, адже зараз я працюю над проєктом якраз в ніші управління інфраструктурою.

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

4⃣ nats.go - go-клієнт для NATS, високопродуктивної системи обміну повідомленнями з відкритим вихідним кодом. NATS використовується для створення мікросервісних архітектур, IoT додатків та розподілених систем, де потрібна швидка та надійна передача повідомлень. Production ready.

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

5⃣ gonum – open-source проєкт, спрямований на надання надійних інструментів для наукових обчислень в Go. Він є альтернативою NumPy (Python) чи програми MATLAB. Може працювати з матрицями, лінійною алгеброю, комплексними числами, інтегруванням, диференціюванням, графами та з багато чим іншим.

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

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

#підбірки@uagolang #friday5@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥2
Всім привіт! А може ви не маєте стікерів гофера?
Нате: https://t.me/addstickers/Free_Gophers_Pack
Якщо маєте інші - діліться!)

#stickers@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
Трохи розбився на мопеді, постараюсь закінчити статтю на днях, але побачимо по стану :(
😱9👍1
Вітаю всіх, колеги! Як і обіцяв (не зважаючи на незначні травми після аварії) - стаття дописана. Тема, про яку я хотів би сьогодні поговорити не нова, впевнений, ви також стикались з подібними проблемами. Що ж це за тема?

Це скарб управління доступами в застосунках. Важлива тема з точки зору безпеки, і в сьогоднішній, першій (з двох) статтей циклу ми поговоримо про Casbin - open-source бібліотеку контролю доступу, яка підтримує різні типи: ACL, RBAC, ABAC.

Українською:
https://uagolang.notion.site/Casbin-Go-1c20710a945c80dcafaad6e70d02dd4f

English:
https://uagolang.notion.site/Casbin-access-control-in-Go-1c80710a945c801f8028e8b5fd412866

Став 👍 якщо сподобався матеріал! Якщо ви вже працювали з Casbin - пишіть про свій досвід в коментарях!
Слава Україні 🇺🇦🇺🇦

#авторське@uagolang #casbin@uagolang #security@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝5
Як летить час, помітили? Вже знову п'ятниця. І нова підбірка 🎶

1⃣ zap - високопродуктивна бібліотека логування з підтримкою структурованих логів, JSON-виводу та малою кількістю алокацій пам'яті, що робить її дуже швидкою! Також, є sugar варіант з більшою кількістю функцій-хелперів.

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

2⃣ gorgonia – фреймворк для машинного навчання в Go, схожий на TensorFlow. Дозволяє будувати нейромережі, працювати з автодиференціюванням і виконувати тензорні обчислення.

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

3⃣ ksuid – альтернатива UUID, яка містить часовий префікс, що полегшує сортування. Collision-free, coordination-free, dependency-free.

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

4⃣ color - бібліотека, що дає простий та зрозумілий API для додання кольорів в консольні команди.

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

5⃣ go-humanize – пакет, що дозволяє легко форматувати різні величини (розмір пам'яті, час, числа тощо) в людино-зрозумілий вигляд.

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

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

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

Мені цікаво, тут у когось є досвід стартаперства? Можливо навіть раундів інвестицій?

#offtop@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
Доброго ранку, колеги 🫡👋

Екватор тижня починаємо із задачки на слайси в Go. Я би не сказав, що вона дуже складна, але чітко демонcтрує розуміння їх роботи.
Якщо ще й прокоментуєте рішення (код) - буду подвійно вдячний 🎶

Playground: https://goplay.tools/snippet/dK00TwKkib2
Рішення: ти бач які розумецькі! Вирішуй задачу, а не морозся 😄

package main

import (
"fmt"
)

/*
🏆 Задача: імплементуйте функцію CloneAndModify(original []int) ([]int, []int), яка:
- Робить повну копію слайсу original
- Змінює лише копію — кожен елемент множиться на 2

↪️ Повертає два слайси:
1. Незмінений оригінал
2. Модифікована копія

⚠️ Умова:
- Якщо після змін копії змінюється і оригінал — значить копію зроблено неправильно
*/

func main() {
original := []int{1, 2, 3, 4, 5}
o, c := CloneAndModify(original)

fmt.Println("original:", o)
fmt.Println("copy:", c)
}

func CloneAndModify(original []int) ([]int, []int) {
// напиши код тут

return original, nil
}


Чекаю на відповіді в коментарях!

#practice@uagolang #trytosolve@uagolang #slices@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Очима кліпнув в понеділок, як відкрив - вже п'ятниця 🎶
А це значить, що у нас чергова підбірка!

1⃣ connectrpc/connect-go - сучасний фреймворк для побудови API за допомогою gRPC, gRPC-Web та власного протоколу Connect. Простіший у використанні, ніж стандартний gRPC, та генерує ідіоматичний Go код.

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

2⃣ goccy/go-json - високопродуктивна бібліотека для роботи з JSON, яка в багатьох випадках швидша за стандартну encoding/json завдяки оптимізаціям та використанню unsafe 💨

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

3⃣ uber-go/automaxprocs - маленька утиліта, яка автоматично встановлює значення GOMAXPROCS відповідно до лімітів cgroup (актуально для контейнерів). Допомагає оптимізувати використання ресурсів CPU 📈

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

4⃣ jackc/pgx - популярний драйвер та інструментарій для роботи з PostgreSQL в Go. Відомий своєю продуктивністю, підтримкою багатьох функцій PostgreSQL та гнучким API, що відрізняється від стандартного database/sql 🐘. Я вже давно перейшов на нього, для цього драйвера є різні адаптери, типу трейсів від otel тощо.

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

5⃣ go-resty/resty - багатофункціональний HTTP та REST клієнт для Go. Має багато зручних можливостей: автоматичні ретраї, мідлвери, легка робота з JSON/XML, підтримка проксі та багато іншого. Цікаво, я щось подібне пишу для тестових HTTP клієнтів зазвичай. Можна буде якось спробувати, виглядає годно.

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

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

#підбірки@uagolang #friday5@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Колеги, вітаю! Завтра буде стаття.
Але не про контроль доступу, там дуже багато практичної роботи, я все ще в процесі + планую заопенсорсити тулзу для роботи з Casbin.
Тема, що буде розглянута завтра теж цікава і важлива! 😏

Ставте 👍, якщо чекаєте)

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

Сьогодні ми поговоримо про профілювання в Go, для чого воно, чому важливе і які є методи візуалізації профілів. Всі приклади коду ви зможете знайти в нашому репозиторії, він вказаний в статті.

ПОЇХАЛИ 😋

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

English:
https://uagolang.notion.site/Profiling-in-Go-1d60710a945c80bbbee8cb2a8a059b90

Став 👍 якщо сподобався матеріал! В кінці статті є завдання, якщо маєте бажання - чекаю на відповіді в коментарях!
Слава Україні 🇺🇦🇺🇦

#авторське@uagolang #profiling@uagolang #pprof@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2
Колеги, вітаю з новим днем і п'ятницею 👋!
Відсьогодні в рубриці будуть зміни - 3 пакети, замість 5.

1⃣ gota - бібліотека для роботи з DataFrames, подібно до pandas у Python. Корисна для попередньої обробки та аналізу даних перед застосуванням ML-алгоритмів.

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

2⃣ goose – пакет для міграцій SQL-баз даних, що може бути викликаний як в коді, так і командою. Дозволяє писати міграції як на чистому SQL, так і в Go функціях.

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

3⃣ bild – пакет, що імплементує набір алгоритмів паралельної обробки зображень на чистому Go. Мінімум залежностей.

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

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

#підбірки@uagolang #friday3@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Вітаю, шановні колеги 🫡

В минулій статті ми познайомились з профілюванням. Цього разу я вирішив розказати про області пам'яті в Go та що таке Escape Analysis.
Все з прикладами, як завжди. Приємного прочитання!

Українською:
https://uagolang.notion.site/Escape-Analysis-Go-1de0710a945c800f9961c0ee888bfebe

English:
https://uagolang.notion.site/Escape-Analysis-in-Go-allocate-memory-correctly-1de0710a945c80ab840cc5f737e2edce

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

#авторське@uagolang #escape_analysis@uagolang #stack@uagolang #heap@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥1
Алоха, колеги 😎

Ще одна п'ятниця - ще одна підбірка.

1️⃣ gotgbot - бібліотека, для розробки Telegram ботів на Go. Із всього, що пробував - найзручніша і покриває абсолютно увесь BotAPI від Telegram.

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

2️⃣ Physix-go - відносно нова бібліотека, написана на чистому Go, для створення 2D фізичних симуляцій. Вона надає базові примітиви для моделювання тіл, зіткнень та інших фізичних явищ. Хоча проєкт ще молодий, він демонструє цікавий напрямок розвитку Go для нестандартних завдань.

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

3️⃣ task - елегантний та інтуїтивно зрозумілий task runner / build tool, написаний на Go. Дозволяє легко визначати та виконувати різноманітні завдання, від збірки проєкту до запуску тестів, за допомогою простого файлу Taskfile.yml. Позиціонується як альтернатива Makefile на Go.

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

Сподіваюся, ця добірка надихне вас на нові проєкти! 👍
Буду вдячний за ваші лайки та поширення серед колег-розробників.
Слава Україні! 🇺🇦

#підбірки@uagolang #friday3@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Колеги, всіх вітаю 👋

Наткнувся на дуже цікаве та інформативне дослідження від JetBrains. Вони зробили аналіз ринку за 2024 рік та прийшли до загалом відомих, але іноді досить цікавих висновків.
Це не дослівний переклад - просто моя вижимка.

Трошки філософії: дослідження задають напрями, АІ планують забрати наші робочі місця, а ми - просто продовжуємо рухати цей світ вперед.

Оригінал дослідження: https://blog.jetbrains.com/research/2025/04/is-golang-still-growing-go-language-popularity-trends-in-2024/


📈 Популярність зростає

Go входить до топ-5 мов програмування, які розробники хочуть вивчити у 2025 році. Його обирають за простоту, ефективність і високу продуктивність у хмарно-орієнтованій розробці. Зарплати в США зростають і навіть розробник Junior рівня з декількома роками досвіду може отримувати від 50 000$/рік.

🧑‍💻 Хто використовує Go?

Go особливо популярний серед:
- DevOps-інженерів (25%)
- Backend-розробників (24%)
- Розробників інфраструктурних інструментів (20%)

🔧 За що розробники люблять Go?

- Мінімалістичний синтаксис
- Вбудована підтримка конкурентності
- Висока продуктивність без складності C++
- Ідеально підходить для мікросервісів, CLI та хмарних платформ

🌍 Ком’юніті стрімко розвивається

Go має одну з найактивніших і найпідтримуючих спільнот. Мова еволюціонує відповідно до реальних інженерних потреб.

🤖 Що далі? Go у сфері ШІ

Хоча Python досі домінує у сфері штучного інтелекту, Go поступово займає свою нішу - особливо там, де критично важливі продуктивність, конкурентність і масштабованість. Завдяки проєктам на кшталт gorgonia, go-audio та сильній підтримці API й дата-пайплайнів, стає серйозною альтернативою для ШІ-інфраструктури та прагне захопити територію не лише хмарних сервісів, а й стати рушієм майбутнього ШІ.

📊 Цікавий факт: 90% розробників на Go використовують його як основну мову в роботі!

Go — це не просто "ще одна мова", це потужний інструмент для вирішення складних інженерних задач.

#думка@uagolang #golang@uagolang #developertrends@uagolang #research@uagolang
———————
golang українською
🇺🇦
Please open Telegram to view this post
VIEW IN TELEGRAM
7