ХРОНИКИ ПИКИРУЮЩЕГО КОМПИЛЯТОРА: КАК Я НЕДЕЛЮ СТРОИЛ «ЦИФРОВОЙ БУНКЕР», УБИЛ БАТАРЕЮ ЗА НОЧЬ И СТАЛ САМ СЕБЕ МАГАЗИНОМ

Давайте сразу расставим точки над «i». Я системный администратор. Мой мир — это SSH, конфиги, логи и скрипты. Я не мобильный разработчик. Я считаю, что если проблему нельзя решить перезагрузкой сервиса, то это плохая проблема.

Но неделю назад я совершил ошибку. Я захотел послушать радио.

Я открыл магазин приложений. И увидел там не софт, а парад цифровых извращений.

  • Приложение А: Весит 100 Мб.
  • Приложение Б: Требует доступ к контактам и микрофону (зачем?!).
  • Приложение В: Показывает рекламу букмекерской конторы с громкостью взлетающего истребителя.

Я психанул. Я сказал: «Я сделаю свое. Честное. Без всего этого дерьма».

Я думал, это займет вечер. Это заняло неделю, которая закончилась тем, что я орал на сервер, а сервер молча грел атмосферу в дата-центре.

ГЛАВА 1. CI/CD ДЛЯ БЕДНЫХ (ИЛИ КАК МЫ СОБИРАЛИ БИЛДЫ)

У меня нет мощного Макбука. У меня нет Android Studio. И желания ставить этого монстра на домашний ПК тоже нет.

Зато у меня есть Выделенный сервер. Боевой. На нем живет сайт и радио. И я решил организовать «взрослый» процесс разработки, но с поправкой на безумие.

Схема выглядела так:

  1. Я пишу код на домашнем компьютере в текстовом редакторе.
  2. Одной командой заливаю исходники на сервер (rsync — наше всё).
  3. Захожу по SSH на сервер и говорю: «Фас!» (запускаю Gradle).
  4. Сервер (Xeon E3) начинает выть кулерами, перемалывая Java и Kotlin.
  5. Через минуту он выплевывает APK-файл или (чаще) список ошибок на три экрана.

Это было похоже на управление марсоходом. Ты отправляешь команды, ждешь, получаешь результат, материшься, правишь, отправляешь снова. Сотни циклов. «Билд 1», «Билд 2″… «Билд 666_final_fix_pleeease».

ГЛАВА 2. НОЧЬ УБИЙСТВА БАТАРЕИ (С 3 НА 4 ФЕВРАЛЯ)

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

И тут во мне проснулся «эффективный менеджер». Внутренний голос прошептал: «Игорь, а давай выводить название песни в шторку уведомлений? Как у взрослых! Люди хотят знать, кто поет!».

О, это была ловушка.

Я написал сервис, который каждые 15 секунд долбился на мой сервер, забирал метаданные (название трека) и обновлял плеер. С горем пополам, к часу ночи 4 февраля я это скомпилировал. Дебаг-версия. Названия треков толком не показывались, но сервис крутился.

Я решил провести «полевой тест». Отключил телефон от зарядки, оставил приложение висеть в фоне и в 01:00 лег спать. Заряд был 100%.

Утро 4 февраля. 08:00.

Я просыпаюсь. Беру телефон. Он теплый. Я включаю озвучку экрана…

ЗАРЯД: 38%.

Мое «улучшение» за ночь сожрало 62% аккумулятора! Пока я спал, этот маленький цифровой упырь в фоне не давал телефону «уснуть», дергал сеть, будил процессор и методично уничтожал батарею ради функции, которая даже толком не работала.

Меня прошиб холодный пот. Я понял: если я выложу ЭТО людям, меня найдут и побьют пауэрбанками.

Я прыгнул за комп. Открыл код. Выделил блок с метаданными. Нажал DELETE. Вырезал к чертям. Лучше пусть там будет просто надпись «PHOENIX RADIO», чем мертвый телефон к обеду.

Так родился Билд 7. Легкий. Холодный. Живучий.

ГЛАВА 3. RUSTORE И «НЕПРАВИЛЬНАЯ ОРИЕНТАЦИЯ»

Днем 4 февраля, выпив литр кофе, я решил проявить патриотизм. «Залью приложение в RuStore! Поддержу отечественное!».

Важно: Я параноик. Поэтому еще в понедельник я написал свой собственный модуль обновлений. Приложение уже умело само ходить на мой сервер, проверять версию и обновляться. RuStore мне был нужен чисто «для галочки».

Загрузил. Жду. Через час приходит ответ модератора:

«Приложение отклонено. Причина: Некорректные скриншоты. Скриншоты должны иметь ПРАВИЛЬНУЮ ОРИЕНТАЦИЮ, отображать актуальную механику…»

Я сижу. У меня приложение весит 2 мегабайта. В нем нет вирусов, нет рекламы, нет трекеров. Это чистейший код. А мне говорят: «У вас картинки не той ориентации».

Им не понравилось, что интерфейс черный (Dark Mode!). Им не понравилось, что скриншоты вертикальные. Им нужна «актуальная механика». Какая механика у радио?! Кнопка «ПЛЕЙ»?! Мне что, сфоткать палец на экране?

В этот момент мой патриотизм закончился. Я сказал: «Идите лесом. Я сам себе магазин».

ГЛАВА 4. МАНИФЕСТ ПРИВАТНОСТИ (ПОЧЕМУ ВАМ НУЖНО ЭТО СКАЧАТЬ)

А теперь серьезно. Почему я вообще в это ввязался?

Потому что современные приложения — это шпионы. Когда вы качаете «Фонарик» весом 50 Мб, задайте себе вопрос: что там внутри?

А внутри там:

  • Google Firebase / Analytics: Знает, куда вы нажали, какая у вас модель трусов и уровень заряда.
  • Crashlytics: Отправляет логи (иногда с вашими данными) на сервера в США.
  • Рекламные трекеры: Собирают ваш цифровой профиль, чтобы продать вам кредиты.
  • Геолокация: Они торгуют вашими маршрутами.

ЧТО ВНУТРИ PHOENIX RADIO?

Я ответственно заявляю: Это приложение — цифровая пустота.

  1. ВЕС: 2.2 Мегабайта. Это меньше, чем одна фотка в Инстаграме. Там нет библиотек Facebook, Google или Яндекс. Только движок звука.
  2. СЕТЬ: Приложение делает ровно ДВА запроса. 1) Забрать конфиг. 2) Забрать аудиопоток. Всё. Никаких левых IP-адресов.
  3. РАЗРЕШЕНИЯ: Только «Интернет» и «Фоновая работа». Я не прошу доступ к контактам. Мне плевать, где вы находитесь.
  4. ОБНОВЛЕНИЯ: Суверенитет. Никаких сервисов Google. Приложение тихо проверяет файлик на МОЕМ сервере. Прямой канал: Я -> Вы.

ФИНАЛ. КАЧАЙТЕ, ПОКА НЕ ЗАПРЕТИЛИ

Мы не в Google Play. Мы не в RuStore. Мы в свободном интернете.

Когда вы будете ставить APK, телефон закричит: «Опасно! Неизвестный источник!».

Конечно опасен! Ведь в этом приложении нет слежки от Корпораций! Для них это смертельная угроза.

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

СКАЧАТЬ APK НАПРЯМУЮ (2.2 MB)

👁️ 11

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

один × 1 =

root@phoenix901:~# connect
[×]

Получай дайджест раз в неделю.
Без спама.