Рубрика «kotlin»

Всем привет, меня зовут Саша, я нашёл себя в backend-разработке в возрасте за 30. После 6 лет коммерческой разработки у меня, наконец, хватило всего, чтобы дотолкать свой пет-проект до продакшена. Я сделал Telegram-бота для ведения бюджета за пару месяцев. Мне было интересно сделать продукт полезный себе и другим, руководствоваться подходом business first и использовать любые инструменты для сокращения time-to-market. Читайте что из этого получилось и что нет.

Вступление

У меня экономическое образование и я веду бюджет около 10 летЧитать полностью »

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

Если коротко: пагинация — это когда вы не грузите 100 000 товаров из каталога одним запросом, а показываете их страницами по 20–50 штук и подгружаете следующую порцию, когда пользователь домотал до конца.

Звучит как задача на полдня. На практике — по-разному.

Я пишу мобильные приложения уже давно, и каждый раз, когда в новом проекте появлялась пагинация, рядом с ней через месяц-другой появлялся один и тот же набор багов и ad-hoc-решений. Флаги isLoadingNextPage, isLoadingPrevious, isRefreshing, isEmpty, hasError, hasNextPageЧитать полностью »

Представьте: вы подключились к рабочему VPN – нужно зайти на корпоративный сервер или проверить доступность сервиса из другой юрисдикции. Потом, не выключая его, открыли приложение популярного маркетплейса – проверить, прибыл ли в пункт выдачи корм для почтовых воробьев. В этот момент приложение тихо просканировало localhost, нашло SOCKS5-порт вашего VPN-клиента, отправило через него запрос и узнало выходной IP вашего сервера. Завтра этот IP окажется в блэклисте. Сервер, за который вы или ваша компания платите $5 в месяц, вдруг внезапно деградировал. А вы даже не узнаете, кто вас сдал.

Читать полностью »

Если ты разрабатываешь под Android и нужно сохранять информацию на телефоне, без базы данных не обойтись. В системе есть встроенная SQLite — бесплатно и надёжно, но есть минус: чтобы с ней работать, приходится писать SQL-запросы вручную, в коде разбирать объект Cursor и не забывать закрывать соединения. Я сам сталкивался с тем, что из-за такой возни появляются баги и тратится много времени.

Читать полностью »

Проблема

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

Но вот реальность:

  • Todoist — бесплатно только 5 проектов, дальше ₽359/мес

  • TickTick — помодоро и календарь только в Premium за ₽249/мес

  • Money Manager — реклама на каждом экране, ₽199 за отключение

  • Forest — ₽299 за приложение

Итого: чтобы покрыть задачи + бюджет + таймер, нужно либо 3-4 приложения, либо платить ~₽500-800/мес.

Мне показалось это абсурдным. И я решил сделать своё.

Решение: Todo Budget

Одно приложение, в котором есть:

TL;DR: Я хотел просто сделать JSON с хадисами. В итоге написал свой парсер для PDF, боролся с Gradle и доменами в Maven Central, ломал генерацию картинок в Satori и оптимизировал Fuzzy Search с 5 секунд до 2.7 секунд с помощью AI. Это история о том, как пет-проект превратился в экосистемо на NestJS, Prisma и Redis.


Введение: "Всё должно было быть просто"

Идея казалась элементарной: сделать удобное API для хадисов — изречений Пророка Мухаммада (мир ему). Казалось бы, 2026 год на дворе, всё уже должно быть оцифровано, лежать на GitHub в красивом JSON, бери и пользуйся.

Я начал гуглить. Реальность ударила сразу:

Сравнение рейтинга TIOBE и вакансий на HH - 1

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

Идея статьи

Читать полностью »

1. Введение: Состояния под контролем. Что делать с событиями?

Представьте, что вы уже навели порядок в управлении состоянием вашего экрана. Вместо россыпи взаимозависимых булевых флагов и nullable-полей вы используете единый sealed interface UiState. Каждое возможное состояние — LoadingSuccessErrorЧитать полностью »

TL;DR

Если вас заставляют делать N запросов к локальному DeepSeek в день — эта статья про то, как получать от них реальную пользу. Покажу, как с помощью Roo Code разобраться в чужом модульном Android-проекте и написать Kaspresso-тесты за 20 минут вместо нескольких часов. С конкретными промптами и решением проблемы «невидимых» id элементов.


Проблема, о которой не говорят вслух

Многие компании сейчас внедряют AI — кто добровольно, кто принудительно. Разворачивают локальный DeepSeek, устанавливают нормы: столько-то запросов в день, столько-то в месяц. Метрики есть, а польза? 🤔

Знакомая ситуация?


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js