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

2010-03-06

МоеДело — спасение для бухгалтерии ИП

Рубрика: Бухгалтерия — Метки: , , , — datacompboy @ 23:14:44 | 173 views

Как человек, пытающийся перейти на полную белую бухгалтерию во всех расчетах, не могу не сообщить всем, о существовании (пока зарождающегося, но явно отличного) сервиса МоеДело.
Полная отчетность, сдача налоговой отчетности онлайн, бух. и юр. консультация [я их уже замучал, наверное, но получил все ответы на все мучающие меня вопросы, правильно и в срок :)].
При оплате в поле «промокод» введите цифры 074721, получите 10% скидки.
Для ИП с микрооборотом (не более 5 счетов и актов в месяц) вообще бесплатно.
Если вы только собираетесь открыть ИП — там же бесплатный мастер подготовки документов для регистрации.

Немного сумбурно, но всячески рекомендую — проверено, сервис супер!

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-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-19

WavPlayer — flash player for asterisk sounds

Рубрика: voip, web programming — Метки: , , , , , , , , , — datacompboy @ 16:16:14 | 1,745 views

Всё, для полноты картины, в 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

Рубрика: 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 без использования кучи точек и сложного выравнивания?
(далее…)

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-07-14

Opera scrollbar problem

Рубрика: web programming — Метки: , , — datacompboy @ 19:01:35 | 1,005 views

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’а для этой проблемы уже не удалось найти.

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