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

2010-03-06

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

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

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

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

2010-02-21

Flash Compiler as Is

Рубрика: low-level programming, programming — Метки: , , , , — datacompboy @ 01:24:07 | 142 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 | 584 views

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

2009-12-03

Умножение

Рубрика: low-level programming — Метки: , , — datacompboy @ 16:13:08 | 616 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 | 1,034 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 | 587 views

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

2009-10-19

WavPlayer — flash player for asterisk sounds

Рубрика: voip, web programming — Метки: , , , , , , , , , — datacompboy @ 16:16:14 | 1,003 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

Комментарии…

Рубрика: Без рубрики — Метки: , , — datacompboy @ 20:10:39 | 310 views

Н-да. Обнаружил, что блог вообще не принимал комментарии, по причине того, что стоит за reverse proxy. Вроде бы исправил. Интересно, спам зафлудит блог или нет?

WavPlayer 1.1 — flash wav/au/gsm player

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

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

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

2009-10-17

С кем хотят поговорить на яндексе?

Рубрика: Без рубрики — Метки: , , — datacompboy @ 22:38:56 | 210 views

Очень обширные пожелания у современного населения…
want-talk

Thread locking for JS

Рубрика: web programming — Метки: , , — datacompboy @ 19:02:24 | 1,209 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 | 1,847 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 | 419 views

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

2009-09-22

Skype API on Linux

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

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

2009-09-04

Hardware рулит, или о пользе гистерезиса.

Рубрика: web programming — Метки: , , , — datacompboy @ 20:46:54 | 286 views

Практически все аппаратные системы обладают гистерезисом: отставанием реакции на приложенные силы. Когда-то это плохо (например, передавать сигнал без сдвига фазы), когда-то это используют (те же магнитные способы записи).
Но не мешало бы об этом вспоминать и при разработке софта! На днях столкнулся с очень отвратительным поведением Firefox: если по hover размер блока изменяется, и при этом объект уходит из-под мыши — блок теряет hover. Возвращается к прошлым размерам и снова применяет hover. Некрасиво.

попробуйте сами, наведите на правый край этого квадрата:

test

Кстати опера работает лучше: потерю 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

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

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

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

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

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

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

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

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

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

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

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

2009-08-02

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

Рубрика: voip — Метки: , , — datacompboy @ 21:31:06 | 488 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 | 430 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 | 722 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’а для этой проблемы уже не удалось найти.

2009-07-12

Saitek P2500 driver 0.9.0 — обновление linux драйвера для Saitek P2500

Рубрика: system programming — Метки: , — datacompboy @ 03:47:14 | 780 views

Linux friver for Saitek P2500 gamepad supporting force feedback. Original (v.0.8.1) found at goffi.org, but it too old, and can’t be build with latest kernel.

I have updated driver, now it compiles and work against 2.6.30 kernel, supporting FF_PERIODIC (with only FF_SINE waveform) and FF_RUMBLE (emulated via FF_PERIODIC in driver, kernel emulation not used).

Get it here: Saitek P2500 linux driver v0.9.0.tar


Драйвер с поддержкой фидбека, найденный на goffi.org версии 0.8.1 оказался настолько лохматой давности, что с последним ядром не собирался принципиально.

В результате глубокого ковыряния в дебрях коммитов ядра, родился драйвер 0.9.0: компилится и работает на 2.6.30, поддерживаются FF_PERIODIC с FF_SINE и FF_RUMBLE (причем FF_RUMBLE сделано изначально goffi через FF_PERIODIC. вообще, линуксовый framework для forcefeedback сам делает эту подмену, однако что-то на тесте через fftest показал, что слабый и сильный RUBMLE не отличаются через ядровую подмену, так что я оставил подмену от goffi).

Качайте: Saitek P2500 linux driver v0.9.0.tar

2009-05-14

Конструктор для мальчиков пожилого возраста

Рубрика: Без рубрики — Метки: , — datacompboy @ 03:36:40 | 332 views

Дано: Бойлер на 80 литров в вертикальном цилиндрическом исполнении, невозможность сверлить стенку (в связи с отсутствием места где и отсутствием разрешения хозяйки), отсутствие холодной воды как ускоряющий фактор.
Задание: Обеспечить квартиру горячей водой.

КонструкторРешение: берём 5 полутораметровых кусков угольника 2 мм толщиной и 2.5 см шириной, 25 комплектов болт + шайба + гайка, 4 ножки, 4 шайбы и 8 гаек для ножек (я обошелся 2 шайбами и 4 гайками так как два уголка специально были с наваренными гайками под ножки), 10 крепёжных уголков (треугольная пластина с отверстиями для соединения в углу), 25 комплектов болт+шайба+гайка на 8 и 4 комплекта болт+шайба+шайба побольше+гайка на 10 для крепления самого бойлера.
Режем на части: 2 куска пополам (по ~75см получаем их), от двух кусков отрезаем по 50см, и оставшиеся два режем на 3 части.
С полученных кусков напильником снимаем отовсюду фаски, моем с мылом, покрываем полимерной краской, ставим в печь прожариться 10 минут при температуре 180 градусов.
Свежезажаренные кусочки заворачиваются в газетку и доставляются домой.

Далее идёт процедура скручивания, в процессе которой болтов не хватило, детали из-за того остались лишние. но бойлер висит, и меня (а я по-тяжелее чем 80кг буду) выдерживает как вкопанный.
Собранный конструктор Подвешенный бойлер

Место для установки Теперь полученную конструкцию нужно разместить так, чтобы вдоль стены вместились и бойлер, и мойка, и стиральная машина. При этом шкафичик, стоящий слева, должнен так же остаться юзабелен «и ваще».

Впереди разводка: из 1 горячей трубки сделать две (одна из бойлера, вторая в кран) и из 1 холодной сделать три (холодная в кран, в стиралку и в бойлер). Всё это сопровождается кранами, боченками, муфтами и тройниками в условиях крайне тяжелого доступа до всех элементов…

Для разводки был произведён апгрейд задней стенки шкафчика. На горячую трубу накручен тройник, в ответвление котрого вкручен обратно шланг подключения горячего крана, и кран, регулирующий подачу горячей воды из бойлера в систему водоснабжения квартиры — горячая труба по счастливому стечению обстоятельств проходит достаточно высоко, таким образом доступ до крана будет без отодвигания мойки.

На холодный кран навинчен тройник, в конец которого вкручен шланг до крана мойки. На ответвлении установлен кран, отсекающий бойлер и стиральную машину, на кран накручен крест, в одно ответвление которого вкручен еще один кран, работающий просто заглушкой, а в два других шланги до стиральной машины и бойлера. Вся получившаяся конструкция находится под днищем мойки, что осложняет выключение бойлера и стиральной машины при необходимости, но работает.
Исходники трубАпгрейд задней стенкиРазводка, вид 1Разводка, вид 2

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

2009-05-12

Моя порода

Рубрика: Без рубрики — Метки: — datacompboy @ 13:40:29 | 365 views

Я из породы хакеров. Не тех, что ломают, ради порчи, но тех что предпочитают разобраться, и могут сделать что-то там, где уже казалось бы всё. «Бывалый мастер напильника»: доточить что-нибудь, причем почти неважно какой язык и какая задача.

Недавно до меня дошло почему так. Всё пошло из детства: тяжелое детство, 8-битные игрушки. Само детство прошло за БК-001, в основном, и ДВК. Позже был Robotron 1910, позже EC-1840. Было чуть-чуть спектрума, но чисто для игрушек. В районе 6го класса у меня появился свой первый комп Специалист. На базе ВМ80 (аналог 8080), с 2к видеопамяти (монохром), 2к пзу (записано было два «монитора») и почти 48к озу. Разворачивайся — нехочу. Да вот и правда, не хочу. Листинги по 6-8 страниц гекс кодов набирай и радуйся — разумеется пара ошибок при наборе и в самом интересном месте игра виснет. Потому главная развлекуха была — писать что-нибудь своё. Прямо в гексредакторе. Фломастером поверх монитора обводились условные жампы, в которые еще предстояло ввести нужный адрес. Игрушки были скушные, но само программирование было гораздо интереснее игрушек.

Как следствие, мозг научился принимать решения в режиме жестких ограничений. И если мне дана полная свобода действий, по типу: бери что хочешь, делай что хочешь… Я впадаю в прострацию. Сразу в голову лезут десятки способов как сделать, общее количество плюсов и минусов у этих способов равное, так что как тот осёл: ешь не хочу, а что есть не знаю.

Если же попадается задача с внешними ограничениями, это моментально отсекает громадное поле выбора, выбор сужается до счетного множества, которое если не решается за пару часов размышлений о плюсах и минусов, то просто решается брутфорсом: начинаю делать один вариант, если попадаю в ощутимый тупик или через некоторое время понимаю серьёзность встающих проблем — перехожу на запасной.

Логическим следствием, стала «лень»: вместо того чтобы взять и сделать что-то, я предпочитаю найти что-то делающее близкие/подобные/составные части, разобрать их и сделать своё. Иногда от найденного остаются лишь два болтика на магните внутри корпуса — но они были нужны чтобы сделать решающий выбор. Это как ветер, который качает соломинку в куче, делая тем самым кучу ближе, и именно к ней я отправляюсь.

Плохой из меня архитектор. Не в смысле некачественный, а в смысле медленный. Хороший архитектор может принять решение и без внешних ограничений. Я же, приняв каждое решение, продолжая писать его, никак не могу избавиться от желания взять и переписать всё иначе. Вдруг там было бы лучше?

2009-05-06

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

Рубрика: web programming — Метки: , , , — datacompboy @ 15:00:45 | 390 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 | 194 views

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

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

if($tabledef) {

воткнуть

    s/[`]//g;

2009-04-25

Самые частовспоминаемые породы собак

Рубрика: Без рубрики — Метки: , — datacompboy @ 08:18:08 | 194 views

У кого как, а я кошатник. В смысле, дома живёт кошк, а не пёс.
Однако, постоянно вспоминаются собаки: бёс Пассет при любых тестированиях и ежеминутно ЧайПей.

2009-03-18

О вреде копеек

Рубрика: Бухгалтерия — Метки: , , , — datacompboy @ 17:35:04 | 217 views

Пришло письмо из пенсионного фонда. Писмьмо состоит из: Конверт, 3 марки по 5 рублей, 1 марка на 0.15 рублей, 3 листа формата А4.
Письмо предписывает погасить пеню в размере 27 копеек, и содержит сразу заполненный листик для платежа.

2009-03-16

О вере.

Рубрика: Без рубрики — datacompboy @ 22:37:54 | 213 views

Да, я по вероисповеданию Линускоид. Даже, скорее, Гнутик.
Я верю в победу свободного сообщества программистов над закрытыми проектами рожденными ради коммерческого успеха в ущерб стабильности и качеству.
Ибо так правильно и должно быть.

2008-12-16

что за система?!

Рубрика: Без рубрики — Метки: , , — datacompboy @ 01:19:14 | 223 views

ставил свою софтину для работы людей. офигел. машинка — цел 1.2ггз, 128 мег озу.
висит на ней винхп + каспер с активной защитой + включены темы + включено столько всего… что…
в общем, флешку оно подключало мою 9 минут.
люди… ну зачем, зачем на такие машины ставят винхп ? или зачем туда ставят неоптимизированные под старые машины винхп? или хотя бы почему после этого не выключают wireless + network + dhcp + многоещечеготампростофизическибытьнеможет?
и вообще, почему для _работы_ выдают только такое дерьмо? рядом стоит нормальная машина — но она пользуется чисто под пасьянс и ворд.

не, вот ворд тормозит — это достаточно весомый аргумент сменить машину. а тормозит моя программа — это я должен её переделать. и ничего, что машина только и делает что свопит, и тупо ей негде жить в памяти…

2008-11-07

Из фидошного прошлого

Рубрика: Без рубрики — datacompboy @ 05:13:55 | 180 views

= Литеpатуpное твоpчество и юмоp (2:5000/111.33) ================ OBEC.PACTET =
Msg : 265 of 7974
From : Sergey Lukin 2:5066/18.34 19 Mar 01 07:25:50
To : All 19 Mar 01 14:11:39
Subj : Э М П И Р И К
===============================================================================
(далее…)

2008-10-12

Истина замены

Рубрика: Без рубрики — datacompboy @ 20:45:45 | 192 views

Hезаменимых людей нет, но одних заменяют не так, а других заменяют не те.

2008-10-08

Сообразил

Рубрика: Без рубрики — Метки: , — datacompboy @ 03:06:06 | 420 views

я практолог (в смысле, роюсь в практике)

2008-10-04

Из FIDOшного прошлого

Рубрика: Без рубрики — Метки: , — datacompboy @ 02:20:10 | 202 views
─ Autocreated (2:5000/111.33) ────────────────────────────────────── SU.HUMOR ─
 Месга: 1361 of 1365 -1265
 От   : Sergey Yakimchuck                   2:463/3141      Thu 01 Июн 00 22:53
 К    : Evgeniy Dyachkov                                    Fri 02 Июн 00 16:39
 Сабжо: теория
───────────────────────────────────────────────────────────────────────────────
 (далее…)

2008-09-30

мыслишки

Рубрика: Без рубрики — Метки: — datacompboy @ 13:25:53 | 178 views

«Он был очень труполюбывай работник»

(из воспоминаний о старом кладбищенском стороже)

2008-09-28

Мыслишки в порядке бреда

Рубрика: Без рубрики — Метки: , — datacompboy @ 19:44:45 | 182 views

а ты знаешь, что есть такое место, где настолько любят манты, что на них просто охотятся?
там есть даже специальные «Охотники на Манты», или (на западный манер) Ханты-на-манты.
Оттуда пошло название округа.

2008-09-27

Реклама

Рубрика: Без рубрики — Метки: — datacompboy @ 12:43:26 | 333 views

Видел восхитительнейшую рекламу яндекса вчера в метро: на белом фоне, краткое и лаконичное «ыть«.

(далее…)

2008-09-26

Краткая информация

Рубрика: Без рубрики — Метки: — datacompboy @ 00:47:12 | 190 views

Я решил покинуть livejournal. Теперь вылезающие из меня мысли будут застывать здесь.
Читать их можно всем. Отвечать… А оно вам надо? Дискуссий не будет.
Либо это будет редкостью.

Кросспоста в жж не будет.

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