Понадобилось тут. Заманался гуглить готовые решения — собрал.
Пакеты для amd64 лежат тут.
Для самостоятельной сборки под другие архитектуры, скачайте
php5_5.2.13-1.diff.gz
php5_5.2.13-1.dsc
php5_5.2.13.orig.tar.gz
2010-04-12
PHP 5.2.13 for Debian Squeeze
2010-01-27
WavPlayer 1.7.1 — full JS api and support for reversed order bits .lu and .la
New version of WavPlayer, 1.7.1 released.
(далее…)
2009-11-29
Asterisk records flash player — WavPlayer 1.6.1
Продолжаем эпопею с прямым проигрыванием записанных asterisk’ом файлов. Новый релиз WavPlayer: 1.6.1.
Скачать полно дерево исходников WavPlayer-src-1.6.1.7z(463Kb) либо просто пример интеграции: WavPlayer-sample-1.6.1.tar.bz2(30Kb).
Update: WavPlayer 1.7.1
(далее…)
2009-10-19
WavPlayer — flash player for asterisk sounds
Всё, для полноты картины, в WavPlayer были внесены последние изменения:
- Добавлена поддержка .alaw, .ulaw, .sln сырых файлов.
- Добавлено вычисление длины записи, чтобы можно было выводить прогресс
- Добавлены callback’и в js, таким образом можно сделать полноценный интерфейс на JS
Скачать его можно отсюда: wavplayer-1.2.tar
Теперь, и с README.txt внутри :)
Update: WavPlayer 1.7.1
Свежак: WavPlayer-1.6.1 с примером интеграции, возможностью позиционирования по файлу и паузой.
(далее…)
2009-10-18
WavPlayer 1.1 — flash wav/au/gsm player
Поскольку WavPlayer, который был разработан, в первую очередь предназначается для проигрывания файлов, записываемых Asterisk,то логично, что в рассылке всплыл впопрос: а играет ли он .wav49?
Update: WavPlayer 1.7.1
Свежак: выложен WavPlayer-1.2 с поддержкой RAW файлов: sln, alaw, ulaw и возможностью создания интерфейса на JS
(далее…)
2009-10-17
Thread locking for JS
Define: var busy = 0; // In accessible context
Lock: if (++busy!=1) { –busy; return; }
Unlock: busy=0;
Один из лучших простых методов блокировки на JS. хотя и не идеальный — ++busy не атомарный :( поэтому теоритически может получиться так, что два кода одновременно начавших выполнять этот иф — и оба не выполнятся. но никогда не будет такого, что оба выполняются.
2009-10-15
WavPlayer – wav/au player on flash
При работе с телефонией частенько всплывают файлы, записанные в 8Khz, и кодированные в PCM/G.711a/G.711u. Что делать, если нужно обеспечить проигрывание этого файла с веба? Нужен wav/au flash player. Но флеш поддерживает только mp3…
Update: WavPlayer 1.7.1
Свежак: WavPlayer-1.6.1 с примером интеграции, возможностью позиционирования по файлу и паузой.
Свежак: выложен WavPlayer-1.2 с поддержкой RAW файлов: sln, alaw, ulaw и возможностью создания интерфейса на JS
Свежак: выложен WavPlayer-1.1 с поддержкой GSM кодека.
(далее…)
2009-10-03
Вывод списка в табличной форме
Достаточно часто встречается в современной семантической верстке проблема: логически, есть список элементов. А визуально дизайнер хочет разместить это в виде таблички. Что же делать? Выдавать на-гора обертки дива за дивом, и ставить им display:table? Отказываться от семантики?
(далее…)
2009-09-04
Hardware рулит, или о пользе гистерезиса.
Практически все аппаратные системы обладают гистерезисом: отставанием реакции на приложенные силы. Когда-то это плохо (например, передавать сигнал без сдвига фазы), когда-то это используют (те же магнитные способы записи).
Но не мешало бы об этом вспоминать и при разработке софта! На днях столкнулся с очень отвратительным поведением Firefox: если по hover размер блока изменяется, и при этом объект уходит из-под мыши — блок теряет hover. Возвращается к прошлым размерам и снова применяет hover. Некрасиво.
попробуйте сами, наведите на правый край этого квадрата:
Кстати опера работает лучше: потерю hover она отрабатывает, но восстановление после этого hover опять игнорируется. Хотя решение всё равно не идеальное — прыгает при движении мыши. Что, в общем-то, лучше, чем постоянно прыгающее в статичном состоянии.
<html> <head> <style> a { display: block; border: 1px solid red; width: 100px; height: 100px; background: blue; } a:hover { display: block; border: 1px solid red; width: 50px; height: 100px; background: blue; } </style> <body> <a href="test">test</a> </body> </head></html>
2009-08-13
Автоматические многоточия
Вы же часто видели классическое оглавление?
А..................1 Б..................2 В..................3
Как получить его в HTML+CSS без использования кучи точек и сложного выравнивания?
(далее…)
2009-07-15
Gallery2+Drupal repair
English, in short: if you have troubles after Gallery2 database crash, you should reinstall gallery2, then you will still have errors in drupal like
Error (ERROR_MISSING_OBJECT) : 1 GalleryUser
that problem fixed by manual creation of mapping of drupal admin to gallery2 admin with
INSERT INTO `g2_ExternalIdMap` VALUES ('1', 'GalleryUser', '6');
After that you should do again drupal users export to gallery2, and re-create albums from old g2data folder.
После «неосторожного обращения с mysql» были убиты файлы данных innodb, в которых лежала фотогалерея Gallery2, встроенная в друпал. Разумеется, сайт себя начал плохо чуствовать, а галерея померла в принципе.
Папка g2data была срочно забекаплена для восстановления всех 600 метров ужасов от юзеров, в базе мускула все g2_% таблицы были почиканы и сама галерея переустановлена.
Вот тут-то началось веселье. Было невозможно ни включить ни выключить плагин в друпале, постоянно ругалось на битость галереи.
Вылечилось ручным созданием маппинга друпал админа на админа галереи (в друпале админ всегда uid=1, а в галереи свежеустановленной админ имеет id=6)
INSERT INTO `g2_ExternalIdMap` VALUES (’1′, ‘GalleryUser’, ‘6′);
После этого нормально отключились доп плагины галереи и удалось провести полноценный экспорт всех юзеров.
Затем просто вкомил в качестве «загрузка с сервера» папку old-g2data/albums и всё вернулось на круги своя.
Ну, кроме настроек, разумеется. Но это уже отдельная песня.
2009-07-14
Opera scrollbar problem
English version, in short: if you have some block for all size of screen, that should cut-off all content (width/height 100% + overflow: hidden), opera cuts off its content, but left scrollbar for empty content.
To fix that problem, you can try replace
#some { overflow: hidden; width: 100%; height: 100%; }
with
#some { overflow: hidden; position: absolute; left:0; right:0; top:0; bottom:0; }
That helps opera to correctly cut-off all content without adding scrollbar. That doesn’t break Mozilla/Safari/Chrome, but breaks even IE8, so you should override CSS for IE8 with conditional comments.
Поговорим опять о багах в Опере. на этот раз — лишний скроллбар.
Вот у нас есть код:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"> <head> <link rel="stylesheet" href="screen.css" type="text/css" /> </head> <body> <div id="nofooter"> <div id="main-page-sizer"> <div id="main-page-wrapper"> <div id="main-page"> <div id="main-bg"></div> </div> </div> </div> <div id="footer-pusher"></div></div> <div id="footer"> <div id="logo-footer-mover"><div id="logo-footer"></div></div> </div> </body> </html>
И парный к нему CSS:
html{ height: 100%;} body { height: 100%; margin: 0; padding: 0; position: relative; background: #6c1700 50% 0; } #nofooter{ min-height: 697px; min-width: 1000px; height: 100%; margin-bottom: -1px; position: relative; } #footer-pusher { height: 1px; clear: both; line-height: 1px; font-size: 1px; } #footer { height: 1px; line-height: 1px; min-width: 1000px;} #main-page-sizer { min-height: 697px; margin-bottom: -1px; height: 100%; width: 100%; overflow: hidden; position: relative; } #main-page-wrapper { margin: 0 -140px; overflow: hidden; height: 100%; } #main-page { background-color: #4c1700; width: 1280px; height: 100%; margin: 0 auto; position: relative; background: red; } #main-bg { background: green no-repeat; position: absolute; left: 356px; top: 0; width: 634px; height: 970px; } #logo-footer-mover { width: 202px; height: 1px; margin: 0 auto; position: relative; } #logo-footer { background: blue; width: 202px; height: 71px; position: absolute; top: -70px; left: 0; }
Итоговая страница тянется по Y от ~700px до 1000px без скроллбара, причем во всем этом пределе от main-bg видно столько, сколько влезло.
(На самом деле, блок main-page имеет размер 1280*970px, и в нем может быть размещено что угодно, причем это что угодно будет отцентровано по иксу в размерах от 1000px (при сжимании от 1280 до 1000 слева и справа части скрываются без появления полосы прокрутки), и прижато по игреку к верху, причем всё, находящееся внизу ниже 700px отрезается тоже без появления полосы прокрутки. При размере больше 970px размер main-page должен быть 100% (там сейчас и прописано 100%), чтобы другие расположенные в нем блоки с height=100% были максимум, всё остальное занимает его бекграунд.
Забудем про проблемы IE (они легко фиксятся через expression для 6 и 7), и поговорим о интересном баге с прокруткой в опере.
При сворачивании, как только размер #main-page-wrapper становится меньше размера #main-bg, то содержимое #main-bg корректно обрезается, но появляется полоса прокрутки, несмотря на overflow:hidden. Причем за пределами ничего нет, там показывается только бекграунд от body.
После долгих копаний, удалось найти workaround вокруг этой проблемы: вместо
#main-page-wrapper { overflow: hidden; height: 100%; }
Используется
#main-page-wrapper { overflow: hidden; position: absolute; left: 0; top: 0; bottom: 0; right: 0; /* Opera scrollbar workaround */ }
То есть меняем блок, с параметрами width/height: 100%+overflow:hidden на position: absolute 0/0/0/0 + overflow:hidden.
Теоритически, это одно и то же. На практике созаёт проблемы с IE8, которые лечатся через условные комментарии и переопределение на position:static+height:100%.
В общем, это решает проблему… но не совсем. В результате всё хорошо показывается если загрузить страницу в каждом из разрешений.
Если же загрузить в маленькое окно и начать тянуть только за нижнюю границу — то отрисовка бекграундов-изображений не повторяется, рисуется только сплошной цвет. До тех пор, пока окно не будет изменено еще и по горизонтали, или не будет перезагружена страница.
Workaround’а для этой проблемы уже не удалось найти.
2009-05-06
my2pg.pl: продолжение
как выяснилось, одного фикса с ` ему мало.
Еще обнаруженные проблемы:
1. В после конверсии INSERT в COPY числа с плавающей точкой (1.0 например) превращаются в две колонки. Бред тот еще. Лечится правкой $colRe:
my $colRe = qr/(?:'[^'\\]*(?:\\.[^'\\]*)*'|[\w.+-]+)/;
2. DROP TABLE IF EXISTS оставляет после себя висящую «;». Мелочь, а неприятно. Заодно остаются USE …; LOCK и UNLOCK…
Вылечилось заменой блока дропа на:
s/^DROP\s+TABLE\s+IF\s+EXISTS([^;]+);//; # remove USE database; s/^USE\s([^;]+);$//; # remove LOCK & UNLOCK clauses s/^(UN)?LOCK TABLES[^;]*;$//; # remove mysql-specific comments s/^\/\*![0-9]+ .*?\*\/;$//;
3. ENUM тип теперь поддерживается нативно, а потому сишный код для него лишний. Выкинута вся генерация .cшки относительно этого типа, и перед s/enum… воткнуто
$types .= "CREATE TYPE $typename AS ENUM ('".join("','",@item)."');\n";
4. Ну и как писано выше –
s/`//g;
после
if($tabledef) {
Взять поправленную версию можно тут: my2pg-133
Дополнение: так же обнаружились проблемы с импортом NULL полей и добавлена обработка ON UPDATE CURRENT_TIMESTAMP.
2009-05-05
Попробуем оживить блог работой.
Что ж, попробую запустить блог полезными записями..
Сегодня понадобилось отконвертить дамп из мускула для скармливания pgsql’ю. Лёгкий гуглинг в момент нашел скрипт my2pg.pl, однако он сломался на первом же: бэк-тики в названиях (`field`).
Фикс оказался самым простейшим, после
if($tabledef) {
воткнуть
s/[`]//g;