🔥 A next-generation CLI tool for building amazing web apps in Go using htmx & hyperscript
This CLI tool can easily build amazing web applications with Go on the backend, using htmx & hyperscript and the most popular atomic/utility-first CSS frameworks on the frontend.
Features:
– 100% free and open source under the Apache 2.0 license;
– For any level of developer's knowledge and technical expertise;
– Well-documented, with a lot of tips and assists from the authors;
– Smart CLI that does most of the routine setup and preparation for production;
– Helps to get into the Go + htmx + hyperscript technology stack faster;
– The possibility of simply adding a ready-to-use and completely customized atomic/utility-first CSS framework to your project;
– Has a library of user-friendly helpers for your Go code;
– Contains a comprehensive example of how to use it out of the box.
✨ GitHub repository: https://github.com/gowebly/gowebly
📖 Documentation: https://gowebly.org
📺 Demo video: https://www.youtube.com/watch?v=qazYscnLku4
📝 Introduction article: https://dev.to/koddr/a-next-generation-cli-tool-for-building-amazing-web-apps-in-go-using-htmx-hyperscript-336d
#go #htmx #webapps
This CLI tool can easily build amazing web applications with Go on the backend, using htmx & hyperscript and the most popular atomic/utility-first CSS frameworks on the frontend.
Features:
– 100% free and open source under the Apache 2.0 license;
– For any level of developer's knowledge and technical expertise;
– Well-documented, with a lot of tips and assists from the authors;
– Smart CLI that does most of the routine setup and preparation for production;
– Helps to get into the Go + htmx + hyperscript technology stack faster;
– The possibility of simply adding a ready-to-use and completely customized atomic/utility-first CSS framework to your project;
– Has a library of user-friendly helpers for your Go code;
– Contains a comprehensive example of how to use it out of the box.
✨ GitHub repository: https://github.com/gowebly/gowebly
📖 Documentation: https://gowebly.org
📺 Demo video: https://www.youtube.com/watch?v=qazYscnLku4
📝 Introduction article: https://dev.to/koddr/a-next-generation-cli-tool-for-building-amazing-web-apps-in-go-using-htmx-hyperscript-336d
#go #htmx #webapps
GitHub
GitHub - gowebly/gowebly: 🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend…
🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend, using htmx, hyperscript or Alpine.js, and the most popular CSS frameworks on the frontend....
Forwarded from Golang Дайджест
Type Inference - подробный разбор
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
go.dev
Everything You Always Wanted to Know About Type Inference - And a Little Bit More - The Go Programming Language
A description of how type inference for Go works. Based on the GopherCon 2023 talk with the same title.
Forwarded from Библиотека Go-разработчика | Golang
🤩Вы, вероятно, слышали о gRPC, если еще не использовали её. Она особенно популярна для межсервисной связи благодаря своей эффективности, языковой независимости и встроенной поддержке таких вещей, как MTLS.
☝️Выше представлен простой пример начала работы с gRPC от Matt Boyle.
#go #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Golang Дайджест
Прокачали логгер, теперь взялись за HTTP-роутер
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
2. Во втором - компонент
За ссылку спасибо @batazor
#go_updates #http
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
package main1. В первом хэнделере мы видим явное указание HTTP-метода (GET)
import (
"fmt"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("GET /path/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "got path\n")
})
mux.HandleFunc("/task/{id}/", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "handling task with id=%v\n", id)
})
http.ListenAndServe("localhost:8090", mux)
}
2. Во втором - компонент
{id}
и r.PathValue("id")
для получения значенияЗа ссылку спасибо @batazor
#go_updates #http
Forwarded from Библиотека Go-разработчика | Golang
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…
🔥 Big update: the Gowebly CLI now supports Templ
I've released a big update to the Gowebly CLI project in v1.5.0 which includes Templ support for built-in net/http and all Go web frameworks: Fiber, go-chi and echo.
https://dev.to/koddr/big-update-the-gowebly-cli-now-supports-templ-3gog
#go #gowebly #templ
I've released a big update to the Gowebly CLI project in v1.5.0 which includes Templ support for built-in net/http and all Go web frameworks: Fiber, go-chi and echo.
https://dev.to/koddr/big-update-the-gowebly-cli-now-supports-templ-3gog
#go #gowebly #templ
DEV Community
🔥 Big update: the Gowebly CLI now supports Templ
Introduction Hello, everyone! 🙌 I've released a big update to the Gowebly CLI project in...
🔥 Frontend update: the Gowebly CLI now supports daisyUI components library
I've released the Gowebly v1.8.0 which includes daisyUI components library support for the frontend.
👉 https://github.com/gowebly/gowebly
#go #gowebly
I've released the Gowebly v1.8.0 which includes daisyUI components library support for the frontend.
👉 https://github.com/gowebly/gowebly
#go #gowebly
GitHub
GitHub - gowebly/gowebly: 🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend…
🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend, using htmx, hyperscript or Alpine.js, and the most popular CSS frameworks on the frontend....
🔥Big frontend update: the Gowebly CLI now supports Bootstrap and Bulma
Since v1.9.0 release, the Gowebly CLI includes support for Bootstrap and Bulma CSS frameworks.
👉 https://dev.to/koddr/big-frontend-update-the-gowebly-cli-now-supports-bootstrap-and-bulma-1c45
#go #gowebly #webapps
Since v1.9.0 release, the Gowebly CLI includes support for Bootstrap and Bulma CSS frameworks.
👉 https://dev.to/koddr/big-frontend-update-the-gowebly-cli-now-supports-bootstrap-and-bulma-1c45
#go #gowebly #webapps
DEV Community
🔥 Big frontend update: the Gowebly CLI now supports Bootstrap and Bulma
Introduction Hey, DEV friends! 😉 Since v1.9.0 release, the Gowebly CLI includes support...
В голове Айтишника
❗️ Только нужно быть осторожным, выбирая huh, т.к. размер бинарника на выходе может вырасти в размере.
Я это уже "проверил" в своем сайд-проекте https://github.com/gowebly/gowebly в котором я перешёл на красивый TUI от huh, отказавшись от парсинга YAML-конфига через koanf.
Чтобы не быть голословным: RPM-пакет с Gowebly CLI v1.10.0 весил всего 2.12 MB, но уже v2.0.0 версия – выросла до 3.4 MB. И такая прогрессия по каждому таргету, для которого я делаю билд (macOS, Windows, различные GNU/Linux дистры).
А поменялся только сам факт конфигурирования CLI перед созданием нового проекта, так ещё и вырезано много строчек повторяющегося кода и редьюснуты gotmpl-шаблоны, использующиеся в генерации (которые эмбедится в бинарь).
Скорее всего, потому что huh много тянет из core-пакета bubbletea и lipgloss, чтобы быть таким красивым и функциональным. От этого ему и нужно больше включать в конечный бинарь... 🤔
Причём, не только моё, вот человек это же в ишьюсах huh пишет: https://github.com/charmbracelet/huh/issues/78
Окей, там уже пофиксили, но билд всё равно хорошо прибавляет в весе, если сравнивать с другими похожими Go-пакетами для TUI! Т.е. такая проблема есть даже после конкретного фикса.
Это всё не претензия, если что, просто интересное наблюдение и надежда на то, что будет лучше в будущих релизах! 😘
#go #gowebly #опытиспользования
Я это уже "проверил" в своем сайд-проекте https://github.com/gowebly/gowebly в котором я перешёл на красивый TUI от huh, отказавшись от парсинга YAML-конфига через koanf.
Чтобы не быть голословным: RPM-пакет с Gowebly CLI v1.10.0 весил всего 2.12 MB, но уже v2.0.0 версия – выросла до 3.4 MB. И такая прогрессия по каждому таргету, для которого я делаю билд (macOS, Windows, различные GNU/Linux дистры).
А поменялся только сам факт конфигурирования CLI перед созданием нового проекта, так ещё и вырезано много строчек повторяющегося кода и редьюснуты gotmpl-шаблоны, использующиеся в генерации (которые эмбедится в бинарь).
Скорее всего, потому что huh много тянет из core-пакета bubbletea и lipgloss, чтобы быть таким красивым и функциональным. От этого ему и нужно больше включать в конечный бинарь... 🤔
Причём, не только моё, вот человек это же в ишьюсах huh пишет: https://github.com/charmbracelet/huh/issues/78
Окей, там уже пофиксили, но билд всё равно хорошо прибавляет в весе, если сравнивать с другими похожими Go-пакетами для TUI! Т.е. такая проблема есть даже после конкретного фикса.
Это всё не претензия, если что, просто интересное наблюдение и надежда на то, что будет лучше в будущих релизах! 😘
#go #gowebly #опытиспользования
GitHub
GitHub - gowebly/gowebly: 🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend…
🔥 A next-generation CLI tool that makes it easy to create amazing web applications with Go on the backend, using htmx, hyperscript or Alpine.js, and the most popular CSS frameworks on the frontend....
🎉 The Gowebly CLI has grown to v2.0.0
While everyone was relaxing and thinking about Christmas, I was hard at work in my studio to prepare a massive update for the Gowebly CLI number v2.
👉 https://dev.to/koddr/the-gowebly-cli-has-grown-to-v200-d1c
#gowebly #go
While everyone was relaxing and thinking about Christmas, I was hard at work in my studio to prepare a massive update for the Gowebly CLI number v2.
👉 https://dev.to/koddr/the-gowebly-cli-has-grown-to-v200-d1c
#gowebly #go
DEV Community
🎉 The Gowebly CLI has grown to v2.0.0
Introduction Happy New Year, my DEV friends! 🎊 While everyone was relaxing and thinking...
Forwarded from Golang Дайджест
Go Tour на стероидах от ArdanLabs
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlans.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlans.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
Ardan Labs
Ultimate Go Tour
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
🔥 We couldn't get past the updates that occurred in the new version of Go
👉 https://github.com/gowebly/gowebly
#gowebly #go
1.22.0
, so all the innovations for the net/http
package have been leveraged in this release.👉 https://github.com/gowebly/gowebly
#gowebly #go
🤓 My top 3 Go packages that I wish I'd known about earlier
Today, I'd like to travel back in time, find myself at the very beginning of planning my current project, and advise myself to familiarize myself with these wonderful Go packages…
Unfortunately, I can't do that! But I can introduce you to them. Here we go 👇
https://dev.to/koddr/my-top-3-go-packages-that-i-wish-id-known-about-earlier-3j10
#go #golang
Today, I'd like to travel back in time, find myself at the very beginning of planning my current project, and advise myself to familiarize myself with these wonderful Go packages…
Unfortunately, I can't do that! But I can introduce you to them. Here we go 👇
https://dev.to/koddr/my-top-3-go-packages-that-i-wish-id-known-about-earlier-3j10
#go #golang
🔥 Today, I've released the
📝 Article: https://dev.to/koddr/preline-ui-gowebly-cli--2928
✨ GitHub: https://github.com/gowebly/gowebly
#go #golang #gowebly #preline #ui
Gowebly CLI
v2.4.0 which includes Preline UI
components library support for the frontend.📝 Article: https://dev.to/koddr/preline-ui-gowebly-cli--2928
✨ GitHub: https://github.com/gowebly/gowebly
#go #golang #gowebly #preline #ui
⚡️ Gowebly CLI now supports the PocketBase framework
PocketBase is an open source ready-to-use framework/backend for your next SaaS and mobile application in a single file.
📝 https://dev.to/koddr/gowebly-cli-now-supports-the-pocketbase-framework-bi6
#go #golang #gowebly
PocketBase is an open source ready-to-use framework/backend for your next SaaS and mobile application in a single file.
📝 https://dev.to/koddr/gowebly-cli-now-supports-the-pocketbase-framework-bi6
#go #golang #gowebly
Forwarded from Golang Книжная полка
Forwarded from Golang Дайджест
Range Over Function Types
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official
go.dev
Range Over Function Types - The Go Programming Language
A description of range over function types, a new feature in Go 1.23.
Forwarded from Golang Дайджест
unique - новый пакет в стандартной библиотеке Go 1.23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
https://go.dev/blog/unique
Ещё один интересный пост в официальном блоге авторов Go с подробным объяснением очередной интересной новинки в версии 1.23
Пакет unique упрощает работу с дубликатами. То есть, он позволяет выполнять дедупликацию таким хитрым образом, чтобы все ссылки указывали на единственную, уникальную копию. При этом пакет эффективно управляет этими копиями под капотом.
Возможно, вы уже встречали этот подход под названием Interning.
Автор статьи рассказывает и показывает, как это работает, и почему это полезно.
#go_official #go_1_23
go.dev
New unique package - The Go Programming Language
New package for interning in Go 1.23.
Forwarded from Go Update
🎉 Вышел Go 1.24! 🎉
Этот момент настал.
Ключевые нововведения:
— Дженерики теперь умеют в псевдонимы (aliases) т.е. теперь можно писать так
Поздравляю тех, кому приходилось работать с указателями в дженериках, теперь можно хоть нормальные сигнатуры наружу выставлять.
— Теперь можно отслеживать версии и использовать утилиты прямо с помощью команды
—
— Бинари запущенные с помощью
—
— С помощью новой переменной окружения
—
— Новая реализация map на основе Swiss Tables. Бигтехи ваши вопросы на собесах больше неактуальны 🤡.
— Инлайнинг стал мощнее. Теперь, с большей вероятностью, тело функции которую вы передаете как аргумент будет вставлено в место ее вызова. Делали в основном для итераторов которые уступали по скорости циклам. Вместе с прошлым изменением и прочими изменениями в рантайме дало совокупный буст в 3-5% по производительности.
— Различные улучшения CGO с помощью новых директив.
— Новый способ гонять бенчи
— С помощью переменной окружения
— Пакет со слабыми указателями стал доступен всем.
— Подъехала замена финалайзерам. С типобезопастностью и сигнатурой которая намекает как делать правильно (и длинной докой объясняющей все сценарии). А еще их можно повесить сколько угодно в отличии от финалайзеров. Почему это важно я писал ранее.
— Пакет testing/synctest который в будущем позволит нам полностью дропнуть все моки времени. Пока обещают изменения API поэтому скрыто за флагом
— Появился OpenRoot. TLDR: открыв каталог таким образом из него нельзя убежать используя симлинки и прочая. Штука интересная для тех у кого пути до файлов генерируются извне.
— Куча прочих улучшений, включая новый функции для итераторов в пакеты
— У тестов и бенчей появился свой контекст! Можно будет дропнуть кучу кода отвечающего за создание контекстов в тестах.
Полное описание (жирного) релиза вот тут.
Этот момент настал.
Ключевые нововведения:
— Дженерики теперь умеют в псевдонимы (aliases) т.е. теперь можно писать так
type MyType[T any] = myType[T,*T]
Поздравляю тех, кому приходилось работать с указателями в дженериках, теперь можно хоть нормальные сигнатуры наружу выставлять.
— Теперь можно отслеживать версии и использовать утилиты прямо с помощью команды
go tool
. Краткий смысл сего: оно помещает все зависимости добавляемой тулзы в require
блок, а саму утилиту в блок tool. Учтите, что если вы не указываете отдельный go.mod
файл с помощью флага -modfile
(его принимают большинство команд) то зависимости внешней тулзы перемешаются с вашими. Однако есть и хорошая новость — из-за умного механизма «вычистки» MVS если кто то импортирует ваш модуль, то зависимости которые нужны для утилит к нему не попадут.—
go test
теперь гоняет go vet
с небольшим числом анализаторов перед запуском тестов для поиска распространенных ошибок (в том числе ошибок в оформлении тестов). go vet
тоже подтянули, теперь, например, ругается на printf
функции где аргумент только строка.— Бинари запущенные с помощью
go run
и go tool
теперь кешируются внутри внутри билд кэша. Никаких больше пересборок на каждом go run
. —
go build
и go install
научили в json вывод.— С помощью новой переменной окружения
GOAUTH
можно определить принцип для авторизации на приватных серверах модулей. Подробности с помощью go help goauth
—
go build
теперь вставляет в бинарь информацию о версии (наконец-то можно перестать делать это вручную!) с использованием тега и/или хеша коммита вашего гита (или mercurial и прочая).— Новая реализация map на основе Swiss Tables. Бигтехи ваши вопросы на собесах больше неактуальны 🤡.
— Инлайнинг стал мощнее. Теперь, с большей вероятностью, тело функции которую вы передаете как аргумент будет вставлено в место ее вызова. Делали в основном для итераторов которые уступали по скорости циклам. Вместе с прошлым изменением и прочими изменениями в рантайме дало совокупный буст в 3-5% по производительности.
— Различные улучшения CGO с помощью новых директив.
— Новый способ гонять бенчи
for b.Loop() { ... }
. Основной плюс (кроме того, что меньше писать) в том, что гонялке бенчмарков больше не нужно вызывать вашу функцию несколько раз, ибо сама найдет нужные параметры во время цикла. А значит дорогие блоки инициализации и удаления по итогу бенча стали дешевле. — С помощью переменной окружения
GOCACHEPROG
можно настроить свое утилиту которое будет отвечать за кеширование, вместо стандартного «все на диск в папочку». Пригодиться тем, у кого распределенные билды или много чего собирается в докере. Документация.— Пакет со слабыми указателями стал доступен всем.
— Подъехала замена финалайзерам. С типобезопастностью и сигнатурой которая намекает как делать правильно (и длинной докой объясняющей все сценарии). А еще их можно повесить сколько угодно в отличии от финалайзеров. Почему это важно я писал ранее.
— Пакет testing/synctest который в будущем позволит нам полностью дропнуть все моки времени. Пока обещают изменения API поэтому скрыто за флагом
GOEXPERIMENT=synctest
— Появился OpenRoot. TLDR: открыв каталог таким образом из него нельзя убежать используя симлинки и прочая. Штука интересная для тех у кого пути до файлов генерируются извне.
— Куча прочих улучшений, включая новый функции для итераторов в пакеты
bytes
и strings
.— У тестов и бенчей появился свой контекст! Можно будет дропнуть кучу кода отвечающего за создание контекстов в тестах.
Полное описание (жирного) релиза вот тут.
go.dev
Go 1.23 Release Notes - The Go Programming Language
This media is not supported in your browser
VIEW IN TELEGRAM
🎉 Обновил-таки наконец-то свой проект Gowebly до новой мажорной версии
Главное — это переход на новую версию Go 1.24 и поддержка Tailwind CSS версии 4.0 для всех фреймворков (daisyUI, Preline UI, Flowbite и ванильного тейлвинда, конечно же).
Также, удалил зависимость от спиннера из пакета
Уже можно обновляться 👉 https://gowebly.org/
#go #gowebly #cli
v3.0.0
Главное — это переход на новую версию Go 1.24 и поддержка Tailwind CSS версии 4.0 для всех фреймворков (daisyUI, Preline UI, Flowbite и ванильного тейлвинда, конечно же).
Также, удалил зависимость от спиннера из пакета
charmbracelet/huh
и немного причесал выдачу сообщений пользователю в рабочем процессе CLI.Уже можно обновляться 👉 https://gowebly.org/
#go #gowebly #cli