Category: лытдыбр

Category was added automatically. Read all entries about "лытдыбр".

ZX Spectrum 4ever, описание идеи.

Итак, вступление.

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

И вот, думаю я следующее - почему бы мне, вместо всяческого разврата, потребления кальмаров с пивами и без них, и прочей обыденной деятельности общества не запилить решение для мною любимого Спектрума? Давно думаю. Но вот проблема, помню очень мало, где взять инструментарий? Нужно же как минимум запилить на Спектруме шлюз писанный на ассемблере. Благо клон Спекрума всегда на рабочем столе(иначе и не может быть). Ну что-же, недавно я показал, что взять Gluon(не клей) и реализовать тяжелое приложение на основные платформы можно быстро и без сказок.
Так чего же боле? Я приступаю к поиску удобного ПО для данной задачи, и путь весь мир идет прахом.

Для тех, кто в танке, та же АTmega может покрыть все технические возможности Spectrum'а. Но, как обычно оно бывает, главное не железо - а общество которое с ним работает. Так что, буду банален - PC must die. А я попробую реализовать как минимум софт для Спекки для управления моими железками, а может быть и контроллером. Еще раз, Spectrum для меня суть моего творчества, всегда так было.

Мысли вслух, надежность текущего решения.

Сегодня был в офисе, и рассказал директору, что контроллер в ДВФУ перестал выходить на связь.

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

Вполне возможно, что дело было просто в глючной Ёпте, которая в очередной раз сдохла(модем очень часто подвисает, помогает только обесточивание модема). Но пока я этого не знаю. Мой контроллер(на базе NanoPi Neo) отработал 3 недели без малейшего вмешательства. Железка с 256 мегабайтами памяти с Джавой на борту и достаточно не простым приложением.

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

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

Проще говоря, я не вижу никакой поддержки, как будто я создаю что-то такое, что никому не нужно, ну или просто всем плевать, кактус вкуснее.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время собирать камни?

Да, наверное завтра я решу, что это было зря.

Но тем не менее я попробую высказаться, просто для себя или типа я предупреждал.

Думаю настал тот момент когда мой проект достиг максимальной фазы и уже летит в тар-та-ра-ры.

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

Сделал я не мало, учитывая что 5-6 лет назад я только нахватался опыта по автоматизации. А в схемотехнике я только знал, что есть какие-то микроконтроллеры и что такое pnp и npn транзистор.
Сейчас я достаточно хорошо владею схемотехникой в вопросах цифровой электроники(ttl) и достаточно уверенно себя чувствую в разработке подобных устройств (да, именно настолько чтобы презирать ардуинщиков).
У меня есть комплексное Java решение, охватывающее очень многие задачи, которое почти нигде не использует чужие наработки, типа библиотек Apache. А различные фреймворки меня забавляют как малые дети.

Я вырос из тех задач, которые 5-6 лет назад для меня были фантастикой. Не просто вырос, теперь у меня есть мощный универсальный и легко расширяемый инструмент.
А главное есть опыт, знания и наработки, которые я мог бы повторить.
Ведь самое сложное не написать код или сделать дизайн и рекламу. Самое сложное - опробованная, реально работающая концепция, сделать решение которое будет содержать минимум костылей и будет интуитивно понятно (конечно речь о крупном решении). Этого достичь можно только перелопатив кучу кода, найдя в итоге максимально подходящее решение. Да куча кода(сил, времени, стараний) было выброшено/потрачено для того, чтобы достичь чего-то стоящего.

Сейчас я в положении, при котором я получаю совсем не высокую зарплату(хотя мне платят за проект, по большей части на который я имею полные права, и компания тоже, конечно же) и в течении нескольких лет слышу постоянные обещания(99% которых не выполняется, к примеру у меня нет рабочего места вообще, работаю с дома в кабинете 2x3м с плохой вентиляцией и жарой минимум в 30 градусов Цельсия, по сути работаю в шкафу при этом часто с токсичными веществами. При этом часто за дверью орет подросток играя в игрушку про зэков и вертухаев), и это меня пока устраивает, так как есть семейные обстоятельства.

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

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

Ну и в конце концов, за эти 5-6 лет у меня появился сын, которому сейчас почти 4 года и дочь, которой еще нет 2-х месяцев. А еще есть подросток 17-ти лет, который 90% времени вне сна проводит в свое удовольствие ничем существенно не помогая(вопрос влияния отчима на пасынка и его мать). Времени свободного сами понимаете - не много.

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

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

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

А главное нет сил, времени, опыта, знаний и желания, чтобы продвигать продукт в массы. Никто кроме меня не знает его возможностей, даже мой директор(должен быть максимально заинтересованным лицом) не знает и 30% возможностей моего решения. Как-то так.

Все спасибо если прочли.

Java, изменение строки

Наткнулся на статейку http://www.skipy.ru/technics/strings.html#mutation

Там вполне грамотный чел рассказывает о возможности в Java изменить текст строки, даже не смотря на то, что строка объявлена неизменяемой (final).

Можно считать, что это очень хороший вопрос для собеседования.
В Джава есть множество подобных нюансов и список вопросов можно написать совсем не маленький.

В принципе так и делают многие компании, в нете также много онлайн тестов подобного характера.

И меня мучает один вопрос, как подобные знания применимы на практике?
Лично для меня это загадка.
Попросту потому, что нет никакой необходимости изменять таким образом текст строки в собственном проекте.
Более того, все эти хитрости в основном надуманные, мне незачем усложнять свой собственный код.
Оптимизация? А вам, к примеру, известно, что очень крупная торговая компания, пишет свои проекты в основном на 1C? Для этого она выделяет сервера с терабайтами оперативки и сетка между компьютерами там как минимум 1ГБит. Разработчики там получают по максимуму для нашего рынка.
Т.е. выигрыш в производительности после оптимизации кода на Java просто ничтожен, если сравнивать с продуктами писаными в той компании, а ведь там, судя по ЗП, программисты высшего уровня.

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

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

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

А еще меня смущает мода. Меня как-то поправил студент которого спросили, как правильно  Ява или Джава?
Парнишке с умным видом было невдомек, что некоторые названия имеют русский вариант произношения, например Австралия, мы же не говорим Оустрэлия.

Короче все плохо, мало того, что сферу интенсивно занимают люди, чья главная особенность - хорошая память, так еще хуже то, что сделать они надежные решения не могут. Ведь приглядитесь, все глючит, глючит в элементарной логике, в базовой логике, зачастую ошибки лезут из-за отвратительно плохой логики взаимодействия узлов системы.
Я из того поколения, который юность провел без интернета, работая на ZX Spectrum, позже немного в MS-DOS.
Я отлично помню программы, достаточно сложные программы, которые не глючили и были интуитивно понятны, в том числе и игры. Сейчас такое ПО - большая редкость. И можно сказать, что современная разработка ПО находится где-то на дне. Плохо то, что сейчас тоже самое происходит и со схемотехникой, где, на мой взгляд, основной причиной выступает торговая марка Ардуино.

Тестовая прошивка для диммера ламп накаливания.

Вид димера (эти три платы, ручной пайки, ушли профессиональным тестировщикам):


Характеристики:
1) Шина rs485, 9600/8n1, с протоколом схожим с modbus
2) С гальванической развязкой от силовой части, но без гальванической развязки по шине
3) Диапазон напряжения питания 9-24В
4) До 300 Вт мощности - ограничение по тепловыделению
5) Без корпуса, можно использовать термо трубку

Управление:
1) К устройству можно подключить либо одну кнопку(без фиксации), либо две кнопки (без фиксации), либо выключатель(с фиксацией).

В режиме одной и двумя кнопками можно управлять как включением и выключением, так и задавать мощность.
В режиме выключателя можно только включить и выключить, задать мощность в этом случае можно только через шину (клиенты, мессенджеры, другие устройства, как например ИК приемник и т.д.)
Управление в режиме двух кнопок - 1-я при коротком нажатии включает диммер, при длинном увеличивает мощность на 5%, вторая действует аналогично, выключает и уменьшает на 5%.
Управление в режиме одной кнопкой - короткое нажатие инвертирует (т.е. вкл->выкл, выкл->вкл), длинное увеличивает мощность на 5%, и короткое нажатие + длинное уменьшает мощность на 5%.

2) Удаленное управление через шину, поддерживаются такие команды как вкл, выкл, инвертировать, задать мощность.
*Также, на случай отключения электропитания, устройству можно указать режим старта - вкл, выкл, последнее состояние.

Съем показаний:
С устройства можно получить заданный уровень мощности и время работы.

Индикация:
На устройстве только один индикатор - диммер включен, включенное состояние означает, что задана не нулевая мощность.

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

Особенности:
Есть возможность задавать уровень мощности, на который выходит диммер получив команду на включение.
Очень удобно. У меня установлены лампы на 200Вт и задана мощность в 50% на включение. Т.е. лампа при стандартном включении горит как обычная лампа на 100Вт. Но если мне нужно больше света, то я просто задаю большую мощность.
Замедленный выход на указанную мощность, видно как диммер наращивает или снижает мощность при ее изменении.
Питание от шины - нет необходимости прокладывать еще одну жилу до выключателя, диммер подключается ровно на те же провода, что и выключатель ранее.

Devices tool:


Здесь вполне стандартные поля, версия прошивки, время работы, уровень мощности (0-100%), адрес, режим инициализации, режим управления (чуть изменен, вместо сенсора здесь две кнопки), уровень мощности для включения (задает уровень, на который будет выходить диммер получив команду включить или переключить при текущей мощности не в 0%)

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