Обновить
32K+

Я пиарюсь

Каждый имеет право на пять минут славы

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

Подключил 18 провайдеров входа и понял, что стандарт OAuth не соблюдает почти никто

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

Есть спецификация OAuth 2.0. Есть OpenID Connect поверх неё. Обеим много лет, по ним написаны десятки библиотек. Казалось бы, подключить кнопку «Войти через» — дело на полчаса.

Так это выглядит ровно до второго провайдера.

Я собрал единую точку входа на 18 провайдеров и 26 способов авторизации — от VK и Сбера до Telegram и Steam. 18 провайдеров, 26 способов входа. И почти каждый соблюдает стандарт по-своему.

VK требует device_id и state в теле обмена токена — в спецификации их нет. Сбер хочет уникальный заголовок RqUID в каждом запросе. Яндекс работает не по OIDC и использует заголовок OAuth вместо Bearer. Apple выдаёт вместо client_secret самоподписанный JWT со сроком жизни в полгода. Steam до сих пор на OpenID 2.0 — протоколе, который устарел десять лет назад. А ЕСИА вообще требует ГОСТ-подпись и CryptoPro.

Отдельная глава — Telegram. Это три несовместимых механизма под одним именем: OIDC, Login Widget с HMAC-проверкой и Mini App с двойным HMAC. Свести их так, чтобы один человек оставался одним пользователем независимо от способа входа, оказалось самой муторной частью проекта.

Внутри: полный каталог отклонений от стандарта по всем провайдерам, разбор того, где живёт нестандартность (спойлер: чем ближе к банку или государству, тем дальше от стандарта), и чеклист, если будете подключать больше двух-трёх провайдеров сами.

Читать далее

Новости

Геопространственный анализ данных на Python

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

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

Курс платный. По промокоду FIRST предоставляется скидка 50%.

Читать далее

Как я собрал на одном Angular коде: личный кабинет для сайта, Telegram Mini App, iOS и Android

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

Я Angular-разработчик и один пишу фронтенд своего сервиса "НеБалкон". Сначала был только сайт, но довольно быстро понадоблись личный кабинет, Telegram Mini App и приложения для iOS и Android.

Требования формировал я сам и сам же их постонно менял. Волатильность была приличная: стартап всё-таки. Ищешь PMF, крутишь идею, меняешь УТП, находишь решение получше - и опять идёшь править формы, статусы и пользовательский флоу.

На весь фронтенд было примерно 3 месяца. В такой ситуации заводить отдельный Flutter-проект или, тем более, писать два native-клиента на Kotlin и Swift мне показалось плохой идеей. Я бы сначала изучал новый для меня стек, потом переносил в него уже написанную логику, а после каждой своей новой 'гениальной' идеи синхронно правил несколько реализаций.

Остаться на Angular было проще лично мне, но плюс не только в этом. Когда код общий, формы, модели, валидация и багфиксы не начинают жить своей жизнью на каждой платформе. Поменял сценарий один раз - он поменялся в вебе, TMA и мобильных приложениях.

Так сайт и кабинет остались на Angular, TMA получил тот же CSR-клиент, а iOS и Android - Angular внутри Capacitor. Сейчас все 16 экранов кабинета используют одну реализацию, а доля общего TypeScript-кода получилась около 95%.

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

Читать далее

Как выбрать Casio сегодня: G-Shock, Protrek, Oceanus и другие

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

С 90-х в памяти многих японские часы Casio остаются «калькуляторами», но на самом деле Casio остаётся передовым и инновационным производителем, у которого можно найти много интересного и для 2026 года. В 70-х Casio представила первые электронные часы с автоматическим календарем, в 80-х – неубиваемые G-Shock, в 90-х – часы с GPS, в 2020-х – защищенные смарт-часы. А сегодня одни из лучших часов Casio — модели из легкого титана с casual-дизайном из линеек Lineage и Oceanus c переработанной панелью солнечной зарядки, использующей свет, проходящий через небольшие вспомогательные окна на циферблате для подзарядке. В Oceanus CASIO переработала компоновку панели таким образом, что свет теперь проходит непосредственно через основной циферблат, минуя вспомогательные окна и более равномерное распределение поступающего света по всем фотоэлементам.

Читать далее

DIY радиатор, чтобы не выгореть. Пилим, считаем деньги

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

Говорят, сделать радиатор на ЧПУ просто: загрузил заготовку, нажал кнопку, получил результат.
А по факту — это около часа программирования, 8 минут фрезеровки, молитвы над 2‑мм фрезой, виброгалтовка для борьбы с заусенцами и бухгалтерия, от которой волосы встают дыбом.
Делюсь опытом, цифрами и подводными камнями, которые всплывают в самый неожиданный момент. Материал, инструмент, электроэнергия, налоги, аренда и прочие радости жизни — всё посчитано.

К станку ! На балет !

ИИ-стартап: как мы пережили блокировку API, 3 переписывания, DDoS атаку и сделали 1M+ авто откликов

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

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

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

С весны 2025 года мы трижды переписали продукт, пережили DDoS, потерю API HH.RU и смену команды. Но мы все еще здесь!

Как так вышло, рассказываю в этой статье.

Читать далее

Может ли LLM создать заготовку Django-проекта?

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

Может ли ИИ собрать болванку Django-проекта из одного предложения? Несколько недель экспериментов, 200+ коммитов и разбор всего, что модель ломала по дороге — и как я вынес знания за пределы модели с помощью плагина seedkit.

Читать далее

iitog.ru — ежедневный дайджест мировых новостей об ИИ

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

TL;DR: Представляю вам iitog.ru -- дайджест мировых новостей об ИИ, разбавленных оффтопом, с разбором. Сделал для себя, чтобы просматривать на большом экране как газету, но решил поделиться с рунетом. Заходить раз в день, минут на пять-десять. Если зайдёт -- пользуйтесь. Есть критика -- давайте.

Подробнее

Мы автоматизировали поиск работы в IT — и поняли, где теряют оффер ещё до первого отклика

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

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

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

За год через систему прошло больше миллиона откликов на IT-вакансии. Мы наблюдали не только за тем, какие вакансии получают больше откликов или какие резюме чаще проходят дальше, но и за тем, какие возможности люди отсекают ещё до того, как их увидит рекрутер.

И вот что оказалось самым интересным.

Самые болезненные ошибки происходят не тогда, когда приходит отказ. Они происходят раньше - когда человек сам решает, что ему "не стоит даже пробовать".

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

Читать далее

Как я собрал базу визовых требований, где каждая ячейка ссылается на официальный источник

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

Привет, сообщество. Где-то два месяца назад мне пришла в голову идея, очень простая по своей сути, но ой как обширная, если начать в ней копаться более подробно.

Читать далее

Список моих научных работ и всем пока

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

На протяжении 19 лет я работаю в области моделирования в электроэнергетике: 13 - на рынке России, 6 - на рынке Европы. В 2020 ушла с российского рынка на европейский, но физически оставалась в РФ, работала по контракту как туташний ИП. Я работала в бизнесе и время от времени публиковала научные статьи, основанные за выполненных проектах. Это мое хобби: сделать проект, а после углубиться в теоретическую часть проблемы и обрисовать полученное решение по-научному. Мои статьи 1) были опубликованы на моем личном ресурсе, 2) имеют высокую цитируемость, 3) основных из них переведены на английский и недавно выложена на zenodo.org.

Читать

Как один API обнулил полгода работы — и что мы построили на руинах

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

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

Я вещаю от лица небольшой команды AI-стартапа.

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

Продукт запустился в июле прошлого года и за эти месяцы мы пережили много взлётов и падений.

Сегодня хочу рассказать про наш путь: как первые полгода мы делали рост х2 ежемесячно, и как за вторые полгода потеряли инвестиционный оффер на десятки миллионов, сократили команду с 10 человек до 3 и чуть не закрылись. И почему всё это началось с одного письма.

Читать далее

Пишем ботов без ботов. Нахождения пути с помощью HPA* алгоритма

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

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

Поиск пути — всему голова. Без него наши боты даже с места не сдвинутся и не доберутся до нужной точки на карте. Алгоритмов поиска пути существует множество, но для Tankolini Napierdolki мы выбрали HPA* (Hierarchical Pathfinding A*).

Под катом — много картинок, примеров и визуализаций.

Погнали читать!

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

Ищу ранних тестировщиков для Android-версии agent harnesses

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

Всем привет.

По состоянию продукта это бета версия. Поэтому я не ищу пользователей, которые ждут готовый polished-сервис. Мне нужны люди, которым интересно покопаться в сыром продукте, найти баги, сломанные сценарии и непонятные места.

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

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

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

Например: "Вот чек из магазина, добавь его в расходы". Или: "Вот ссылка на товар, отслеживай, когда цена упадет ниже 100 тысяч рублей". То есть один и тот же сценарий можно выполнить либо руками через интерфейс, либо через чат с агентом.

Читать далее

«Вы либо трусы наденьте, либо крестик снимите». Как мы выиграли еще один суд против PR-агентства PRslon

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

Третья часть марлезонского балета нашей истории про суды с PR-агентством PRslon, которое заимствовало наши статьи и нарушило наши авторские права. 2 года назад мы нашли на VC.ru больше 20 статей, очень похожих на наши, просьба удалить не помогла. Мы пошли в суд и выиграли дело. Конец истории? Не угадали. PRslon пытались замять скандал, убрав наши статьи из поиска, а потом подали иск о защите деловой репутации. Этот иск мы тоже выиграли. 

Читать далее

Heartbeat-мониторинг cron-job'ов: dead-man-switch на FastAPI

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

Обычный uptime-мониторинг проверяет, отвечает ли сервис на запросы. Cron-job ничего не отвечает — он запускается раз в N часов, делает работу и молча завершается. Если cron перестал запускаться (uptime daemon упал, машина в read-only mode после fsck, disk full) — обычный мониторинг этого не видит.

Решение известно с 70-х — паттерн dead-man-switch (он же heartbeat). Я недавно делал heartbeat-эндпоинты для Valpero. Здесь разберу серверную часть на FastAPI + клиентский bash-pattern, и edge-кейсы которые их ломают.

В конце готовый код, который можно адаптировать под свой стек.

Читать далее

QNAME minimisation на практике: RFC 7816, реализация, грабли

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

Когда вы открываете mail.google.com, ваш рекурсивный резолвер делает три-четыре шага: спрашивает root, потом TLD, потом authoritative для google.com, иногда ещё один уровень. Десятилетиями каждому из этих серверов отправлялся один и тот же вопрос целиком: «дай мне mail.google.com». Root-серверу, который понятия не имеет про google. TLD-серверу, который умеет только делегации com.. Каждый из них видел всю строку, хотя для своей работы нуждался в одной метке.

В 2016 году Стефан Бортцмайер написал RFC 7816 и сказал: ребята, это странно. Давайте резолвер будет спрашивать ровно столько, сколько нужно для следующего хопа. Идея простая до неприличия. И с этого момента началось десять лет внедрения.

Где течёт DNS

Probe-сеть из 10 регионов: что я не учёл про AS-разнесённость

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

Я делаю Valpero — uptime-мониторинг с проверками из 10 регионов мира. Когда я только собирал probe-сеть, я был уверен, что 10 географических точек это автоматически и 10 точек отказа. Открыл недавно AS-картину своего же парка — и обнаружил, что из 10 узлов у меня реально 4 разных автономных системы. 7 из 10 probe сидят на одном и том же AS209847.

Ниже расскажу о том, как сейчас выглядит сеть, какие провайдеры реально стоят, как я измерял AS-разнесённость, и что я планирую с этим делать.

В конце таблица с IP-адресами всех узлов и их AS — повторить расклад на своём проекте можно за вечер.

Что не так с моими 10 регионами

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

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

Два года назад я столкнулся с бедой, избавление от которой сейчас ищут многие офисные работники и айтишники - техношея или text neck. Хруст в шее, сутулость, проблемы со спиной и осанкой. 

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

Сегодня расскажу о том, как моя личная боль в итоге привела к созданию семейного проекта и курсов «Скорой помощи» для IT-специалистов.

Под катом - ссылки на первые статьи, статистика запуска пилотной версии курсов, выводы и результаты.

Читать далее

Как я сделал Telegram-канал о налогах на 5960 подписчиков без рекламы

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

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

И, главное, подвести итог было ли всё это оправдано и стоит ли развивать свой телеграм-канал схожим способом.

Читать далее
1
23 ...