Обновить
256K+

Go *

Компилируемый, многопоточный язык программирования

159,79
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

sqlh — SQL в Go без boilerplate: пишем CRUD за 50 строк

Время на прочтение8 мин
Охват и читатели3.8K

Если вы пишете на Go и работаете с SQL-базами, вы знаете эту боль. Каждый CRUD-запрос — ручной SQL-строка, rows.Scan для каждого поля, Begin/Commit/Rollback вокруг записи, и постоянная синхронизация DDL-схемы с кодом. Шаблонный код не заканчивается никогда.

Это рассказ о sqlh — библиотеке, которая убирает всё это, оставаясь в «золотой середине» между raw SQL (слишком много работы) и тяжёлыми ORM (слишком много магии).

Читать далее

Новости

Писал мониторинг на Go «за выходные» — застрял на месяцы. Вот на чём

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели10K

В этой статье я расскажу, на какие подводные камни я споткнулся при разработке своего пет‑проекта — мониторинга сайтов на Golang, аналог UptimeRobot.

Начнем издалека... Я хотел разработать пет‑проект, но не банальный todolist, а что‑то свежее, интересное в плане архитектуры и реализации. Шерстя по просторам интернета, я наткнулся на UptimeRobot — сервис для мониторинга сайтов. Азарт и любопытство взяли верх и я начал продумывать, как буду разрабатывать «свой» UptimeRobot. Думал — делов на пару недель от силы. Ведь принцип прост: дергать URL по таймеру и проверять код ответа и всё. Но на практике все оказалось намного сложнее, чем я изначально представлял...

Читать далее

Натягиваем сову на глобус или оценка применимости разработанной методики определения грейда на другие языки

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7.6K

Привет, Хабр! В прошлых статьях я описала, как через нововведенный параметр TSI теоретически можно определить грейд разработчика.

Читать далее

Как я веб-приложение на Go для архитектуры MIPS кросс-компилировал

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.1K

Рассмотрим пример сборки go приложения для работы в среде Entware на mips-роутерах Keenetic/Netcraze

Инструкция по сборке

Пишем TCP-сканер портов на Go: goroutine, timeout и CSV-отчёт

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели10K

Недавно знакомый попросил помочь с небольшой задачей по проверке внешнего периметра сети компании. Сразу уточню: речь шла об инфраструктуре, на проверку которой было разрешение.

Под внешним периметром обычно понимают всё, что доступно из интернета: публичные IP-адреса, домены, поддомены, облачные или VPS-серверы, а также сервисы, которые слушают внешние порты.

Задача была простой по формулировке, но интересной технически: нужно понять, какие адреса доступны извне и к каким портам можно подключиться.

Читать далее

Accept-driven development или давайте снова понимать свой код

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.8K

Наверное, через это уже прошёл каждый из нас :)

Где-то после полугода очень достаточно работы с агентами я стал принимать диффы быстрее, чем успеваю реально в них вникнуть, в итоге в один из я оказался в ситуации, что словил баг, а на поиски проблемы потратил чуть больше часа, а найдя ее, я понял, на сколько она была тривиальной

Короче говоря, то что мы используем агентов - конечно суперсила, но в итоге, мы все начинаем идти по “Accepted driven development” , а это уже начинает сильно отупливать влиять на наши с вами когнитивные возможности :) ну и на наши умения в разработке в целом

Спойлер: это все решается, но нет, не тем что мы перестаем читать в целом код

Меня зовут Эдгар Сипки, я founder easyp & sipki tech и отбираю доклады на Golang Conf в программном комитете. А в своём тг-канале делюсь прикладными AI-инструментами и подходами для разработки - подписывайтесь, дальше будет больше :)

Так вот, обратно к теме. В этой статье я дам промпт-генератор, который соберёт learning skills под ваш проект - чтобы агенты и дальше ускоряли вас, а понимание собственного кода оставалось вашим, а не делегировалось модели :) Но сначала про сама проблему: снаружи-то это кажется все на увеличение нашего KPI, вроде ты и быстрее двигаешься, меньше застреваешь, да и в целом не тратишь часы на написания кода, но вот позже уже начинаются проблемы

Когда надо объяснить, что именно ты только что принял. Какие инварианты поменялись? Почему решение такое? Какие edge cases теперь важны? Что сломается через месяц, если кто-то тронет соседний кусок кода? (а это будет не редко)

Читать далее

Мессенджер Ласточка. Мы в Rustore. Cобственный DSL и федеративная архитектура

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели17K

Путь от идеи до работающего мессенджера с открытым кодом — в последнем отчёте. Дальше — рутина, развитие и поддержка.

Я начал рассказывать о проекте «Ласточка» на Хабре чуть больше двух месяцев назад. Тогда это были вопросы нужен ли еще один мессенджер, которые переросли в твёрдое намерение построить честный российский мессенджер для обычной жизни — семьи, друзей, работы.

Читать далее

Рецензия на книгу «Go: разработка приложений в микросервисной архитектуре»

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.7K

Июнь — месяц рецензий на книги по языку Go в нашем блоге SSP SOFT. Сегодня разбираем книгу Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля». Будем честны, в названии есть элемент маркетинга, и книга ориентирована не на нулевой уровень, а все-таки на уже уверенных в себе и своих знаниях языка начинающих разработчиков (джунов) на Go. Книга небольшая, 320 страниц, пять глав. И самое ценное в ней —  примеры четырех микросервисов,  которые автор расписывает с нуля и до выкладки в продуктовую среду (деплоя в прод).

Читать далее

sing-box-lx: как, почему и зачем я завёл fork сетевого ядра — XHTTP + AWG2 для всех

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели9.9K

Если вы пользовались моим LxBox или десктопным лаунчером, то могли натыкаться на оранжевый баннер: «с этим узлом, скорее всего, не соединится». Так клиент честно сознаётся, что наткнулся на узел с транспортом XHTTP, а ядро sing-box, на котором всё крутится, его не умеет. В этот момент лаунчер тихо даунгрейдит конфиг до HTTPUpgrade.

А еще сразу как я выпустил приложение пришли запросы с AWG/AWG2 и такие: сделай! а я сюда

В какой-то момент я устал ждать и собрал свой форк ядра — sing-box-lx. Сегодня расскажу, зачем он понадобился, что внутри, и почему главное в нём — не сами фичи, а то, как он сделан.

Читать далее

Пишем автомигратор на Go: как узнать схему PostgreSQL

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели7.7K

Когда говорят «генератор миграций», обычно в голове сразу появляется что-то вроде:

Генератор миграций начинается не с CREATE TABLE, а с вопроса: как представить текущую схему базы в коде?

В первой статье серии разбираем PostgreSQL-first introspector: читаем таблицы, колонки, constraints и индексы, где хватает information_schema, а где приходится идти в pg_catalog, и собираем детерминированный snapshot схемы. Миграции пока не генерируем — строим фундамент, из которого потом можно будет сделать diff и получить DDL.

Статья будет полезна тем, кто пишет инструменты вокруг баз данных, интересуется PostgreSQL internals или хочет понять, почему автомигратор — это не просто набор ALTER TABLE.

Читать далее

PII-Shield: режем персональные данные в логах до того, как они доехали до ELK

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.9K

Сначала хотелось просто скрывать случайные токены по энтропии. Потом выяснилось, что UUID, trace id и номера карт ломают эту идею, и пришлось собирать более честный фильтр логов.

Читать далее

Сравниваем современные подходы к разработке десктопных приложений на веб‑технологиях: ElectroBun, NeutralinoJS и Wails

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.6K

Небольшой R&D о современных альтернативах Electron для десктоп‑приложений на веб‑технологиях. На одинаковом тестовом приложении (React + TypeScript + Vite) сравниваются ElectroBun, NeutralinoJS и Wails: как устроена их архитектура, каким образом они взаимодействуют с ОС, что происходит под капотом и почему результаты по памяти так сильно отличаются. В статье есть практические наблюдения, замеры потребления ОЗУ, плюсы и минусы каждого подхода, а также рекомендации, в каких сценариях выбирать минималистичный WebView‑подход, полноценный backend на Go или браузерный рантайм с максимально широкой поддержкой Web API и графики.

Читать далее

10 вопросов на Go собеседовании, которые валят большинство джунов

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели12K

Готовиться к Go-собеседованию по списку с GitHub — значит знать ровно то же, что знают все остальные. Интервьюеры это чувствуют сразу. В этой статье — 10 вопросов, которые реально задают на Golang Junior собеседованиях, с разбором так, как это объяснили бы вам после интервью на обратной связи.

Читать далее

Ближайшие события

Смотрим в будущее на Go — Theta прогнозирование финансового модуля ERP

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8K

Перезалив. Хабр в очередной раз посчитал две ссылки на рабочий прототип рекламным объявлением - спасибо! Удалены все ссылки на продукт, за исключением исходников на githubе. Приятного чтения.

Зачем предприятия ведут учёт? Отчётность перед ФНС? Или может воронка клиентов? Сотни ответов российского рынка учётных систем на этот простой вопрос.

Какой толк от зелёной воронки лидов, каждый из которых в сухом остатке является убыточным? Какой смысл в причесанной отчётности без банального понимания рентабельности вашего дела?

Год назад я невольно стал заложником терзающих мой разум раздумий о смысле учётных систем. Так был написан первый, второй… пятый модуль мультитенантной ERP-подобной системы для малого бизнеса (Go + pgx | Next.js + TS), вопреки рынку ставящей именно модуль финансов в центр системы.

Читать далее

Почему в Go больно писать автотесты (и дело не в синтаксисе)

Время на прочтение15 мин
Охват и читатели7.6K

testing в Go даёт только примитивы. Разбираем, почему автотесты в Go быстро превращаются в боль, и какого слоя исполнения в нём не хватает.

Читать далее

jumie — локальный ИИ ассистент в терминале

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

Все мы любим терминал. Но мало кто помнит наизусть все флаги команды find или как правильно распаковать хитрый архив без гугла. Данный инструмент может помочь избежать данной рутины.

Читать далее

В поисках баланса в backend-архитектуре

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели11K

Размышление о backend‑архитектуре между двумя крайностями: академической чистотой и радикальным прагматизмом. На примере read/write path, CQRS, кэширования готовых ответов и собственного framework‑а на Go я показываю, как архитектурные шаблоны сталкиваются с production‑реальностью.

Читать далее

Плагин для Docker для быстрого деплоя

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели10K

Часть своих сервисов я держал в облаке, но когда счёт за AWS начал превышать ожидания, стало понятно: пора переносить их домой. Несколько месяцев назад я купил мини-ПК, но всё никак не находил времени его задействовать. Так я занялся решением проблемы локального деплоя.

Читать далее

Как я добавила групповой коммит в свою LSM‑базу на Go и не пожалела

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели14K

Синхронный WAL очень частое явление в базах данных, делая их durability максимальной. При таком исходе каждый батч записи это вызов fsync, и это дало мне 956k opr/s на 16кб значениях, звучит хорошо, но на самом деле: скорость записи упала в 5 раз.

В этой статье я расскажу:

— Что такое групповой коммит на пальцах

— Почему групповой коммит не для финтеха

— Как это реализовано у меня

— Как изменились цифры до и после внедрения

— Во сколько раз ScoriaDB с group commit быстрее BadgerDB и Pebble.

Если вы пишете хранилище, логгер, кэш или просто любите копаться в LSM‑движках — добро пожаловать на борт, нас ждет короткое путешествие

Узнать больше

Почему Claude Code и Codex не ускоряют команду: у компании нет общей памяти

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели17K

Компании уже оплачивают сотрудникам Claude Code, Cursor или Codex, но не всегда видят рост производительности.

Проблема часто не в модели, а в том, что знания о процессах, решениях и ошибках остаются на локальных компьютерах сотрудников.

Разбираю, зачем команде общая память, и при чём тут GBrain, OpenBrain и обычные Markdown-файлы.

Научиться работать с контекстом
1
23 ...