SYStem EXclusive

Я тут пешу - чего же боле…

Чудеса техники

February 28, 2009

Разогреваючи суп дня в микроволновке и одновременно просматривая за кухонным столом кино на AA1, были замечены зависания видео. Нужно сказать, что видео у меня тащится с домашнего сервера, соответственно по wi-fi. На третий или четвёртый раз было замечено, что артефакты проявляются в аккурат при включении микроволновки. Я тут же сделал предположение, что это взаимосвязано по причине близости радиочастот микроволн, разогревающих суп, и WLAN. Был обсмеян женщиной, ну да что они понимают, глупые, в физике радиоволн, хехе.

Давечи, сижу за рабочим ноутом - работаю, качаю торрент, слушаю музыку всё с того же сервера и копирую какие-то файлы на сервер - wi-fi сеть загружена по-полной. Ставлю супчик в микроволновку, возвращаюсь в комнату - коннект начинает рваться и рушиться.

Нужно заметить, что микроволновка у нас самая простецкая, из чего делаю вывод, что экранирует своё излучение она слабо, лишь бы домохозяйки не поджарились. Тут меня моё предположение уже заинтересовало всерьёз. И что же - я был удивлён результатами гугленья “wi-fi микроволновка” - моё предположение было верным даже чересчур. Оказывается - мало того, что они работают на близких частотах - прототипом первого wi-fi была микроволновка! И сделал это опять-таки голландец, не перестаю удивляться качеству их сами-понимаете-чего.

А вот и слайды

mv.jpg

А, ну да - всех служивых - с 23 февраля.

February 23, 2009

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

А вот тут налабал я чутка на ней, записав в программе Mixcraft, которая оказалось тоже у меня в общем-то случайно, по просьбе одного хорошего человека искал “Гараж-бэнд для виндовс”. Такой получился себе тест-драйв.

Итак - три, два, один -  демо-блюз

Вольно! По-распорядку.

AMFPHP и Zend_Amf не работает с mbstring

February 23, 2009

Выяснилось грустное -  ни одна из этих библиотек не работает при включённом mbstring.func_overload = 2. Что это значит практически - при включённой mbstring - библиотеки выкидывают эксепшн при попытке вычитать AMF из сокета. При выключенной mbstring - невозможность нормально обрабатывать кириллицу строковыми функциями php (кодировка, понятно, UTF-8). При том, что причина ясна - некорректное определение длины строки перегруженной функцией strlen, пофиксить это довольно сложно. Я попробовал решить проблему “в лоб”, написав обёртку и поиском/заменой заменить strlen на патченую функцию. Ниалё. И вот тут уже просто в полный рост торчат уши пехепе, как языка принципиально неспособного нормально работать с байтовыми потоками напрямую. Я имею ввиду, что всё это бинарно-безопасное чтение сокетов - оно всё псу под хвост, потому что считанные данные всё равно в итоге обрабатываются строковыми функциями, ибо другого способа просто нет. Или есть? Или я ниалё?

(С) не помню кто - Чем больше узнаю php, тем больше хочется перейти на python. Понимающим пацанам - в питоне как оно вообще с бинарными сокетами, с многобайтными кодировками? Со вторым, подозреваю, всё должно быть нормально - всё-таки голландец язык придумывал, с проблемой должен быть знаком не понаслышке.

AMFPHP vs Zend_Amf benchmark

February 23, 2009

Провёл праздники в жёстком дебаге:)
В том числе мимоходом потестировал сравнительную скорость Flex+AMFPHP и Flex+Zend_Amf.
Суть бенчмарка - последовательный вызов методов RemoteObject, с передачей параметров разного типа (integer, object, array, date etc) и последовательный вызов методов, возвращающих разные типы.  На  самом деле тест делался для других целей, но визульно сравнить скорость работы серверной стороны тоже стало интересно.
Тест относительный - то есть понятно, что в разных конфигурациях серверной машины, скорость ответа сервиса будет различна, но отношение результатов бенчмарков между собой - примерно одинаковым.

1. Результаты AMFPHP. При дёргании сервера - инициализируется AMFPHP, Zend_Loader, Zend_Db и прочие-некторые классы. В общем - bootstrap.
1. Результаты теста для AMFPHP 1.9.
Приблизительно 3.5 секунды на все вызовы сервиса. Ещё непонятно - много это или мало.

2. Результаты  Zend_Amf, включённого по “классической” схеме. При дёргании сервера - всё то же, что в предыдущем случае, только вместо AMFPHP - Zend_Amf.
2. Результаты  теста для Zend_Amf, включённого по
Приблизительно 4.2 секунды. Медленнее, чем AMFPHP, приблизительно на 15%.

3. Результаты  Zend_Amf, включённого по схеме, предложенной здесь. По моему разумению, это было бы замечательно - поддерживается хорошая архитектура приложения, где AMF gateway просто ещё один Action Controller. Инициализируются Zend MVC, Front Controller, в общем по обычной схеме приложения ZF.


Приблизительно 7.2 секунды. Никуда не годится!

Выводы такие сделал -
1. ZF - тормозная хрень (однако, справедивости ради - очень гибкая),  выбирать скорость разработки или скорость приложения нужно осторожно.
2. AMFPHP, и Zend_Amf - приблизительно равны по скорости, и, думаю, приблизились к своему пределу. Я имею ввиду, что принципиальных отличий в работе с AMF между этими библиотеками нет, а есть отличия архитектурные.  И отличия эти, как ни жаль, в пользу AMFPHP. А жаль потому, что библиотеку никто не поддерживает. Но тут, опять же, есть надежда, что  Zend_Amf будут развивать. AMFPHP опять-таки побыстрее будет, палюбому.
3. Использовать Zend_Amf в “классической” схеме ZF action controllers - не стОит, стОит ли вообще - решать вам.

Клиентская часть теста в работе.
Исходник клиентской части.
Исходник тестового сервиса.
Версии, использовавшиеся для бенчмарков - AMFPHP 1.9, Zend Framework 1.7.5

Здравствуй, мама, пишу тебе из горящего танка

February 14, 2009

Для антикризисных мер приобрёл себе нетбук Acer Aspire One 110b, махонький такой. Антикризисные меры заключаются в том, чтобы порадовать себя, не покупавшего уже почти год себе, любимому, никакой железки, даже самой пустяшной.

Первое удивление оформилось ещё до покупки - в “Кее” девайс стОит 8990р, в “РИКе”- 7800. Потратил два лишних часа, сгонял в магаз на Литейном - сэкономил 1190р (антикризисное предложение опять же).

Второе удивление - после включения. При попытке присоединиться к сети - вылетает системная ошибка о том, что невозможно проинициализировать HAL. И всё, ну то есть нетбук с этим самым нетом работать отказывается наглушняк. Читал я перед покупкой всяко отзывы, составил мнение, что стоИт на девайсе дистрибутив на основе Fedora, обрезаный по самые помидоры, но такого не ожидал. Малость погуглил. Решил для начала перешить bios, кстати, в первый раз в жизни. На удивление, после процедуры, всё подхватилось и заработало. Я даже не ожидал столь быстрого решения проблемы.И на фоне осталась мысль - а может тот, который в “Кее”  - в порядке работает с прилавка?

Сложившееся по отзывам впечатление, что девайс сырой и явно не для блондинок, - подтвердилось.

У вас вся спина белая

February 11, 2009

У ботов, которые приходят в гости к моему блогу, любимая фраза - “У вас RSS в кривой кодировке!”

Зайки

February 11, 2009

В быстром темпе сделали в конторе маркетинговую замануху про Acer Aspire One.
Серверной части - меньше  минимума: AMFPHP, Zend_Mail.
Клиентская часть - Flex для логики и Flash CS3 для спрайтов и прокручивания мультегов.
Успешно получается разделять работу между аниматором и программистом.
love1.jpg

Такие зайки получаются

Дмитрий Юрич, всё пучком, билеты на кармане

January 21, 2009

dprnr.jpg

Этот дядька умеет придумывать, как копеечку заработать.

UPD: было круто, без дураков. И фильм отличный - как в старых-добрых фильмах Гая Ритчи герои жгли все абсолютно. И Дмитрий Юрич - как живой был, держал перед фильмом преведственную речь, озвучивал задорно. Отдельно порадовала в саундтреке дорожка “Сектора Газа”.

http://oper.ru/news/read.php?t=1051604039

Кто же такие эти миасцы?

December 17, 2008

Ubuntu server 7.10

Всё таки я её ушатал силой мысли. Вот так вот - раз, хрусть - и пополам. Предупреждали же меня - Running e2fsck on a mounted filesystem may cause SEVERE filesystem damage. Сразу вспоминается послоувица, что дураку стеклянный хер ненадолго. Ну да ладно, на то и была поставлена - для опытов. Соответственно, гуглим, совсем damaged или как-то ещё можно repair. Гугол повеселил.

wtf_miass.gif

Первая мысль - суровы жители города Миасс (так вроде?), если развлекаются аварийным восстановлением линукса.

Говнокод

November 11, 2008

Вводная - во флеш-ролике в какой-то момент времени компонент оказывается недоступным для родительского контейнера. Проявляется баг непредсказуемо настолько, что за полчаса кликаний не удалось выяснить причину. Причём происходит это в момент инициализации-переинициализации нескольких мувиклипов, флешевого компонента, параллельно твинается анимация.

Как результат - выбрасывается ошибка ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. и приложение встаёт раком.

Что-то подсказало мне, что затронуты настолько тонкие материи, что в исправлении бага я могу провести остаток дня.
Как вариант изобрёл говнокод. Это - AS3, но тут это - неважно, главное - сам принцип.

Actionscript:
  1. // method that break down the application
  2. public function hide():void
  3. {
  4. try
  5. {
  6. removeMenu();
  7. TextField(txtTitle).text = '';
  8. // WTF place - this setter raise error
  9. TextArea(txt).htmlText = '';
  10. } catch (e:Error) {
  11. // russians are not surrender!
  12. // catch error and call them recursively
  13. trace(e);
  14. hide();
  15. }
  16. }

Вкратце - если случается ошибка (примерно 2% вызовов) - рекурсивно вызываем себя снова, на этот раз уже всё ок.
Я бы лично вот за такой код закидывал тухлыми яйцами.
При плохом раскладе его может просто зациклить (в моём случае, правда, это работает на 100%, ну может на 99.и много девяток).
Вот так вот и рождаются байки об индусах.
А зачем я это написал? Так, в порядке самокритики и чиста поржать. А, ну да, раскрашивалку кода потестить.