August 19th, 2017

Def kz

opensource животворящий

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

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

Ну и чтобы дважды не вставать. Во многих embedded устройствах стоит задача runtime конфигурирования и управления. Раньше это делали обычной gui софтиной, которая подключалась сначала по ком-порту, потом по usb. Софтину стоит разработать денег, ее нужно саппортить. Да и с нынешними тенденциями одной виндой не отделаешься - без macos и linux версии прицепом делать таковую просто не солидно.

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

Все это привело одного из моих клиентов к идее заменить физический eth на виртуальный на базе usb. Была создана виртуальная сетевая карта. Внутри поднята подсистема TCP/IP, TLS с веб, dns, dhcp серверами. Втыкаешь в usb порт, заходишь на адрес "my.card" - все, больше ничего не нужно ставить и подключать. Как выяснилось, хорошая идея лежала на поверхности. Segger вот тоже задумался над этим. Приятно себя чувствовать в тренде, черт возьми. А сколько возможностей это дает для создания атакующих usb прошивок!
Def kz

Про кодировки

Если говорить про кодировки - эталон для меня utf8. Везде, где есть возможность, использую только ее. С другой стороны, днише - это cp866, cp1251.

Вчера днище было пробито при портировании одной старой прошивки. В одном сишном файле одновременно использовались cp866 для взаимодействия с одной подсистемой и cp1251 для другой. Одновременно. Встроенные прямо в текст. Какие наркоманы это писали мне неведомо.