gram news
Библиотека Go-разработчика | Golang channel avatar

Библиотека Go-разработчика | Golang

@goproglib

Все самое полезное для Go-разработчика в одном канале. Учиться у нас: clc.to/qaSdww По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0 #WXSSA

ProjectsRUProgramming

24,100subscribers

Open the Channel

Latest posts

  • Библиотека Go-разработчика | Golang

    23 Sept, 10:03

    💥 TCP/IP: что происходит с данными в сетиКогда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/IP. Каждый отвечает за свою часть доставки.1️⃣ Канальный Отвечает за передачу данных внутри конкретной сети: Ethernet, Wi-Fi и т. д. Здесь работают MAC-адреса и механизмы доступа к среде.2️⃣ Межсетевой Здесь появляется IP — адресация и маршрутизация пакетов между сетями. Маршрутизаторы определяют, куда отправить пакет дальше.3️⃣ Транспортный Определяет, как данные доставляются между хостами. Основные протоколы:TCP — соединение, порядок данных, подтверждения и повторная передача; UDP — минимальные накладные расходы, без гарантии доставки и порядка.4️⃣ Прикладной Протоколы, с которыми непосредственно работают приложения: HTTP, DNS, SMTP, SSH и другие.TCP vs UDPУ TCP заголовок сложнее: в нём есть sequence number, acknowledgement, window и другие поля, необходимые для управления передачей. У UDP всё проще: порты, длина, checksum и данные.В Go разницу особенно хорошо видно при работе с net.TCPConn и net.UDPConn.📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    1,1301132Open in Telegram
  • Библиотека Go-разработчика | Golang

    22 Sept, 10:47edited

    🔴 Встроенные функцииlen, make, panic — встроенные функции Go, которые можно использовать без импорта пакетов. Но почему тогда len указана в документации builtin как:func len(v Type) intbuiltin — специальный пакет только для документации. Он не компилируется, а Type — условная заглушка для типа аргумента.При этом built-in — не обычные функции. У них нет стандартных Go-типов: компилятор обрабатывает их вызовы особым образом.🟡 Например, len(s) для среза может быть преобразован компилятором в получение длины из внутреннего представления среза. Для make, panic и других built-in механизм уже другой.Поэтому никаких дженериков вроде lenT any в исходном коде нет — built-in являются специальными конструкциями языка, а builtin лишь описывает их для документации.📍 Навигация:
    2,12031Open in Telegram
  • Библиотека Go-разработчика | Golang

    21 Sept, 12:18

    🤩 Go с нуля: серия базовых шпаргалокСобрали путь от Hello, World! до goroutines, channels и context.День 1 — синтаксис, модули и инструменты День 2 — типы, функции, слайсы, map и ошибки День 3 — интерфейсы, структуры, методы, указатели и композиция День 4 — goroutines, channels, select, WaitGroup, Mutex и contextНекоторые формулировки в карточках упрощены для новичков: порядок map не гарантирован, поведение slice зависит от backing array, а WaitGroup и Mutex решают разные задачи.📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика
    2,750file821Open in Telegram
  • Библиотека Go-разработчика | Golang

    20 Sept, 10:20

    🤔 Вопрос с собеседования по GoЧто выведет программа?❤️ — [1 2 3 4 5] / [1 2 10] 🔥 — [1 2 10 4 5] / [1 2 10] 👍 — [1 2 3 4 5] / [1 2 3]👇 Правильный ответ (нажми, чтобы прочитать):🔥 — [1 2 10 4 5] / [1 2 10]b := a[:2] создаёт слайс, который использует тот же backing array, что и a.У b остаётся capacity до конца исходного массива, поэтому append не выделяет новый массив, а записывает 10 в третий элемент.В итоге изменяется и a:[1 2 10 4 5] [1 2 10]
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    2,830694421Open in Telegram
  • Библиотека Go-разработчика | Golang

    19 Sept, 10:27

    🛠 Rune — open-source IDE и terminal multiplexer на GoRune объединяет IDE, терминал и AI-agent в одном приложении.Что интересного:• GPU-ускоренный интерфейс; • native graphics: OpenGL на Linux и Metal на macOS; • language intelligence из коробки; • встроенный agent; • терминалы, вкладки и окна в едином workspace; • E2E-зашифрованная сеть между экземплярами Rune.Без Electron — приложение использует нативный графический pipeline.Установить:curl -fsSL https://rune.build/install.sh | sh🔗 GitHub
    2,900video7622Open in Telegram
  • Библиотека Go-разработчика | Golang

    18 Sept, 08:19

    🤩 SQLite вместо отдельного брокера в GoWatermill поддерживает SQLite Pub/Sub — сообщения передаются между publisher и subscriber через таблицы SQLite.Что это даёт:— не нужен Kafka, RabbitMQ или Redis; — сообщения хранятся в SQLite-файле; — данные переживают перезапуск приложения; — удобно для небольших сервисов и локальной разработки.🔴 Публикация:publisher, err := wmsqlitemodernc.NewPublisher( db, wmsqlitemodernc.PublisherOptions{ InitializeSchema: true, Logger: logger, }, )
    3,43011851Open in Telegram
  • Библиотека Go-разработчика | Golang

    17 Sept, 15:15edited

    ⚡️ Go 1.27 ускоряет небольшие аллокацииВ Go 1.27 появился size-specialized memory allocation — специальные пути выделения памяти для небольших объектов.Что изменилось:— аллокации объектов размером менее 80 байт могут стать быстрее на 20–30%; — в программах с большим количеством аллокаций общий прирост может достигать 1%; — максимальный эффект ожидается для объектов на 16 и 24 байта.🔴 Почему это работает?Раньше runtime использовал общий путь mallocgc, которому нужно определить размер объекта, класс аллокации и дополнительные параметры.➡️ Теперь для часто встречающихся размеров есть специализированные функции. Они заранее знают размер объекта и могут:— быстрее очищать память; — не вычислять класс аллокации повторно; — эффективнее выполнять служебные операции; — использовать
    3,410755Open in Telegram
  • Библиотека Go-разработчика | Golang

    16 Sept, 10:29edited

    🛠 Напишите конфиг самиviper — самая частая рекомендация для конфигурации в Go. Он умеет читать файлы, переменные окружения, удалённые источники и устанавливать дефолты. Звучит удобно, но на практике создаёт проблемы.🔴 В чём проблемаViper тянет большое дерево зависимостей. Методы GetString, GetInt и подобные не типизированы — значения возвращаются в рантайме без проверки на этапе компиляции. Ключи конфига разбросаны по коду как строковые литералы. При нетривиальном использовании поведение при слиянии и приоритетах конфигов требует чтения исходников.🔴 Что использоватьСтруктура с тегами и yaml.NewDecoder:type Config struct { DatabaseURL string yaml:"database_url" Kafka KafkaConfig yaml:"kafka" Server ServerConfig yaml:"server" }func Load(path string) (Config, error) { f, err
    3,33064211Open in Telegram
  • Библиотека Go-разработчика | Golang

    15 Sept, 06:28

    🔥 Шейдеры на Go: как оживить игру с помощью кодаВ Ebitengine шейдеры пишутся на Kage — языке с Go-подобным синтаксисом. С их помощью можно создавать эффекты прямо на уровне пикселей:— маска повреждений зданий; — «дрожащий» рукописный текст; — ретро-CRT и глитчи; — зацикленная анимация текстур; — эффект строительства зданий.➡️ В статье — практические примеры из игр Roboden и Decipherism, а также разбор Fragment(), текстур, uniform-параметров и DrawRectShader().📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика#GoToProduction
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,39063211Open in Telegram
  • Библиотека Go-разработчика | Golang

    14 Sept, 20:31edited

    😭 Как не потратить недельный лимит AI-кодинга за три дня?Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.🔘 Поговорим о том:— когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge.✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.⬇️ 17 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,4308111Open in Telegram
  • Библиотека Go-разработчика | Golang

    14 Sept, 17:02

    📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,380511Open in Telegram
  • Библиотека Go-разработчика | Golang

    14 Sept, 11:54

    🤔 Вопрос с собеседования по GoЧто выведет программа?❤️ — числа выведутся по порядку 🔥 — числа выведутся в случайном порядке 👍 — программа завершится с ошибкой👇 Правильный ответ (нажми, чтобы прочитать):🔥 — числа выведутся в случайном порядкеКаждая итерация запускает отдельную горутину. Значение val передаётся в функцию аргументом v, поэтому все горутины получают правильное число.Но порядок выполнения горутин не гарантирован планировщиком Go. Поэтому вывод может быть, например:30 10 50 20
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,49060543Open in Telegram
  • Библиотека Go-разработчика | Golang

    14 Sept, 06:26edited

    Вы вообще видели, что сделала команда AvitoTech ко Дню разработчика?!В честь наступающего праздника вместе со студией FU2RE и 3D-художником Dmitriev Video ребята создали большой портал в прошлое — эмулятор 2006 года будущего разработчика. Внутри — олдскульные игры и викторины, за которые можно лутать баллы и подниматься в рейтинге.Топ-3 игроков 15 сентября получат суперпак настоящих разрабов, внутри которого салфетка на монитор из коллаборации с Elnik, плед, сумка и плюшевый талисман — кот Б/У. Так что времени сыграть ещё много!P. S. Сыграть в эмулятор и побороться за призы можно до 15 сентября. Так что успевайте
    3,140video92221Open in Telegram
  • Библиотека Go-разработчика | Golang

    13 Sept, 11:02

    🌸 Вселенная намекает: пора уже начать этот курсС 14 сентября цены в Proglib Academy вырастут на 20% 👀Так что если курс давно ждёт своего часа — лучше не откладывать ещё на месяц 😏📍 Выбрать курс
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,02061111Open in Telegram
  • Библиотека Go-разработчика | Golang

    13 Sept, 09:04

    👎 Почему context.Value портит кодИдея положить данные в контекст и достать их через пару вызовов глубже звучит привлекательно. Код чище, сигнатуры функций не разрастаются, промежуточные уровни не знают о деталях.Но именно в этом и проблема context.Value превращается в чёрный ящик, ломает типобезопасность и делает важные зависимости невидимыми.Паттерн «A положил payment в контекст, C его вытащил, а B просто прокинул ctx дальше» выглядит аккуратно, пока вы помните все неочевидные места чтения. Через неделю уже не видно, какие функции реально зависят от payment а это критические бизнес данные, спрятанные в контейнер без гарантий на уровне компилятора.Любая ошибка в ключе, типе или месте, где забыли вызвать WithValue, всплывает только в рантайме, иногда в виде тихих багов, а не паники.Как обычно делают с context.Value:type Payment struct { ID str
    3,26053221Open in Telegram
  • Библиотека Go-разработчика | Golang

    13 Sept, 07:03

    С днем программиста, коллеги!Желаем, чтобы код компилировался с первого раза, баги находились до релиза, а таски «на пять минут» действительно занимали пять минут.И конечно, пусть в жизни будет больше приятных сюрпризов — один из них мы уже подготовили. Скорее переходите по ссылке, трясите коробку и забирайте свой подарок ко Дню программиста: https://tprg.ru/I45e
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    3,27032Open in Telegram
  • Библиотека Go-разработчика | Golang

    12 Sept, 12:05

    💡 Тестирование ввода из stdinТестирование функций, которые читают данные с консоли через fmt.Scan и stdin в Go, часто становится настоящей задачей. В таких случаях нельзя просто передать параметры функции — код напрямую взаимодействует со стандартным вводом.Пример проблемы:func ReadName() string { var name string fmt.Print("Enter your name: ") fmt.Scan(&name) return name }Для этой функции сложно написать unit-тест, потому что она читает из os.Stdin, а в тестах обычно хочется подставлять свои данные.Решение: подменяем os.StdinВ тестах можно временно переназначить os.Stdin на чтение из заранее подготовленного буфера:func TestReadName(t testing.T) {
    3,560102211Open in Telegram
  • Библиотека Go-разработчика | Golang

    12 Sept, 11:00

    🌞 Готовим вебинар про AI в разработке и хотим сделать его максимально полезнымЧто реально хочется разобрать? Где чаще всего застреваете? Что пробовали, но так и не получилось нормально внедрить?🤩 Пишите вопросы в комментариях — самые залайканные разберём на вебинаре в первую очередь.Задавайте всё, что давно хотелось спросить 📍📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика
    3,510321Open in Telegram
  • Библиотека Go-разработчика | Golang

    11 Sept, 10:23edited

    👩‍💻 15 вопросов по PostgreSQL, которые стоит знать Go-разработчикуЕсли идёте на Middle Go, одного синтаксиса SQL мало. На собеседовании легко уйти в индексы, транзакции и конкурентный доступ.Сохраняйте чек-лист:B-tree — когда используется и какие запросы ускоряет? EXPLAIN ANALYZE — что показывает и чем отличается от EXPLAIN? Почему PostgreSQL выбирает Seq Scan, хотя есть индекс? Составной индекс — что это и зачем нужен? Левый префикс — почему порядок колонок в индексе важен? Как выбрать порядок колонок в составном индексе? MVCC — как PostgreSQL позволяет транзакциям работать параллельно? Уровни изоляции — какие бывают и чем отличаются? Deadlock — как возникает и как его предотвращать? SELECT ... FOR UPDATE — когда нужен? N+1 — откуда появляется и как его найти? ACID — что означает каждая буква на практике? Connection pool — зачем он нужен и какие
    4,0192652Open in Telegram
  • Библиотека Go-разработчика | Golang

    9 Sept, 13:04

    🔄 Можно ли в Kafka перечитать сообщения?Да. Пока сообщение не удалено по retention, consumer может вернуться к старому offset и обработать его снова.🔴 Это особенно полезно, если в обработчике обнаружили баг:исправили код → сдвинули offset назад → переиграли сообщенияНапример, для consumer group можно сбросить offset через kafka-consumer-groups.💡 Важно: offset хранится для consumer group, поэтому сброс влияет на чтение этой группой.Kafka в этом плане отличается от классической очереди: прочитанное сообщение не исчезает сразу — его можно переиграть.📍 Навигация: Вакансии • Задачи • Собесы🐸 Библиотека Go-разработчика
    Image from a post by Библиотека Go-разработчика | GolangImage from a post by Библиотека Go-разработчика | Golang
    4,59073Open in Telegram