четверг, 29 августа 2013 г.

Атлас Москвы

Приложение "Атлас Москвы" предоставляет легкий и удобный доступ к открытым данным портала правительства Москвы. Эти данные представляют интерес не только для самих государственных органов и не только для целей государственного управления, но и для граждан, бизнес-сообщества, научных, социальных, образовательных институтов, гражданских активистов.





















четверг, 25 июля 2013 г.

Barley-Break Update!

Сегодня обновил дизайн своего первого приложения в Windows Store - Barley-Break. Вроде неплохо получилось! :)


Сохранение настроек приложения в изолированном хранилище

По поводу хранения настроек приложения написано уже очень много статей. Но о том, что сохранять свои данные можно так же в изолированном хранилище - очень мало упоминаний. Я не буду рассказывать о том, что это такое (об этом очень хорошо написано на MSDN), я просто хочу предложить некоторое решение, которое позволит вам хранить свои данные без особых усилий.

Что из себя представляют настройки приложения? Это коллекция пар ключ/значение. То есть это некоторый IDictionary<TKey, TValue>, где в качестве ключа выступает, как правило, строковый параметр, а в качестве значения, в идеале, может быть любой объект. Если внимательно посмотреть на пространство имен System.IO.IsolatedStorage, то можно обнаружить, что класс с таким функционалом уже есть - это IsolatedStorageSettings. Однако он доступен только для Silverlight и Silverlight for Windows Phone. А для настольных приложений доступен только класс IsolatedStorageFile, который представляет область изолированного хранения, содержащую файлы и папки. То есть разработчики настольных приложений здесь несколько обделены функционалом. Собственно этот пробел я и решил заполнить.

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

(info.dat - служебный файл, Key - оригинальный ключ, Guid - уникальный идентификатор)

понедельник, 1 июля 2013 г.

Мифический человеко-месяц


На днях закончил чтение книги Фредерика Брукса "Мифический человеко-месяц". Не смотря на то, что первое издание книги было выпущено в 1975 году, а второе (которое я собственно и читал) - в 1995 году и даже учитывая тот факт, что некоторые главы книги окончательно устарели, тем не менее этот бестселлер просто напичкан фразами, которые актуальны и по сей день. Конечно, эта книга уже давно разошлась на цитаты, но я позволил себе выписать те, которые понравились лично мне.

четверг, 30 мая 2013 г.

Локализованный BooleanToStringConverter.

Для разработчиков пользовательских интерфейсов актуальна задача отображения значения типа Boolean в виде локализованной строки. Т.е. вместо "True" и "False" требуется отобразить "Да" и "Нет" (естественно в зависимости от языка ОС). В связи с этим, хочу предложить интересное решение.
Для начала следует определиться, откуда получить локализованное значение типа Boolean в человеческом виде? Для этого используем библиотеку "User32.dll", которая и вернет нам эти данные.


Как видно на скриншоте, под идентификаторами 805 и 806 имеются строки "&Да" и "&Нет" соответственно. Вот их и будем использовать.

среда, 22 мая 2013 г.

Windows Store. Приложение Fisheye.

Хочу представить свое новое приложение для магазина Windows Store - Fisheye. Оно позволяет просматривать WEB-камеры по всему миру. Также есть возможность добавлять новые камеры на карту.


На текущий момент функционал приложения достаточно простой, но есть много идей по развитию данного направления. Так что, в зависимости от свободного времени, буду развивать и добавлять новый функционал и новые WEB-камеры.

Если есть пожелания - буду очень рад выслушать.
Спасибо!

вторник, 14 мая 2013 г.

Windows Store App. Подключение шрифта.

Несмотря на руководство по шрифтам для приложений магазина Windows, которое рекомендует использовать Segoe UI шрифт для элементов пользовательского интерфейса, иногда может возникнуть потребность подключить дополнительный шрифт. Однако этот шрифт может отсутствовать на клиентском компьютере и соответственно будет использоваться шрифт по умолчанию. Далее я опишу как можно внедрить шрифт в приложение Windows Store  на примере 3D LET.
Для этого скопируем файл шрифта (в данном случае 3dlet.ttf) в папку Assets и добавим его в проект. Установим свойство Build Action = Content и Copy to Output Directory = Do not copy. Тем самым наш новый шрифт будет распространяться вместе с приложением.
Теперь, чтобы использовать этот шрифт, потребуется правильно указать свойство FontFamily объекта TextBlock ( FontFamily = "{TTF File Name}#{Font Name}" ):

MainPage.xaml:
    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <TextBlock Grid.Row="1" Text="3D LET BRK FONT" FontFamily="Assets/3dlet.ttf#3D LET BRK" FontSize="64" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>

При этом текстовый блок примет новый вид: