vim clipboard Вторник, Янв 5 2010 

On Fedora the initial installation of Vim is not compiled with ‘+xterm_clipboard’ (check it with :version). Those who wants to use clipboard register (+) have to use gvim binary in console mode instead. What I’ve done is this:

  1. yum install vim-X11
  2. use vimx command instead of vim (or make alias)

Details are here.

Bergen. Again … Пятница, Ноя 27 2009 

Самолеты не летят напрямую с юга на север. Точнее с юго-востока на северо-запад, в переделах 24 градусов широты и 1 часвого пояса в поперечном измерении (вот бы такие инструкции Васко-де-Гамма имел, далеко бы он уехал). А если проще, с Кипра в Берген лететь пришлось тремя самолетами.

Началось все хорошо: люфтганза, которая, как я когда-то слышал на заре своего половозрелого возраста от директора школы, где работал в то время завхозом, никогда не опаздывает, в наших южных широтах( по крайней мере в пределах 24 градусов от Бергена, см. выше) слегка тормозит. Новый аэропорт в Ларнаке очень понравился: теперь видно, каким все-же простеньким был старый. Выходы на посадку в нем сгрупированы парами. Мой выход, номре 25, был что называется ноздря в ноздрю рядом с 26-м. Время было ай-лю-лю, но в 25-м не наблюдалось решительно никакого движения. Зато 26 принимал пассажиров, и фонтанировал жизнью. По радио объявили что-то по гречески: наверное что-то неважное, поскольку дублировать по английски не стали. Я давно обратил, что со временем, особенно если это сопряжено с некими напряженными ожиданиями или стремлениями, у определенного типа людей происходит адаптация отдельных элементов этих ожиданий с реальностью (хорошо сказал). Так и у меня, ближе к концу времени посадки, номер 25 стал сам собою трасформироваться в 26-й. Я гордо считаю себя цивилизованным человеком, и где-то в глубине души понимаю, что 25 <> 26. Но ноздря в ноздрю же … Короче, как сказано в одном чудесном, а главное очень коротком талмуде (python, import this) – practicality beats purity: в самолет я попал через выход 26.  Попав внутрь я сделал следующие нехитрые умозаключения в пользу своего выбора (изложены в порядке возрастания их надежности, на мой взгляд):

  1. если бы это был не мой самолет, меня наверное не пропустили бы на выходе
  2. если бы это был не мой самолет, я бы занял чье-нибудь место и имел бы место конфликт, которого так и не произошло.
  3. по всему, мой сосед слева мог лететь только в Афины.
  4. в конце концов, какая нафиг разница.

Этот перелет был самым неудобным: я был надежно (или безнадежно) зажат между двумя чуваками плотной комплекции. Мы приземлились в Афинах на 40 минут позже расчетного времени. Стюардесса сказал, что все в порядке, я успеваю на свой следующий самолет, посадка на который начнется аж через 15 минут после нашего приземления.

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

Вернул брючный ремень назад на тело, сумка в одной руке, два пакета с кипрской жратвой и вином – в другой, и тут я совершаю ошибку: почему-то решаю, что все выходы, начинающиеся на «B» будут в одном корридоре. Такая ошибка еще повторится во Франкфурте. Правда там я успел пробежать в неверном направлении уже вдвое меньше, что вселяет некотурую надежду: я с большим трудом но обучаем.  Короче, после нескольких минут активного перемещения (бег вперемешку с ковылянием) не туда, я, подобно Примакову над атлантикой,  завертаю оглобли назад. Проще говоря, через минут 5 я возвращаюсь к железным конструкциям с всевидящим глазом, через которые только что прошел. Оказалось, что нужный мне выход был совсем рядом, но в другую сторону. Меня даже пропустили внутрь самолета. И оказалось даже что я вообще напрасно бежал. Потому что этот самолет тоже опаздывал.

До Франкфурта летели дольше, я сидел где-то в самом конце фюзеляжа и места на сей раз было много. Моей соседкой была женщина из Греции, которой очень понравился Крым. Во Франкфурте бежать пришлось бы значительно больше, но здорово помогли бегущие вместо меня дорожки. Как и в Ларнаке, в самолет мы попадаем через другой выход, но тут это связано с тем, что что-то было с дверью (впрочем, не исключено, что это болезнь всех современных аэропортов). Я как раз достал ноутбук – wifi оказался естественно только за деньги, – в тот момент, когда народ бодро поднялся и пошел к другому выходу. К этому моменту такие задачки я уже щелкал как семечки: главное научиться выглядеть нейтрально, двигаясь подобно подбитому тюленю в сторону очередной миграции.

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

Во франкфурте мы покинули аэропорт автобусом. Им же и ехали долго долго, как на оленях утром ранним, хотя был вообще то вечер, правда не очень поздний. Кто интересовался мог пересмотреть все виды современной самолетно-аэропортной техники. Самолетов становилось все меньше, и сами они становились все уже. Все таки в Норвегию мы ехали не автобусом, и наш самолет оказался действительно таким узеньким, в два ряда кресел по два кресла, низким потолком, в который я без труда упирался макушкой в проходе. Перед трапиком какой-то дядечка на тележке принимал у входящих сумки, что побольше – я отдал свою, даже не утруждая себя мыслью, а что будет, если он не тот дядька, и это не та тележка не от той упряжки.

На этот раз, нас слегка потрясло. Мне удалось по ходу дела настроить wine, поиграть в world of goo, и даже вбить пару транзакций в 1С. В Бергене было уже заполночь, в такси попал к старому битломану, он меня переспорил в отношении пары чисто битломанских вопросов. Крон у меня не было, заплатил картой, еще 10 минут и я в отеле.

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 …

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