Author Archives: Sergej Kurakin

Microsoft Transceiver V3.0 for Bluetooth – памятка

Если кому придётся ставить себе современные беспроводные клавиатуры или/и мыши от Microsoft на основе Bluetooth на Microsoft Windows XP SP 2 и с родным Microsoft Transceiver V3.0 for Bluetooth, знайте, в самом начале я вам рекомендую поставить Update for Windows XP (KB924941), и только потом ставить драйвера с диска (IntelliType и IntelliPoint). По крайней мере мне этот способ конкретно помог – Bluetooth стал виден и появилась возможность его настраивать.

Ещё, Microsoft Transceiver V3.0 for Bluetooth лучше не перевтыкать в другой USB слот – теряется. Я лечил переустановкой драйверов от клавиатуры (там Microsoft как раз устроил конфигурацию Bluetooth).

Второе место в конкурсе от Pixel.lt

Как все помните, я участвовал в конкурсе (Написал статью для pixel.lt) у Pixel.lt. И написал для конкурса две статьи. И как вы видите из заголовка – в конкурсе занял второе место!

Вчера была церемония награждения, которая прошла в Cosmic bowling (надо отметить местоположение заведения хорошее, а вот на втором этаже шары не очень). Все призы были от главного организатора и мецената: Microsoft Lietuva. И за второе место я получил: Wireless Entertainment Desktop 7000, футболку со слоганом и лого Pixel.lt, и диплом победителя. После чего, все дружно поиграли в боулинг.

В конце всего мероприятия, представители Microsoft принесли список с очками игроков, в котором, как оказалось, я был на первом месте по очкам (а я то и не очень старался, вообще, игра не шла совсем, набрал то 109 очков всего). Так что, мне достался ещё один приз (как лучшему игроку): Wireless Notebook Presenter Mouse 8000 – что безумно радует.

Поближе познакомился с NePo – он в живую, совсем другой человек, нежели я его представлял по блогам и другой on-line активности.

Отмечу ещё одно знакомство: Žilvinas Sadauskas – было очень приятно пообщаться.

Получил предложение участвовать в ближайшей PHP конференции в Литве.

Написал статью для pixel.lt

После долгих лет молчания я вновь вернулся на публичную сцену Литвы.

Первый (и последний на тот момент) раз, на публику я свою статью выложил в августе 2002 года, на литовский сайт посвещённый PHP. Это было короткое писание класса SDF – Serialized Data File. Он до сих пор болтается на phpClasses. Тогда, в 2002, это было небольшой сенсацией для Литвы – MySQL был тогда достаточно дорог, его нужно было заказывать отдельно, бывали проблемы со стабильностью – а этот класс для маленьких проектов решал многое и был удобен при переносе сайта.

После чего были долгие годы молчания. Небыло ни интересных тем, ни времени, ни особого желания. Тем более есть 2 блога.

Что меня толкнуло в сентябре 2007 написать поверхностную статью о росте сайтов и том, как добавляются серверные ресурсы для pixel.lt на литовском – Tinklalapių augimas – ką daryti, jei jiems pasidaro ankštoka? – я до сих пор не знаю. Особых надежд победить в конкурсе у меня нет, XBOX 360 мне без нужды (но если выиграю делиться или отказываться не буду), „Microsoft“ Bluetooth клавиатуру или „Microsoft“ Wireless Optical мышь я бы хотел конечно. Если мою статью опубликуют в журнале “NK” – будет очень даже круто.

Вот такие новости у меня на сегодняшний день. Вчера был день программиста, 256 день в году, а я его так и не отметил…

Кстати, мою статью опубликовали 13 числа… Символично. Как-то по жизни с числом 13 мне везёт (серьёзно).

В памятку об MS Office и ссылках на документы в WebDAV

Локальный WebDAV сервер переводим в стадию тестирования. Даже нашли в интернете способ, как заставить MS Office на Windows платформе документы по ссылке на WebDAV сервере в режиме редакции а не read-only.

Нужно в регистрах для ветки HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Internet создать запись OpenDocumentsReadWriteWhileBrowsing типа DWORD со значением 1.

Месяц тишины и воз интересной работы

Месяц тишины. Её причина – воз интересной работы (которая была как вызов – а смогу ли я).

Итак, к примеру, на прошлой неделе, я переделывал CMS для поддержки MSDE 2000 и ставил WebDAV на Apache 2.2.

Ну чтож, можно сказать что я точно овладел основами MSDE 2000. Поставил с поддержкой нужной аутентификации со второй попытки, без проблем переписал структуру таблиц с MySQL на MSSQL, определил тип полей, вобщем тут всё прошло относительно складно. Если кому придётся ставить MSDE 2000, то у инсталлера есть несколько занимательных параметров, которые вам помогут и запускать его лучше из коммандной строки.

Перепись самодельной абстракции для работы с базой данных и нескольких кастомных запросов заняла около 6 часов (при создании этой системы никто никогда не думал о других платформах), плюс время на тестирование каждой функции и отлов мелких глюков. Самое не приятное было то что в MySQL прекрасно хавает запросы типа INSERT INTO `table` SELECT * FROM `other_table` при одинаковой структуре таблиц, а MSSQL нужно указать конкретные поля и для INSERT и для SELECT частей.

Потом у меня было 2 загвоздки: не латинские символы и кол-во символов в полях text и ntext. При работе с PHP mssql_* функциями примеров в мануале почти минимум. Никаких Warning и Notice нету. Сидишь и как слепой котёнок дёргаешься туда-сюда.

Первый косяк был – не латинские символы, а точнее UTF-8. Так как в начале я использовал поля ntext, вся INSERT прошли нормально, а читать он от туда не смог. Всё время кидало сообщение “Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library”. Так не весело знаете… Структуру базы ис MYSQL перенёс, данные перенеслись, и если смотреть через менеджеры – удачно, а читать не могу. Правда потом нашёл решение в сети – рекомендовали использовать поля типа text. Поменял, заново импортировал данные – всё заработало.Да, была попытка использовать ODBC, но тоже ничем хорошим не увенчалась.

Вылез второй косяк – некоторые очень длинные тексты были обрезаны. Оказалось у PHP mssql_* есть 2 параметра в php.ini, которые ограничивают длину полей ntext и text. это параметры mssql.textsize и mssql.textlimit (кстати нихера не документированные и нигде не упомянаются в мануале), значение в PHP4 которых равно 4096 (чего-то там). Если им вписать -1, то это ничего не меняет, а если вписать магическое число 2147483647 – всё встаёт на свои места.

Итак, всё работает. После MySQL впечатления о MSSQL никакие. Я бы не хотел ещё раз возвращаться к таким проектам, где нужно использовать MSSQL.

С WebDAV у меня всё пошло куда на много быстрее. Apache я знаю достаточно хорошо, чтобы за полтора-два часа на нём всё запустить да так, что-бы всё работало. Особых косяков небыло, за исключением аутентификации. Какой-то чёрт меня дёрнул использовать AuthType Digest, но от него позже я отказался и перешёл на AuthType Basic. Так-же не давал покоя error.log, в котором постоянно была строчка configuration error: couldn’t check access. No groups file?. Создание group файла ему не помогло, тогда чисто методом научного тыка я включил все модули аутентификации, которые идут с Apache 2.2 – помогло, ошибки нет, всё работает. Сейчас это тестируется, и пока с Windows и MAC OS X платформы работает нормально.

Теперь я подумываю о создании WebDAV шаринга с использованием Subversion для автоматического отслеживания версионности файлов.

А ещё я: получил на работе новую машинку – Intel Core 2 Duo 2.33 GHz и 2 GB RAM, и 300 GB SATA2 диском, удачно на неё перенёс все проекты над которыми работаем и приготовился к резервному копированию (старый но нужных файлов). Таки нашёл способ работать над одним сложным и большим проектом в команде из людей, находящихся в разных концах офиса и планеты. Наконец добрались руки поставить реверс-прокси на Apache 2.2 и решить проблему 80 порта и одного IP в офисе. Да и просто сделал много классной работы и выпил не один бокал хорошего пива.

Особенности Литовского Load Balancing

Так как тема Load Balancing мне сейчас очень актуальна, я иногда посматриваю на большие Литовские проекты со стороны пользователя и задумываюсь, что они делают. Хотя, может это и не особенности местного Load Balancing, но я уже второй раз встречаю такое решение на довольно популярном проекте. Если кто знает в других местах подобные модели, или причины – пишите в коммнетарии, мне очень интересно.

Сейчас в ЛитНете очень популярен один проект, клон YouTube.com – маленький Литовский videogaga.lt. О нём сейчас пишут в Литовский блогах, писают кипятком, так как он очень вовремя появился в Литве и позволил незнающим английского легко загружать своё видео в интернет и делиться с друзьями. Ах, как хорошо.

Я совсем не знаю что у них на “в заде”, но вот с переди кажется, что они пошли не тем путём. Придя на www.videogaga.lt вас перенаправят на www1.videogaga.lt, ещё есть www2.videogaga.lt, www3.videogaga.lt, www4.videogaga.lt (у всех разные внешние IP). Если я правильно понял, они при помощи 4 субдоменов и редиректов распределяют нагрузку.

Похожим путём пошли и всем в прибалтике известные one.lt, причём задолго до videogaga.lt. Куча серверов,внешние редиректы и всё зависит от удачи – повезёт, попадёш на незагруженный сервер, не повезёт – будешь ждать ответов (по крайней мере так говорят пользователи). Я не в курсе конечно отношений и производителей, но у меня есть ощущение, что всё делала одна и таже контора.

Хотя я могу быть и не прав в своих домыслах и все эти субдомены предназначены для других целей?

Вот такие особенности я заметил…
Я вот не понимаю, почему суб-домены, почему дублируется содержание? Почему в переди не поставлен распределящий нагрузку proxy, как это сделано у Google (хотя хер знает как там, но главное что все мы ходим через www.google.com а не через www1.google.com, www2.google.com, … www1024.google.com) или на том-же flickr.com или YouTube.com? Нет, я согласен – статическое содержание может отдавать ферма под другим субдоменом (как у flickr.com), но основное и динамическое содержимое всегда как-бы должно с одного домена идти. Но всё-же зачем субдомены и редиректы? Почему?

А вот и ссылочка, кстати. Оба проекта стоят на сервере Resin/2.1.6. В Google по запросу Resin на первом месте сайт caucho.com. Оказывается какой-то хитрый HTTP сервер, который high-performance с load balancing. Нужно будет расковырять его, посмотреть что он, как он и зачем он.

Исследования Load Balancing и Performance для сайтов

Если кого-то волнует, куда я пропал и почему так затих – всё очень просто – я ушёл в работу.

На этой и прошлой неделе моей любимой темой был Load Balancing.

За это время я успел познакомиться с возможностями Lighttpd и его mod_cache, mod_proxy, mod_proxy_core, поставить FreeBSD, на нём закрутить Lighttpd + PHP под FastCGI. Кроме того пересмотрел nginx и его ngx_http_upstream и взглянул на Apache 2.2 с его mod_proxy и mod_proxy_balancer.

Больше всего мне понравились Lighttpd и Apache 2.2. Жаль, вот только, что Apache – это жирноватая корова по сравнения с Lighttpd, а с Lighttpd пугает его свойство зависать на огромной загрузке, и не ясно, избавились ли от него; и очень огорчил mod_cache у Lighttpd – я думал это полноценный модуль, а это ужасных хак. Этот хак не входит ни в одну стандартную постановку моего любимого FreeBSD, а ведь та простота, с которой можно организовать кеширование манит. mod_proxy_balancer доступен только от версии 1.5, а она ещё не признана стабильной, а возможностей у него куда больше, чем у mod_proxy.

Вообще, чти я скажу – ситуация в выборе ПО для Load Balancing на уровне HTTP отличная – выбор есть, нет ничего сложного в реализации, главное выбрать определённую платформу. В ближайшие месяцы я уже наверное смогу сказать, что выбрано и как себя ведёт.

Ещё, что касается Load Balancing – так пересмотрел в MySQL как работает Replication и даже дома собрал небольшую модель из одного мастера и 3 слейвов, посмотрел как всё запускается, как реплицируются данные, как ведёт себя сервер после падения на короткий срок и восстановления работоспособности.

Кстати, MySQL выпустил интересное начинание: MySQL Proxy. Если к версии 1.0.0 она была-бы стабильная, отлично поддерживала балансирование и кешинг, плюс возможность задать read-only и write-only сервера, да и документации сопровождающей много с примерами – получилась бы отличное решение для загруженных систем.

Ещё в исследование входило общее поднятие Performance у сайта.

За всё время ещё не мало перечитал дополнительной литературы (блоги, статьи, касты разные) по MySQL, оптимизации запросов, планировании индексов, их использовании, оптимизации запросов со стороны MySQL. В Google Reader было добавлено не мало ресурсов связанных как с оптимизацией MySQL, так и на темы Load Balancing. Так-же в этой теме очень сильно помогают разные тесты на средних и больших кол-вах данных. Не раз запускался ab – Apache HTTP server benchmarking tool, который позволял сравнить время работы разных запросов к тем-же данным с/без индексов и прочих мелких условиях.

Continue reading →