Библиотека 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 — простой. Но с простотой приходит и риск наступить на грабли. Ловите небольшую, но ёмкую подборку антипаттернов Go, чтобы не допустить этого.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤩6🥱2🌚21
🤔 Повсеместное использование указателей в качестве параметров приводит к выбору: необходимо либо проверять каждый параметр на равенство nil, либо допускать, что произойдёт паника при попытке разыменования указателя nil.

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

💬Так что использовать? Опытом делится Go-тимлид Иван Коротков, сравнивая оба способа и убеждая передавать и возвращать значения в тех случаях, где это возможно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Представьте: вас берут на новый проект, а там сплошной легаси-код. Ваши действия👇

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

#холивар
🥱145👍51🤔14👾21
🤩 Первоначальные мысли о Go 1.22

Один из разработчиков Go базы данных DoltDB погружается в новые возможности языка, представленные в первом релиз-кандидате go1.22rc1.

👉 Читать
👍10🤔1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤖 Итоги недели в мире ИИ и обзоры новых сервисов

Мы написали статью на VC, которая основана на очередном выпуске нашей рассылки про последние новости и тенденции в мире ИИ. Залетайте и читайте!

👇Ниже — мини-подборка из статьи 👇

📰 Новости

▫️ OpenAI объявила о запуске долгожданного магазина кастомных чат-ботов.
▫️ В Пасадене (штат Калифорния) открывается первая закусочная CaliExpress by Flippy, полностью управляемая ИИ.
▫️ NVIDIA выпустила модель для распознавания речи Parakeet, которая по всем показателям превосходит OpenAI Whisper.
▫️ Использование ИИ в совместном научном проекте Microsoft и Тихоокеанской северо-западной национальной лаборатории в течение недели помогло определить новый элемент, который поможет снизить на 70% использование лития в батареях. Без ИИ такое исследование заняло бы по меньшей мере 20 лет.
▫️ Компания ByteDance выпустила новую модель MagicVideo-V2 для генерации видео.

🛠 Инструменты

◾️ Auto Wiki — генерирует вики-документацию для GitHub репозиториев.
◾️ Code to Flow — визуализирует, анализирует и объясняет код, написанный на всех популярных языках и фреймворках.
◾️ Concepto — платформа для создания прототипов веб-приложений.
◾️ Afforai — выполняет суммаризацию, перевод и поиск по множеству документов.
◾️ Corgea — исправляет уязвимые фрагменты кода.
◾️ Jan — опенсорсный оффлайновый чат-бот.
◾️ Plus AI — плагин для Google Slides: делает профессиональные презентации, персональные и командные дашборды, любые отчеты.

🤙 Сделай сам

🔸 WikiChat — опенсорсный инструмент для коррекции галлюцинаций с помощью информации из Википедии.
🔸 Подробная шпаргалка и советы по созданию продвинутых RAG.
🔸 OpenVoice — опенсорный инструмент для мгновенного клонирования голоса.

🎓 Туториалы

🔹 Туториал по работе с новым API Query Pipelines показывает примеры создания простых линейных цепочек и сложных ациклических графов из модулей LlamaIndex.
🔹 Туториал по объединению LLM с помощью mergekit детально разбирает 4 основных метода объединения моделей.

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
Хотите эффективно анализировать процесс трассировки Go? Тогда Gotraceui идет на помощь.

Это быстрая, доступная и мощная альтернатива go tool trace. Его UI специально настроен с учетом уникальных характеристик трассировок Go.

🔧 GitHub
👍13
Команда Go исследует возможность добавления range-over function iterators

Go 1.22 содержит предварительную реализацию изменения, включаемую с помощью GOEXPERIMENT=rangefun.

📌 Простой пример работы функции range over:

package slices

func Backward[E any](s []E) func(func(int, E) bool) {
return func(yield func(int, E) bool) {
for i := len(s)-1; i >= 0; i-- {
if !yield(i, s[i]) {
return
}
}
}
}


Его можно вызвать так:

s := []string{"hello", "world"}
for i, x := range slices.Backward(s) {
fmt.Println(i, x)
}


Пример будет транслироваться внутри компилятора в код, похожий на:

slices.Backward(s)(func(i int, x string) bool {
fmt.Println(i, x)
return true
})


👉
Подробнее
🤔23👍7❤‍🔥42
Дмитрий Королёв, бэкенд-разработчик в Авито, демонстрирует бенчмарки нескольких самых популярных форматов сериализации (Avro, Protobuf, Msgpack, XML, CBOR и несколько известных библиотек для работы с JSON) в Go и рассказывает про преимущества/недостатки каждого из них.

👉 Читать
👍23🤔6🥱32
🔐Sign in with Google

Краткий обзор реализации популярного метода аутентификации на Go от Eli Bendersky.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍31
select * from cloud;

🧰steampipe — инструмент для выполнения запросов к облачным сервисам с помощью SQL.

Используйте SQL для запроса и даже объединения более чем 100 API от таких провайдеров, как Airtable, AWS, Heroku, Slack и Stripe, а также соцсетей вроде Reddit и Hacker News.

👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
GoFunc — новая конференция по Go. Но сегодня не о ней, а о митапах для Go-разработчиков, которые уже можно посмотреть:

🌐gRPC-стримы на практике в Go / Сергей Антоничев
🌐Бардак в main, стандартизация и uber.fx. V2 / Данила Проценко
🌐Как мы разметку Goняли / Хамбар Дусалиев
🌐Как мы в СберМаркете стандартизируем разработку сервисов / Эмиль Шарифуллин
🌐Профилирование Go-приложений в 2023 / Алексей Акулович
🌐Что стоит за дженериками в Go / Илья Горкун
🌐Использование ресурсов Kubernetes Go-приложениями / Антон Жуков
🌐Быстрый поиск пути без аллокаций / Искандер Шарипов
🌐Воркшоп «Создание Terminal UI приложений» / Никита Русин
🌐Расширяем компилятор: кодогенерация на своем месте / Даниил Подольский

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤‍🔥42
💡Предварительная компиляция стандартной библиотеки

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

Исходя из исследования (на немецком языке), это может оказать огромное влияние на время компиляции.

Теперь представьте систему сборки, которая начинает с нуля для каждой сборки, — например, потому что инструментарий Go находится в контейнере, который удаляется после каждой сборки.

Зависимости проекта от стандартной библиотеки таким образом компилируются снова и снова для каждой сборки.

📌 Решение простое:

go install std

Эта команда компилирует стандартную библиотеку один раз. Зафиксируйте полученное состояние установки Go и наслаждайтесь более быстрым временем сборки.
👍901
🧰 avo — пакет для генерации x86 assembly с помощью Go. Основная цель — облегчить процесс написания и поддержки assembly кода, который часто используется для оптимизации производительности в критических участках программ.

//go:build ignore

package main

import . "github.com/mmcloughlin/avo/build"

func main() {
TEXT("Add", NOSPLIT, "func(x, y uint64) uint64")
Doc("Add adds x and y.")
x := Load(Param("x"), GP64())
y := Load(Param("y"), GP64())
ADDQ(x, y)
Store(y, ReturnIndex(0))
RET()
Generate()
}


//go:generate go run asm.go -out add.s -stubs stub.go


👉 GitHub с полным описанием и примерами
👍171
This media is not supported in your browser
VIEW IN TELEGRAM
🤔🚜 Когда тянешь в свой Go-проект кучу сторонних пакетов, хотя легко мог это реализовать с помощью стандартной библиотеки

#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁37👍4🥱4🌚1
Сравнение времени и дат разными способами: гайд для Go-разработчика

Во время разработки на Go вы можете сравнить два значения time.Time с помощью операторов сравнения, но компилятор не даст этого сделать.

Использование == и != в свою очередь допустимо в Go, но надо быть осторожным, потому что этот функционал может делать не совсем то, что вы намеревались. Разбираемся, что находится под капотом у типа time.Time ⬇️

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥2💯1
💰⬆️ 10 факторов, влияющих на зарплату программиста

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

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

#новость
👍6🥱2🌚2
🤯 Rust vs. Go в 2024 году

🤔 Ну что, давненько не было холиваров. Прошлогодняя статья-сравнение актуализирована в соответствии с реалиями 2024 года (хотя плюсы и минусы остаются весьма схожими).

👉 Читайте подробнее, чтобы узнать о преимуществах/недостатках обоих языков и некоторых компромиссах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱37😁12👍9👾2