Поздравляю всех с Новым Годом!

Я искренне желаю всем вам, моим читателям, успехов. Реализуйте свои мечты, делайте проекты, тем самым делая нашу жизнь лучше!

Конечно, здоровья, счастья! А куда ж без него! Чтоб кризис прошел и солнце сияло чаще!

Будьте креативны, талантливы, целеустремленны в своих начинаниях!

И помните про свою вторую половинку! А тем, кто не нашел еще, я желаю найти в этом замечательном 2010-м Новом Году!!! ;)

New Stage of programming!

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

Установил 3D Studio Max.

Рисовать в ZBrush-е я уже умею. С Нового Года обещаю, будет много интересного на блоге ZBrushMaster. В том числе анонсов моих работ и уроков. После работ Паттона(Patton) по фильму “Аватар” Джеймса Кэмерона с ZBrushCentral, я решил, что буду дальше развиваться в этом направлении. Умение моделировать дает хорошие перспективы. В т.ч. для себя, на выставки и конкурсы, и можно будет не нанимать стороннего дизайнера или моделера, а самому все сделать для своих проектов.

Приходит смс – переговоры прошли успешно. Еще один заказ на сайт. Отлично!

Скоро Новый Год!

Подходит к концу этот 2009-й год.

Для меня лично это был трудный год, я учился делать вещи, которые никогда не делал. Перечитал кучу книг и статей.

Открыл этот блог. Просто настало время, когда я понял, что это то – что мне нужно.

И вот я вам скажу, у меня уже было 1500 человек. За два месяца для новичка, а я новичок в этом деле, я думаю, это – хорошо.

Я просто делал, что хотел. Когда-то были перерывы, когда-то я писал статьи подряд. Все зависит от настроения. Я не хочу выдавливать из себя крупицы информации, лишь бы написать “еще одну” статью.

Я стараюсь писать качественно, и в первую очередь, учусь сам.

Понять, значит уметь объяснить. Когда я писал очередную статью, я запоминал и усваивал материал. Поэтому отчасти я скажу, что блог пишу для себя и мне это важно для собственного совершенствования.

Скоро Новый Год, а как же без подарков!

Когда-то я писал статью, что нарисую DVD-обложку для новой Visual Studio.

И я нарисовал и хочу поделиться ею с вами!

Visual Studio Beta 2

Новости

Совсем времени не хватает. Хочу сразу везде успеть и вроде как успеваю.

Открыл несколько проектов. Собрал команду. Делаем. В основном ориентируемся на Web, так что в скором времени я я расскажу вам о наших разработках.

Хочу порекламировать свои другие проекты:

HackOSX.ru – заходите! Центральный форум для всех хакинтошников!

Также новости по миру Хак Осей я публикую на блоге http://hackosx-weblog.blogspot.com

Интересно, среди моих знакомых мало кто обзавелся маками, но очень этого хочет. Возникает вопрос – как заработать деньги на мак? Это тема отдельной статьи. Как это сделать - я расскажу позже.

Hack OS Club теперь в Контакте!

Создание сайта потребовало его раскрутки. И, как вы уже успели догадаться, я открыл свой клуб в Контакте!

http://vkontakte.ru/club13774622

Добро пожаловать!

Hack OS X.ru

Наконец-то сбылась моя мечта. Я открыл свой форум по Mac OS X.

image

Хочу сказать спасибо Сане(alex_nnov) за финансовую помощь, Сереге(Jediyoda3000) и Андрюхе (Matt) за активное участие и помощь в администрировании форума.

 

Без вас, ребята, этого форума бы не было!

А теперь о форуме. Я решил сделать портал про Хакинтоши. Заметив, что нет в России централизованного форума по обсуждению Mac OS X на PC, а также тем, прямо или косвенно касающихся установке, настройке, сопровождению и различному ПО, я сделал свой форум.

Приглашаю всех вас посетить его: http://hackosx.ru

Azure и Silverlight

image

Ура! Вышел Silverlight 4 Beta! Начинаю его тестить!

image

Вышел также и новый Blend! Blend 4 Beta. Пишу статью, и параллельно его качаю!

Майкрософт все радует и радует нас новыми продуктами. Стоит еще отметить WCF RIA Services. Это все таки радует. Т.к. RIA и WCF тесно взаимодействуют. MS умудрились запихнуть их в один инсталлер. Скачаю – посмотрю, что получилось. А пока…

А пока ставится Silverlight Tools. Я честно не понимаю, к чему это обилие инструментов. Тот же бесполезный SketchFlow! То, что я могу нарисовать на бумаге или представить у себя в голове. Лишний раз дизайнить и делать концепт-приложения. По-моему это нужно лишний раз педантам, которые привыкли все делать “как надо”. Может для каких-то специфичных проектов – но по мне, это трата времени. Для мелких проектов Sketch не нужен. Для крупных – возможно. Но там за всем этим следят Leader Programmer-ы или Team Leader-ы. Т.е. на общую концепцию. Разве что им. Еще раз – проще взять лист бумаги и тут же нарисовать, что хочешь. Чем лишний раз изучать новую тулзу.

А пока все! Всем удачи в освоении новых технологий!

Windows 7 SDK, Ribbon-панели и Web-дизайн

С тех пор как я написал последний пост, уже прошло много времени. Время идет, технологии тоже развиваются с каждым днем. Не успеваешь замечать, как одно сменяет другое. Единый процесс. А мы, программисты, IT, должны постоянно учиться. Такая наша профессия. Через 2 года наши знания устаревают. Основа остается.

Мне на почту написал один мой читатель, что мол ничего не изменилось. Фон-Нейман как был так и есть. Только кода много было написано с тех пор.

Надо сказать, так и есть. У нас и сейчас есть та самая идеализированная архитектура Фон-Неймана, правда жутко измененная. Появились ядра, конвейеры. Но технология производства процессоров все та же.

Правда сейчас разрабатывается квантовый компьютер, а с ним и что-то новое. Где-то я видел доклад по троичной алгебре, и слышал о разработке голографических дисков, которые записывают с использованием спектра из 7-ми лучей. Т.е. аж 8 состояний.

Мы привыкли работать с бинарным кодом. Хотя нет, если брать ассемблер. Можно работать и с 8-ричным и с 16-ричным. Но, в таком случае и правда использовать 8 состояний, а не 3. Разумней. Хотя может и нет.

Установил Windows 7 SDK, наткнулся на одну интересную вещь – Ribbon-панель.

Да, именно ленту. Это панель из MS Office 2007, которая пришла на замену обычного меню. Это и новые панели в MS Paint и MS Wordpad в Windows 7.

image

Я считаю использование таких панелей более рационально. Приятные на вид, легко найти нужный инструмент. Все видно наглядно.

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

Редизайн

Пришел к выводу, что нужно бы поменять дизайн блогу. Просто стандартная тема не так впечатляет. Хочется чего-то особенного, красивого. Так что нарисую, сверстаю и у блога скоро появится новый дизайн.

В последнее время начал делать сайты на заказ. Кому надо – обращайтесь.

iTunes 9

iTunes

С программирования я плавно перешел к обзору различного ПО. Фирма Apple мне явно симпатизирует. Эффекты 3D, плавные формы. Все это можно сделать и без WPF, как ни странно.

Программа простая. Приятный интерфейс в стиле металлик. Apple всегда радует нас хорошим дизайном. Так что внешне iTunes – просто великолепный плеер!

При первом запуске iTunes просканировал мой ноутбук на предмет наличия всяких аудио-композиций, нашел, добавил. Загрузил обложки.

3D эффекты, про которые я уже говорил, радуют глаз и отображают обложки альбомов музыки на вашем ПК или Mac.

Что еще очень понравилось – огромный список радиостанций! Я тут же нашел свои любимые транс-радиостанции и стал слушать.

Больше про плеер сказать ничего не могу. Тут есть все, что нужно. Без лишней головной боли.

Включил и слушаешь музыку!

Обзор 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 – облегчить манипулирование данными. Таблицы становятся как бы классами и с ними становится очень удобно работать.

Введение в .Net

Итак начнем с терминологии.

.Net Framework – платформа для разработки приложений.

Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Т.е. можно писать систему или программный продукт на разных языках программирования(Delphi for .Net, IronPython, C#, VB.Net, C++.Net) и потом собирать вместе так, что все это еще и работать будет :)

Silverlight – платформа для разработки мультимедийных Web-ориентированных приложений, или сайтов.

WPF – Windows Presentation Foundation – универсальная платформа для разработке графического интерфейса (Graphical User Interface)

XAML – Расширяемый язык разметки приложений. Используется как для создания оконных Windows приложений(WPF), также я для Web-ориентированных (Silverlight)

WCF – Windows Communication Foundation, по сути это платформа для создания сетевых распределенных приложений. Новая ступень в развитии Web-служб. Мы можем всю логику нашего клиентского приложения вынести в WCF-службу и без проблем цепляться к ней из WPF Windows приложения, либо Silverlight-сайта.

Utahraptor Head

UtahRaptor
Я подумал, а было бы здорово выкладывать мои творения на блог! Заодно буду наблюдать за своим прогрессом и принимать критику и пожелания. А также советы от тех, кому интересна 3D-графика и творчество!

Utahraptor in design

Utahraptor

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

ZBrush изначально использовался для моделирования органики. Сейчас с ним делают действительно интересные вещи.

Искусственный интеллект (AI)

Что такое Искусственный Интеллект (АИ) робота? Многие говорят автоматизация подобия человека. А что такое Человек?? Чтобы понять это не надо лесть в дебри типа эволюции, это сложные процессы, которые нам пока что не понять. Лучше давайте рассмотрим человека со стороны его развития с младенческих дней до старости.
Ведь все мы знаем, что ребенок у нас рождается беспомощный. Младенец нечего не умеет, зрение его искажено, звуки воспринимаются как шумы, обучается и входит калию жизни общества и живет как Homo sapiens (Человек разумный)
А если младенца оставить одного?? Например, попал ребенок к волкам(как Маугли), его не съели, а приняли его в стаю... Он начал развиваться по их законам, по законам стаи, даже время жизни его становится, как и у волков (мало, сколько не помню)
Значит, эволюция не зависит от общества, на это влияет другое общество. Человек рождается, обучается законам общества, передает знания об обществе новым людям, это цикл жизни. По этому принципу общество развивается и меняется на основе старых законов.
Месяц назад я думал, чем отличается квантовый компьютер от обычных ПК, а задумался я по, потому что видел статью, что у ученых получилось создать какой-то «квантовый процессор» который выводит 1 неопределенный сигнал. И задумался, а зачем он нужен, и вообще как работает квантовый процессор?
Зная, что Мозг - это квантовый процессор, я понял, что этот процессор работает на основе памяти. То есть получает какие-то параметры, а выводит результат, данные о ситуации которые были уже в его «жизни».

Как подключить XML файл к элементу Form Wiew

Сразу скажу: не пытайтесь подключить XML файл к стандартным (Standart) элементам из набора MSVS. Используйте элементы группы Data.
Для начала добавим сам XML файл в проект.



И что-нибудь в нём напишем.

Добавим также страницу на которой хотим видеть наш текст.



Разместим на ней элемент FormWiew


И подключим источник данных (DataSousce)

Выберем XML data source, щёлкнем ОК, выберем файл и укажем путь к данным в XML файле (XPath expression). Так как нужный нам элемент "text" является вложенным в элемент  "items", топуть будет выглядеть так: /items

Теперь добавим в код элемента FormWiew следующий контейнер, указывающий на элемент XML файла.
ItemTemplate>
     
/ItemTemplate>


Теперь запускаем программу и любуемся на результат.


Намного проще чем кажется на первый взгляд.

Drag & Drop объектов в Silverlight

Решил реализовать одну забавную функцию. Drag & Drop используется в игрушках, в настольных приложениях. Везде, где надо что-то и куда-то перемещать :)

Создаем объект, я выбрал Rectangle. Смотрите, что вам ближе.

Далее переходим непосредственно к программированию.

 

public MainPage()
{
    InitializeComponent();    //Инициализация
    this.myrect.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(myrect_MouseLeftButtonDown);   //Добавляем событие на нажатие кнопки мыши
    this.myrect.MouseLeftButtonUp += new System.Windows.Input.MouseButtonEventHandler(myrect_MouseLeftButtonUp);   //Добавляем событие на тот момент, когда вы отпускаете кнопку мыши
    this.myrect.MouseMove += new System.Windows.Input.MouseEventHandler(myrect_MouseMove);   //Добавляем событие, когда перемещаем объект
}
private Boolean ismyRectMouseCapture = false;    //Нам нужна вспомогательная переменная, чтобы понять, “зацепили” мы или нет наш объект!
private Point clickPosition;   //Вспомогательная переменная для определения положения указателя мыши
private void myrect_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    clickPosition = e.GetPosition(sender as UIElement);   //
    this.myrect.CaptureMouse();
    ismyRectMouseCapture = true;
}

private void myrect_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    this.myrect.ReleaseMouseCapture();
    ismyRectMouseCapture = false;
}

private void myrect_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
    if (ismyRectMouseCapture)
    {
        this.myTranslateTransform.X = e.GetPosition(this).X-clickPosition.X-(myrect.Width/2); //Думаю тут все понятно =)
        this.myTranslateTransform.Y = e.GetPosition(this).Y-clickPosition.Y-(myrect.Height/2);
    }
}

Zbrush-динозавр

DinoHead

А иногда я просто рисую. Захотелось сделать вот такое чудо! Может я его и дорисую до всего тела. Но пока мне нравится голова!

Как динамически загрузить картинку в Silverlight

В общем задача тривиальная и простая. Я раньше не знал как это делается. Мне помог один человек. Его блог: http://www.dev.net.ua/blogs/sergeylutay
Спасибо, тебе, Серега!
Он отозвался на мою просьбу о помощи, и помог разобраться с этой задачей. Бывает, что даже с простыми вещами разобраться порой очень трудно, особенно, если ты – новичок в этом. А оказывается очень просто. Приведенный ниже пример демонстрирует как можно программно, из кода добавлять в LayoutRoot дочерние элементы и обновлять интерфейс.
Image img = new Image();    
BitmapImage bimg = new BitmapImage(new Uri("http://www.wallpaperez.info/wallpaper/models/m/Adriana-Lima-wallpapers-796.jpg", UriKind.Absolute));
//если заранее не известен размер загружаемой картинки
bimg.ImageOpened += delegate(object sender, RoutedEventArgs e)
{
BitmapImage bitmapImg = sender as BitmapImage;
img.Height = bitmapImg.PixelHeight;
img.Width = bitmapImg.PixelWidth;
};
img.Source = bimg;
LayoutRoot.Children.Add(img);
Все очень просто. Создаем объект типа Image. Затем, создаем обект BitmapImage, и к нему привязываем картинку по URI. Далее указываем размеры изображения.
После чего объекту Image указываем в качестве источника наш BitmapImage-объект.
И, вуаля! Добавляем на нашу страницу в строке
LayoutRoot.Children.Add(img);
Подозреваю, что объекты можно засовывать в любые контейнеры. Надо будет покопаться ;)
Вот и все!

Бизнес-приложения Silverlight как старт для серьезного проекта

Раньше, чтобы встроить Silverlight на страницу, нужно было создавать элемент типа Object в HTML, да и то, Silverlight-сайты не обладали резиновой разметкой. Для этого приходилось создавать соответствующий фон.

Сейчас я рассмотрю тип профессиональных приложений, которые носят название Silverlight Business Application. Их особенности и преимущества для создания своего портала.

Дело в том, что изначально тяжело с нуля разработать полнофункциональное RIA-приложение. Т.е. нужно писать классы и функции для работы с авторизацией и переключением по страницам. У меня возникали с этим проблемы.

Здесь же я вижу удобный темплейт, по схеме MVC, где представление отделено от логики работы Silverlight-приложения, что уже удобно.

Резиновая разметка! Этим я думаю все сказано!

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

Silverlight-технология Web-будущего интернета!

image

Основы XML

XML (англ. eXtensible Markup Language — расширяемый язык разметки; произносится [экс-эм-э́л]) это иерархическая структура, предназначенная для хранения любых данных, (текст, таблицы, разметку и многое другое..)
XML файл состоит из заголовка и основной части обе части обособляются угловых скобках “< >”

Заголовок обособляется угловыми скобками со знаком вопроса “<?” и “?>” в котором заключается информация о версии и кодировке файла

Пример заголовка:
<?xml version="1.0" encoding="UTF-8"?>
Или просто указать
<?xml ?>

Основная часть состоит из элемента <title></title>,
Его атрибутов <ingredient amount="3"> и
Значений <title>Простой хлеб</title>
В место значений может находиться элементы в котором может находится также подэлементы
<table>
<table>
<table>

</table>
</table>
</table>

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



Атрибуты и элементы

<?xml version="1.0" encoding="UTF-8"?>
<recipe name="хлеб" preptime="5" cooktime="180">
<title>Простой хлеб</title>
<ingredient amount="3" unit="стакан">Мука</ingredient>
<ingredient amount="0.25" unit="грамм">Дрожжи</ingredient>
<ingredient amount="1.5" unit="стакан">Тёплая вода</ingredient>
<ingredient amount="1" unit="чайная ложка">Соль</ingredient>
<instructions>
<step>Смешать все ингредиенты и тщательно замесить.</step>
<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>
<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>
</instructions>
</recipe>


Плюсы:

Простота доступа к файлу
Структурированность файла

Минусы:

Файл переписывается заново при сохранении любых изменений

Web-службы WCF в Silverlight

Сегодня я расскажу, как создавать проект Silverlight, в паре с Web-службой Windows Communication Foundation и как-то взаимодействовать с этой службой.
Начнем с того, что запустим MSVS 2008:
image
Далее, появляется окно, тут тоже просто ОК:
image
Создается проект Silverlight. Silverlight просто как статичный сайт нам не интересен. Давайте сделаем динамику. Чтобы можно было отправлять какие-то данные, получать какие-то данные. Для этого нам понадобится WCF-сервис.

addfile
В меню выбираем Web-сервис WCF, как-нибудь его называем и жмем кнопку Add:
image
В файле IMyWCFService.cs объявляем интерфейс функции TellMeSomething:
public interface IMyWCFService
{ [OperationContract] string TellMeSomething(string name); }


Далее переходим в файл MyWCFService.svc.cs:

image

Пишем нашу функцию TellMeSomething:

public class MyWCFService : IMyWCFService 
{
#region IMyWCFService Members public string TellMeSomething(string name)
{
return string.Format("Hello, {0} ! How are you?", name);
} #endregion
}
Далее мы идем в файл Web.config, находим пункт
<endpoint address="" binding="wsHttpBinding" contract="WebServicesForBlog.Web.IMyWCFService">
и меняем wsHttpBinding на basicHttpBinding.

Настройки конфигурационного файла на этом закончены.


Теперь возвращаемся к Silverlight-проекту и проектируем страницу:
<Grid x:Name="LayoutRoot">
<StackPanel x:Name="OurStackPanel" Orientation="Vertical">
<TextBox x:Name="InputStr"></TextBox>
<Button x:Name="CallService" Content="Call WCF Service" Click="CallService_Click"></Button>
</StackPanel>
</Grid>



Далее нам нужно подключить WCF-службу, что мы создали:
image


После чего в появившемся окне нажимаем кнопку – Discover, и вводим поле Namespace референс, т.е. название экземпляра нашей WCF-службы:

image

И нажимаем ОК.

Все, теперь службу WCF мы подключили к проекту. Осталось ее использовать.
Допишем в разметку еще и TextBlock для вывода текста:

<TextBlock x:Name="OutField"></TextBlock>

А теперь перейдем к программированию кнопки:
private void CallService_Click(object sender, RoutedEventArgs e) {
MyWCFServiceReference.MyWCFServiceClient proxy = new WebServicesForBlog.MyWCFServiceReference.MyWCFServiceClient();
proxy.TellMeSomethingCompleted += new EventHandler<WebServicesForBlog.MyWCFServiceReference.TellMeSomethingCompletedEventArgs>(proxy_TellMeSomethingCompleted);
proxy.TellMeSomethingAsync(InputStr.Text);
}

И добавим EventHandler для события, когда служба WCF уже отработала:

void proxy_TellMeSomethingCompleted(object sender, WebServicesForBlog.MyWCFServiceReference.TellMeSomethingCompletedEventArgs e)
{
OutField.Text = e.Result;
}

Теперь запускаем проект! Вводим имя в Textbox и нажимаем кнопку "Call WCF Service"

image

Служба обрабатывает значение из TextBox-а и возвращает значение в TextBlock. Таким образом службы WCF – это обширная платформа для разработки многофункциональных динамических Silverlight-приложений. WCF нужен там, где используется обмен и обработка данных сервером.