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
Конкурентный доступ к переменной? Вам нужен
mutex
! Или оператор sync/atomic
, если он подходит для вашего юзкейса. Хотя и он на самом деле не нужен. Оператор select
— это элегантная альтернатива.Christoph Berger раскрывает проблему поддержания актуальности токена доступа в веб-приложениях, когда множество клиентских сессий требует непрерывного потока данных от API.
Основное внимание уделяется методу dynamic futures в Go, который позволяет инициализировать и обновлять токен доступа из централизованного места, делая его доступным для многочисленных клиентских сессий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤1
🧰 Команда Git представила Go-проект trace2receiver, который представляет собой компонент trace receiver для демона Custom Collector OpenTelemetry. Он получает телеметрию Git Trace2 от локальных команд Git, преобразует ее в формат OpenTelemetry и пересылает другим компонентам OpenTelemetry.
Этот компонент полезен, если вы хотите собрать данные о производительности команд Git, агрегировать данные от нескольких пользователей для создания панелей мониторинга производительности, построить распределенные трассировки вложенных команд Git или понять, как размер и форма ваших репозиториев Git влияют на производительность команд.
👉 GitHub
Этот компонент полезен, если вы хотите собрать данные о производительности команд Git, агрегировать данные от нескольких пользователей для создания панелей мониторинга производительности, построить распределенные трассировки вложенных команд Git или понять, как размер и форма ваших репозиториев Git влияют на производительность команд.
👉 GitHub
❤4🔥1
Zero-Configuration Environment Variables: как настроить переменные окружения по умолчанию с помощью стандартной библиотеки.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍4
🌃🧰 GoCity — инструмент для визуализации исходного кода Go в виде зданий города.
Он может дать лучшее представление о том, как вы структурировали код, либо вы можете просто использовать его по фану. Здесь можно увидеть примеры для:
🔸sirupsen/logrus
🔸gin-gonic/gin
🔸spf13/cobra
🔸gohugoio/hugo
👉 GitHub
Он может дать лучшее представление о том, как вы структурировали код, либо вы можете просто использовать его по фану. Здесь можно увидеть примеры для:
🔸sirupsen/logrus
🔸gin-gonic/gin
🔸spf13/cobra
🔸gohugoio/hugo
👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🥱6🌚4👏3
🛠Разработка движка регулярных выражений с нуля: пошаговый гайд для Go-разработчика
Хотя вам, вероятно, не нужна еще одна библиотека регулярных выражений, здесь автор проводит по каждому этапу разработки и объясняет с помощью простых иллюстраций.
• Parsing
• Building the state machine
• Matching
👉 Читать
Хотя вам, вероятно, не нужна еще одна библиотека регулярных выражений, здесь автор проводит по каждому этапу разработки и объясняет с помощью простых иллюстраций.
• Parsing
• Building the state machine
• Matching
Please open Telegram to view this post
VIEW IN TELEGRAM
rhaeguard's blog
How to build a regex engine from scratch
👍6❤1
Какой из этих аспектов для вас является самым важным в карьере разработчика? Можете выбрать несколько вариантов или написать свой.
Anonymous Poll
30%
Творческая работа
38%
Возможность самореализации
32%
Востребованность профессии и высокий спрос на разработчиков
64%
Высокий доход
55%
Гибкий график и возможность работы удаленно
43%
Профессиональное развитие и карьерные перспективы
18%
Свобода выбора языка программирования/стека/...
54%
Удовлетворение от решения сложных задач и постоянного обучения
1%
Свой вариант (напишу в комментарии)
8%
Посмотреть результаты
😁11👍1
🔹Часть 1. Как избежать ловушек в Go: простые примеры
🔹Часть 2. Размышления о nil в Go
🔹Часть 3. Размышления о срезах в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - dolthub/go-mysql-server: A MySQL-compatible relational database with a storage agnostic query engine. Implemented in pure…
A MySQL-compatible relational database with a storage agnostic query engine. Implemented in pure Go. - dolthub/go-mysql-server
👍11🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - golang-module/carbon: Move to https://github.com/dromara/carbon
Move to https://github.com/dromara/carbon. Contribute to golang-module/carbon development by creating an account on GitHub.
👍15❤5
Forwarded from Библиотека Go для собеса | вопросы с собеседований
💬Для чего в Go используются синтаксическая конструкция ‘…’?
📌Синтаксическая конструкция ‘…’ в Go используется в нескольких контекстах, в частности для:
1️⃣Определения функции с переменным количеством аргументов (вариативная функция). Она позволяет функции принимать неопределенное количество аргументов одного типа. Например:
2️⃣Передачи элементов среза как отдельных аргументов функции:
3️⃣Определения массивов неизвестной заранее длины:
📌Синтаксическая конструкция ‘…’ в Go используется в нескольких контекстах, в частности для:
1️⃣Определения функции с переменным количеством аргументов (вариативная функция). Она позволяет функции принимать неопределенное количество аргументов одного типа. Например:
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
2️⃣Передачи элементов среза как отдельных аргументов функции:
nums := []int{1, 2, 3, 4}
sum(nums...)
3️⃣Определения массивов неизвестной заранее длины:
x := [...]int{1, 2, 3}
// Здесь Go определит длину массива на основе количества элементов👍52🥱7
🤔Критика по поводу обработки ошибок в Go распространена, но какие есть решения? Их гораздо меньше.
🤯Автор предлагает синтаксис (на скрине), который можно расширить до типичного подхода
🗣Ожидаемо, что на Hacker News эта статья привела к холивару, в котором мнения варьировались от «Мне нравится, как Go это делает» до «Вместо этого используйте Rust».
🤯Автор предлагает синтаксис (на скрине), который можно расширить до типичного подхода
if err != nil
с помощью (весьма экспериментального) инструмента Bango.🗣Ожидаемо, что на Hacker News эта статья привела к холивару, в котором мнения варьировались от «Мне нравится, как Go это делает» до «Вместо этого используйте Rust».
🤔15😁7🌚3❤2🥱2
☑️Инструмент сочетает в себе элегантность TUI BubbleTea с широкими возможностями API RadioBrowser. Основные особенности:
🎤Изящный и интуитивно понятный TUI
🎤Возможность поиска, просмотра и прослушивания радиостанции из обширной глобальной базы данных
🎤Интегрированное воспроизведение с использованием ffplay и многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥9❤2🤔2