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

2009-06-10

Чарівний Тбілісі

Грузія — це суцільна несподіванка. У вихідні спокійне, святкове, а в понеділок вже вулицю перейти неможливо. Звернувшись до когось англійською, ніколи не вгадаєш, якою дадуть відповідь: німецькою, французькою, російською чи таки англійською. Пригоди в аеропорту — це взагалі окрема історія.

2009-06-03

Нарешті я під’єднався до інтернету

Вибір випав на “Вільний інтернет” people.net. Придбавши модем, трохи довелося пововтузитися з налаштуванням, але результат не забарився.

zte8710 zte8710 sakhnik.blogspot.com Налаштування модему ZTE 8710 в Ubuntu 9.04

2009-05-08

Physics lab vs Kotyhoroshko

We used to have much laboratory work at the university, and it was quite boring sometimes. Either for our teachers. So once, we were asked by a young one: “Guys, who knows the name of Kotyhoroshko’s sister, will be scored the high grade automatically”! Shame on us, we didn’t take this opportunity, although everybody read that fairy tale in the childhood. And the answer was so obvious: Olenka.

Thanks Kotyhoroshko for the funny reminiscence!

2009-04-08

Книжка про ДАО

Виклянчив на роботі двотомник за три сотні талярів. Не пройшло й півроку, як цей фоліант прилетів із самої Гамерики. Це ж яким розумним буду, як прочитаю!

2009-04-03

Велосипед проти бюрократії

Оце вчора відколола охорона з адміністрацією бізнес-центру! Приїжджаю зранку вдруге на велосипеді, а з порогу мені відрізують, що підніматися з ним не можна. З іншого боку відмовляються приглянути за ним, поки я працюю. Нижню охорону я проігнорував, проте наш на поверсі таки завернув мене: “Були тут у нас вже такі розумні!” Добре, дідько з ними, поки глухий ранок…

Як на роботу прийшла наш адміністратор, я поскаржився на тяжку долю прихильників екології, на нерозуміння місцевих босів. Перший дзвінок до “Сан Санича” — перший компроміс: мені дозволять заносити велосипед по східцях, але щоб вийти доведеться щодня писати офіційну заяву з проханням винести майно! Ну не блазні, га? Чи місячний абонемент не можуть видати, чи хочуть потягатися з нашим принтером?

Значить, був другий дзвінок, вже до начальника того Санича. Посміявся, дозволив тепер вже й безперешкодно виходити. А щоб я, бува, не той велосипед з собою потягнув чи навіть комп’ютер, записали марку моделі (бугага!). Блазні та й годі, якщо корчать із себе супер-пупер безпеку, перевіряли б рюкзаки на виході, обшукували б одяг, а то “ні-сіло-ні-впало” вийшло. Ну, звеселили — й то добре!

2009-03-30

Україна коґніта

Прикольний візерунок:

Мапа моїх подорожей

2009-03-25

Військова психологія

За два роки “воєнки” у нас було всього три заняття з військової психології. Хоч вів молодий лейтенант, проте він зміг приборкати нас на першому ж занятті, що слухали пороззявлявши роти.

Нагодилися якось на перекличці відмічатися за відстуніх, хтось так прикривав товаришів. Завжди проходило, поки викладачі не стали перераховувати. Так ось саме в той час трапилася історія. На початку заняття викладач влаштував перекличку, знову замість Калити відгукнувся Науменко, але прогадав. Викладач підвів очі, попросив піднятися. Наш герой таки підкорився, все нормально. Але тут через два прізвища вже прийшла його власна черга.

На своє прізвище він відгукнувся в’яло, тож викладач перепитав, мовляв, хто такий? Нашому Науменкові точно не хотілося попадатися на очі ще раз (щойно ж уже вставав), але й марно “пропустити” заняття теж… Змусив його викладач: “Ах, за спинами ховатися — так ви герої, а за себе постояти не можете? Якщо не підніметься Науменко, весь звод зараз буде…” Нам-то що? Ми б його не стали видавати, але він не витримав, здався.

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

2009-03-20

Теорія ігор

Я ніякий не спеціаліст із теорії ігор, ба навіть в університеті у нас на цю тему була одна-єдина лекція. Але чимось вона мене звабила.

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

Таким чином вийшла таблиця гри.

СтратегіяКупитиЗабити
ПощастилоV11 гр.V12 гр.
ПрогадавV21 гр.V22 гр.

Гра з невизначеністю (проти мене випадок), тому надійної виграшної стратегії немає. Натомість із тих чисел я порахував, що у двох випадках із трьох таки слід взяти. Але раз у мене була тільки одна спроба, значить довелося “підкинути монетку”: зайшов у сусідню кімнату і глипнув на секундну стрілку…

Пізніше десь почув пораду психологів: “Якщо треба прийняти рішення, підкинь монету; не сподобався результат — виконай навпаки”.

2009-03-01

Основи економіки

 

Ecomonists are still trying to figure out why the girls with the least principle draw the most interest.

 
  BSD fortune

Іноді доводиться бувати свідком вихваляння своєю недалекоглядністю: Проста фраза: “Куплена до кризи автівка заробила мені -дцять тисяч гривень, мовляв, тоді коштувала стільки-то, а зараз вже на ту суму більше…” А за нею пішли слушні питання: “А хто ж заплатив тобі стільки? Чи не власники салону, які опинилися з твоїми недоціненими грошенятами й не можуть більше придбати за них рівноцінний товар?”

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

2009-02-05

Громадська бібліотека

Книжки з громадської бібліотеки — це витвір мистецтва. Мабуть, в цьому читачі дадуть фору будь-якому автору!

2009-02-04

Тютчев і C°

Кожен, мабуть, чув вірш про винятковість російської душі:

        Умом Россию не понять,
        Аршином общим не измерить,
        У ней особенная стать,
        В Россию можно только верить!       

Проте у світлі останніх подій краще завжди декламувати разом із продовженням Ігоря Губермана:

        Давно пора, едрёна мать,
        Умом Россию понимать!      

2009-01-08

Лижний сезон

Непомітно розпочався лижний сезон, два тижні вже бігаю. От учора порвався правий тім’як, доведеться міняти ручки палок.

2009-01-06

XeTeX

Натрапив на золоте дно. Схоже, це новий поштовх до розкопок.

2008-12-31

Перші колядники

Йшли співаючи по коридору, то чому ж було не запросити?

2008-12-24

Циганська історія

Студентом тоді ще був. Бідним, як щур, бо на стипендію жив, хоч і не одну. От, біжу на Котельникова в Ощадбанк по одну із них, а тут глип, біля кіоску крутиться кілька циганок із дітьми. Одна із них до мене: дай, мовляв, кілька копійок дітям на печиво. Мені ж цікаво стало, чи правда те, що про них розказують. От і згріб весь дріб’язок із кишені, мабуть, до цілої гривні. А вона ніжно з руки гроші забравши, не відпускає, і так пильно дивлячись впевнено починає: “Хочеш, щось тобі скажу?” А чому ж мені не схотіти після власної щедрості, тим більше, що вже заплатив? ;-)

Полила вона мене такими лестощами: і що сякий, і такий, і потім таке буде… Ну, навіть перегинати почала. От, говорю їй, що досить, мені йти треба, вже сам не радий що піддався. Тоді вона змовкла (хитра ж до дідька!), дає мені копійку назад і говорить, щоб взяв “на щастя”. Мені здалося, що легше піддатися, погоджуюся, а вона не віддає. Говорить, що так не можна, треба загорнути у паперову гривню! А якщо так не зроблю, то “знайду вдома домовину”!

Все, баста! Я зрозумів, куди вона зараз поведе. Їй в руки п’ять гривень, для надійності слово до вуха, що якщо вона накаркала, то я переріжу всіх циган, яких де зустріну (клин клином вибивають), і ми попрощалася. З тих пір циган не боюся, я вже від них відкупився малою ціною. У міф про їхню всеміць теж більше не вірю.

Справжня-таки маніпуляторка була, у мене слів немає від захоплення її вмінням! Не те що хлоп’ята-молокососи, які начиталися книжок про НЛП (це вже інша історія ;-).

2008-12-16

Willy

Who is he indeed?

2008-12-12

At last!

They did it finally, I’ll be able to edit more unicode texts in GNOME terminal.

2008-11-03

Лінукс очима розробника

(Стаття для http://www.grusha.org.ua)

Почалося все ще в університеті: на першому курсі лабораторні з програмування у класі HP Unix, потім Visual FoxPro у Windows NT4, лабораторні з чисельних методів знову в HPUX, невелика перерва, кафедральні спецкурси у Visual Studio 98. Далі перша робота на півтора місяця, де спробував було поставити собі RH Linux 5, але не подужав. Потім чотири роки розробки систем охорони у компанії ITV. Хоч і розробляли у Windows, ознайомився й почав використовувати переважно відкриті продукти: Vim для редагування, MinGW для компіляції, WiX для збірки інсталяційних пакетів. Нарешті, останні два роки працюю виключно в середовищі GNU/Linux у компанії Visonic, беру участь у розробці їхніх прикладних серверів та охоронних панелей.

Отже, панове, світу я побачив небагато, але якусь-таки думку про побачене довелося скласти. У цій коротенькій статті хочу поділитися з вами відповідями на два запитання:

  • Чому мій роботодавець обрав GNU/Linux для розробки своїх продуктів?
  • Чому я та мої колеги обрали GNU/Linux для повсякденної роботи?

Чому розробка для GNU/Linux?

Ми подібні до карликів на плечах гігантів.

Бернар де Шартр

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

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

Отже, для побудови веб-комунікатора PowerLink компанія Visonic вибрала дистрибутив Лінуксу montavista для процесора Xscale-256, дала йому 32 Мб оперативної пам’яті, 128 Мб постійної пам’яті для кореневої файлової системи, контролер дротяної мережі і т. ін. Цього виявилося достатньо для взаємодії з охоронною панеллю, запуску веб-сервер Apache, обслуговування десятка камер у локальній мережі і не тільки. У такій системі користувач має змогу зайти на сторінку системи охорони свого житла, переглянути зображення з камер, стан побутових приладів, при потребі щось дистанційно змінити. Крім того, веб-комунікатор у випадку тривоги передає повідомлення із зображенням на сервер, звідки воно може переправитися на телефон чи/і електронну пошту господаря. Насправді зважаючи на вимоги надійності та безпеки система трохи складніша, проте її успіх зобов’язаний вибору відкритих технологій, громадській підтримці (на противагу комерційній) та відсутності ліцензійних зборів за користування доробками.

Трохи інша ситуація із сервером, бо кількість його інсталяцій заздалегідь менша. До нього висуваються більш жорсткі вимоги до продуктивності, адже один сервер повинен обслуговувати до ста тисяч приладів. Крім того, логіка роботи значно складніша, багато задач свідомо були перенесені на сторону більшої потужності. Це стосується, наприклад, обробки отриманих зображень. Проте все необхідне у нас вже є: C++ для вимогливих задач, Python, XSLT для редагування конфігурації, bash для склеювання різних частин, PHP для користувацького інтерфейсу тощо.

Найбільш цікавий та показовий випадок розробці сервера трапився тоді, коли постала задача розробити надлишкове рішення, тобто звести нанівець результат відмови обладнання. Вирішили використати два однакові сервери, на яких працює служба drbd для синхронізації оперативних даних. Інша служба heartbeat слідкує за життєздатністю, і як тільки виявляється зникнення зв’язку чи інша неполадка, роботу починає виконувати резервний сервер.

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

Давайте підсумуємо. Відкритість, простота, надійність, зручність для розробки — все це причина вибору платформи GNU/Linux у компанії Visonic.

Чому розробка у GNU/Linux?

Якби люди знали інструменти grep, sed, awk, ніколи не з’явилося б стільки красивих програм.

Народна творчість

Починаючи обговорювати речі, які стосуються людських смаків, ми завжди ризикуємо розпалити священну війну. Тому домовмося, що мої слова — це не категорична істина, а вираження мого особистого смаку. А на колір і смак, як відомо, всі фломастери різні. От взяти, наприклад, популярний віднедавна принцип побудови інструментів для дизайнерів WYSIWYG (what you see is what you get). Багато хто ні про що інше й чути не хоче, а для мене це кіт в мішку. На вигляд документ неабиякий, а відомо кому, яка каша там всередині? WYWIWYG (what you want is what you get) — це справжній шлях. Розуміння цієї моделі почалося з часів командної оболонки[1] Unix. Користувач просить систему виконати якусь дію чи навіть послідовність дій, детально описуючи цільові об’єкти, особливості операцій. При цьому вважається, що користувач розуміє, що хоче, а система повинна покірно виконати саме замовлені дії без відхилень і примх.

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

Трохи роззирнувшись, можна помітити, що такий підхід переважає у системах на зразок Unix: командний інтерфейс налагоджувача GDB[2], системи підготовки до друку LaTeX[3] та LilyPond[4] тощо. Мабуть, недарма: їх створили інженери, які розуміли, що тільки усвідомлені дії можуть принести і хороший передбачуваний результат і справжнє задоволення від творіння у такому середовищі.

Все в цій системі — програмування, тобто насправді ніхто не заставляє, але якщо треба виконати десяток однотипних дій, то відразу відчувається доречність можливості. Мудро, наче в одному радянському мультфільмі: “Краще витратити годину, а потім за п’ять хвилин долетіти”.[5] Для програмістів така можливість — це особливе задоволення: з одного боку автоматизація вкрай проста, тому рідко бувають невдачі, а з іншого потім відчуваєш себе на голову вищим від індуса (даруйте, людини з конвеєру). Скриптування підтримують: командна оболонка[1], текстові редактори, налагоджувач[2], LaTeX[3], MetaPost[6], системи контролю версій і багато інших. І головне: просто, без занадто розумних слів та заплутаних технологій. Більше того, особливих надзвичайностей у різних, здавалося б, програмах зовсім небагато, адже не на порожньому місці всі вони будувалися. Так, всюди використовуються одні й ті самі регулярні вирази, для зчитування запитів командного рядка використовується одна й та сама бібліотека readline, ключі командного рядка повторюються від програми до програми…

Розробляєш прикладний сервер — будь готовий до можливих проблем, а ще морально підготуйся до того, що “на льоту доведеться міняти обшивку крил”. Це треба відчути на власній шкурі, бо стільки адреналіну виділяється тільки на рингу чи в затяжному стрибку (з того самого недобудованого крила!). А потім розумієш, що не пережив би той день, якби всі давно вивчені та полюблені інструменти не працювали через мережу прозоро, наче й не через мережу зовсім. Простіше не придумаєш: під’єднавшись до віддаленого сервера, отримуєш командну оболонку і відчуваєш … тепло й затишок рідного оточення. Завбачливо передаєш опцію -X — і милуєшся вікнами віддалено запущеної графічної програми (viva wireshark[7]!). Монтуєш директорію з вихідними кодами — і можеш розпочинати налагодження, не займаючись щохвилинно копіюванням. Рай на Землі!

Нарешті, є й унікальні речі, яких не знайти на інших платформах. От, прийшовши зі світу Win32, я відразу ж кинувся шукати спосіб перехоплення даних з послідовного порту. Справді, дуже потрібна штука той portmon[8], щоб зрозуміти, як байти бігають по дротах. А дзузьки, зовсім нічого нормального! І раптом осяйнуло: “А все те просто зайве, адже є strace[9]!” З прозрінням прийшло й розуміння: це все відкритість! Linux не ховає таємниці за сімома печатками, штовхаючи допитливих до відчайдушних способів злому, а радо ними ділиться. Якщо не віриться, поцікавтесь-но, як працює той самий portmon[8]. Проблеми бувають всюди, а щоб їх вирішити комусь доводиться танцювати з бубном, а хтось може зазирнути у вихідний код чи навіть підглянути, як все працює in vivo. Отже, в такій системі працювати не тільки приємно, але й легко!

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



[1] Командна оболонка — інтерпретатор команд операційної системи Unix.

[2] GNU debugger — налагоджувач програм у системі GNU

[3] LaTeX — набір макросів TeX для отримання PDF чи PostScript з тексту

[4] LilyPond — система підготовки до друку музичних творів, чимось нагадує LaTeX, тісно з ним взаємодіє.

[5] Крила… ноги… головне — хвіст!

[6] MetaPost — це пакет для креслення здебільшого математичних ілюстрацій, інтегрується з LaTeX.

[7] Wireshark — графічна програма для перехоплення мережевих даних, незамінний помічник у розробці.

[8] portmon — зручний перехоплювач даних з послідовного порту, буває в нагоді при налагодженні взаємодії з деяким спеціальним обладнанням.

[9] strace — маленький інструмент, що відображає взаємодію прикладної програми з ядром Linux, тобто відображає системні виклики.

2008-10-09

Закривайте транзакції!

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

Несподівано для себе зробив відкриття, що в межах транзакції результат вибірки завжди один і той самий (для одного запиту):

mysql> start transaction;
mysql> select * from table; -- якийсь результат
mysql> -- в цей час хтось змінює записи таблиці table
mysql> select * from table; -- повертає початкову вибірку без змін
mysql> commit;
mysql> select * from table; -- тепер вже видно зміни з іншої транзакції

А почалася ця проблема саме через розширення пітона MySQLdb. Він автоматично для нового з’єднання починає нову транзакцію, а закрити її пропонує самостійно викликом

conn.commit()

Саме його й бракувало у коді після вибору з бази даних…

2008-10-01

“Циганська угорка”

Для нас батьки робили майже неможливе. Наприклад, батько колись привіз з райцентру останній баян, за який довелося заплатити більше, ніж кілька місячних заробітків. А до тих пір я вчився на якомусь позиченому старому…