вторник, 25 марта 2008 г.

Новости блога

Блог переехал на новое место. Теперь его можна найти по адресу: http://blog.e0ne.info/. В данный момент он работает в тестовом режиме, фиксятся баги.

среда, 5 марта 2008 г.

Singularity - операционная система на .NET

Слухи об Singularity появились давно. Операционная система, написанная на .net framework интересовала многих, но кроме нескольких видеороликом Microsoft больше ничего о ней не сообщала. Тем временем появился проект SharpOS. Вчера, Tue Mar 4 2008 at 10:00 AM, на http://www.codeplex.com появился проект Singularity Research Development Kit (RDK), где доступны исходники Singularity. Теперь это не только слухи, а работоспособный прототип ОС.

понедельник, 3 марта 2008 г.

Миграция unit tests на Visual Studio 2008

При миграции unit-тестов с Visual Studio 2005 на 2008 (.net 2.0) обнаружил интересный баг. Студия радостно отрапортовала об успешной конвертиции проектов, но при запустке тесты проваливались с такой ошибкой:
Method SampleTest.ClassDBTest.MyClassInitialize has wrong signature. Parameter 1 should be of type Microsoft.VisualStudio.TestTools.UnitTesting.TestContext.

Проверив инициализатор убедился что сигнатура метода правильная ещё раз запустил тесты, но они категорически отказывались работать. На компьюторе стояли две среды разработки: VS2008 и VS2008.
После внимательного изучения проекта выяснилось, что после миграции остался старый reference на сборку Microsoft.VisualStudio.QualityTools.UnitTestFramework версии 8.0. После изменения на новую версию 9.0 всё стало на свои места.
Надо отметить что в отчёте о конвертиции проектов никаких замечаний по этому поводу не было.

среда, 27 февраля 2008 г.

Microsoft vs. Google: Битва титанов

Этим постом я начинаю серию из 4 рассказов про on-line сервисы двух одних из наиболее влиятельных игроков на рынке програмного обеспечения.

Часть 1. Введение.
Часть 2. Краткое описание сервисов Google.
Часть 3. Краткое описание сервисов Microsoft.
Часть 4. Подводим итоги.

Часть 1. Введение.



О Microsoft и Google мы слишем каждый день. Они являются крупнейшими компаниями, разрабатывающими програмное обеспечение. Две враждующие между собой компании предоставляют пользователем схожий набор услуг.
Google – лидер среди интернет-поиска. Кроме поиска предоставляет немалый набор дополнительных бесплатных услуг. Microsoft – не так давно вышел на просторы интернет-услуг. Активно набирает обороты среди пользователей online-сервисов, развивает msn search и хочет купить Yahoo. Две враждующие между собой корпорации имеют много общего.
Google gmail, calendar, google docs, google reader, desktop, picasa, talk, search и др.
Microsoftlive search, messenger, mail, calendar, writer, photo album и др.
В то вменя как Microsoft активно продвигает свой MS Ajax, при этом мало где используя его на своих порталах(в последние 2-3 месяца ситуация значительно поменялась), Google без громких заявлений делает Gmail ¬- бесплатную почтовую службу, со свом ajax, который ничем не уступает, а в некоторых ситуациях превосходит своего оппонента. Gmail является одним из первых web 2.0 порталов и с этих пор начинается новый этап холодной войны двух гигантов. Microsoft увеличивает место для хранения писем, начинает использовтаь ms ajax на live.com… Обе компании поочередно представляют всё новые и новые сервисы, рfстёт количество пользователей, конуренция набирает обороты. Пока Microsoft заботится о своём продукте под названием Internet Explorer, Google увеличивает совместимость с другими браузерами путём утяжеления страниц. Microsoft официально заявляет о поддержке Safari, FireFox, но эти браузеры играют второстепенную роль. Microsoft начинает интегрировать online сервисы с операционной системой, Google’у приходится доганять.
Они оба сильны. Война между ними врядли кагда-то закончится. А тем временем мы получам всё больше возможностей в online. Начиная от органайзера, заканчивая возможностью хранить гигабайты данных. И это только начало... Начало эры online...

To be continued.

вторник, 26 февраля 2008 г.

Hosting Roadshow: Windows Server 2008 and IIS 7.0

С большим опозданием, но всё же напишу про своих впечатлениях о мероприятии, которое проходило 14 февраля в Киеве.

Конференция проходила в конференц-зале гостиницы Radisson SAS Hotel . Уровень гостиницы можно оценить тем фактом, что в тот же день в соседнем зале проходило мероприятие, если не ошибаюсь, ирландского посольства. Порадовал не совсем обычный подход к докладам: каждому учаснику представлялись рабочие места с PC (некоторым достались в качестве рабочих стинцих ноутбуки), за которыми мы и провели большую часть времени, т.к. короткие лекции сопровождались лабораторными работами.

Лабораторные работы выполнялись на Virtual PC, из-за были некоторые проблемы с быстродействием. Всего их было их 7 или 6.

После прошлушивания лекций и выполнения лабораторных работ для себя о новой версии IIS сделал такие выводы:

  • · красивый, а главное удобный интерфейс , который основан на новой версии Windows Management Console;
  • · Management Console 7-го IIS – не более чем очень удобный редактор файла web.config, что сильно облегчит работу как администраторам, так и программистам;
  • · желание переходить на IIS 7.0 появилось только из-за того, что руками править все настройки сайта особого желания не возникает;
  • · модульность IIS, на данный момент, в основном проявляется в виде большово колличества плагинов и некоторых пробем, связанных с неустановленными по умолчанию модулями.


Конференция не прошла без смешных моментов: при запуске второй виртуальной машины из-зы незватки ОЗУ я увидел всеми нелюбимый синий экран; во время выполнеия одной из лабораторных работ на Windows Server Core мой знакомый закрыл окно с консолью из-за чего ему пришлось перезагружать ОС (в последствии выяснилось что запустить новую консоль можне с помощью Task Manager).

Сравнивать IIS7.0 с его предыдущей версией да данный момент ещё трудно, т.к. из известных мне сайтов на нем работает только microsoft.com. Время покажет нам его настощие лицо. Enjoy!

воскресенье, 20 января 2008 г.

WebApp и Visual Studio 2008

В новой студии, по умолчанию, при создании веб-приложения на master page добавляется ещё один ContentPlaceHolder:

<head runat="server">
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>


Таким образом на любой странице можно легко добавить теги title, meta, link.
Также, по умолчанию, у страницы задан атрибут Title="Untitled Page", из-за чего при использовании <title>My page</title> заголовок страницы не меняется, а исходных html-код получается таким:

<title> Untitled Page </title> <title>My page</title>

Приоритет, у способов установки названия странице, оказался таким (от большего к меньшему):

  • Явно присвоить в коде свойству Title страницы название:
    Title = “My page”;

  • Указать атрибут страице:
    <%@ Page Language="C#" MasterPageFile="~/MyMaster.Master" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MySite.Pages" Title="My Page" %>

  • Установить тег title:

    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <title>My Page


четверг, 17 января 2008 г.

Приведение типов в C# 2.0

Приведение типов на практике встречается довольно часто. Из-за того, что в языке C# существует два оператора, позволяющих решить эту задачу, время от времени возникают InvalidCastException. Остановимся на этих операторах подробнее.

1. () оператор. На уровне IL-кода генерирует вызов функции castclass Выдержка из msdn: A cast explicitly invokes the conversion operator from one type to another; the cast fails if no such conversion operator is defined.
Оператор можно использовать только в том случае, если это предусмотрел разработчик.
Плюсы: простота в использовании, читабельность кода. Работает как с value, так и с reference типами.
Минусы: можно использовать не со всеми типами данных; источник InvalidCastException в случае неудачного вызова.

int? i1 = 2;
// вычисление значения i2
int i2 = (int)i1; // к этому моменту возможна ситуация, когда i1 будет равным null.

Еще один не менее распространённый пример:

public void MyMethod(object intObj)
{
if (intObj != null)
{
int intO = (int) intObj;
// ...
}
}

Такой код, как правило, используется когда порграммист уверен в том, что прийдёт нужный ему тип. Но, в случае использование сторонних библиотек или чужого кода вероятность такого поведения достаточно низкая.
2. Оператор as. На уровне IL-кода генерирует вызов функции isinst, в случае успешного выполнения которой происходит приведение типа. В противном случае – объекту присваивается null. Выдержка из msdn: The as operator is like a cast operation. However, if the conversion is not possible, as returns null instead of raising an exception.
Оператор работает со всеми reference-типами и выдаёт ошибку при компиляции в случае приминения к value-типу.
Плюсы: Работает с большинством типов данных. В случае неккоректного вызова не генерирет исключения. Не зависит от реализации класса.
Минусы: Не работает с vlue-типами. После вызова оператора желательна проверка на null:
string s = someObject as string;
if (s != null)
{
// someObject is a string.
}