Notes Vulgaris

Links
Типографская раскладка
ЖеЖе
Жизненный цикл Серебряной Пули
Account
Tags
05-12-2009 00:49 | 0 comments | tags: linux, kb

Спасибо лору.

convmv --notest -r -f cp-1252 -t cp-850 /path/to/unzipped/files
convmv --notest -r -f cp-866 -t utf-8 /path/to/unzipped/files
01-12-2009 23:56 | 0 comments | tags: linux, graphics
  1. Подготовка файлов. Создаём каталоги res и ocr, разбираем PDF на страницы:

    pdftoppm -png file.pdf res/out
    
  2. Подготовка страниц; нужно увеличить разрешение, подкорректировать яркость и контрастность для лучшего распознавания:

    cd res
    FILES=`ls *.png`
    cd ..
    
    for f in $FILES; do
        convert -geometry 1000x -modulate 90 -gamma 0.9 -contrast -fx G res/$f ocr/$f.tif
    done
    
  3. Распознавание

    cuneiform out-014-g.tif -o out-014-g.tif.txt
    
Примечания
  • без корректировки яркости и контрастности результат распознавания был ужасным;
  • вывод в PNG почему-то вызывал сегфолт у cuneiform.
26-10-2009 22:15 | 0 comments | tags: programming, google

У гугла есть отличный поисковик по исходным кодам различных проектов. Фигово только, что в результаты поиска выводятся порциями по десять элементов. Фиксим это при помощи юзерскрипта для оперы.

// ==UserScript==
// @name google codesearch improvements
// @include http://*.google.com/codesearch
// @include http://google.com/codesearch
// ==/UserScript==

(function(){
    var e = document.createElement('INPUT');
    e.type = 'hidden';
    e.name = 'num';
    e.value = '100';
    document.forms[0].appendChild(e);
})();

Максимальное количество элементов на странице — сто.

26-10-2009 02:06 | 0 comments | tags: linux, kb

Памяти много, hibernate делается в swap-раздел, в прочее время swap не нужен. sysctl -w vm.swappiness=1 в /etc/rc.local не помогает, поэтому настраиваем pm-utils. Все команды с правами суперпользователя.

continue reading
24-10-2009 20:08 | 0 comments | tags: programming

Программа Assistant из Qt4 сделана довольно небрежно, например, даже при небольшом количестве открытых табов переключаться между ними очень неудобно. Поэтому фиксим это.

  1. В файле centralwidget.h исправляем параметры строки табов. Нам не нужны табы по ширине всего заголовка, обойдёмся скрыванием части заголовка за многоточием, этот параметр класса QTabBar называется elideMode, для нас подойдёт значение Qt::ElideMiddle. Теперь табы будут при необходимости «сжиматься» и исчезнет дико неудобная кнопка прокрутки табов.
  2. Также можно добавить кнопку закрытия на каждый таб.
23-10-2009 22:26 | 0 comments | tags: python, desktop, linux

Печатаем, что играет амарок. Скрипт очень простой (считаем, что локаль процесса, откуда вызывается скрипт, юникодная):

#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-

import dbus
bus = dbus.SessionBus()

proxy = bus.get_object('org.kde.amarok', '/Player')
player = dbus.Interface(proxy, "org.freedesktop.MediaPlayer")
metadata = player.GetMetadata()

# access metadata using operator []:

np = u"/me now listening to %(artist)s — %(title)s (album: %(album)s)" % {
    'title': metadata['title'],
    'artist': metadata['artist'],
    'album': metadata['album']
    }

print np.encode("utf-8")
21-10-2009 20:53 | 0 comments | tags: amarok, database

Схема базы амарока, там же рядом лежит исходник схемы.

19-10-2009 22:49 | 0 comments | tags: mercurial, linux, kb

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

continue reading
30-09-2009 01:29 | 0 comments | tags: blog

Наконец-то дошли руки допилить код и таки включить полноценный OpenId провайдер в движке блога, теперь могу логиниться от имени блога (и сайта) regolit.com.

Заодно пофиксил несколько древних багов, до которых никак не доходили руки, и поменял цветовую схему сайта.

На очереди борьба с блогоспамерами, нужно что-то придумывать, чтобы гарантированно отсекать роботов. Капчу очень не хочется.

16-09-2009 12:09 | 5 comments | tags: rambler, books

В замечательной книге Игоря Ашманова «Жизнь внутри пузыря» много интересного рассказано про историю Рамблера начала «нулевых», вот только все реальные имена и названия скрыты за псевдонимами. Иногда псевдонимы легко раскрываются, иногда не очень. Поэтому решил собрать в одном месте таблицу соответствий, кто был кто.

Update

Подсказали ссылку, где все псевдонимы раскрываются.

continue reading
24-06-2009 16:06 | 0 comments | tags: javascript

Полезная функция для печати значения переменной. Понимает и по-разному отображает различные типы.

function valueToString(v)
{
    var res = "";

    if (v === undefined) {
        res = "undefined";
    } else if (v === null) {
        res = "null";
    } else if (v.constructor === Array) {
        var a = [];
        for (var i=0; i<v.length; i++) {
            a.push(valueToString(v[i]));
        }
        res = "[ " + a.join(", ") + " ]";

    } else if (typeof v === "string" || v.constructor === String) {
        v = v.replace("\\", "\\\\").replace('"', '\\"').replace("\n", "\\n");
        res = '"' + v + '"';
    } else if (typeof v === "object") {
        res = "Object";
    } else {
        res = v.toString();
    }

    return res;
}
09-05-2009 03:05 | 0 comments | tags: linux, mercurial, debian

Задача: создать и настроить mercurial-репозиторий на debian-сервере с установленным apache2.

Всё довольно просто, но есть несколько тонких моментов. Все шаги справедливы для debian lenny и, возможно, для ubuntu (не знаю какой версии). Предполагается, что наш репозиторий будет доступен по адресу http://hg.example.com/public.

continue reading
06-05-2009 02:05 | 0 comments | tags: python

Решил написать какую-нибудь простую систему для генерации FictionBook2-файлов, разметка — нечто wiki/markdown/reStructuredText/Sphinx-подобное, плюс файл с метаданными в виде простого .ini-подобного файла.

За несколько часов настрогал, потом пару дней отлаживал. Оказалось вполне пригодно для использования. Создание/обновление книг значительно ускорилось. Уже несколько книг обработал, в частности, вот этот сборник сказок братьев Гримм.

Никакой документации, кроме демонстрационного проекта, пока нет.

Сайт проекта: metafb2.googlecode.com

10-04-2009 23:04 | 0 comments | tags: books

В этом посте буду собирать названия полезных для любого программиста книг.

  • Том Демарко, Тимоти Листер «Человеческий фактор: успешные проекты и команды» / Tom DeMarco, Timothy Lister “Peopleware: Productive projects and teams”
  • Том Демарко «Deadline: роман об управлении проектами» / Tom DeMarco *“Deadline: a novel about project management”
  • Джо Мараско «IT-проекты: фронтовые очерки» / Joe Marasco “The Software Development Edge”
  • Эдвард Йордон «Путь камикадзе» / Edward Yourdon “Death March”
  • Дж. Ханк Рейнвотер «Как пасти котов: Наставление для программистов, руководящих другими программистами» / J. Hank Rainwater “Herding cats: A Primer For Programmers Who Lead Programmers”
  • Роберт Гласс «Факты и заблуждения профессионального программирования» / Robert Glass “Facts and Fallacies of Software Engineering”
  • Дэвид Платт «Софт — отстой! И что с этим делать?» / David S. Platt “Why Software Sucks... and What You Can Do about It”
  • Стив Макконнелл «Профессиональная разработка программного обеспечения» / Steve McConnell “Professional Software Development”
  • Стив Макконнелл «Совершенный код» / Steve McConnell “Code Complete”
  • Мартин Фаулер «Архитектура корпоративных программных приложений» / Martin Fowler “Patterns of Enterprise Application Architecture”
  • Эрик Дж. Брауде «Технология разработки программного обеспечения» / Eric J. Braude “Software Engineering. An Object-Oriented Perspective.”
  • Л. Басс, П. Клементс, Р. Кацман «Архитектура программного обеспечения на практике» / Len Bass, Paul Clements, Rick Kazman “Software Architecture in Practice”
  • Джек Гринфилд, Кит Шорт, Стив Кук, Стюарт Кент «Фабрики разработки программ. Потоковая сборка типовых приложений, моделирование, структуры и инструменты» / Jack Greenfield, Keith Short, Steve Cook, Stuart Kent “Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools”
  • Фредерик П. Брукс «Мифический человеко-месяц или Как создаются программные системы» / Frederick P. Brooks “The Mythical Man-Month (Essays on Software Engeneering). 20th Anniversary Edition.”
07-03-2009 19:03 | 0 comments | tags: kb, xorg, eee, linux

В Xorg 1.5 введена новая система конфигурации, через HAL. Для конфигурации тачпада из Eee PC 900 необходимо, во-первых, собрать модуль psmouse.ko, который этот тачпад поддерживает; а во-вторых, написать соответствующий конфиг для Xorg.

Вот мой конфиг:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.product" string="ETPS/2 Elantech Touchpad">
      <merge key="input.x11_driver" type="string">synaptics</merge>
      <merge key="input.x11_options.SHMConfig" type="string">True</merge>
      <merge key="input.x11_options.SingleTapTimeout" type="string">150</merge>
      <merge key="input.x11_options.MaxDoubleTapTime" type="string">10</merge>
      <merge key="input.x11_options.UpDownScrolling" type="string">1</merge>
      <merge key="input.x11_options.RightEdge" type="string">1050</merge>
      <merge key="input.x11_options.ZAxisMapping" type="string">4 5</merge>
      <merge key="input.x11_options.ClickTime" type="string">2</merge>
      <merge key="input.x11_options.FastTaps" type="string">1</merge>
      <merge key="input.x11_options.MinSpeed" type="string">0.246</merge>
      <merge key="input.x11_options.MaxSpeed" type="string">0.89</merge>
      <merge key="input.x11_options.AccelFactor" type="string">0.178</merge>
      <merge key="input.x11_options.LeftRightScrolling" type="string">0</merge>
      <merge key="input.x11_options.TapButton1" type="string">1</merge>
      <merge key="input.x11_options.TapButton2" type="string">2</merge>
      <merge key="input.x11_options.TapButton3" type="string">3</merge>
      <merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>
      <merge key="input.x11_options.VertTwoFingerScroll" type="string">false</merge>
    </match>
  </device>
</deviceinfo>

Файл кладётся, например, сюда /etc/hal/fdi/policy/11-x11-elantech.fdi, затем перезапускается hal и xorg.

04-03-2009 14:03 | 1 comments | tags: freetype, linux, fonts

Эта часть посвящена библиотеке растеризации шрифтов FreeType, а также базовым принципам растеризации, в том числе субпиксельной.

continue reading
04-03-2009 14:03 | 0 comments | tags: linux, fonts

В этой части рассказывается о рендеринге и отрисовке шрифтов на стороне X-клиента.

continue reading
27-02-2009 18:02 | 0 comments | tags: fonts, linux

В этой части рассказывается о классической системе рендеринга и отрисовки шрифтов в X Window System: Core X Renderer.

continue reading
12-02-2009 17:02 | 0 comments | tags: it, evangelism

Разбирал завалы PDF-файлов со знаменитого процесса «Comes vs. Microsoft» и наткнулся на несколько весьма примечательных документов про агрессивный евангелизм, очень интенсивно применявшийся микрософтом в середине девяностых. Всплыло имя Джеймса Пламондона, как одного из авторов всего этого дерьма, а поиск в гугле принёс довольно много разнообразных статей на чрезвычайно интересную тему «Технологического евангелизма».

Вот один из примеров, «“Power Evangelism” and “Relationship Evangelism” Presented by James Plamondon and Marshall Goldberg». Неформальная и очень познавательная презентация (файл PLEX_2456.pdf из архива материалов), я её немного вычитал и сделал более приемлемую копию. PDF и оригинал в ODT.

Джеймс Пламондон типа раскаялся и ведёт блог на тему этого самого технологического евангелизма.

10-02-2009 06:02 | 0 comments | tags: linux, fonts

Перед тем, как приступить собственно к рассказу о шрифтовых подсистемах, необходимо сказать несколько слов об архитектуре графической подсистемы в целом. Как показал опыт, очень много пользователей Linux имеют слабое представление о принципах архитектуры системы, которой они пользуются.

continue reading
10-02-2009 05:02 | 0 comments | tags: linux, fonts

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

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

08-02-2009 18:02 | 0 comments | tags: blog

Этим постом открывается вторая эпоха в жизни проекта. Ужасный wordpress выкинут на помойку, вместо него — мой собственный движок, который можно охарактеризовать как «half blog, half wiki, half cms». Все данные, включая комментарии, благополучно смигрированы на новую систему.

Новая политика. На данном сайте планирую опубликовать все свои статьи, которые в настоящее время расползлись по самым разным рунетовским сайтам, и поддерживать эти статьи в актуальном состоянии. В данном блоге по-прежнему будут публиковаться исключительно статьи технического характера, однако значительно более объёмные, чем ранее — не просто заметки на пару страниц, а подробные статьи. Конечно же, будет и обратная связь в виде комментариев.

Движок сайта пока находится на самой ранней стадии развития, поэтому вполне возможны разнообразные мелкие косяки. Старые линки на статьи автоматически редиректятся на новые.

16-12-2006 16:12 | 9 comments | tags: debian, linux, openoffice

Не секрет, что в Debian Etch OpenOffice выглядит сейчас крайне ужасно. Примерно вот так:

Рис. 1

Что-то накосячили или в OO, или в Freetype2, но результат один — в OpenOffice шрифты выглядят крайне паршиво при отключенном антиалиасинге. Сегодняшняя задача — заставить OO корректно отображать шрифты.

continue reading
27-11-2006 00:11 | 0 comments | tags: linux, kde, howto

Пользоваться несколькими виртуальными десктопами удобно. Однако пользоваться пейджером для переключения между ними для меня оказалось сильно некомфортно, так как этот пейджер нужно сначала найти на экране, потом кликнуть по значку нужного десктопа. При этом теряется внимание, фокус и т.п. По этой причине в моём KDE пейджера нет. Однако переключаться между десктопами мышкой как-то надо.

Решение было найдено буквально пару недель назад — пользоваться колесом мыши над рабочим столом (который под всеми окнами и на котором обычно всякие иконки болтаются). Но проблема в том, что рабочим столом я не пользуюсь, так как все окна обычно распахнуты на весь экран, и крутить колесом попросту не над чем. И вот тут сама идея — уменьшить ширину таскбара (панели со значками запущенных приложений), чтобы в крайнем нижнем правом углу был виден маленький кусочек рабочего стола. Теперь, для того, чтобы мышкой переключиться на другой десктоп, достаточно увести указатель в нижний правый угол и там покрутить колёсиком!

Далее я покажу, как это выглядит, почему это удобно и комфортно, и как настроить KDE, чтобы этого добиться.

continue reading
26-11-2006 22:11 | 15 comments | tags: desktop, linux, xorg

Раз в мире существует UNICODE, то им надо пользоваться! Поэтому я однажды сел и написал небольшой файлик для конфигурации XKB, чтобы можно было вводить некоторые юникодные символы прямо с клавиатуры. Сначала это были символы для русских кавычек-лапок (« и ») и длинного тире (—). Через некоторое время я наткнулся в сети на заметку в блоге Ильи Бирмана о создании им специальной типографской раскладки для непосредственного ввода кучи юникодных символов.

continue reading
06-11-2006 01:11 | 0 comments | tags: linux, kde

В панели KDE (kicker) есть кнопка аналог кнопки Start в Windows®, при нажатии на которую открывается K-меню. При желании можно на панели создавать другие кнопки со своим собственным меню. Это очень удобно, так как позволяет сэкономить место на панели и логически сгруппировать программы.

continue reading
04-11-2006 15:11 | 1 comments | tags: desktop, linux, kde

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

continue reading
04-11-2006 01:11 | 0 comments | tags: kde, linux

У оконного менеджера kwin из состава KDE есть множество полезных функций, о полезности которых многие даже не догадываются. Одна из них — это возможность тонкой настройки поведения окон самых разных приложений.

continue reading
04-11-2006 00:11 | 0 comments | tags: повидло

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

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

newer older