Библиотека 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
#холивар

Не так давно мы спрашивали вас про пет-проекты, из чего получился неплохой холивар.

💬Главный вопрос с нашей стороны остался в стороне: «Возможно ли завершить такой проект? Если да, то как вы это сделали?».

🤔Ведь постоянно (особенно перед сном) приходят мысли что-то доработать, добавить новый функционал.
5👍2
Go 1.21: все, что вам нужно знать

Визуальный путеводитель в виде доски Miro по наиболее важным аспектам Go 1.21. Существуют также для предыдущих версий Go 1.20 и 1.18.
🔥933
#tip

Колхозный, но для кого-то может и интересный совет: пишем shell-скрипты на Go

Сверхбыстрый компилятор Go заставляет Go чувствовать себя почти как скриптовый язык (на этапе компиляции, конечно; во время выполнения Go легко опережает любой интерпретируемый язык).

А как на счет того, чтобы запускать файл .go как shell-скрипт? Без использования go run и без необходимости помнить расположение .go файла?

Когда скрипт с шебангом (#!) выполняется как программа в Unix-подобных ОС, загрузчик программ рассматривает остаток строки после шебанга как имя файла программы-интерпретатора, например:

#!/usr/bin/env awk -f
BEGIN { print "Don't Panic!" }

После сохранения этого фрагмента в файл scriptname и изменения прав, вы можете вызвать его как ./scriptname или переместить в директорию в вашем $PATH и вызвать, как бинарный файл.

К сожалению, шебанг не работает для исходных файлов Go. Для большинства скриптовых языков символ "#" используется в качестве комментария. В Go это недопустимый синтаксис.

#!/usr/bin/env go run "$0" "$@"
package main

import "fmt"
func main() {
fmt.Println("My first Go script")
}


Но решение есть. Этот хитрый способ превращает .go файл в shell-скрипт в большинстве Unix-подобных ОС:

///usr/bin/env go run "$0" "$@"; exit
package main

import "fmt"
func main() {
fmt.Println("My first Go script")
}

Если вы сохраните этот фрагмент в файл filename.go и сделаете исполняемым, вы сможете вызвать скрипт как ./filename.go.

📌Как это работает?

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

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

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

Если env находит go по пути, он вызывает go run $0 $@.

Первая переменная $0 относится к самому файлу скрипта, а $@ представляет дополнительные параметры, переданные скрипту в командной строке. Внутри Go-скрипта эти параметры доступны через os.Args[].

Happy coding scripting!
🔥317👏7👍6🥱1
💡Залог успешного CLI-инструмента на Go — это удобство для пользователя, гибкость и постоянные улучшения. Именно таких принципов придерживается автор сегодняшнего руководства и нескольких CLI-проектов с открытым исходным кодом.

🚀Автор делится советами, полученными при написании CLI-проектов OpenFaaS, actuated, action-usage, arkade и k3sup, начиная с 2016 года.

📌Основные моменты:

▫️Начинайте с простой команды и постепенно расширяйте возможности CLI
▫️Используйте инструмент Cobra
▫️Постоянно улучшайте пользовательский опыт, минимизируя необходимость ввода лишних данных
▫️Управляйте токенами авторизации удобным способом, вдохновляясь другими инструментами
▫️Используйте различные форматы вывода для гибкости
▫️SSH может быть альтернативой HTTP для автоматизации
▫️Тщательно документируйте все команды

🔗Читать
7👍5
С недавних пор Go Tour имеет темный режим. Это, конечно, дело вкуса, но все-таки👇

Вы какой предпочитаете?

🌚 — темный
🤩 — светлый
🌚231🤩525💯4🤔3
#холивар

😎Первый проект в карьере разработчика — самый волнительный и запоминающийся.

💬А вы помните свои впечатления от первого проекта и стек, на котором он был написан? Как бы вы подошли к своему первому проекту с нынешним опытом?
6
#новости #чтопроисходит

📌Новости и обновления популярных инструментов: подборка для Go-разработчика

🔥Perfectly Reproducible, Verified Go Toolchains: новая статья в блоге Go от Russ Cox
🔥Soft Serve (автономный Git-сервер на базе Go от разработчиков Charm) теперь поддерживает Git LFS
👨‍🏫VK Education открывает набор на бесплатные курсы по Go, Python и технической поддержке

🤔 proposal: slices: function for count specific value on slice
🤔 proposal: syscall/js: Add SetSymbol method on js.Value
🤔 proposal: net/http/pprof: respect timeouts set using http.ResponseController
🤔 proposal: os: add application data directory functions (i.e. os.UserDataDir and os.DataDir)
🤔 proposal: encoding: add AppendText and AppendBinary

TinyGo 0.29.0 — Go-компилятор на базе LLVM для микроконтроллеров, WASM/WASI и CLI-инструментов. В новой версии среди прочего добавлена поддержка Go 1.21 и новой опции GOOS=wasip1.
Excelize 2.8 — библиотека для чтения/записи файлов электронных таблиц Excel
Wazero 1.5 — zero dependency WASM runtime для Go-разработчиков
Toxiproxy 2.6 — TCP-прокси для имитации хаотичных сетевых условий
FerretDB 1.9 — совместимая с MongoDB база данных на базе Postgres
GoCV 0.34 — пакет для компьютерного зрения с использованием OpenCV 4+
Roaring 1.5 — Go-версия структуры данных «Roaring bitmap»
Fiber 2.49 — веб-фреймворк, вдохновленный Express
pdfcpu 0.5 — библиотека обработки PDF-файлов, написанная на Go и поддерживающая шифрование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍52🤔1🥱1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека питониста
Библиотека devops’a
Библиотека тестировщика
Библиотека пхпшника

💼Каналы с вакансиями

Вакансии по питону, Django, Flask
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity
Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
👍61🥱1
semgrep-go — набор правил для статического анализа кода Go, которые выявляют распространенные или потенциальные ошибки. В настоящее время поддерживаются semgrep и ruleguard.

$ semgrep -f path/to/semgrep-go/rule.yml .
$ semgrep -f path/to/semgrep-go/ .
$ ruleguard -c=0 -rules path/to/semgrep-go/ruleguard.rules.go ./
🔥8👍3
#tip

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

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

Линтеры идут на помощь! Линтер exhauststruct проверяет, что структура была полностью инициализирована. Мета-линтер golangci-lint включает в себя этот линтер, поэтому если вы уже используете golangci-lint, вы легко можете включить exhauststruct.

Теперь структура может содержать поля, которые предполагается использовать как необязательные. Тогда линтер может выдавать ненужные предупреждения.

Если определение структуры находится под вашим контролем, вы можете избежать ложных срабатываний линтера, добавив тег поля структуры exhaustruct:"optional" к необязательному полю.

type Shape struct {
Length int
Width int
volume int
Perimeter int `exhaustruct:"optional"`
}


Следующая инициализация будет помечена как некорректная, потому что отсутствует volume:

var b Shape = Shape{
Length: 5,
Width: 3,
}
👍322🤔1
Мини-гайд об организации кода gRPC и protobuf в проекте на Go

Автор кратко рассматривает, как использовать protoc и плагины с правильным импортом и структурой проекта.

🔗 Читать
🔥8👍42🥱2
Владимир Балун, старший разработчик в Яндекс, разбирает по полочкам задачу с Go-собеседования. Точнее, которую могут спросить на собеседовании.

👀 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
14🥱13👍2🔥2🤔2
#холивар

🌟Привет, подписчики! Вспомните свой профессиональный путь и ответьте на пару вопросов:

💬На какой стадии вашей жизни вы приобрели самые ценные знания и навыки, которые стали ключевыми для карьеры в IT?
💬Было ли это ещё в школьные годы, во времена колледжа/университета/института, в процессе самообразования или уже прямо на рабочем месте?

📌И самое главное — какие это были знания и навыки?

Делитесь опытом в комментариях👇
4
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔥🕑 10 признаков того, что пора увольняться

«Быть или не быть?», «Уйти или остаться?»: делаем вдох-выдох и принимаем важное решение.

🔗 Читать статью
🔗 Зеркало
👍2
🎉 Представлены выпуски Go 1.21.1 и 1.20.8

🔐 Новые релизы включают исправления безопасности для cmd/go (CVE-2023-39320), html/template (CVE-2023-39318, CVE-2023-39319) и crypto/tls.

🔗 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
✍️ Библиотека программиста» находится в поиске авторов оригинальных статей

Языки
● C#, Go, SQL.

Тематика
● Data Science (Python), базовые и продвинутые концепции языков C#, Go, SQL.

Объем
● от 7 до 15 тыс. знаков.
● 3-4 статьи в месяц.

Оплата
● 4к руб. за статью.
● Работаем с самозанятыми, ИП.

Статья публикуется на сайте proglib.io, в группе ВК (424к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в одном из профильных тг-каналов: Библиотека Шарписта, Data scientist’а, Go-разработчика.

➡️ Заполнить анкету ⬅️

Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».
👍6😁6
#инструменты

⚒️CLI Mate — инструмент, который позволяет упростить создание CLI-инструментов на Go. Он поддерживает вложенные подкоманды, глобальные/локальные флаги, генерацию справки из godocs, предложения по опечаткам и многое другое. Вдохновлен Python-fire и разработан на базе Cobra.

🔗 GitHub
👍832🥱1