воскресенье, 31 мая 2009 г.

Пара слов о Windows 7

5 мая вышла Windows 7 RC и я, как и многие, поставил её себе на виртуальный жёсткий диск. Скринкаст с подробным описанием установки можно посмотреть тут. Проблем с оборудованием не возникло: всё подхватилось само.












Впечатления очень положительные: скорость работы сопоставима с оной в Windows XP, новый taskbar очень удобен, да и вообще визуальные эффекты на высоте. Также не может не радовать возможность распознавания математических формул (этого так раньше нехватало).










В целом система стабильна, но загрузка с виртуального жёсткого диска несколько медленнее.

P.S. Сегодня поставил русский пакет локализации - претензий к переводу нет, но пока очень непривычно)

суббота, 28 марта 2009 г.

Imagine Cup 2009. 1/4 финала.















Сегодня я побывал на 1/4 финала конкурса программных проектов Imagine Cup и мне хочется поделиться с вами своими ощущениями и впечатлениями. Он проходил в Московском офисе Microsoft на Крылатских Холмах.

Вообще суббота - нерабочий день в комплексе, так что бесплатная маршрутка к нему в этот день не ходит, и нам пришлось добираться общественным транспортом.

Приехали мы около 10 часов, время начала репетиций выступлений, и у нас было время осмотреться, пообщаться с выступающими, принять участие в импровизированном завтраке и сделать пару фоток офиса. Также мне удалось минут 10 поиграть в Xbox, помеченной мною ещё во время прошлого визита. Приставка оставила очень приятные впечатления, несмотря на то, что я практически не играю в игры, а приставки в руках не держал уже много лет.

Но стрелка часов приближалась к 12 - времени начала выступлений и мы направились в зал. В программе выступлений было 5 команд: из МФТИ, МИФИ, МГУ, МИРЭА и МГУПИ. По результатам жеребьёвки первым выпало выступать команде из МИФИ с проектом Lullius. Идея проекта заключается в упрощении обмена информацией с помощью матричных кодов, снимать которые можно с помощью мобильных устройств. Сама идея мне понравилась, но презентация, манера выступления и демонстрация меня разочаровали...

Следущей командой была команда из МИРЭА. Хотя слово команда не очень применима - это был один человек (по правилам соревнований могут принимать участие команды от 1 до 4 человек + наставник). Была поднята проблема экологической устойчивости. Посмотреть на проект можно здесь. Опять же очень актуальная тема, но выступление... во-первых, слишком много терминологии из экологии, автор не рассказывал, а большей частью читал свою презентацию и слишком дерзко отвечал на вопросы жюри. Надо сказать, что жюри состояло из Дмитрия Сошникова, координатора академических программ Microsoft, преподавателей МГТУ им. Баумана, МАИ, Высшей Школы Экономики и журналистки одной известной газеты.
Закрывали первую половину выступлений студенты из МГУ. Они предложили в игровой форме бороться с глобальными проблемами: от загрязнения окружающей среды до зависимости от World Of Warcraft. Была показана демонстрация игры: эдакая стрелялка, но надо заметить, что вся игра, в том числе и движок, обеспечивающий очень достойный уровень графики, был написан ими. В целом выступление мне очень понравилось. Разве что они не смогли ответить на вопрос, как они будут бороться с зависимостью от их игры, которая, кстати говоря болжна распространяться бесплатно.

Потом нас ждал 30 минутный обеденный перерыв, после которого свой проект предавляла команда МГУПИ, в рядах которой была единственная девушка на сегодняшних соревнованиях. Они предлагали бороться с пробками с помощью построения модели в зависимости от времени суток и регулироавния светофоров. У них, на мой взгляд, была самая лучшая презентация за всё время конкурса, хотя во время вопросов к команде выяснилось, что их модель не учитывает достаточное большое количество случайных факторов, например день недели, время года и вся модель строится их расчёта количества машин на дорогах, что в пересчёте на Москву требует огромных вычислительных ресурсов.

Завершали день студенты из МФТИ с проектом myRange, который помогает находить интересных людей на расстоянии действия Bluetooth. Команда держалась очень достойно и в итоге заняла первое место, 2-ое место у команды МИФИ, ну а 3-е у МГУПИ.
Через несколько недель нас ждёт финал, на который я надеюсь попасть. Говорят, что основной фишкой будет команда девушек из Челябинска. Насколько это является правдой мы скоро узнаем.

среда, 11 марта 2009 г.

Реальное приложение на F#

В своём прошлом посте я вскользь упомянул новый функциональный язык программирования от Microsoft - F#. Он вызвал достаточно сильный интерес с моей стороны и сегодня попробую показать вам что-нибудь относительно полезное, написанное на нём. Но надо заметить, что я не знаю ни F#, ни C#, да и чего там скрывать... вообще не знаком с платформой .Net. Этот пример я взял с презентации этого языка на PDC2008 и . Несколько примеров также можно найти тут и тут. Для реализации нам понабятся Visual Studio 2008 и Microsoft F# CTP 1.9.6.2. Чтобы интегрировать F# в VS придётся проделать несложные манипуляции. В некоторых местах я буду приводить для сравнения участки кода, написанного на C#.

Ну чтож... начнём) Наша задача: получить данные с сайта и обработать их (например отобразим первый и последний столбец).

Первым делом подключим необходимые библиотеки:

open System
open System.Windows.Forms
open System.Net
open System.IO

Далее нам нужна ссылка на файл данных. Поэтому перейдём на сайт, спустимся вниз и найдём кнопку Download To Spreadsheet. Кликнем по ней правой клавишей и скопируем ссылку.

let url = "http://ichart.finance.yahoo.com/table.csv?s=MSFT&d=2&e=9&f=2009&g=d&a=2&b=13&c=1986&ignore=.csv"

- это следущая строчка, после поключения библиотек, где let фактически создаёт псевдоним выражения. Кстати тип url задавать не нужно, F# сам определяет его. В С# это будет выглять так: string url = "ссылка';

Следующим этапом будет создание веб-запроса, потока обмена данными и чтением их в строку:

let req = WebRequest.Create(url)
let resp = req.GetResponse()
let stream = resp.GetResponseStream()
let reader = new StreamReader(stream)
let csv = reader.ReadToEnd()


Аналогичные действия на С#:

WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
csv = reader.ReadToEnd();

Итак у нас есть последовательность с записей и нам их нужно разделить. Для этого используем функции Split, но пропустим первую строчку, т.к. там в исходном файле имена столбцов:

let prices =
csv.Split([|'\n'|])
|> Seq.skip 1
|> Seq.map (fun line -> line.Split([|','|]))
|> Seq.filter (fun values -> values |> Seq.length = 7)
|> Seq.map (fun values ->
System.DateTime.Parse(values.[0]),
float values.[6])

Здесь мы сталкиваемся с ещё 2-мя очень важными элементами F# - это fun (как можно догаться из названия задаёт функцию) и символ |> , который берёт входные данные слева от себя, производит действия и возвращает полученный результат, который может использоватться в следующей строчке с |>.

Мне удалось сделать это на C# в таком виде:

csv.Split('\n');
string [] line = str.Split('\n');
string[] elements;
for (int i = 1; i <= line.Length; i++)
{ elements = line[i].Split(','); ichTextBox1.Text = richTextBox1.Text + i + " " + elements[0] + " " + elements[5]+"\n";
}
И если мы, выделив всё написанное выше, запустим на выполнение и в F#Interactive введём prices;; , то всё будет неплохо работать, но вывод данных неочень приятен и понятен, поэтому добавим форму и таблицу:
let grid (prices:seq)=
let form = new Form(Width = 400, Height = 500, Visible = true, Text = "Prices")
let grid = new DataGridView(Width = 282, Height = 374, Visible = true)
form.Controls.Add(grid)
grid.DataSource <- prices |> Seq.to_array

Вот и всё. У меня получилась вот такая штука:



















На сегодня на этом и закончим. Если у вас есть идеи как изменить код к лучшему, то с удовольствием вас выслушаю.

суббота, 7 марта 2009 г.

Microsoft, Microsoft и ещё раз Microsoft

Сегодня я хочу рассказать вам про Microsoft, а именно про моё посещения тренинга для студентов-партнёров в этой корпорации. Он проходил в офисе Microsoft в Москве на Крылатских Холмах 6 марта.
Программа была очень насыщенной и включала 5 различных технологий, которые редмондская компания пытается привнести в наш с вами мир. Трениг проходил в ОС Windows 7, которая произвела на меня очень хорошее впечтление.
Всё началось с F# - нового функционального языка программирования, который должен войти в состав Visual Studio 2010. Что же такое функциональные языки программирования? Это языки, основным конструктивным элементом является математическое понятие функции. Существует различия в понимании функции в математике и функции в программировании. Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции. Также тексты программ на функциональных языках программирования описывают «как решить задачу», но не предписывают последовательность действий для решения. Зачем Microsoft ставить его "на одну доску" с тем же C#? Я процитирую блог Дмитрия Сошникова, чтобы ответить на это вопрос. Одна из основных причин – функциональное программирование позволяет проще писать многопоточные приложения для многоядерных процессоров. Почему это так – мы рассмотрим в следующем уроке, где будем говорить о том, что же такое функциональное программирование. Кроме того, функциональные программы не допускают или минимизируют побочные эффекты, что увеличивает надежность программ и упрощает отладку. "В целом можно сказать, что функциональное программирование позволяет нам писать в несколько раз меньше кода, но при этом заставляет больше думать. Если Вы любите работать головой, а не пальцами – обратите внимание на F# и на функциональное программирование. А я постараюсь вам помочь сделать это безболезненно, на русском языке." Но не попробуешь - не поймёшь, поэтому нам предложили решить пару достаточно простых задачек на F#, которым я скорее всего посвящу свой следующий пост (для этого уже поставил Visual Studio 2008, распространяемую бесплатно среди аспирантов и студентов для некоммерческого использования).
Потом перед нами выступал Дмитрий Мартынов с докладом о Windows Azure. Он объяснял, как это всё устроено, на чём можно писать приложения под эту платформу, как происходит идентификация пользователя и как это выгодно - хранить все данные out. Сейчас Windows Azure находится в стадии beta-тестирования и потому доступ к ней может получить практически любой желающий и совершенно бесплатно. Если я ничего этим не нарушу, то попытаюсь подробно рассказать что да как, но в другой раз, сегодня же моя задача ввести вас в курс самых акуальных и передовых технологий Microsoft.
Следующим этапом тренинга стал
Silverlight 2, работать с которым учил нас Михаил Черномордиков, который является одним из ведущих небезизвестного Podcast9. Примеры были очень хороши, но времени как всегда было мало, а хотелось бы узнать значительно больше (те кто смотрел инаугурацию Барака Обама знайте - именно технология Silverlight дала вам эту возможность). Если вам хочется познакомиться с ней поближе, то вот вам ссылка на русскоязычное сообщество.
После почти 4 часов непрерывного впитывания знаний нас ждал обед, талоны на который нам было любезно выданы. Надо сказать, что атмосфера царящая в Microsoft просто непередаема словами, это надо видеть и самому почувствовать на себе. Обеденный час подошёл к концу и мы опять отправились в тренниг класс, чтобы погрузиться в новые технологии.
А там нас ждал
Гайдар Магдануров, очень позитивный человк, который нёс в наши головы доброе и вечтное о ASP.NET MVC. Это фреймворк, работающий по принципу Model-view-controller - архитектуре программного обеспечения, когда приложения делится на 3 отдельных компонента: модель данных, т пользовательский интерфейс и управляющая логика. Мы на примере смогли убедиться в эффективности такого подхода, написав под чутким руководством простенькое приложение, тащащее информацию из базы данных.
Заключительным этапом был SQL Server Data Services. Нам попытались объяснить что да как, но мозг к тому времени уже плохо цеплялся за информацию да и попробовать самим что-либо сделать нам не дали.
На этом мой день в Microsoft закончился, но этим точно не закончатся мои посты о технологиях этой компании и в ближайщее время напишу что-нибудь про F#.

Выражаю огромную благодарность Дмитрию Сошникову за возможность посмотреть на всё изнутри и за отличную организацию тренинга.

суббота, 28 февраля 2009 г.

Firefox и немного Linux

Ещё год назад я пользовался браузером Opera, но со временем перешёл на Firefox, на котором и пишу этот пост. Использую версию 3.0.6, которая не отличается скоростью запуска или быстротой рендеренга JavaScript, а так наличием, модного нынче, инкогнито (порно) режима. У огнелиса есть другой большой плюс, перекрывающий всё остальное - add-ons. Сегодняшний пост большей частью будет именно о них, расскажу вам о тех, которые использую сам и вам рекомендую.

Одна из проблем современного интернета - всплывающая реклама. Для борьбы с ней есть Adblock Plus, который ещё фильтрует "нехорошие" сайты на основе, в моём случае, дополнения Adblock Filterset.G Updater. Стандартный загрузчик очень ограничен в функциональности, потому использую DownThemAll!, который загружает в определённую директорию, может переименовывать файл по заданному шаблону и многое другое. Для почты - Gmail Manager, который уведомляет о наличии новых писем и позволяет просмотреть отправителя и тему пусьма. Подписками ведает Google Reader Notifier, не только уведомоляющий о количестве непрочитанных, но и показывающий названия подписок. В Firefox нет функции замораживания вкладок. Это мне помог исправить Tab Mix Plus, который ещё даёт возможность автоматического обновления страниц через заданные промежутки времени. Содержанием контекстного меню ведает Menu Editor. Мне достаточно часто приходится просматривать офисные документы и, чтобы не загружать их к себе на жёсткий диск, есть add-on под названием Open IT Online, который открывает их в Google Docs. Последнее время достаточно часто стал сталкиваться с .pdf докуметами. Чтобы успростить их загрузку или создать оный из HTML страницы использую PDF Download. В Google Chrome есть одна замечательная фича - создание приложений из веб-страниц. В FF это называется Refractor for Prism. Читать и постить в твиттер мне помогает TwitterFox. Ну а следить за актуальностью всех дополнений позволяет Update Notifier.

Это конечно не все add-ons, используемые мною, а только самые интересные. Давайте сменим тему и поговрим о чём-нибудь другом. Я уже достаточно давнособираюсь поставить Linux себе на ноутбук и склоняюсь к Ubuntu, стоящей у меня на домашней машине. Но стремление к чему-то более лучшему и удобному заставило меня скачать LiveCD нескольких других Linux дстрибутивов, а именно OpenSuse 11.1 и Debian 5 Lenny. Моё общение с каждым длилось порядка 10-15 минут. О поверхностных ощущениях и попробую сказать пару слов. Поскольку я являюсь приверженцом GNOME, то оба дистрибутива были именно с ним. OpenSuse имеет очень приятный визуальный интерфейс, GNOME не кажется самим собой, в отличии от него же в Debian. Первым делом, когда смотрю какуой-нибудь LiveCD с Linux я проверяю как обстоят дела с обнаружением моей Wi-Fi сети и подключением к ней. Suse нашла её без проблем, но подключаться напрочь отказалсь, Debian же вообще не разглядел наличие Wi-Fi карточки в моём компьютере. Меню в Debian напоминает классический GNOME и достаточно удобно для управления, но в списке установленных программ находится браузер, отличный от Firefox, что меня огорчило. Хочется выразить отдельное "фи" о меню в OpenSuse - вспоминается меню KDE 4, только ещё хуже... В нём только несколько самых часто используемых программ, а чтобы добраться до полного списка ПО придётся жать на кнопочку, месторасположение которой для меня было не интуитивно понятным. Из этого очень поверхностного знакомства я понял, что Ubuntu так и остался самым оптимальным выбором.

пятница, 13 февраля 2009 г.

Первая неделя и IE8 RC1

Вот и закончилась первая учебная неделя нового семестра, а я давно ничего не постил в свой блог. Ощущения очень неопределённы и противоречивы, но медленно и неумолимо приближаются специализированные предметы, которых с нетерпением дожидаюсь. Количество лабораторных работ возросло в 2 раза, но они стали интересней и, кажется, нас всё больше и больше пытаются приобщить к будущей специальности. Это не может не радовать.

Но всё же этот пост будет не о том) Недавно какой-то чёрт дернул меня поставить Internet Explorer 8 RC1. Достаточно много ходило положительных отзывов о нём: что он стал быстрым, появилось много новых, интересных плюшек. Я скептически относился к этим заявлениям, т.к. IE7 меня разочаровал, несмотря на некоторое количество положительных отзывов. И в этот раз я бы вёл себя также, если бы не послушал podcast9, где уважаемые ведущие обсуждали прелести новой версии браузера от Microsoft. К сожалению, IE не выпускается в версиях под Linux, которым стараюсь пользоваться всё больше и больше и агитирую своих друзей за него, потому гонял восьмёрку на Windows Vista, стоящей у меня на ноутбуке. Тут не будет измерений попугаев и других достаточно объективных тестов, только мои ощущения.

Установка прошла достаточно быстро и нареканий не вызвала, разве что пришлось перезагрузить компьютер и уж очень усердно он пытался стать браузером по умолчанию. Запускается восьмёрка очень быстро (Google Chrome с другими отдыхает). Экспорт закладок из основного браузера прошёл без проблем. Станицы открываеются достаточно шустро. Недостаток - они открываются не всегда: раз 5 в час/два открывалась совершенно чистая страница, ситуацию поправлял reload. Думаю, в релизе всё будет с этим хорошо. Разработчики позаботились и о сайтах, созданные под старые браузеры, добавив режим совместимости, но за всё время не воспользовался им ни разу, всё работало и так. Ну а теперь поговорим о плюшках: я их насчитал 4: соответствие стандарту консорциума W3C и наличие встроенного инструментария web-разработчика (эдакий Firebug для Internet Explorer), ускорители, "визуальный" поиск и web slices. Остановлюсь на каждом понемногу. Инструменты разработчика очень неплохи (с моей неопытной позиции), но Firebug всё равно субъективно удобнее. Ускорители точно упрощают жизнь: публикация в Blogger, отсылка почты через Gmail и т.п. в несколько кликов очень порадовали, но "визуальный" поиск - это то, что называется "must have" для каждого браузера. Хотя это работает только со специальным add-on к Википедии, но наглядность и качество поиска заметно возрастают. Что осталось? Web slices. Эта технология даёт возможность получать информацию с сайтов без необходимости их открытия, например прогноз погоды, расписание спектаклей в любимом театре. Идея мне очень понравилась, чем-то напоминает rss-канал. Кстати об rss... В IE появилась (или я её раньше не видел?) возможность автоматической загрузки подкастов, на которые ты подписан. Хотя реализация вызывает большое количество нареканий: нельзя указать папку, в которую качать выпуски, нет прогресса загрузки файлов и синхронизации с плеером. Но это уже проблеск надежды)

Вы можите задаться вопросом почему я ничего или почти ничего не сказал про add-ons. Отвечу наперёд: по моему мнению, они находятся, если не в зачаточном состоянии, то где-то около того. Необходимых мне дополнений найти не удалось.

Вобщем продукт получился очень неплохим и вполне подойдёт как "запасной" браузер. Безусловно есть недостатки и шероховатости, но это не помешает ему отвоевать хотя бы часть потерянного рынка.

вторник, 3 февраля 2009 г.

Квест

Примерно последние полторы недели я занимался прохождением очень занимательного квеста - сбором необходимых документов на замену заграничного паспорта.
Сейчас они бывают двух типов: "старого" образца и биометрические. Я собирал на последний.
Список необходимых документов с виду невелик: 2 экземпляра анкеты с биографией и паспортными данными, 2-3 цветные фотографии, оплаченная квитанция на сумму 1000 рублей, заверенная по месту работы копия трудовой книжки (мне не понадобилось, так как являюсь студентом), справка из военкомата, если ты старше 18, но младше 27.
Самым интересным пунктом из этого списка является анкета. Она должна быть в обязательном порядке напечатана на компьютере. Бланки без проблем находятся в интернете в виде .pdf файла, но как же быть людям, у которых нет интернета? Существуют конторы, которые за "скромное" вознаграждение сделают это за Вас. Но на этом всё не заканчивается... Потом необходимо заверить её по месту работы/учёбы (если и учитесь и работаете предпочтительнее место учёбы). Мне пришлось пройти 3 кабинета, чтобы собрать нужные подписи и печати.
Вся остальная часть квеста не столько сложна, сколько требует немалого колличества времени.
У меня документы принимали порядка 15 минут, но пришлось постоять в очереди около 2 часов. Паспорт делается в течение полутора месяцев.