Category: лытдыбр

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

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

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

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

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

Все делается для того, чтобы можно было взять охапку различных конечных устройств и достаточно легко объединить их в одно целое, при этом получить богатый функционал в итоговом решении. При этом совершенно не нужно программировать, достаточно иметь просто общие, поверхностные, знания. Решение по большей части бесплатное - можно развернуть решение полностью бесплатно(будет ограничение на контроллере - 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.
Я отлично помню программы, достаточно сложные программы, которые не глючили и были интуитивно понятны, в том числе и игры. Сейчас такое ПО - большая редкость. И можно сказать, что современная разработка ПО находится где-то на дне. Плохо то, что сейчас тоже самое происходит и со схемотехникой, где, на мой взгляд, основной причиной выступает торговая марка Ардуино.