Библиотека Go-разработчика | Golang
23.3K subscribers
2.08K photos
42 videos
87 files
4.45K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
💸 Рост или падение? Изменение зарплат в IT за 2023 год

Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?

Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!

Опрос займёт у вас примерно 4 минуты.

👉 Ссылка на опрос
👏6🤔32👍1
🤔 Сохранение объекта Go в JSON-файле

Используйте jsonfile для сохранения значения Go в файле JSON.

type JSONFile
func Load[Data any](path string) (*JSONFile[Data], error)
func New[Data any](path string) (*JSONFile[Data], error)
func (p *JSONFile[Data]) Read(fn func(data *Data))
func (p *JSONFile[Data]) Write(fn func(*Data) error) error


В несколько строк кода этого репозитория вложено немного больше мыслей, чем вы могли ожидать. Если вам нужна более подробная информация, смотрите заметки в блоге.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍31
🏃 Самоучитель по Go для начинающих. Часть 7. Массивы и слайсы. Append и сopy. Пакет slices

Рассмотрим реализацию массивов и слайсов в языке Go, разберем функции append и copy, изучим пакет slices и по традиции решим несколько занимательных задач.

👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👉 Часть 6
👍172🔥1😁1🥱1
🤔 Остаться или уйти? Оптимальный срок работы на одном месте

Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?

Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.

Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?

👉 Расскажите о своём опыте в нашем новом опросе 👈
🥱21🌚4👍32👾1
🧰 errcheck — инструмент для проверки непроверенных 🤯 ошибок в Go-коде. Недавно вышла версия 1.7.0.

📌 Для базового использования просто укажите интересующий путь к пакету в качестве первого аргумента:

errcheck github.com/kisielk/errcheck/testdata


📌 Проверить все пакеты в текущей директории:

errcheck ./...


📌 Или проверьте все пакеты в вашем $GOPATH и $GOROOT:

errcheck all


👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍212
🖼️ Новый видеогайд про lock-free структуры данных в Go от Владимира Балуна:

Таймкоды:

00:00 — Lock-free структуры данных
00:41 — Реализация стека на связном списке
01:59 — Неправильная реализация lock-free стека
06:17 — Правильная реализация lock-free стека
09:43 — ABA проблема
11:55 — Hazard pointers
12:13 — Tagged pointers
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍12🌚3🥱2
🤔 От Go к Rust: два типа читаемого кода

Читаемость кода часто связана с тем, насколько синтаксис и концепции языка знакомы разработчику. Что кажется читаемым одному, может быть непонятным другому.

Автор статьи разделил понятия «читаемость для новичков» (как быстро можно начать читать новый ЯП) и «читаемость для опытных» (как быстро опытный разработчик может понять код).

«При чем тут Go и Rust?» — спросите вы. А при том, что по мнению автора Go выбирает читаемость для новичков, в то время как Rust оптимизируется для опытных разработчиков.

Важно соблюдать баланс между упрощением кода для новичков и предоставлением продвинутых инструментов для опытных разрабов.

💬 Что думаете?
👍6🌚42
🖼️ Начните со стандартной библиотеки Go

🤔 Начиная проект, новички часто задают следующие вопросы:

🔸 Какой логгер/веб-фреймворк/... следует использовать?
🔸 Какую ORM лучше использовать?

🤷‍♂️ Эти вопросы заданы из лучших побуждений, но все они упускают из виду ключевой аспект — Go имеет отличную стандартную библиотеку.

📌 Читайте подробнее, почему иногда действительно следует начать с использования стандартной библиотеки Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
💯15👍51
⚒️ Go 1.22: Rangefunc Experiment

Перевод материала с Go Wiki о простых одноуровневых циклах:

☑️ Что такое range func?
☑️ Нюансы
☑️ Push/Pull - семантика
☑️ Как попробовать
☑️ Пример: перебор слайса в случайном порядке
☑️ Послесловие
🔥5😁3👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
Я и моя команда DevOps пытаемся устранить неполадки кластера Kubernetes в продакшене

#жиза
👍31😁31💯8🔥1👾1
👌 Искусство интеграции Go и C: гайд по работе с cgo

📌 Автор рассматривает ключевые аспекты и лучшие практики взаимодействия с C-библиотеками, акцентируя внимание на:

🔸 Введении в cgo: обзор основных концепций и использования пакета C в Go.
🔸 Работе с массивами и срезами: техники для безопасной и эффективной передачи данных между Go и C.
🔸 Строковых преобразованиях: методы для конвертации строк между Go и C, включая управление памятью.
🔸 Управлении указателями: решения для обработки указателей Go в контексте C, избегая проблем со сборщиком мусора.
🔸 Обработке errno в Go: подходы к обработке ошибок в интегрированных системах Go и C.
🔸 Экспорте Go в C: обсуждение возможностей и ограничений использования Go в качестве shared library.
🔸 Лучших практиках и общих подводных камнях: советы и предостережения для разрабов, использующих cgo.
👍27
🤔 В чем сила пакета singleflight?

🔸singleflight предоставляет механизм подавления дублирующихся вызовов функций. Например, наше приложение запрашивает данные из API или базы данных.

🔸Если несколько запросов инициируют один и тот же вызов, это может привести к множественным идентичным вызовам к БД или API. Это создает нагрузку на систему, ведет к потерям CPU, памяти и пропускной способности сети.

🔸Matthew Boyle, автор Domain-Driven Design with Golang, приводит пример использования singleflight для устранения дублирующихся вызовов. В примере, несмотря на то, что 5 горутин одновременно запрашивают данные для одного и того же ключа, функция fetchData будет вызвана только один раз благодаря функции group.Do из пакета singleflight.

💡singleflight также может используется в serverless кейсах. Google App Engine, например, применяет его как часть функции инициализации, поскольку там нет main.go.

#tip
👍20🤔9🥱31🔥1
🤩🖼️ С каким бы скепсисом вы ни относились к индексу TIOBE, согласно ему в феврале Go вошел в десятку лучших, заняв 8-е место.

👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36🥱8
❤️ У каждого языка программирования есть свои уникальные особенности и предпочтительные паттерны проектирования. Go — отличный пример, когда особенности языка задают свой стиль разработки.

💬 Расскажите в комментариях, какой паттерн проектирования вы использовали в своем последнем проекте и почему выбрали именно его? Были ли какие-то уникальные проблемы, которые решил этот паттерн?

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🏃 Самоучитель по Go для начинающих. Часть 8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)

Ранее в уроке про типы данных мы познакомились со строками, рунами и байтами. В этой статье расширим наши знания об этих типах, рассмотрим пакет strings и подробно изучим хеш-таблицы.

👉 Читать статью

📌 Остальные части в серии:

1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
👍73🔥1
🔢 The Twelve-Factor App

🤩 Вы наверняка знаете про документ-методологию для создания SaaS-приложений от команды Heroku. В нем обобщается весь опыт использования и наблюдения за самыми разнообразными SaaS-приложениями в дикой природе.

📹 Как можно погрузиться в эту тему? Прочитать оригинал, перевод на русский или посмотреть видеогайд от канала defer panic, в котором разобран каждый из 12-ти пунктов.

⏱️ Таймкоды:

00:00 — Вступление
02:01 — №1. Кодовая база
04:50 — №2. Зависимости
07:04 — №3. Конфигурация
09:26 — №4. Внешние сервисы
10:40 — №5. Сборка, релиз и выполнение
13:02 — №6. Процессы без состояния
14:42 — №7. Привязка портов (port binding)
16:04 — №8. Конкурентность
17:10 — №9. Одноразовые и утилитарные процессы
19:54 — №10. Паритет окружений
23:40 — №11. Логи
25:32 — №12. Инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍1
👨‍💻 Cosplore3D: серия статей для тех, кто хочет разобраться с работой 3D-графики.

Cosplore3D — игра в жанре экшн и исследования космоса на Go + Ebitengine. Будут планеты, космические корабли, инопланетяне и т. д.

🕹 Wolfenstein 3D Raycaster
🕹 Fixing Raycasting
🕹 Creating a Storyline
🕹 Adding Enemies
🕹 Creating A HUD
🕹 Colors, Images, Graphics
🕹 Ankaran, Level 1
🕹 Killing Those Blobs
🕹 Not Walking Through Walls
🕹 You Can't See Through Walls
🕹 Creating A Level Editor
🕹 The Cosplorer, Level 2
🕹 All The Enemies
🕹 Enikoko, Level 3
🕹 Level 4, Schmeltool
🕹 Game -> Playable
🕹 Creating A Menu
🕹 Boss 1, The Beast
🕹 Boss 2, The Champion
🕹 Adding Sound Effects
🔥83