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

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

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام Библиотека Go-разработчика | Golang

کانال Библиотека Go-разработчика | Golang (@goproglib) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 24 067 مشترک است و جایگاه 5 400 را در دسته فناوری و برنامه‌ها و رتبه 27 060 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 24 067 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 05 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 8 و در ۲۴ ساعت گذشته برابر 4 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 16.23% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 8.69% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 3 906 بازدید دریافت می‌کند. در اولین روز معمولاً 2 091 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 23 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند навигация, лучшее_из_библиотеки_2025, git, string, golive تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Все самое полезное для Go-разработчика в одном канале. Учиться у нас: clc.to/qaSdww По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0 Заявка: 8137752389”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 06 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

24 067
مشترکین
+424 ساعت
-97 روز
+830 روز
جذب مشترکین
اکتبر '26
اکتبر '26
+26
در 0 کانال‌ها
سپتامبر '26
+198
در 0 کانال‌ها
Get PRO
اوت '26
+260
در 1 کانال‌ها
Get PRO
ژوئیه '26
+221
در 2 کانال‌ها
Get PRO
ژوئن '26
+171
در 3 کانال‌ها
Get PRO
مه '26
+288
در 3 کانال‌ها
Get PRO
آوریل '26
+249
در 1 کانال‌ها
Get PRO
مارس '26
+216
در 1 کانال‌ها
Get PRO
فوریه '26
+487
در 7 کانال‌ها
Get PRO
ژانویه '26
+346
در 3 کانال‌ها
Get PRO
دسامبر '25
+370
در 4 کانال‌ها
Get PRO
نوامبر '25
+384
در 4 کانال‌ها
Get PRO
اکتبر '25
+331
در 2 کانال‌ها
Get PRO
سپتامبر '25
+290
در 0 کانال‌ها
Get PRO
اوت '25
+316
در 4 کانال‌ها
Get PRO
ژوئیه '25
+317
در 2 کانال‌ها
Get PRO
ژوئن '25
+315
در 0 کانال‌ها
Get PRO
مه '25
+391
در 5 کانال‌ها
Get PRO
آوریل '25
+358
در 4 کانال‌ها
Get PRO
مارس '25
+625
در 53 کانال‌ها
Get PRO
فوریه '25
+527
در 35 کانال‌ها
Get PRO
ژانویه '25
+517
در 37 کانال‌ها
Get PRO
دسامبر '24
+591
در 40 کانال‌ها
Get PRO
نوامبر '24
+605
در 52 کانال‌ها
Get PRO
اکتبر '24
+499
در 36 کانال‌ها
Get PRO
سپتامبر '24
+676
در 36 کانال‌ها
Get PRO
اوت '24
+580
در 36 کانال‌ها
Get PRO
ژوئیه '24
+586
در 37 کانال‌ها
Get PRO
ژوئن '24
+467
در 29 کانال‌ها
Get PRO
مه '24
+674
در 35 کانال‌ها
Get PRO
آوریل '24
+771
در 36 کانال‌ها
Get PRO
مارس '24
+901
در 31 کانال‌ها
Get PRO
فوریه '24
+729
در 31 کانال‌ها
Get PRO
ژانویه '24
+863
در 27 کانال‌ها
Get PRO
دسامبر '23
+850
در 29 کانال‌ها
Get PRO
نوامبر '23
+608
در 10 کانال‌ها
Get PRO
اکتبر '23
+697
در 25 کانال‌ها
Get PRO
سپتامبر '23
+723
در 0 کانال‌ها
Get PRO
اوت '23
+648
در 0 کانال‌ها
Get PRO
ژوئیه '23
+503
در 0 کانال‌ها
Get PRO
ژوئن '23
+422
در 0 کانال‌ها
Get PRO
مه '23
+568
در 0 کانال‌ها
Get PRO
آوریل '23
+365
در 0 کانال‌ها
Get PRO
مارس '23
+841
در 0 کانال‌ها
Get PRO
فوریه '23
+392
در 0 کانال‌ها
Get PRO
ژانویه '23
+395
در 0 کانال‌ها
Get PRO
دسامبر '22
+384
در 0 کانال‌ها
Get PRO
نوامبر '22
+491
در 0 کانال‌ها
Get PRO
اکتبر '22
+256
در 0 کانال‌ها
Get PRO
سپتامبر '22
+292
در 0 کانال‌ها
Get PRO
اوت '22
+394
در 0 کانال‌ها
Get PRO
ژوئیه '22
+472
در 0 کانال‌ها
Get PRO
ژوئن '22
+443
در 0 کانال‌ها
Get PRO
مه '22
+176
در 0 کانال‌ها
Get PRO
آوریل '22
+328
در 0 کانال‌ها
Get PRO
مارس '22
+242
در 0 کانال‌ها
Get PRO
فوریه '22
+135
در 0 کانال‌ها
Get PRO
ژانویه '22
+236
در 0 کانال‌ها
Get PRO
دسامبر '21
+245
در 0 کانال‌ها
Get PRO
نوامبر '21
+219
در 0 کانال‌ها
Get PRO
اکتبر '21
+215
در 0 کانال‌ها
Get PRO
سپتامبر '21
+290
در 0 کانال‌ها
Get PRO
اوت '21
+298
در 0 کانال‌ها
Get PRO
ژوئیه '21
+281
در 0 کانال‌ها
Get PRO
ژوئن '21
+196
در 0 کانال‌ها
Get PRO
مه '21
+389
در 0 کانال‌ها
Get PRO
آوریل '21
+336
در 0 کانال‌ها
Get PRO
مارس '21
+280
در 0 کانال‌ها
Get PRO
فوریه '21
+258
در 0 کانال‌ها
Get PRO
ژانویه '21
+262
در 0 کانال‌ها
Get PRO
دسامبر '20
+6 566
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
06 اکتبر+2
05 اکتبر+6
04 اکتبر+6
03 اکتبر+3
02 اکتبر+5
01 اکتبر+4
پست‌های کانال
🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчи
🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчикам тестировать приложения без облака.
Проект подходит для unit-тестов, где нужен мок для облачных вызовов. Устанавливается через go install github.com/sivchari/kumo@latest. Запускается как прокси, а SDK настраивается на локальный эндпоинт.
Поддерживает базовые операции над S3: создание бакетов, загрузку объектов, список файлов. Для DynamoDB эмулирует таблицы, put/get item. Конфиг через флаги или env. ➡️ Репозиторий 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive

2
👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сложно. Нужно разобраться с JSON-RPC фреймингом, маршрутизацией сообщений, типами LSP, управлением жизненным циклом соединения. И всё это до того, как начнёшь писать саму языковую логику. go-lsp берёт всё это на себя. Библиотека реализует LSP 3.17 и даёт чистый интерфейс, где вы просто описываете, что ваш сервер умеет делать. go-lsp состоит из трёх пакетов. jsonrpc отвечает за JSON-RPC 2.0 поверх io.ReadWriteCloser. lsp содержит Go-типы для всех структур протокола, без логики. server связывает всё вместе: принимает хендлер, смотрит какие интерфейсы он реализует и автоматически регистрирует соответствующие LSP-методы. Устанавливаем: go get github.com/owenrumney/go-lsp Минимальный сервер с поддержкой hover: package main import ( "context" "os" "github.com/owenrumney/go-lsp/lsp" "github.com/owenrumney/go-lsp/server" ) type Handler struct{} func (h *Handler) Initialize(ctx context.Context, params *lsp.InitializeParams) (*lsp.InitializeResult, error) { return &lsp.InitializeResult{ Capabilities: lsp.ServerCapabilities{ HoverProvider: &lsp.HoverOptions{}, }, }, nil } func (h *Handler) Shutdown(ctx context.Context) error { return nil } func (h *Handler) Hover(ctx context.Context, params *lsp.HoverParams) (*lsp.Hover, error) { return &lsp.Hover{ Contents: lsp.MarkupContent{ Kind: lsp.MarkupKindMarkdown, Value: "Hello from the server", }, }, nil } func main() { srv := server.NewServer(&Handler{}) if err := srv.Run(context.Background(), server.RunStdio()); err != nil { os.Exit(1) } } Сервер сам понимает, что хендлер поддерживает hover, потому что он реализует интерфейс HoverHandler. Вручную регистрировать методы не нужно. Хотите добавить completion — реализуйте CompletionHandler. Обязательный интерфейс только один — LifecycleHandler с методами Initialize и Shutdown. Всё остальное реализуете по мере необходимости. ➡️ Репозиторий 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
2 609
3
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true / 1 false 👍 — 1 false / 0 true 👾 —
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true / 1 false 👍 — 1 false / 0 true 👾 — panic при втором чтении 👇 Правильный ответ (нажми, чтобы прочитать): ❤️ — 1 true / 0 false После close(ch) уже записанное значение можно получить обычным чтением. Когда канал пуст и закрыт, чтение возвращает нулевое значение типа и ok == false. ⚠️ Закрытый канал не становится сразу «пустым» — его буфер всё ещё можно прочитать. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
2 860
4
👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо ст
👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо старой схемы с overflow buckets используется Swiss Tables. И там довольно много интересного: хеш делится на части, поиск идёт группами по 8 слотов, SIMD сразу сравнивает несколько значений, а при росте таблица может дробиться. 📍 В статье всё это разбирают буквально по шагам — от m["cow"] = 4 до устройства directory и таблиц. Если хочется понять, почему Go map работает быстро, а не просто знать, что он O(1) — почитать стоит. 🐸 Библиотека программиста
2 863
5
🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурного кода — например, отдельно для amd64 и arm64. ➡️ Теперь экспериментальный пакет simd предлагает единый интерфейс для разных CPU: AVX/AVX2/AVX512, NEON и Wasm SIMD. Размер вектора при этом не зашит в типы, а при отсутствии аппаратной поддержки операции могут выполняться через эмуляцию. Пока API экспериментальный, но идея простая: один векторизованный код вместо отдельных реализаций под каждую архитектуру. 🔗 Подробнее о том, как это реализовано внутри Go 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive
3 787
6
🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
3 914
7
💡 Код работает. А data race уже есть В Go можно записать значение в одной горутине, прочитать в другой — и получить именно т
💡 Код работает. А data race уже есть В Go можно записать значение в одной горутине, прочитать в другой — и получить именно тот результат, который ожидал. Проблема в том, что Go этого не гарантирует без синхронизации. Например, даже такой паттерн: msg = "hello" done = true for !done {} fmt.Println(msg) может выглядеть абсолютно логично, но содержит две data race. 🔜 В разборе наглядно показывают, почему так происходит: от работы компилятора и CPU до memory model Go. А затем — чем правильно заменить самодельный флаг: atomic → Mutex → WaitGroup → channels → sync.Once Отдельно разбирается интересный эксперимент, где две горутины иногда обе читают 0, хотя на первый взгляд это кажется невозможным. Если с конкурентностью в Go приходится работать не только на уровне «поставь mutex», этот разбор стоит посмотреть. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
3 696
8
💥 TCP/IP: что происходит с данными в сети Когда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/
💥 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-разработчика
3 818
9
🔴 Встроенные функции len, make, panic — встроенные функции Go, которые можно использовать без импорта пакетов. ❓ Но почему тогда len указана в документации builtin как: func len(v Type) int builtin — специальный пакет только для документации. Он не компилируется, а Type — условная заглушка для типа аргумента. При этом built-in — не обычные функции. У них нет стандартных Go-типов: компилятор обрабатывает их вызовы особым образом. 🟡 Например, len(s) для среза может быть преобразован компилятором в получение длины из внутреннего представления среза. Для make, panic и других built-in механизм уже другой. Поэтому никаких дженериков вроде len[T any](s []T) в исходном коде нет — built-in являются специальными конструкциями языка, а builtin лишь описывает их для документации. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
3 830
10
+3
🤩 Go с нуля: серия базовых шпаргалок Собрали путь от Hello, World! до goroutines, channels и context. День 1 — синтаксис, модули и инструменты День 2 — типы, функции, слайсы, map и ошибки День 3 — интерфейсы, структуры, методы, указатели и композиция День 4 — goroutines, channels, select, WaitGroup, Mutex и context Некоторые формулировки в карточках упрощены для новичков: порядок map не гарантирован, поведение slice зависит от backing array, а WaitGroup и Mutex решают разные задачи. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
4 730
11
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — [1 2 3 4 5] / [1 2 10] 🔥 — [1 2 10 4 5] / [1 2 10] 👍 — [1 2 3 4
🤔 Вопрос с собеседования по 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] 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
4 327
12
🛠 Rune — open-source IDE и terminal multiplexer на Go Rune объединяет IDE, терминал и AI-agent в одном приложении. Что интер
🛠 Rune — open-source IDE и terminal multiplexer на Go Rune объединяет 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 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
3 998
13
🤩 SQLite вместо отдельного брокера в Go Watermill поддерживает SQLite Pub/Sub — сообщения передаются между publisher и subscriber через таблицы SQLite. Что это даёт: — не нужен Kafka, RabbitMQ или Redis; — сообщения хранятся в SQLite-файле; — данные переживают перезапуск приложения; — удобно для небольших сервисов и локальной разработки. 🔴 Публикация: publisher, err := wmsqlitemodernc.NewPublisher( db, wmsqlitemodernc.PublisherOptions{ InitializeSchema: true, Logger: logger, }, ) msg := message.NewMessage( watermill.NewUUID(), []byte(`{"message":"Hello, world!"}`), ) err = publisher.Publish("messages", msg) Подключается как обычный Pub/Sub Watermill — при этом отдельный брокер не требуется. ⚠️ SQLite Pub/Sub всё ещё Beta: реализация стабильна, но недостаточно проверена в production. Для высоких нагрузок учитывайте ограничения SQLite. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
4 475
14
⚡️ Go 1.27 ускоряет небольшие аллокации В Go 1.27 появился size-specialized memory allocation — специальные пути выделения памяти для небольших объектов. Что изменилось: — аллокации объектов размером менее 80 байт могут стать быстрее на 20–30%; — в программах с большим количеством аллокаций общий прирост может достигать 1%; — максимальный эффект ожидается для объектов на 16 и 24 байта. 🔴 Почему это работает? Раньше runtime использовал общий путь mallocgc, которому нужно определить размер объекта, класс аллокации и дополнительные параметры. 🔴 Теперь для часто встречающихся размеров есть специализированные функции. Они заранее знают размер объекта и могут: — быстрее очищать память; — не вычислять класс аллокации повторно; — эффективнее выполнять служебные операции; — использовать более короткий fast path. Особенно часто такие размеры встречаются у структур, интерфейсов, строк и слайсов. 🔗 Ничего менять в коде не нужно. Чтобы получить улучшения, достаточно пересобрать приложение с Go 1.27. При необходимости эксперимент можно отключить: ```bash GOEXPERIMENT=nosizespecializedmalloc 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive
4 191
15
🛠 Напишите конфиг сами 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 := os.Open(path) if err != nil { return nil, err } defer f.Close() var cfg Config if err := yaml.NewDecoder(f).Decode(&cfg); err != nil { return nil, err } return &cfg, nil } Переменные окружения добавляются вручную через os.Getenv там, где это нужно. 🔴 Что получаем Полностью типизированный конфиг. Никаких строковых ключей. Граф зависимостей, который можно проверить за секунды. Код, который вы полностью контролируете. Для JSON-конфига подход тот же, только с encoding/json. Пакет gopkg.in/yaml.v3 — единственная внешняя зависимость, и та минимальная. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
3 964
16
🔴 Тестовый собес с Go Senior с опытом работы в Ozon, ex. Ситидрайв в этот четверг [+ разбор 50 сложных вопросов в подарок ]
🔴 Тестовый собес с Go Senior с опытом работы в Ozon, ex. Ситидрайв в этот четверг [+ разбор 50 сложных вопросов в подарок ] 17 сентября (в этот четверг!) в 19:00 по МСК приходи онлайн, чтобы посмотреть на настоящее интервью на Middle Go-разработчика! Собеседование проведёт Даниил Динько - Senior Backend Engineer, ex. TechLead tier-3 world cybercrime, ex. Senior Go в Ozon, ex. Ситидрайв. Как это будет: 📂 Даниил задаст разработчику вопросы и задачи, которые могут спросить на реальном собесе; 📂 После каждого ответа респондента ты услышишь подробный комментарий от ментора и поймёшь, чего на самом деле ожидает собеседующий на интервью; 📂 В конце сможешь задать любой вопрос Даниилу и получить на него развёрнутый ответ; Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. И ты можешь посмотреть его бесплатно 🔥 Только завтра, в прямом эфире! 🎁 Подарок для всех, кто зарегается на веб — файл с ОТВЕТАМИ НА 50 СЛОЖНЫХ ВОПРОСОВ с Go-собеседований 🔥 Переходи в бот, чтобы попасть на эфир и забрать подарок 👉 @shortcut_go_bot Реклама. О рекламодателе.
2 561
17
🔥 Шейдеры на Go: как оживить игру с помощью кода В Ebitengine шейдеры пишутся на Kage — языке с Go-подобным синтаксисом. С и
🔥 Шейдеры на Go: как оживить игру с помощью кода В Ebitengine шейдеры пишутся на Kage — языке с Go-подобным синтаксисом. С их помощью можно создавать эффекты прямо на уровне пикселей: — маска повреждений зданий; — «дрожащий» рукописный текст; — ретро-CRT и глитчи; — зацикленная анимация текстур; — эффект строительства зданий. ➡️ В статье — практические примеры из игр Roboden и Decipherism, а также разбор Fragment(), текстур, uniform-параметров и DrawRectShader(). 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
4 104
18
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потер
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода. 🔘 Поговорим о том: — когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge. ✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после. ⬇️ 18 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок 💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре. 🔗 Зарегистрироваться на вебинар⁠
3 981
19
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
3 694
20
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — числа выведутся по порядку 🔥 — числа выведутся в случайном поряд
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — числа выведутся по порядку 🔥 — числа выведутся в случайном порядке 👍 — программа завершится с ошибкой 👇 Правильный ответ (нажми, чтобы прочитать): 🔥 — числа выведутся в случайном порядке Каждая итерация запускает отдельную горутину. Значение val передаётся в функцию аргументом v, поэтому все горутины получают правильное число. Но порядок выполнения горутин не гарантирован планировщиком Go. Поэтому вывод может быть, например: 30 10 50 20 40 sync.WaitGroup нужен, чтобы дождаться завершения всех горутин. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
3 821