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

2008-09-20

Політологічна гра “вибори”

Переглядаючи студентські фотографії, згадав пригоду на четвертому курсі. У другому семестрі ми тоді вивчали політологію, а країна якраз вибирала різних депутатів.

Словом, наш викладач Ткач Олег Іванович (гордився, що носить прізвище основоположника політології, хоч той звався по-німецьки Вебером) запропонував розіграти наші власні маленькі вибори до райради: два кандидати пропонують свої програми, два їхні повірені проводять агітацію, ну а решта потоку — електорат. Мені випало стати кандидатом, за мене заступитися взялася, як завжди, Наталя Прокопчук. Разом розробили серйозну програму підйому Голосіївського району, мовляв, не життя стане, а справжній рай. Для більшої переконливості агітку повісили навіть на факультеті.

Все проходило ідеально: наші суперники явно не витримували такої підготовки. Тільки от після голосування виявилося, що ми набрали удвічі менше голосів! Як же їм це вдалося??? Таємницю розкрили й нам: інший кандидат просто підкупив виборців, мовляв, після виборів пригощає пивом на виставці!

Чи не реалістично, га?

P.S.: Потім викладачі, побачивши агітку, ще довго перепитували, чи став я-таки депутатом…

2008-09-14

Заповідник “Биківнянські могили”

Найкращий фундамент для (комун)ізму — людські кістки, кістки найкращих людей свого роду. Вороги народу — це хазяйновиті, зрячі чи просто інакомислячі? То що ж це за “народ” такий тоді залишається?

2008-09-08

Геокешинг

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

Нагородою стала знайдена схованка, яку навіть розкопувати не довелося. Забрав маленьку хрестовинну викрутку (стане останнім аргументом у суперечці з колегами), залишив DVD з кубинською сальсою.

Потім далі ще відвідав позначену у Вікімапії альтанку.

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' - ; }