воскресенье, 4 декабря 2011 г.

1C: структура файла 1Cv7.MD

В файле живут метаданные программы. Только вот достаточно разумного объяснения как их разбирать я не нашел. Собирать пришлось по крупицам. Структура файла подпадает под MS формат Compound File Binary Format, который принято разбирать средствами MS. С MS мы не дружим и дружить не планируем. Структуру можно посмотреть каким-нибудь приложением, но дальше не продвинулся, потому что метаданные запакованы. Для упаковки использована библиотека zlibeng.dll. Я бы хотел научиться разбирать метаданные 1C, чтобы конвертировать базы.

суббота, 5 ноября 2011 г.

Solaris 11: Измеряю скорость

День не удался! Купил новую коробочку на базе Intel Atom D525 для телефонной станции Asterisk, а она не заводится. Почему-то не работает загрузка ОС с включенным HyperThreading. Может брак? Еще купил SSD от Kingston, думал пригодится в качестве кеша к моему компьютеру. Не вышло. 

вторник, 1 ноября 2011 г.

Solaris 11: TimeZone

Оказалось, что правильно часы идут только на мобильном телефоне Samsung и на сетевом оборудовании Cisco, потому что они сами не переводят смещение часовых поясов и ничего не знают про энергосберегающие технологии прошлых лет. С этого года наша страна сдвинулась на пару тысяч километров в сторону Китая.

суббота, 29 октября 2011 г.

Solaris 11: Утечка мозгов

В нашем сервере на базе Intel Xeon E3-1230 стало наблюдаться странное явление: ему через пару недель работы становится худо. Сначала я думал, что я плохо себя вел: компилировал и запускал экспериментальные библиотечки. Еще через пару недель после первого инцидента заметил, что через две недели работы в ядре тратится около 16%, но при этом ночь и никакой активности на сервере и в приложениях нет.

понедельник, 10 октября 2011 г.

Solaris 11: File Event Notification

Сделал демона, который файлы и папки проверяет на наличие изменений. Если изменения происходят, то запускается скрипт, описанный в файле конфигурации.

Подробности реализации:

вторник, 4 октября 2011 г.

Middleware: Call files

Одно из определений: Middlewire -- связующее программное обеспечение. Мне понадобилось увязать два программных продукта. Программы запущены на компьютерах географически разнесенных. Надо как-то научиться синхронизировать данные между ними. Мы сформулировали способ синхронизации. На одном компьютере данные выгружаются, потом происходит магический перенос данных между организациями, и, наконец, на удаленном компьютере данные подгружаются.

воскресенье, 25 сентября 2011 г.

Solaris 11: В поисках AES. Часть 2

Собрал из дистирбутива development версию OpenSSL. Замерил производительность и сравнил ее с производтельностью штатной библиотеки OpenSSL 0.9.8o

вторник, 20 сентября 2011 г.

Solaris 11: В поисках AES

Недавно мы заменили сервак (железо), новый сервак обзавелся поддержкой AES инструкций в ядре Xeon E3-1230. Вот и думаю я, какая польза от AES инструкций, если Solaris 11 не обновлялся с ноября 2010 года. Где их вообще можно применить, не пересобирая ядро Solaris?

пятница, 16 сентября 2011 г.

Разведение породистых тараканов

Мне приснился сон с элементами математики. А когда математика влезает в голову во сне, с этим надо что-то делать. Надо ее из головы извлекать и размазывать по разным доскам.

среда, 31 августа 2011 г.

Solaris 11: Сук пилю

Когда я появляюсь в офисе мне становится грустно, все работают, а у меня нет рабочего мета. Может быть потому что я не сотрудник? Дома меня такие мысли не посещают, поэтому все наследие серваков, которое накопилось за годы беспорядочных товарно-денежных отношений, хорошо настраивать удаленно. Вот я и думаю как мне безболезненно поменять адрес сервака удаленно.
План такой:
0) Физически все подключено по одному проводу. На одном проводе может висеть несколько виртуальных интерфейсов. Всего один транк на интерфейсе e1000g0 и один виртуальный интерфейс vnic1
1) Создать виртуальный интерфейс vnic2 с новым IP адресом
# dladm create-vnic -v 2 -l e1000g0 vnic2
# ipadm create-addr -T static -a 192.168.0.3/24 vnic2/v4
2) Залогиниться нановый адрес.
# ssh 192.168.0.3 -l user
3) Выключить старый интерфейс
# ipadm delete-if vnic1
# dladm delete-vnic vnic1
Проверено, мин нет. 

Solaris 11: Новый сервак? Измерим скорость

В очередной раз устанавливаю сервак на ОС Solaris.

Сначала надо диски установить поставил два Western Digital 500G RE4. Диски выбирали по принципу "ну производитель же врать не будет". Выбирали быстрые и надежные из доступных дешевых. Установили две штуки. Система ставится на один диск. Потом надо подключить в зеркало второй диск.

В Solaris ужасные утилиты форматирования, не красивые, уродливые. Я ими боюсь пользоваться. Есть утилита format -> fdisk. Ее используем для первоначального форматирования носителя на 100%. Другого способа разбивать носитель я не знаю, иначе у меня начинают спрашивать геометрию носителя, откуда мне знать. А так утилита сама находит.

Второй шаг: сделать копию формата уже работающего носителя:
# prtvtoc /dev/rdsk/c8t0d0s0 | fmthard -s - /dev/rdsk/c8t1d0s0
Соединить носители в зеркало
# zpool attach rpool c8t0d0s0 c8t1d0s0
И дождаться пока они замирорятся
# zpool status
Потом скопировать загрузчик на второй диск чтобы они были равноправными по загрузке
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c8t1d0s0
Всего делов!
Измеряю скорость, интересно же (Oracle запрещает публиковать тесты). Для этого устанавливаю утилиту bonnie++
# pkg install bonnieplus
# bonnie++ -u user
Маюсь в ожидании результата: Первая попытка убила сервак :( Не могу на него залогиниться. Жаль, хороший был сервак, подавал надежды.

Вторая попытка:
Перезапустил тест.
Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
solun        15832M 121148 87 119278  9 69987  11 149201 97 189496 11 851.4   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++


Результат: 120 Мбайт/сек на запись и до 190Мбайт/сек на чтение. Всякие выкрутасы теста по случайному доступу и многократному доступу файловая система ZFS игнорирует и дисковыми операциями не злоупотребляет.

суббота, 27 августа 2011 г.

VoIP: Планы нумерации

Поизучал стандарты ITU-T Rec. E.164 и его приложения. Общая длина номера с кодом страны не должна превышать 15 цифр.
Составил план нумерации:
Россия:  +7
XXX XXXX - семизначные - городские номера
8 [3489]XX XXX XXXX - российские коды 10 цифр, префикс 8- используется для выхода на межгород. Префикс (4XX) - Европейский регион, (3XX) - Сибирский и дальневосточный регион, (8ХХ) - Северо-западный регион. (9XX) - коды негеоргафические, все коды кроме (954) закреплены за мобильными номерами.

Германия: +49
префиксы выхода на межгород 0-. префикс выхода на международные линии 00-. Длина номера может быть от 6 до 13 цифр
Мобильные номера начинаются с кодов (15) (16) (17)

Великобритания: +44
префиксы 0- и 00-, длина номера от 7 до 10 цифр
Мобильные номера начинаются с кодов: 71 – 75, 77 – 79

США: +1
префикс выхода на межгород 1-, префикс выхода на международные линии 011-. Длина номера 10 цифр. Мобильные номера не выделяются.

В аппаратах Cisco Small Business SPA50X от рождения прописан такой план нумерации:
(*xx|[3469]11|0|00|[2-9]xxxxxx|1xxx[2-9]xxxxxxS0|xxxxxxxxxxxx.)
*xx - это управляющие коды
[3469]11 - это службы спасения
[2-9]xxxxxx - локальные гордские номера
1xxx[2-9]xxxxxxS0 - межгород
xxxxxxxxxxxx. - остальной мир

Для России план нумерации телефона Cisco будет выглядеть так:
(*xx|xxxx|0x|[0-79]xxxxxx|8[3489]xxxxxxxxx|810xxxx.)
управляющие коды| локальные номера (у нас в примере 4 цифры) | службы спасения| гордские номера | межгород | международные вызовы.


см. ITU-T Rec. E.164 : The international public telecommunication numbering plan
см. Приложения к E.164

четверг, 25 августа 2011 г.

Резюме

Ищу работу!
Чего умею?
  • Умею быть преподавателем. Лет 5 отработал преподавателем электроники. Создал свой собственный курс по микросхемотехнике в Политехническом университете.
  • Могу управлять небольшим коллективом разработчиков.
  • Умею проектировать электронику: измерительную, цифровую и силовую. 
  • Умею писать встроенное программное обеспечение для ARM, 8051.
  • Умею производить спроектированную электронику. Умею организовать контрактное производство электроники штучное, мелко серийное и серийное.
  • Умею создавать сети для организаций, на 100-1000 рыл. Вообще-то умею создавать виртуальные транс-национальные корпорации не слезая со стула, вернее проектировать и настраивать аппаратуру и ПО для них. Умею в одиночку обслуживать 40 Кисок (CISCO) и десяток серверов. Хорошо знаком с GNU/Linux, FreeBSD, Oracle Solaris. Могу дописывать и исправлять код каждой из них, если понадобится.
  • Знаю толк в информационной безопасности. Могу настроить инфраструктуру организации, включая сервисы e-mail, web, vpn, ip телефонию и многое другое. 
  • Программировать люблю, на С. Умею проектировать все, что касается ядра операционной системы. Могу написать свою операционную систему с нуля. Так и сделал. Файловую систему для SSD. Люблю описывать сетевые протоколы, люблю писать интерпретаторы разных языков. Умею проектировать алгоритмы управления роботами. Умею расчитывать траектории движения без использования вещественных чисел с компенсацие ошибок округления. Умею писать реализации криптографических алгоритмов. Умею все это реализовать в аппаратуре программируеых матриц. Могу процессор спроектировать, правда не за один месяц.
  • Могу писать пркиладное программное обеспечение, имею богатый опыт разработки ПО для систем реального времени.
  • Могу эксперименты ставить по физике полупроводников, знаю толк в террагерцовой оптоэлектронике, правда лет 10 этим не занимался.
Почему-то не умею извлечь прибыль из этого, странно.
Скучаю, ищу работу...

среда, 24 августа 2011 г.

VoIP: Переход на IP телефонию

Занимаюсь настройкой маршрутизации вызовов VoIP телефонии между пятью станциями на базе Asterisk. Хочется уже перейти на какой-нибудь модный способ динамической маршрутизации.

Динамическая маршрутизация VoIP возможна, например, если использовать сервис DNS для сопоставления адреса сервера по номеру телефона. Есть сервис e164.arpa, который разрешается для некоторых стран европы. Сервис e164.arpa - платный - это все портит. Есть еще похожий бесплатный сервис e164.org. Но работающего решения я пока не видел. В Asterisk существует поддержка ENUM (на базе DNS) и DUNDi.

Найти адрес сервера - это еще пол-беды. Тут есть целый комплекс связанных с регистрацией проблем. Чтобы динамическая маршрутизация работала без проблем связанных с несанкционированным доступом надо уметь обмениваться паролями и сертификатами шифрования каналов.

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

см. The international public telecommunication numbering plan ITU-T Rec. E.164 (07/2011)
см. ASSIGNED COUNTRY CODES ITU-T Rec. E.164 (07/2011)
см. Access codes/numbers for mobile networks (11/2010)
см. DIALLING PROCEDURES ITU-T (03/2010)
см. ENUM и DUNDi
см. Выписка из реестра Российской системы и плана нумерации(08/2011) 

понедельник, 22 августа 2011 г.

Solaris 11: Русские буквы в редакторе NANO

Подобные сообщения ради того чтобы в следующий раз не подбирать ключики для компиляции программы, которая мне понадобилась. Редактор Nano работает нормально и я к нему привык, но я не могу писать сообщения или исправлять тексты на русском языке. Часто в моих проектах встречаются русские буквы, я их пишу в комментариях к программам или в текстах HTML страниц и как правило в кодировке UTF-8.

В кодировке UTF-8 символы могут иметь длину 1 2 и более байт, а отображаются они как один символ. Так что глюк когда строка скачет от редактирования вправо-влево я расценил как неправильную обработку кодировки UTF-8. Это диагноз.

Что делать если нет русских букв в редакторе, а всякий раз когда я пытаюсь вносить изменения в редакторе портятся строки содержащие русские буквы. В таких случаях можно воспользоваться редактором gedit через X терминал. А тут я попался у меня под рукой только Windows 2000 и терминал Xming отказался устанавливаться на W2k, и мне было некуда деваться. Я решил скомпилировать новую версию Nano с поддержкой UTF-8.

# wget http://www.nano-editor.org/dist/v2.2/nano-2.2.6.tar.gz
# tar xf nano-2.2.6.tar.gz
# cd nano-2.2.6
# ./configure --prefix=/usr --enable-utf8 --enable-nls --with-slang
# gmake
# gmake install
Я использую путь /usr так что новая версия будет установлена вместо старой. Для компиляции понадобилась библиотечка slang, но она уже была установлена в системе к моменту сборки.

Проба пера

Это моя записная книжка.