🧩 Что это такое
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
❤4
🧠 Хитрая задача на Go для продвинутых
📌 Тень перестановки
У вас есть массив
Нужно определить, существует ли хотя бы одна перестановка этого массива
будет чётным числом?
🔍 Наблюдение:
•
• Если в массиве есть двое чётных или двое нечётных, то их можно поставить рядом — и сумма будет чётной.
• Значит, если есть хотя бы две одинаковые по чётности — ответ: YES.
✅ Решение (O(n)):
1. Считаем количество чётных и нечётных чисел.
2. Если хотя бы одно из них ≥ 2 → `"YES"`, иначе — `"NO"`.
💻 **Код на Go:**
```go
func HasEvenAndPermutationSum(A []int) string {
odd, even := 0, 0
for _, v := range A {
if v%2 == 0 {
even++
} else {
odd++
}
}
if even >= 2 || odd >= 2 {
return "YES"
}
return "NO"
}```
🧪 Примеры:
```go
HasEvenAndPermutationSum([]int{5, 2, 8}) // YES
HasEvenAndPermutationSum([]int{1}) // NO
HasEvenAndPermutationSum([]int{3, 7, 11}) // YES
HasEvenAndPermutationSum([]int{2, 4, 6, 8}) // YES
HasEvenAndPermutationSum([]int{3, 2}) // NO```
⚙️ Сложность:
• Время: O(n)
• Память: O(1)
📌 Эта задача проверяет не только знание Go, но и умение думать на уровне битов и арифметических свойств. Отличный пример для собеседования: простая по коду, но требует правильного наблюдения.
Актуально для Go 1.22+
📌 Тень перестановки
У вас есть массив
A
из n
уникальных положительных чисел (1 ≤ A[i] ≤ 1e6
, n ≤ 200000
).Нужно определить, существует ли хотя бы одна перестановка этого массива
P
, такая что сумма побитовых AND соседних элементов:P[0]&P[1] + P[1]&P[2] + ... + P[n-2]&P[n-1]
будет чётным числом?
🔍 Наблюдение:
•
a & b
может быть нечётным только если оба числа нечётные. • Если в массиве есть двое чётных или двое нечётных, то их можно поставить рядом — и сумма будет чётной.
• Значит, если есть хотя бы две одинаковые по чётности — ответ: YES.
✅ Решение (O(n)):
1. Считаем количество чётных и нечётных чисел.
2. Если хотя бы одно из них ≥ 2 → `"YES"`, иначе — `"NO"`.
💻 **Код на Go:**
```go
func HasEvenAndPermutationSum(A []int) string {
odd, even := 0, 0
for _, v := range A {
if v%2 == 0 {
even++
} else {
odd++
}
}
if even >= 2 || odd >= 2 {
return "YES"
}
return "NO"
}```
🧪 Примеры:
```go
HasEvenAndPermutationSum([]int{5, 2, 8}) // YES
HasEvenAndPermutationSum([]int{1}) // NO
HasEvenAndPermutationSum([]int{3, 7, 11}) // YES
HasEvenAndPermutationSum([]int{2, 4, 6, 8}) // YES
HasEvenAndPermutationSum([]int{3, 2}) // NO```
⚙️ Сложность:
• Время: O(n)
• Память: O(1)
📌 Эта задача проверяет не только знание Go, но и умение думать на уровне битов и арифметических свойств. Отличный пример для собеседования: простая по коду, но требует правильного наблюдения.
❤4🤯2
⚡️ 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
🔥5
GoPilot — это библиотека для Go, которая позволяет вызывать ваши функции с помощью естественного языка.
⚡️ С её помощью можно:
- Анализировать запросы на естественном языке
- Автоматически выбирать нужную функцию
- Преобразовывать динамические параметры в строго типизированные структуры
- Проверять обязательные поля и валидировать входные данные
- Управлять порядком выполнения и ответами
## Ключевые особенности
- Natural Language Processing
Обработка запросов пользователя без ручного парсинга текста.
- Automatic Function Routing
GoPilot сам сопоставляет запрос с зарегистрированной функцией.
- Type-Safe Parameter Mapping
Динамические вводимые данные конвертируются в структуры Go.
- Built-in Validation
Генерируемая схема параметров учитывает теги
required
, description
и др. - Easy Integration
Простое API: регистрируете функции и задаёте системный промпт.
- Flexible Response Handling
Поддержка разных форматов ответа и «режимов» выполнения.
## Быстрый старт
import (
"context"
"github.com/SadikSunbul/gopilot"
"github.com/SadikSunbul/gopilot/clients"
"github.com/SadikSunbul/gopilot/pkg/generator"
)
type WeatherParams struct {
City string `json:"city" description:"City name" required:"true"`
}
type WeatherResponse struct {
City string `json:"city"`
Temp int `json:"temp"`
Condition string `json:"condition"`
}
func GetWeather(p WeatherParams) (WeatherResponse, error) {
return WeatherResponse{City: p.City, Temp: 25, Condition: "sunny"}, nil
}
func main() {
client, _ := clients.NewGeminiClient(context.Background(), "API_KEY", "gemini-2.0-flash")
gp, _ := gopilot.NewGopilot(client)
weatherFn := &gopilot.Function[WeatherParams, WeatherResponse]{
Name: "weather-agent",
Description: "Get weather by city",
Parameters: generator.GenerateParameterSchema(WeatherParams{}),
Execute: GetWeather,
}
gp.FunctionRegister(weatherFn)
gp.SetSystemPrompt(nil)
// Генерация + выполнение за один вызов
result, _ := gp.GenerateAndExecute("Какая погода в Москве?")
fmt.Printf("%+v\n", result)
}
▪️ Github
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
🔧 env — библиотека, предлагающая минималистичный способ загружать конфигурацию из env-переменных в структуры.
В отличие от аналогов вроде viper, проект имеет zero-dependencies подход и понятную обработку ошибок. Теги вроде
🤖 GitHub
В отличие от аналогов вроде viper, проект имеет zero-dependencies подход и понятную обработку ошибок. Теги вроде
required
илиenv — биделают валидацию конфига прозрачной без лишнего кода. 🤖 GitHub
❤2👍1💩1
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Junior Golang Developer (Backend) Гибрид (Москва), 80–120 т.р.
✓ Go Backend Developer Гибрид (Тбилиси), 5 000–6 000 $
✓ Golang developer Удалённо (Мир), 5 000 – 8 000 $
✓ Golang Engineer Удалённо, офис, гибрид (Москва)
✓ GO Developer Middle/Senior Удалённо, 200–300 т.р.
✓ Golang-разработчик Удалёнка (РФ), 200 - 260 т.р.
✓ Go Developer Golang/PHP (backend) Удалённо (РФ), 250- 300 т.р.
✓ Jr Golang Developer (Backend) Удалённо (Мир), от 6000 $
#подборка #go
✓ Junior Golang Developer (Backend) Гибрид (Москва), 80–120 т.р.
✓ Go Backend Developer Гибрид (Тбилиси), 5 000–6 000 $
✓ Golang developer Удалённо (Мир), 5 000 – 8 000 $
✓ Golang Engineer Удалённо, офис, гибрид (Москва)
✓ GO Developer Middle/Senior Удалённо, 200–300 т.р.
✓ Golang-разработчик Удалёнка (РФ), 200 - 260 т.р.
✓ Go Developer Golang/PHP (backend) Удалённо (РФ), 250- 300 т.р.
✓ Jr Golang Developer (Backend) Удалённо (Мир), от 6000 $
#подборка #go
❤1
🖥 Как базы данных выполняют SQL-запросы?
Процесс выполнения
1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@golangprofi
Процесс выполнения
SQL-запросов
в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.
2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.
3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.
4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.
5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.
6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.
7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.
8. В то же время менеджер блокировок накладывает блокировки, чтобы несколько транзакций могли выполняться одновременно, не конфликтуя между собой. Таким образом, обеспечивается изоляция и согласованность.
Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.
@golangprofi
👍5❤1🤮1
👣 SMTP-клиент Go CLI
Очень легкий CLI SMTP-клиент для удобной отправки писем из командной строки.
▪️Github
Очень легкий CLI SMTP-клиент для удобной отправки писем из командной строки.
▪️Github
❤1👍1😐1
Gozo — лёгкая и удобная библиотека, которая добавляет в Go инструментальный набор для повседневных задач: обработка срезов, карт, потоки и функциональные примитивы.
⚙️ Что внутри:
- `slices` — функции для работы с массивами:
Map
, Filter
, Delete
, Insert
, Pop
, PushFront
, Fold
, Some
, Equals
и даже ToMap
— всё с поддержкой дженериков - `maps` — утилиты:
Map
, Filter
, Reduce
, Equals
, FilterMap
, Fold
, Slice
- `fp` (функциональные примитивы) — монады
Option[T]
, Result[T]
, с конструктор-функциями: Some
, None
, Ok
, Err
, OptionFromPtr
, OptionFromTuple
- `streams` — конвейеры обработки данных:
Batch
, Filter
, Flatten
, CSV
, JSON
, Pipe
, Collect
и другие - `tuples` — простые структуры для пар значений (Tuple2)
🛠 Для чего это нужно:
- Ускоряет и делает код чище при работе с коллекциями
- Обладает безопасной обработкой ошибок и отсутствия значений через FP‑модели
- Дженерики обеспечивают типобезопанность и избавляют от лишнего шаблонного кода
- MIT‑лицензия
📌 Github
Please open Telegram to view this post
VIEW IN TELEGRAM