Select orthographic mistake with the mouse pointer and press Ctrl+Enter. Let’s make our language cleaner!
Якщо помітите помилку на цій сторінці, будь ласка, виділіть її вказівником миші та натисніть Ctrl+Enter. Зробімо наше мовлення чистішим!

2008-08-24

Сезон пожеж

Пожежа, братці — це погано, а лісова пожежа — це повний триндець. Хтось добре святкує (чи вже посвяткував), а пожежники працюють у День Незалежності. Христом-богом прошу, гасіть за собою опалки, повністю загашуйте вогнище, бо в нас нічого не залишиться.

2008-07-22

Будую автомат

Треба зробити складнющий автомат, та ще й з жорсткими вимогами дійсного часу. Пішов кроїти boost::statechart, може, спростить життя у наступні півроку.

2008-07-14

Хочеш схуднути — спитай у мене як

На роботі у тестерів телемедичних проектів є електронні терези, тому я вже звик бачити свої 71 кг у будь-який час. А сьогодні зранку показали тільки 68! Куди поділись мої законні три кілограми за вихідні? Ой, точно, вчора накрутив у сідлі шістдесят кілометрів за три години у тридцятиградусну спеку. І ніяких дієт ;-)

2008-07-11

Linux — сила!

Поки ми тут допилювали та полірували сервер VDNS (хочете знати, що це таке — спитайте у Вісоніка), ізраїльські колеги додали до нього надлишковість. Це два однакові сервери, які ззовні видно, як один; якщо один із них вимикається чи гине, інший його прикриває. Зробили це так, що ми про це на прикладному рівні навіть не знали, тепер тільки починаємо розбиратися та виправляти “завусениці”.

У попередньому підприємстві українські хлопці, напевне, до цих пір б’ються над такою самою задачею! Їм пощастило менше: немає у них DRBD + High Availability, а може й просто не хочуть користуватися чужими та ділитися своїми результатами.

2008-06-27

Відрядження у Тель-Авів

Коли зберуся з думками, напишу про поїздку більш детально. А зараз просто фото.

Ізраїль

2008-06-10

Skype через GPRS

Виявилося, що Skype чудово бігає через звичайне з’єднання GPRS/EDGE. Якщо IP-телефонія здатна працювати в таких невимогливих умовах, чому ж вона до цих пір не повсюдно?

2008-06-06

Графіка

Так і не навчився я малювати, проте накреслити що-небудь — за милу душу! Ось зроблена у MetaPost ілюстрація до одієї простої задачки:

2008-05-25

SMS про новий лист

З телефону легко можна перевірити електронну скриньку. А як дізнатися про новий лист, не зазираючи туди раз по разу?

Можна налаштувати перенаправлення листів на . Особисто мене цей варіант не влаштовує, бо затримка велика, не підтримується кирилиця, доводиться лізти в налаштування, щоб вимкнути перенаправлення, коли я за комп’ютером, бо про пошту я дізнаюся із спливаючих вікон.

Спосіб №2. Запускаємо маленький скрипт, який раз у п’ять хвилин перевіряє скриньку і відсилає SMS через службу Google Calendar із заголовками непрочитаних листів. Зрозуміло, листи доводиться при цьому позначати, як прочитані. Думаю, це цілком законно, хоч і календар Ґуґла використовується не за призначенням.

Хочете подивитися у мій скрипт, напишіть мені ;-)

2008-05-03

Огидний гламур

— А от скажіть, ми якось з колегами посперечалися, чи можна говорити “вибачаюсь”, просячи пробачення? Я стверджував, що це неправильно…

— Ну, чому ж не можна? Навпаки, це дуже хороша форма у вищому суспільстві. Цим ви говорите бидлу, що вам не потрібне його низьке пробачення…

Б. Акунін, “Дзеркало Сен-Жармена”

Іноді стаю мимовільним свідком людської зверхності, і щоразу не можу зрозуміти, яка така муха керує аристократами. Так, якось у “Пузатій хаті” манірна відвідувачка не полінувалася продефілювати аж у підсобку і за рукав привести працівницю, щоб та забрала з її столу тацю з посудом. Природне запитання: чому вона просто не прихопила із собою тацю по дорозі? Боялася втратити корону?

Сьогодні ж у зовсім іншому місці: “А давайте ви тут не будете підмітати?” — здалеку хтось до техпрацівниці. Далі пішла колоритна перепалка просто на голому місці… Це просто триндець! Це так висловлюють просьбу? Чи ж раби ми один у одного?

2008-04-30

Hike Tux

Розпочав проект HikeTux, який може перерости у власну справу. За його розвитком можна підглядати у журналі Hike Tux. Також буду радий почути побажання та поради ;-)

2008-04-13

Прізвище Сахнік

— Дорога редакціє, у мене дуже рідкісне прізвище Сірогитан. В старовину циган називали гитанами, чи мають мої предки щось спільне із цим?

— Шановний наш слухачу, ваше прізвище нічого спільного із циганами не має. Швидше за все, воно з’явилося в результаті писарської помилки і в оригіналі було Сіроштан.

З радіопередачі

Кілька днів тому до мене звернувся якийсь Санкт-Петербурзький Сахнік, мовляв, рідкісне прізвище, його предки з України, чи бува не родичі ми? — Ні, ми не родичі, та й прізвище часто трапляється у Волинському Поліссі. Проте стало цікаво і я швиденько зиркнув, що означає оце саме Сахнік.

Отже, поширене українське прізвище Сахно пішло від грецького імені Олександр. Схоже на неформальне Саша? Та й мого дядька Сашу Мокійця в селі прозивали Сахоном (отак у нашій місцевості ставляться до шиплячих ;-). Сахнік — це зменшувально-пестливе, характерне саме для Полісся, проте дещо незвичне для української мови. Цілком могло стати таким через якусь помилку.

2008-04-02

Перехоплення даних з послідовного порту

На минулій роботі часто доводилося працювати з різноманітними приладами через послідовний порт у системі Ўіндоўз. Завжди виручав інструмент portmon компанії Sysinternals. Microsoft купила sysinternals, а я працюю у Linux. За звичкою хотів щось подібне знайти і для відкритих систем, а дзузьки! Є десяток саморобних недоробок, проте всі вони роблять зовсім не те, що треба.

І ось я нарешті зрозумів, чому в Linux немає такого ножа. Виявляється, він просто нікому не потрібен, підглядати за обміном даними можна легко з допомогою іншого швейцарського ножа з назвою strace:

[~]$ strace -p 30565 2>&1 | grep "^\(write\)\|\(read\)"
write(9, "1011           @    \24", 21) = 21
read(9, "\6", 10)                       = 1

Магічне число 30565 — це ідентифікатор процесу. Як я його знайшов? — Спитайте мене!

2008-03-31

Всемогутній grep

Вік живи — вік учись! Спіймав себе на тому, що використовую Midnight Commander тільки для того, щоб знайти що-небудь у файлах. Незручно, а іншого шляху не знав. Проте насправді це робиться дуже просто:

$ find . -name '*.cc' | xargs grep '\<main\>'

Гурмани можуть спробувати інший спосіб:

$ find . -name '*.cc' -exec grep -H '\<main\>' {} \;

І нарешті десерт. Переглядаючи підручник команди, виявив, що можна на екрані отримувати красиву кольорову картинку. Для цього достатньо вказати параметр --colour=auto у змінній оточення GREP_OPTIONS або просто у виклику команди.

2008-03-26

Синтаксис BBv2 у Vim

До цих пір ніде не бачив підтримку скриптів Boost Build v2 для редактора Vim. Незручно, бо цією системою я користуюся ледь не щодня. Отже, довелося поправити ситуацію самостійно.

Насправді, це дуже просто. Насамперед заводимо розпізнавання типу файлів у ftdetect/bbv2.vim:

au BufNewFile,BufRead Jamfile                   setlocal filetype=bbv2
au BufNewFile,BufRead Jamroot                   setlocal filetype=bbv2

Потім розпізнаємо ключові слова у syntax/bbv2.vim:

" Чутливість до реєстру
syn case match

" Розпізнаємо цілі BBv2
syn match bbv2Target "^\s*\(exe\|lib\|install\|alias\|actions\|notfile\|make\|import\|path-constant\|explicit\|local\|project\|run\|test-suite\|build-project\)\>"
" Деякі властивості
syn match bbv2Feature "\(<location>\|<include>\|<cflags>\|<linkflags>\|<library>\|<define>\|<file>\)"
" Деякі ключові слова
syn match bbv2BuiltIn "\<\(glob-tree\|glob\|SHELL\|run\)\>"
" Змінні на зразок $(THIS) чи $(THAT)
syn match bbv2Variable "\$([^)]\+)"
" Коментарі
syn region bbv2Comment start="#" end="$"
" Розділ actions містить команди оболонки Unix
syn include @Shell syntax/sh.vim
syn region bbv2Actions start="^{$" end="^}$" keepend fold contains=@Shell

" Нарешті співставляємо розпізнані частини із відомими типами.
hi def link bbv2Comment Comment
hi def link bbv2Target Type
hi def link bbv2Feature Special
hi def link bbv2BuiltIn Keyword
hi def link bbv2Variable Identifier

І ось результат:

import notfile ;

############# Generic environment ###########
 lib sys_gsmme : : <name>gsmme ;
 lib sys_mysqlwrapped : : <name>mysqlwrapped ;
 alias gsmme : sys_gsmme ;
 alias libmysqlwrapped : sys_mysqlwrapped ;
############# VDNS environment ##############
# alias gsmme : $(VDNS_TOP)/src_gsmlib//libgsmme ; #gsmme
# alias libmysqlwrapped : $(VDNS_TOP)/src_mysqlwrapper//libmysqlwrapped ;
#############################################

path-constant BIN_DIR : . ;

# Main target.
exe mps
    : main.cc
      app//app_src common//common_src
    ;

install bin/stage
    : mps
    : <location>$(BIN_DIR)
    ;
install bin/stage2
    : mps
    : <location>$(VDNS_TOP)/binaries
    ;

# Black magic. Use this carefully.
notfile distclean : @distclean ;
actions distclean
{
    echo "Cleaning..."
    rm -rf `find . -name 'bin*'`
    rm -rf `find . -name '*.log'`
    rm -rf `find . -name '*.bak'`
    rm -rf `find . -name 'a.out'`
    rm -rf lib*.so
    rm -f mps
}
explicit distclean ;

# Another piece of the magic, white one. Use this to make sure
# everything works.
alias test : [ glob-tree test ] ;
explicit test ;

2008-03-25

Покращення vman

За порадою vimtip #167 з давніх-давен я переглядав сторінки підручника у редакторі Vim. Для цього у .bashrc був псевдонім:

vman() { man $* | col -b | vim -c 'set ft=man nomod nolist' - ; }

Неймовірно просто і зручно, проте одна дрібничка постійно набридала: якщо шуканої сторінки немає, переглядач все-таки запускався без будь-якого тексту. Допоміг невеличкий порух пальцями:

vman() { text=`man $*` && echo "$text" | col -b |\
        vim -c 'set ft=man nomod nolist' - ; }

2008-03-14

Іпотечна криза

Наткнувся щойно на дуже цікаву думку: Денис Олійников пропонує прискорити іпотечну кризу. Я його підтримую!

2008-03-10

“Повітря, яким я дихаю”

Дуже сподобалася ця стрічка. Відверто, не люблю розводити філософські теревені, проте хорошу ілюстрацію важко оминути. Щодня ми кудись біжимо, чогось добиваємося, але здебільшого все це заради ілюзорних цінностей. Щоразу це коло розривається, коли постають справжні: любов, життя, діти. Цей фільм якраз обігрує кілька моментів такого переходу.

Найбільше зачепив мене останній сюжет: врятовані життя — це дуже не схоже київські будні.

2008-03-03

Словники у StarDict

Знадобилися тут словники екзотичної східної мови і так, щоб не шматувати папір у пошуку слова. До цих пір я успішно і дуже зручно користуюся StarDict, от і подумалося, що непогано було б знайти та причепити до нього потрібну мені мову.

Відверто, було непросто: вона ніяк не хотіла знаходитися. Десь трапилися два романізовані словники по чотири тисячі (!) слів у кожному напрямку, проте цього мало у житті. Нарешті з нечастих натяків зрозумів, що є можливість здобути шукане, сконвертувавши з комерційного Вавілону. Так з’явилося рішення:

Procedure 1. Конвертація словників Вавілону для StarDict

  1. Встановлюємо редактор словників StarDict

    [sakhnik@incognito ~]$ sudo apt-get install stardict-utils
  2. Беремо потрібні словники

    Можна, наприклад, так:

    [sakhnik@incognito ~]$ wget http://info.babylon.com/glossaries/389/Babylon_English_Hebrew.BGL
  3. Починаємо чаклувати

    Спочатку потрібно отримати його текстовий вигляд. Для цього запускаємо утиліту stardict-editor, нацьковуємо на щойно отриманий файл, правильно вказуємо тип .BGL і запускаємо перетворення клавішею Build. Як на мене, графічний інтерфейс для компіляторів чи фільтрів — це сумнівне рішення, тому що таку дію більше не можна автоматизувати, а це стало б у нагоді у наступних кроках.

  4. Поправляємо вихідний код словника

    Світ неідеальний, принаймні, зараз. Виявилося, що отриманий перед цим текстовий файл в деяких місцях містить неправильно закодовані символи, які я просто видалив. Крім того, в суміші східних та західних фраз недостатньо інформації для коректного відпрацювання GNU fribidi. В цьому випадку довелося трохи попрацювати напильником (редактором vim) з регулярними виразами. Насправді, це була справжня чорна магія, бо на це довелося витратити кілька годин.

  5. Компілюємо

    Нарешті, тим самим stardict-editor компілюємо вихідний код .babylon у зрозумілий для StarDict вигляд.

  6. Результат

Це просто рай якийсь, бо у школі та й в університеті нам доводилося користуватися таки дерев’яними книжками. Хоч і витрачали багато часу на пошук слів, проте ми таким чином знали йому ціну, і це була дуже проста й надійна мотивація для запам’ятовування.