Обновить

Разработка

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

Взаимодействие джунов и AI-помощников

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

Всем привет! В настоящее время очень активно насаждается использование AI программистам, так было в зелёном банке, в котором я отработал последние три года. Использование AI-помощников в основном продвигалось у нас сверху, людьми, которые никак не связаны с IT и не имеют технического образования. В общем я хочу подсветить те проблемы, которые наблюдал за время работы, когда джуны взаимодействовали с AI для написания кода, такими как ChatGPT, GigaChat или YandexGPT.

Статья рассчитана на людей, которые пропагандируют эти инструменты и не разбираются в них, возможно это поможет им лучше понять, сильные и слабые стороны использования AI-помощников. Впрочем, прошу под кат всех желающих, в любом случае я постараюсь не использовать код, а передать именно суть на примерах из своего личного опыта.

Читать далее

Укрощаем зоопарк раскладок в Windows

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

Долгое время моим основным рабочим окружением был Linux. Там, как известно, «из коробки» (или через легкий тюнинг конфигов) можно повесить смену раскладки на любую клавишу. Я привык использовать для этого CapsLock. Это эргономично: мизинец лежит рядом, не нужно выкручивать пальцы в аккорды типа Alt+Shift или тянуться к Win+Space.

Но обстоятельства сложились так, что мне пришлось переехать на Windows. И тут начались фантомные боли. Стандартными средствами повесить смену языка на CapsLock — задача нетривиальная, а сторонний софт часто перегружен лишним функционалом.

Читать далее

Как наш shell похорошел

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

Так сложилось, что программируя микроконтроллеры, разработчик балансирует между двумя крайностями. Все ресурсы под твоим полным контролем — и это кайф (думаю, многие в embedded за этим и идут). Но платой становится сложность встраивания базовых инструментов, которые стали де-факто стандартом в других областях разработки. Сложность хотя бы в том, что они не идут из коробки.

Возьмём обычную задачу: включить фару на устройстве.

На практике наша железка должна загрузиться, зарегистрироваться в LTE-сети, поднять TLS-соединение с MQTT-брокером, синхронизировать состояние и пройти ещё кучу слоёв бизнес-логики. С другой стороны — мобильное приложение и бэкенд для управления этой лампочкой (уже целая система собралась!). Там не меньше логики: от авторизации до “да кто блин так дизайн спроектировал?”. Пока дотапаешься до кнопки, пройдёт вечность.

В итоге, любое простое действие требует либо полного рабочего стека, либо моков с тестовыми сборками и отключёнными проверками. Либо дебагера с брейкпоинтами и ручными правками памяти. Всё работает, но каждый раз жрёт уйму времени и внимания.

Хотелось бы проще. Нужен способ аккуратно вмешаться в работу устройства — без отключения основной логики, без специальных сборок и независимо от режима. Не просто физическая кнопка, а полноценный интерфейс: настраивать параметры, включать/выключать функции, забирать данные.

И стало ясно: нам не хватает shell-интерфейса. Или CLI. Или терминала — называйте как угодно (разницу можно глянуть здесь). Но не просто не хватает — его придётся писать самим. Меня зовут Сергей Шилин, я руковожу разработкой электроники и встроенного ПО в Whoosh. Почему не взяли готовое и чем наш велосипед лучше — расскажу под катом!

user@habr > article start --full

ИИ бот-модератор 1: Начало проекта

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

Знаете, в чём проблема большинства гайдов и курсов, которые обещают научить всему и сразу — да ещё и устроить на работу? Часто они учат примитиву, выдавая это за качественный контент. В итоге появляется много низкокачественного кода: на первый взгляд он работает, но в реальности трудно поддерживается.

Если в проекте нет структуры, он быстро превращается в кашу. Каждая доработка — это не отдельный продуманный модуль, а «приматывание новых кусков кода синей изолентой» с мыслью: «хоть бы не сломалось». Для новичка это особенно опасно: кажется, что всё нормально, пока проект маленький, но при росте даже простые изменения начинают занимать часы и ломать соседние части.

Вы наверняка задаётесь вопросом: «Почему рубрика называется “ИИ бот-модератор”, а автор тут рассказывает про качество кода?» На самом деле, всё связано.

Telegram-бот для группы — отличный пример проекта, который очень быстро обрастает фичами: команды, настройки, роли, интеграции, хранение данных, логирование, админка, модерация, ИИ и т.д. Если делать всё “в одном файле”, это почти гарантированно закончится болью. Поэтому в этой рубрике мы будем строить бота так, чтобы его можно было развивать: добавлять функциональность без постоянного страха «сломать всё».

Читать далее

Самокаты и их место в этом мире

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

Ни для кого не секрет, что вот уже несколько лет в некоторых регионах нашей страны имеются проблемы с навигацией. И если раньше мы всецело могли полагаться на спутниковые навигаторы, то сейчас приходится справляться без привычного «через сто метров поверните направо».

На связи Фарук, с некоторых пор я отвечаю за RnD в Whoosh, и сегодня я хотел бы рассказать вам о том, как мы справлялись с проблемами определения местоположения наших самокатов.

Читать далее

Когда бизнесу нужно заключать соглашения о поручении обработки персональных данных

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

ПД — персональные данные.

Одни бизнесы пользуются услугами других бизнесов или частных исполнителей. Это база. 

Пример: обучающий центр хранит данные работников и учащихся в CRM.

Другой пример: флористическая студия пользуется услугами курьерской компании (или самозанятого курьера) для доставки букетов.

В этих и подобных случаях организации, ИП или самозанятые, исполняющие поручения компании — это третьи лица, обрабатывающие ПД.

Разобраться, с кем заключать соглашения

Как Apple пропатчила «антеннагейт» в 20 байт

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

Хотите увидеть нечто любопытное? Вот, как устранили проблему «антеннагейта» на iPhone в 2010 году. 20 байт.

iOS 4.0: 8d ff ff ff 91 ff ff ff 95 ff ff ff 99 ff ff ff 9d ff ff ff iOS 4.0.1: 86 ff ff ff 98 ff ff ff 9e ff ff ff a7 ff ff ff b0 ff ff ff

Контекст: в 2010 году, когда выпустили iPhone 4, пользователи заметили, что если взять телефон определённым образом, то количество полосок сигнала сети падает с 5 до примерно 2. Спустя насколько недель компания опубликовала письмо, в котором свалила вину за это на неправильную формулу.

Читать далее

Насколько много компании знают о нас? Как именно они собирают о нас данные

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

Всем известно, что злые корпорации собирают о нас данные, но как именно они это делают?

Трекинг курсора, рейтинг номера который вы используете, Email трекеры, скорость печати и даже... определения дрожит ваша рука или нет.

А также как сайты легко вычисляют ВПН-щиков.

В этой статье мы разберемся во всем этом и составим портрет человека на основе собранных данных.

Читать далее

HTB Season Gacha | MonitorsFour — Полный путь от IDOR до Docker Desktop escape (WSL2) и root

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

Продолжая серию разборов в рамках сезонного ивента Season of the Gacha на HackTheBox, хочу поделиться прохождением MonitorsFour. Машина оказалась не самой сложной, но с неочевидным подвохом: Windows-хост с Docker Desktop, что добавило головной боли на этапе повышения привилегий. Признаюсь, меня поначалу сбило с толку, почему Nmap показывает Windows, а shell получается Linux, но об этом чуть позже.

В машине реализованы IDOR, актуальные CVE и побег из Docker-контейнера, и на мой взгляд, отличный набор для отработки навыков. Давайте разбираться!

Читать далее

Локальный диск на 288 ПБ: монтируем S3-бакет Yandex Cloud без боли

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

Решил я тут, что будет удобно иметь S3 бакет как диск в системе для всякого. Так как я плотно работаю с Yandex Cloud, то и использовать буду их бакет.

У них довольно щедрые тарифы и достаточно большие бесплатные лимиты.

Я сижу на Федоре. Для подключения бакета буду использовать GeeseFS - - высокопроизводительная файловая система S3 ( Яндекс , Amazon ), соответствующая стандарту POSIX и написанная на языке Go.

GeeseFS позволяет монтировать S3 бакет как файловую систему. Файловые системы FUSE на основе S3 обычно имеют проблемы с производительностью, особенно при работе с небольшими файлами и операциями с метаданными. GeeseFS пытается решить эти проблемы, используя агрессивный параллелизм и асинхронность.

Будет работать кстати и на винде.

Естественно нужно иметь аккаунт в яндекс облаке. У меня он есть. Создать новый не представляет сложности. Там ещё и грант 4000 рублей дадут. Поэтому переходим к делу.

В облаке нужно будет создать бакет. А так же статические ключи доступа.

Скачиваю бинарник https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-linux-amd64. Кстати должна быть установлена ещё fuse, в федоре она предустановлена.

В профиль aws нужно добавить созданный ранее статический ключ доступа. Если вы не пользовались aws cli, то нужно создать файл ~/.aws/credentials, если пользовались то файл уже есть. В него нужно добавить профиль

Читать далее

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

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

(Дисклеймер: Заголовок — намеренная провокация. Но если ваша рука уже потянулась к клавиатуре, чтобы написать гневный комментарий о деградации инженерной школы — добро пожаловать под кат. Там мы разберемся, почему синяя платка из Италии победила академический снобизм и создала армию инженеров).

Представьте мир до середины нулевых. Вы — школьник, студент или просто энтузиаст, и вы хотите собрать простенького робота. Ваши действия?

Сначала нужно купить микроконтроллер (PIC или AVR). Затем найти программатор ($50–100) или паять LPT-«костыль» на коленке, рискуя сжечь порт материнской платы. Потом открыть даташит на 300 страниц на английском, чтобы понять, в какой регистр нужно «плюнуть» битом, чтобы просто зажечь светодиод. И, наконец, написать код на Ассемблере или голом Си, где ошибка в одной запятой превращает устройство в кирпич.

мигаем светодиодом

Ключи в базах данных: больше чем просто идентификатор

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

Начиная с первых курсов университета, первой ассоциацией у студентов ИТ специальностей со словом «ключ» в базах данных является идентификатор. В принципе это верно, однако следует это понятие расширить – связать его с целостностью данных и производительностью. Рассмотрим эволюцию подходов к работе с ключами на примере роста выдуманной компании NeoCat.

Читать далее

Нейро-дайджест: ключевые события мира AI за 3-ю неделю декабря 2025

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

Привет, с наступающим! Это новый выпуск «Нейро-дайджеста» — коротких и полезных обзоров ключевых событий в мире искусственного интеллекта и технологий.

Неделя выдалась насыщенной: OpenAI выкатили GPT-5.2 и новую версию генератора изображений, Xiaomi неожиданно показали сильную опенсорс-MoE для кода, свежие FLUX.2 [max] и Wan 2.6. Amazon собираются инвестировать в OpenAI, а VPN-расширения крадут данные юзеров.

Всё самое важное — в одном месте. Поехали!

Читать дайджест →

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

Метрики пользовательского опыта

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

Понимание и измерение пользовательского опыта (UX) является ключом к созданию успешных продуктов и сервисов. В современном мире пользовательские предпочтения и ожидания непрерывно эволюционируют, компании стремятся не только привлечь, но и удержать своих клиентов, предлагая им качественный UX. Для этого используются различные метрики, которые позволяют измерить и оценить эффективность взаимодействия пользователя с продуктом. На основе этих метрик можно принимать обоснованные решения о дизайне и развитии продукта.

В этой статье я собрала основные продуктовые, CX и UX метрики из разных источников и объединила их в одном месте. Материал можно использовать как опору при планировании продуктовой стратегии, оценке эффективности CX/UX решений и при проведении исследований — чтобы измерять реальное влияние на разные аспекты продукта.

В этой статье я сознательно ухожу от привычных продуктовых метрик вроде MAU, DAU, LTV, Retention, Conversion Rate и.т.д. Вместо них — попытка заглянуть глубже и разобрать метрики, которые можно измерить именно исследовательскими методами. Часть из них покажется знакомой, а часть — теми самыми редкими бриллиантами, которые помогают увидеть продукт глазами пользователя, и понять что именно стоить за привычными цифрами.

Перейти к метрикам

Строим сервис, который повышает собираемость показаний счетчиков ЖКХ

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

Привет, Хабр!

Передача показаний счётчиков во многих домах всё ещё требует ручных действий. Жильцы откладывают эту задачу, пропускают сроки и получают пени. Чтобы повысить дисциплину, мы перенесли механику стриков, знакомую по одному приложению для изучения языков с совой  — последовательные своевременные сдачи показаний образуют серию и небольшую скидку как вознаграждение, которая мотивирует поддерживать регулярность.

В статье разберём Python-сервис, который отправляет персонализированные SMS, принимает ответы и подключает голосовой вызов для тех, кто не ответил.

Читать далее

Автоматизируем простые задачи с помощью Powershell

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

Системным администраторам приходится выполнять множество рутинных задач по сопровождению и поддержке систем. При этом, конечно же, хотелось бы максимально автоматизировать эти задачи. Сегодня мы поговорим о том, как с помощью сценариев PowerShell можно выполнять различные задачи администрирования в среде Windows.

Читать далее

Экспериментальная система skills в OpenAI Codex: как агент учится пользоваться инструментами

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

В Codex появилась экспериментальная фича — skills: декларативное описание локальных «навыков» агента с автоматическим discovery и строгими правилами применения. В статье разберём, как это работает под капотом, зачем нужно и как использовать это в своих проектах.

Читать далее

Настраиваем ИИ-помощника бесплатно и без вендорлока в IntelliJ IDEA, GoLand, WebStorm, OpenIDE и GigaIDE

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

AI-помощники в IDE — уже не фантастика, а ежедневная реальность. Но как сделать так, чтобы они действительно помогали, не лезли не в тему, не сливали код в облако и не требовали подписку на каждого чиха? Ответ — Continue: open source AI-ассистент, который интегрируется с IntelliJ IDEA, GoLand, WebStorm, OpenIDE и другими IDE на базе IntelliJ Platform. 

Он предоставляет автодополнение, чат, команды над выделенными фрагментами и даже агентный режим с патчами на несколько файлов. Главное — вы выбираете модель и правила игры.

Читать далее

Два китайских хоруса, одинаковых с лица: сравнение и ремонт

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

Привет, Хабр! Гитарные педали из Поднебесной в корпусе формата «Сникерс» из двух гнутых П-образных алюминиевых профилей привлекают своей дешевизной, компактностью и лёгкостью, однако проигрывают в плане надёжности.

Последнее особенно касается ножного переключателя, который нередко быстро выходит из строя, либо даже оказывается неисправным прямо из коробки.

Сегодня я расскажу, как преодолеть этот конструктивный недостаток без замены переключателя. Ещё мы познакомимся с типовой схемотехникой аналоговых хорусов. И, разумеется, сможем послушать, как они звучат.

Читать далее

Кастомные свойства объектов БД PostgreSQL без патчей в ядро

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

В статье речь пойдёт о методике разработки в Postgres, которую можно использовать для лучшей интеграции вашего расширения с базой данных. А конкретно - о том, как реализовать кастомные свойства объектов БД (или custom reloptions), которые можно было бы назначать разным типам объектов БД и таким образом управлять поведением расширения.

Читать далее