CRW_2620_01 Четверг, Окт 22 2009 


CRW_2620_01

Originally uploaded by DimonF

позавчера закончилась недельная летняя жара, с дневной температурой в 33 градусов. Сегодня кошки задрали голубицу. А глаза такие честные-честные.

каждый сверчок … Четверг, Авг 27 2009 

Она и теперь не жалуется на жизнь, как все борется за место у миски, ищет убежище от жаркого солнца в полдень и наблюдает за жизнью в полглаза. Как и другие, она тщательно вылизывается после завтрака и ужина: коты не стадные твари, но отчего-то часто они как по команде начинают все вдруг вылизываться. У нее вместо носа – незаживающая рана; тело белое, а головой будто окунули поочередно в полупустые банки с еще свежей краской. Она появилась у нас этой весной, страшноватая и молчаливая: голос у нее оказался тихий и вялый. Она как будто сама понимает, что место ее – за дверью, и за все время я не помню, чтобы мне приходилось ее выгонять на улицу. Она всегда лежит на одном и том-же месте на изгороди, напротив кухонного окна. Я не замечал ее в конфликтах, которых у нас тут предовольно, – будто бы другие коты обходят ее стороной.

Я все ждал, что нос пройдет, мало ли, разбила в драке. У нас тут травм на все случаи жизни – и обглоданные хвосты попадаются. И как в бухгалтерии, привычка – подождать, авось само обойдется. А сегодня врач-чех на очень плохом английском сообщил, что у нее рак и дал ей максимум полгода. Все что ей могли сделать в клинике – это укол антибиотика. Интересно, как будет на кошачем полгода? Все-таки тупые они создания, кошки: вот заканчиваю, и вижу как она сидит за открытой дверью на улице и вылизывается.

как намертво завесить иксы Воскресенье, Авг 23 2009 

Сегодня нашел элегантный способ завесить убунту. Это стало возможным благодаря дебильному нововведению: для борьбы с багами в иксах ликвидирована обычная функциональность Alt-Ctrl-{F1-F12} – теперь эти комбинации используются для возвращения клавиатуры к жизни. Кроме этого, в Ubuntu 9.04 по умолчанию не работает Alt-Ctrl-Backspace, что означает, что без внешнего подключения система в случае зависания иксов обречена.

Завесил иксы я так:

dimonf@uindous:~$ compiz-manager

… после чего тупо отправляем его в гербарий Ctrl-Z. В общем то я по наивности хотел его таким классическим способом отправить в бэкграунд, но не успел.

intel 915GM Express Graphics Controller Вторник, Авг 18 2009 

Слава тебе отче! Конкретный затыкон с графической картой на Ubuntu Jaunty разрешен. Вот тут выложены подробные инструкции, кои я левой ногой за полчаса выполнил со своим IBM X41 (Optimal Configuration). Замеченные отклонения:

  1. скачанный через wget -c linux-image-2.6.30 инсталлироваться не захотел. Скачал его отдельно без ключа -c и поставил отдельно от headers.
  2. первая перезагрузка – бэээлый курсор на чоооорном поле. Пришлось перезагружать в аварийном режиме, после чего обнаружил свою же ошибку в xorg.conf – аккуратнее с конф. файлами!
  3. во время второй загрузки X server сам че то там нашел и взялся исправить. Мне лень было смотреть, что было на этот раз. После этого загрузился нормально.
  4. Пару раз иксы переклинило: один раз после по всей видимости автоматического затемнения экрана на power save mode не захотел светить всегда и везде опять. Больше это почему-то не повторилось. Второй раз – после просыпания из suspend завис намертво. Опять же, два дня прошло, более сего не наблюдалось.

Короче живем как прежде, жрем свои 15 ватт и не жужжим. Да, кстати. поставил себе KingSpec SSD KSD-PA18.1-064MJ заместо старенького 4200 rpm винта. Работать стало заметно приятнее, особенно с приложениями, что горазды открывать кучу мелких фалов – OpenOffice, Firefox, Gimp и т.д. Обошлось мне это чудо природы в 200 баксов плюс 18 евро налогов. В общем то стоит этих денег. Два минуса:

  1. При старте сообщает об ошибке (известный глюк BIOS, неисправимо). Отключается только полным отлкючениям звука в предыдущей сессии в ОС (windows или linux).
  2. при просыпании из suspend секунд 5-10 Ubuntu чего-то там активно химичит с диском, потом нагрузка на CPU возвращается к нормальному уровню.

будулай атонасиу Среда, Июн 24 2009 

Дядька жалуется на спину, показывает, вот тут чего то там ему наповыдергивали. И рука тоже болит, поэтому ходит сюда на гимнастику. Дядька с усами, в роговых очках. Мы с ним бегло болтаем по английски, что нечасто услышишь в этом деревенском спортклубе. Сейчас лето, и занятия в бассейне не проводятся до осени, а так бы он туда ходил, это полезно для спины, так доктор говорит. Вот на прошлой неделе какой-то немец тут же в спортзале сказал дядьке, что он де запесплатно его вылечит в Дюссельдорфе, только пусть то 30 тыс. евро на платину наскребет, чтобы ему новый позвоночник отлили.

Он еще рассказывал, как надо готовить осьминога,  где он работал после учебы в Intercollege, и как научился готовить в горном отеле Тродос, когда мыл там когда-то посуду – теперь эти навыки оказались кстати, жена ослепла. Вообще я слегка озаботился нашей беседой, поскольку времени на занятия оставалось все меньше. Впрочем, предрасположенность к поболтать весьма характерна в его возрасте. Дядьке недавно стукнуло восемьдесят.

1C tables / 1С таблицы (DBF) Четверг, Июн 11 2009 

Сегодня разбирал структуру данных 1С. Меня интересовало следующее:

  • foreign keys в таблицах (в особенности, как реализованы реквизиты типа «неопределенный» или «документ»)
  • «периодические реквизиты» в справочниках
  • группы в справочниках (создается ли отдельная таблица для элементов групп?)

Я использовал dbview для просмотра DBF. В чистой новой базе я создаю справочник без реквизитов. Появляется файл SC12.DBF. Второй справочник – файл SC14.DBF. При этом в файл 1SUIDCTL.DBF добавляются записи для каждого справочника (поля Typeid / Maxid)

Добавляем ссылку (реквизит типа «справочник 2″) из первого справочника во второй. Это добавляет поле Sp16 в таблицу справочника (SC12.DBF). В таблице справочника два поля, id и code, тип строка. Второе поле выводится на экран как код элемента, который может быть изменен. Ключ записи – это immutable column ‘id’.

Реквизит «неопределенный»
Добавляем реквизит «Справочник» (неопределенный) в справочник 1. В файле SC12.DBF появляется поле SP17. После внесения записей, кое что проясняется: поле SP17 длинной в 13 байтов содержит в 1 байте ссылку на таблицу, а в 7-м – id (ключ) записи в этой таблице. Таблицы кодируются буквенными символами. Такие же символы в записях таблицы 1SUIDCTL.DBF

Группа в справочнике.
Увеличиваем кол-во уровней с 1 до 2. Появляется реквизиты Paretnid и Isfolder в SC12.DBF. Как и следовало ожидать, Parentid это ссылка на Id. Isfolder для группы имеет код 1, для элемента – 2.

Периодические реквизиты
Добавляем в справочник 2 периодический реквизит. Следующие изменения:
- 1SCONST.DBF: после добавления значений в переменный реквизит второго справочника, мы получаем эти значения в файле 1SCONST.DBF. Кроме даты мы видим реквизит Id, Objid (по всей видимости составной ключ, первое – ссылка на колонку таблицы [changed 17 jul 09], NOTE A, второе – ключ в этой таблице. По отдельности каждое поле не уникально ) и Value, собственно со значением. В самом же файле SC14.DBF (с таблицей второго справочника) никаких изменений. Т.е. периодические реквизиты – это виртуальные колонки в таблице. На самом деле их там нет. Нет соответственно и foreign keys. Значит значения таких реквизитов система находит исключительно по индексам 1SCONST.DBF где есть ссылки на «основной» справочник.
Все периодические значения хранятся в этой таблице (1SCONST.DBF). Я создал в первом справочнике реквизит «периодический», и после добавления значения оно появилось в том же 1SCONST.DBF (см выше о составном ключе). По всей видимости где-то хранятся таблицы соответствия таблицы/поля с кодом, который помещается при записи в таблицу периодических значений в поле Id. Тип данных для периодических реквизитов – строка.

Подчиненный справочник

Создаем третий справочник и «подчиняем» его первому. В итоге получаем:
Новый файл  SC29.DBF c одной из колонок Parentext (для внутреннего подчинения используется поле Parentid). Parentext содержит ссылку на id записи в таблице – «владельце». Кода самой таблицы-владельца в записях таблицы подчиненного справочника нет.
Новая запись в 1SUIDCTL.DBF

Иные наблюдения.
Добавление общего реквизита в документы не изменяет timestamp ни одного DBF файла в базе.
Вероятно все параметры (=user defined columns) имеют уникальное кодовое имя типа Sp[No], где No – уникальный ключ

Добавление документа (конфигуратор) новые файлы:
1SJOURN.DBF
DH21.DBF
DT21.DBF
После добавления документа обновился кроме прочих файл 1SUIDCTL.DBF
Таблица DH21.DBF содержит  Iddoc (ключ),  и user defined атрибуты (Sp22 и Sp20 в моем случае). Таблица DT21.DBF – Iddoc (foreign key), Lineno (индекс) и опять же атрибут мною определенный в конфигураторе (Sp23)

Создаем еще один тип документа и новый журнал документов. Выясняем следующее: записи всех журналов хранятся в одной таблице 1SJOURN.DBF. Идентификатор журнала – поле Idjournal (0 для общего, O – для вновь созданного). В таблице есть поле Dnprefix,  значение которого совпадает с числовой составляющей в названии файла таблиц, хранящих соответствующий документ. Так, для первого моего документа запись в журнале в этом поле имела значение 21. Осталось непонятным, где хранятся значения общих реквизитов.

БУХГАЛТЕРИЯ

Добавляем план счетов, определяем справочник валют. Новые файлы:
1SACCSEL.DBF
1SENTRY.DBF
1SOPER.DBF
1SSBSEL.DBF
1STOPER.DBF
1SACCS.DBF
1SBKTTLC.DBF
1SBKTTL.DBF
1SCORENT.DBF
DH33.DBF
Далее анализировать содержимое шибко не стал по разным причинам. На беглый взгляд, нормализация данных в этих таблицах довольно слабенькая.

Регистры учета (оперативный учет)

Две таблицы для каждого регистра – движения и итоги. В таблице движений – поля для измерений, ресурсов и атрибутов.  В таблице итогов атрибуты отсутствуют. Все очень просто и предсказуемо.

NOTE A: Очевидно каждая колонка (или атрибут того или иного объекта, в терминологии 1С), получает свой внутренний id. Далее этот id используется для foreign keys.

playing with the screens Четверг, Май 21 2009 

I have 2 laptops. One, x41 IBM is old enough to have its screen suffer from the lamp degradation. Another one is IBM x61 wich screen recently has been cracked a bit. Across, to be specific. Both have the screen dimention in common, so our schedule today are:

  1. replace screen on x61
  2. extract the lamp, which is still pretty bright from the broken screen
  3. replace the old lamp from the screen of x41 with that one from x61.

I didn’t want to replace the whole screen of x41 because a) I am quite a stingy person,  b) I like to pretend that I am here to save the world (in this particular case by limiting wastage) and c) why on earth I have to buy a new screen anyway if the only thing I need is a lamp? (And, logically, why the hell I have to buy a new lamp, which is sure quite inexpensive, when I have a decent lamp in the broken screen?) I can’t figure out which of the arguments was most important to me.

So, first the screen has been ordered on ebay: it is easy to find one for almost any contemporary laptop. It took 1 week to get it to Cyprus. Now we have excellent instructions here and here. So, if you have decent hammer and saw, you are done. Almost.

I decided to make further notes on the photos I took during the work (here).

After replacement of the lamp two noticable bright spots appeared at the bottom of the screen, where the lamp resides. I’ll try to fix it a bit later, since it annoys me very little.

compiling gThumb on Ubuntu Вторник, Апр 14 2009 

IN order to get rid of «error while loading shared libraries: libgthumb.so: cannot open shared object file: No such file or directory» error do this:

> ln  -s  /usr/local/lib/libgthumb.so  /usr/lib/libgthumb.so

Though some folks say it is a bad practice …

openERP / initial setup Понедельник, Мар 16 2009 

1.  On error

ERROR:dbpool:Unable to connect to template1: FATAL: password authentication failed for user …
first check that all local connections are authenticated with md5, not with ‘ident sameuser’ in postgre conf file pg_hba.conf, something like this:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local       all                       all                                                      md5

2. Never try to login to any database from openerp client before you create one (or previously created under openerp database is available)

1C + Wine (continued) under Ubuntu 8.10 Суббота, Мар 7 2009 

Известная истина гласит: если что-то заработало сразу, значит ты упустил возможность научиться чему-то новому.

Надысь у меня все заработало с wine+1C и я счастливый остался в неведении о многих распрекрасных моментах жизни. На новой инсталляции Ubuntu все было не так радужно. А именно, то, что в п.7 в вышеуказанном моем посте работало прекрасно, на сей раз работать не захотело. И еще кодировка KOI8 упорно не хотела работать. Пришлось ознакомится с проблемой поближе.

Я кстати поставил 1С на имеющийся у меня последний дистрибутив от codeweavers – crossover (или crossoffice как его часто называют), вылизанный коммерческий вариант wine. С ним не было проблем с майкрософтовскими библиотеками, но с кодовой страницой я так и не сладил. И, как выяснилось позднее, неудивительно. Так что если с locale у вас на машине все ОК и вы не хотите ковыряться с dll ками, то не пожалейте немного баксов, да и добро сделаете для разработчиков того же wine. Впрочем, коль вы такой жмот, что деньги свои дороже матери, то по правде говоря, ковыряться с библиотеками долго не придется. Итак, ниже – модифицированная инструкция по инсталляции:

1. Подразумевается что имеем Linux с инсталлированным wine.

2. Проверяем локальные установки, что нам доступны:
> locale -a
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8

Если находим там ru_RU.koi8r или что-нить подобное (может быть ru_RU.KOI8-R), то, как пысал выше, продолжаем оставаться в сладком неведении и прыгаем к п. 5. Иначе же пытаемся добавить недостающую локаль.

3. Для этого интересуемся файлом

>less  /usr/share/i18n/SUPPORTED

и ищем там все, что похоже на ‘ru’. Лучше конечто так:
> cat /usr/shqre/i18n/SUPPORTED | grep -i ‘ru’

и смотрим внимательно. Как что-то видим похожее на ru_RU.koi8r (см выше), запинаем насмерть.

4. Потому как далее печатаем вот это:
> sudo locale-gen ru_RU.koi8r (ну или что там нашли подходящее)

Далее, просмотр доступных локалок (см выше) должен нам показать, что отныне ru_RU.koi8r прочно занимает славный список. Вот и прекрасно. Идем далее

5. Ставим родные dll.
- удаляем библиотеки что пришли с wine:

   >rm ~/.wine/drive_c/windows/system32/ole32.dll
   >rm ~/.wine/drive_c/windows/system32/oleaut32.dll

- ставим родные (перед DCOM98.EXE, натурально, надо указать полный путь к файлу, если находимося не рядом с ним.

   >WINEDLLOVERRIDES=\"ole32=n\" wine DCOM98.EXE

- далее в winconfig прописываем использование родных библиотек, как это было указано в ранее цитировавшейся инструкции.    Альтернативный вариант – это запуск windows программы из консоли с указанием параемтров:

>WINEDLLOVERRIDES=ole32,oleaut32,rpcrt4=n wine my_program.exe

6. Собственно все. Запуск 1C  я выполняю из консоли, подставляя переменную среды:

>LANG=ru_RU.koi8r wine ~/.wine/drive_c/Program\\ Files/1Cv77/BIN/1cv7s.exe

Можно добавить сюда WINEDLLOEVERRIDES, как указано выше, и тогда в настройки wine можно вообще не лезть. Осталось сделать Launcher в Gnome и щелкай себе на здоровье. Не забываем отключить Окна-Панель окон-Показать в 1С и в конфигураторе wine отключить Allow the window manager to control the windows, что впрочем не обязательно.

В crossoffice все должно работать тоже, надо лишь настроить локалку, как описано вот тут:

http://www.codeweavers.com/support/wiki/CXOffice62_ChooseDifferentLanguage

У меня это не работало, ясен пень, поскольку локалки такой вообще не было сконфигурировано в системе.

Следующая страница »