Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Высокопроизводительное кэширование с помощью Redis и Go
Go - отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Стандартом де-факто для централизованного кэширования является Redis, но, популярные сегодня библиотеки Go не поддерживают потоковую передачу данных, эффективных с точки зрения памяти.
Вместо этого они предлагают
Этот паттерн работает хорошо, если вы кэшируете небольшие объекты, но если вы кэшируете объекты размером более 1 кб, []byte-ориентированные API работют не так хорошо.
В протоколе Redis нет ничего такого, что мешало бы создать потоковый API. Поэтому пердставляем redjet, библиотеку Redis, ориентированную на производительность.
С помощью redjet вы можете написать приведенный выше код следующим образом:
Код стал проще и эффективнее.
▪️Github
▪️Читать дальше
▪️Бенчмарки
@golangprofi
Go - отличный язык для создания высокопроизводительных веб-приложений, а высокопроизводительные веб-приложения часто требуют централизованного кэширования.
Стандартом де-факто для централизованного кэширования является Redis, но, популярные сегодня библиотеки Go не поддерживают потоковую передачу данных, эффективных с точки зрения памяти.
Вместо этого они предлагают
[]byte API,
с которыми вы взаимодействуете следующим образом:// В этом коде используется https://github.com/redis/go-redis, но те же
// ограничения действуют для Rueidis и Redigo.
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Extract key from RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Get the value from Redis as a byte slice
val, err := rdb.Get(ctx, key).Bytes()
if err == redis.Nil {
http.Error(w, "Key not found in Redis", http.StatusNotFound)
return
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
_, err = w.Write(val)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Этот паттерн работает хорошо, если вы кэшируете небольшие объекты, но если вы кэшируете объекты размером более 1 кб, []byte-ориентированные API работют не так хорошо.
В протоколе Redis нет ничего такого, что мешало бы создать потоковый API. Поэтому пердставляем redjet, библиотеку Redis, ориентированную на производительность.
С помощью redjet вы можете написать приведенный выше код следующим образом:
func redisHandler(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
// Извлечение ключа из RequestURI
key := strings.TrimLeft(r.RequestURI, "/")
// Передаем значение непосредственно из Redis в ответ.
_, err := rdb.Command("GET", key).WriteTo(w)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
Код стал проще и эффективнее.
go get github.com/coder/redjet@latest
▪️Github
▪️Читать дальше
▪️Бенчмарки
@golangprofi
GitHub
GitHub - redis/go-redis: Redis Go client
Redis Go client. Contribute to redis/go-redis development by creating an account on GitHub.
📚Библиотеки и инструменты для создания и отправки электронной почты на GO.
▪️chasquid - SMTP-сервер, написанный на Go.
▪️douceur - CSS-инлайнер для ваших HTML-писем.
▪️email - Надежная и гибкая библиотека работы с электронной почтой на Go.
▪️email-verifier - Библиотека Go для проверки электронной почты без отправки писем.
▪️go-dkim - Библиотека DKIM для подписи и проверки электронной почты.
▪️go-email-normalizer - Библиотека Golang для нормализации электронной почты.
▪️go-email-validator - Модульный валидатор электронной почты для проверки синтаксиса, содержания, smtp и т. д..
▪️go-imap - Библиотека IMAP для клиентов и серверов.
▪️go-mail - Простая библиотека Go для отправки писем на Go.
▪️go-message - Потоковая библиотека для Internet Message Format и почтовых сообщений.
▪️go-premailer - Встраиваемая стилизация для HTML-почты в Go.
▪️go-simple-mail - Очень простой пакет для отправки электронной почты с SMTP Keep Alive и двумя таймаутами: Connect и Send.
▪️Hectane - Легкий SMTP-клиент, предоставляющий API.
▪️hermes - Пакет Golang, генерирующий HTML-письма.
▪️Maddy - Почтовый сервер "все в одном" (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE).
▪️mailchain - Отправка зашифрованных писем на адреса блокчейна, написанная на Go.
▪️mailgun-go - Библиотека Go для отправки почты с помощью Mailgun API.
▪️MailHog - тестирование электронной почты и SMTP с веб-интерфейсом и API.
▪️Mailpit - Инструмент тестирования электронной почты и SMTP для разработчиков.
▪️mailx - Mailx - это библиотека, которая упрощает отправку электронной почты по SMTP. Она является расширением стандартной библиотеки golang net/smtp.
▪️SendGrid - Go-библиотека SendGrid для отправки электронной почты.
▪️smtp - Машина состояний протокола SMTP-сервера.
▪️smtpmock - Легкий настраиваемый многопоточный тестовый SMTP-сервер. Имитирует любое поведение SMTP в вашей тестовой среде.
▪️truemail-go - Настраиваемый валидатор/верификатор электронной почты на языке Golang. Проверяет почту через Regex, DNS, SMTP и многое другое.
👉 Golang Юниор | #golang
▪️chasquid - SMTP-сервер, написанный на Go.
▪️douceur - CSS-инлайнер для ваших HTML-писем.
▪️email - Надежная и гибкая библиотека работы с электронной почтой на Go.
▪️email-verifier - Библиотека Go для проверки электронной почты без отправки писем.
▪️go-dkim - Библиотека DKIM для подписи и проверки электронной почты.
▪️go-email-normalizer - Библиотека Golang для нормализации электронной почты.
▪️go-email-validator - Модульный валидатор электронной почты для проверки синтаксиса, содержания, smtp и т. д..
▪️go-imap - Библиотека IMAP для клиентов и серверов.
▪️go-mail - Простая библиотека Go для отправки писем на Go.
▪️go-message - Потоковая библиотека для Internet Message Format и почтовых сообщений.
▪️go-premailer - Встраиваемая стилизация для HTML-почты в Go.
▪️go-simple-mail - Очень простой пакет для отправки электронной почты с SMTP Keep Alive и двумя таймаутами: Connect и Send.
▪️Hectane - Легкий SMTP-клиент, предоставляющий API.
▪️hermes - Пакет Golang, генерирующий HTML-письма.
▪️Maddy - Почтовый сервер "все в одном" (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE).
▪️mailchain - Отправка зашифрованных писем на адреса блокчейна, написанная на Go.
▪️mailgun-go - Библиотека Go для отправки почты с помощью Mailgun API.
▪️MailHog - тестирование электронной почты и SMTP с веб-интерфейсом и API.
▪️Mailpit - Инструмент тестирования электронной почты и SMTP для разработчиков.
▪️mailx - Mailx - это библиотека, которая упрощает отправку электронной почты по SMTP. Она является расширением стандартной библиотеки golang net/smtp.
▪️SendGrid - Go-библиотека SendGrid для отправки электронной почты.
▪️smtp - Машина состояний протокола SMTP-сервера.
▪️smtpmock - Легкий настраиваемый многопоточный тестовый SMTP-сервер. Имитирует любое поведение SMTP в вашей тестовой среде.
▪️truemail-go - Настраиваемый валидатор/верификатор электронной почты на языке Golang. Проверяет почту через Regex, DNS, SMTP и многое другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - aymerick/douceur: A simple CSS parser and inliner in Go
A simple CSS parser and inliner in Go. Contribute to aymerick/douceur development by creating an account on GitHub.
This media is not supported in your browser
VIEW IN TELEGRAM
Enola Holmes
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
👉 Golang Юниор | #golang
Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.
go install github.com/theyahya/enola/cmd/enola@latest
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка книг по Go на русском языке.
Скачивайте и читайте.
Программирование на языке Go
Автор: Саммерфильд Марк
Go. Рецепты программирования
Автор: Аарон Торрес
Black Hat Go
Автор: Том Стил
Облачный Go
Автор: Титмус М. А.
Практический Go
Автор: Амит Саха
Golang для профи
Автор: Михалис Цукалос
#подборка #ru
Скачивайте и читайте.
Программирование на языке Go
Автор: Саммерфильд Марк
Go. Рецепты программирования
Автор: Аарон Торрес
Black Hat Go
Автор: Том Стил
Облачный Go
Автор: Титмус М. А.
Практический Go
Автор: Амит Саха
Golang для профи
Автор: Михалис Цукалос
#подборка #ru
Задача: Что выведет следующий код при компиляции и запуске с использованием Go 1.24?
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
count := 3
fmt.Println("Запуск горутин...")
wg.Add(count)
for i := 0; i < count; i++ {
// Запускаем горутину в каждой итерации
go func() {
defer wg.Done()
// Имитируем небольшую работу
time.Sleep(time.Duration(10) * time.Millisecond)
// Используем переменную цикла 'i' внутри горутины
fmt.Printf("Горутина видит i = %d\n", i)
}()
}
fmt.Println("Ожидание завершения горутин...")
wg.Wait()
fmt.Println("Все горутины завершены.")
}
Разбор:
Когда горутины реально начинали выполняться (после небольшой задержки time.Sleep), цикл for, скорее всего, уже завершался. К этому моменту переменная i имела бы свое конечное значение (в данном случае 3, так как цикл завершается, когда i становится равным count).
Поэтому в старых версиях Go этот код, скорее всего, вывел бы:
Запуск горутин...
Ожидание завершения горутин...
Горутина видит i = 3
Горутина видит i = 3
Горутина видит i = 3
Все горутины завершены.
(Порядок строк "Горутина видит..." мог быть разным). Чтобы обойти это, раньше приходилось делать так: i := i внутри цикла перед запуском горутины, чтобы создать копию переменной для каждой итерации.
Новое поведение (Go 1.22 и новее, включая 1.24): Начиная с Go 1.22, семантика переменных цикла for была изменена для предотвращения этой распространенной ошибки. Теперь переменная цикла (i в нашем случае) пересоздается для каждой итерации.
Это означает, что каждая горутина захватывает свою собственную копию i, соответствующую значению на момент этой итерации.
Ожидаемый вывод (Go 1.24): Благодаря изменению в Go 1.22, каждая горутина теперь корректно видит значение i той итерации, в которой она была запущена. Поэтому вывод будет (порядок строк "Горутина видит..." может варьироваться из-за недетерминированного планирования горутин):
Запуск горутин...
Ожидание завершения горутин...
Горутина видит i = 0
Горутина видит i = 1
Горутина видит i = 2
Все горутины завершены.
Use code with caution.
Или, например:
Запуск горутин...
Ожидание завершения горутин...
Горутина видит i = 2
Горутина видит i = 0
Горутина видит i = 1
Все горутины завершены.
Подвох заключается в том, что код выглядит как классический пример ошибки захвата переменной цикла, но из-за изменений в языке начиная с Go 1.22, он теперь работает "правильно" без необходимости явного копирования переменной (i := i).
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Go Developer. Удалёнка (РФ, РБ), 70–100 т.р.
✓ Golang Developer. Удалёнка (РФ), 100–140 т.р.
✓ C++/Go-разработчик. Гибрид (Новосибирск)
✓ Golang Developer. Удалёнка (РФ), 150–250 т.р.
✓ Golang Developer. Гибрид (Москва), 200–450 т.р.
✓ Golang разработчик. Гибрид (Москва), ЗП обсуждается
✓ Golang Developer. Гибрид/Офис (Тбилиси), 400–800 т.р.
#подборка #golang #go
✓ Go Developer. Удалёнка (РФ, РБ), 70–100 т.р.
✓ Golang Developer. Удалёнка (РФ), 100–140 т.р.
✓ C++/Go-разработчик. Гибрид (Новосибирск)
✓ Golang Developer. Удалёнка (РФ), 150–250 т.р.
✓ Golang Developer. Гибрид (Москва), 200–450 т.р.
✓ Golang разработчик. Гибрид (Москва), ЗП обсуждается
✓ Golang Developer. Гибрид/Офис (Тбилиси), 400–800 т.р.
#подборка #golang #go
В базе данных Dolt (аналог Git, но для SQL-таблиц) после рефакторинга один из бенчмарков (types_scan) внезапно стал работать на 30% медленнее. Причина? Казалось бы, невинная строчка кода.
📉 Что произошло
Метод GetBytes() начал вызывать ReadBytes() у интерфейса ValueStore. Всё выглядело логично, пока не включили профилировщик Go и не обнаружили странную активность:
🔍 runtime.newobject вызывался слишком часто → программа делала много лишних аллокаций в куче.
📦 Где зарыта собака
func (vs nodeStore) ReadBytes(...) ...
Этот метод использовал приёмник по значению (vs nodeStore). Это значит, что вся структура копировалась при каждом вызове метода, даже если она большая.
🚑 Как пофиксили
Просто поменяли на приёмник по указателю:
func (vs *nodeStore) ReadBytes(...) ...
Вуаля — аллокейшны исчезли, производительность восстановилась.
🧠 Вывод
❗️ Методы с приёмником по значению = риск лишнего копирования и аллокаций
🛠 Даже один маленький метод может резко замедлить ваш код
🔍 Профилировка в Go — мощный инструмент. Используй pprof!
Полный разбор в блоге DoltHub
Подробнее про Dolt
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Zinx — легковесный фреймворк для игровых серверов на Golang. В отличие от универсальных решений вроде gRPC, этот фреймворк заточен именно под long-lived соединения с поддержкой маршрутизации сообщений и пула воркеров.
Проект изначально создавался как обучающий — его документация буквально ведёт разработчика шаг за шагом от простого эхо-сервера до полноценного кластера. Сейчас Zinx используют в продакшене, включая китайские игровые студии.
🤖 GitHub
Проект изначально создавался как обучающий — его документация буквально ведёт разработчика шаг за шагом от простого эхо-сервера до полноценного кластера. Сейчас Zinx используют в продакшене, включая китайские игровые студии.
🤖 GitHub
This media is not supported in your browser
VIEW IN TELEGRAM
📦 Go-Package-Manager — легкий менеджер пакетов для Go-проектов без go.mod
🚀 Что это такое?
Go-Package-Manager (GPM) — это минималистичный менеджер пакетов для Go, который:
- 📁 копирует зависимости напрямую в папку
- 🧵 поддерживает установку с GitHub, Gist, Bitbucket и GitLab
- 🔧 позволяет собирать и запускать проект без конфликта с
🛠 Основные команды:
-
-
-
-
💡 Пример
🎯 Кому будет полезно?
• Новичкам, которые не хотят сразу погружаться в
• Тем, кто работает над однострочными утилитами или экспериментальными скриптами
• Для старых проектов без модулей или в нестандартных окружениях
🔗 Репозиторий
🚀 Что это такое?
Go-Package-Manager (GPM) — это минималистичный менеджер пакетов для Go, который:
- 📁 копирует зависимости напрямую в папку
pkg/
- 🧵 поддерживает установку с GitHub, Gist, Bitbucket и GitLab
- 🔧 позволяет собирать и запускать проект без конфликта с
go.mod
🛠 Основные команды:
-
gpm get [repo]
— загрузка зависимости -
gpm run [main.go]
— сборка и запуск проекта -
gpm install
— установка всех зависимостей из packages.yaml
-
gpm clean
— очистка всех пакетов💡 Пример
packages.yaml
:
packages:
- github.com/some/package
- gitlab.com/another/dep
🎯 Кому будет полезно?
• Новичкам, которые не хотят сразу погружаться в
go mod
• Тем, кто работает над однострочными утилитами или экспериментальными скриптами
• Для старых проектов без модулей или в нестандартных окружениях
🔗 Репозиторий
🚀 Go-Json-Rest — минималистичный фреймворк для JSON API на Go. Этот проект предлагает необычно простой способ создания RESTful API без лишней сложности.
В отличие от тяжёлых фреймворков, он работает как тонкая прослойка над стандартным net/http, добавляя лишь необходимое. Также инструмент имеет архитектуру с middleware-стеком, с помощью которой можно гибко добавлять функциональность вроде CORS или авторизации, сохраняя минимализм кода.
🤖 GitHub
В отличие от тяжёлых фреймворков, он работает как тонкая прослойка над стандартным net/http, добавляя лишь необходимое. Также инструмент имеет архитектуру с middleware-стеком, с помощью которой можно гибко добавлять функциональность вроде CORS или авторизации, сохраняя минимализм кода.
🤖 GitHub
❓Вопрос:
Что будет выведено на экран?
Напишите полный вывод программы и объясни, почему именно так.
💡Подсказки:
Что происходит с интерфейсами в Go при присвоении структур?
Что такое shadowing и как это влияет на s внутри анонимной функции?
Как работает передача аргументов в goroutine?
Как изменения структуры после передачи влияют на уже переданные значения?
✅ Ответ:
Hi, I'm Alice
Hi, I'm Bob
Hi, I'm Bob
Что будет выведено на экран?
Напишите полный вывод программы и объясни, почему именно так.
package main
import (
"fmt"
"time"
)
type Speaker interface {
Speak() string
}
type Person struct {
name string
}
func (p Person) Speak() string {
return "Hi, I'm " + p.name
}
func main() {
var s Speaker
p := Person{name: "Alice"}
s = p
p.name = "Bob"
fmt.Println(s.Speak()) // (1)
func() {
s := p // shadowing: s — это теперь Person, а не Speaker
fmt.Println(s.Speak()) // (2)
}()
go func(p Person) {
time.Sleep(10 * time.Millisecond)
fmt.Println(p.Speak()) // (3)
}(p)
p.name = "Charlie"
time.Sleep(20 * time.Millisecond)
}
💡Подсказки:
Что такое shadowing и как это влияет на s внутри анонимной функции?
Как работает передача аргументов в goroutine?
Как изменения структуры после передачи влияют на уже переданные значения?
✅ Ответ:
Hi, I'm Bob
Hi, I'm Bob
Media is too big
VIEW IN TELEGRAM
Go (или Golang) — современный язык программирования от Google, который сочетает в себе простоту синтаксиса, высокую производительность и надёжную многопоточность. Ниже собрана хронология ключевых этапов его эволюции.
1. Зачатки идеи (2007)
- Место и время: Google, 2007 год
- Инициаторы: Роберт Гриземер, Роб Пайк и Кен Томпсон
- Мотивация:
- Устранить избыточную сложность C++ и Java
- Сохранить статическую типизацию и скорость компиляции
- Сделать параллелизм «из коробки» через модель CSP (Communicating Sequential Processes)
2. Первый публичный релиз (2009)
- 10 ноября 2009
- Запуск официального сайта [golang.org]
- Публикация открытого исходного кода
- Появление интерактивного «Tour of Go» для знакомства с основами языка
3. Go 1.0 — стабилизация и гарантия совместимости (2012)
- 28 марта 2012
- Выход Go 1.0 с обещанием: любая программа, скомпилированная под Go 1.0, будет работать без изменений во всех версиях Go 1.x
- Это решение укрепило доверие сообщества и заложило фундамент для расширения экосистемы
4. Ключевые промежуточные релизы
- Go 1.1 (13 мая 2013)
- Оптимизации компиляции и улучшения runtime
- Go 1.5 (19 августа 2015)
- Полный перенос компилятора и инструментов на Go (убрана зависимость от C)
- Существенно улучшен сборщик мусора
- Go 1.6 (17 февраля 2016)
- Ускорение стандартной библиотеки и улучшенные средства отладки
5. Gopher — талисман и бренд
- 2009: дизайнер Рене Френч создаёт милого Gopher-грызуна
- Ноябрь 2016: выпуск фирменных шрифтов Go и Go Mono
- Апрель 2018: обновлён логотип, подчёркивающий динамику и простоту
6. Система модулей (Go 1.11–1.13)
- Go 1.11 (август 2018): официальная поддержка модулей для управления зависимостями
- Go 1.13 (середина 2019): модули становятся режимом по умолчанию, заменяя устаревший GOPATH
7. Появление обобщённостей (generics) в Go 1.18
- 15 марта 2022
- Введение Generics — долгожданной возможности писать типобезопасный и переиспользуемый код
- Встроенные инструменты для фуззинга
- Новый режим workspace для одновременной работы над несколькими модулями
8. Современное состояние (Go 1.24 и далее)
- Апрель 2025: выход Go 1.24 с новыми оптимизациями компилятора, улучшениями runtime и расширенными инструментами профилирования
- Применение: Docker, Kubernetes, микросервисные архитектуры, высоконагруженные системы
- Сообщество: десятки тысяч публикаций, конференций GopherCon по всему миру, активная разработка экосистемы
> Go прошёл путь от внутреннего эксперимента Google до одного из самых популярных языков для инфраструктурного и высокопроизводительного ПО. Его главные преимущества — лаконичность, надёжность и встроенный параллелизм — делают Go незаменимым инструментом в эпоху многопроцессорных систем.
https://youtube.com/shorts/-lkVgKwrPM4?feature=share
Please open Telegram to view this post
VIEW IN TELEGRAM
Cache-Control
. Простота настройки делает Reload удобным инструментом для ускорения разработки и тестирования. Она идеально подходит для разработчиков, которые хотят минимизировать рутинные задачи и сосредоточиться на создании функционального и качественного кода.Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Junior Golang Developer. Удалёнка, 75–100 т.р.
✓ Golang Developer. Удалёнка, 100–140 т.р.
✓ Go Developer. Удалёнка
✓ Программист FullStack/Java script/Go. Удалёнка, 2000$–4000$
✓ Go Developer. Удалёнка
✓ Senior Go Developer. Офис/Удалёнка (Москва), 350–400 т.р.
#подборка #golang #go
✓ Junior Golang Developer. Удалёнка, 75–100 т.р.
✓ Golang Developer. Удалёнка, 100–140 т.р.
✓ Go Developer. Удалёнка
✓ Программист FullStack/Java script/Go. Удалёнка, 2000$–4000$
✓ Go Developer. Удалёнка
✓ Senior Go Developer. Офис/Удалёнка (Москва), 350–400 т.р.
#подборка #golang #go
🐿 go-json - незаметный ускоритель JSON для Go. Библиотека предлагает глубокую оптимизацию под капотом, сохраняющая полную совместимость с родным пакетом.
Разрабы смогли реализовать в проекте виртуальную машину с системой opcode-инструкций. В результате скорость обработки JSON возросла в разы, а память используется так бережно, что даже reflect-вызовы перестают быть bottleneck.
🤖 GitHub
Разрабы смогли реализовать в проекте виртуальную машину с системой opcode-инструкций. В результате скорость обработки JSON возросла в разы, а память используется так бережно, что даже reflect-вызовы перестают быть bottleneck.
🤖 GitHub
🧩 Что это такое
GoVisual — это инструмент с нулевой конфигурацией, написанный на Go, предназначенный для *визуализации и отладки HTTP-запросов* во время локальной разработки Go-приложений.
🚀 Ключевые возможности
• Визуализирует все входящие HTTP-запросы
• Показывает структуру и содержимое запросов в реальном времени
• Не требует дополнительной конфигурации
• Легко интегрируется в существующие Go-проекты
• Работает локально и предназначен для отладки
⚙️ Как это работает
1. Подключается к вашему HTTP-серверу в Go
2. Перехватывает и отображает все запросы, поступающие на сервер
3. Автоматически запускает веб-интерфейс для отображения логов
🎯 Когда использовать
GoVisual идеально подойдёт, если:
• Вы разрабатываете API или веб-сервер на Go
• Хотите смотреть каждый HTTP-запрос без Postman или стороннего прокси
• Нужна отладка без лишней настройки
• Хотите встроить простой мониторинг в локальную разработку
• Работает «из коробки»
go get github.com/doganarif/govisual
📦 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Avo — это библиотека и CLI-инструменты, которые позволяют писать ассемблерный код прямо на Go-коде и автоматически генерировать `.s`-файлы + Go-стабы* для вызова этих функций.
Этот необычный инструмент превращает написание высокопроизводительного ассемблера x86 в процесс, похожий на обычную Go-разработку.
Вместо управления регистрами вручную, вы описываете логику на Go-подобном синтаксисе а Avo генерирует оптимизированный ассемблерный код с правильными префиксами.
Проект особенно полезен для криптографии и низкоуровневых оптимизаций.
asm.go:
*Go-стабы: это Go-файл, который объявляет функцию без реализации, но с правильной сигнатурой, чтобы компилятор понимал, как с ней работать.
▪️ GitHub
Этот необычный инструмент превращает написание высокопроизводительного ассемблера x86 в процесс, похожий на обычную Go-разработку.
Вместо управления регистрами вручную, вы описываете логику на Go-подобном синтаксисе а Avo генерирует оптимизированный ассемблерный код с правильными префиксами.
Проект особенно полезен для криптографии и низкоуровневых оптимизаций.
asm.go:
package main
import . "github.com/mmcloughlin/avo/build"
func main() {
TEXT("Add", NOSPLIT, "func(x, y uint64) uint64")
x := Load(Param("x"), GP64())
y := Load(Param("y"), GP64())
ADDQ(x, y)
Store(y, ReturnIndex(0))
RET()
Generate()
}
*Go-стабы: это Go-файл, который объявляет функцию без реализации, но с правильной сигнатурой, чтобы компилятор понимал, как с ней работать.
▪️ GitHub
Лето больших возможностей 💫
ИТ-лагерь Т1 — бесплатный интенсив по погружению в профессию для студентов вузов по техническим и ИТ-направлениям. Можно участвовать даже без опыта и из любого города РФ!
Тебя ждет:
— бесплатное онлайн-обучение
— командная работа над проектом при поддержке опытных менторов
— актуальные навыки для работы в бигтехе
— очное финальное соревнование в атмосфере летнего лагеря
🎓Лучших участников ждет собеседование на оплачиваемую стажировку в Т1 — одну из крупнейших ИТ-компаний России!
Выбирай направление:
🔹 тестирование
🔹 системный анализ
🔹 разработка frontend (JS+React)
🔹 разработка backend (Java)
🔹 прикладное администрирование (старт в DevOps)
📆 Подавай заявку до 29 июня — начни карьеру с ИТ-лагеря Т1!
Информация о рекламодателе.
ИТ-лагерь Т1 — бесплатный интенсив по погружению в профессию для студентов вузов по техническим и ИТ-направлениям. Можно участвовать даже без опыта и из любого города РФ!
Тебя ждет:
— бесплатное онлайн-обучение
— командная работа над проектом при поддержке опытных менторов
— актуальные навыки для работы в бигтехе
— очное финальное соревнование в атмосфере летнего лагеря
🎓Лучших участников ждет собеседование на оплачиваемую стажировку в Т1 — одну из крупнейших ИТ-компаний России!
Выбирай направление:
Информация о рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM