?

Log in

No account? Create an account

Previous 10

Nov. 22nd, 2019

Главные вопросы, напоминание что это и зачем

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

Что же я такое делаю? Давайте разбираться.

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

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

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

Это также хороший инструмент для управления различными DIY устройствами, например сейчас много китайщины с ужасными приложениями, где не продумано почти ничего, только как включить, выключить и задать параметр включения. Мой проект позволяет элементарно просто управлять такими железками, собирать с них данные, описывать процессы, информировать, и многое другое. Т.е. выступает аналогом приложения от вендроа но с гораздо большим и функционалом при этом с возможностью легко объединять большое количество устройств. Вот тут я хочу, в будущем, предложить свое решение китайским производителям как универсальное решение, в том числе и для их устройств.

Единственное что нужно сделать - написать Java библиотеку на базе моего интерфейса(кем угодно, в том числе и я), проверить ее код, добавить в БД новое устройство(автоматически обновляется и на клиенте) и вложить в общий дистрибутив(я или компания). Также заложен функционал с пулом идентификаторов устройств для непосредственного внедрения библиотек устройств локально(без участия кого-либо со стороны кроме самого разработчика устройства)

Дополнение:
Уже несколько лет я применяю свое решение у себя дома.
Я управляю светом почти во всех комнатах, измеряю температуру и влажность, управляю другими электроприборами, при этом я не использую ни чужие устройства ни чужое ПО, но могу, они у меня есть. Я смотрю графики, получаю уведомления управляю сообщениями через тот-же телеграм, жена постоянно задает яркость диммеру в зале просто кидая фразы боту типа '35' или '320'(Зал, яркость 20%), есть постоянный контроль входной двери с звуковым сопровождением и сообщениями на мобильные устройства. И все это не ново и уже никого не удивляет - любой настырный ардуинщик может сделать тоже самое. Главное отличие в том, что когда я это все настраивал, дополнял, изменял условия и многое другое - я ни написал ни одной строчки кода, при этом имея очень богатый функционал. Все что я сделал - при желании сможет повторить моя супруга или подросток просто ознакомившись с роликами на ютубе(которых пока нет, но обязательно будут).

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

Nov. 15th, 2019

Хлебные крошки системотехника, watchdog под armbian

Я тут немного воюю с ресурсами nanopi с 256MB RAM, хочу, чтобы там себя хорошо чувствовала java8, при этом swap изначально там очень маленький, что-то около 200MB.
А сама JVM любит кушать 150MB минимум(без кучи), не хватат в общем.

Пока сделал другую, полезную штуку, просто напросто использую watchdog.
Я без понятия где оно еще поддерживается(ну не на виндовс же мне ориентироваться в конце-то концов).
Виндовс пользователи вообще уже должны понимать, что они сами по себе, и для них(как для не нормальных людей) ничего нигде бесплатно не делается, только за деньги.

Взаимодействие проще некуда:
Я добавляю параметр при запуске java контрллера -w /dev/watchdog.
А дальше работает мой контроллер, он инициирует watchdog и каждые 5 секунд обнуляет его, при завершении процесса watchgog отключается.
Таким образом, произойдет полный перезапуск железки, если упадет jvm или зависнет linux(ядро).

Watchdog кормлю '1' для инициализации, '.' для сброса счетчика и 'V' для отключения.

Новый функционал, сценарии.

Ничего особенного.

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

А еще ввел возможность запускать сценарии из сценария другого контроллера (возможность влиять на работу контроллера из другого контроллера), мелочь, но приятно.

Nov. 10th, 2019

Новая ОС, не Попова.

Вы хорошо знаете rtos?

Я ее не знаю. Это правда, что она писана на си и нет решения на ассемблере?
Вообще мне по хрену, и я не Денис Попов.

Я просто не люблю зависеть от чужих решений.
Поэтому думаю, что имею полное право, в виде своего хобби, запилить ОС на ассемблере, скажем для ATMega88.

Скажу, что такое уже реализовано в коммерческом проекте.
Хочу сделать подобное, даже чем-то лучше.

Давно хочу, но пожалуй именно в этом я вижу свой стимул на текущий момент.
При этом уже есть наработки.
Сейчас ос поддерживает до 6 параллельно выполняющихся задач и еще 4 процедуры (не забываем про объем памяти - 1кБ на 16мГц максимум).

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

Все просто, 8-ми битный микроконтроллер с малым объемом ресурсов и ОС для проектов на чистом ассемблере.

P.S. Сегодня обычный день, не мой день рождения, но не обычная ночь, и мой дом до сих пор безъядерная зона. Однако GluonHQ уже не мечта в далеком будущем, а реальность, реальность с проектом реализованным на 90%, осталось просто мелочь. Интересно, как скоро я смогу пользоваться своей ос?

Oct. 18th, 2019

JSON зло

Потоковый парсинг нескольких десятков килобайт JSON на мини компьютере отработал за несколько десятков секунд в режиме процессора OnDemand.

Недавно я задавался вопросом, почему на старом смартфоне(с андроидом 4.4) происходят постоянные сетевые сбои - дело просто в таймауте, который у меня выставлен на 5 секунд.
Просто один только парсинг json'а сжирает гораздо больше времени...

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

Я имею возможность, в небольшой степени, менять функционал проекта, пока проект не запущен в производство, чем и пользуюсь.

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

Sep. 29th, 2019

Выбираю Gluon, нет не клей.

Сегодня не совсем обычный день ночь, и я объявляю свой дом безъядерной зоной начало разработки клиента на основе той же JavaFX в купе продуктов компании Gluon https://gluonhq.com/.

Давно к ним приглядывался, но раньше не было стимула, теперь он есть в виде Huawei P Smart 2019 https://consumer.huawei.com/ru/phones/p-smart-2019/. Да, я не люблю Андроид, но еще больше я не люблю современные поделия до которых опустился Apple, тем более за огромную сумму.

Если вкратце, эти ребята обещают, что единожды написанный код будет работать на десктопах, Android устройствах и IOS устрйоствах без какого либо веба.  Здорово да? Мои давние тесты для десктопа и Android показали, что это вполне реально. Правда для Apple устройств нужен Mac. Может быть в будущем он у меня будет, а может мы в конце концов наберем команду и Mac будет у другого разработчика, что тоже не плохо.

Итак,  у меня есть библиотека со всем функционалом необходимым клиенту, необходимо обновить UI - вью и контроллеры. И главное - у меня есть ровно та же среда разработки, тот-же язык и те же инструменты(как например SceneBuilder). Из изменений только дополнительный плагин Gluon и немного больше требований по коду.

Я серьезно считаю, что это просто бомба. Но почему же тогда оракллл закрыл бесплатную лицензию для их бинарников JDK8 и вырезал JavaFX в свежих версиях Java? Почему основные разработчики оракл вводят всякие ламбда хулямбда но не расширяют JavaFX на все платформы? Почему при оракл JavaFX не развивался никак существенно? Хм, лично я считаю потому, что такие компании как оракл, мелкопакостные и гугел никогда не ставили себе цель сделать нашу жизнь лучше, в отличии от Sun Microsystems.

P.S. Вот что интересно, большинство ПО которое я использую в работе создало Sun Microsystems.

Update: Вот так выглядит новый клиент(на gluon), видно разницу?



Все основное реализовано, осталось допилить мелочевку.

Sep. 20th, 2019

Java контроллер на Android

Сегодня прошли первые успешные запуски контроллера под Андроидом.

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

По сути, теперь контроллер можно развернуть как на любом компьютере так и на любом Андроид устройстве. Понятно, что будут исключения, но на мой взгляд, многие проблемы будут решены. Сейчас я только приступаю к обкатке проекта на различных версиях Андроида. На данный момент Java контроллер запущен и отлично себя чувствует на DEXP Ixion M450 с Android 5.1, под рукой также есть один из первых Huawei с 4-ым Андроидом, позже обкатаю и на нем.

Стоит также сказать, что шел я достаточно долго к этому. Изначально проект контроллера создавался под JRE7, и имел код который может быть выполнен только на PC. Теперь весь код адаптирован под JRE6(необходимо для 4-го Android'а) ну и большая часть кода выведена в отдельную библиотеку без какой-либо привязки к ОС. Также были отдельно скомпилированы все библиотеки устройств, шлюзов и сервисов под Андроид (формат .dex)

И да, я знаю, что Андроид полон сюрпризов, и он потребует много времени. К примеру я потратил более суток, но так и не смог заставить работать корректно сеть с использованием архивирования потока Inflater/Deflater. В эмуляторе Nexus 4 все отлично а вот на Ixion M450 попросту через секунду помирает установленное соединение.
Пришлось поддерживать два типа соединения с сжатием и без.

Пы.Сы. Немного удивлен, я забыл сообщить, что у меня также недавно реализован облачный контроллер. Каждый проект может иметь один облачный контроллер, который выполняется на моем сервере(в облаке). Потом чуть подробнее отпишусь.

Обновление:
Java контроллер также успешно запустился на Huawei U8860 Honor с Android 4.0.3, думал его разобрать да выкинуть, но видимо нет, еще поработает в виде контроллера.

Sep. 13th, 2019

Техно парк ДВФУ

Подсказывают, что официально мы уже там.

Осталось решить несколько проблем, к примеру завтра мне нужно составить список специализаций для студентов, а вообще по проекту он обширен.

А еще говорят, что ДВФУ закрыла свою инженерную школу- невыгодно говорят. Но это якобы сплетни.

Java Json + Deflater/Inflater

Не совсем новый функционал, но теперь это рабочий функционал.

Здесь стоит рассказать о вещах лежащих в основе.
Если рассмотреть тот-же радиус протокол(ну понятно такого протокола нет, есть куча rfc), то мы увидим, что раньше передаваемые данные старались сделать максимально компактными, особенно в вопросах заголовков, посмотрите в тот-же ipv4 протокол(не забываем про флаг security rfc3514, шутка про голубей, лично по мне, меркнет по сравнению с этим rfc).

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

Ну а старым пердунам куда деваться? Пока опишешь, перепишешь все поля и их содержимое в статическую структуру - так и кони двинуть можно, не молоды ведь. Остается пользоваться более простыми вещами, пусть и расточительными.
Вот и я, вырвав несколько седых волос, решил не заморачиваться и использовать текстовый формат передачи данных - JSON. Но! первое что я сделал для оптимизации - вместо названий полей стал использовать численные идентификаторы в шестнадцатеричном формате, затем обернул все зиппом используя Dedlater и Inflater. В итоге получил существенную оптимизацию, для больших данных экономия достигает 80%.
Стоит ли говорить о том, что передача показаний(а это основное) сжимается плохо, где-то на 30%, однако передаваемые сжатые данные чаще всего весят меньше чем обычный http заголовок(который сейчас очень популярен).

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

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

Sep. 4th, 2019

Чистый оффтоп, Мозайка



Вот мой эталон специалиста типа современного дизайнера, жаль что современный специалист крайне далек от этого эталона.

Это обложка виниловой пластинки ансамбля 'Мозайка' какого-то лохматого года, тогда я еще не знал слово 'компьютер' совсем, но уже мечтал о нем, и скорее всего не знал даже слова 'калькулятор'. Но прекрасно обращался с паялькиком в свои лет 8(привет ардунищики-нашебудущее-рукижопа-лицо).

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

Нет, все же не мое, не могу передать словами, просто смотрю и понимаю - у людей был талант, люди работали и создавали. Такое ощущение, как-будто на минуту отпустило от сильнейших наркотиков...

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

Previous 10