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

Базовые советы по выбору ноутбука



Всем привет! Последнее время многие знакомые и друзья стали спрашивать совета при выборе ноутбука. И всем пришлось рассказывать одно и то же. Решила опубликовать советы по выбору ноутбука для обычных людей) не очень разбирающихся в компьюторах. Поехали.

На самом деле выбрать ноутбук не сложно, параметров не много, самые главные - это процессор и память, ну и для ноутбука ещё важно размеры и внешний вид. Что касается характеристик,  нужно смотреть такие: 

1) Процессор: Intel i5 или i3 ( i5 - мощнее)
2) Оперативная память: от 4 до 8 гигабайтов. 
3) Диагональ экрана: 15 дюймов
4) Поверхность экрана: матовая (работать на ноутбуке значительно приятнее с матовым экраном, глянцевый при любом свете бликует, отражает, в итоге хуже видно и глаза устают быстрее)
5) Операционная система: Windows. Сейчас все ноутбуки идут с предустановленной системой Windows 8. Это новая Windows, к которой надо будет попривыкнуть сначала. На Windows 7 ноутбуков почти не найти уже. Переставить Win8 на Win7 проблематично, могут возникнуть проблемы при установке, драйверов сложно найти.
6) По весу и размерам: если выбирать потоньше и полегче, то они идут обычно без CD-ROM. Если нужна возможность читать cd диски, то обратите внимание на то чтобы CD-ROM присутствовал.
7) По производителям: обычно считается, что большой разницы нет, все комплектующие делают на одних заводах. Я обычно отдаю предпочтение HP, Samsung, Asus. Просто это самые крупные производители ноутбуков.
Дальше уже можно смотреть по дизайну, который по внешнему виду больше понравится.

Если с такимии характеристиками никакой не нравится, можно посмотреть ещё модели с глянцевыми экранами, если вам это не принципиально.

Для стационарного компьютра характеристики те же.
1) Процессор: Intel i5 или Intel i3
2) Оперативная память: от 4 до 8 гигабайтов.
5) Операционная система: Windows 7 или Windows 8

Внимание:) - если на ноутбуке или компьютере будет стоять Windows 7 Home Basic (домашняя базовая), то вы не сможете подключить этот компьютер в локальную сеть.
версия Home Basic не позволяет этого сделать. Так же нельзя будет менять темы рабочего стола.

Так же хотела поделится ссылкой на очень полезный сайт по сравнению мобильный процессоров - http://www.notebookcheck-ru.com/Reiting-mobilnykh-processorov-sravnenie-proizvoditelnosti.14099.0.html 
Просто вводите модель процессора в строку поиска и смотрите на каком месте в рейтинге находится ваш процессор.

Лучше всего, конечно сходить в магазин и подержать в руках, посмотреть, найти т.к. сказать свой ноутбук) Самое главное процессор i5 (или i3) и память- от 4 гигов.

Удачи в выборе! :)

вторник, 23 апреля 2013 г.

Date format in silverlight DatePicker

Для того чтобы поменять формат даты в контроле DatePicker, нужно в App.xaml.cs  добавить вот эти три строчки: 

CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
ci.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
Thread.CurrentThread.CurrentCulture = ci;
Файл App.xaml.cs будет выглядеть примерно вот так:

public App()
        {
            this.Startup += this.Application_Startup;
            this.Exit += this.Application_Exit;
            this.UnhandledException += this.Application_UnhandledException;
            CultureInfo ci = new CultureInfo(Thread.CurrentThread.CurrentCulture.Name);
            ci.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
            Thread.CurrentThread.CurrentCulture = ci;
            InitializeComponent();
        }

четверг, 11 апреля 2013 г.

Imagine Cup Russia 2013


Совсем недавно, 6 апреля, проходил Российский финал конкурса Imagine Cup 2013. Финал проходил в Сколково. Было интересно съездить посмотреть что-же там наконец построили.
Добираться до туда не очень удобно, от ближайшего транспорта нужно идти минут 30-40. Вообщем, оказалось, что инновационный центр Сколково - это семиэтажное небольшое здание посередине поля. Называется это здание Гиперкуб.

Вот несколько фото, сделанных по дороге в Инновационный центр Сколково.
А это уже изнутри здания.

Команд было много, около 30 команд со всей России. Конкурс проводился в трёх номинациях "Игры", "Инновационные проекты" и "Социальные проекты". В каждой номинации определялась тройка победителей. Занявшие первые места команды будут представлять Россию на международном конкурсе  Imagine Cup, который пройдёт в июне 2013 года в Санкт-Петербурге.

Все выступления, которые мне удалось послушать, были интересные, проекты достойные. Больше всего я уделила своё внимание номинации "Игры".  В этой номинации победила команда с проектом LaserCraft - это программное обеспечение для проведения динамичных игр на открытом воздухе с помощью телефона Windows Phone. Команда разработала оружие, стреляющее ИК лучом, и к которому прикреплен телефон, на котором можно видеть карту, количество патронов, эффекты, дополненную реальность.



Мне кажется это не совсем относится к номинации "Игры", т.к. если посмотреть на ПО, котороа разработала команда, то это не далеко не компьютерная игра, в ней нет ни какой графики, это просто экран с включенной камерой, на котором отображается какая-то ещё дополнительная информация.

Вот кстати критерии оценок, по котором судили команды.


Ещё запомнилась игра Witch Craft, потому что у них была уж очень сильная пиар кампания :) Ребята сделали и журнал свой и магниты и сувениры и куклу главной героини. Игра красиво нарисована, хорошая анимация, но сама суть игры как-то не особо запомнилась и заинтересовала. Это просто набор мини игр, разных жанров, красиво связанные сюжетом.

 

Последняя игра, о которой хотелось бы рассказать, это игра War Point, это многопользовательская онлайн RPG, которая позволяет тебе иметь бонусы или специальные задания и локации, если ты находишься в определённом месте реального мира. Например, кафе может организовать такую акцию в игре: если ты пришёл в это кафе, то тебе доступны специальная новая локация, задания, возможность получить скидки или подарки от кафе, а так же возможность познакомится и пообщаться с сидящими рядом игроками.

Мне кажется, что идея хорошая и хороших RPG игр на Windows Phone и Windows 8 нет. Жалко, что судьи не увидели потенциала в этом проекте. В этой команде всего один человек, тогда как в других по три, четыре человека. И этому проекту не хватило, мне кажется, дизайнера или 3D модельера. Если бы было чуть покрасивее и завершённее, проект явно бы занял  какое-нибудь место.

В других номинациях запомнился проект Ka-tet - робот-ребенок, предназначенный для обучения медицинского персонала базовым рефлексам у детей до 1 года. Команда представила, очаровательного малыша-робота, который воспроизводил спинальные рефлексы младенца.

Если бы у робота была голова куклы, а не мячик, он был бы совсем как настоящий :)


В конце дня было немного конкурсов, например, в одном из них нужно было сделать плитку Windows 8 из Lego. Я делала SkyDrive, но победила плитка с изображение IE, т.к. Internet Explorer всегда первый :) , так объяснило своё решение жюри.




После всего этого было объявление результатов и награждение победителей. Кроме тройки победителей, некоторые команды отметили специальными призами, а трём командам дали грант на 10 000$ от посевного фонда Microsoft.




Вот полный список победителей:

Категория: Команда:
Инновации I место Out Of Focus / Kinect Magic
Инновации II место SkyChroma / SkyChroma
Инновации III место Ka-tet / Малыш
Игры I место QuadDamage / Lasercraft
Игры II место Brainy Studio / WitchCraft
Игры III место Sly Lamb / Space Kitty
Социальные проекты I место Gesis/Gesis
Социальные проекты II место Stand up / Play and develop
Социальные проекты III место All in 39 / lost and found
Специальный приз от Mail.ru ИТМО-3 / IvyBot
Специальный приз от Abbyy Северные Дятлы / Presentation trainer
Специальный приз от прессы School 13/ карманный диетолог
Специальный приз от KFC Out of Focus / Kinect magic
Специальный приз от МТС Pinky & Brain / электронная аптечка
Грант на $10000 от посевного фонда Microsoft Brainy Studio / WitchCraft
Грант на $10000 от посевного фонда Microsoft SkyChroma / SkyChroma
Грант на $10000 от посевного фонда Microsoft Moving Hooves / Moving Hooves
Специальный приз от Samsung Ka-tet / Малыш

Потом была вечеринка, где играла какая-то не совсем известная группа. А затем ребята устроили Harlem Shake!



В заключении хочу сказать, что это было интересно, весело и полезно. Советую всем участвовать в Imagine Cup. Это прекрасная возможность продвинутся в развитии своего проекта, услышать экспертную оценку компетентного жюри, познакомится с интересными людьми и просто повеселиться. Даже если вы не выиграете, вам всегда будет что вспомнить :)

воскресенье, 31 марта 2013 г.

Server.MapPath - определение физического пути

Часто при разработке веб-приложений нам требуется определить физический путь корневого каталога или путь до файла. В этом нам поможет метод Server.MapPath.

Server.MapPath вернёт нам физический путь каталога по относительному или виртуальному пути.

Часто используемые выражения:
    Server.MapPath (".") - возвращает текущий физический каталог для файла, который выполняется (например ASPX)
     Server.MapPath ("..") - возвращается физический путь родительского каталога
     Server.MapPath ("~") - возвращает физический путь к корневому каталогу приложения
     Server.MapPath ("/") - возвращает физический путь к корню домена (этот путь не всегда совпадает с корневым каталогом приложения)

Например:

Допустим, вы создали своё веб-приложение (http://www.example.com/) в каталоге
C: \ Inetpub \ wwwroot
и установили интернет-магазин (как виртуальный каталог в IIS) в
D: \ WebApps \ shop

Например, если вы вызываете Server.MapPath при следующем запросе:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
то:
     Server.MapPath (".") - вернёт D: \ WebApps \ shop\ products
     Server.MapPath ("..") - вернёт D: \ WebApps \ shop
     Server.MapPath ("~") - вернёт D: \ WebApps \ shop
     Server.MapPath ("/") - вернёт C: \ Inetpub \ wwwroot
     Server.MapPath ("/ shop") - вернёт D: \ WebApps \ shop

Если путь начинается со слэша (/) или обратного слэша (\), то метод MapPath вернёт путь для полного виртуального  пути.

Если путь не начинается со слэша, метод MapPath вернёт путь относительно директории запроса.


Для получения MapPath в code-behind файле можно использовать  HttpContext.Current.Server.MapPath.

понедельник, 16 июля 2012 г.

TechEd 2012, Amsterdam

В конце июня в Амстердаме проходила грандиозная конференция TechEd 2012 и мне посчастливилось на ней побывать.


Началось всё с пленарного доклада, где в основном уделили внимание Windows Azure, Windows 8, Visual Studio 2012 и TFS 2012. Было очень много народу, но во время всей конференции я ни разу не заметила никаких проблем с организацией. Всё было на высшем уровне. Было очень много интересных докладов, и выбирать на какой же пойти было иногда не просто. На докладах по Windows Phone в конце доклада можно было выиграть Lumia 900, ответив правильно на вопрос по докладу.
О докладах не буду подробно рассказывать, надеюсь в скором времени появятся их записи. На некоторых докладах не хватало места, это наверно единственное, что мне не очень понравилось.
Так же на конференции был большой зал для партнёров и спонсоров, где можно было пообщаться с людьми из различных компаний, таких как Dell, HP, Intel, Symantec и др, узнать об их продуктах, новинках и если повезёт, то что-нибудь выиграть. Вот несколько фотографий партнёров и спонсоров конференции.





Вечером после тяжёлого дня конференции :) был организован просмотр футбольного матча, прямо на футбольной арене. Вкусное пиво, голландский сыр, большие экраны по всему периметру поля никого не оставили равнодушным. 




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


среда, 29 февраля 2012 г.

Run Santa! Run! Free – 3D аркада для Windows Phone.

 
В самом начале января в Market Place появилась одна очень интересная игра Run! Santa Run! Это игра про забавного толстенького старичка Санта Клауса. В этой игре вы сможете побыть в роли деда мороза. А какая главная цель у деда мороза? Правильно! Собрать подарки, чтобы подарить их детям, но также не следует забывать о препятствиях, встречающихся на пути. Чтобы обойти все препятствия, Санта может уходить вправо, влево и перепрыгивать через них, делая сальто вперёд. Препятствия могут быть в виде снеговиков, бочек и камней. Снеговиков перепрыгнуть сложнее всего. Также иногда встречаются участки ускорения, на этих участках Санта бежит гораздо быстрее и соответственно дальше прыгает. Если постараться можно перепрыгнуть три камня в ряд или два снеговика. Игра полностью в 3D, имеет интересный геймплэй и приятную музыку, что меня и привлекло в ней. К сожалению, игра платная, но есть демо-версия с тремя бесплатными уровнями.
Недавно разработчики выпустили новую, бесплатную (и без рекламы) версию игры Run Santa! Run!
В ней они постарались учесть все комментарии игроков и практически полностью переделали игру, в частности:
· Переделали графическую и стилистическую составляющие игры. Графика стала более яркой и детализированной.
· Управление в игре теперь осуществляется при помощи акселерометра.
· Изменили положение камеры во время игры, теперь она находится выше и играть стало удобнее.
Оригинальные настройки управления можно установить через меню Options.
clip_image002
Основная суть игры не поменялась – все также бежим по заснеженному лесу, собираем подарки, уклоняемся или перепрыгиваем через различные препятствия, но теперь игра стала более яркой, веселой и динамичной!
clip_image004
clip_image006
clip_image008
Бесплатная версия содержит 10 увлекательных уровней.
Скачать Run Santa! Run! для Windows Phone можно по ссылкам ниже.
clip_image009
clip_image011
Платная версия также была обновлена, в ней обновилась графика и добавлено множество уровней. Теперь в Run Santa! Run! можно играть как за Санта Клауса, так и за Деда Мороза и Снегурочку в 45 уровнях, разделенных на 3 эпизода.
clip_image013
clip_image015
clip_image017
clip_image009[1]
clip_image011[1]
Видео:
http://www.youtube.com/watch?v=_5o9uITAK3g
В заключении хочется сказать, что игра получилась очень красивой, с качественной графикой и анимацией, так что играть в неё очень приятно. Добавление акселерометра значительно улучшило геймпэй. А весёлая музыка и звуки делают игру забавной и интересной. Хорошее времяпрепровождение вам гарантировано.

четверг, 30 июня 2011 г.

Создание простого триггера в WPF


В этой статье речь пойдёт о триггерах в WPF. С помощью триггеров можно менять поведение или внешний вид элементов управления на странице в зависимости от каких-либо событий иои значения какого-либо свойства.
Триггеры бывают трёх ипов. Давайте рассмотрим все по порядку.

Property Trigger

Первй из них это Property Trigger. Триггеры свойств активизируются, когда изменяется значение свойства.
WPF определяет свойства, которые соответствуют действиям пользователя, например, свойство IsMouseOver, которое получает значение true, когда пользователь наводит курсор на UIElement, или соответствующее свойство IsMouseOver объекта ContentElement. Представление действий пользователя в значениях свойств, а также использование элемента Trigger позволяет стилям WPF изменять значения свойств, основанные на действиях пользователя (все из кода).
Свойства, измененные триггерами, автоматически сбрасываются до предыдущего значения, когда условие триггера больше не удовлетворяется. Триггеры оптимизированы для промежуточных состояний, которые должны изменяться и возвращаться к исходному состоянию, например, состояние IsPressed для кнопки Button и состояние IsSelected для элемента ListBoxItem. Данное свойство Property является свойством зависимостей.

Обратите внимание, что необходимо указать свойства Property и Value для объекта Trigger, чтобы триггер работал правильно. Если одно из свойств или оба свойства не заданы, генерируется исключение.

Свойство Setters объекта Trigger может состоять только из объектов Setter. При добавлении дочернего объекта Setter в объект Trigger он неявно добавляется в коллекцию SetterBaseCollection объекта Trigger. Объекты EventSetter не поддерживаются; только Style.Setters поддерживает объекты EventSetter.

В следующем примере демонстрируется именованный стиль Style, доступный для элементов управления Button. Стиль Style определяет два элемента Trigger, первый из которых изменяет свойство Foreground и FontSize кнопки, когда свойство IsMouseOver равно true., а второй делает то е самое только по событию IsPressed равно true.

<Window x:Class="TriggerDemo.PropertyTriggerWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PropertyTriggerWindow" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Background" Value="LightBlue" />
            <Setter Property="FontSize" Value="17" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                    <Setter Property="FontSize" Value="22" />
                </Trigger>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="Foreground" Value="Yellow" />
                    <Setter Property="FontSize" Value="22" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <Button Width="200" Height="30" Content="Click me!" />
    </Grid>
</Window>



Multi Trigger

Если необходимо установить триггер, когда одно или более свойств имеют определённое значене, можно воспользоваться классом MultiTrigger.

MultiTrigger позволяет задать значения свойств или запускать действия на основе коллекции условий Condition. Условие выполняется, если значение свойства (указанное свойством Property класса Condition) элемента соответствует указанному Value. Данное сравнение является проверкой равенства ссылок. Можно использовать переключатели или свойства EnterActions и ExitActions, чтобы применить изменения или запустить действия, когда соблюдаются все условия.

Свойство Setters объекта MultiTrigger может состоять только из объектов Setter. Добавление дочернего Setter к объекту MultiTrigger неявно добавляет его к SetterBaseCollection для объекта MultiTrigger. Объекты EventSetter не поддерживаются; только свойство Style.Setters поддерживает объекты EventSetter.

В следующем примере определяется стиль для элементов TextBox. Триггер смотрит,  если  "IsEnabled"="True и "Text ="Test, то то свойство Foreground устанавливается в Red.

<Window x:Class="TriggerDemo.MultiTriggerWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MultiTriggerWindow" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsEnabled" Value="True" />
                        <Condition Property="Text" Value="Test" />
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Foreground" Value="Red" />
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <TextBox />
    </Grid>
</Window>



Data Trigger

Представляет триггер, применяющий значения свойства или выполняющий действия при соответствии связанных данных указанному условию. DataTrigger позволяет устанавливать значения свойств, если значение свойства объекта данных соответствует заданному Value. Например, при отображении перечня объектов Employee может потребоваться изменить основной цвет в соответствии с текущим присутствием каждого Employee's. Например, Employees, находящиеся в данный момент в отпуске, отображаются фиолетовым цветом. В некоторых сценариях более предпочтительным может быть создание преобразователя или использование DataTemplateSelector. Дополнительные сведения см. в разделе Общие сведения о шаблонах данных.

Обратите внимание на необходимость указания свойств Binding и Value на DataTrigger для обеспечения возможности использования триггера данных. Если одно из свойств или оба свойства не указаны, генерируется исключение.
Свойство Setters объекта DataTrigger может состоять только из объектов Setter. Добавление дочернего Setter к объекту DataTrigger явно добавляет его к SetterBaseCollection для объекта DataTrigger. Объекты EventSetter не поддерживаются; только Style.Setters поддерживает объекты EventSetter.

В следующем примере ItemsSource, принадлежащий ListBox привязан к коллекции объектов класса Book. Объекты Book имеют свойства Title и Publisher.
Каждый элемент ListBoxItem списка ListBox отображает объект Book. Style в данном примере применяется к каждому элементу ListBoxItem.

DataTrigger указан таким образом, что если в качестве Publisher значение " Wrox Press ", то основным цветом соответствующего ListBoxItem является красный, а если Publisher="Dummies" или “Sybex”, то бэкграунд устанавливается в жёлтый и голубой соответственно.

<Window x:Class="TriggerDemo.DataTriggerWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Data Trigger Window" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="ListBoxItem">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Publisher}" Value="Wrox Press">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=Publisher}" Value="Dummies">
                    <Setter Property="Background" Value="Yellow" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=Publisher}" Value="Sybex">
                    <Setter Property="Background" Value="LightBlue" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <ListBox x:Name="list1" />
    </Grid>
</Window>



Вот класс Book, объекты которого мы и отображаем в ListBox.

    public class Book
    {
        public string Title { get; set; }
        public string Publisher { get; set; }

        public override string ToString()
        {
            return Title;
        }
    }

И напоследок опишу код главного окна который запускает все эти демонстрационные приложения.

<Window x:Class="TriggerDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="240" Width="500">
    <StackPanel>
        <Button Content="Property Trigger" Click="OnPropertyTrigger" Margin="5" />
        <Button Content="Multi Trigger" Click="OnMultiTrigger" Margin="5" />
        <Button Content="Data Trigger" Click="OnDataTrigger" Margin="5" />
    </StackPanel>

</Window>



И приведу cs код, в котором описаны обработчики кнопок главного окна.

   public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void OnPropertyTrigger(object sender, RoutedEventArgs e)
        {
            new PropertyTriggerWindow().Show();
        }

        private void OnMultiTrigger(object sender, RoutedEventArgs e)
        {
            new MultiTriggerWindow().Show();
        }

        private void OnDataTrigger(object sender, RoutedEventArgs e)
        {
            new DataTriggerWindow().Show();
        }
    }

 Вот что должно было примерно получится. Надеюсь статья была интересна для вас.