#холивар
🤔Что самое трудное в работе программиста? Правильно, выдумывать имена для переменных.
💬Как вы считаете, насколько важен хороший нейминг для сущностей (функций, переменных и т.д.) в вашем коде? И есть ли у вас или в вашей команде общепринятые правила или лучшие практики, которым вы следуете при нейминге?
Если да, поделитесь опытом👇
🤔Что самое трудное в работе программиста? Правильно, выдумывать имена для переменных.
💬Как вы считаете, насколько важен хороший нейминг для сущностей (функций, переменных и т.д.) в вашем коде? И есть ли у вас или в вашей команде общепринятые правила или лучшие практики, которым вы следуете при нейминге?
Если да, поделитесь опытом👇
👍14🥱4🔥2
Рейтинг Go ORM за последние 28 дней: на заметку Go-разработчику
👍19🥱19🔥2
Как визуализировать модели GORM с помощью Atlas
Вдогонку к очень холиварному предыдущему посту ловите мини-гайд о том, как использовать новую фичу Atlas, которая позволяет разработчикам быстро создавать визуализации диаграммы «сущность-связь» (или ERD) схем баз данных.
В гайде показано, как эту функцию можно использовать в тандеме с одной из основных возможностей Atlas — «Загрузчиками схем» — для создания визуализаций моделей GORM.
Atlas — это независимый от языка инструмент для управления и миграции схем баз данных с использованием современных принципов DevOps.
Вдогонку к очень холиварному предыдущему посту ловите мини-гайд о том, как использовать новую фичу Atlas, которая позволяет разработчикам быстро создавать визуализации диаграммы «сущность-связь» (или ERD) схем баз данных.
В гайде показано, как эту функцию можно использовать в тандеме с одной из основных возможностей Atlas — «Загрузчиками схем» — для создания визуализаций моделей GORM.
Atlas — это независимый от языка инструмент для управления и миграции схем баз данных с использованием современных принципов DevOps.
👍18🤔1
Обзор альтернатив стандартной библиотеке для регулярных выражений в Go с бенчмарками по скорости и потребляемой памяти.
🔗 Читать
🔗 Читать
🔥21
⚒ fp-go — библиотека функционального программирования для Go, идея для разработки которой взята из проекта fp-ts. Цель библиотеки — предоставить набор типов данных и функций, которые позволяют легко и увлекательно писать поддерживаемый и тестируемый код на Go.
💡На скриншоте — статистика проекта за последние 28 дней. Выводы сделаете сами.
🔗 GitHub
💡На скриншоте — статистика проекта за последние 28 дней. Выводы сделаете сами.
🔗 GitHub
👍11🥱5🤔3
#tip #go #security
Два способа проверить свой код на наличие уязвимостей
📌Инструмент govulncheck, безусловно, является универсальным для сканирования репозиториев на наличие известных уязвимостей.
🔸Инструмент использует официальную базу данных уязвимостей Go vuln.go.dev, всеобъемлющий источник известных уязвимостей в общедоступных модулях Go.
🔸Govulncheck можно использовать в командной строке или как часть рабочего процесса CI.
📌Еще одним инструментом, заслуживающим внимания, является gosec: Golang Security Checker.
🔸gosec — CLI-инструмент, который может быть интегрирован в пайплайн CI. В дополнение к этому, gosec входит в состав golangci-lint.
🔸По умолчанию он отключен, и вы можете включить либо все проверки на уязвимости, либо только определенные из них. Таким образом, ваш код проверяется на наличие уязвимостей каждый раз, когда ваша IDE запускает линтер.
🔸В отличие от govulncheck, gosec не проверяет наличие известных уязвимостей в общедоступном коде Go. Скорее, он проверяет код на соответствие списку уязвимых шаблонов программирования, включая: жестко закодированные учетные данные, непроверенные ошибки, построение SQL-инструкций с использованием fmt и т.д.
Два способа проверить свой код на наличие уязвимостей
📌Инструмент govulncheck, безусловно, является универсальным для сканирования репозиториев на наличие известных уязвимостей.
🔸Инструмент использует официальную базу данных уязвимостей Go vuln.go.dev, всеобъемлющий источник известных уязвимостей в общедоступных модулях Go.
🔸Govulncheck можно использовать в командной строке или как часть рабочего процесса CI.
📌Еще одним инструментом, заслуживающим внимания, является gosec: Golang Security Checker.
🔸gosec — CLI-инструмент, который может быть интегрирован в пайплайн CI. В дополнение к этому, gosec входит в состав golangci-lint.
🔸По умолчанию он отключен, и вы можете включить либо все проверки на уязвимости, либо только определенные из них. Таким образом, ваш код проверяется на наличие уязвимостей каждый раз, когда ваша IDE запускает линтер.
🔸В отличие от govulncheck, gosec не проверяет наличие известных уязвимостей в общедоступном коде Go. Скорее, он проверяет код на соответствие списку уязвимых шаблонов программирования, включая: жестко закодированные учетные данные, непроверенные ошибки, построение SQL-инструкций с использованием fmt и т.д.
pkg.go.dev
govulncheck command - golang.org/x/vuln/cmd/govulncheck - Go Packages
Govulncheck reports known vulnerabilities that affect Go code.
👍6🔥1
🤔Надеемся, материалы про пакет slog в Go вам еще не надоели. Потому что самое время закрепить представленную ранее теорию интересной практикой на примере создания красивого логгера.
😎Если кто-то из вас уже знаком с пакетом zap от Uber, вы быстро найдете общий язык с slog👇
🔍Создаем красивый обработчик логов для CLI, который делает логи намного читабельнее, используя только стандартную библиотеку. С цветами, отступами и всем, что нужно для удобства.
⚡️Есть еще кое-что. В официальном репозитории Go есть руководство по написанию обработчиков slog — сохраняйте себе в заметки.
😎Если кто-то из вас уже знаком с пакетом zap от Uber, вы быстро найдете общий язык с slog👇
🔍Создаем красивый обработчик логов для CLI, который делает логи намного читабельнее, используя только стандартную библиотеку. С цветами, отступами и всем, что нужно для удобства.
⚡️Есть еще кое-что. В официальном репозитории Go есть руководство по написанию обработчиков slog — сохраняйте себе в заметки.
👍25🥱1
6_Tips_on_High_Performance_Go_—_Advanced_Go_Topics_by_David_Lee.pdf
4.6 MB
6 советов, которые помогут диагностировать и устранять проблемы с производительностью: быстрое введение для Go-разработчика
1⃣ Бенчмаркинг
2⃣ Профилирование
3⃣ Оптимизация компилятора
4⃣ Inlining
5⃣ Escape Analysis
6⃣ Конкурентность
🔗 Читать (pdf-файл для тех, у кого не открывается Medium)
1⃣ Бенчмаркинг
2⃣ Профилирование
3⃣ Оптимизация компилятора
4⃣ Inlining
5⃣ Escape Analysis
6⃣ Конкурентность
🔗 Читать (pdf-файл для тех, у кого не открывается Medium)
👍6🥱1
🤔🚀Особенности и полезные приемы Go
Вы можете быть продуктивным Go-разработчиком, не зная и не используя большинство из этих приемов, но некоторые из них могут быть полезны:
▪️Declaration, control flow, typesystem
▪️Concurrency, unsafe, reflect
▪️Arrays, validation, build constraints
Вы можете быть продуктивным Go-разработчиком, не зная и не используя большинство из этих приемов, но некоторые из них могут быть полезны:
▪️Declaration, control flow, typesystem
▪️Concurrency, unsafe, reflect
▪️Arrays, validation, build constraints
🔥10👍1
#холивар
Не так давно мы спрашивали вас про пет-проекты, из чего получился неплохой холивар.
💬Главный вопрос с нашей стороны остался в стороне: «Возможно ли завершить такой проект? Если да, то как вы это сделали?».
🤔Ведь постоянно (особенно перед сном) приходят мысли что-то доработать, добавить новый функционал.
Не так давно мы спрашивали вас про пет-проекты, из чего получился неплохой холивар.
💬Главный вопрос с нашей стороны остался в стороне: «Возможно ли завершить такой проект? Если да, то как вы это сделали?».
🤔Ведь постоянно (особенно перед сном) приходят мысли что-то доработать, добавить новый функционал.
Telegram
Библиотека Go разработчика | Golang
Каждый разработчик пишет или планирует писать пет-проект, ведь в нем можно реализовать все свои задумки. В пет-проекте нет дедлайнов, продактов, тимлидов. Одним словом, рай для разработчика.
💭 Вы пишите пет-проекты? Используете для них Go или другой язык?…
💭 Вы пишите пет-проекты? Используете для них Go или другой язык?…
❤5👍2
Go 1.21: все, что вам нужно знать
Визуальный путеводитель в виде доски Miro по наиболее важным аспектам Go 1.21. Существуют также для предыдущих версий Go 1.20 и 1.18.
Визуальный путеводитель в виде доски Miro по наиболее важным аспектам Go 1.21. Существуют также для предыдущих версий Go 1.20 и 1.18.
miro.com
Go 1.21 All You Need to Know
All you need to know about the Go release Go 1.20 with all major features.
🔥9⚡3❤3
#tip
Колхозный, но для кого-то может и интересный совет: пишем shell-скрипты на Go
Сверхбыстрый компилятор Go заставляет Go чувствовать себя почти как скриптовый язык (на этапе компиляции, конечно; во время выполнения Go легко опережает любой интерпретируемый язык).
А как на счет того, чтобы запускать файл .go как shell-скрипт? Без использования
Когда скрипт с шебангом (#!) выполняется как программа в Unix-подобных ОС, загрузчик программ рассматривает остаток строки после шебанга как имя файла программы-интерпретатора, например:
После сохранения этого фрагмента в файл scriptname и изменения прав, вы можете вызвать его как ./scriptname или переместить в директорию в вашем $PATH и вызвать, как бинарный файл.
К сожалению, шебанг не работает для исходных файлов Go. Для большинства скриптовых языков символ "#" используется в качестве комментария. В Go это недопустимый синтаксис.
Но решение есть. Этот хитрый способ превращает .go файл в shell-скрипт в большинстве Unix-подобных ОС:
Если вы сохраните этот фрагмент в файл filename.go и сделаете исполняемым, вы сможете вызвать скрипт как ./filename.go.
📌Как это работает?
Команда env ищет go по пути и выполняет его, устраняя необходимость использования жестко закодированный путь к бинарю.
Путь к env начинается с трех косых черт. Таким образом, вся строка выглядит как комментарий. В то же время путь является допустимым синтаксисом оболочки.
Технически, двух косых черт может быть достаточно, но три косые черты более соответствуют стандартам — они всегда интерпретируются как одна косая черта.
Если env находит go по пути, он вызывает
Первая переменная $0 относится к самому файлу скрипта, а $@ представляет дополнительные параметры, переданные скрипту в командной строке. Внутри Go-скрипта эти параметры доступны через os.Args[].
Happycoding scripting!
Колхозный, но для кого-то может и интересный совет: пишем 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
🔥31❤7👏7👍6🥱1
💡Залог успешного CLI-инструмента на Go — это удобство для пользователя, гибкость и постоянные улучшения. Именно таких принципов придерживается автор сегодняшнего руководства и нескольких CLI-проектов с открытым исходным кодом.
🚀Автор делится советами, полученными при написании CLI-проектов OpenFaaS, actuated, action-usage, arkade и k3sup, начиная с 2016 года.
📌Основные моменты:
▫️Начинайте с простой команды и постепенно расширяйте возможности CLI
▫️Используйте инструмент Cobra
▫️Постоянно улучшайте пользовательский опыт, минимизируя необходимость ввода лишних данных
▫️Управляйте токенами авторизации удобным способом, вдохновляясь другими инструментами
▫️Используйте различные форматы вывода для гибкости
▫️SSH может быть альтернативой HTTP для автоматизации
▫️Тщательно документируйте все команды
🔗Читать
🚀Автор делится советами, полученными при написании CLI-проектов OpenFaaS, actuated, action-usage, arkade и k3sup, начиная с 2016 года.
📌Основные моменты:
▫️Начинайте с простой команды и постепенно расширяйте возможности CLI
▫️Используйте инструмент Cobra
▫️Постоянно улучшайте пользовательский опыт, минимизируя необходимость ввода лишних данных
▫️Управляйте токенами авторизации удобным способом, вдохновляясь другими инструментами
▫️Используйте различные форматы вывода для гибкости
▫️SSH может быть альтернативой HTTP для автоматизации
▫️Тщательно документируйте все команды
🔗Читать
Actuated
How to develop a great CLI with Go
Alex shares his insights from building half a dozen popular Go CLIs. Which can you apply to your projects?
❤7👍5
#холивар
😎Первый проект в карьере разработчика — самый волнительный и запоминающийся.
💬А вы помните свои впечатления от первого проекта и стек, на котором он был написан? Как бы вы подошли к своему первому проекту с нынешним опытом?
😎Первый проект в карьере разработчика — самый волнительный и запоминающийся.
💬А вы помните свои впечатления от первого проекта и стек, на котором он был написан? Как бы вы подошли к своему первому проекту с нынешним опытом?
❤6
Серия руководств по работе с новым пакетом slices от Ardan Labs:
1️⃣Binary Search
2️⃣Clip, Clone и Compact
3️⃣Compare
4️⃣Contains, Delete и Equal
1️⃣Binary Search
2️⃣Clip, Clone и Compact
3️⃣Compare
4️⃣Contains, Delete и Equal
Ardan Labs
Slices Package: Binary Search
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
👍14❤7