Обновить

WebSocket и SSE просто, для собеседований и не только

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

WebSocket vs SSE простым языком: двустороннее и однонаправленное соединение, как работает TCP и HTTP upgrade, и какие вопросы по этим темам чаще всего задают на собеседовании.

Читать далее

Бойтесь буквы «M». Самый странный баг в моей жизни

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

Вечером в пятницу коллега, назовем его Мститель, спросил, не сталкивался ли я с проблемой, что route возвращает 400... но «если сменить название на сильно другое», то всё ок. Я сперва не обратил внимание на слово «сильно». Может быть, где-то дублируется регистрация этого рута? Или мститель перепутал GET и POST. Или какой-то баг в общем на создание хэндлеров?

Милости просим

Автобусы в Петербурге или GTFS по-русски: успеть за 15 минут

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

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

Делаем свой яндекс транспорт?

Скрипты и алиасы для вашего линукса

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

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

Простейший алиас в .bashrc или .zshrc кажется небольшим открытием. Первый рабочий скрипт, сохранённый в ~/.local/bin, ощущается как прорыв. Это не просто про лень — это про эффективность, про оптимизацию работы.

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

Читать далее

Революция вырезов

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

Пару лет назад в CSS произошла тихая революция, вызвавшая тектонический сдвиг в разработке интерфейсов. Вкратце — нам разрешили «сверлить» настоящие дырки в блоках.

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

Простые вырезы теперь делаются в десять раз быстрее. Одной строчкой кода. Да, надо менять мышление и забывать про нарезку блоков. И как же это приятно!

В статье мы сверстаем карточку с круглым вырезом двумя способами: традиционно‑дедовским и современным. Затем сравним объём кода, простоту и гибкость получившихся реализаций. И порадуемся, что будущее уже наступило!

Читать далее

Надуманная проблема распределённой инфраструктуры

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

Жил-был я. И был у этого "я" небольшой пул виртуальных машин. Но пришло время, и появилось осознание, что у моего облачного провайдера (пусть будет С) не все условия мне нравятся. А, вот, у другого провайдера (путь будет провайдер В) условия для некоторых виртуалок повкуснее. И замыслил я неладное. Я решил разнести инфраструктуру между разными провайдерами. Но эту, так называемую, инфру необходимо скоммутировать между собой. Потому что гонять сервисный трафик через интернеты - дурная затея. И родился у меня план. Даже не так ПЛААААН!!! А следом, и эта статья. Предвосхищая вопросы почему не обычный VPN, отвечу: это во-первых, скучно, во-вторых, не подлежит публикации, в-третьих, в последнее время нестабильное ввиду блокировок. Disclaimer! Цель статьи - рассмотреть вариант осуществить связность конкретных элементов инфраструктуры, используя публичные каналы связи. Статья не ставит целью описать способ обхода блокировок и осуждает (хоть и не искренне) подобные статьи.

А ну ка?

EFEKTA Open PM Monitor — Zigbee-датчик воздуха с открытым кодом, OTA и аналоговой душой

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

Приветствую всех читателей Habr. Время от времени я выкладываю в открытый доступ некоторые свои проекты по электронике. Сегодня я хочу представить устройство, которое делал с особым удовольствием - EFEKTA Open PM Monitor.

Это Zigbee-датчик мониторинга твердых частиц (PM1.0, PM2.5, PM10). В версии 2.0 в проект добавился сенсор ENS160 для измерения TVOC, eCO2 и AQI, а также небольшой дублирующий OLED-дисплей 128×64.

Но главная его «фишка» - аналоговый стрелочный индикатор.

Читать далее

«Атлас Telegram» — как создавалась интерактивная карта с 500 000 каналами

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

Мы привыкли видеть Telegram как список чатов и каналов на своём устройстве. Но это лишь малая часть большой экосистемы, ограниченная подписками каждого пользователя. А как выглядит вся экосистема целиком? Эта статья — о том, как мы провели масштабное исследование контента Telegram и разработали интерактивную карту с 500 000 каналами.

Читать далее

Как я подготовился к первому whiteboard + бонус: интервью с дизайн лидом Т-Банка про найм

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

Кому будет полезно: дизайнерам, готовящимся к whiteboard, особенно тем, кто сталкивается с этим форматом впервые.

Что внутри: личный опыт прохождения whiteboard в Т-Банке и инсайды от лида, который проводит десятки таких собеседований.

Главный вывод: whiteboard проверяет не решение, а ваше мышление, умение задавать вопросы и работать в диалоге.

Я Андрей - продуктовый дизайнер в Т-Банке, до этого был в Госуслугах.

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

Дальше была стандартная цепочка: скрининг, техсобеседование, портфолио. А потом HR сказал: "Договоримся о дате whiteboard". Для меня это было в новинку.

Конец квартала, праздники, переносы. До запланированной даты оставалось довольно много времени.

Я понял, что просто прийти и как-нибудь решить не получится. Начал читать все подряд: статьи, треды, чужие истории. Сначала в голове была каша — слишком много подходов и советов. Потом постепенно стало понятно, как вообще работает формат. И главное — стало ясно, что одной теории недостаточно. Нужно тренироваться.

Читать далее

3d в MonoGame, python в c# или всё таки KNI в браузере? трёхслойная постирония о том, как я игру делал

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

Всем привет. В ходе этого материала вы узнаете:

1. Как сделать простой рендер на c# в MonoGame

2. Что использовать, чтобы вызвать python из c#

3. Почему пункт 2 - это плохая идея

4. Как MonoGame игру сбилдить в web/html с помощью его форка KNI

Пристёгивайтесь, будет весело!

ПРИСТЕГНУТЬСЯ!

Очередной бенчмарк VictoriaMetrics против Prometheus

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

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

Читать далее

Скриншоты не победить, но скрейпинг можно удорожить: 4 слоя защиты изображений на UGC-платформе

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

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

Если вы делаете галерею, маркетплейс иллюстраций, образовательную платформу с визуалами или любой сервис, где картинки – это ценность, а не декорация, эта статья для вас. Я расскажу, как выстроил многослойную защиту изображений, не превращая при этом продукт в крепость, из которой неудобно пользоваться.

Читать далее

API автотесты на Python с запуском на CI/CD и Allure отчетом

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

В этой статье разберём процесс написания API автотестов на Python, используя современные best practices. Кроме того, мы настроим их запуск в CI/CD с помощью GitHub Actions и сформируем Allure-отчёт с историей запусков. Цель статьи — не только показать, как писать качественные API автотесты, но и научить запускать их в CI/CD, получая удобные отчёты о результатах.

Читать далее

Когда 200+ бэкенд-разработчиков меняют 400 микросервисов: зачем нужно архитектурное ревью

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

Что будет, если больше 200 бэкенд‑разработчиков запускают по 2–3 новых проекта в неделю в более чем 400 микросервисов, написанных на пяти разных языках — C++, Go, Python, Java и PHP? Ответ хорошо знаком любому, кто сталкивался с быстрорастущей распределённой системой: хаос появляется быстрее, чем успеваешь его отлавливать. И в какой‑то момент становится очевидно, что нужна надёжная точка контроля, чтобы поддерживать архитектуру в рабочем состоянии.

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

Читать далее

Миллиард записей и 8 Марта: как YDB спас праздник

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

Чем покупка букета на 8 Марта через Яндекс Еду отличается от покупки, собственно, еды? С точки зрения пользователя — ничем. Выбрал, оплатил, доставили. А вот с точки зрения разработчика бэкенда заказ уникальных букетов превращается в нетривиальную инженерную задачу синхронизации складских запасов. Задержка синхронизации хотя бы в 10 минут трансформируется в звонок и сборщиков заказов, сообщающих о том, что именно такого букета на складе больше нет. 

Меня зовут Виталий Московкин, я занимаюсь ритейлом в Яндекс Еде. В статье я расскажу, как мы синхронизировали состояние складов с 18 миллионами уникальных товаров: сначала с помощью PostgreSQL, а затем с помощью YDB. Такое количество товаров превращается на бэкенде в 4 миллиарда записей о ценах и стоках, которые нельзя просто так кешировать. Но и замена монолитной СУБД на распределённую тоже задача не на десять минут. Подробности — под катом.

Читать далее

Как не получилось сделать PostgreSQL лучше (и почему это нормально)

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

Недавно я получил статус Major Contributor в проекте PostgreSQL. Это довольно радостное для меня событие и интересное, поэтому коллеги попросили написать статью об этом. А чтобы я не сомневался — заботливо составили список достижений за меня. Получилось замечательно, но публиковать от своего имени статью вида «как я крут» я не хочу. Я совсем не против про это говорить, и из каждого утюга вещаю про разные технологии, сделанные моей командой или вот прям вообще мной. Но только в контексте «как использовать эти технологии», либо в узком кругу или личной беседе. 

Я решил написать другую статью: что у меня не получилось. Писал довольно спешно, поэтому, возможно, местами будет понятно только специалистам. Не расстраивайтесь, если что‑то неясно и пришлось гуглить. А вот если всё понятно — возможно, стоит меньше смотреть в монитор и чаще трогать траву.

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

Читать далее

Архитектура как код

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

Всем привет! Меня зовут Сидоров Антон, я руководитель отдела технической архитектуры в департаменте сопровождения информационных технологий ПСБ. Моя команда занимается архитектурой инфраструктурных систем, и сегодня я хочу рассказать вам про наш первый опыт использования подхода «Архитектура как код»

Читать далее

Под капотом Android: как создаются, управляются и восстанавливаются процессы приложений в системе

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

Эта статья родилась из практической задачи — понять, как устроен Android в общем и целом, как он сохраняет и восстанавливает состояния приложения (помимо БД и файлов) при внезапном завершении процесса, как управляет процессами.

Я разберу ключевые системные компоненты (Zygote, SystemServer, AMS, Binder) и процесс восстановления состояния через Bundle.

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

Читать далее

Мифы про REST API. Часть 1

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

Как говорится, в споре рождается истина. И этот случай не стал исключением. Часто проектирую запросы, консультирую аналитиков, сама консультируюсь у разработчиков и заметила, что иногда мы по-разному понимаем некоторые аспекты REST. Когда я стала погружаться в тему, то материала набралось столько, что одной статьей не обойтись. Понимание мифов позволяет делать более осознанный выбор при проектировании.
С вами Дарья Борисова, системный аналитик из ПСБ, и я начинаю цикл статей «Мифы о REST».

Читать далее

Badge From Scratch – Problem Driven Development

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

Всем привет! На связи Positive Labs, R&D-подразделение Positive Technologies, занимающееся исследованиями и разработкой hardware и не только. В своих прошлых статьях [этой и этой] мы грузили уважаемых читателей техническими подробностями наших исследований. Сегодня же мы предлагаем вернутся в 2024 год и послушать историю создания интерактивного бейджа для фестиваля PHDays Fest 2. Устраивайтесь поудобнее и приготовьте ваши фейспалмы: пользоваться ими придется часто :)

Читать