Обновить

Все потоки

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

CalDAV в дикой природе: как «простой календарь для себя» превратился в клиент для семьи, друзей и четырёх облаков

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

Протокол CalDAV существует с 2007 года (RFC 4791), и за это время он стал стандартом де-факто для синхронизации календарей. Казалось бы, стандарт — значит, всё одинаково. На практике же каждый крупный провайдер реализовал его по-своему, зачастую отходя от стандарта.

Для меня всё началось с простой задачи: автоматизировать управление своими календарями. Один pet-проект, один провайдер — ничего сложного. Но когда я решил попробовать поддержать второй, третий, четвёртый — оказалось, что CalDAV у каждого свой. В этой статье я расскажу, с чем вы столкнётесь, если решите написать клиент, работающий одновременно с Google, Apple, Яндексом и Mail.ru.

Читать далее

Как мы встроили React в 20-летний Ruby-монолит, сделали Канбан и ушли в Open Core. Релиз Redmarc v0.5 Beta

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

Интернет полон историй безупречного успеха: «Мы взяли модный фреймворк, переписали систему с нуля, и всё стало летать». Но реальный мир корпоративной разработки – это legacy. Это системы вроде Redmine, которые живут десятилетиями, хранят в себе терабайты критических данных, и чья миграция обойдется бизнесу слишком дорого.

Мы в команде ArcFront решили, что хватит терпеть интерфейсы из 2006 года. Вместо того чтобы убегать на платные облачные трекеры, мы совершили хирургическую инъекцию. Мы внедрили молниеносный React SPA прямо в ядро старого Ruby-монолита. Без микросервисов. Без CORS.

Рассказываем, как мы заставили старого пса выучить новые трюки: от архитектуры инъекции и парсинга Textile до психологии интерфейсов и нашего официального перехода на бизнес-модель Open Core.

Читать далее

Как восстановили автоматизацию в доме 500 м²: от неработающего проекта к рабочей системе

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

Что делать, если автоматизация дома уже началась, деньги потрачены, кабели проложены, а подрядчик перестал отвечать на звонки?

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

 

Читать далее

«М̶н̶е̶ п̶р̶о̶с̶т̶о̶ н̶е̶ н̶р̶а̶в̶и̶т̶с̶я̶». Как оценить дизайн, если ты не дизайнер: пошаговая инструкция

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

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

Я руковожу отделом дизайна в ЛАНИТ. В этой статье расскажу, как давать обратную связь дизайнеру, чтобы макеты становились лучше, а командное взаимодействие – комфортнее. 

Читать далее

Project Firefly: как Intel собирается выпускать хорошие ноутбуки дешевле 600 долларов

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

В последние годы недорогие ноутбуки часто уступали более дорогим моделям по качеству корпуса, автономности и экранам. Intel считает, что часть этих проблем связана не только с процессорами, но и с самим подходом к разработке устройств. Поэтому вместе с процессорами Wildcat Lake компания представила Project Firefly — набор стандартизированных решений для производителей ноутбуков. 

Проект анонсировали вместе с запуском процессоров Core Series 3 (кодовое имя Wildcat Lake) в мае 2026 года в Китае. Что за инициатива? Если кратко, то вместо того чтобы просто выпустить новые чипы и оставить производителям самим решать, как собрать из них недорогой ноутбук, компания предложила готовый набор стандартизированных решений. Цель — использовать опыт массового производства смартфонов, чтобы снизить себестоимость и ускорить вывод устройств на рынок. Давайте разберем подробности. 

Читать далее

Black-box тесты на Java: функциональные тесты за секунды и в параллель и почему я остался на своих

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

Я наткнулся на подход к функциональным тестам, который меня по-настоящему удивил. Тесты в нём вообще не знают, что внутри Spring: стучатся в реально поднятый сервис по HTTP, как обычный клиент, гоняются параллельно и проходят за секунды. Я разбирал это на код-ревью и сначала прифигел, а потом не стал переходить на него сам, но кое-что забрал себе. В статье сравниваю оба подхода, разбираюсь где какой уместен, и показываю три вещи, которые подсмотрел и притащил в свой Spring

Сравнить подходы

Юнит-экономика B2B SaaS с длинным циклом: как считать CAC, когда сделка тянется месяцами

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

Когда я отвечал за бизнес-юнит МСБ в Кайтене, мне нужно было посчитать юнит-экономику B2B SaaS с длинным циклом сделки. Задача казалась простой — поделить LTV на CAC и сравнить с порогом. Я неоднократно так делал для B2C для сделок короче месяца.

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

Как считать CAC в B2B

Чем выше статус, тем хуже мы считываем людей — и тем увереннее в обратном

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

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

У каждого из нас есть способность, которой мы пользуемся постоянно и почти не замечаем, — умение считывать других людей. Понимать по лицу, голосу, паузе, что человек напротив на самом деле чувствует: раздражён, врёт, выгорел, вот-вот сорвётся или, наоборот, открыт. Это наш главный инструмент восприятия в любых отношениях — и в дружеских, и в рабочих. А для того, кто руководит людьми, он же — основной рабочий инструмент: на нём держатся и найм, и мотивация, и разрешение конфликтов.

У этого инструмента есть особенность, про которую редко думают. Как и у зрения, у него есть слепое пятно — участок, который мы не видим и, что важнее, не знаем, что не видим. У глаза слепое пятно физиологическое: там, где зрительный нерв входит в сетчатку, рецепторов нет, и мозг просто достраивает картинку, не сообщая нам о провале. Со способностью считывать людей происходит похожее, и подтверждается это исследованиями: она может слабеть — а ощущение, что мы понимаем других хорошо, при этом не слабеет, а иногда даже растёт. Мы видим хуже и одновременно увереннее считаем, что видим ясно.

Читать далее

RecyclerView. Оптимизация Adapter

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

Привет, Хабр! Меня зовут Михаил Богатиков, я Android-разработчик в ПСБ. В своей работе я часто сталкиваюсь с задачей отображения сложных и динамических списков.

Казалось бы, RecyclerView — давно знакомый инструмент. Но когда данные становятся разнородными, а списки — большими, простой вызов notifyDataSetChanged() превращается в узкое место, вызывающее фризы и дергающуюся анимацию. Как перейти от лобового обновления к точечным изменениям? Как объединить несколько типов элементов в одном адаптере?

В этой статье я пройду путь эволюции работы с RecyclerView.Adapter:
- Разберу, как работает система уведомлений под капотом.
- Вспомню, как DiffUtil и ListAdapter спасли нас от ручных вычислений.
- Расскажу про AsyncListDiffer, ConcatAdapter и нюансы восстановления позиции.
- И наконец, покажу, как спроектировать универсальный адаптер с поддержкой разных ViewHolder, частичным обновлением (Payloads) и ViewBinding — с полным примером кода.

Поехали!

Читать далее

Chrome-расширение для Upwork: архитектура, метрики и опыт разработки с помощью ИИ

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

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

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

Именно это стало отправной точкой для идеи Chrome-расширения, которое добавляет слой аналитики поверх списка проектов Upwork и позволяет быстрее принимать решение, стоит ли откликаться на вакансию.

Читать далее

Чего на самом деле хотят интеграторы, чтобы продавать вендоров? Интервью с Марией Бар-Бирюковой, КОРУС Консалтинг

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

Я много слышу о том, что у компаний не получается сделать так, чтобы их продукт продавали интеграторы.

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

У меня есть свой взгляд на эту тему — все-таки 12 лет в роли CMO Битрикс24, где партнерская сеть насчитывает более 10 тысяч компаний, дает определенную пищу для размышлений. Но в этот раз я решила пойти другим путем и спросить самих интеграторов: а что им нужно, чтобы принять решение о работе с вендором?

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

Мы сделали серию интервью с интеграторами и с удовольствием делимся ею с вами. Надеемся, будет полезно.

Первый разговор — с Марией Бар-Бирюковой, директором департамента e-commerce ГК «КОРУС Консалтинг». 

Читать далее

Codex жрёт контекст? Я дал ему локальную память на SQLite — и перестал кормить его простынями промптов

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

Codex хорош, пока не приходится в пятый раз объяснять ему одни и те же правила проекта: где проверки прав, как запускать тесты, почему не надо тащить старые alias-модули и что мы уже решали в прошлом чате.

Поэтому я сделал Hermes Codex Plugin — плагин, который хранит правила, summaries и прошлые решения в SQLite, ищет их через FTS5 и подкладывает Codex только маленький релевантный кусок контекста.

Читать далее

Локальный запуск openai/gpt-oss-20b MXFP4 GGUF на ноутбуке без дискретной видеокарты: практический тест на 32 GB RAM

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

Запустил openai/gpt-oss-20b в варианте MXFP4 GGUF на обычном ноутбуке без дискретной видеокарты: только CPU, встроенная Radeon 780M и общая оперативная память.

Тест проводился на ASUS Vivobook S 16 M3607HA: Ryzen 7 260, Radeon 780M, 32 GB DDR5 5600, Windows 11 и LM Studio 0.4.16-1 x64. Модель ноутбука указываю не ради привязки статьи к конкретному устройству, а для воспроизводимости. В таких тестах важны не только CPU и RAM, но и охлаждение, лимиты питания и shared memory у встроенной графики.

Главный вопрос был практический: можно ли реально пользоваться локальной 20B-моделью на ноутбуке с 32 GB RAM, если отдельной видеокарты нет?

Сразу оговорюсь это не научный benchmark, а пользовательский case study на конкретном железе. Проверял скорость, расход RAM/CPU/GPU, поведение при разных лимитах контекста и качество ответов на технических prompt сценариях.

20B-модель, 32 GB RAM и встроенная графика

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

Свой биллинг для ИИ-агента: микрокредиты и контроль расходов

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

На связи Сергей Смирнов, AI-инженер и основатель LLMStart.ru. Сегодня разбираем, как написать биллинг для продакшн ИИ-агента.

Когда ваш ИИ-бот начинает отвечать клиентам в B2B-сегменте, каждый его ответ стоит токенов. Чтобы экономика продукта сходилась, расходы на LLM нужно жестко контролировать и тарифицировать. Кажется, что достаточно просто прикрутить калькулятор, но на деле всё сложнее: один HTTP-запрос может дергать до пяти разных нейросетей, и не все они идут через стандартный граф фреймворка.

В новой статье на Хабре рассказываю: — Почему считать деньги по чатам — это путь к хаосу. — Зачем мы изобрели «микрокредиты» вместо наивных токенов. — Как протащить контекст биллинга через пять LLM-вызовов в одном запросе с помощью магии ContextVar + Mixin.

Разбор для тех, кто делает multi-tenant LLM-сервисы и уперся в ограничения готовых прокси-решений.

Читать далее

«Сельский магнат»: как мы в РСХБ сделали мобильную игру

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

Привет, Хабр! Меня зовут Виталий, я занимаюсь развитием Венчурной студии РСХБ и проектами для молодых ИТ-специалистов в команде РСХБ.Цифра. В этой статье расскажу о том, как мы в банке придумали сделать полноценную мобильную игру и зачем вообще финансовой организации понадобился такой, на первый взгляд, нетипичный продукт.

Читать про игру

Физический уровень глазами атакующего: почему сеть начинается не с IP

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

Обычно, когда речь заходит о корпоративной безопасности, все спорят про настройку VPN, межсетевые экраны, выбор EDR‑систем и Zero Trust. Сам кабель при этом воспринимается как нечто стерильное и надежное по умолчанию. Но что, если забытая Ethernet‑розетка в переговорной — это идеальная точка входа, полностью обходящая внешний периметр? Как работают пассивные сетевые TAP‑врезки, не имеющие IP‑адреса и невидимые для IDS? И почему ваша операционная система доверяет копеечному USB‑шнурку больше, чем вам самим?

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

Читать далее

Как глушить нефтяную скважину… машинным обучением. Часть 2, техническая

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

Продолжаю рассказывать широкой общественности об интересном ML проекте, результаты которого внедряются в реальный технологический процесс. В первой части разобрались, что такое глушение и почему важно уметь рассчитывать объемы жидкостей глушения. В этой части будет непосредственно все то, как мы решали эту задачу с помощью МЛ:

Построили двухконтурную систему: офлайн-обучение на XGBoost и CatBoost — и лeгкий онлайн-инференс через Flask.

Вместо одного .fit() с дефолтным лоссом внедрили K‑method — асимметричную функцию потерь. Теперь модель «боится» недолить жидкость сильнее, чем перелить, потому что в реальности эти ошибки стоят по-разному.

CatBoost лучше по удобству работы с «сырыми» категориями, XGBoost потребовал кастомного кодирования, но дал сравнимые метрики.

На малых данных (~350 строк) случайное разбиение творит хаос: метрики скачут от сида к сиду. Поэтому отбираем топ‑20 лучших random_state, а гиперпараметры усредняем частотным методом.

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

Читать далее

Как я поймала дачный дзен, не выезжая из Москвы или тёплый репортаж с юбилея Хабра

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

Мы, devrel-ы, привыкли, что удивлять и креативить — это наша работа, поэтому к чужим приглашениям часто относимся со сдержанным профессиональным прищуром. Однако когда я получила пригласительное письмо на 20-й День рождения Хабра с темой «Дача 2.0», внутри что-то щёлкнуло раньше, чем я успела включить своего внутреннего скептика: я поняла, что точно не пропущу это событие.

Читать далее

Мировые маркетплейсы в 2026 году: лидеры, провалы и куда всё движется

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

В феврале 2024 года американская ContextLogic объявила, что продаёт маркетплейс Wish сингапурскому холдингу Qoo10 за 173 млн долларов. Цифра выглядит обычной для сделок такого рода, пока не вспомнить, что десятью годами раньше Wish был самым скачиваемым шоппинг-приложением планеты, оценивался в 14 млрд долларов и официально отказался от предложений о покупке от Amazon и Alibaba по 10 млрд каждое. Цена сделки оказалась на 99% ниже пиковой оценки — фактически от компании, претендовавшей на роль следующего Walmart, остался только торговый знак, переходящий из рук в руки.

Читать далее

Пишем движок для JavaScript с нуля

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

Как выкатить собственный движок JavaScript

Привет, Хаброжители! Мы подготовили для вас перевод статьи, в которой автор делится опытом создания собственного движка JavaScript с нуля.

Автор на языке Go с нуля создаёт простой движок JavaScript. В статье пошагово разобраны ключевые этапы: от лексического анализа и построения AST до реализации вычислителя и встроенных функций (print, fetch, JSON). Отличный материал, чтобы понять, как код на JS превращается в работающие инструкции.

Читать далее