Monday, June 29, 2009

Firefox - пожирач пам'яті



Це через кілька хвилин після того як, здавалося б, закрив firefox. Куди стільки пам'яті можна жерти?

Sunday, June 28, 2009

Linq в .Net Framework 2.0

Проблема: Клієнти живуть на Windows 2000, на яку можна поставити лише .Net Framework 2.0. Але в проекті хочеться використовувати Linq. Чи це можливо?

Рішення
: Можна! Завантажуємо чудову бібліотеку LinqBridge і з радістю використовуємо Linq.

Що саме містить ця бібліотека:
  • Власну реалізацію всіх Linq операторів для Enumerable класу із Framework 3.5, що саме і дозволяє використовувати Linq to Objects в .Net Framework 2.0.
  • Реалізує generic делегати Func та Action.
  • Реалізує ExtensionAttribute, який дозволяє використовувати extension methotds в .Net Framework 2.0.
Однак це не стосується Linq to Sql та Linq to Xml, які ця бібліотека не реалізує.

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

Sunday, February 15, 2009

Харпер Лі. Убить пересмешника.

В романі Харпер Лі, очима маленької дівчинки, показано життя Америки на початку минулого століття.

Читається дуже легко, чимось нагадало "Пригоди Тома Сойєра" Марка Твена.

Вернор Виндж. Пламя над бездной.

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

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

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

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

І все це переплітається повідомленнями із груп новин пародійної всесвітньої мережі "мільйонів неправд".

Мені роман сподобався своєю незвичністю. Тепер собак шкода, як же їм, бідним "синглетам" живеться.

Monday, February 2, 2009

Герберт Уэллс. Машина времени.

Ця книга давно була в мене в readlist'і. Нарешті дійшли руки її прочитати. Перед тим як її завантажити, прочитав кілька дуже схвальних відгуків. І мабуть тому від книги очікував більше. Але прочитав із задоволенням, швидко. Перед сном і з ранку в метро.
Головною темою книги є питання соціальної нерівності, яке автор показав в незвичному ракурсі.

PS. Я думаю, що людству до 8000 року не дотягнути.

Sunday, February 1, 2009

Стивен Хокинг и Леонард Млодинов. Кратчайшая история времени.

Прочитав чергову книгу найвідомішого (принаймні для мене) фізика сучасності.

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

І дійсно складні речі в книзі пояснені дуже доступно і з цікавими прикладами. Прочитав із великим задоволенням.

P.S. Але така хитрість автора зі мною не спрацювала. Все рівно нічого не розумію.

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 .