Отключаемый NAT в D-link DI-808HV

Di-808hv
В версии V1.51b09 появилась отличная возможность отключать NAT.
Теперь вместо вонючек от sysLink можно покупать Dlink в качестве Корпаративного маршрутизатора начального уровня.
Мой небольшой обзорчик этого устройства вместе с описанием можно почитать тут: Yandex.маркет

Ужасы

Только что, около 23:00 по Москве объяснял сильно пьяному таксисту как проехать к магазину «7-ой Континент». Причем такси из «цивилизованных». А ведь он там когото подебрёт и потом по Мосеве катать будет.
Страшно…

Ошибки конвертера для IPB3

Ошибка

mySQL query error: INSERT INTO ipb3groups (g_title,g_hide_from_list,g_use_pm,g_max_messages,g_max_mass_pm,prefix,suffix,g_perm_id) VALUES('Русские буквы в названии группы{тут знак вопроса или символ не читаемый в UTF-8}',1,0,0,0,'','',7)<br /> <br /> <br /> >SQL error: Incorrect string value: '\xD0' for column 'g_title' at row 1<br /> <br /> SQL error code: 1366<br /> <br /> Date: Thursday 17th o September 2009 11:48:44 AM<br />

Условия возникновения:

Мигрировал с phpBB3 на IPB 3 (ver 3.0.3)
Использовалась последняя версия конвертера с сайта производителя (на 17.09.2009)
При конвертации Member Groups

В моём случае ошибка вызвана в файле:
admin/applications_addon/ips/convert/sources/lib_master.php
/**
* IPS Converters
* Application Files
* Library functions
* Last Update: $Date: 2009-09-01 10:53:43 +0100 (Tue, 01 Sep 2009) $
* Last Updated By: $Author: mark $
*
* @package IPS Converters
* @author Mark Wade
* @copyright © 2009 Invision Power Services, Inc.
* @link http://external.ipsl.../?p=converthelp
* @version $Revision: 357 $
*/
<br /><br />..<br />
// Line: 1656
$info['g_title'] = substr($info['g_title'], 0, 32);

Виной всему встроенная php функция substr(): http://ru2.php.net/manual/en/function.substr.php
Использовать её на мультибайт строках не безопасно. Например utf8 который используеться по умолчанию в ipb3 и в phpBB версии 3.
Поэтому скорее всего попытка переахть с других форумах где используеться Юникод тоже вызовет ошибку.

К сведенью: я быстренько пробежался по коду IPB 3 и обноружил множество мест, где использовался substr(), очень возможно возникновение похожих ошибок и в других местах и при других обстоятелствах.

Как лечить:

Способа есть по крайней мереnhb. Два из них связанны с использованием стандартного php модуля PHP_MBSTRING.

  1. Пожалуй самый правильным в данном случае, при использовании PHP 5-ой будет включение опции mbstring.func_overload (http://ru2.php.net/manual/en/mbstring.overload.php). Модуль mbstring нужно предварительно активировать. Напрмер так:
    php.ini
    mbstring.func_overload = 7
    Можно и с использование функции ini_set(), но придется модифицировать файлы IPB. А этот способ тем и хорош, что не меняються оригинальные файлы форума. Но может привести к ошибкам, там где текстовые функции используються для бинарных операций. А потому после конвертации mbstring.func_overload настоятельно рекомендую отключить.
  2. Отредактировать файл lib_master.php заменив substr() на mb_substr(). Модуль mbstring нужно предварительно активировать.
  3. Использховать встроенную в IPB функцию IPSText::mbsubstr().
    Этим способом и должны были воспользоваться разработчики IPB. Но почему то этого не сделали.. )

Также замечу, что использование последних двух вариантов не спасёт вас от подобной ошибки в других местах.

Немного философии

Включением опции mbstring.func_overload способно вылечить множество проблем и спользованием Юникода, в качестве кодировки в движке, слабо приспособленного для его использование. Фактически строковые функции PHP Это единственное узкое место с точки зрения Юникода.
Пример: phpbb2 не поддерживает Юникод. Но чтобы заставить его корректно работать достаточно включить опцию mbstring.func_overload (не забыв предварительно перекодировать базу, lang файлы, изменить кодировку в настройках, стилях и параметрах подключения к базе).

Почему так получаться? Потому что php на уровне ядра не подозревает о существовании Юникода. В отличии скажем от Perl (который давно перешёл на Юникод) или Java (в котором юникод был с самого начала), в php поддержку Юникода нам обещают только в шестой версии. Решит ли это проблему с использованием строковых функций ядра на Строках с юникодом. Как например в случае с substr() ? Незнаю. Покажет время. Хотя RC версии php6 уже доступны. Кому не ленива - могут проверить.

Что же остаться программисту? Всегда (если не требеутся обработка именно бинарных данных) использовать функции с префиксом mb_ из модуля PHP_MBSTRING. Напомню, что использование строковых функций вроде substr() на бинарных данных в свою очередь тоже не являться безопасным. Во-первых потому, что эти функции могут быть перезагруженны в модуле PHP_MBSTRING. Во-вторых реализация этих функций действительно может измениться в последующих версиях PHP. А всё потому, что эти функции по хорошему не предназначенны для обработки бинарных данных.

Возможно самым самым универсальным вариантом будет использование дополнительного пользовательского класса. Вроде класса IPSText из IPB3, в котором переопределены все строковые функции. Это безусловно усложнит программу и увеличит время выполнение. Но сделает код менезависимым от переменного окружения.

И на последок: скорее всего рассматриваемая проблема решена на уровне фреймфорков или есть интересные варианты в PEAR. Поэтому если вы используете такие инструменты программирования - лучше для начала поискать там.

Ссылки по теме

Подробнее о том, как конфигурить php можно почитать сдесь: http://ru2.php.net/manual/en/ini.php

VMware workstation 6.5 проблема с загрузкой после установки

Описание

После установки VMware workstation система грузиться несказанно долго. Фактического зависание не происходит, но я смог загрузиться прождав минут 30.

Актуально для:

VMware workstation 6.5 всех сборок включая последнюю VMware workstation 6.5.3 (Для предыдущих не тестировал).

Windows 7, Vindows Vista (для предшествующих не проверял).

Глюк проявляеться не всегда.

Виновник

Windows Служба «VMware Authorization Service» ака VMAuthdService

лежит тут:

«C:\Program Files (x86)\VMware\VMware Workstation\vmware-authd.exe»

Решение:

  1. Перезагружаемся в Safe mode
  2. Изменяем Startup type для службы VMware Authorization Service из Automatic в Automatic (Delayed Start)

Всё.

По материалам:
http://communities.vmware.com/thread/202253

Windows Virtual PC

вышла новая версия Virtual PC:
http://www.microsoft.com/windows/virtual-pc/

Windows Virtual PC

Работать совместно с Virtual PC 2007 SP1 (версия 6.0) она отказалась, сославшись на установленный устаревший продукт, установленный в моём компьютере. Пришлось от 2007 избавиться. Теперь собственно по продукту.

Изменений «много»:

  1. Версия обновилась с 6.0 до 6.1
  2. Директорию в «Program Files» переименовали с «Microsoft Virtual PC» на «Windows Virtual PC«
  3. Раньше приходилось скачивать setup, теперь VPC оформлен в виде обновления для Windows. Что в принцепе нетакая плохая мысль. Но сделанно это немного кривовато. Пока я разобрался в тонкостях конфликта Microsoft Virtual PC и Virtual PC 2007 минуло с полчаса.
  4. В новой версии VPC потерял свою консоль, теперь работает в папке «C:\Users\%USERNAME%\Virtual Machines» в тесной интеграцией с оболочкой. Которой кстати говоря не все пользуються.
  5. Между делом придёться пересоздать все виртуалки из Virtual PC 2007, новоиспечённый продукт их почемуто не экспортировал.
  6. Пропали такие фичи как растягивание гостивого окошка в произвольный размер. Кстати урсор мыши теперь тоже «утопает» в окне. Для вылавливание появилось новое сочетание клавишь: Alt+Ctrl+Left

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

А жаль. 2007 в своё время произвёл на меня более сильное впечатление. Очень хотелось увидить куда дальше двиниться этот продукт. С тех пор прошло 2 года…  Ни тебе x64, ни безболезниной виртуализации прочих ОС (кроме Windows без бубна на VPC сложно что либо запустить).

Видимо всётаки для домохозяек(

  • Опубликовано: 10.09.2009

Проблема множества одновременных соединений (С10K Problem)

Linux 2.6

Как известно, по умолчанию tcp/ip в Linux 2.6 настроен на довольно высокую пропускную нагрузку.
Если предельное количество соединений для службы устанавливаться в раёне одной тысячи, а ресурсов системы более чем предостаточно поискать причину можно вот в какой месте:

Рассмотрим конкретный пример.

Служба состоит из двух частей front-end и back-end
Front часть устанавливает соединение в любом случае, но после приблизительно 1000 активных подключений соединения эти не доходят до back части.
Дело всё в том, что по tcp обещаться только front-end, а связка front-back работала на UNIX сокетах. Причём каждое подключение порождает открытие дополнительного UNIX сокета.
Кто знаком с UNIX сокетами знает, что каждый такой сокет требует создание отдельного дискриптора файла. А в linux есть явное ограничение открытых файлов для процесса. По умолчанию это 1024.

Проверить можно так:

# количество открытых Unix сокетов для демона back
$ netstat -ux -p|grep back|wc -l

# количество открытых Unix сокетов в системе
$ netstat -ux -p|wc -l

# количество открытых tpc сокетов для демона front
$ netstat -tnp|grep front|wc -l

# количество открытых tpc сокетов в системе
$ netstat -tnp|wc -l

Везде нужны права root
Снять ограничение можно здесь:

/etc/security/limits.conf

demonusername            soft    nofile   2048
demonusername            hard    nofile   2048
  • demonusername - имя пользователя с правами которого запускаться демон, использующий Unix сокеты. Можно устанавливать огриначение для группы (@demonusername) или для всех (*)
  • Параметры soft и hard используються для установки мягкого и жесткого лимита соответственно. soft может быть изменен в самой программе. hard может быть изменен только суперпользователем.
    ВНИМАНИЕ! Необходима установка и soft и hard ограничения.
  • 2048 – собственно ограничение.

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

Далее необходим ребут, чтобы преинициализировать ядро.

Ссылки на полезные статьи:
http://www.kegel.com/c10k.html

Virtuozzo не обновляет ключи

Началось всё с того, что однажды перестала обновляться лицензия програмного продукта: Parallels Virtuozzo Containers 4.0

При попытке переустановить лицензию выскочила следующая ошибка:
KA server is not available: activatefailed: Can't connect to server ka.swsoft.com:5224

Проблема скажем с обновлениями может иметь аналогичную причину.

В этом случае правильнее всего было проверить настройки DNS на хост машине.

# nslookup ka.swsoft.com

Server:         81.200.0.1
Address:        81.200.0.1#53
 
Non-authoritative answer:
*** Can't find ka.swsoft.com: No answer

Получаем новые DNS у провайдера (в моём случае они просто работали с ошибками – пришлось искать другие).

Обновляем /etc/resolv.conf.
Перезагружается потому, что демон лицензий висит в отдельном контейнере и изменения настроек не заметит.
Всё работает.

Information:The license has been installed successfully.

По теме:
http://www.parallels.com/products/virtuozzo/

Okami to Koshinryo II, Волчица и пряности (второй сезон)

Волчица и пряности (второй сезон)

Был очень приятно удивлён.

Значительно интереснее первого сезона(хотя и он не плох). Заметные улутшеня в плане тонкой проработки сюжета, отлично проработанны детали. Не уверен насчёт Лоренса, но Холо прорисованна значительно интереснее (с нетепрением жду BR рипа).

Определённо тянет на звание лутшего Аниме 2009 года.

Очень хороший релиз скачать можно здесь: Волчица и пряности (второй сезон) / Spice and Wolf II / Ookami to Koushinryou II (Такахаси Такэо) [TV] [без хардсаба] [8 из >13] [JAP+SUB] [7 из >13] [RUS(ext)] [2009 г., приключения, фэнтези, романтика, HDTVRip] [1080p]
Сначала правда придёться ознакомиться с первым сезоном))

Почитать можно тут: world-art.ru

Corbina: ЗАЩИТА ИНТЕРНЕТ-СОЕДИНЕНИЯ

Судя по всему недавно в Корбине появилась новая фишка для фильтрации соединений:
Средняя + блокировка smtp

Фильтрация входящих TCP-соединений на порты: с 0 по 1024 (кроме www (80), ftp (21), pop3 (110), ssh (22)) + блокировка стандартного порта исходящей электронной почты (smtp (25)). Преимущества: защита от известных Интернет-червей и предотвращение массовых рассылок нежелательной электронной почты (СПАМа). Недостаток: остальные порты открыты, и вторжение на компьютер может быть произведено. Надо использовать «заплатки» и файрволл, чтобы предотвратить вторжение из локальной сети.
Примечание: если вы используете почтовую программу-клиент (MS Outlook, Mozilla Thunderbird, The Bat и др.) для отправки электронной почты следует использовать smtp-сервер smtp.post.ru

Включилась сама.
В результате минут 30 потратил, чтобы узнать почему это почта перестала ходить.
Заботливые, чтоб их)
http://stat.corbina.ru/firewall.pl

  • Опубликовано: 28.08.2009
  • Метки: ,

FakeRAID, ещё одна байка с плохим концом

Конфигурация.

Сервер: Серверы HP ProLiant
Контролер: Встроенный ICH9
Дисковая подсистема: 2 SATA диска в 250 Gb (RAID 1 mirror)
Операционная система: SUSE
Фактическая реализация raid на уровне ОС: DMraid

Хронология событий

Умирает второй диск.
SUSE начинает ругаться многочисленными ошибками в MFT и требует запустить fsck

Aug 23 06:12:27 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465708 in dir #2301537
Aug 23 06:12:27 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465707 in dir #2301550
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465723 in dir #2301550
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2465819 in dir #2301555
Aug 23 06:12:28 xxx kernel: EXT3-fs error (device sda1): ext3_lookup: unlinked inode 2466064 in dir #2465286

По глупости запускаеться fsck.
на выходе получаем множество жизненоважных файлов с нулевым размером.
(Напомню файлы с нулевым размером восстанавливать кране тяжко и совсем не быстро)

Результат:
1) Критически важное приложение
2) 1 мёртвый диск
3) второй диск с неработающей системой и битыми данными

Хорошё если есть рабочие бакапы.
Купить новый диск, востановились архив – два часа простоя.
Вот такая вот история.

Как нужно было делать с самог начала

Будет такая штука Adaptec RAID 2405
И 3 диска: Два в зеркало и однин в Hot spare, чтобы не пришлось бегать в магазин)