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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
3️⃣ defer как инициализация

В 4-м примере main вызывает mysteriousDefer() как отложенную функцию, поэтому все, что напечатает mysteriousDefer(), должно быть напечатано после того, как main выполнит свои выводы.

Однако если вы запустите этот код, вы получите следующий вывод:


f runs
main runs
func returned by f runs


Почему это антипаттерн

Этот «хитрый трюк» позволяет объединить инициализацию и очистку в одной функции.

Вы заметили двойные скобки в вызове defer?


defer mysteriousDefer()()


Обычно вы бы вызвали отложенную функцию так:


defer mysteriousDefer()


Вторые скобки вызывают mysteriousDefer() перед тем, как она будет оценена директивой defer. Затем mysteriousDefer() печатает свое сообщение и возвращает другую функцию, которая является фактической функцией, отложенной defer.

Этот запутанный набор трудно понять, а двойная пара скобок легко может быть пропущена при беглом ревью кода.

Что плохого в написании функции инициализации и функции очистки отдельно?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍203
🧬 Мысли об использовании Go для биоинформатики

Биоинформатик и инженер по обработке данных размышляет об использовании различных языков для научной работы, уделяя особое внимание Go и Rust, Python, Crystal, Julia и Zig.

У Go много плюсов, но, по его мнению, он не прорвался в биоинформатику в крупных масштабах, хотя за пределами этой области у него был феноменальный рост?

Любопытно, что автор оценивает количество строк для работы с файлами и вообще сложность этой операции с точки зрения среднестатистического программиста. На основании этого делает выводы, сравнивая с языком D и его четырьмя строками.

💬 Как вам такой подход?
😁21👍5🥱1🌚1👾1
☝️Схема типичного стартапа ☝️

💬 Есть здесь те, кто работает в стартапе? Что скажете?

#холивар
😁31💯11👍3🔥1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🕹️🔥 Интерактивное исследование распространенных стратегий организации очередей

Перед вами мини-исследование, в котором изучается организация очередей в контексте HTTP-запросов. Автор начинает с простых концепций и постепенно разбирается с более сложными очередями.

📌 Под катом:

☑️ Чем полезны очереди
☑️ 3 разных типа очереди
☑️ Как эти 3 очереди сравниваются друг с другом
☑️ 1 дополнительная стратегия организации очередей, которую вы можете применить к очередям любого типа, чтобы не отбрасывать приоритетные запросы
🥰11👍51
👩‍💻 Популярные ошибки в Go и как их избежать

Go известен своей лаконичностью и простотой синтаксиса, но даже в нём есть множество подводных камней, с которыми можно столкнуться в работе. Дмитрий Королёв, бэкенд-разработчик в Авито, разбирает распространённые ошибки с примерами и рассказывает, как их можно избежать.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤔52
Доклады были опубликованы уже месяц назад, но лучше поздно, чем никогда 👇

🌐 Как стать сеньором / Василий Романов (VK, Облако Mail ru)
🌐 Domain Driven Design в Go — это не больно (почти) / Илья Сергунин (Авито)
🌐 Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
🌐 Как научить сервис сообщать об ошибке, чтобы это было понятно пользователям, машинам / Александр Лырчиков (YADRO)
🌐 Работа с аренами — почти избавляемся от GC / Максим Горозий (Тинькофф)
🌐 Собеседования на senior-разработчика: проверяем soft skills вопросами на hard skills / Иван Матвеев
🌐 Потоки данных, графы, стейт-машина — строим бизнес-логику в Go-микросервисах / Апрес Антонян
🌐 Выжимаем из Go максимум производительности / Никита Галушко (VK, ВКонтакте)

👉 Весь плейлист

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🖼 Визуализация покрытия кода Go в виде древовидной карты

Интересный способ визуализировать большие проекты с помощью результатов go test -coverprofile.

$ go install github.com/nikolaydubina/go-cover-treemap@latest
$ go test -coverprofile cover.out ./...
$ go-cover-treemap -coverprofile cover.out > out.svg


👩‍💻 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40👍6
💻🚀🏰 Как мы создали ИИ-стартап на хакатоне выходного дня в Германии

Инженер ПО рассказал нам о своих выходных на хакатоне в Кельне, где с командой пытался создать AI-стартап всего за два дня. Участники прошли путь от подачи идей в пятницу вечером до демонстрации работающего приложения к воскресенью.

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

🔗 Читать статью
🔗 Зеркало
Не возвращайте err в Go. Вместо этого добавьте недостающие сведения, необходимые для отладки.


Некоторые разрабы любят жаловаться, что в Go приходится писать множество блоков if err != nil { return err }. Они не понимают, как работают ошибки в Go.

Дело в том, что на самом деле то, на что они жалуются, является совершенно неправильным способом обработки ошибок в Go: возврат err напрямую — это антипаттерн.

В статье автор показывает, что он имеет в виду, на примере кода: библиотеки для настройки mTLS-соединения.

👉 Читать
👍32💯7🤔42🥱2
🚀 Повышение производительности Go-приложений с помощью PGO

Профилируя Go-приложения во время выполнения, Go-компилятор может принимать более эффективные решения по оптимизации в последующих сборках, что приводит к существенному повышению производительности процессора.

Узнайте подробнее из доклада Cameron Balahan, Michael Pratt и James Ma на Google I/O 2024, как работает PGO и как вы можете использовать ее для улучшения (и измерения) производительности своих приложений в Google Cloud и за его пределами.

📺 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍2
👨‍🎓️ 33 лучших вуза России для будущих программистов 2024-2025

Составили список из 33-х вузов, где вы научитесь думать как программист и получите фундаментальные знания в области математики, информатики, компьютерных наук и так далее. Для удобства вузы отсортированы по среднему проходному баллу ЕГЭ: от наибольшего к наименьшему.

🔗 Читать статью
🔗 Зеркало
🥱14😁6👍5
🧰 Реализация MVCC и основных уровней изоляции транзакций SQL

Гайд по разработке базы данных из 400 строк кода с базовой поддержкой пяти стандартных уровней транзакций SQL: read uncommitted, read committed, repeatable read, snapshot isolation и serializable. Автор использует multi-version concurrency control (MVCC) и optimistic concurrency control (OCC).

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉14👍3🔥3
💬 Разрабы, какую музыку вы предпочитаете слушать во время работы?

👍 — энергичная и мотивирующая музыка (рок, поп, электронная)
🔥 — спокойная и расслабляющая музыка (классическая, джаз, саундтреки)
❤️ — предпочитаю работать в тишине

#холивар
👍12586🔥714🌚1
👩‍💻 От и Go: доклады для гоферов про инструменты для фаззинга, kuber-кластер на Go и не только

Подборка презентаций с инструкциями по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали на собственных продуктах.

Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые представили инженеры в выступлениях и презентациях.

🔹 Внедряем фаззинг: какой инструмент вам подойдет / Иван Золотников, инженер в YADRO
🔹 Создаем замену buf: сеанс реверс-инжиниринга / Эдгар Сипки, разработчик в Ozon Fintech, и Василий Близнецов, разработчик в Positive Technologies
🔹 Доступно о паттернах, умных обработчиках и красивой синхронизации в Go / Олег Козырев, старший инженер в AvitoTech
🔹 Учим сервис сообщать понятно об ошибке пользователям, программистам и машинам / Александр Лырчиков, разработчик в команде систем хранения данных в YADRO 
🔹 Пишем свой mini-k8s на Go с helm-шаблонизатором / Станислав Иванкевич, старший программист в команде разработки DataMasters в VK Tech
🔹 Снижаем нагрузку на Garbage Collector и ускоряем работу с памятью, используя sync.Pool / Александр Иванов, тимлид в команде телекома в YADRO 
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72
💸📊 На сколько просели зарплаты в ИТ в 2024 году?

Благодаря открытым данным с сайта Хабр Карьера мы узнали, какие основные тенденции ждать в зарплатном секторе, и сколько получают ИТ-специалисты сейчас.

🤔 Например, в первом полугодии 2023 года в среднем джунам предлагали 80 тысяч рублей, а спустя год это число упало до 72,5 тысячи рублей.

👉 Остальные данные — в статье
👉 Зеркало
👍2