Как стать автором
Обновить

Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности?

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров10K
Всего голосов 71: ↑70 и ↓1+85
Комментарии32

Комментарии 32

Друзья! На девятку для проекта я все же смог накопить, конечно не без помощи читателей. Сейчас у меня есть 90.000 рублей на покупку ржавенького, гнилого карбюраторного "тазика", но хотя-бы на ходу :)

Сейчас активно присматриваю машинку на ходу и с более-менее живым кузовом. Проекту быть!

В следующие несколько недель релизну следующий материал:

  1. О загрузке Android с MicroSD даже когда флэша уже навернулась. Посмотрим, какие чипсеты можно грузить с флэшки и попробуем запилить кастомную программу для выбора ОС в дуалбуте!

  2. Постараюсь выпустить материал с ультрадешевыми ТСД и использованием их в качестве одноплатников.

  3. На днях думал, думал и понял, что под Android 2.x нет толкового браузера даже просто что-то почитать... поэтому из интереса я запилил серверсайд-рендерер страниц с обходом DOM для поиска всех ссылок. Уже сейчас по страницам можно просто ходить, чуть позже добавлю формы - и можно будет, при импорте сессии (капча точно работать не будет), даже на Хабре написать че нить :)

Кстати, рекомендую поглядеть ещё и на ТСД на ведроиде. Многим защищённым телефонам в плане эргономики до них ещё далеко...

  1. про загрузку ведроидофонов/планшетов с microsd (и работу без акб) я копал примерно лет 6 назад, тогда сложилось впечатление что это относительно не сложно на некоторых устройствах и практически невозможно на всех остальных, и тогда устройство ради которого я всё затеял смогло загрузиться с microsd, но тормозило жутко, только загрузка занимала порядка 10 минут что полностью убивала идею использовать полумёртвый смартфон в качестве автомобильного ГУ с функциями навигатора и регистратора. вроде бы проблема тогда была совсем не в производительности флешки, но решить не удалось.

  1. толковый браузер под любую версию любой *nix ос для "просто что-то почитать" есть, и имя ему links

links не могет в стили от слова совсем. А блинк на сервере корректно и html5 с реактом условным отрендерит

не могет в стили от слова совсем

простите

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

Девятки бывают инжекторными с завода)

Ну если что я видел и переделку на инжектор в реале

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

К началу 2010-х годов это стало мейнстримом и ПО стало стремительно пухнуть и более того, каждый программный компонент стал нести с собой компоненты системы, для упрощения жизни пользователя. В итоге каждая программа несёт с собой сотни мегабайт сопутствующего, мертвого, кода. Когда из этих мегабайт используется хорошо если десяток килобайт.

Ну тут не совсем так конечно, в Delphi ещё на заре появления был смартлинкинг - он выбрасывал неиспользуемый код, за исключением частей RTL и базовых пакетов VCL, если последний используется. В те годы даже было "соревнование" - некоторые ребята брали и сами пилили свой минимальный RTL, дабы условная OGL-демка весила пару десятков килобайт :)

В остальном, появление формошлепства - скорее хорошо, нежели плохо. Раньше гуй был занозой в заднице, особенно под виндой с не очень богатым виджет-тулкитом и весьма своеобразным Plain-C способом управления виджетами. Просто кто-то может использовать предоставленный инструментарий эффективно, а кто-то - нет, или просто не хочет :)

Я, лично, как раз со школы (~2012-2013 год) начинал с формошлепства, чтобы потом прийти к самопальному виджет-тулкиту, самопальных фреймворках для игрушек и тому, что пилю все сам!

Кстати, есть и обратный пример: в Java-телефонах очень часто выбрасывали стандартный пакет для реализации UI (lcdui) и пилили свой гуй с отрисовкой в Canvas: lcdui имел кучу огранничений и, что самое обидное, выглядел на всех девайсах по разному и зачастую весьма убого.

В Делфи и тогда и сейчас конечный файл весил не много. Даже сейчас, если не использовать кроссплатформу со своей графикой, то конечный файл будет весить +-3мб. И с разрастанием кода уже пухнуть не будет.

В Делфи с давних времен "мертвый" код выпиливается при компиляции. Это легко можно увидеть, если поставить точку останову внутрь функции, которую никто не использует (там будет "крестик")

Как .NET разработчик вставлю свои 5 копеек:

netcoreapp2.2

уже довольно давно есть .NET 6.0 LTS, с каждым релизом платформа оптимизируется и хорошеет, если нет необходимости поддерживать старые ОС на сервере то имхо стоит обновиться.

dotnet tdsrv.dll

не надо так, перезагрузка или вылет приложения погасит сервер, лучше systemd unit сделать Запуск приложений на .NET в качестве службы на Linux-системе с systemd / Хабр (habr.com)

программа начнёт слушать порт 13377 на всех сетевых интерфейсах

так тоже не надо, kestrel лучше вешать на локалхост, а запросы транслировать nginx в качестве reverse proxy

P.S. для совсем красоты можно все упаковать в докер, и запускать docker compose два контейнера: приложение и nginx.

Привет :) Со всем согласен, со временем допилю (чуть время поджимало). Касательно версии дотнета - я вообще не редко и на .NET 4.0-4.5 таргетюсь))

так тоже не надо, kestrel лучше вешать на локалхост, а запросы транслировать nginx в качестве reverse proxy

Почему?

Удобнее работать с TLS, доменами, можно разместить несколько приложений на одном порту в поддоменах или путях, можно управлять rate limiting, load balancing, кешированием и т.п.

Очень интересная статья!
Она станет еще лучше, если добавить ссылки на предыдущие части - а то я часть 1, 2 нашел, а часть 3 нет...

См в комментах)

AuroraOS/Sailfish можно прекрасно погонять с SDK в эмуле. Ну или купить за 15000 - новую патию привезли. Вот в тестеры наверное уже не возьмут

Хочу подержать физический девайс. 15к так просто отстегнутб не могу.

на известном форуме люди так хотят новый софт что даже готовы предоставить девайс

Приятно видеть, что техника ещё работает и получает вторую жизнь. Спасибо!

Kutegram безо всяких прокси-серверов и прочих костылей от автора статьи - существует. И для Android, и для Windows Phone, и для Symbian. У чела своя реализация TDLib. На гитхабе всё есть.
Да и браузерная Stella Web существует уже пару лет как. Автор упорно делает вид, что не слышал про эти варианты.
Тем временем его ютуб клиент, как я читал на форумах, уже умер и крашится.

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

исходники закрыты, на оффсайте сертификат протух.. а точно существует?

Блин, офигенно! Это же с таким прокси сервером можно на что угодно портировать Телегу! Огромную работу ты проделал, красавчик!!!

а подскажите немудрый подходящий VDS?

TimeWeb.Cloud))

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

Хочу себе такой продукт "под ключ" :)

Исходники открыты - можете модифицировать как нужно.

А вот на игры не надо - 2010-2011 - золотые годы мобильного гейминга)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий