Some engineer's blog

tinyxml2 с поддержкой utf-16

Частенько, очень, нужно без конвертации дополнительной (WideCharToMultiByte и т.п.) работать нативно с utf-16 типом данных (MFC CString Wide char string aka UNICODE) в Win32.

Заморочился в 2013м году и перепилил tinyxml2 для поддержки прямой. Только важный момент:

-теперь библиотека работает только с UTF-16 данными. никакой utf8 не поддерживается!

зато можно смело работать с UNICODE строками в MSVC2010-2015 

 

Управление отоплением (ТЭН)

Тепло это хорошо. Когда теплом можно управлять не вставая с дивана - еще лучше!

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

  • Реле коммутируем (управляем включением\выключением)
  • Симистором коммутируем при прохождении напряжения через ноль (Zerocross) (управляем включением\выключением)
  • Симистором коммутируем после прохождения через нуль на определенное время (управляем мощностью)
  • Смешанный способ - при прохождении через нуль коммутируем симистором , потом включаем реле закорачивая симистор (таким образом симистор не нагревается при прохожении больших токов) (управляем включением\выключением)

По алгоритмам:

  • Гистерезисом
  • PID-петлей. или PI-петлей т.к. Derivative в больших инертных системах не нужен по большому счету.

а я Alwill AVAST капратифный сломал ;)

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

АВАСТовский ADNM север оказывается крайне легко можно положить на лопатки вместе с дистрибуцией сигнатурок и прочими вещами. Как так легко да еще и не привелегированным пользователем? А просто элементарно!
Все началось сегодня с того что обьем сикельной базы разросся буквально гигабайтами за пару суток. Наловить столько вирусни нереально, стали разбираться. Обнаружили смешной просчет архитектуры клиент-серверной у аваста:
клиентская часть антивируса (агент) высылает на сервер строковые (да, прямо огромные строки!) данные о каждом своем чихе. Например о том что у него ошибка доступа к файлу какому-либо ;))) Северная часть не задумываясь(!) мигом делает INSERT INTO в таблицу Events (без индексов кстати) и вставляет вот эту вот огромную текстовую строку от клиента ;)
Пример строки (не самой длиной):
AAVM - scanning error: x_AavmCheckFileDirectEx: avfilesScanReal of C:\WINDOWS\TEMP\shshost.dll failed, 00000005.

когда сделали запрос в сикельной базе аваста SELECT COUNT(generated), objectname from events where generated >='02-17-2009' group by objectname
....увидели что каждый клиент успевает "настрелять" таких строк сотнями тысяч ;)


Вывод: если создавать произвольные файлы локально на клиентской машине (не требует прав) с "правильными" расширениями но в таком режиме доступа когда DENY_READWRITE сторонним процессам. клиент AVAST от этого сходит с ума и начинает атаковать свой сервер (и локальный event log машины кстати!)... У сервера мало того что нет тротлинга сообщений, так еще и внутренняя форма хранения этой информации - крайне неоптимизированна с точки зрения дизайна базы данных :(

Prof of concept писать не буду - это уже незаконно.

 

Windows 2008 Fileserver cluster

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

Переезд с файлового сервера под 2003 на новую 2008 дает много интересного
но, к сожалению, есть и неприятности. Пока я столкнулся со следующим:

  1. Для отключения offline cache (net share ...=... /cache:none) потребовалось писать Win32 приложение, которое будет дергать напрямую API NetShareSetInfo() поскольку для кластерных шар 2008го команда net share /cache НЕ РАБОТАЕТ!
  2. В 2003м была полезная фича: авторасшаривание каталогов в определенной директории. Это сильно экономило время затрачиваемое на создание, например, хомешников юзерей. Теперь такого функционала нету, о чем официально заявляла команда разработчиков. Пришлось убить время и написать Win32 приложение, которое будет само следить за операциями с директориями в указанном пути и шарить или убирать соответствующий ресурс.

 

Для решения первой проблемы исходный код http://pastebin.com/f1dccba49
Для решения второй проблемы код тут http://pastebin.com/f635cac65

Оба проекта собираются в VS2008SP1 с поддержкой UNICODE и далее на используемые кластера
ставится Visual C Runtime Redistributable 2008 x32 SP1 комплект, а потом сами ЕХЕшники.

Если у кого-то вдруг возникнут эти проблемы и не будет под рукой VS - отпишитесь ниже, я выложу
ЕХЕшники готовые.

 

Hyper-V в заметки хозяйке.

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

Много раз проделывал "расширение" VHD дисков размера Y до размера X но именно сегодня удалось напороться в продакшене(!) на багу известную всем со времен Virtual PC 2007: после расширения Windows отказывается грузится ругаясь на невозможность чтения диска NTLDRом.

Я решал её нетривиально и как обычно своим дремучим способом:
сначала загрузился в WinPE и убедился что диск полностью читабелен и _без каких либо ошибок_ (chkdsk сказал никаких проблем).
Потом посмотрел diskpartом и заметил любопытный сдвиг начала партиции на 32килобайта... Дальше сразу возникла идея что раз NTLDR таки отказался удовлетворять мою машинку в нужде загрузки вкрячить туда новый вистовый BOOTMGR. Собсно так и получилось, только вот создать _с нуля_ чистый boot configuration storage у меня не вышло (bcdedit /createstore && bcdedit /create && bcdedit /set && bcdedit /displayorder).
Создаваемое "с нуля" мною хранилище не содержало базовых классов посему напрочь отказывалось корректно работать поэтому я скопировал начальный файл хранилища (bcd) прямо с WinPE и добавил туда секцию касательно ntldr и legacy Operating System.

В результате - продакшен сервер отлично загрузился в Windows Server 2003 :)

интеграция драйверов в образ windows 5.х версий

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

Покопался в нёдрах ОС и нашел для себя способ подсовывания драйверов новых в уже "установленную" копию операционки.
Жаль, без переподписывания "правильным" сертификатом layout.inf файлика совсем красиво это не удалось сделать (файл драйверов дублируется в двух местах). Если править layout.inf файл то все драйвера "встроенные" в windows из дистрибутива станут автоматически неподписанными из-за чего появится много "сексуальных" моментов при работе с устройствами...

Для меня в любом случае есть некоторые непонятные пока моменты которые я не смог разрешить, изучаю на предмет проблем всё-равно т.к. возможно что и drvindex.inf файл тоже является хитрым и после его модификации чтото может отвалиться.


список пользователей (users) и групп (groups) в домене Windows (Active Directory)

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

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

Ограниченные учетные записи Windows

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

Столкнулся со старой как мир этот проблемой: есть Windows 2000/XP/2003, есть юзверь бесправный абсолютно и работающий на ней.
Есть нужда поставить кой-какие пакеты типа MSXML Parser/MDAC/etc...

Об онанизме, мазохизме, SATA контроллерах и AHCI режимах

Перенос моей статьи, для истории, из ЖЖ (livejournal.com)

Провел давеча бесчеловечные экскременты эксперименты по загрузке .WIM образа Windows XP на компьютере с Intel SATA AHCI Controller снятого в оригинале с НЖМД подключенного к Standart IDE. Эксперименты удались!


Newer posts → Home ← Older posts