позавчера закончилась недельная летняя жара, с дневной температурой в 33 градусов. Сегодня кошки задрали голубицу. А глаза такие честные-честные.
каждый сверчок … Четверг, Авг 27 2009
cats 9:22 пп
Она и теперь не жалуется на жизнь, как все борется за место у миски, ищет убежище от жаркого солнца в полдень и наблюдает за жизнью в полглаза. Как и другие, она тщательно вылизывается после завтрака и ужина: коты не стадные твари, но отчего-то часто они как по команде начинают все вдруг вылизываться. У нее вместо носа – незаживающая рана; тело белое, а головой будто окунули поочередно в полупустые банки с еще свежей краской. Она появилась у нас этой весной, страшноватая и молчаливая: голос у нее оказался тихий и вялый. Она как будто сама понимает, что место ее – за дверью, и за все время я не помню, чтобы мне приходилось ее выгонять на улицу. Она всегда лежит на одном и том-же месте на изгороди, напротив кухонного окна. Я не замечал ее в конфликтах, которых у нас тут предовольно, – будто бы другие коты обходят ее стороной.
Я все ждал, что нос пройдет, мало ли, разбила в драке. У нас тут травм на все случаи жизни – и обглоданные хвосты попадаются. И как в бухгалтерии, привычка – подождать, авось само обойдется. А сегодня врач-чех на очень плохом английском сообщил, что у нее рак и дал ей максимум полгода. Все что ей могли сделать в клинике – это укол антибиотика. Интересно, как будет на кошачем полгода? Все-таки тупые они создания, кошки: вот заканчиваю, и вижу как она сидит за открытой дверью на улице и вылизывается.
как намертво завесить иксы Воскресенье, Авг 23 2009
Linux compiz, gnome, ubuntu 1:17 дп
Сегодня нашел элегантный способ завесить убунту. Это стало возможным благодаря дебильному нововведению: для борьбы с багами в иксах ликвидирована обычная функциональность Alt-Ctrl-{F1-F12} – теперь эти комбинации используются для возвращения клавиатуры к жизни. Кроме этого, в Ubuntu 9.04 по умолчанию не работает Alt-Ctrl-Backspace, что означает, что без внешнего подключения система в случае зависания иксов обречена.
Завесил иксы я так:
dimonf@uindous:~$ compiz-manager
… после чего тупо отправляем его в гербарий Ctrl-Z. В общем то я по наивности хотел его таким классическим способом отправить в бэкграунд, но не успел.
intel 915GM Express Graphics Controller Вторник, Авг 18 2009
Linux 915GM, driver, x41 6:49 пп
Слава тебе отче! Конкретный затыкон с графической картой на Ubuntu Jaunty разрешен. Вот тут выложены подробные инструкции, кои я левой ногой за полчаса выполнил со своим IBM X41 (Optimal Configuration). Замеченные отклонения:
- скачанный через wget -c linux-image-2.6.30 инсталлироваться не захотел. Скачал его отдельно без ключа -c и поставил отдельно от headers.
- первая перезагрузка – бэээлый курсор на чоооорном поле. Пришлось перезагружать в аварийном режиме, после чего обнаружил свою же ошибку в xorg.conf – аккуратнее с конф. файлами!
- во время второй загрузки X server сам че то там нашел и взялся исправить. Мне лень было смотреть, что было на этот раз. После этого загрузился нормально.
- Пару раз иксы переклинило: один раз после по всей видимости автоматического затемнения экрана на power save mode не захотел светить всегда и везде опять. Больше это почему-то не повторилось. Второй раз – после просыпания из suspend завис намертво. Опять же, два дня прошло, более сего не наблюдалось.
Короче живем как прежде, жрем свои 15 ватт и не жужжим. Да, кстати. поставил себе KingSpec SSD KSD-PA18.1-064MJ заместо старенького 4200 rpm винта. Работать стало заметно приятнее, особенно с приложениями, что горазды открывать кучу мелких фалов – OpenOffice, Firefox, Gimp и т.д. Обошлось мне это чудо природы в 200 баксов плюс 18 евро налогов. В общем то стоит этих денег. Два минуса:
- При старте сообщает об ошибке (известный глюк BIOS, неисправимо). Отключается только полным отлкючениям звука в предыдущей сессии в ОС (windows или linux).
- при просыпании из suspend секунд 5-10 Ubuntu чего-то там активно химичит с диском, потом нагрузка на CPU возвращается к нормальному уровню.
будулай атонасиу Среда, Июн 24 2009
People gym, old man, sport 12:23 пп
Дядька жалуется на спину, показывает, вот тут чего то там ему наповыдергивали. И рука тоже болит, поэтому ходит сюда на гимнастику. Дядька с усами, в роговых очках. Мы с ним бегло болтаем по английски, что нечасто услышишь в этом деревенском спортклубе. Сейчас лето, и занятия в бассейне не проводятся до осени, а так бы он туда ходил, это полезно для спины, так доктор говорит. Вот на прошлой неделе какой-то немец тут же в спортзале сказал дядьке, что он де запесплатно его вылечит в Дюссельдорфе, только пусть то 30 тыс. евро на платину наскребет, чтобы ему новый позвоночник отлили.
Он еще рассказывал, как надо готовить осьминога, где он работал после учебы в Intercollege, и как научился готовить в горном отеле Тродос, когда мыл там когда-то посуду – теперь эти навыки оказались кстати, жена ослепла. Вообще я слегка озаботился нашей беседой, поскольку времени на занятия оставалось все меньше. Впрочем, предрасположенность к поболтать весьма характерна в его возрасте. Дядьке недавно стукнуло восемьдесят.
1C tables / 1С таблицы (DBF) Четверг, Июн 11 2009
applications 6:52 дп
Сегодня разбирал структуру данных 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
diy lcd, notebook, repair, replacement, screen 11:14 пп
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:
- replace screen on x61
- extract the lamp, which is still pretty bright from the broken screen
- 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
Linux openerp, postgresql 9:22 пп
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
Linux 1c, 1с, crossoffice, ubuntu, wine 12:52 пп
Известная истина гласит: если что-то заработало сразу, значит ты упустил возможность научиться чему-то новому.
Надысь у меня все заработало с 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
У меня это не работало, ясен пень, поскольку локалки такой вообще не было сконфигурировано в системе.




