Публікації

Показано дописи з жовтень, 2005

Хороший художник

Зображення

Анекдот

Здравствуйте, в эфире программа "Очумелые ручки" и сегодня мы с вами будем собирать газотурбинный двигатель. Для этого нам потребуется две бутылки водки емкостью 1л. и разобранный газотурбинный двигатель.

Кто накурился?

Зображення
Нашел на http://fishki.net

Что такое workflow?

What is Workflow, and why bother? Workflow, of course, is one of those deeply overloaded terms that hinders communication as often as it helps, so I’d better say what I mean by it. Workflow comes down to just two ideas: that there is work to do, which a workflow sees as opaque units of behavior; and flow, which describes what work gets done when. So is this a Workflow?....... Пост Дейва Грина

Tracing APIs in .NET Framework 2.0

В .NET Framework 2.0 Trace API немного расширили. То что я почитал, пока мне не особо поравилось: A Tracing Primer – Part I - is a simple introduction to the tracing APIs. A Tracing Primer – Part II (A) - talks mainly about filtering events A Tracing Primer – Part II (B) - talks about developing custom trace listeners (plugins that will channel your trace events to wherever you desire). A Tracing Primer – Part II (C) - talks about some details of who the configuration files are interpreted.

Тапочки с подсветкой

Зображення
Для того, чтобы Вы смогли адекватно оценить эту идею, скажу что у меня дома коридор имеет ширину где-то 1.1 м. Спальня в одном конце коридора, туалет в другом. Выключатель (чтобы свет включить/выключить) - возле туалета. А я иногда вечером, пью с друзьями пиво... И в коридоре стоит велосипед дочки...

Если раньше доставалось в основном самолетам,..

Зображення
...то теперь птицы взялись за наземные виды транспорта:

Двойная проверка на null

Тот кто изучал исходники CLR, или писал многопоточный код много раз видел подобный код: if (a == null) lock (this) { if (a == null) a = new A(); } Лично я, когда увидел его впервые, был удивлен двойной проверкой. Но, подумав, понял зачем это надо. Ведь пока мы ждали блокировки (это могло быть достаточно длинное ожидание, в случае, если объектом this владел кто-то другой), кто-то мог уже изменить переменную a. Сегодня, в одном весьма нетривиальном коде, мне пришлось еще одну вариацию написать: if (a == null) Interlocked.CompareExchange(ref a, new A(), null); Суть почти та же, что и в предыдущем примере. Почти, потому что есть несколько отличий: Нет блокировки потоков (все помнят что функции Interlocked работают гораздо быстрее, чем использование Monitor -ов). Объект A может создается после первой проверки, но до второй. Это означает, что он может создаваться лишний раз и потому такой вариант не подходит, если это создание имеет побочный эффект. Второй вариант очень полезен

Турецкие бани?

Зображення

Идти или не идти?

Зображення

DBNull и Binding

В .NET 1.1 часто боролся с биндингом, и с тем, что он очень не любит когда свойство в контроле имеет тип унаследованый от ValueType и, как следствие, не может хранить в себе значения null, а из набора данных приходит null, или того хуже - DBNull. Обнаружил, что в 2.0 пацаны из Редмонда сделали легкое движение рукой и теперь эти штаны уже на что-то похожи. Читать надо про свойства класса Binding NullValue и DataSourceNullValue . Помним, что оба этих свойства работают только тогда, когда Binding.FormattingEnabled == true.