Forwarded from AI for Devs
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😁3👍2
🫡 Еженедельный дайджест №2
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
Статьи:
– Как мы выследили регрессию использования памяти в продакшен-сервисах на Go 1.24
– Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик
– Новый экспериментальный API для JSON в Go
– За пределами отладчика: полное руководство по отладке Go-приложений
– Genkit Go 1.0: AI-фреймворк для продакшена
Посты-коротыши:
– Зачем в Go интерфейсы требуют точного совпадения?
– Git bisect: быстрый способ найти баг
– Целостность данных JSON-колонок в PostgreSQL
– GoHero ⭐️ Rob Pike
Опросы:
– Используете ИИ-ассистентов для написания production-кода?
Самый популярный комментарий этой недели – комментарий к статье "Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик" от пользователя
@go_for_devs
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
Статьи:
– Как мы выследили регрессию использования памяти в продакшен-сервисах на Go 1.24
– Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик
– Новый экспериментальный API для JSON в Go
– За пределами отладчика: полное руководство по отладке Go-приложений
– Genkit Go 1.0: AI-фреймворк для продакшена
Посты-коротыши:
– Зачем в Go интерфейсы требуют точного совпадения?
– Git bisect: быстрый способ найти баг
– Целостность данных JSON-колонок в PostgreSQL
– GoHero ⭐️ Rob Pike
Опросы:
– Используете ИИ-ассистентов для написания production-кода?
Самый популярный комментарий этой недели – комментарий к статье "Топ 5 возможностей Gin, которые должен знать каждый Go-разработчик" от пользователя
@starwalkn:При создании веб-API на Go, фреймворк Gin часто становится первым
Да, особенно в галерах, где важнее быстро наклепать продукт и забыть о нем. А в реальности же из-за несовместимости Gin со стандартным net/http (привет, Chi!) весь API будет зависеть именно от него и при смене роутера придется переписывать абсолютно все хэндлеры.
Пункт 1. Причем тут вообще Gin? Сервер создается и настраивается из пакета net/http и конфигурируется как душе угодно, Gin тут идет всего лишь как роутер, будь то горилла или http.ServeMux
Пункт 2. Обычный паттерн любого роутера, в чем тут особенность Gin?
Пункт 4. Опять же, каким боком тут Gin и его особенности? Вы останавливаете сервер, а не роутер
Ощущение, что автор статьи не работал ни с чем, кроме Gin и выдает его за волшебный способ реализации API, к тому же не различает понятия сервера и роутера. И где же тут "скрытые фишки"?
@go_for_devs
👍4🔥3❤2
Команда Go for Devs подготовила перевод пошагового руководства: как написать собственное CLI-приложение прогноза погоды на Go.
Проект охватывает всё — от HTTP-запросов и парсинга JSON до удобного интерфейса командной строки.
Отличная практика для новичков и хороший повод освежить базовые навыки тем, кто уже работает с Go.
📚 Подробности на Хабр: https://habr.com/ru/articles/946974/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤2
🔥 PostgreSQL 18: Виртуальные колонки — меньше кода, больше гибкости
PostgreSQL 18 принёс асинхронный I/O, UUID v7 и ещё кучу полезного. Но фича, которая нас реально радует — виртуальные вычисляемые колонки. Это способ держать бизнес-логику ближе к данным и не плодить триггеры и boilerplate-SQL.
Как было раньше: надо было дублировать одни и те же выражения в запросах, вьюхах, функциях. Забыл обновить — привет баги. С виртуальными колонками логика всегда в одном месте, и данные остаются консистентными.
Пример:
А вот более практичный сценарий — полнотекстовый поиск на нескольких языках:
Теперь поиск по разным языкам не требует триггеров и всегда синхронизирован с данными.
Итого:
* virtual — для лёгких выражений, быстрых экспериментов и JSON-поля без дублирования.
* stored — для тяжёлых вычислений, которые нужны в индексах.
#postgres@go_for_devs
PostgreSQL 18 принёс асинхронный I/O, UUID v7 и ещё кучу полезного. Но фича, которая нас реально радует — виртуальные вычисляемые колонки. Это способ держать бизнес-логику ближе к данным и не плодить триггеры и boilerplate-SQL.
Как было раньше: надо было дублировать одни и те же выражения в запросах, вьюхах, функциях. Забыл обновить — привет баги. С виртуальными колонками логика всегда в одном месте, и данные остаются консистентными.
Пример:
create table users (
id serial primary key,
name text not null,
-- stored: пишется на диск, индексируется
name_upper text
generated always as (upper(name)) stored,
-- virtual: считается на лету
name_lower text
generated always as (lower(name)) virtual
);
name_upper отлично индексировать, name_lower — не занимает места и моментально добавляется даже в огромную таблицу.А вот более практичный сценарий — полнотекстовый поиск на нескольких языках:
create table docs (
id serial primary key,
body text not null,
body_fts_simple tsvector
generated always as (to_tsvector('simple', body)) stored,
body_fts_en tsvector
generated always as (to_tsvector('english', body)) stored,
body_fts_el tsvector
generated always as (to_tsvector('greek', body)) stored
);
create index on docs using gin (body_fts_simple);
create index on docs using gin (body_fts_en);
create index on docs using gin (body_fts_el);
Теперь поиск по разным языкам не требует триггеров и всегда синхронизирован с данными.
Итого:
* virtual — для лёгких выражений, быстрых экспериментов и JSON-поля без дублирования.
* stored — для тяжёлых вычислений, которые нужны в индексах.
#postgres@go_for_devs
🔥9❤2👍2
🛠 Разработка RESTful API на Go и Gin
Всего за несколько шагов вы напишете простой веб-сервис, который умеет возвращать список джазовых альбомов, добавлять новые и находить альбом по ID.
Отличный старт для знакомства с Gin!
📚 Подробности на Хабр: https://habr.com/ru/articles/947528/
Всего за несколько шагов вы напишете простой веб-сервис, который умеет возвращать список джазовых альбомов, добавлять новые и находить альбом по ID.
Отличный старт для знакомства с Gin!
📚 Подробности на Хабр: https://habr.com/ru/articles/947528/
🔥6❤2👍2
🚀 Go уверенно держит позиции в топ-10: Tiobe index
Go снова в центре внимания — язык стабильно занимает 8-е место в TIOBE Index. Если вспомнить, что в 2015 году он был только на 58-й строчке, а в 2010 вообще на 183-й — прогресс впечатляющий!
Да, доля Go (2.32%) почти не изменилась за год, но это как раз показатель зрелости: язык прочно закрепился среди лидеров и продолжает расти за счёт экосистемы и востребованности в разработке высоконагруженных сервисов.
Источник.
#news@go_for_devs
Go снова в центре внимания — язык стабильно занимает 8-е место в TIOBE Index. Если вспомнить, что в 2015 году он был только на 58-й строчке, а в 2010 вообще на 183-й — прогресс впечатляющий!
Да, доля Go (2.32%) почти не изменилась за год, но это как раз показатель зрелости: язык прочно закрепился среди лидеров и продолжает расти за счёт экосистемы и востребованности в разработке высоконагруженных сервисов.
Источник.
#news@go_for_devs
🔥4❤3👍3👎1
Команда Go for Devs подготовила перевод статьи о том, как работает сборщик мусора в Go.
Автор подробно объясняет семантику алгоритма триколорной маркировки и очистки, механизмы Stop The World, пейсинг и источники задержек.
Главное — не бороться со сборщиком, а работать с ним в унисон: устранять лишние выделения и снижать нагрузку на кучу.
📚 Подробности на Хабр: https://habr.com/ru/articles/946774/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
Команда Go запускает ежегодный опрос, чтобы понять, какие боли вас мучают, каких фич не хватает и что стоит улучшить.
Опрос открыт до 30 сентября. 10–20 минут — и готово. В ноябре команда опубликует не только результаты, но и сырые данные — сможете покопаться сами. Мы тоже их проанализируем, так что давайте сделаем срез мнений русскоязычного комьюнити максимально полным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥3
🫡 Еженедельный дайджест №3
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Создаём CLI-приложение прогноза погоды на Go
– PostgreSQL 18: Виртуальные колонки — меньше кода, больше гибкости
– Разработка RESTful API на Go и Gin
– Go уверенно держит позиции в топ-10: Tiobe index
– Сборщик мусора в Go. Часть 1: Stop The World, пейсинг и оптимизация
– Go Survey 2025: расскажи, как тебе живётся с Go
@go_for_devs
Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!
– Создаём CLI-приложение прогноза погоды на Go
– PostgreSQL 18: Виртуальные колонки — меньше кода, больше гибкости
– Разработка RESTful API на Go и Gin
– Go уверенно держит позиции в топ-10: Tiobe index
– Сборщик мусора в Go. Часть 1: Stop The World, пейсинг и оптимизация
– Go Survey 2025: расскажи, как тебе живётся с Go
@go_for_devs
❤3👍3🔥3
Как Go 1.24 и Swiss Tables вернули нам 200 гигабайт памяти 😮
Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт.
В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.
📚 Подробности на Хабр: https://habr.com/ru/articles/948860/
Команда Go for Devs подготовила перевод статьи о том, как Go 1.24 с новой реализацией Swiss Tables помог снизить использование памяти в продакшне на сотни гигабайт.
В статье разбирают, что изменилось в реализации map, как это отразилось на профилях памяти, и какие оптимизации в коде дали дополнительный эффект.
📚 Подробности на Хабр: https://habr.com/ru/articles/948860/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2👍2
🌀 Zero value в Go: меньше кода, меньше багов
Go делает одну крутую вещь за вас — при объявлении переменных они всегда получают предсказуемое zero value:
Многие программисты зря делают
Стоит проектировать типы так, чтобы их zero value сразу был полезен. Например,
То же самое с
Слайсы? Их zero value —
А ещё на nil-указателях можно вызывать методы:
При проектировании своих структур подумайте — что должен делать zero value вашего типа? Если ответ «ничего полезного» — возможно, стоит пересмотреть дизайн.
#go_tips@go_for_devs
Go делает одну крутую вещь за вас — при объявлении переменных они всегда получают предсказуемое zero value:
0, false, "" или nil.Многие программисты зря делают
make() или явно инициализируют структуры, добавляя лишний код. А значит — повышают вероятность появления багов и забытых для инициализации полей.Стоит проектировать типы так, чтобы их zero value сразу был полезен. Например,
sync.Mutex готов к работе «из коробки»:
package main
import "sync"
type MyInt struct {
mu sync.Mutex
val int
}
func main() {
var i MyInt
i.mu.Lock()
i.val++
i.mu.Unlock()
}
То же самое с
bytes.Buffer: можно просто объявить переменную и сразу писать в неё:
package main
import "bytes"
import "io"
import "os"
func main() {
var b bytes.Buffer
b.Write([]byte("Hello world"))
io.Copy(os.Stdout, &b)
}
Слайсы? Их zero value —
nil, но это не мешает их использовать:
package main
import "fmt"
import "strings"
func main() {
// s := make([]string, 0)
// s := []string{}
var s []string
s = append(s, "Hello")
s = append(s, "world")
fmt.Println(strings.Join(s, " "))
}
А ещё на nil-указателях можно вызывать методы:
package main
import "fmt"
type Config struct {
path string
}
func (c *Config) Path() string {
if c == nil {
return "/usr/home"
}
return c.path
}
func main() {
var c1 *Config
var c2 = &Config{
path: "/export",
}
fmt.Println(c1.Path(), c2.Path())
}
При проектировании своих структур подумайте — что должен делать zero value вашего типа? Если ответ «ничего полезного» — возможно, стоит пересмотреть дизайн.
#go_tips@go_for_devs
🔥7👍4❤2
В новой статье узнайте, как оптимизация аллокаций в Go может снизить нагрузку на сборщик мусора и ускорить приложение почти в два раза.
На примере реального веб-приложения разбираемся, как профилировать кучу, находить «горячие» места и убирать лишние аллокации, чтобы снизить задержки и повысить пропускную способность.
📚 Подробности на Хабр: https://habr.com/ru/articles/948864/
Первая статья из серии.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥5👍2
Если вы разрабатываете низкоуровневый код или работаете с cgo, вам знакомы проблемы с отслеживанием использования памяти и выявлением багов. А вот теперь, внимание: в Go добавили поддержку Valgrind! Должно быть интересно для тех, кто хочет глубже проанализировать поведение программы на уровне памяти.
Теперь в Go появились аннотации, которые позволяют интегрировать программу с Valgrind, избегая ложных срабатываний, с которыми сталкивались разработчики раньше.
Как это работает? Встроенная в Go сборка теперь будет использовать инструментальные аннотации для отслеживания использования памяти. Вместо того чтобы добавлять заголовки Valgrind в код и полагаться на cgo, разработчики добавили функцию ассемблера, которая генерирует нужные инструкции для клиентских запросов Valgrind. То есть, теперь можно отслеживать стек и пулы памяти в Go-коде, а это, скажем прямо, не всегда легко для инструментов, которые привыкли к стандартному libc.
Зачем это вообще нужно? С помощью Valgrind теперь можно проанализировать, как Go управляет памятью на уровне рантайма. Это откроет новые возможности для мониторинга, поиска утечек памяти и проверки работы криптографических алгоритмов в постоянном времени. Так, например, Go активно использует алгоритмы шифрования в криптографическом дереве. До сих пор не было удобного способа удостовериться, что эти алгоритмы не подвержены тайминг-атакам, но теперь с Valgrind можно будет замерить, нет ли нежелательных зависимостей от времени выполнения операций.
Но стоит отметить, что пока это экспериментальная фича. Разработчики предлагают включить флаг
-valgrind, чтобы протестировать нововведения, и при этом признают, что реализация пока не идеальна. Например, если запустить даже простую программу, Valgrind всё равно обнаружит несколько сотен ошибок, из-за отсутствия понимания, как Go работает с памятью. Однако с корректным использованием флагов можно минимизировать эти проблемы и максимально использовать возможности инструмента.P.S. Примечательно, что поддержка Valgrind в Go прошла мимо обычного процесса обсуждений 😅
Закрытый issue на GitHub
Review PR
Valgrind
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5❤2
В статье разбираются основные стратегии кэширования — от Write-Through до Write-Back — и показан пример реализации кэша с TTL на чистом Go.
Отличный материал, если хотите ускорить свой сервис без перехода на Redis.
📚 Подробности на Хабр: https://habr.com/ru/articles/948866/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3
На днях вышла новая версия PostgreSQL — и она серьёзно прокачала производительность и удобство работы с БД.
➖ Новая асинхронная I/O подсистема ускоряет до 3х раз чтение данных.
➖ Апгрейды между мажорными версиями теперь станут менее болезнеными — статистика запросов сохраняется, и база не «тупит» после обновления.
➖ Про разработчиков тоже не забыли: виртуальные вычисляемые колонки, умные индексы со skip scan, новый
uuidv7() с лучшей производительностью.➖ Поддержка OAuth 2.0 для аутентификации, более быстрая логическая репликация и улучшенная работа с текстом.
PostgreSQL продолжает эволюционировать. И это радует)
Release Notes на английском
Release Notes на русском
Видео-обзор на русском от Павла Лузанова
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍5❤3
😎 Flight Recorder в Go 1.25 – точечная диагностика без лишних трассировок
В Go 1.25 появился новый инструмент диагностики — flight recorder. Он позволяет заглянуть в последние секунды работы приложения уже после того, как произошла проблема, и точно понять, что случилось «под капотом».
Отличный способ находить тонкие баги и задержки в долгоживущих сервисах без гигабайтов бесполезных трассировок.
📚 Подробности на Хабр: https://habr.com/ru/articles/951216/
В Go 1.25 появился новый инструмент диагностики — flight recorder. Он позволяет заглянуть в последние секунды работы приложения уже после того, как произошла проблема, и точно понять, что случилось «под капотом».
Отличный способ находить тонкие баги и задержки в долгоживущих сервисах без гигабайтов бесполезных трассировок.
📚 Подробности на Хабр: https://habr.com/ru/articles/951216/
👍8🔥5❤2
Новый релиз не ограничился громкой подсистемой асинхронного ввода-вывода — он принёс ряд функций, заметных именно в повседневной разработке.
Нативная поддержка UUID v7, виртуальные генерируемые столбцы, расширенные возможности RETURNING и новые средства диагностики делают жизнь разработчиков проще и продуктивнее.
📚 Подробности на Хабр: https://habr.com/ru/articles/951802/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4⚡1👍1
Forwarded from AI for Devs
This media is not supported in your browser
VIEW IN TELEGRAM
⚡ JetBrains встроили Claude Agent прямо в свои IDE
Claude Agent теперь живёт прямо в AI-чате IDE, а под капотом — свежевыпущенный Claude 4.5 Sonnet.
Примечательно, что это первый сторонний агент, официально встроенный в экосистему JetBrains, и он идёт в составе подписки JetBrains AI — доплат не просят. Сделан на Anthropic Agent SDK, поэтому умеет в контекст, тулы, файловые операции и даже исполнение кода. Работает через MCP: агент видит IDE как сервер инструментов, вы — просто переписываетесь в чате.
Кратко об основных возможностях:
🟣 Работа с несколькими файлами: агент показывает предложенные правки в виде диффов прямо в редакторе — удобно сравнить «до/после» и решить, принять или выкинуть.
🟣 Контроль на вашей стороне: без вашего разрешения Claude ничего не тронет — ни файл, ни консоль. Но если достаточно смелые, то можно включить Brave mode и агент пойдет заниматься своими делами без ваших апрувов
🟣 Plan mode: агент сначала опишет шаги и только потом займется реализацией.
🟣 Управление контекстом: можно подкинуть файлы, папки или даже картинки — агент станет отвечать точнее и умнее.
Источник
@ai_for_devs
Claude Agent теперь живёт прямо в AI-чате IDE, а под капотом — свежевыпущенный Claude 4.5 Sonnet.
Примечательно, что это первый сторонний агент, официально встроенный в экосистему JetBrains, и он идёт в составе подписки JetBrains AI — доплат не просят. Сделан на Anthropic Agent SDK, поэтому умеет в контекст, тулы, файловые операции и даже исполнение кода. Работает через MCP: агент видит IDE как сервер инструментов, вы — просто переписываетесь в чате.
Кратко об основных возможностях:
Источник
@ai_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6⚡2👍1👎1
Ошибки на миллиард долларов, загадочный nil, проблемы с памятью и «магия» defer — по мнению автора, всё это делает язык излишне сложным и болезненным.
А стоит ли оно того?
📚 Подробности на Хабр: https://habr.com/ru/articles/951218/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁4👍3❤1⚡1👎1