Please open Telegram to view this post
VIEW IN TELEGRAM
👍16⚡2🤔2❤1
Процесс оптимизации компилятора с использованием информации о поведении приложений называется Profile-Guided Optimization (PGO) (также известный как Feedback-Directed Optimization (FDO)).
Это перевод того самого гайда от Michael Pratt в официальном блоге Go. И да, в комментариях делятся, что в некоторых кейсах использование PGO дало прирост производительности 5-7%.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Profile-guided optimization в Go 1.21
В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO) , которую пользователи могли протестировать. После устранения известных ограничений в предварительной версии и...
❤6🔥3👍1
🔧Pixel 2 — новая, быстрая библиотека 2D игр на Go. Это обновленный форк оригинальной библиотеки Pixel от faiface, задуманный как инициатива сообщества по продолжению разработки библиотеки.
🔗 GitHub & Wiki
🔗 GitHub & Wiki
GitHub
GitHub - faiface/pixel: A hand-crafted 2D game library in Go
A hand-crafted 2D game library in Go. Contribute to faiface/pixel development by creating an account on GitHub.
🔥15
Говорят, что слепой десятипальцевый метод печати на клавиатуре повышает производительность и позволяет не отвлекаться на клавиатуру. А вы им владеете?
Anonymous Poll
26%
Да, это действительно повышает производительность
22%
Да, но он не сильно влияет на производительность
21%
Нет, но хочу освоить
17%
Нет, не вижу в нем смысла
14%
Посмотреть результаты
🥱5
🚀Улучшение HTTP server routing в Go 1.22
Скудные возможности http.ServeMux привели к появлению целой индустрии сторонних библиотек. Новый мультиплексор значительно сократит разрыв с существующими сторонними пакетами и упростит жизнь Go-разработчикам.
Eli Bendersky делится мыслями о новом мультиплексоре (mux) и сравнивает новый подход с примерами из блога:
🔸REST Servers in Go: Part 1 - standard library
🔸REST Servers in Go: Part 2 - using a router package
👉 Читать перевод
Скудные возможности http.ServeMux привели к появлению целой индустрии сторонних библиотек. Новый мультиплексор значительно сократит разрыв с существующими сторонними пакетами и упростит жизнь Go-разработчикам.
Eli Bendersky делится мыслями о новом мультиплексоре (mux) и сравнивает новый подход с примерами из блога:
🔸REST Servers in Go: Part 1 - standard library
🔸REST Servers in Go: Part 2 - using a router package
👉 Читать перевод
Хабр
Улучшенная маршрутизация HTTP-серверов в Go 1.22
В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете...
👍14🔥4❤1🥱1
1️⃣Готовим иконку
$
magick convert icon.png -define icon:auto-resize=256,128,64,48,32,16 icon.ico
$
convert icon_16.png icon_32.png icon_48.png icon_256.png -colors 256 icon.ico
2️⃣Создаем файлы .syso
$
go install github.com/akavel/rsrc@latest
$
rsrc -arch 386 -ico icon.ico
$
rsrc -arch amd64 -ico icon.ico
3️⃣Go автоматически выберет любой соответствующий файл .syso в каталоге пакета main и включит его в исполняемый файл, созданный для Windows
👉 Подробнее
#go #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
hjr265.me
Adding Icons for Go-built Windows Executable
I have been using Windows for video games only for several years now. But that changed a little as I started working on Printd, Toph’s print server daemon.
An executable file (.exe) on Windows can provide its icons. If you build a Go program for Windows you…
An executable file (.exe) on Windows can provide its icons. If you build a Go program for Windows you…
👍17🤔4🔥2
Знаете ли вы, что существует минимальная Go-ориентированная реализация Linux для систем вроде Raspberry Pi и не только.
Gokrazy позволяет деплоить Go-программы как appliances на таких устройствах (представьте себе что-нибудь минимальное, например Alpine Linux, но только для Go).
👉 Сайт проекта & GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍6
$
gosh -pln '"Hello, World!"'
$
gosh -n -b 'count := 0' -e 'count++' -a-pln 'count'
$
gosh -i -w-pln 'strings.ReplaceAll(string(_l.Text()), "mod/pkg", "mod/v2/pkg")' -- abc.go xyz.go
$
gosh -http-handler 'http.FileServer(http.Dir("/tmp/xxx"))'
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
utilities/gosh/_gosh.DOC.md at master · nickwells/utilities
miscellaneous useful commands, including 'gosh' the Go scripting tool - nickwells/utilities
🥱21👍9
Поделитесь в комментариях
#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4
Курсы для тех, кто хочет получить новые скиллы или перейти в другую компанию на грейд выше
🔥Начните с демо-доступа или бесплатных вебинаров с преподавателем
🔹 Математика для Data Science
Самый хардкорный курс по вышмату! Идеален для тех, кто переходит в DS.
🔹 Алгоритмы и структуры данных
Курс, который на практике познакомит со сложными алгоритмами и научит писать более короткий и эффективный код.
🔹 Базовые модели ML и приложения
Познакомит с основными моделями машинного обучения, заложите основу для дальнейшего изучения более сложных нейронных сетей
🔹Архитектуры и шаблоны
проектирования
Освойте основные паттерны проектирования и прокачайте навыки построения архитектуры программного обеспечения
Приятного обучения и ваш промокод на скидку 30% до 25 октября – MIDDLE
🔥Начните с демо-доступа или бесплатных вебинаров с преподавателем
🔹 Математика для Data Science
Самый хардкорный курс по вышмату! Идеален для тех, кто переходит в DS.
🔹 Алгоритмы и структуры данных
Курс, который на практике познакомит со сложными алгоритмами и научит писать более короткий и эффективный код.
🔹 Базовые модели ML и приложения
Познакомит с основными моделями машинного обучения, заложите основу для дальнейшего изучения более сложных нейронных сетей
🔹Архитектуры и шаблоны
проектирования
Освойте основные паттерны проектирования и прокачайте навыки построения архитектуры программного обеспечения
Приятного обучения и ваш промокод на скидку 30% до 25 октября – MIDDLE
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Sam Rose для блога Encore создал интерактивный гайд, в котором исследует различные методы повтора запросов к серверу и показывает, почему одни методы лучше других. В качестве бонуса — небольшая реализация идеальной стратегии на Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤7👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/68a66cf6
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования.
🧐 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны». У вас будет собственный корабль, который научится летать по полю битвы, стрелять основным оружием и применять секретное оружие.
👉 Подробная программа обучения
👉 Купить со скидкой 30%
Промокод MIDDLE действует до 25 октября
Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/68a66cf6
🧐 Кому подойдет?
Разработчикам, которые знают любой объектно-ориентированный язык программирования.
🧐 Как проходит обучение?
В течение всего интенсива вы будете создавать игру «Звездные войны». У вас будет собственный корабль, который научится летать по полю битвы, стрелять основным оружием и применять секретное оружие.
👉 Подробная программа обучения
👉 Купить со скидкой 30%
Промокод MIDDLE действует до 25 октября
🌚2🔥1
💪Популярный Go-ютубер Anthony GG делится своим подходом к структурированию проектов на Go.
📺 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱34👍8😁3
🚀System Design 101
Готовитесь к собеседованию по проектированию систем или просто хотите понять принцип работы сложных систем? Тогда репозиторий ByteByteGo точно для вас.
👉 GitHub
Готовитесь к собеседованию по проектированию систем или просто хотите понять принцип работы сложных систем? Тогда репозиторий ByteByteGo точно для вас.
👉 GitHub
🔥21❤4👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30
This media is not supported in your browser
VIEW IN TELEGRAM
⚒️Templ — язык HTML-шаблонов для Go с отличными инструментами для разработчиков.
Инструмент позволяет создавать компоненты, которые отображают фрагменты HTML и компонуют их для создания экранов, страниц, документов и приложений.
📌Под капотом:
• Рендеринг на стороне сервера: можно развернуть как бессерверную функцию, Docker-контейнер или стандартную программу Go.
• Статический рендеринг: создавайте статические HTML-файлы для деплоя по вашему выбору.
• Скомпилированный код: компоненты компилируются в код Go.
• Использование Go: вызовите любой код Go и используйте стандартные операторы
• Не требует использования клиентского или серверного JavaScript.
• Поставляется с автодополнением IDE.
🎙 Кстати, инструмент среди прочих недавно обсудили в подкасте «РАДИО-Т» (00:26:52-00:50:36).
Инструмент позволяет создавать компоненты, которые отображают фрагменты HTML и компонуют их для создания экранов, страниц, документов и приложений.
📌Под капотом:
• Рендеринг на стороне сервера: можно развернуть как бессерверную функцию, Docker-контейнер или стандартную программу Go.
• Статический рендеринг: создавайте статические HTML-файлы для деплоя по вашему выбору.
• Скомпилированный код: компоненты компилируются в код Go.
• Использование Go: вызовите любой код Go и используйте стандартные операторы
if
, switch
и for
.• Не требует использования клиентского или серверного JavaScript.
• Поставляется с автодополнением IDE.
templ Hello(name string) {
<div>Hello, { name }</div>
}
templ Greeting(person Person) {
<div class="greeting">
@Hello(person.Name)
</div>
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍5🌚1
📊 Эффективная работа с JSON в Go
В статье рассматриваются основные подходы для работы с JSON в языке Go. Большое внимание уделено определениям из документации, а также конкретным примерам.
🔗 Читать статью
🔗 Зеркало
В статье рассматриваются основные подходы для работы с JSON в языке Go. Большое внимание уделено определениям из документации, а также конкретным примерам.
🔗 Читать статью
🔗 Зеркало
🔥9
При развертывании приложений в продакшене сборка двоичных файлов с информацией о версии и другими метаданными помогает улучшить процессы мониторинга, регистрации данных и отладки за счет добавления идентификационной информации для отслеживания версий сборок.
Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.
В Go эту проблему можно решить с помощью опции
Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг
1️⃣Установка значений переменных во время компиляции: можно использовать флаг для установки значений переменных во время компиляции, что может быть полезно для внедрения информации о версии, времени сборки или других метаданных в исполняемый файл.
$
2️⃣Оптимизация размера бинарного файла: флаг может быть использован для удаления информации об отладке и символов таблицы, что может значительно уменьшить размер исполняемого файла.
$
3️⃣Изменение поведения компоновщика: можно также изменять другие параметры компоновщика, например, задавать кастомный файл запуска или изменять поведение компоновщика по умолчанию.
$
4️⃣Изменение имени выходного файла: флаг может быть использован для задания кастомного имени выходного файла во время компиляции.
$
👉 Подробнее
#tip
Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.
В Go эту проблему можно решить с помощью опции
-ldflags
команды go build
. Флаг -ldflags
в Go используется для передачи определенных инструкций компоновщику (linker) во время сборки программы. Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг
-ldflags
:1️⃣Установка значений переменных во время компиляции: можно использовать флаг для установки значений переменных во время компиляции, что может быть полезно для внедрения информации о версии, времени сборки или других метаданных в исполняемый файл.
$
go build -ldflags "-X main.version=1.0.0"
2️⃣Оптимизация размера бинарного файла: флаг может быть использован для удаления информации об отладке и символов таблицы, что может значительно уменьшить размер исполняемого файла.
$
go build -ldflags "-s -w"
3️⃣Изменение поведения компоновщика: можно также изменять другие параметры компоновщика, например, задавать кастомный файл запуска или изменять поведение компоновщика по умолчанию.
$
go build -ldflags "-extldflags '-static'"
4️⃣Изменение имени выходного файла: флаг может быть использован для задания кастомного имени выходного файла во время компиляции.
$
go build -ldflags "-o custom_name"
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
Digitalocean
Использование ldflags для установки информации о версиях в приложениях Go | DigitalOcean
При развертывании приложений в производственной среде сборка двоичных файлов с информацией о версии и другими метаданными помогает улучшить процессы монитори…
🔥23👍6❤2