Агенты сейчас пишут тесты уже за многими из нас, будем объективны, все больше людей кидаем таску ему - получают пачку аппрувов и погнали все это мержитьНо есть, скажем так, ненулевой шанс, что сгенерированные тесты окажутся произведением искусства мусором, который ничего не проверяет (и нет, не шутка, мне коллеги буквально показывали тесты где просто вызывается функция и проверяется что ошибка nil и на этом все, а результат просто всегда игнорировался)И в таких кейсах очень классная картина: у …
Строю приложение для подсчёта калорий по фото. Пользователь снимает тарелку, модель определяет блюдо, считает КБЖУ. Идея не новая, но мне важно, чтобы это работало именно на русской еде — борщи, гречки, котлеты по-домашнему.В какой-то момент стало некомфортно: я не знал, насколько модель вообще точна. «Кажется, работает нормально» — плохой ответ, если хочешь что-то улучшать. Решил померять нормально.Расскажу, что и как мерил, что получил — и про неожиданный вывод в конце, ради которого, честно …
Привет, Хабр! В прошлых статьях я описала, как через нововведенный параметр TSI теоретически можно определить грейд разработчика. Для тех, кто пропустил первую часть: TSI (Topological Seniority Index) — это метрика, которая нивелирует мусор в вакансиях и позволяет отразить качественный скачок при переходе между грейдами. Она считается исходя из суммы взвешенной мощности стека, уровня ответственности и архитектурного признака в списке требований. Но до этого мы говорили только про один язык – C#…
В этой статье я расскажу, на какие подводные камни я споткнулся при разработке своего пет‑проекта — мониторинга сайтов на Golang, аналог UptimeRobot. Начнем издалека... Я хотел разработать пет‑проект, но не банальный todolist, а что‑то свежее, интересное в плане архитектуры и реализации. Шерстя по просторам интернета, я наткнулся на UptimeRobot — сервис для мониторинга сайтов. Азарт и любопытство взяли верх и я начал продумывать, как буду разрабатывать «свой» UptimeRobot. Думал — делов на пару …
Zero-boilerplate SQL для Go. Опиши структуру тегами — и это всё.Если вы пишете на Go и работаете с SQL-базами, вы знаете эту боль. Каждый CRUD-запрос — ручной SQL-строка, rows.Scan для каждого поля, Begin/Commit/Rollback вокруг записи, и постоянная синхронизация DDL-схемы с кодом. Шаблонный код не заканчивается никогда.Это рассказ о sqlh — библиотеке, которая убирает всё это, оставаясь в «золотой середине» между raw SQL (слишком много работы) и тяжёлыми ORM (слишком много магии).§1. Проблема: G…
Недавно знакомый попросил помочь с небольшой задачей по проверке внешнего периметра сети компании. Сразу уточню: речь шла об инфраструктуре, на проверку которой было разрешение.Под внешним периметром обычно понимают всё, что доступно из интернета: публичные IP-адреса, домены, поддомены, облачные или VPS-серверы, а также сервисы, которые слушают внешние порты.Задача была простой по формулировке, но интересной технически: нужно понять, какие адреса доступны извне и к каким портам можно подключить…
ВведениеПривет, Хабр! Являюсь давним пользователем маршрутизаторов Keenetic/Netcraze. В свое время подкупили надежность устройств, широкие возможности программного обеспечения, оперативная техническая поддержка, большое сообщество пользователей возможность установки дополнительных пакетов через среду Entware. В относительно недавнем прошлом производитель строил свои устройства на базе mips/mipsel чипов, таким образом, несколько таких устройств оказались у меня в руках.Дополнительные пакеты в ре…
Привет, Хабр! В прошлых статьях я описала, как через нововведенный параметр TSI теоретически можно определить грейд разработчика. Для тех, кто пропустил первую часть: TSI (Topological Seniority Index) — это метрика, которая нивелирует мусор в вакансиях и позволяет отразить качественный скачок при переходе между грейдами. Она считается исходя из суммы взвешенной мощности стека, уровня ответственности и архитектурного признака в списке требований. Но до этого мы говорили только про один язык – C#…
Если вы пользовались моим LxBox или десктопным лаунчером, то могли натыкаться на оранжевый баннер: «с этим узлом, скорее всего, не соединится». Так клиент честно сознаётся, что наткнулся на узел с транспортом XHTTP, а ядро sing-box, на котором всё крутится, его не умеет. В этот момент лаунчер тихо даунгрейдит конфиг до HTTPUpgrade.А еще сразу как я выпустил приложение пришли запросы с AWG/AWG2 и такие: сделай! а я сюдаВ какой-то момент я устал ждать и собрал свой форк ядра — sing-box-lx. Сегод…