вторник, 30 декабря 2014 г.

Созданеи MSI для приложений .Net

В старых версиях Visual Studio был специальный тип проекта для создания инсталяторов. О том что на месте этого проекта сейчас и что делать, под катом.

вторник, 23 декабря 2014 г.

Борьба с очень длинными путями в SQL запросах

Вчера ко мне обратился коллега с проблемой, при выборке данных в View с другого сервера возникает ошибка "The object name 'AW1.SAR.ICM.DialerDB.dbo.ViewDialerReport1' contains more than the maximum number of prefixes. The maximum is 3." Что это за проблема и как с ней бороться под катом.

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

Эффект Зайгарник


Эффект, вынесенный в заголовок, был открыт Блюмой Вульфовной Зайгарник (известным советским психологом, основоположником отечественной паатапсихологии) не в тиши кабинетов, а в немецком кафе, куда она пришла пообедать со своим руководителем.

вторник, 25 ноября 2014 г.

Построение графов при помощи NodeXL

В связи с производственной необходимостью, возникла потребность в компоненте для построения графов. Сходу были найдены вот эти три проекта:
http://graphx.codeplex.com/
http://graphsharp.codeplex.com/
http://nodexl.codeplex.com/
Т.к. по картинкам мне больше понравился третий, то его и пробовал. Он оказался неплох. Поэтому под катом рассказ о том, как при помощи NodeXL строить графики в WPF приложениях.

среда, 19 ноября 2014 г.

Оценка требований по Кано

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



понедельник, 17 ноября 2014 г.

Цитата дня

Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует.
 -- Bjarne Stroustrup.
Да, это тот самый Бьёрн который придумал язык C++ и написал самый известный учебник по этому языку программирования.

пятница, 14 ноября 2014 г.

Взаимодействие двух окон между собой

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

четверг, 13 ноября 2014 г.

Ветки (Branch) и слияния (Merge) в TFS


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

четверг, 6 ноября 2014 г.

О тегах в TFS


С появлением этой замечательной штуки в TFS убедить себя добавить полей к Work Item-ам стало значительно труднее. Под катом небольшая история о том, какие теги мы используем и для чего.

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

Форумы MSDN

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

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

Цитата дня


Беда с программистами в том, что до самого конца неизвестно, что они, собственно, делают; а тогда уже поздно.
 -- Сеймур Крей

Да, это тот самый Крей, который разработал одноименный супер компьютер. Еще в его биографии есть вот такой занимательны факт:
В 1971 году руководство компании CDC потребовало от Крэя сократить на 10 % расходы своей лаборатории. В его лаборатории работало всего 40 инженеров, проект CDC 8600 требовал очень больших усилий, а сокращение расходов на 10 % означало увольнение 4 человек из команды. Чтобы не жертвовать никем, Сеймур Крэй сократил расходы за счёт себя и отказался от своей зарплаты. CDC платило ему минимальную зарплату, разрешённую по трудовому кодексу США, — 1,25 доллара в час.

среда, 29 октября 2014 г.

Scrum доска


Этот пост, попытка собрать в кучу мысли о Scrum доске. Поводом послужил вопрос нашей новой сотрудницы. Ей конечно ответил у реальной доски, ну а здесь, на будущее.
Под катом будет:
1. Почему нам не подошла доска из TFS
2. С чего все начиналось
3. Как выглядит сейчас

понедельник, 27 октября 2014 г.

Создание объектов из XAML

Возник на форумах MSDN вопрос, как привязать команду к контекстному меню. У автора небольшое недопонимание Binding-а, но не суть. Предлагаю посмотреть, как можно создавать объекты их XAML и использовать их, например, как источники в Binding.

вторник, 21 октября 2014 г.

Цитата дня


Урок, который я извлек и которому следую всю жизнь, состоял в том, что надо пытаться, и пытаться, и опять пытаться — но никогда не сдаваться!
 -- Ричард Бренсон

понедельник, 20 октября 2014 г.

Favicon

Что-то тут озадачился, как сделать Favicon для сайта, оказывается элементарно. Просто нужно файл с иконкой кинуть в центральный каталог сайта и на страничках в блок Head нужно добавить два Link-а:
<link rel="shortcut icon" href="http://адрес_сайта/favicon.ico"type="image/x-icon" />
<link rel="icon" href="http://адрес_сайта/favicon.ico"type="image/x-icon" />
Все.

среда, 15 октября 2014 г.

Web Developers Day 14.04.2014


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

понедельник, 13 октября 2014 г.

Драйверы и разработка программного обеспечения


Эта статья подготовлена для блогов журнала PCWeek.

Работа стремится занять все время, отпущенное на нее.
Закон Паркинсона.

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

понедельник, 6 октября 2014 г.

Цитата дня


В теории, теория и практика неразделимы. На практике это не так.
 -- Yoggi Berra
Кстати, загадка загадок, а почему к этой цитате, такая картинка? Под катом есть ответ...

пятница, 3 октября 2014 г.

Ввод данных и их проверка на уровне Binding

Очередной вопрос на MSDN. Стоит задача при редактировании записи сначала проверить данные, а только потом применить изменения к объекту модели. Я всю конструкцию MVVM воспроизводить не буду и покажу на примере в котором будет только один объект модели, а все остальное будет в лоб. Начнем.

четверг, 25 сентября 2014 г.

Строили два товарища


История от начала до конца выдумана, все совпадения с реальностью случайны.

Два друга детства Сергей Водопадов и Антон Гибких мало того, что работали в одной организации, так еще и участки для строительства дома купили по соседству. Строиться начать решили в апреле.

вторник, 23 сентября 2014 г.

Цитата дня

Математики думают, что Бог в уравнениях, нейрологи уверены, что Бог в мозге, а программисты уверены, что Бог – один из них.
  -- Морган Фримен

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

Парадигма Кеневина и разработка программного обеспечения

Эта статья подготовлена для блогов журнала PCWeek.
Теория запутанности (сложности), предложенная Дейвом Сноудоном в начале двадцать первого века, несмотря на свою молодость, уже нашла применение в кибернетике, менеджменте и биологии. Сегодня я предлагаю обсудить парадигму Кеневина в применении к разработке программного обеспечения.

среда, 3 сентября 2014 г.

Мнение о книге Максима Батырова "45 татуировок менеджера"


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

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

О правилах и специфичности разработки программного обеспечения

Эта статья подготовлена для блогов журнала PCWeek.
Разработка программного обеспечения как вид человеческой деятельности появилась достаточно недавно. Возможно, в следствие этого, а может быть, по другим причинам очень многие верят в то, что ее «аршином общим не измерить, у ней особенная стать» и далее по тексту. Вот об этом предлагаю сегодня и поговорить.

пятница, 29 августа 2014 г.

Забавный баг при использовании Nuget Packages

Ранее, я уже писал про Nuget Packages. Сегодня С Виталиком наблюдали забавный баг. Есть две сборки: А и Б. Причем Б ссылается на А. С обычными ссылками, если сборка А ссылается на Сборку В, то и сборка Б должна ссылаться на сборку В. Но Nuget-ы не такие. В сборке А была ссылка на упоминавшийся в предыдущей статье NLog. В сборке Б такой ссылки не было, но это ведь не обычные ссылки, поэтому все работало. Потом понадобилась ссылка на NLog в сборке Б и его тоже добавили при помощи Nuget, вот только версия его оказалась выше. Все собирается, запускается, но при попытке вызвать из сборки Б метод сборки А все замечательно падает. Ну и картинка для наглядности.
Самое обидное, что все падало на вызове конструктора с неинформативной ошибкой вида: конструктор не может быть вызван...

среда, 30 июля 2014 г.

Об эффективности в ущерб эффективности

Эта статья подготовлена для блогов журнала PCWeek.
Еще в прошлом, двадцатом, веке крупные неконвейерные производства столкнулись с проблемой несбалансированности ресурсов. Поясню на примере. Если у нас конвейер, и каждая операция на нем занимает 15 секунд, то все хорошо. Если операция занимает 15 плюс-минус 10 секунд, то непрерывного конвейера не получается. Либо мы все настраиваем с учетом самой медленной операции, либо конвейер разваливается. В большинстве случаев замедлить конвейер до самой медленной операции неэффективно, поэтому появилось такое понятие, как рабочие центры.  В первом рабочем центре обрабатывается партия из тысячи изделий, потом они передаются на второй и т.д. Очень быстро возникла ситуация, когда перед «медленными» рабочими центрами стал образовываться вал партий. Одним из первых предприятий, которое предложило решение этой проблемы, была Тайота с методологией Lean. В Советском Союзе в 1964 году вышла книга Родова и Крутинского «План, поток, ритм». Основная идея «борьбы» достаточно проста: эффективность всего производства определяется эффективностью самого медленного рабочего центра. Э. Голдратт такой рабочий центр называет ограничением (не путать с бутылочным горлышком - bottle neck). Вводная часть, пожалуй, уже сильно затянулась, поэтому предлагаю перейти непосредственно к ИТ.

пятница, 25 июля 2014 г.

C# 6.0

Ну что, вот и C# 6.0 не за горами. Судя по этой статье на MSDN кроме расширения async/await при обработке ошибок, все остальное синтаксический сахар. На мой взгляд, в некоторых случаях весьма не удачный. Расширяющие методы, это уже магия, а вот доступ к статическим свойствам и метода вообще по одному имени - жесть. Надеюсь весь этот сахар не приведет к ситуации:
Поживем, увидим... 

Цитата дня


В теории нет разницы между практикой и теорией. Но на практике она есть.
 -- Jan van de Snepscheut

среда, 16 июля 2014 г.

А чем вы готовы пожертвовать?

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

пятница, 27 июня 2014 г.

Зачем мы тратим время на оценки?

Эта статья подготовлена для блогов журнала PCWeek.
В современных технологиях разработки программного обеспечения одним из основных камней преткновения является оценка трудоемкости выполнения задач. Ошибка при оценке может достигать нескольких раз. Именно это демонстрирует конус неопределенности, предложенный Барри Бемом в 1981 году (изображение с сайта http://infostart.ru/):

четверг, 5 июня 2014 г.

О ObjectContext и DbContext в одном проекте

Столкнулся с забавной ситуацией. Если в рамках одного проекта используются две Entity модели, причем одна из них потомок ObjectContext, а вторая DbContext, то при попытке загрузить сущности в потомок DbContext падает ошибка "Не найден тип концептуальной модели для ..." где вместо точек стоит сущность из другого контекста. По английски, эта ошибка звучит так "Could not find the conceptual model type for". Под катом, как с этим бороться.

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

Про ограничения

Без ограничения сферы деятельности нельзя ни в одной области совершить ничего замечательного.
 -- Карл Маркс

И ведь действительно, только когда мы сталкиваемся с преградами, мы начинаем включать думалку. Пока мы в зоне комфорта, разум спит и действуют рефлексы. На эту тему много всего написано. Например, в статье Джона Лерера "Need to Create? Get a Constraint" делается вывод:

понедельник, 5 мая 2014 г.

Век живи, век учись

Сегодня с удивлением узнал, что в Skype кроме скрытых смайлов и кошки (нажмите в строке ввода текста одновременно три буквенных клавиши, например, cat), есть еще и команды чата.
Например, есть очень полезная команда: /alertsoff. После ввода которой не будет выскакивать нотификация о новых сообщениях в чате. А после этого можно воспользоваться командой /alertson [текст]. И тогда нотификация будет появляться только если в чате кто-то набрал сообщение с указанным текстом. Полный список команд можно получить при помощи команды /help.

среда, 30 апреля 2014 г.

О подземельях и драконах

На DevCon-е в 2012 году была показана весьма забавная модификация для шаблона Scrum. Два шутника поменяли Требования на Подземелья, Задачи на Квесты, Баги на Драконов:
Причем даже статусы у элементов не стандартные:

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

понедельник, 28 апреля 2014 г.

Правила в виде зарифмованных фраз

-кое, -либо, -то, -нибудь - черточку не позабудь. Все эти частицы пишутся через дефис.

Я, как постоянные читатели уже обратили внимание, по русски пишу с ашипками. Вот всякие считалки и поговорки буду собирать у себя в блоге. Ну а вдруг, мне это поможет. Эту поговорку стырил у Тёмы.

понедельник, 21 апреля 2014 г.

Цитата дня

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

Странные взаимосвязи

Подключил МФУ к Windows Server 2008. Принтер завелся с разу, а вот сканер ни в какую. Не вижу говорит TWAIN и все. Вот как можно догадаться, что для того чтобы заработал TWAIN нужно установить фичу "Возможности рабочего стола"? А?

четверг, 17 апреля 2014 г.

Цикл Деминга (PDCA)

"Есть у революции начало, нет у революции конца!"
 -- Ю. С. Каменецкий

На одной из своих презентаций Деминг нарисовал цикл (который он назвал циклом Шухарта) состоящий из четырех шагов: Plan-Do-Check-Act (PCDA), ну или по русски: Планируй-Выполняй-Проверяй-Принимай решение.
Этот цикл получил широкое распространение и рассматривается в таких стандартах как ISO 9000 и ISO 20000. Этакий стандарт для проведения непрерывных улучшений. Под катом я постараюсь систематизировать, в первую очередь для себя, что вкладывается в понятие цикла PDCA. Но если есть желание почитать мои мысли по этому поводу или подискутировать, то прошу.

четверг, 27 февраля 2014 г.

Цитата дня

Некто пожелал, чтобы компьютером можно было пользоваться также легко как и телефоном. Мечта сбылась: я уже не могу разобраться, как пользоваться телефоном.
 -- B. Stroustrup

Доступ к элементам расположенным внутри ControlTemplate

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

среда, 26 февраля 2014 г.

Куда ставиться ClickOnce

Столкнулся с прикольной проблемой. У пользователя во время работы с приложением, развернутым по ClickOnce, отключили свет. После этого приложение перестало запускаться. Удаление приложения и повторное развертывание не помогло.
Так вот, приложения ClickOnce устанавливаются в папку со странным именем по пути:
C:\Users\<Имя_пользователя>\AppData\Local\Apps\2.0\
Так вот, проблему полечило удаление приложения и этих странных папок. Вот, пусть здесь лежит, вдруг мне или кому-нибудь еще пригодится.

вторник, 18 февраля 2014 г.

4 заповеди аналитика

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

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

Вторая заповедь аналитика.
Сначала - варианты использования. Потом - постановки задач.

Третья заповедь аналитика
Проверки требований (How to demo) пишутся одновременно с требованиями.

(с) Наталья Желнова

Стырил здесь.
 

Год только начался, а вы уже чувствуете себе посиневшей загнанной лошадью?

Это наглая реклама вебинара с одноименным названием, один из докладчиков которого cartmendum. Дальше от организаторов.
---
О чем будем говорить:
  • Почему эффективными мечтают стать только те, кто уже капитально
    зае…затр… загнан?
  • Где в нашем расписании прячутся самые большие потери времени и эффективности?
  • Почему методики личной эффективности нужно выбирать “под себя”?
  • Как не отвлекаться на всякую постороннюю жизнь и педалить нужные задачи?
  • Когда забить на работу и получать кайф от “посторонней жизни”?
  • Тактика и стратегия управления маленькими частями времени
  • Почему у меня не получается быть мегапродуктивным, хотя я прочитал 18 книг и прослушал 37 докладов по этой теме?
  • Почему работать неэффективно (медленно, слабопродуктивно и с долгой настройкой на задачу) бывает лучше чем работать эффективно? (trololo detected)

Вебинар пройдет во вторник 25 февраля 2014 года, в 20:00 по Москве.
Онлайн посещение вебинара бесплатно! Зарегистрироваться на онлайн-вебинар можно тут. Регистрация обязательна, так как количество мест ограничено.

3 простых шага чтобы попасть на вебинар:


  1. Поделиться этой страницей у себя на страничке в социальных сетях: Facebook, ВКонтакте, GooglePlus, Twitter
  2. В форме регистрации оставить свой емейл (туда в день вебинара придет приглашение) и ссылку на то, что вы поделились информацией о вебинаре (ссылку на ваш пост в вашей социальной сети о вебинаре).
  3. Быть у компьютера 25 февраля в 20:00 МСК.
Количество онлайн пользователей ограничено возможностями площадки!

вторник, 28 января 2014 г.

Цитата дня

Лично я люблю землянику со сливками, но рыба почему-то предпочитает червяков. Вот почему, когда я иду на рыбалку, я думаю не о том, что люблю я, а о том, что любит рыба.
  -- Дейл Карнеги

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

Риски при разработке программного обеспечения

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