четверг, 27 декабря 2012 г.

И все таки мы выжили

Увидел вот это видео:
И вспомнил вот этот расказ (кто автор не знаю, самое раннее упоминание нашел здесь, а дальше искать лень):

Рисование в Windows 8 приложениях

Как то ничего сложнее прямоугольников и эллипсов на WPF не рисовал, а тут на форуме MSDN задали вопрос как нарисовать дугу, да еще и менять ее в процессе работы программы. Ответ по ссылке, и так как я искать на форумах MSDN не умею, то чтобы он не потерялся, подкатом.

Watermark для TextBox-а в Windows 8 приложениях

Статью написал уже давно, да и выложил на хабре ее тоже давно. Но все никак руки не доходили сюда ссылку кинуть. Вот, исправляюсь.

среда, 12 декабря 2012 г.

12.12.12 12:12

К нумерологии отношусь с недоверием, если кто не в курсе, то может почитать у Толстого в Войне и Мире, как Пьер Безуховы, вычислил, что именно он должен остановить Наполеона. Но, согласитесь, следующая такая красивая связка будет только через 88 лет.

четверг, 6 декабря 2012 г.

Пример обертки над внешними методами с применением Reflection

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

воскресенье, 25 ноября 2012 г.

Класс с поддержкой фильтрации и сортировки в Windows 8 приложениях

Для меня оказалось значительным сюрпризом, что CollectionViewSource в WPF и CollectionViewSource в Windows 8 приложениях, работают по разному. На форуме MSDN, уже дважды возникал про это вопрос (здесь и здесь). Ну и простит меня LXGDARK пример я напишу на C#, но думаю у него проблем с этим не возникнет. Итак, под катом пример класса, который принимает коллекцию и позволяет ее фильтровать и сортировать.

понедельник, 19 ноября 2012 г.

Создание DataTemplate из кода

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

среда, 14 ноября 2012 г.

Как заставить async метод вести себя как синхронный

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

вторник, 13 ноября 2012 г.

В дополнение к предыдущему посту

Вот, еще один скриншот, статистики за последнюю неделю, по посещению этого блога:

Извинения, ну и похвалиться

Кто читает мой блог достаточно часто, тот наверно заметил, что я пишу достаточно мало статей в блог, да к тому же не равномерно. Ну так вот, основная причина в том, что я отвечаю на форумах MSDN, по тихоньку участвую в его переводе... Это, если кто не понял, были типа извиения. Ну а теперь похвалиться ))
Сегодня в своем профиле обнаружил, что я:
Нет, на самом деле, я не забрасываю блог. Буду продолжать в него писать, да и своих коллег буду призывать к этому, вот недавно в свой блог написал первую статью Андрей Потапов. И это ведь замечательно, вот допишет УМКД-ы и будет еще от него что нибудь интересненькое. 

воскресенье, 11 ноября 2012 г.

Фильтрация и группировка коллекций в WPF

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

Цитата дня

Если бы автомобиль проходил цикл разработки компьютера, то Роллс-Ройс стоил 100$, проходил миллион миль на галлон и взрывался каждый год, убивая всех пассажиров.
 -- R. Cringely

вторник, 6 ноября 2012 г.

Цитата дня

Бедный, неудачный, несчастливый и нездоровый это тот, кто часто использует слово «завтра».  
 -- Роберт Кийосаки

четверг, 1 ноября 2012 г.

Binding к статическим полям статических классов

Давно хотел написать про это пример, но все как то руки не доходили, ну а тут на форуме MSDN-овском возник вопрос, где это может пригодится, поэтому сегодня напишу пример того, как можно выполнить Binding к статическому полю.
Итак, задача. Нужно выполнить Binding к полю, которое доступно как статическое, при этом необходимо, чтобы изменения поля в пользовательском интерфейсе отображалис

среда, 31 октября 2012 г.

Постулат Харриссона

"На каждое действие есть равная ему противодействующая критика."
Собственно с постулатом все. Теперь немного о том, что критика бывает конструктивная и не конструктивная. Если в критике есть путь по которому можно пойти, чтобы недостаток устранить, то это критика конструктивная. А вот что делать с неконструктивной критикой? С той, которая сформулированна в виде: «полная фигня, что вы тут понаделали»?





воскресенье, 28 октября 2012 г.

Цитата дня

Сложность — признак технической незрелости. Простота использования — знак хорошо спроектированного продукта, будь то банкомат или ракета.
 -- Daniel T. Ling

четверг, 25 октября 2012 г.

Обертка для привязки команд к произвольным событиям

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

вторник, 16 октября 2012 г.

Про непонимание новомодных штук и к чему это приводит

На работе, уже два дня бегаю по руинам. Почему? А потому, что одному коллеге показалось, что новомодные штуки это круто, а раз круто, то должно быть и у нас. Вот про то, как работающий код был убит новомодными async и await, я и расскажу под катом.

воскресенье, 7 октября 2012 г.

четверг, 4 октября 2012 г.

Цитата дня

Тяжёлый труд — это скопление легких дел, которые вы не сделали, когда должны были сделать.
 -- Джон Максвелл

воскресенье, 30 сентября 2012 г.

пятница, 28 сентября 2012 г.

Цитата дня

Разработчик состоит из четырех компонентов: тело, сердце, разум и душа.
1. Телу необходимы деньги и безопасность.
2. Сердцу — любовь и признание.
3. Разуму — развитие и самосовершенствование.
4. Душе — самореализация.
 -- С. Архипенков

среда, 26 сентября 2012 г.

Редактирование в ячейках таблицы и удаление строк

Сегодня, убегая с работы, в спешке перепутал DataGrid и GridView, поэтому не смог показать, как задать шаблон для редактирования ячейки. В общем, исправляюсь и показываю. Ну и чтобы жизнь медом не казалась, пусть еще будет в каждой строке кнопка, которая будет удалять текущую строку.

понедельник, 24 сентября 2012 г.

Контракты в Windows 8 приложениях (Search)

Сегодня я хотел бы поговорить о еще одном контракте предоставляемом операционной системой для Windows 8 приложений. Этим контрактом будет поиск. Ну а так как современное приложение сложно представить без этого функционала, то вперед.

Цитата дня

Хороший программист обязательно посмотрит в обе стороны, даже если переходит улицу с односторонним движением.
 -- Doug Linder
Источник: http://humorland.org/quote/8535-it-jumor-citaty.html

четверг, 20 сентября 2012 г.

Контракты в Windows 8 приложениях (Target)

Итак, давненько я не рассказывал про разработку Windows 8 приложений, но вот, муза вернулась из летнего отпуска, и я постараюсь продолжить эту весьма интересную тему.
Сегодня, я хотел бы рассказать, про одну из самых классных штук, которые появились в Windows 8 приложениях, а именно, о контрактах.
Если на пальцах, то идея проста. Приложение должно делать только то, для чего предназначено, а входные данные оно может получать из других приложений (про которые на момент написания, может быть даже и не известно) и в свою очередь, можно предоставлять данные из своего приложения в другие.

среда, 19 сентября 2012 г.

вторник, 18 сентября 2012 г.

Динамическое создание компонента в WinForms

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

пятница, 14 сентября 2012 г.

Деление многочлена на многочлен

Вот здесь, на форуме MSDN. Задали вопрос, есть ли на C# библиотека умеющая делить многочлен на многочлен. Началось обсуждение. Т.к. сходу готовой библиотеки, удовлетворяющей требованиям нет, то пусть она теперь будет.

четверг, 13 сентября 2012 г.

Цитата дня

     -Будут в твоей жизни и взлёты, и падения, и удачи, и разочарования. Но помни, сынок, самое главное - как бы ни сложилась твоя судьба, в какие бы обстоятельства ты ни попал, при любом раскладе надо оставаться человеком! Хитрой, коварной, беспощадной тварью!
 -- bormor

среда, 12 сентября 2012 г.

Цитата дня

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

Синтаксический сахар async и await

Вчера, в разговоре со Стасом, мы что-то начали обсуждать async и await с точки зрения, понимания. Вот пришел новый программист, вот показали ему магию, а как оно работает? А кто же его знает? В этом посте, попробую предложить вариант реализации того же функционала на старых, добрых потоках.

воскресенье, 9 сентября 2012 г.

Про книгу "Надежный код"




Как тут недавно обещал, постараюсь отписываться о книжках, которые прочитал. И первой из таких книг будет "Надежный код" Дониса Маршалла и Джона Бруно.

суббота, 8 сентября 2012 г.

Windows Camp 07.09.2012 г. Москва

Итак, вчера прошла большая конференция, посвященная выходу Windows 8 и Windows Phone 8.
Windows Camp проходил в самом центре Москвы. Участников было, по моим прикидкам, большее 600 человек, три секции, стенды и демонстрации от Microsoft и партнеров. Собственно впечатления, небольшие конспекы докладов, которые я слушал, вы и найдете подкатом.

понедельник, 3 сентября 2012 г.

Теория больших чисел

У автора выложившего ролик на ютуб плохо с теорией вероятности, поэтому он дал странное название. На мой взгляд, здесь просто теория больших чисел...
А вы как считаете, что это такое?
Кстати, мне понравилось про полицейских. А вам?

воскресенье, 2 сентября 2012 г.

Цитата дня

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

среда, 29 августа 2012 г.

Почти цитата

Читаю одну забавную книженцию, которую очень давно мне порекомендовал Влад Кондратьев. Книжка супер, то что ниже, для цитаты многовато, но не удержусь, приведу абзац полностью:
Если хотите еще сюрпризов, обратите внимание на косметическую индустрию. Разница между брендами и здесь крайне незначительная. По сути, многие кремы для кожи имеют одинаковую формулу, за исключением одного «уникального» ингредиента, на котором и строится «особая история». Это может быть алоэ, овсяное толокно, овечья плацента или, как, например, в известном креме «Nancy Kwan Pearl Cream» — толченый жемчуг. В последнем случае на волшебном ингредиенте ДЕЙСТВИТЕЛЬНО выстраивается целая история —древний секрет красоты восточных цариц! Фактически между кремами нет никакого существенного различия, зато есть разница в миллионы долларов между товарами с притягательными и волнующими историями и теми, которые не сумели разжечь женское любопытство.
 -- Кеннеди Дэн

воскресенье, 26 августа 2012 г.

Техника пустого инбокса

Сегодня, уже во второй раз, просмотрел слайдкасты Максима Дорофеева на тему "Техника пустого инбокса".
Собственно, чтобы время потраченное на это не пропало даром, решил оформить кратенький конспект в виде мыслесхемы (посмотреть на нее можно здесь).
Также, с завтрашнего дня (О! Как раз будет понедельник, а новую жизнь надо начинать с понедельника), начну применять указанную технику в работе и личной жизни. Кто со мной?

четверг, 23 августа 2012 г.

Цитата дня


Пролистав книгу о принципах магии и не взглянув на обложку, сложно не решить, что это книга о разработке программного обеспечения.
 -- B. Tognazzini

четверг, 16 августа 2012 г.

Отслеживание путешествия пользователя по папкам

Сегодняшний пример возник на основании письма одного из подписчиков этого блога. Собственно вот текст этого письма:
---
Здравствуйте!
Хотел спросить возможно ли как то отловить событие открытия папки в ОС Windows? Как бы, чтоб если открывается на компьютере какая то папка тогда у меня в программе выводило путь к этой папке. Надеюсь Вы поняли ход моих мыслей, просто в голове составил как оно должно все работать, а вот объяснить не умею. Мне говорили что надо работать с Windows Shell Api чтоб работать с ОС, но по нем ничего нет. Если Вы знаете как подобное осуществить напишите мне пожалуйста, или где об этом можно прочитать. Спасибо!
---
А так-как сложилось сразу три вещи: вежливость спрашивающего, мое незнание как это сделать и свеже установленная восьмерка, на которой еще более интересно попробовать, то смотрите в подкат.

понедельник, 6 августа 2012 г.

Цитата дня

Архитектор — тот, кто знает разницу между тем, что можно сделать и тем, что следует сделать.
 -- L. McVoy (Работал в Sun, Silicon Graphics, Google. Занимался повышением производительности Unix систем)

суббота, 4 августа 2012 г.

Тестирование ПО

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

пятница, 3 августа 2012 г.

Цитата дня

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

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

Упреждающее программирование

Дьявол кроется в деталях.
 -- Французская поговорка

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

воскресенье, 29 июля 2012 г.

воскресенье, 22 июля 2012 г.

Шаблон для нового класса

Очень часто, особенно на новых проектах, приходится нажимать кнопку добавить новый класс. В проекте появляется новый файлик, но вот вас он полностью устраивает? В большинстве случаев, в этом классе присутствуют лишние пространства имен и нет нужных (да, да, я знаю как убрать неиспользуемые и добавить кликнув на имени класса используемые, но вот как добавить написав расширяющий метод Where пространство имен System.Linq?). Также, я стремлюсь оформлять класс регионами, что тоже приходиться делать ручками выполняя тупую работу. Сосбственно о чем я, под кактом различные способы, как получать новый класс именно того вида, как вам нужен.

вторник, 17 июля 2012 г.

Об отпуске

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

О INotifyPropertyChanged и DependencyProperty

Эта тема настолько базовая, что я даже не думал, что об этом надо рассказывать. Но вот уже в какой раз задается этот вопрос на форумах MSDN. Собственно поэтому, потрачу один раз время, чтобы в дальнейшем просто давать ссылку.
Итак, у нас есть объект, у объекта свойство, которое через Binding привязано к свойству визуального элемента управления. Из кода мы меняем свойство, хотим, чтобы изменение отображалось в визуальном элементе.

воскресенье, 15 июля 2012 г.

Цитата дня

Если вы будете усердно работать 8 часов в день, вы можете стать менеджером и работать 12 часов в день.
 -- Роберт Фрост

вторник, 3 июля 2012 г.

Цитата дня

- "Математику только зачем учить надо, что она ум в порядок приводит" (Ломоносов)
- "Математика – гимнастика ума" (Суворов)
- "Наука математика – царица всех наук" (Гаусс)
- "Высшая математика убивает креативность" (Фурсенко, бывший министр образования и науки РФ)

суббота, 30 июня 2012 г.

Цитата дня

 Даже если вы очень талантливы и прилагаете большие усилия, для некоторых результатов просто требуется время: вы не получите ребенка через месяц, даже если заставите забеременеть девять женщин.
 -- Уоррен Баффет 

среда, 27 июня 2012 г.

Цитата дня

Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов — с трезвой практичностью экономиста. А кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое…
 -- Андрей Петрович Ершов (советский учёный, один из пионеров теоретического и системного программирования, создатель Сибирской школы информатики, академик АН СССР)

вторник, 19 июня 2012 г.

Жизненный цикл в Windows 8 приложениях

Особенность Windows 8 приложений заключается в том, что в отличии от обычных, десктопных, они запускаются в полноэкранном режиме и, соответственно, пользователь не может одновременно видеть два приложения. К тому же, если приложение долго не используется, то неплохо было бы отправлять его в Sleep. Вот о все об этом мы сегодня и поговорим.

воскресенье, 17 июня 2012 г.

Работа с изоражениями в Windows 8 приложениях

Итак, сегодня поговорим от том, как показывать изображения в Windows 8 приложениях. Тема на самом деле не специфична для Windows 8, и практически все из приведенного может быть применено и в WPF и Silverlight приложениях.

четверг, 14 июня 2012 г.

Цитата дня

Маркетинг и PR практически полностью заменили в нашей стране науку и ремесло в информационных технологиях, а наличие больших денег позволило поначалу закрыть на это глаза, а потом и ослепнуть.
-- Оганесян А. Хаос как предчувствие //CNews. 2006. N6, с.11

среда, 13 июня 2012 г.

Хранение настроек в Windows 8 приложениях

Сегодня мы поговорим о том, как хранить настройки в Windows 8 приложениях. Причем рассмотрим примеры хранения настроек локально и в сетевом хранилище.

воскресенье, 10 июня 2012 г.

О теории обучения от Эдгара Дейла и про ошибки перевода

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

Отвязываем проект от TFS

Т.к. сегодня уже тритий раз искал как это слелать, напишу сюда, чтобы искать было проще.
Итак, есть решение, которое хранится в TFS-овском Source Control-е. Вы, в силу каких то причин, это решение хотите от него отвязать (навсегда). Для этого достаточно открыть файл решения текстовым редактором и удалить секцию GlobalSection (TeamFoundationVersionControl). После открытия проекта в студии, она предложит удалить привязку.

суббота, 9 июня 2012 г.

Использоване окна выбора файлов в Windows 8 приложениях

В прошлый раз, мы с вами посмотрели, как работать с файлами напрямую. Но очень часто, на приходится попросить пользователя выбрать некоторый файл. Т.к. Metro Style приложения ориентированы на "страницы", а не "окна", то с диалогами в них тяжело. Вместо привычного OpenFileDialog придется использовать FileOpenPicker. Именно о нем, мы сегодня и поговорим.

пятница, 8 июня 2012 г.

Цитата дня

Инициатива - это когда человек делает то, что нужно, хотя никто его об этом не просил.
 -- Elbert Hubbard

четверг, 7 июня 2012 г.

Работа с файлами в Windows 8 приложениях

Итак, продолжим говорить про разработку Metro Style приложений для Windows 8.
Перед тем, как перейти к примерам, пара слов про осбенности работы Metro Style приложений. Они работают очень похоже на Web-приложения, причем наиболее близкий родственник видимо Silverlight. Есть некая "песочница" в которой все крутится. Причем при запуске Metro Style приложения в Windows 8 оно должно сказать к чему из весьма ограниченного перечня ресурсов операционной системы оно хочет получить доступ. Небольшую дискуссию на эту тему можно почитать на форуме MSDN. Я же сегодня постараюсь показать, как настроить приложение, чтобы оно получило доступ к папке с документами пользователя, ну и покажу, как с этими файлами поработать.

вторник, 5 июня 2012 г.

Навигация в Windows 8 приложениях

Если не надоест, время от времени буду писать про всякие особенности разработки Windows 8 приложений. И так как любое приложение имеет более одной формы/окна/страницы, то сегодня я приведу несколько примеров того, как можно реализовать навигацию между страницами.
Начнем с того, что создадим приложение Metro Style. Для этого необходимо в Windows 8 запустить Visual Studio 2012 и выбрать необходимый тип проекта:

пятница, 1 июня 2012 г.

Часть 6. Многопоточность на примере матричного фильтра - размытие

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

воскресенье, 27 мая 2012 г.

Цитата дня


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

пятница, 25 мая 2012 г.

Часть 5. События синхронизации

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

среда, 23 мая 2012 г.

Цитата дня

Самое важное при обдумывании новой идеи — не увязнуть в сложности. Любой дурак может сделать что-то сложное. Гораздо сложнее сделать что-то простое.
 -- Ричард Брэнсон (один из семи богатейших людей Великобритании, владелец корпорации "Virgin")

понедельник, 21 мая 2012 г.

Часть 4. Способы синхронизации потоков в .Net

Итак, мы с вами уже познакомились с двумя способами синхронизации в .Net приложениях. Внимательный читатель спросит, откуда два. Ведь мы смотрели только ключевое слово lock. И будет неправ, т.к. мы еще использовали метод Join, который приостанавливает выполнение текущего потока, до тех пор, пока не завершится поток, для которого и вызван Join. Во многих случаях этот метод удобнее использовать по сравнению с другими способами синхронизации. Теперь же, давайте познакомимся с другими способами, которые предоставляет  нам с вами .Net.

среда, 16 мая 2012 г.

Отображение странных иерархий в TreeView

Данный пример написан как ответ на вопрос заданный на формуме MSDN.
Под катом показано, как при помощи паттерна "декоратор" отобразить в виде дерева то, что первоначально назвать деревом можно с очень большой натяжкой.

вторник, 15 мая 2012 г.

Часть 3. Гонки и тупики

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

суббота, 12 мая 2012 г.

Цитата дня

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

Часть 2. Процессы и потоки

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

пятница, 11 мая 2012 г.

Часть 1. История развития параллельной обработки и классификация современных подходов

В 1946 году трое ученых, одним из которых был Джон фон Нейман, опубликовали статью, в которой изложили 5 принципов заложивших основу современных компьютеров. Два других автора: Артур Бёркс и Герман Голдстайн, и тогда были не очень известны, а т.к. эти принципы, в силу известности фон Неймана, получили название в его честь, то про этих двух авторов сейчас мало кто и знает.
Одним из принципов предложенным в этой статье, был принцип «Последовательного программного управления», который гласит: «Программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности». И этот постулат, надолго определил основное направление развития процессоров, да и вычислительной техники. И только относительно недавно, когда увеличивать тактовую частоту процессоров стало технологически не выгодно, основные взоры обратились из последовательного выполнения команд, в параллельное.

четверг, 10 мая 2012 г.

среда, 9 мая 2012 г.

Непрерывная интеграция в TFS 11

Собственно, статья на хабре, а здесь на нее ссылка.

Великолепный пример челночной дипломатии

Как вам не знаю, а мне еще учиться и учиться:

Притча про дровосека

Шел охотник по лесу и повстречал дровосека. Согнувшись, тот долго и упорно пилил сваленное дерево. С лица его пот лился ручьем, а все тело было сильно напряжено. Охотник подошел поближе, чтобы посмотреть, почему работа движется так медленно и с таким колоссальным трудом.
- Да ваша пила совсем затупилась! – обратился охотник к дровосеку. – Почему бы вам её не заточить?
- Что вы! – воскликнул дровосек, удивлённо посмотрев на прохожего. – У меня совершенно нет на это времени, мне нужно спилить еще 20 деревьев!
И дровосек снова принялся за работу.

пятница, 4 мая 2012 г.

Цитата дня

Лично я вижу в этом перст судьбы — шли по лесу и встретили программиста.
  -- Аркадий и Борис Стругацкие. Понедельник начинается в субботу

среда, 2 мая 2012 г.

ALM паттерны для снижения барьеров в разработке

Добрый день, коллеги.

27 апреля прошел ALM Summit 2012, первый из проведенных в России. Под катом, я хочу привести паттерны, применение которых в рамках жизненного цикла приложения разрабатываемого по Agile позволит снизить барьеры между всеми теми людьми, которые участвуют в разработке ПО. Собственно все эти паттерны вчера на саммите и обсуждались. И если вы не были на этом мероприятии и не смотрели трансляцию, а тема вам покажется интересной, то, как только выложат записи, вы все это сможете посмотреть.

воскресенье, 29 апреля 2012 г.

Цитата дня

— Знаешь, что он сделал? он наблюдал за моей работой 10 минут, а потом начал придумывать простую часть программы, которая заменила бы меня!
— А это вообще возможно?
— Как оказалось — да…
 -- Автор неизвестен

среда, 25 апреля 2012 г.

Сравнение ValueType-ов

Мне очень стыдно, но я протупил на вопросе, как проверить равенство двух ValueType-ов, приведенных к типу object.
static void Main(string[] args)
{
   object val0 = 5;
   object val1 = 5;
   Console.WriteLine(val0 == val1);
   Console.ReadLine();
}
Понятно, что возвращается false. Мой ответ и правильный подкатом.

воскресенье, 22 апреля 2012 г.

пятница, 20 апреля 2012 г.

NoTracking в Entity Framework

Начну с небольшой зарисовки для понимания.
Entity Framework это программная прослойка, которая преобразует ваши запросы в SQL и передает их в реальную базу. Полученные ответы обрабатываются и записываются в виде объектной модели в памяти. Поясню на примере. Т.е. каждый раз, как вы получили что то из БД, оно осело в большом обхекте типа DataContext. Каждый раз, когда вы вызываете SaveChanges все эти загруженные в память объекты просматриваются на предмет не поменялись ли они и, соответственно, не пора ли их записать в базу данных. Т.е. загружая из базы записи в ComboBox стартового окна, вы будите хранить их в памяти до тех пор, пока приложение не закроется. Даже если они вам больше не нужны.

четверг, 19 апреля 2012 г.

Цитата дня

Не обещайте того, что вы не можете выполнить, и выполняйте все, что можете пообещать.
 -- Ричард Брэнсон (один из семи богатейших людей Великобритании, владелец корпорации "Virgin")

вторник, 17 апреля 2012 г.

Будущее, которого уже не будет

Все работы взяты вот от сюда.
Но там их надо искать, да и старые пропали. В общем, то что мне понравилось, пусть будет здесь.
Первая:
Остальные подкатом.

воскресенье, 15 апреля 2012 г.

О круглых цифрах

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

О деньгах в тестировании

Наконец, стали доступны материалы с QADays. Помимо интересных докладов, там можно увидеть и меня, ассистирующего Чарльзу Стерлину:
Небольшие выдержки с цифрами из докладов в подкате.

четверг, 12 апреля 2012 г.

Цитата дня

Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит.
 -- Elbert Hubbard

воскресенье, 8 апреля 2012 г.

Цитата дня

Добрый день.

Сегодня, в этой рубрике, будет не одна цитата, а сразу несколько. Поводом для их публикации послужили ряд статей в СМИ:
Патриарх Кирилл получил 20 миллионов компенсации за строительную пыль
РПЦ отсудила земельный участок у детского реабилитационного центра
РПЦ накажет сотрудницу, "лишившую" часов патриарха Кирилла

Чтобы не было недоразумений, я толерантно отношусь ко всем религиям. Все что ниже, это фразы известных людей, сказанных в то или иное время относительно религий вообще:

"Религия расценивается обычными людьми как правда, умными – как ложь, а правителями – как полезность".
 -- Эдвард Гиббон

пятница, 6 апреля 2012 г.

Про ошибки, и немного про качество

В своем блоге Ирина подняла вопрос "Повышение качества разработки ПО".
И показала вот такую картинку:
Мы все с удовольствием прочитали ее первое сооющение в блоге (кстати, поздравляю с почином!), но у нас возник спор. Как же правильно должна выглядеть эта картинка. Под катом, я изложу свой взгляд на проблему.


четверг, 5 апреля 2012 г.

Цитата дня


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

воскресенье, 1 апреля 2012 г.

Тот еще Карлсон

Когда я увидел анонс этого фильма в кинотеатре, то, если честно, он меня не впечатлил. Было ощущение что сняли очередную муть. Ребенок уже неделю нудит, что хочет посмотреть Карлсона. Пошли...
Вы знает, я в восторге. Давно я такого удовольствия от просмотра фильма не получал. Великолепный сценарий (для всей семьи), великолепная игра актеров, хорошая рисовка.
В общем, всем кто еще не сводил детей посмотреть на большом экране (слышишь, Федь?), очень рекомендую.

суббота, 31 марта 2012 г.

Цитата дня


Любая достаточно продвинутая технология неотличима от магии.
-- Артур Кларк

Шутка с QADay'12

Вчера Чарлз Стерлин, рассказал новую для меня версию старой шутки:
- Сколько тестировщиков нужно, чтобы закрутить лампочку?
- Ни одного. Тестировщики не решают проблемы, они их только находят.
- Сколько нужно программистов, чтобы закрутить лампочку?
- Ни одного. Т.к. на рабочем столе программиста баг не воспроизводится... Лампочка горит.

вторник, 27 марта 2012 г.

Async и await

Иногда ожидание бывает дольше, чем хотелось бы пользователю. И если во время этого ожидания приложение еще и не реагирует на действия пользователя, то он вообще в гневе. Достаточно давно, я уже писал как можно реализовать многопоточное приложение. В Framework 4.5 появилась пара ключевых слов, которые позволяют реализовать еще один механизм выолнения длительной операции в отдельном потоке. Это слова async и await.

суббота, 24 марта 2012 г.

Цитата дня

Одна машина может заменить 50 обычных людей. Ни одна машина не может заменить выдающегося человека.
 -- Elbert Hubbard
Источник: http://humorland.org/quote/8535-it-jumor-citaty.html

четверг, 22 марта 2012 г.

Task-и в C#

В C# 4.5 появились два ключевых слова async и await. Но о них, как нибудь в другой раз. Но вот чтобы они заработали в них применяются Task-и, которые доступны были и раньше. Сегодня я хочу показать простенький пример именно на класс Task.

среда, 21 марта 2012 г.

Цитата дня

Здравый смысл гораздо важнее, чем высшее образование.
 -- Ричард Брэнсон (один из семи богатейших людей Великобритании, владелец корпорации "Virgin")

вторник, 20 марта 2012 г.

Получение пользователей группы AD из PowerShell

Для начала нам необходимо убедиться, что у нас установлена фича сервера для работы с AD из PowerShell. Сделать это достаточно легко:

get-module -ListAvailable

И если вы не видите модуля ActiveDirectory, то его придется установить:

пятница, 16 марта 2012 г.

Цитата дня

Есть только два способа прожить жизнь. Первый — будто чудес не существует. Второй — будто кругом одни чудеса!
-- Альберт Эйнштейн

понедельник, 12 марта 2012 г.

Немного о людской жадности

Я с сентября прошлого 2011 года занимаюсь танцами. Какое это отношение имеет к жадности? Давайте в подкате расскажу.

понедельник, 5 марта 2012 г.

Цитата дня

Никогда не делайте что-либо, если это означает отсутствие сна по ночам.
  -- Ричард Брэнсон (один из семи богатейших людей Великобритании, владелец корпорации "Virgin")

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

Цитата дня


Таланты создавать нельзя, но можно создавать культуру — почву, на которой растут и процветают таланты. Чем больше, шире и демократичнее культура, тем чаще появление таланта или гения. Один ученый назвал живопись Ренессанса эпидемией гениальности.
 -- Генрих Нейгауз, пианист

воскресенье, 26 февраля 2012 г.

Уходим в спринт (да, да, мы все еще про Scrum)

Ранее:
Введение в Scrum
Роли при Scrum разработке
С чего начинается Scrum

При удачном стечении обстоятельств, практически не переругавшись, мы получили перечень функционала, который необходимо реализовать. Product Owner поставил ему приоритеты, команда оценки сложности. Начнем писать код?


Цитата дня

У каждой программы два назначения: что она должна делать и чего не должна.
 -- Алан Джей Перлис

суббота, 25 февраля 2012 г.

Настольная игра "Плоский мир"

23 февраля заехали с ребенком в магазин игрушек. Он выбирал себе подарок на 23 февраля. А я не удержался и купил настольную игру "Плоский мир".

пятница, 24 февраля 2012 г.

Цитата дня

Года работы над искусственным интеллектом достаточно, чтобы заставить поверить в бога.
-- Алан Джей Перлис

четверг, 23 февраля 2012 г.

Про MarketPlace на Windows Phone 7 и ошибку c101a247

Довольно забавная штука.
После заливки последней прошивки и регистрации с полученным ключем активации, решил поставить себе Yandex карты. Захожу в Marketplace и на любую попытку установить приложение получаю ошибку "c101a247". Поиском быстро нахожу, что я не один такой. И собственно решение было на форуме который был первой ссылкой. Что меня удивило, так это решение проблемы.
Вот как думаете что надо было сделать, чтобы заработал Marketplace на WP7?
А оказалось достаточно было зайти на live.xbox.com и сказать, что у меня нет консоли... Впечатляет?

вторник, 21 февраля 2012 г.

С чего начинается Scrum

Ранее:
Введение в Scrum
Роли при Scrum разработке

Итак, вы собрались своей командой, выбрали или вам назначили Product Owner-а, собственно есть общее представление о том что надо делать и...

Цитата дня

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

понедельник, 20 февраля 2012 г.

Еще один факт в пользу простых решений

Вместо эпиграфа старый анекдот:
- Брак по расчету, это как?
- Строим всех в одну шеренгу: "на первый-второй рассчитайсь!"
- Первый.
- Второй.
- Все! Первые женятся на вторых...

суббота, 18 февраля 2012 г.

Немного теории ошибок

1. В любой программе есть хотя бы одна ошибка.
Следствие:
2. В правильно работающей программе - количество ошибок четное.

Цитата дня

Следующие несколько цитат будут от Алана Джей Перлиса. Он родился 1 апреля 1922 в Питсбурге. Американский учёный в области компьютерных технологий, первый лауреат премии Тьюринга. Член команды, разработавшей язык программирования Алгол. Умер 7 февраля 1990.

Синтаксический сахар вызывает рак точек с запятой
-- Алан Джей Перлис

пятница, 17 февраля 2012 г.

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

Введение в Scrum

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

суббота, 11 февраля 2012 г.

Цитата дня

Я не считаю себя замечательным программистом. Я просто хороший программист с замечательными привычками.
 -- Кент Бек (американский инженер-программист и создатель экстремального программирования)

пятница, 10 февраля 2012 г.

О нестандартном мышлении

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

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

вторник, 7 февраля 2012 г.

Изменение положения ChildWindow после его показа

В Silverlight есть замечательный класс ChildWindow, основная проблема с этим классом заключается в том, что это ни разу не Window. У него нет свойств Left, Top или X, Y... Это вообще Grid, который кладется в Z-буфер самым верхним, и закрывает доступ ко всему, что ниже, а потом уже рисуется контрол, который похож на окно. В чем проблема и как решать подкатом.

суббота, 4 февраля 2012 г.

Фильтрация элементов дерева

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


пятница, 3 февраля 2012 г.

Цитата дня

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

четверг, 2 февраля 2012 г.

Про Павла Музыку и стену сертификатов

31 января 2012 год с нами в команде последний день работал Павел Музыка. Если кто в Москве ищет классного специалиста по проектированию баз данных, программированию на .Net и/или под iOS, то рекомендую с самой лучшей стороны. С ним было очень приятно работать в одной команде. Я очень надеюсь, что мне еще представиться такая возможность.
Ну и собственно немного позитива, сертификаты нашей команды (правда Павел свои уже забрал):

понедельник, 30 января 2012 г.

Подключение к MS SQL на нестандартный порт

Вы не поверите, но для подключения к MS SQL на нестандартный порт надо адрес от порта отделить... ЗАПЯТОЙ!
Вот как об этом можно догадаться? А?

Цитата дня

Наш большой недостаток в том, что мы слишком быстро опускаем руки. Наиболее верный путь к успеху – все время пробовать еще один раз.
 -- Томас Эдисон

воскресенье, 29 января 2012 г.

О многообразии вариантов решения задачи выборки

Итак, сегодня попробую сравнить решения задачи выборки данных удовлетворяющих некоторому условию из массива.
Задача следующая:
Есть N объектов в виде коллекции. Необходимо выбрать в новый список все элементы у которых одно из строковых полей равно заданному значению.
В процессе будут сравниваться методы перебора, выборки LINQ, PLINQ.

понедельник, 23 января 2012 г.

Цитата дня

Именно нам повезло. Именно у нас на надгробиях будет написано 19.. тире 20.. .
-- Евгений Гришковец

воскресенье, 22 января 2012 г.

Цитата дня

Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот.
 -- Алан Джей Перлис

среда, 18 января 2012 г.

Цитата дня

– Вот ваши стимулы.
– Что? – не поняла Тиана.
– Стимул! – раздраженно сказал торговец. – Палка для погоняния верблюда. А вы как ее называете?
– Просто палкой, – отрезал Трикс, забирая свой стимул.
– Нет, это несовременно, – покачал головой торговец. – Всем приятно, когда погоняют культурно, и людям, и верблюдам. Так что говорите «стимул», а то будете выглядеть деревенщинами.
 -- Сергей Лукьяненко (Непоседа)

понедельник, 16 января 2012 г.

Цитата дня

В будущем компьютеры будут весить не более 1,5 тонн.
 -- Popular Mechanics, 1949г

Визуальный конструктор скриптов PowerShell для Sharepoint

Нашел визуальный редактор скриптов для SharePoint. Пока не пробовал, но выглядит и работает забавно. Выбираешь New и тебе показывают какие новые объекты ты можешь создавать, а какие нет. Собрав команду показывается, что нужно указать в качестве параметров. Удобненько.

1. Silverlight приложение
2. Гайды к нему


О работе с клиентами

"Я бы очень хотел приехать к вам со своей собакой. Мой пес очень ухоженный и хорошо воспитан. Позвольте мне остановиться в номере вашего отеля вместе с ним?"

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

Из книги "Сервис Америки" (Карл Альбрехт и Рон Зенке)

пятница, 13 января 2012 г.

Цитата дня

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

четверг, 12 января 2012 г.

Windows Phone 7 и активация

Чуть выше я писал о том, что прошиваю свой HTC HD2 на WP7. В общем после нового года было время, перепрошил на версию посвежее и отправил письмо в Microsoft, с просьбой прислать/продать ключ активации.
Сегодня пришел ответ. В нем мне отказали прислали ключ активации. В связи с тем, что e-mail с которого пришло весьма странный по виду, и на него ответ "спасибо" отправлять смысла нет, то...
Большое спасибо Microsoft за предоставленный абсолютно бесплатно ключ активации для Windows Phone 7.

среда, 11 января 2012 г.

Цитата дня

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

вторник, 10 января 2012 г.

Разворачивание XAP-ов в SharePoint

Собственно, как я писал чуть раньше, занимаемся настройкой скриптов автоматизированного разворачивания. Одной из задач является выложить XAP-ы получившиеся в результате последнего удачного билда в SharePoint. На удивление скрипт оказался достаточно простым.

суббота, 7 января 2012 г.

Цитата дня

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

-- Роберт Хайнлайн, Достаточно времени для любви, 1973

Новогодние праздники

Съездили на новогодних праздниках в Москву, побродили по кремлю:

четверг, 5 января 2012 г.

Требуется программист на C#

Собственно на новый проект требуется программист(ы) C#.
Требования:
Умение программировать.
Постоянный рабочий день.
Работа в Калуге.

Дополнительным бонусом будет знание WPF/Silverlight, Entity Framework, MS SQL Server.

Зарплата 15000-35000 в зависимости от ваших навыков и знаний.

Если интересно, то:
писать: losev-al коммерческое_at yandex.ru
звонить: +7(910)707-80-10