Дебаж 🪲 с ноги 🦶
368 subscribers
262 photos
47 videos
2 files
172 links
🪲Дебажу код,🐞отлаживаю жизнь
Download Telegram
Сегодня традиционно пробежал Гонку Героев! В этот раз в компании создателя проекта «Масштаб», который в свое время и втянул меня во все эти side-проекты. Кстати, у ребят из «Масштаба» всё отлично, сейчас они активно работают с «Автодором». Сама гонка прошла максимально круто: было море грязи и драйва. Вот пара фоток!

#лайф

Дебаж 🐞с ноги 🦶
🔥51🥰1
React-приложение и SEO: как я решил проблему индексации практически бесплатно

Сейчас у меня в активной разработке проект The Signal — это платформа с редакторскими новостями для снижения тревожности (как минимум у меня). Ниша «новости» сложная и высококонкурентная, поэтому тут критически важно, чтобы сайт хорошо индексировался поисковиками.

Но The Signal - это React-SPA (Single Page Application). Проблема SPA в том, что поисковые роботы (особенно Яндекс) плохо переваривают динамический JS-контент. Им подавай готовый HTML, иначе в поиск страница может просто не попасть или попадет криво.

Поднимать полноценный SSR (Server-Side Rendering) было долго, поэтому я нашел хак: индексировать статику на субдомене. То есть основное приложение живет своей жизнью, а статьи публикуются на дополнительный сайт-витрину, который уже легко съедается Google и Yandex.

Как сделать это за копейки
Я использую Yandex Cloud S3 (за хранение HTML и трафик поисковиков там набегают сущие рубли), но подойдет любой провайдер. Инструкция:

Создаем бакет и называем его как наш новый субдомен: у меня это digest.the-signal.ru.

В настройках бакета включаем «Веб-сайт хостинг».

Идем туда, где заводили домен, и создаем CNAME-запись: направляем digest.the-signal.ru на digest.the-signal.ru.website.yandexcloud.net.

Возвращаемся в Yandex Cloud, идем в Certificate Manager и добавляем бесплатный сертификат Let's Encrypt.

Подтверждаем права на домен. Для этого нужно положить специальный файл-ключ от Let's Encrypt в скрытую папку .well-known/acme-challenge/ в нашем бакете. Так сервис по урлу проверит, что домен ваш. Подробнее о том, как вообще работает валидация и подключение SSL (на примере Nginx), я писал в своей статье на Хабре.

Переходим в настройки бакета -> Безопасность -> HTTPS и выбираем созданный сертификат.

Любыми мыслимыми и немыслимыми способами (руками, скриптами, CI/CD) закидываем сгенерированные HTML-странички в бакет.

Не забываем добавить sitemap.xml и robots.txt для поисковиков.

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

👍 - интересное решение, забираю
💩 - это костыль, который сломается

#тек

🫥 Дебаж 🐞с ноги 🦶
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🤔1
Мой главный вывод о любых маркетплейсах и сторах: если бизнес завязан на чужую площадку, это больше не твой бизнес.
Сегодня у миллионы установок и стабильный доход, а завтра приду удаляют по щелчку пальцев, и ничего не можешь с этим сделать. Платформа всегда диктует свои условия. Если нет независимых каналов связи с пользователями, проект просто находится в заложниках у корпораций.

#толки

🫥 Дебаж 🐞с ноги 🦶
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3💯2
Отцовская тревога

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

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

В России тренд точно такой же. Вакансий для джунов стало на 40% меньше, чем два года назад. На одну стартовую позицию сейчас 19 резюме (против 2,5 на место сеньора). А до живого эйчара доходит в лучшем случае каждый десятый (остальных безжалостно отсеивает ИИ-фильтр еще до человека).

Я испытываю из-за этого сильную тревогу по двум причинам:

1)Вкатиться с нуля будет почти нереально. Устроиться начинающему специалисту становится настолько сложно, что нужно либо с пеленок готовить связи (а я этого не умею), либо делать IT семейным бизнесом, чтобы брать детей к себе на стажировку.

2)Глобальный баг в системе. Бизнес отказывается от новичков, потому что ИИ дешевле, и компании не хотят брать на себя социальную нагрузку по менторству. Но опытные спецы не вечны!

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

Лучший карьерный совет - это родиться на десять лет раньше. И как всегда с детьми: проще уже было.

Что думаете делать с этим багом в матрице? Учить детей кодить, надеясь, что они пробьются через ИИ-мясорубку, или отправлять их учиться работать руками, куда алгоритмы не дотянутся?

👍 - учится работать руками, куда алгоритмы не дотянутся
🔥 - делаю IT семейным бизнесом
🤔 - ИИ скоро сам станет сеньором, расходимся

💩 - ИИ дороже чем джун, не переживаем

🫥Дебаж 🐞с ноги 🦶

#толки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3🔥2
Заработал худи за новость, которую даже не искал, или как я перестал думскроллить ТГ

Вчера закинул в рабочий чат dev security инфу про свежую уязвимость в Argo. Коллеги так оценили оперативность, что пообещали подогнать корпоративный худак. Самое смешное, что я эту новость не выискивал (я вообще почти перестал читать Telegram-каналы).

Всё потому, что мы с командой The Signal (я их сейчас консультирую) наконец-то выкатили проект в продакшен.

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

Проект уже живет своей жизнью: мы запустили на лендос первый трафик с Яндекс.Директа (кстати, про то, как мы строим воронку и как конвертит экран регистрации, расскажу в следующих постах ).

Из свежего внутри самого приложения: мы добавили пару крутых дайджестов:

🤖 Кибербез (InfoSec) Daily

JVM Backend

Приглашаю вас затестить: ставьте PWA, подписывайтесь на даджесты и перестаньте сливать часы на думскроллинг app.the-signal.ru.

И главное: у меня к вам вопрос. Какие еще около-айтишные дайджесты нам добавить? Пишите в комменты свой стек, интересы или любимые каналы.

Дебаж 🐞с ноги 🦶

#bip #signal
👍5🔥1
Пока все вокруг считают токены и скупают GPU, Microsoft решила проблему тяжелых нейросетей технологией из СССР. Серьезно.

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

🎥 Смотреть тут: [Ссылка на YouTube]
🔥3
Дебаж 🪲 с ноги 🦶
🎉 Внимание: розыгрыш проекта! В канале я часто делюсь тем, что делаю ставку на стратегию портфеля продуктов и вкладываю время в разные идеи. В какой-то момент я пришел к важному выводу: нужно делать то, чем пользуешься сам. В моем портфеле лежит проект,…
Итоги розыгрыша Photo Math!

Всего в боте зарегистрировалось 9 человек. Спасибо всем за участие, вы крутые, а конкуренция за готовый бизнес получилась очень тёплой и ламповой.

Новый владелец Chrome-расширения со всеми потрохами - счастливчик с ID 8616589880.

Скоро приду в личные сообщения, всё передам, покажу и расскажу.

Едем дальше 🪲🦶
🍾6
Написал, как настроил наблюдаемость для своего self-hosted Supabase.

Собрал метрики хоста, PostgreSQL и health-check’ов в VictoriaMetrics, а логи контейнеров и Edge Functions в VictoriaLogs. Всё это смотрю через Grafana.

Сначала логи отправлял по HTTP через Edge Function-адаптер. Потом убрал лишний хоп и перенёс pipeline в штатный Vector: он читает docker-логи, нормализует их через VRL и отправляет батчами на отдельный сервер мониторинга.

Внутри статьи оставил реальные примеры docker-compose, scrape.yml, vector.yml, Nginx-конфиг с IP allowlist.

Ссылка: тык

#тек

Дебаж 🐞с ноги 🦶
👍3
Как я превратил open-source аналог NotebookLM в desktop-приложение для macOS

Недавно я рассказывал про хакатон, где мы пилили аналог NotebookLM для корпоратов (и, кстати, выиграли его). После этого мне захотелось принести эту идею домой.

Если вы вдруг пропустили этот хайп: NotebookLM - это гугловский сервис, куда ты закидываешь свои PDF, заметки или ссылки, и нейронка превращается в эксперта конкретно по твоим файлам. Можно чатиться со своими доками, вытягивать инсайты и даже генерить из сухих текстов аудио-подкасты. Надеюсь, кстати, что благодаря этой апке на Яндекс Музыке и VK теперь будут больше выпусками моих выпусков.

Open Notebook - это отличный open-source клон этой штуки. Это особенно актуально, учитывая, что с доступом к гугловскому оригиналу из РФ сейчас та ещё возня. К тому же мне хотелось забрать этот инструмент себе, чтобы скармливать доки локально и не сливать данные в чужие облака. (+ на русском не делает подкасты).

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

Поэтому я психанул, форкнул Open Notebook и упаковал весь их web/Docker-зоопарк в одно нативное macOS-приложение. Цель была простая: скачал .dmg, перетащил в Applications, вставил API-ключ и всё работает.

Что под капотом и как это работает
Приложение полностью privacy-first. Документы, настройки и встроенная векторная база (SurrealDB) лежат локально на маке. Парсить можно PDF, аудио, видео, сайты, а AI-провайдера выбираешь сам: хоть OpenAI или Anthropic, хоть локальную Ollama.

Звучит просто, но скрестить это всё оказалось больно. Исходник: Next.js, FastAPI и фоновые воркеры на Python. Я завернул интерфейс в Electron, а Python-часть собрал через PyInstaller.

Самым большим челленджем стали PDF. Парсер Docling тянет за собой Torch и нейромодели, из-за чего билд приложения раздувался до неприличия. В итоге я разделил поставку: в базе идёт лёгкий воркер, а тяжёлый OCR-движок юзер скачивает прямо из настроек аппки только если он реально нужен.

Ну и отдельный кайф desktop-разработки: заставить Electron корректно убивать дочерние Python-процессы при закрытии окна, чтобы они не висели в памяти призраками.

Можно качать, щупать и форкать:
💻 Репозиторий: https://github.com/eryabyshev/open-notebook-app
📦 Релизы (.dmg): https://github.com/eryabyshev/open-notebook-app/releases

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

В планах на будущее: допилить сборки под Windows и Linux.

А пока у меня остался один незакрытый гештальт с macOS: сборка не подписана сертификатом Apple, поэтому при первом запуске мак ругается и просит разрешить аппку в Privacy & Security.

Дебаж 🐞с ноги 🦶

#пробую
👍4🔥21
Я несколько месяцев искал идеальный «бабушкофон» , куда можно поставить Telegram, VPN и аутентификаторы. Спойлер: покупать ничего не пришлось.

Сейчас мой сетап состоит из двух девайсов. Первый - iPhone 13 mini (основная звонилка и аутентификаторы). Второй - Android (рабочие/развлекательные чаты и банки). Но внимание всё равно постоянно утекает.

Я загорелся идеей купить кнопочный телефон, чтобы свести экранное время к минимуму. Но кнопочник с Android - это костыль. Телегу туда поставить сложно, затащить приложение из трех букв для обхода блокировок - тот еще квест. Да и совсем без смарта обойтись нереально, потому что есть жесткие ограничения:
💬 Telegram: для личной коммуникации.
🔐 Аутентификаторы: без них просто не пускает в корпоративную сеть на работе.
📷 Камера: отсканировать QR-код или сфоткать документ.
🚇 База в дороге: иногда нужно открыть банковское приложение в метро или построить маршрут в навигаторе.

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

Но кто ищет, тот всегда найдет. Оказалось, что в iOS есть встроенная киллер-фича - «Упрощённый доступ» (Assistive Access).

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

Мой iPhone 13 mini буквально превратился в тот самый «бабушкофон». И работает это гениально: в него просто не хочется лишний раз залезать. Во-первых, там нет никаких отвлекающих аппок. Во-вторых, во всех приложениях снизу висит гигантская кнопка «НАЗАД». Она мешает юзать клавиатуру, делает интерфейс топорным и физически отбивает желание бездумно скроллить.

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

А как вы боретесь с думскроллингом? Покупаете кнопочные звонилки, ставите лимиты экранного времени (которые потом сами же скипаете) или забили?

👍 - упрощенный режим
🔥 - старая nokia

Дебаж 🐞с ноги 🦶

#толки
👍2
Наивно полагал, что OAuth Яндекса защитит меня от заявлений на обработку персональных данных. Типа, я же не собираю паспорта, просто прикрутил удобную авторизацию.

Оказалось, показалось. РКН считает персональными данными даже обычный email, и за отсутствие бумажки можно влететь на штраф до 300к. Даже если это просто условный nagibator99@mail.ru, прилетевший по API из ВК.

Сегодня убил 40 минут, заполняя ту самую форму регистрации оператора ПД. Если бы не ChatGPT, сдался бы на втором шаге. Там реально дикие вопросы в духе: «Укажите правовое основание обработки и категории субъектов...» Какое основание, алло? Я просто кнопку «Войти» повесил!

Но был один момент, который сломал мне мозг: за все 40 минут мата и заполнения полей меня ни разу не спросили, на каком конкретно сайте я собираю email'ы.

А потом я понял логику. РКН вообще плевать на мои эндпоинты, домены и формочки на фронтенде.

Статус оператора ПД для государства - это синглтон, который вешается на инстанс моего ИП. Как только в мою базу падает хоть один юзерский email, я получаю этот статус глобально. То есть я регистрирую не конкретный сайт, а самого себя как субъекта. Получается, что одна эта мучительная регистрация теперь автоматически покрывает все мои текущие и будущие пет-прожекты.

👍 - бегу заполнять форму
🔥 - пет-проект это рок-н-ролл

#пробую



Дебаж 🐞с ноги 🦶
👍3🔥3
За 2025 год в США появилось около 441 тысячи новых долларовых миллионеров. Это почти половина всего мирового прироста и больше чем в десять раз превышает результат Великобритании, занявшей второе место. Россия, кстати, попала в первую десятку с приростом примерно в 22 тысячи человек.

В США сейчас живёт больше 40% всех долларовых миллионеров мира. Примерно каждый пятнадцатый житель страны формально миллионер. Данные впечатляют, хотя значительная часть этого результата связана со стоимостью финансовых активов, а не с 441 тысячей новых гаражных стартапов.

Но мой личный вывод проще: в англоязычном интернете очень много денег и внимания. Пора перестать смотреть на него как на побочный канал.

Я уже веду X на английском, несколько раз заходил в Reddit, а теперь завёл аккаунты в Medium и Substack. И сразу столкнулся с неожиданной проблемой.

«Дебаж с ноги» невозможно нормально перевести.

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

Пока выбираю из трёх вариантов:

-Brute Force Debugging
-Shotgun Debugging
-Kick-the-Door-In Debugging
-Boot Force Debugging
Первый кажется самым понятным. Второй звучит весело, но слегка отдаёт хаотичным тыканьем. Третий ближе всего к оригиналу, но похож на название статьи, а не канала. Какой вариант вы бы выбрали? Или оставили бы Debug Leg и вообще ничего не переводили?

#пробую

Дебаж 🐞с ноги 🦶