Пещера отшельного фердопердозника

2010-02-21

Flash Compiler as Is

Рубрика: low-level programming, programming — Метки: , , , , — datacompboy @ 01:24:07 | 1,132 views

Не могу молчать об этом!
Ковырялся тут с флешем. Это может шокировать любого 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 транслирует так же.

2010-01-27

WavPlayer 1.7.1 — full JS api and support for reversed order bits .lu and .la

Рубрика: voip, web programming — Метки: , , , , , , , , , , , , — datacompboy @ 17:30:46 | 2,178 views

New version of WavPlayer, 1.7.1 released.
(далее…)

2009-12-03

Умножение

Рубрика: low-level programming — Метки: , , — datacompboy @ 16:13:08 | 1,109 views

16битная математика для 8051 / ADuC847. Обычная и стандартная задача, встречающаяся сплошь и рядом. Просто? Давайте посмотрим.
Пусть у нас есть два 16битных беззнаковых числа во внутренней памяти: U1:U0 и V1:V0. Нужно вычислить их произведение, результат сложить в регистрах R0-R3.
(далее…)

2009-11-29

Asterisk records flash player — WavPlayer 1.6.1

Рубрика: voip, web programming — Метки: , , , , , , , , , , — datacompboy @ 17:12:42 | 2,081 views

Продолжаем эпопею с прямым проигрыванием записанных 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-11-10

Теория и практика применения термосопротивления на ADuC847

Рубрика: low-level programming, programming — Метки: , , , , — datacompboy @ 02:05:01 | 1,157 views

В прошлый раз, было описано как измерить температуру с помощью термопары. Термопара позволяет производить измерение в довольно широком диапазоне, но в случае, когда нужна высокая стабильность измерения и чуствительность к малым изменениям — применяют термосопротивления.
Термосопротивления работают в меньшем диапазоне (до 600 градусов в пределе), зато они описываются полиномом второй степени (третьей, если включать отрицательный диапазон), имеют очень высокую стабильность считываемого показания (поскольку сигнал измеряется десятками Ом на градус, а не милливольтами).
(далее…)

2009-10-18

WavPlayer 1.1 — flash wav/au/gsm player

Рубрика: voip, web programming — Метки: , , , , — datacompboy @ 19:35:20 | 685 views

Поскольку WavPlayer, который был разработан, в первую очередь предназначается для проигрывания файлов, записываемых Asterisk,то логично, что в рассылке всплыл впопрос: а играет ли он .wav49?

Update: WavPlayer 1.7.1
Свежак: выложен WavPlayer-1.2 с поддержкой RAW файлов: sln, alaw, ulaw и возможностью создания интерфейса на JS
(далее…)

2009-10-17

Thread locking for JS

Рубрика: web programming — Метки: , , — datacompboy @ 19:02:24 | 2,191 views

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

Рубрика: low-level programming, voip, web programming — Метки: , , , , , , , , , , — datacompboy @ 22:59:53 | 3,512 views

При работе с телефонией частенько всплывают файлы, записанные в 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

Вывод списка в табличной форме

Рубрика: web programming — Метки: , , , , — datacompboy @ 16:16:51 | 739 views

Достаточно часто встречается в современной семантической верстке проблема: логически, есть список элементов. А визуально дизайнер хочет разместить это в виде таблички. Что же делать? Выдавать на-гора обертки дива за дивом, и ставить им display:table? Отказываться от семантики?
(далее…)

2009-09-22

Skype API on Linux

Рубрика: voip — Метки: , , , , , , , — datacompboy @ 00:27:21 | 1,496 views

Волею судеб, идёт сейчас крупная битва за урожай борьба с подъёмом и рулением Skype клиентами под Linux. Посольку Naked Skype так и остался только спекой, приходится жить со стандартным клиентом.
(далее…)

2009-08-13

ADuC847, его ADC и измерение температуры с термопары (часть 2: практика)

Рубрика: low-level programming — Метки: , , , , — datacompboy @ 19:44:35 | 791 views

Теперь посмотрим реализацию на практике измерения температуры.
(далее…)

Автоматические многоточия

Рубрика: web programming — Метки: , , , — datacompboy @ 11:42:12 | 427 views

Вы же часто видели классическое оглавление?

А..................1
Б..................2
В..................3

Как получить его в HTML+CSS без использования кучи точек и сложного выравнивания?
(далее…)

ADuC847, его ADC и измерение температуры с термопары

Рубрика: low-level programming — Метки: , , — datacompboy @ 00:56:36 | 708 views

Казалось бы: классическая задача. Есть термопара (ХА, ХК, ПП), подключенная к АЦП (между AIN1-AIN2), есть датчик температуры разъема (TC1047A). Нужно получать периодически температуру. Чего проще?
(далее…)

2009-08-02

Удаленная факс-машина на Asterisk

Рубрика: voip — Метки: , , — datacompboy @ 21:31:06 | 669 views

Создание удаленной факс-машины представляется довольно громоздкой системой. Как правило, для решения устанавливают 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 берут отсюда.

2009-07-15

Gallery2+Drupal repair

Рубрика: web programming — Метки: , , , — datacompboy @ 12:04:57 | 600 views

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-05-06

my2pg.pl: продолжение

Рубрика: web programming — Метки: , , , — datacompboy @ 15:00:45 | 485 views

как выяснилось, одного фикса с ` ему мало.
Еще обнаруженные проблемы:
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

Попробуем оживить блог работой.

Рубрика: web programming — Метки: , , , — datacompboy @ 17:17:12 | 259 views

Что ж, попробую запустить блог полезными записями..

Сегодня понадобилось отконвертить дамп из мускула для скармливания pgsql’ю. Лёгкий гуглинг в момент нашел скрипт my2pg.pl, однако он сломался на первом же: бэк-тики в названиях (`field`).
Фикс оказался самым простейшим, после

if($tabledef) {

воткнуть

    s/[`]//g;

Сайт работает на WordPress