Обзор Visual Studio 2010 Beta 2

Сегодня утром я проснулся, зашел в приложение “Почта Windows Live” проверить свою электронную почту, и обнаружил клевое письмо!

image

Вышла наконец-то Beta 2! Это большое событие, после чего я сразу же поставил на закачку Visual Studio 2010 Beta 2 Ultimate. Среда Разработки поставляется в 3-х версиях: Professional, Premium и Ultimate.

Версия Ultimate конечно же самая полная и самая классная!

После того, как студия скачалась, я тут же поставил ее на установку.

image

Новое окно запуска(Splash Screen) в сине-фиолетовых тонах:

Безымянный

После установки, первое, что бросается в глаза – новый интерфейс, полностью переписанный на WPF:

image

Как вы можете легко заметить, все красиво раскидано по категориям, что удобно. Да и на глаз приятно.

ToDo: Надо как-нибудь нарисовать на досуге обложку для DVD для Visual Studio Beta 2

Нажимаю на кнопку, точнее на пункт меню слева – Новый проект…

image

Лично мне нравится обновленный дизайн! =)

Слева – дерево типов проектов, посередине – выбор типа из категории, справа – описание. Удобно.

Еще стоит отметить, что у нас есть .Net Framework 4 в качестве основной платформы приложения.

Для примера, я взял и создал приложение WPF на .Net 4:

image

Обновленный дизайн, карамельного цвета кнопки, подсветка.

Стоит заметить, что наблюдается падение производительности при работе со студией.

Но все это удобство того стоит.

Минимальные системные требования на мой взгляд:

2-хядерный процессор >1.5 ГГц Intel/AMD, 1 гигабайт оперативной памяти, желательно DDR3,              винчестер пошустрее - SATA/PATA.

И видеокарту не ниже GF 8 поколения.

Тулбокс:

image

Стоит отметить, что в MS VS 2010 Beta 2 теперь можно разрабатывать приложения Azure, SharePoint 2010, плагины для Office 2010.

На этом обзор новой студии я заканчиваю. Удобно, красиво, но пока еще тормозит. Стоит ли использовать .Net 4 сейчас? Ради интереса – можно. Стоит сказать, что основной платформой сейчас стала Windows 7, с предустановленным .Net Framework 3.5, поэтому есть смысл разрабатывать свое ПО именно под эту платформу, ведь не так много найдется энтузиастов, которым захотелось бы снова качать очередное обновление с сайта Майкрософт ради небольшой программы. А для коммерческих целей эта студия не подходит, т.к. еще находится под лицензией Бета и предназначена только для тестов.

Так что тестируем, смотрим, изучаем!

GetValue & Set Value

У меня есть сетка Grid. В каждой ячейке находится какой-то объект. У меня это множество объектов типа TextBlock.

image

Моя задача была при нажатии кнопки менять местами какие-либо элементы. Например, я хочу поменять местами TextBlock-и 8 и 9. Для этого в обработчике нажатия на кнопку я пишу:

tb_hor9.SetValue(Grid.ColumnProperty, 9);
tb_hor8.SetValue(Grid.ColumnProperty, 10);

Чтобы вывести на экран уже истинное положение объекта, я использую функцию GetValue():

TbxHor.Text = tb_hor8.GetValue(Grid.ColumnProperty).ToString();

Программирование. Новый уровень.

Каждый раз, когда я пишу код на том или ином языке, я думаю. Зачем мне это? Зачем я изучаю программирование и зачем оно мне?

Ведь через 3 года та технология, что я знаю уже будет не актуальна. За исключением разве что SQL. Такое ощущение, что эта доисторическая тварь никогда не вымрет. А, может, это и к лучшему. Через 3 года выходит новый Framework от Microsoft, через 3 года сменяется кардинально поколение видеокарт. Изменяется все, если подумать!

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

Всю жизнь программистом я тоже не хочу быть. Я хочу стать богатым, солидным дядькой. Хочу заниматься чем-то большим. Может, проектированием архитектур? Чтож – выход! Но ведь есть что-то большее. Я вижу смысл в своем бизнесе, производстве и инвестициях.

Это как ступени. И надо в свое время пройти каждую. Мы учились в школе, потом в университете. Дальше… Большинство идет работать. Это не мой путь. Мой путь стать богатым. А для этого мне нужно создавать что-то свое.

Это как те парни из Google, Sun, те, что разработали Virtual Box, Parallels Desktop и множество других коллективов, что сделали себе состояние на инновациях. Apple c их iMac, iPod и iPhone.

Значит инновации. А что я могу предложить пользователям, чего раньше не было? Ответить на этот вопрос предстоит каждому, кто думает о своем будущем. Что там дальше? Если не в технологиях дело, не в языках программирования. То в чем?

“Сильные люди видят возможности…”

И это правда. Если вам некомфортно, неуютно. И вы хотите изменить это – делайте! Ради Бога, я вам говорю! Делайте! Поменьше говорите. Ведь мир оценит вас по результатам, а не словам.

Что делать? – спросите вы. А я отвечу – то, что считаете не хватает этому миру. Может быть это маленький сайт в помощь животным, может это новое рекламное агенство или завод по производству сахара.

Производство. Бизнес. Предпринимательство. Инвестиции.

Слабые ищут причину. Вы же - ищите возможности. Там, где людям тяжело – помогите им. Оптимизируйте процесс! Оптимизация процессов – это самое веселое и интересное! Оглянитесь вокруг! Придумайте! В детстве мы решали подобные задачки на логику, строили пути как букашке выйти из лабиринта. Как использовать меньше кубиков и построить пирамидку! Это так легко! И так здорово! Вот и вспомните, раскройте себя! Перестаньте быть скованными и зажатыми! Станьте творцами! Пора строить свою судьбу уже сейчас!

Либо вы будете в руках у тех, кто будет указывать и говорить, что вам следует делать. Обычно этим страдают лентяи. Да не страдают! Им это нравится. Нравится ныть на начальника и говорить, что весь мир – дерьмо. Они не могут понять, что проблема то в них.

Сильные личности обычно добрые, веселые, здоровые. Но они и вкалывают. Но и отдыхают! Да еще как!

Недавно я начал усердно качать пресс, приседать, и заниматься на турниках. Иногда прям кто-то говорит тебе “Ты устал. Забей. Иди отдохни. Тебе больно. Тяжело это”. А ты через боль во всем теле, продолжаешь делать сеты один за другим. А тело как будто ноет. Выходишь из душа. И чувствуешь себя другим человеком! Крепким, сильным, красивым! Здоровым!

Воля! Вот, что важно. Только воля. Никто не сможет вам внушить, что надо делать и вы тут же станете это делать. Только если сами захотите и заставите себя. То и результат не заставит себя ждать. Если трудиться.

А лентяи не любят трудиться. Они работают на работе, играют в свои компьютерные игрушки, имеют страшненьких подруг и среднее авто. Они не хотят думать о будущем.

А вы хотите? Мечтаете о Lamborgini? А что вы сделали для того, чтобы это авто у вас было?

“Ты еще изучаешь С++? А Майк уже владеет своим первым миллионом!”

Все дело в вашей голове. Все просто…

Паттерны программирования

Раньше разработчики писали программный код, как называется по методу Все-В-Одном (All-In-One). Это было жутко неудобно. Но не думайте! Многие и сейчас пишут…

Как ни крути, а скриптовые языки с поддержкой ООП, очень тяжело поддаются разбиению на модули. А если брать Perl или PHP, невольно начинаешь задумываться об альтернативе, если вы занимаетесь каким-нибудь серьезным проектом. Этим летом программировал на Питоне(Python). Вообще не понял, нафиг этот язык. Синтаксис как у Бэйсика с Паскалем. ООП есть на уровне примитива. Есть пара фишек и все! Очень тормозной. Делать на нем что-то профессиональное категорически не советую!

Document-View

Тут все просто. WinForms, ASP.Net – проекты в Visual Studio по умолчанию уже создаются с этим паттерном. Code-Behind, или Код-Позади. Т.е. у нас есть форма и к этой форме присобачен отдельный файл с кодом. Удобно, пока не будешь заниматься чем-то более серьезным. Я 5 месяцев делал один Web-сайт, в итоге понял, что делал его не правильно, т.к. не тот паттерн. Но тогда я узнал про MVC:

MVC

Во! Классная штука! Им использовался еще в языке SmallTalk в далеких 70-х. Смысл в том, что все приложение было разделено на 3 основных части: Model-View-Controller

Все бы ничего. Но слишком сложно и запутано. Модель отвечала за извлечение данных из хранилищ, таких как БД.

Вьюшка – за интерфейс и отображение на экране.

Контроллер всем этим управлял.

Модули эти лучше реализовать через классы и интерфейсы, но, повторюсь, слишком неудобно и наворочено.

MVP

MVP по сути своей – наследник MVC.

Сочетает в себе гибкость и 100% отделение бизнес-логики от интерфейса.

Я тут например накатал программу. И за 10 минут прикрутил 5 платформ: ASP.Net, WinForms, Mobile, WPF, Silverlight. Очень понравилось. Думаю, напишу статью на эту тему.

Сейчас делаю презентацию. Буду рассказывать про MVP в своем родном универе.

Utahraptor скоро будет готов…

URT

Наконец-то научился делать скелет, мышцы, а также фактуру кожи моих существ. А также накладывать текстуру.

Я даже открыл свой новый блог по моделированию в ZBrush! Читайте:

http://zbrushmaster.blogspot.com

Что касательно динозаврика выше – он стал моим экспериментом. Эксперимент прошел удачно и я его дорисую в ближайшие дни. Потом покажу конечный результат.

Я долго искал, как получить доступ к динамически созданному элементу, даже нашел код:

public UIElement FindElement(string TagName, Panel p)
{
UIElement FoundEl = null;
foreach (UIElement el in p.Children)
{
if (((FrameworkElement)el).Tag is string)
if ((string)(((FrameworkElement)el).Tag) == TagName)
FoundEl = el;
if (FoundEl == null)
if (el is Panel)
{
UIElement result = FindElement(TagName, (Panel)el);
if (result != null)
FoundEl = result;
}
}
return FoundEl;
}


Код хороший, но не оптимизированный, темболее есть встроенная команда о которой я расскажу в своем примере:
продолжу статью «Web-службы WCF в Silverlight» С помощью сервиса мы получали текстовую строку «Hello,{0}! How are you?"» где {0} - имя, которое вы ввели в TextBox
Теперь мы не будем добавлять в Silverlight страницу, а создадим ее динамически
И так, код при нажатии на клавишу должен добавить динамический элемент «OutField», а при получении результата с сервиса записывается текст в только что добавленный элемент
Для этого делаем:
1. В обработчике клавиши добавим код:
private void CallService_Click(object sender, RoutedEventArgs e)
{
***Старый код***
TextBlock OutField = new TextBlock();
OutField.Name = "OutField";
OutField.Inlines.Add(“Полученный результат с сервера: ”);
LayoutRoot.Children.Add(OutField);
}

2. В методе proxy_TellMeSomethingCompleted заменим
OutField.Text = e.Result;
на
((TextBlock)LayoutRoot.FindName("OutField")).Inlines.Add(e.Result);


Если мы запустим наш пример и попробуем нажать на клавишу, то сначала появится Предложение “Полученный результат с сервера: ”, а потом добавится результат с сервера.


Дополнения:

Но не забудьте поставить размеры или положение для контрола OutField, так как посте создания, он занимает все пространство.

При создании контрола можно сделать проверку, чтобы при вторичном нажатии на кнопку невыводило ошибку:

if (LayoutRoot.FindName("OutField") == False)
{

}


Это сырой пример, но он показывает, как можно создать контрол, и управлять им уже вовремя работы программы, что добавляет в вашу программу немного динамичности…

MS Expression Design & MS Expression Blend

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

image

Например, делать скиннинг для TextBox-a. Это просто, если знаешь как. Скин рисуется в Expression Design, затем экспортируется в Silverlight Canvas XAML. После чего импортируется MS Expression Blend-ом.

Далее мне пришлось немного помучаться, прежде чем я нашел способ как прикрутить стиль к моей кнопке.

Еще я нарисовал модель плеера, очень напоминающую iPod Touch:

Slice 1

И логотип Leopard-а:

OSX Logo

Нравится мне продукция Apple. Что поделаешь =)

Оконный интерфейс:

image

Менюшка c официального сайта Apple:

image

Также оформил картинку для словаря, в одной моей лабораторной по Информационной Безопасности:

InfoSec image

И напоследок, я решил нарисовать постер к ASOT 400, который уже прошел. Я очень ценю творчество Armin Van Buuren-а и надеюсь в будущем попасть на его сеты:

Armin ASOT 400 Logo

На этом все! MS Expression Design & Blend предоставляют все возможности для творчества, оформительских работ и всего, что относится к дизайну!

Flow Documents в WPF

Сегодня речь пойдет о FlowDocuments. Очень удобная и красивая штука.

Чтобы создать FlowDocument, создаем WPF-приложение. Я для этого использую Blend, т.к. мне в нем удобнее работать.

Стоит сразу отметить, что создавая контейнер FlowDocument, вы на форму уже не сможете расположить других контейнеров.

Итак, заходим в XAML:

Первом делом пишем:

<FlowDocument>

</FlowDocument>

Контейнер создан!

Теперь я пожалуй создам таблицу:

<FlowDocument>

<Table>

</Table>

</FlowDocument>

Напоминает, старый добрый HTML ;)

Затем в теге <Table> я добавляю описание для колонок:

<Table.Columns>
    <TableColumn />
    <TableColumn />
    <TableColumn />
    <TableColumn />
</Table.Columns>

А после них добавляю сами строки. Я возьму 2 строки для примера:

<TableRow>
    <TableCell>
        <Paragraph>
        Content
        </Paragraph>
    </TableCell>
    <TableCell>
        <Paragraph FontFamily="Verdana">
        Content
        </Paragraph>
    </TableCell>
    <TableCell>
        <Paragraph FontFamily="Times New Roman">
        Content
        </Paragraph>
    </TableCell>
    <TableCell>
        <Paragraph Background="Lime">
        Content
        </Paragraph>
    </TableCell>
</TableRow>
<TableRow>
    <TableCell>
        <Paragraph>
        Text
        </Paragraph>
    </TableCell>                   
    <TableCell>
        <Paragraph>
        Text
        </Paragraph>
    </TableCell>                   
    <TableCell>
        <Paragraph>
        Text
        </Paragraph>
    </TableCell>                   
    <TableCell>
        <Paragraph>
        Text
        </Paragraph>
    </TableCell>                   
</TableRow>

Вот и все. Можете запустить свое WPF-приложение и посмотреть в действии FlowDocuments. Если вы пишете новостное ПО, или ПО, где нужен вывод форматированного текста, чтобы его можно было удобно читать – используйте FlowDocuments.

Легкое форматирование, можно менять шрифты и цвет фона и текста. В общем, не контрол – а чудо!

В следующей статье я расскажу как создавать FlowDocuments из кода.

LINQ для прикладных задач

Решил написать статью на тему LINQ. LINQ – удивительная штука, особенно, если не хочешь сидеть и мучиться с SQL-запросами. Тут кому что ближе. Мне без разницы.

Но все же, LINQ.

В качестве примера я взял свой проект, над которым сейчас сижу. По моей задумке данные должны передаваться из двух полей типа TextBox в WCF-службу, а она с помощью LINQ, должна записывать их в Базу Данных.

Добавляю в проект файл типа Linq to SQL– DataClasses1.dbml:

image

Называю сущность именем postconn.

Дальше – интересней. В своей WCF-службе пишу такой код:

var dm = new DataClasses1DataContext();
var pc = new postconn {pname = a, pbody = b};
dm.postconns.InsertOnSubmit(pc);
dm.SubmitChanges();

Думаю тут нужно объяснить. Я создаю новый DataContext и называю его dm.

Затем создаю новую переменную типа postconn. Здесь уже идет сам синтаксис LINQ.

В третей строке я выполняю команду InsertOnSubmit, и в четвертой сам SubmitChanges.

InsertOnSubmit – заменяет стандартный оператор SQL Insert, после чего я применяю изменения.

Задача LINQ – облегчить манипулирование данными. Таблицы становятся как бы классами и с ними становится очень удобно работать.