Встаньте в очередь!

Встроенная камера ноутбука уже давненько определялась "через раз", был выработан целый шаманский обряд для её включения, но видимо я чем-то прогневил Великого Байта и последние месяцы камера совсем, что называется "отвалилась". Поэтому "случайно" посетив большой магазин с кучей техники, "случайно" же приобрёл usb-вебкамеру. Вопреки опасениям камера определилась и заработала (в skype) сразу же, без каких-либо танцев с драйверами, настройками, поиском anus-ware решений и т.п. дребеденью непременно сопровождающей подключение «любого» периферийного устройства в linux. Это не может не радовать!

После перезагрузки вдруг перестал работать звук в flash. Недлительное гугление рассказало о какой-то libflashsupport, которая немедленно поможет справиться с недугом, но внутренний голос пробасил что-то вроде «ты же не менял никаких настроек уже несколько недель». Что характерно – звук в amarok, vlc и skype работал исправно, но было замечено что в kmix первой закладкой было устройство под названием "USB Device 0x46d:0×825" вместо обычной "HDA Intel", которая стала второй. Запустил alsamixer – и точно, устройством по-умолчанию стала новоявленная карта, у которой даже и playback-а-то нет. Но видимых настроек у flash-player-а нет, поэтому надо было исправлять ситуацию "системно".

Поскольку уже имелся негативный опыт ковыряния с asound.conf(.asoundrc), то сразу стал искать способ либо переименовать устройства (вроде того, как переименовывают eth* правилами в udev) или определить порядок загрузки драйверов – лишь бы не трогать asound.

И способ нашёлся – в /etc/modprobe.d/sound.conf добавлены следующие правила:

options snd_hda_intel index=0
options snd_usb_audio index=1

После перезагрузки карты выстроились в порядке живой очереди:

$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xa5100000 irq 41
 1 [U0x46d0x825    ]: USB-Audio - USB Device 0x46d:0x825
                      USB Device 0x46d:0x825 at usb-0000:00:1d.7-5.4, high speed

lj-tagcloud


Сделал вот такой смешной tag cloud для ЖЖ-истов. На картинке не разобрать что это и как этим пользоваться, но пройдя по ссылке можно узреть как это выглядит вживую.

За основу взят флеш-ролик от чудо-плагина для WP от Roy Tanck

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

Сделано just for fun, поэтому все спасибы и пожелания можно оставить в комментариях, а все претензии – в газете “Гудок”.

05.02.09  |  ,  | стань первым

Cross Domain XMLHttpRequest

Задачи обмена информацией ставятся и успешно решаются каждый день. Но обмениваться можно по-разному. Кто-то дарит удобоваримый доступ к своей базе посредством распространённых обменных форматов (xml, csv, json, lisiy_chert), кто-то реализует собственные API, а кто-то идёт другими путями.

Моя задача состояла в следующем – на ресурсах-сателитах необходимо разместить сложную форму. “Сложность” формы заключается в том, что данные подгружаются с главного ресурса и не могут быть загружены единовременно(при загрузке ресурса) или доставлены на ресурс-сателит заранее (так-так данных очень много и они достаточно быстро устаревают). Всевозможные API для доступа к информации основного ресурса в настоящий момент разрабатывать нецелесообразно, поэтому было решено для сателитов предоставлять некий готовый комплекс (аля plug-n-play).

Ещё до начала разработки я тщательно изучил уже имеющиеся механизмы для межсайтового обмена данными. Первым и самым перспективным был вариант использования flash-плеера, но единственный вменяемый пример FlashXmlHttpRequest был только лишь примером, а не законченным куском кода, которым бы можно было воспользоваться. jQuery на тот момент даже не содержала функции $.getScript, JSHttpRequest с созданием тега script удачно справлялся, но POST по понятным причинам делать не мог.

Данные с главного ресурса могут подгружатся посредством динамического создания тега script jQuery.getScript, с этим казалось бы проблемы нет. Но! Но последним шагом в указанной форме нужно отправить на основной сервер внушительный объём данных, которые могут не влезть в GET (тоже кстати говоря весьма интересный вопрос – а каково ограничение на длину URL в разных браузерах? в различных веб-серверах,прокси и фильтрах? – в RFC2616 об этом не сказано). Можно конечно изобрести какие-либо механизмы, например отправлять данные небольшими порциями GET-ом, но скорости такая схема явно не прибавит, поэтому такие варианты оставлены другим изобретателям.
(more…)

03.10.08  |  ,  | 4 comments

stop “click to activate and use this control”

Аллилуйя! Это-таки случилось. M$ получила лицензию от Eolas на метод внедрения медиа-контента на html-страницу. Назойливое сообщение уйдёт известным путём в известном направлении. Где-то в декабре эту мерзость можно будет убрать путём скачивания виндового апдейта. Ну а в апреле обещают xp sp3, который окончательно удалит эту мозоль. Поздравляю всех “затронутых”.

первоисточник

Technorati Tags: , , ,

10.11.07  |  , , ,  | 3 comments

Announcing the SWFFix project

Geoff Stearns и Bobby van der Sluis задумали осуществить маленькую революцию и наконец “устаканить” процедуру вставки flash-ек на web-страницы.

Товарищи(господа?) решили сделать “мега-супер-пупер” универсальную библиотеку для вставки swf в (x)html-страницы, избавляющую от вездесущих глюков и багов в MSIE различных браузерах, объединив функционал SWFObject и UFO и не упустив из виду другие популярные swf-related приложения (вроде SWFAddress и SWFUpload)

И дело анонсом не закончилось – уже есть сводная таблица методов внедрения swf и поддержкой оных в различных браузерах, которая впрочем пока (надеюсь только пока) не содержит linux-овых бродилок.

От всей души желаю товарищам(господам?) удачи!
Upd: “Это” скоро кончиться
Technorati Tags: , , , ,

20.02.07  |   | 2 comments

FlashTracer

Нашёл сегодня полезный (для web-разработчиков) extension для firefoxFlashTracer.

Суть должна быть ясна из названия – он “вываливает” всё что trace-иться (выводиться функцией trace) в swf-ках в sidebar браузера(разумеется флешка должна быть открыта в браузере). Крайне удобно отлаживать flash-приложения прямо в браузере (подгрузка-отгрузка и т.п. работа с внешними ресурсами крайне неудобна в отладке если работать во Flash IDE). Для работы этому чуду требуется debug-версия флеш-плеера(впрочем об этом написано по ссылке выше).

Из замеченных проблем – “кракозяблица” из кирилических символов независимо от кодировки оных – ну да что там – будем терпеть (потому как копаясь в коде я так и не понял каким-таким махером беруться данные от плеера) и ждать новой версии.

Update: расширение обновлялось-обновлялось и обновилось до версии 1.3.1 – и теперь проблем с кирилицей больше нет (ну и внешний вид поменялся в лучшую сторону).

P.S.
сайт mozdev лежит лежал… но как красиво ;o)

Technorati Tags: , , ,

03.10.06  |  ,  | стань первым

Третья и недеюсь заключительная часть эпопеи вокруг IE, Flash и ActiveX.

Исходные данные:

  • есть html с swf-ками
  • есть IE
  • есть рамка вокруг swf-ок и hint с напоминанием о том что для использования объекта надо сначала его активироваит кликом
  • есть вполне себе самодостаточный инструмент для внедрения флеша в html, который помимо того что замечательно детектит версию плеера, показывает альтернативный контент для тех у кого не обнаружилось необходимого плеера и вообще супер-комбайн – SWFObject, заодно избавляет от этих злосчастных рамок.
  • ну и наконец есть “сто тыщ милёнов” уже созданных страниц со флешем.

Имея эти данные и не имея желания переписать все уже созданные страницы для использования SWFObject я задался целью найти менее трудоёмкий путь к избавлению от “рамок”.

“Путь” желающие могут изучить по предыдущим постам, а я лишь резюмирую случившееся:

  1. В первый же день когда я обнаружил рамки, нашёлся неочевидный выход – если через document.write(‘<object … ><param…./></object>’) IE отображает объект без уродской рамки, то разработчики IE в попыхах сделали заплатку,которая рисует рамку только вовремя рендринга страницы, проверка “на вшивость” показала, что конструкция object.outerHTML=object.outerHTML; даёт тот же эффект, что позволило пройтись по всем getElementsByTagName(‘object’) и провернуть над ними “экзекуцию”.
  2. Но выяснилось что при этом теряются flashvars (в наших проектах весьма часто используемых) – пришлось весьма шаманским способом их “сохранять” при “магическом переписывании”.
  3. Далее выяснилось что подобная операция приводит к утечке памяти и краху IE. Попытки бороться с этим только “оттягивали конец” (гусары – молчать!)

Тем временем в новых проектах я уже использую SWFObject, максимально упростив работу по его внедрению посредством плагина к smarty, publish extension-а к Flash-у и матерного слова.

А мысль о том как же бороться с проклятым IE меня не покидает…

В итоге решение оказалось на поверхности – использовать swfobject для переписывания уже внедрённых флешек:

  1. берём object, добавляем перед ним div
  2. создаём swfobject, копируем необходимые данные из object
  3. удаляем object из DOM-дерева
  4. Повторяем до потери пульса

Итоговый код можно скачать по прежнему адресу flash_replacer (v 0.7) (особо отмечу что для работы НЕОБХОДИМ swfobject.js, который надо включать в html до flash_replacer-а)
В нём в данный момент нехватает аналогичного “прогона” по embed-ам, а в остальном вполне рабочий код, который на тестовых системах не вызывает падения IE.

Upd: “Это” скоро кончиться

Technorati Tags: , , ,

05.07.06  |   | 19 comments

Performance Optimization WordPress Plugins by W3 EDGE