четверг, 29 октября 2009 г.

Сисадминское

Если в один прекрасный день вместо привычного рабочего стола при включении компьютера вы наблюдаете черный экран и курсор мыши - значит что-то сломалось :) Прежде чем кидаться переустанавливать операционную систему - попробуйте проверить ветку реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

Найдите там строковый параметр Shell и проверьте, чтобы там было значение "Explorer.exe". Как правило, описанная проблема возникает из-за того, что какая-то программа изменила данный параметр. По моему опыту обычно этим занимаются вирусы и драйвера Hewlett-Packard :)

среда, 28 октября 2009 г.

Thread-safe структуры данных .NET 4 (ч. 1)

Продолжаем изучать новое в .Net Framework 4 - на этот раз статья "Thread-safe структуры данных .NET 4 (ч. 1)". Лично для меня больше всего полезна структура ConcurrentDictionary. Причем главное ее достоинство даже не в том, что она потокобезопасна - а в том, что она не выкидывает исключений, если из/в словаря попытаться получить/записать данные которые там уже есть/нет.

вторник, 27 октября 2009 г.

Новое в .Net Framework 4 beta 2

Крайне рекомендую изучить статью ".NET 4.0: что нового в базовых классах (BCL)? Подробный обзор" - она того стоит. В целом, среди улучшений есть много полезных - например, SortedSet и Enum.TryParse.

О повышении производительности работы

Иногда встречаются вот такие статьи "Как повысить эффективность рабочего дня с помощью интеллект-карт". Нет, вы ничего не подумайте - ничего плохого про такой подход я сказать не хочу. Однако есть некоторая проблема :) Если задача имеет четкое решение (т.е. в данном случае я составлю четкий план на день-неделю-месяц), то такая задача не будет решаться вообще. Ибо решение уже есть...

пятница, 23 октября 2009 г.

Проверка версии сборки

В один прекрасный момент вы обязательно озаботитесь алгоритмом автоматического обновления вашей программы. Простейшим вариантом такого алгоритма будет что-то вида:
  • получить с сервера текстовый файл с номером версии
  • получить номер версии запущенного приложения
  • сравнить и при необходимости провести процесс обновление файлов
Практически сразу вы столкнетесь с одной существенной проблемой - невозможностью обновить уже запущенную сборку. Фактически, существует всего три возможных варианта обхода этой проблемы:

  • запуск обновления в отдельной (независимой от обновляемых) сборке, причем работа обновляемого приложения должна быть завершена
  • динамическое создание (на лету) сборки с алгоритмом обновления, запуск ее через Process.Start, выход из основного приложения
  • запуск файла приложения с использованием механизмов службы теневого копирования, что опять таки требует наличия отдельной (внешней) сборки

В любом случае мы приходим к тому, что необходимо будет узнать текущую версию файла, который мы собираемся обновить, чтобы проверить устарел ли он. Сделать это можно следующим способом:

FileVersionInfo fi = System.Diagnostics.FileVersionInfo.GetVersionInfo(path);

версия файла (по частям) содержится тут::
            fi.FileMajorPart;
            fi.FileMinorPart;
            fi.FileBuildPart;
            fi.FilePrivatePart;
или тут:
            fi.FileVersion;

Так же я рекомендую изменять номер версии приложения в файле AssemblyInfo.cs только в атрибуте AssemblyFileVersion. Если номер версии задавать в атрибуте AssemblyVersion, то это будет приводить к полной перекомпиляции всех сборок текущего проекта, которые ссылаются на файл с изменившимся AssemblyVersion, даже если сами сборки не менялись. Если же номер версии задавать в AssemblyFileVersion, то компилироваться будут только изменившиеся сборки.

Версию уже запущенной сборки можно будет получить через Application.ProductVersion.

четверг, 22 октября 2009 г.

Microsoft, I love you! :)

Ну вот люблю я такие сообщения :



P.S.: там вообще-то silverlight 3 не установился, ну да ладно - он у меня уже давно ставиться не хочет :) Но от этого картинка хуже не становится, не так ли? :)

Upd: установка заняла 1 час времени и 3 перезагрузки - повезло, что я не ставил SQL Server - а, скорее всего, еще пару раз перезагрузиться пришлось бы :)

среда, 21 октября 2009 г.

пятница, 2 октября 2009 г.


Периодически попадаются разные опросы (или их результаты), в которых пытаются выяснить какие книги читают люди.

Вообщем-то, я ничего против этого не имею, однако всегда удивляла всеобщая убежденность в том, что "надо читать классику!". Я не знаю никого моего возраста или моложе, кто бы смог дочитать, например, "Войну и мир". Хотя многие читали произведения Жуль Верна.

Казалось бы, произведения написаны в одно время людьми, жившими в одно время, а как сильно отличается к ним отношение (русских) читателей!

Жуль Верн:
"20 000 лье под водой" (1869-1870)
"Вокруг света в 80 дней" (1872)
"Таинственный остров" (1875)
 "Пятнадцатилетний капитан" (1878)

Лев Толстой:
"Война и мир" (1863-1869)

Вообще, мне все-таки сложно сравнивать данные произведения ("Войну и мир" читал по диагонали, кусками), однако по моему субъективному мнению главная проблема в произведениях Толстого – это язык и описания. Они в прямом смысле убивают произведение. То есть сюжетно – произведение интересно, но читать его трудно/невозможно.

И еще. Произведения Жуль Верна можно читать в детстве. До тех пор, пока вам не попалась современная фантастика (или вообще современные произведения). После этого читать классику становится совершенно невозможно. Слишком все медленно, лирично, много лишних подробностей – в результате существенная часть произведения будет в лучшем случае просто пролистана, а в худшем – оно вообще не будет прочитано.

На мой взгляд, происходит это потому, что мир изменился. Слишком сильно изменился. Почитав некоторое время интернет/гугл – вы будете чисто автоматически пропускать не значимую  информацию в книге. Все эти описания природы, предложения на полстраницы текста никогда не будут прочитаны!

Классика умирает потому что она не вписывается в современный темп подачи материала – она рассчитана на длительное вдумчивое чтение, а современный мир требует быстрого получения и обработки информации. И возникает конфликт.

Кстати о конфликтах. Особенно не повезло фантастам середины 20-го века. Их представления о будущем настолько отличаются от современной реальности (данной нам в ощущениях :) ), что возникает – как говорят психологи – когнитивный диссонанс.

А вообще, чем дальше тем мне все сильнее кажется что скоро фантастическая литература на западе вообще умрет (хотя скорее всего просто выродится в нечто непотребное).

Посмотрите на современное американское фэнтези – фактически оно выродилось в сказку, причем для детей.

Посмотрите на современную американскую НФ. Ну как?, как??!! как можно космическим кораблем рулить при помои штурвала, а наводить пушки – вручную??? Где вообще хоть какие-то компьютеры??? Я уж не говорю о чем-то большем…

Кмберпанк вообще уже лет десять как умер.

Хотя стоит заметить, что есть один жанр, который успешно развивается на западе – это городское фэнтези. Вообщем, вампиры/оборотни/демоны/маги в современном мире. Эти произведения читать можно и интересно :)