Библиотека 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
⚡️ Расширение границ в Go: от net.Dial до системных вызовов, AF_PACKET и молниеносного AF_XDP

Под катом — сравнительный анализ производительности отправки пакетов в Linux. Если вам нравятся сети, Go и бенчмаркинг, то однозначно понравится этот мини-ресёрч.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍4
🔟 10 суровых истин, которые должен знать каждый джун

Вы думаете, что карьера в ИТ — это сплошные плюшки? Забудьте! Реальность жестока: низкие зарплаты на старте, бесконечные задачи и битва за релокацию. Откройте глаза на суровые реалии прямо сейчас!

👉 Читать статью
👉 Зеркало
🥱21👍9🎉5😁4
🚀 Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

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

Автор описывает девять решений на Go, каждое из которых быстрее предыдущего. Первое, простое и идиоматичное, выполняется 1 минуту 45 секунд, а последнее — примерно 4 секунды.

👉 Читать
👍24🔥5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
💬 Open Source по-русски: путь к технологической независимости или обочина прогресса?

Для одних организаций open source является ключом к преодолению зависимости от иностранных вендоров и драйвером инноваций, для других — дырой в безопасности и обочиной технологического прогресса.

Мы хотим изучить текущее состояние и возможности открытого ПО в России. Пройдите опрос и помогите нам увидеть ситуацию глазами IT-профессионалов.

👉 Ссылка на опрос 👈

Прохождение займёт примерно 4 минуты
👍11😁5
🏎 Улучшения трассировки выполнения в Go 1.22: низкие накладные расходы и масштабируемость

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

☑️ Низкие накладные расходы: благодаря оптимизации трассировок стека, временные затраты CPU на трассировки выполнения были сокращены до 1-2% для многих приложений, что делает трассировку более пригодной для постоянного использования.

☑️ Масштабируемость трассировок: переработка формата трассировок и их событий позволила снизить требования к памяти при анализе трассировок, решая проблему анализа больших объемов данных.

☑️ Flight recording: позволяет непрерывно вести трассировку и сохранять только самые последние данные трассировки, что идеально подходит для захвата событий, произошедших непосредственно перед важным инцидентом.

☑️ API для чтения трассировок: упрощает программный анализ трассировок, делая их более доступными для разработчиков.
15🔥4👍3
Разраб предложил создать HTTP-статус имени Олега Тинькова (признан иноагентом Министерством юстиции РФ) под названием 267 Doubtful But Okay, который означает, что запрос имеет сомнительную семантику, но он принят и обработан. Код статуса 267 выбран по году рождения Олега (1967 год).

💬 Как вам идея?

🤔 — сомнительно, но окэй
👍 — давно пора

#холивар
🤔338👍96🥱33😁18🌚4
👩‍💻 Как написать README для Go-проекта, который привлечет внимание разработчиков

Авторы Go-проекта Daytona поделились несколькими советами по созданию файла README, которые позволили добиться впечатляющих результатов: 4k звезд за первую неделю.

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

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
🤔 Могут ли адреса двух переменных быть одновременно равными и разными?

Код ниже определяет глобальную переменную a и локальную переменную b внутри main(). Затем он выводит адреса обеих переменных и, наконец, сравнивает их.

📌 Сравнение должно оцениваться как true, верно?

var a struct{}

func main() {
var b struct{}

fmt.Printf("&a: %p\n", &a)
fmt.Printf("&b: %p\n", &b)

fmt.Println("&a == &b:", &a == &b)
}


Пример выводит:

&a: 0x58e360
&b: 0x58e360
&a == &b: false


a и b — это пустые структуры, которые имеют нулевой размер, следовательно, они не должны занимать ячейки памяти. Они вообще не должны иметь адрес. Так что сравнивать их адреса с самого начала не имеет смысла.

Так что компилятор Go формально присваивает переменным нулевого размера адрес ради избежания введения специального случая переменных «без адреса». Компилятор может даже присвоить им один и тот же адрес, потому что для переменных нулевого размера не имеет значения, какой формальный адрес у них есть.

📌 Спецификация Go говорит:

Две различные переменные нулевого размера могут иметь одинаковый адрес в памяти


#tip
👍76🤔1132👾2
💪 Что не так с MVP: как создать конкурентоспособный продукт

Традиционная концепция MVP нуждается в пересмотре — авторы предлагают альтернативный подход, основанный на тесном взаимодействии с целевой аудиторией и непрерывных итерациях для создания действительно ценного продукта.

👉 Читать статью
👉 Зеркало
👍5👾2🤔1
🧰 Failsafe-go — Go-библиотека для создания отказоустойчивых приложений на Go. Она позволяет обернуть исполняемую логику одной или несколькими resilience политиками, которые могут быть комбинированы и составлены по мере необходимости.

📌 К таким политикам относятся: Retry, Circuit Breaker, Rate Limiter, Timeout, Fallback, Hedge и Bulkhead.

fallback := fallback.WithResult(backupConnection)
circuitBreaker := circuitbreaker.WithDefaults[any]()
timeout := timeout.With[any](10*time.Second)

// Get with fallback, retries, circuit breaker, and timeout
failsafe.Get(Connect, fallback, retryPolicy, circuitBreaker, timeout)


👉 GitHub
👉 Сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥4
🤔 Каким вы видите для себя идеальный собес?

Пример недушного собеса по мотивам статьи опытного интервьюера Олега Плотникова:

1️⃣ Вопрос про предыдущий опыт: в двух словах описать самый интересный (сложный) проект.

В чем суть проекта? Размер команды? Роль? Основной вклад? Срок проекта? И т. д.

2️⃣ Типовая задача, с которой реально придется сталкиваться, но решаемая за 5-15 минут + несколько вопрос в глубину про понимание инструмента (языка, фреймворка).

📌 Три основных аспекта, по которым оценивается кандидат:

🔸 Харды и наличие релевантного опыта.
🔸 Коммуникация (софт скиллы). Умение общаться, быстро и структурировано объяснить суть вопроса.
🔸 Проактивность в обучении и страсть к делу.

📌 За каждый навык дается до трех баллов. Есть хоть один ноль — сразу до свидания.

🔸 0 — все плохо
🔸 1 — с пивом покатит
🔸 2 — хорошо
🔸 3 — прекрасно

💬 Что думаете?

#холивар
👍15🥱91🌚1
👩‍💻 Изучение Go в 2024 году: от новичка до профи

Автор Domain-Driven Design with Golang Matt Boyle объединил все источники, которые он считает полезными и стоящими, в одну статью.

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

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥3🤔31🥱1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📈 По просьбе подписчиков «Библиотеки программиста» мы провели опрос и выяснили, что у большинства айтишников зарплата в 2023 году выросла.

⚡️ Как выглядит доход среднего айтишника и какие факторы окажут влияние на динамику ИТ-зарплат в 2024 году — расскажем в статье на VC.

👉 Читать

P. S. Свои предложения для исследований пишите в комменты👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🎉3
👩‍💻 Kubernetes — один из самых популярных инструментов для деплоя приложений и сервисов. Его можно использовать как в проде, так и в качестве среды для локального запуска сервисов на машинах разработчиков.

Ведущий разраб юнита Platform as a Service в Авито Павел Агалецкий рассказывает, как поднять маленький кластер Kubernetes на локальной машине с помощью общедоступных инструментов и задеплоить Hello World! на Go.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍3🔥1
💸👨‍💻 Тебе повезло, ты богатый айтишник

Как показали результаты нашего исследования, даже с профильным образованием найти первую работу в ИТ бывает нелегко. Большинству свитчеров первый оффер дается еще сложнее: огромный объем необходимых знаний и навыков нужно получить как можно быстрее.

Многие учатся (самостоятельно или на курсах) без отрыва от основной работы. Самые отчаянные войтивайтишники бросают работу и начинают учиться, живя на скромные сбережения. Герой этой истории, фронтендер Олег, начинал именно так. Под катом — его история.

👉 Читать статью
👉 Зеркало
👍61
20+ вопросов, которые стоит задать на собеседовании в стартап

Узнайте, на что обратить внимание, чтобы найти стартап, который не только «выстрелит», но и даст вам возможность вырасти как специалисту.

👉 Читать статью
👉 Зеркало
👍6
🧰 Konf — простой загрузчик конфигурации для Go, который читает/отслеживает файлы, переменные окружения, флаги и облачные сервисы (AWS, Azure, GCP). Недавно была представлена версия 1.0.0.

konf предлагает другой взгляд на то, как программы на Go могут читать конфигурацию, не привязываясь к конкретному источнику конфигурации.

📌 Основные возможности:

🔧 konf.Unmarshal для чтения конфигурации в любой тип объекта.
🔧 konf.OnChange для регистрации колбэков при изменении конфигурации.
🔧 konf.Explain для понимания, откуда загружается конфигурация.
🔧 Различные провайдеры для загрузки конфигурации из облаков (AWS, Azure и GCP).
🔧 Zero dependencies в core модуле, который поддерживает загрузку конфигурации из переменных окружения, флагов и встроенной файловой системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🤔31
Forwarded from Библиотека программиста | программирование, кодинг, разработка
⚡️Proglib запускает канал про ИИ-помощников

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

⭐️ChatGPT
⭐️Gemini
⭐️Claude
⭐️Bing
И другие!

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5👍21🔥1🤔1
🧼👩‍💻 Введение в Domain-Driven Design через разработку ToDo приложения на Go

Пополняемый гайд по разработке простого приложения на Go с использованием принципов DDD и чистой архитектуры.

📌 Чему вы научитесь:

☑️ Как применять DDD и чистую архитектуру в проектах на Go.
☑️ Практическому использованию структур и интерфейсов для организации кода и логики приложения.
☑️ Созданию эффективных тестов для проверки функциональности приложения.

Следите за обновлениями — автор планирует улучшить проект, используя BDD и Cucumber для тестов, внедрив новые методы хранения списка (inmem, db) и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱14🔥6🤩2👍1