Thursday, October 30, 2008

Unit testing #2. NUnit constraint-based Asserts

Починаючи з версії 2.4 в NUnit реалізовано новий стиль assert'ів. Ця модель використовує один метод Assert.That(args) для всіх тверджень. Логіка виконання кожного твердження перенесена в другий параметр. Ось декілька прикладів:
Assert.That(10.0/3.0, Is.EqualTo(3.33).Within(0.01f));
Assert.That(2*2, Is.Not.EqualTo(5));
Assert.That(new object(), Is.Not.Null);
Assert.That(string.Empty, Is.Empty);
Assert.That("abc", Has.Length(3));
Assert.That(new string[] {"a", "b", "c"}, Is.All.Not.Null);
Також можна комбінувати constraints.
Assert.That(3, Is.LessThan( 5 ) | Is.GreaterThan( 10 ));
Assert.That("s", !Is.Null));
Для того щоб працювати з новим стилем потрібно використати:
using NUnit.Framework.SyntaxHelpers;
Цей стиль мені подобається більше ніж класичний.

Детальніше - на сторінці Constraint-Based Assert Model документації NUnit .

Wednesday, October 29, 2008

Unit testing #1


Я знову вирішив щось написати. Справа в тому, що я почав читати книгу "Pragmatic Unit Testing in C# with NUnit" by Andy Hunt and Dave Thomas with Matt Hargett. І ось, вночі, коли я прочитав перші сторінки, я подумав - "Круто, прочитав лише кілька сторінок, а вже виніс для себе чотири нових речі про які не знав раніше. А наступного дня, коли на роботі розказував, що книжка цікава, що я дізнався чотири нових штучки, ніяк не міг згадати, а про яку ж все-таки четверту річ я дізнався. От три пам'ятаю а четверту ні. Отже треба ці знання записувати. Тут їм і буде місце.



Тіп #1. "Ommit the
message string for reporting unless you really need to".

Ось класичний синтаксис Assert в NUnit:
Assert.AreEqual(expected, actual [, string message])
Автори рекомендують не включати текстовий рядок для пояснення тесту, крім випадків коли це дійсно необхідно. Краще коли ім'я тесту самостійно пояснює призначення самого тесту, коли використовуються доречні методи Assert'а, або тест розбивається на декілька методів, щоб залишатися сконцентрованими на конкретних тестових випадках.

Що ж в цій практиці революційного і чому вона нова для мене? Не знаю. Просто я чомусь часто писав ці текстові пояснення в NUnit Assert'ах. Мабуть це був вплив StyleCop, який змушує завжди писати пояснення для методу System.Diagnostics.Deиug.Assert. А тепер не буду, звісно крім випадків, коли це дійсно необхідно :).

Wednesday, July 2, 2008

Двоколісний друг

Нарешті купив мотик. Yamaha YBR 125. Або просто "йобр", чи "юбка". Уже встиг впасти :). Фотки потім.

Monday, June 2, 2008

Інвестиційний портфель

Натрапив на сайт Мой инвестиционный портфель, який дозволяє контролювати та аналізувати свої інвестиційні вклади. Я для таких цілей використовував spreadsheets в Google docs. Мушу визнати що користуватися новим ресурсом значно простіше.

Friday, April 11, 2008

Як перезавантажити IPod

Що робити коли завис IPod? Перезавантажити. Як це зробити описано тут.

Monday, March 31, 2008

Николай Гаврилович Чернышевский: Что делать?

Кто не изучил человека в самом себе, никогда не достигнет глубокого знания людей.
Сильний твір! Розумний і непростий. Чомусь не можу дібрати слів, щоб описати про що саме ця книга. Мабуть про стосунки людей, про місце особи в суспільстві, про особистість... Не знаю, якось складно передати враження від роману в двох словах. Та мабуть цього й не варто робити...
Комусь твір може здатись неактуальним для нашого часу. Так я з кимось не погоджусь. Одним словом, раджу читати — книга точно не залишить Вас байдужим.

Tuesday, March 11, 2008

Vim localization

Давно вже хотів написати про мій досвід використання української мови (та й російської теж) в Vim, і ніяк не міг за це діло взятись. Але врешті-решт я це зробив!

Vim — один з найпопулярніших текстових редакторів. Докладніше про Vim можна почитати на домашній сторінці та на сторінці в wikipedia.

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

Використання кириличної розкладки

Як відомо Vim має декілька режимів роботи (хоча як говорить мій друг Hobbin "Vim має два режими в одному — пищить, а в іншому все псує" :)). Так от, без спеціального налаштування, Vim в нормальному режимі не сприймає команди набрані кириличною розкладкою. Далі наведено два методи для подолання цього неподобства.

Метод I. Використання langmap

Доповнити _vimrc такими рядками (простіше вчинити як я — просто використати _vimrc колеги)

" Cyrillic keys support
:set langmap=ФИСВУАПРШОЛДЬТЩЗЙКІЫЕГМЦЧНЯЖЮЇЪ;ABCDEFGHIJKLMNOPQRSSTUVWXYZ:>}},
фисвуапршолдьтщзйкыіегмцчняжюїъ]];abcdefghijklmnopqrsstuvwxyz\;.\,,\;;


Саме так я жив досить довгий час. Але при наборі команд в режимі командного рядка все одно доводиться переключатися до латинської розкладки. Ця проблема вирішується при використанні методу II.

Метод II. Використання keymap

Виявляється Vim дозволяє підключити зовнішню розкладку клавіатури за допомогою команди set keymap, і перключати розкладки вже всередині самого редактора за допомогою команди <ctrl-6> (в режимі редагування).

В директорії $Vim\vim71\keymap (для Vim версії 7.1) серед інших, я знайшов файл ukrainian-jcuken.vim (by Anatoli Sakhnik) з українською розкладкою звичною для Linux. Але так як я звик до Windows варіанту (та й клавіатури тільки з Windows розкладкою попадались :)), то вирішив створити українську розкладку характерну для Windows. За основу я взяв файл з російським аналогом russian-jcukenwin.vim (by Artem Chuprina), де добавив відповідні українські символи, та добавив апостроф замість букви "ё". Розкладка з апострофом використовується у Windows Vista під назвою ukrainian enhanced. Так і я назвав свою. Сам файл опублікував серед скриптів vim за адресою http://www.vim.org/scripts/script.php?script_id=2165. Якщо така розкладка виявиться корисною іще для когось, то я скористаюсь порадою Анатолія Сахніка і напишу листа до vim_dev з пропозицією добавити її до дистрибутиву Vim. Наразі, судячи з рейтингу -1/1, цей скрипт не викликає захоплення у Vim спільноти :). Для того щоб скористатися розкладкою, просто збережіть файл до директорії $Vim\vimfiles\keymap та розширте _vimrc таким:

" Ukrainian layout support. Use <ctrl-6> (<ctrl-^>) in Insert mode, to toggle layouts.

set keymap=ukrainian-enhanced
" Default - latin layout
set iminsert=0
" Default - latin layout in search mode
set imsearch=0

Для того щоб переключити розкладку, використовуйте <ctrl-^> (<ctrl-6> в Windows).

Навігація по словам

Vim неправильно опрацьовує команди навігації пов'язані з визначенням слова, такі як w — слово вперед, e — перейти до кінця слова, b — слово назад, * — знати в тексті слово під курсором, і т.п. Це стосується тільки версії Vim для Windows. Щоб вилікувати цю хворобу, достатньо добавити в файл конфігурації _vimrc такий рядок:

" Support for words in cyrillic.
" Default for Windows is: @,48-57,_,128-167,224-235
set iskeyword=@,48-57,_,А-Я,а-я,І,і,Ї,ї,Є,є,Ґ,ґ

В першоджерелі використовується рядок базований на символьних кодах:

set iskeyword=@,48-57,_,192-255

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

Трохи гумору


Використані джерела:

Домашня сторінка Vim
Vim — Википедия
Vim — Викиучебник
Все о Vim: Русский язык в Виме
:help keymap
:help langmap
:help iskeyword

Monday, March 10, 2008

Великий піст

Коли у преподобного отця запитали: "Що не можна їсти в піст?", він відповів: "Своїх ближніх"
Сьогодні розпочався Великий піст. Мене ця тема зацікавила, адже останнім часом мені вдалось побороти декілька своїх драконів. Так я позбавився нікотинової залежності, зараз я не вживаю алкоголю, і в процесі боротьба з ненормативною лексикою. Але все це було здійснено в різний час, різними методами як результат цілеспрямованого бажання позбавитись конкретної звички (залежності). А піст - це зовсім інше! Це не утримання від чогось, не дієта. Це стан душі, можливість проаналізувати себе та свої вчинки, можливість змінити себе на краще, змінити своє сприйняття світу. Ось такі думки після прочитання статей про піст. Тож далі наведено таку собі солянку з різних джерел інтернету, та подекуди моїх думок про Великий піст.

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

Великий піст є найтривалішим та основним із чотирьох багатоденних постів, тому й зветься Великим. Розпочинається після закінчення Масляної, і триває до Великодня протягом семи тижнів. Ділиться на чотири частини: Чотиридесятниця (40 днів), Лазарева субота (Вербна субота, 1 день), Вхід Господа в Єрусалим (Вербна неділя, 1 день) та Страсний тиждень (6 днів). Таким чином, піст триває 48 днів. Цього року піст розпочинається 10 березня і триватиме до 27 квітня.

Що можна вживати під час Великого посту

Табу Великого посту є найсуворіші порівняно з іншими постами. Церковним статутом обмежене вживання продуктів тваринного походження - м’яса, молока, яєць, риби. Якщо протягом Різдвяного посту можна досить часто куштувати рибу та олію, то під час Великого посту рибу можна вживати лише двічі - на Благовіщеня (7 квітня, фіксована дата) та на Вербну неділю (Вхід Господній до Єрусалима , неділя, що передує Великодню). Щодо олії , то її можна додавати до страв лише по суботах і неділях та на великі свята.

У перший день посту – Чистий понеділок і останній – Страсну п’ятницю рекомендується обходитись взагалі без їжі. Протягом посту годиться споживати продукти лише рослинного походження: картоплю та страви з неї, різні супи та каші без вершкового масла, овочі - сирі, варені, консервовані та квашені (помідори, огірки, капусту тощо), консервовані салати (без олії), фрукти та сухофрукти, хліб, крім здоби, горіхи, гриби, майонез (до складу якого не входять яйця) та маргарин (без домішок молокопродуктів). Міцні алкогольні напої, особливо горілка та коньяк, заборонені. Лише у суботу, неділю та на свята дозволяється випити трохи вина. Протягом посту потрібно відмовитись і від залежностей, таких як кава, цигарки, пиво, наркотики, а також від статевих стосунків. Мабуть обмеження повинні стосуватись і різноманітних сервісів типу "ВКонтакте", "Google Reader", "ICQ", "Bash.org" та інших timewaster'ів.

Основні правила посту

  • У перші два дні посту (10 і 11 березня) і останній (26 квітня) рекомендується повне утримання від їжі. А от воду можна пити скільки завгодно.
  • Кожного понеділка, середи і п'ятниці - «суходеніє». Не можна вживати ні варену, ні приготовану на пару їжу. Дозволяються хліб, свіжі, сушені й квашені овочі та фрукти.
  • По вівторках і четвергах дозволяється варена їжа, але без додавання рослинної олії.
  • По суботах та неділях дозволяються вино та олія.
  • На Благовіщення (7 квітня) і у Вербну неділю (20 квітня) дозволяється їсти рибу.
  • У Лазареву суботу (19 квітня) можна поласувати ікрою.

Поради дієтологів

  • Постуйте! За даними статистики, 50 відсотків українців мають зайву вагу. Тому помірне обмеження в їжі й утримання від висококалорійних продуктів принесе лише користь.
  • Підтримуйте себе вітаміно-мінеральними комплексами. Кількість жирів під час посту різко зменшується. А оскільки більшість вітамінів (А, D, Е, К) жиророзчинні, організму їх буде не вистачати.
  • Вживайте збалансовану їжу. Щодня організм має отримувати 100 г жирів, 100 г білків, 400 г вуглеводів. При цьому харчування повинно бути чотири-, і навіть п'ятиразовим, оскільки без білків тваринного походження насичення відбувається значно повільніше.
  • Їжте мед! Завдяки великому вмісту глюкози і фруктози (вуглеводи, що легко засвоюються), вітамінів групи В, А, С, Е, РР, К він надзвичайно корисний і позитивно впливає на шлунково-кишковий тракт.
  • Пийте багато рідини. В перші два дні посту і в останній, коли прийнято повне голодування, необхідно пити велику кількість рідини - півтора-два літри протягом дня з додаванням меду чи лимонного соку.
Піст, або говіння - це не лише відмова від певної їжі , а передусім – це духовне очищення: молитвою, приборканням своїх пристрастей, аналізом свого життя. Це час досягнення душевного спокою, миру, відвідування церкви та примирення з ближніми. Кульмінацією посту є покаяння, сповідь та причастя. Без духовного змісту піст є простою дієтою. Через смирення тіла утриманням від скоромної їжі смиряється дух. Піст – це добровільна дія і персональна таємниця. Тим, хто наважився на нього, відкриваються безмежні можливості власної сили волі та радість перемоги над собою та своїми пристрастями.

Monday, March 3, 2008

Битва за Дінпро

Сьогодні повернувся з Дніпропетровська, куди їздив на виїзну гру київського Динамо.
Гарні, розкуті дівчата, убиті дороги, досить чисті вулиці, дуже рідке вживання української мови, - такі основні враження залишилось від міста. Але звісно ж найбільше емоцій принесла сама Гра, на яку, за словами бувалих учасників, приїхало чи не найбільше фанів за останні часи. І тим більш вражаючою видавалась та атмосфера доброзичливості та поваги один до одного зі сторін вболівальників обох клубів. Надзвичайне враження справляє синхронне виконання зарядів та пісень фанами обох клубів, оплески на адресу фанів протилежного клубу. Динамівські футболісти сповна віддячили свої вболівальників, показавши гру яку від них давно очікували. Юрій Сьомін здається уже став своїм для фанів, особливо після того як подякував їм за підтримку.
Ложкою дьогтю стали дії бійців "Беркут", які на події, що відбувались на стадіоні реагували неадекватно.
Богдан вже опублікував фотки. Їх можна подивитись тут.
Вітаю з перемогою!

Tuesday, February 5, 2008

Відпочинок в Славському


Сьогодні повернувся зі Славського, де чудово відпочив в компанії з друзями. Хочу ще!

Monday, January 14, 2008

Огляд книги "Краткая история почти всего на свете"

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

Отже починаю з першої прочитаної в цьому році книги -
"Краткая история почти всего на свете" Білла Брайсона. Дуже легка в розумінні (можливо й через певну поверхневість фактів) енциклопедія, в якій описані події починаючи з моменту створення Всесвіту до наших днів. Факти та події, які описує автор, інтригують та захоплюють уяву.
Піднімаються такі теми як: створення Всесвіту, космос та Сонячна система, структура Землі, молекули, атоми та мікрочастинки, тектоніка Землі, вулкани, землетруси, океани, історія Землі, зіткнення астероїдів із Землею, льодовикові періоди, живі організми та їх еволюція, походження людини та безліч інших фактів, що змушують читати книгу на одному диханні.
В книзі згадується величезна кількість історичних постатей, описуються їх стосунки.
Також мушу зазначити що в книзі є більше 400 приміток, вказаних перекладачами і хоча більшість з них пов'язана з персоналіями, є значна кількість приміток, що починаються з таких слів як: "Тут некоторая неточность", "Это не совсем так", "Это некоторое преувеличение" :). Але це зовсім не псує враження від книги.

Резюмую: Надзвичайно легка для читання книга, яка допомагає навести порядок в голові завдяки великій кількість фактів, що описані дуже коротко і цікаво. Порівнюючи з книгами Стівена Хокінга - книга для дітей дошкільного віку.

До речі я натрапив на неї випадково - вибирав блокноти Moleskine в Бабуїні і побачив книгу в їхньому рекомендованому списку.

Більше не бухаю!

Від сьогодні припиняю вживати алкоголь, за винятком власноруч звареного пива :). Принаймні на три місяці. Можете мене привітати!