Библиотека 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
🦙🚀 От проблем до идеи и реализации: VSCode LSP для Lama2 на Go

Погрузитесь в путешествие команды Hexmos, в котором она объединила возможности текстового REST API клиента Lama2 с VSCode с помощью Language Server Protocol.

👀 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠Решаем задачи по Go и практикуемся на квизах

Напоминаем, что у нас появился новый канал с задачами по Go, квизами и кодом. Подписывайтесь, чтобы практиковаться вместе с нами.

👉Перейти в канал
👍3😁1
Go 1.21 включает предварительную версию изменения области видимости цикла for, которое команда Go планирует добавить в Go 1.22, устраняя одну из наиболее распространенных ошибок Go.

🤔 В чем сыр-бор?

На первом скрине код должен вывести "a,b,c", верно?

На самом деле мы получаем "c,c,c". Причины такого поведения описаны здесь.

Эту проблему также можно воспроизвести без конкурентности (второй пример).

Ошибка такого рода вызвала проблемы в проде у многих компаний, включая публично задокументированную проблему в Lets Encrypt.

📌В Go 1.22 команда Go планирует измененить циклы for, чтобы они имели область видимости для каждой итерации, а не для каждого цикла.

Чтобы обеспечить обратную совместимость с существующим кодом, новая семантика будет применяться только в пакетах, содержащихся в модулях, которые объявляют go >= 1.22 в файлах go.mod.

Go 1.21 включает предварительный просмотр изменения области видимости. Если вы скомпилируете свой код с переменной окружения GOEXPERIMENT=loopvarset, новая семантика будет применена ко всем циклам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💯20🤔8👍6🔥5
🤖Telegram-бот для новостей на Go, PostgreSQL и OpenAI API

Go-разработчик Ильдар Карымов делится опытом разработки Telegram-бота, который автоматически достаёт свежие новости и статьи про Go из разных источников, генерирует для них саммари с помощью ChatGPT, после чего публикует их в Telegram-канал.

📺Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍2😁1
Таненбаум vs Торвальдс (микроядро vs монолит)

Старый добрый профессиональный спор, который перерос в холивар. Первыми его начали известные разработчики Эндрю Таненбаум и Линус Торвальдс в начале 90-х в одной из новостных групп «Юзнета».

Таненбаум и Торвальдс холиварили из-за архитектуры ядра ОС. Первый утверждал, что лучше использовать микроядра, второй — монолитное ядро. И сколько раз они не возвращались к публичному обсуждению архитектуры ядра, каждый оставался при своём мнении.

А что сейчас? Да ничего не изменилось. Холивар разгорается при обсуждении абсолютно любой темы.

Любите холиварить?
👍 — конечно — в споре рождается истина
🤔 — ненавижу — только мешает работать
💯 — смотря где и при каких обстоятельствах

#холивар
💯70👍38🥱16🤔11
Profiling_Go_Applications_in_the_Right_Way_with_Examples_by_Abdulsamet.pdf
5.5 MB
Правильное профилирование приложений с примерами: гайд для Go-разработчика

Профилирование — важный метод анализа приложений и выявления узких мест, снижающих производительность приложения.

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

👀 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🤔 Конкурентность — это не параллелизм

Перед вами полное изложение доклада Роба Пайка Concurrency is Not Parallelism. Иллюстрации и диаграммы воссозданы, исходный код взят дословно со слайдов, за исключением комментариев, которые в некоторых местах были расширены.

🤩 Читать
👍15🔥4
Это не реклама, а обзор книги «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.»

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

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

👀Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍242🌚1
🧰 static-server — как python -m SimpleHTTPServer <port>, только на Go.

Развернуть статический файловый сервер на Go всегда было просто:

package main

import "net/http"

func main() {
port := ":8080"
handler := http.FileServer(http.Dir("."))
http.ListenAndServe(port, handler)
}


Но у Eli Bendersky есть другой способ. Стоит попробовать:

$ go run github.com/eliben/static-server@latest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты

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

#туториал
👍31🔥1🤔1🥱1
Категоризация интерфейсов Go из стандартной библиотеки v1.21 — документ, который является частью большой работы (видимо, книги) и представляет собой отличный способ разобраться с работой интерфейсов под капотом.

📌Внутри следующие категории:

• Algorithms
• Data
• Drivers
• File systems
• Getting and/or Setting
• Implementation
• Membership
• Parsing
• Process control
• Protocols
• Reading and/or Writing
• Representation
• Subtypes

🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5
📖 100 ошибок в Go и как их избежать

Скорее всего, вы слышали о книге Teiva Harsanyi 100 Go Mistakes and How to Avoid Them. Возможно, вы не знаете, что в общем доступе есть сокращенная версия книги. В ней собраны все ошибки из книги.

🔗GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17
Битва за производительность: SparseMap vs GenerationsMap

Пока Искандер Шарипов занимался своими геймдев-задачами, натолкнулся на то, что get и set у sparse map из статьи Расса Кокса довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.

То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом — время исполнения росло из-за более дорогих get+set.

А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set.

🔗 Читать
🔥121
🦸 9 способов настройки градиента цели для поддержания мотивации

Разбираемся, как настроить себя идти до конца, преодолевая препятствия и лень.

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

#саморазвитие
🔥1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
🧰fx долгое время был полезным инструментом для просмотра JSON-файлов, но за дело взялся SRE из Google Антон Медведев.

👨‍🔧Антон переписал fx с нуля, добавив новый тематический вид TUI, поиск по регулярным выражениям, нечеткий поиск и поддержку «даже самых массивных JSON-файлов».

🤩Поистине крутой инструмент и отличный пример использования преимуществ Go.

🔗fx 30.0.0
👍21🔥8
Практический взгляд на пакет slogtest

В пакете slog есть обработчик, который определяет формат вывода логов по умолчанию: один выводит JSON, а другой key=value. В дополнение к ним slog позволяет относительно легко создать кастомные обработчики. Если хотите погрузиться в тему подробнее, есть целое руководство по написанию последних.

Но как протестировать этот самый кастомный обработчик? На помощь приходит пакет testing/slogtest. Он очень прост в использование и помогает среди прочего убедиться, что ваш обработчик соблюдает все необходимые правила. Под катом — практический взгляд на достоинства и недостатки тестирования обработчика с помощью slogtest👇

🔗 Читать
👍10🤔1
💬Есть ли у вас собственный проект на Go с открытым исходным кодом? Неважно, где и как вы его используете: для рабочих проектов или в личных целях. Это в любом случае интересно. Если их несколько, расскажите об одном, который больше всего достоин внимания.

🫶Ждем ваши проекты в комментариях👇

#инструменты
👍13🌚1