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

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

Рад, что код Хаффмана с первого курса профильного университета помогает автору писать отличные статьи!

А что это за место такое, куда нельзя принести libpng?

Устройства из экосистемы Xiaomi Vela. Там приложения пишутся на упрощенном Vue.js, так что libpng может и можно принести, но слинковать с приложением или запустить как-то иначе не получится.

Собрать libpng через Emscripten?

Библиотека fast-png, кажется, решает проблему, но она избыточна и использует классы, которых нет в целевом интерпретаторе.

Так для избавления от классов её можно при помощи Babel обработать или сразу указать Тайпскрипту целевой стандарт es5.

Так уж получилось, что мои познания в JS меньше, чем умение строить велосипеды. В конце концов, эта статья про разбор png, а не про попытки поладить с малознакомой мне платформой на не сильно знакомом мне языке =)

Но ваш комментарий, я, безусловно, приму к сведению. Благодарю!

В данном случае, конечно, самописное решение будет значительно меньше и эффективнее, тем более, что писать его не так долго, но мало ли что понадобится в будущем.

Чел, серьезно? Там ядро имеет либы png в составе, если вот тебе что то нужно по NuttX и HyperOS на IoT, пиши не стесняйся, зачем там вообще кодировать .png, когда там нативный формат всего lvgl изображения. Вообще не проблема интегрировать API хоть в JS движок, хоть в LUA, если совсем уж прям хочется в задний вход залезть.

Вот это поворот.

Я работаю с Mi Smart Band 9, потому что на 4pda какое-то нереальное запустение на тему приложений, только перезаливы с китайских форумов. У самого «семерка», но ей в плавности до «девятки», конечно, далеко. А хочется плавность девятки и софт как на семерке, поэтому потихоньку наскребаю порты легенд.

Насколько я понял, quickapp'ы, которые rpk-приложения, очень ограничены. У них есть набор интерфейсов, но и те как-то через пень-колоду сделаны. Чтение файлов, там, например, не open/read/write/close, а отдельный метод, который по имени файла считывает нужное количество байт с нужного оффсета. Так что побайтовое чтение там вряд ли реализуемо в нормальном понимании этого словосочетания. И такого много, поэтому я хз, как из JS-окружения дёргать что-то внутри ОС и до сего момента были сомнения в том, что это вообще возможно.

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

Я видел «магические» циферблаты, которые могут удалять приложения и с них вышел на ваш репозиторий с EasyFace и lua-скриптами в циферблатах, которые имеют доступ к ОС. Но циферблаты, на мой взгляд — это не то.

Можете более подробно раскрыть мысль про либы png? Это нативные библиотеки и их как-то можно вызывать из JS? Или это какие-то недокументированные JS-библиотеки?

Библиотеки совершенно обычные. Смотрите использование нативных C-библиотек в js.

Первый ответ: https://stackoverflow.com/questions/42532161/call-c-shared-library-api-in-so-lib-from-javascript

Итого, всё уже сделано за вас: https://github.com/flyover/libpng-js

Я так понимаю автор имел в виду без зависимостей и на JS. Ваниль, в простонародье.

Спасибо что хоть кто-то ещё пишет статьи о том как сделать что-то самому.

Кхм, Deflate это прям совсем такая не уникальная тема, что есть ну везде..

Есть.

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