Не могу молчать об этом!
Ковырялся тут с флешем. Это может шокировать любого IT специалиста.
Класс:
var A : Number = 0.0;
A = A*2*4;
И его дизассемблятина:
5 pushdouble 0
7 convert_d
8 setlocal1
9 getlocal1
10 pushbyte 2
12 multiply
13 pushbyte 4
15 multiply
16 convert_d
17 setlocal1
Даже в 21м веке остались подходы из 80ых! Долой оптимизаторы!
На железе с гигафлопом итоговая производительность в районе полутора мегафлопов.
p.s.: haXe транслирует так же.
16битная математика для 8051 / ADuC847. Обычная и стандартная задача, встречающаяся сплошь и рядом. Просто? Давайте посмотрим.
Пусть у нас есть два 16битных беззнаковых числа во внутренней памяти: U1:U0 и V1:V0. Нужно вычислить их произведение, результат сложить в регистрах R0-R3.
(далее…)
Продолжаем эпопею с прямым проигрыванием записанных 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
(далее…)
В прошлый раз, было описано как измерить температуру с помощью термопары. Термопара позволяет производить измерение в довольно широком диапазоне, но в случае, когда нужна высокая стабильность измерения и чуствительность к малым изменениям — применяют термосопротивления.
Термосопротивления работают в меньшем диапазоне (до 600 градусов в пределе), зато они описываются полиномом второй степени (третьей, если включать отрицательный диапазон), имеют очень высокую стабильность считываемого показания (поскольку сигнал измеряется десятками Ом на градус, а не милливольтами).
(далее…)
Поскольку WavPlayer, который был разработан, в первую очередь предназначается для проигрывания файлов, записываемых Asterisk,то логично, что в рассылке всплыл впопрос: а играет ли он .wav49?
Update: WavPlayer 1.7.1
Свежак: выложен WavPlayer-1.2 с поддержкой RAW файлов: sln, alaw, ulaw и возможностью создания интерфейса на JS
(далее…)
Define: var busy = 0; // In accessible context
Lock: if (++busy!=1) { –busy; return; }
Unlock: busy=0;
Один из лучших простых методов блокировки на JS. хотя и не идеальный — ++busy не атомарный :( поэтому теоритически может получиться так, что два кода одновременно начавших выполнять этот иф — и оба не выполнятся. но никогда не будет такого, что оба выполняются.
При работе с телефонией частенько всплывают файлы, записанные в 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 кодека.
(далее…)
Достаточно часто встречается в современной семантической верстке проблема: логически, есть список элементов. А визуально дизайнер хочет разместить это в виде таблички. Что же делать? Выдавать на-гора обертки дива за дивом, и ставить им display:table? Отказываться от семантики?
(далее…)
Волею судеб, идёт сейчас крупная битва за урожай борьба с подъёмом и рулением Skype клиентами под Linux. Посольку Naked Skype так и остался только спекой, приходится жить со стандартным клиентом.
(далее…)
Теперь посмотрим реализацию на практике измерения температуры.
(далее…)
Вы же часто видели классическое оглавление?
А..................1
Б..................2
В..................3
Как получить его в HTML+CSS без использования кучи точек и сложного выравнивания?
(далее…)
Казалось бы: классическая задача. Есть термопара (ХА, ХК, ПП), подключенная к АЦП (между AIN1-AIN2), есть датчик температуры разъема (TC1047A). Нужно получать периодически температуру. Чего проще?
(далее…)
Создание удаленной факс-машины представляется довольно громоздкой системой. Как правило, для решения устанавливают Samba на сервер, на котором установлен Asterisk, на ней поднимается виртуальный принтер.
Мне же требовалась факс машина на удаленном сервере. То есть, сервер с asterisk находится не в локальной сети, а в локальной сети нет ни одной машинки с линуксом. Конечно, можно было установить andLinux или голый coLinux… Но это очень сильно попахивало забиванием гвоздей паровым молотом. Можно, но что-то не для того он предназначен.
Посему родилась такая схема:
1. Ставится виртуальный принтер http://sourceforge.net/projects/imageprinter/
2. В нем ставится формат TIFF + FAX3 + Multiple page, с сохранением в C:\FAX и запуском после C:\FAX\fax.vbs
3. В c:\fax\ складывается файлик fax.vbs
Получается так: пользователь печатает на Imageprinter, получает в ответ запрос на какой номер отправить факс, затем fax.vbs делает следующее:
1. Пакует rar’ом картинку (что сильно утрамбовывает ее. если рара нет — уйдёт непакованное)
2. отсылает POST’ом по http эту картинку на http://куданадо/fax/?fax=введенныйномер
На сервере /fax/index.php производит следующее:
1. Распаковывает картинку (если пакованная)
2. Создаёт .call файл
3. Переносит его в spool директорию астериска, в outgoing.
Пример кода приведён в конце записи. Пример не содержит авторизации, обхода проблем прав доступа и тд, однако подойдёт для начала экспериментов.
Скачать: fax.vbs + index.php
P.S.: Для asterisk-1.4 TxFAX и RxFAX берут отсюда.
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 и всё вернулось на круги своя.
Ну, кроме настроек, разумеется. Но это уже отдельная песня.
как выяснилось, одного фикса с ` ему мало.
Еще обнаруженные проблемы:
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. Ну и как писано выше –
после
Взять поправленную версию можно тут: my2pg-133
Дополнение: так же обнаружились проблемы с импортом NULL полей и добавлена обработка ON UPDATE CURRENT_TIMESTAMP.
Что ж, попробую запустить блог полезными записями..
Сегодня понадобилось отконвертить дамп из мускула для скармливания pgsql’ю. Лёгкий гуглинг в момент нашел скрипт my2pg.pl, однако он сломался на первом же: бэк-тики в названиях (`field`).
Фикс оказался самым простейшим, после
воткнуть