воскресенье, 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 позволит снизить барьеры между всеми теми людьми, которые участвуют в разработке ПО. Собственно все эти паттерны вчера на саммите и обсуждались. И если вы не были на этом мероприятии и не смотрели трансляцию, а тема вам покажется интересной, то, как только выложат записи, вы все это сможете посмотреть.