<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Техно-логи &#187; Uncategorized</title>
	<atom:link href="http://www.kurdyukov.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kurdyukov.com</link>
	<description>Заметки о разработке и прочей жизни</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:34:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Software People 2011, день первый</title>
		<link>http://www.kurdyukov.com/2011/04/07/software-people-2011-day-one/</link>
		<comments>http://www.kurdyukov.com/2011/04/07/software-people-2011-day-one/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 18:46:34 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=134</guid>
		<description><![CDATA[Сегодня начала работу конференция Software People, на которой я, к счастью, присутствую. Изложу свои мысли на счет мероприятий, на которых был сам. Сильно вдаваться в подробности не буду, приведу личные впечатления. Нил Мейден &#8211; Инженерия требований как творческое решение проблем С самого начала стало ясно, что русское название не совсем верное, скорее это &#171;&#8230; творческое [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня начала работу конференция Software People, на которой я, к счастью, присутствую. Изложу свои мысли на счет мероприятий, на которых был сам. Сильно вдаваться в подробности не буду, приведу личные впечатления.<br />
<span id="more-134"></span></p>
<h1>Нил Мейден &#8211; Инженерия требований как творческое решение проблем</h1>
<p>С самого начала стало ясно, что русское название не совсем верное, скорее это &laquo;&#8230; творческое решение задач&raquo;.</p>
<p>Нил считает, что для множества проектов недостаточно просто расспросить пользователя, поскольку пользователь еще не знает, что именно ему надо. Часто есть только общая формулировка проблем. Но иногда и ее нет &#8211; скажем, когда разрабатывался iPad, примера такого устройства просто небыло. Была только смутная проблема, что &laquo;компы тяжелые и недолго работают от батареек&raquo; (ну или как-то так, я сам проблему придумал). Поэтому в процессе работы над требованиями надо привлекать подходы, характерные для творчества.</p>
<p>В качестве референтного творческого процесса он рассматривал CPS Method (Osborn 1953). И на нем построил собственный процесс. На входе процесса &#8211; люди и их знания, на выходе &#8211; скрипты и пользовательские сценарии для анализа и разработки.</p>
<p>Процесс был успешно применен в задаче проектирования новой системы управления аэропортами. В самом процессе проектирования принимала участие большая группа специалистов по транспорту, не только воздушному, но и наземному &#8211; автомобильные и железные дороги. В результате &#8211; свежие и эффективные решения.</p>
<p>Указал на важный пункт &#8211; техническим людям часто сложно участвовать в традиционном творческом процессе, поскольку человек больше сконцентрирован на декомпозиции, чем на синтезе. А именно синтез и аналогия считаются наиболее мощными инструментами творчества.</p>
<p>Еще полезный хинт &#8211; чтобы дискуссия и генерация идей не стагнировала, лучше спрашивать не &laquo;Что можно сделать?&raquo;, а &laquo;Что сделать сейчас сделать нельзя?&raquo;, а потом мысленно убрать ограничение из поставки задачи.</p>
<h1>Jutta Eckstein &#8211; Agile by Planning Continuously</h1>
<p>К сожалению, доклад был рассчитан на менее подготовленную аудиторию, из-за чего лично мне показалось, что я по сути не услышал ничего особенно нового.</p>
<p>Единственная моя заметка: очень важно, чтобы у user story присутствовали следующие пункты:</p>
<ul>
<li>явно обозначен business value</li>
<li>было четко определено кому именно сдавать результат</li>
<li>явно указывалось по какому критерию будет оцениваться результат</li>
</ul>
<p>Я сам иногда нарушаю эти правила, от чего возникают проблемы с некоторыми фичами.</p>
<h1>Lasse Koskela &#8211; Specification By Example</h1>
<p>Я не придавал какого-то специального значения примерам, тогда как на них можно рассчитывать как на существенный элемент в спецификации некоторых фич. Собственно, именно про это и был весь доклад. Докладчик приводил примеры различных способов спецификации на примерах, показал парочку диалогов с заказчиком по определению репрезентативных примеров.</p>
<p>Лично для меня было наиболее важным:</p>
<ul>
<li>В процессе формулировки примеров не надо уходить в делали &#8211; так всем станет скучно и процесс остановится</li>
<li>Всегда используйте реальные данные, а не абстрактных &laquo;Васей Пупкиных&raquo; &#8211; так вы избежите &laquo;шарообразных коней&raquo;</li>
</ul>
<p>Надо будет попробовать применять подход и начать спецификацию чего-нибудь заковыристого с примеров. Думаю, что и заказчикам так будет много понятнее. Это лучше, чем требовать &laquo;правильную спецификацию&raquo;.</p>
<h1>Юрий Шиляев &#8211; Программа обучения на 50 000 часов&#8230;</h1>
<p>Докладчик очень живо и интересно рассказал, как он построил образовательную программу в, пожалуй, крупнейшей в СНГ outsource компании EPAM. Они не только учат, но и меряют кто как учится. Тренера мотивированы, в т. ч. деньгами. У них в каждом офисе нашлось по человеку, которых был готов учить.</p>
<p>Обратил внимание, что в EPAM есть 2 иерархии &#8211; производственная (менеджер по производству) и кадровая (менеджер по кадрам). Очень напомнило параллельные иерархии на советских производствах &#8211; производственную и партийную.</p>
<h1>Ольга Павлова &#8211; Менеджеры и программисты: как перестать обижаться друг на друга?</h1>
<p>Интересный по сути, но не очень живой по подаче доклад про основы психологии программистов для менеджеров. Ольга считает, что менеджер &#8211; это человек, обеспечивающий комфортную работу команды. И немножко психолог &#8211; чтобы кого-то погладить, с чем-то поговорить в приватной обстановке. Полностью согласен.</p>
<p>После доклада рассказала о хорошем опыте организации контроля менеджерской работы на основе того, чтобы открыть все результаты всем сотрудникам. Результаты &#8211; это и код, и переписка. А потом &laquo;оком Саурона&raquo; смотреть на процесс и решать возникающие проблемы до того, как они начали существенно влиять на процесс и на заказчика. Очень разумное решение, на мой взгляд. Много лучше стандартных &laquo;корпоративных окопов&raquo;, которые можно встретить в множестве российских компаний.</p>
<p>PS. Считаю, что первый день прошел полезно, но несколько &laquo;жидковато&raquo; &#8211; к сожалению, именитые гест-спикеры часто надевали фуражку Капитана Очевидности. Завтра ожидается просто взрыв мозга.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2011/04/07/software-people-2011-day-one/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VS.NET: интеграция с ANTLR</title>
		<link>http://www.kurdyukov.com/2009/02/11/vsnet-antlr/</link>
		<comments>http://www.kurdyukov.com/2009/02/11/vsnet-antlr/#comments</comments>
		<pubDate>Wed, 11 Feb 2009 14:19:57 +0000</pubDate>
		<dc:creator>alik</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[antlr]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[vs.net]]></category>

		<guid isPermaLink="false">http://www.kurdyukov.com/?p=16</guid>
		<description><![CDATA[Для разработки парсеров искусственых языков (ИЯ) часто используются различные инструменты генерации. Один из таких инструментов &#8211; ANTLR. Я использовал ANTLR в одном из проектов для разбора 2 специальных ИЯ. Проект делался на C# в среде VS.NET 2008. Среда ANTLRWorks являлась хоть и работающим, но очень неудобным решением. Недостатки использования ANTLRWorks были в следующем: Две различные [...]]]></description>
			<content:encoded><![CDATA[<p>Для разработки парсеров искусственых языков (ИЯ) часто используются различные инструменты генерации. Один из таких инструментов &#8211; <a href="http://www.antlr.org/">ANTLR</a>. Я использовал ANTLR в одном из проектов для разбора 2 специальных ИЯ. Проект делался на C# в среде VS.NET 2008. Среда <a href="http://www.antlr.org/works/index.html">ANTLRWorks</a> являлась хоть и работающим, но очень неудобным решением.</p>
<p><span id="more-16"></span>Недостатки использования ANTLRWorks были в следующем:</p>
<ol>
<li>Две различные среды для редактирование кода одного проекта.</li>
<li>Необходимость вручную запускать генерацию кода лексера и парсера при изменении грамматики.</li>
</ol>
<p>Качественное решение должно быть избавлено от этих недостатков.</p>
<p>Для работы с грамматиками ANTLR можно использовать плагин <a href="http://wiki.pixelminegames.com/index.php?title=Tools:nFringe:Antlr">nFringe ANTLR</a>. Плагин распространяется бесплатно и легко устанавливается на VS.NET 2008.</p>
<p>Теперь надо добавить в проект возможность автоматической перегенерации грамматики в процессе компиляции проекта через VS.NET. Делаем следующее:</p>
<p><strong>Подготовка окружения:</strong></p>
<ol>
<li>Убедиться, что на вашем компьютере установлена Java. Достаточно ввести в командной строке &laquo;java -version&raquo;, чтобы это проверить. Если не установлена &#8211; установить.</li>
<li>Установить текущую версию инструмента antlr.jar, он будет использоваться для генерации кода. На момент написания заметки текущая стабильная версия &#8211; 3.1.1. Версия, которая не требует java, существует, но находится в состоянии beta.</li>
<li>Закрыть проект</li>
<li>Найти файл .csproj, который описывает проект</li>
<li>Открыть его на редактирование (например, через notepad)</li>
</ol>
<p><strong>Изменение проекта</strong></p>
<p>Вставить следующий текст перед закрывающим тегом Project:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p16code3'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p163"><td class="code" id="p16code3"><pre class="xml" style="font-family:monospace;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ItemGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Antlr3</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;SimpleCalc.g&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;OutputFiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>SimpleCalcLexer.cs;SimpleCalcParser.cs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/OutputFiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Antlr3<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Antlr3</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;BigCalc.g&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;OutputFiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>BigCalcLexer.cs;BigCalcParser.cs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/OutputFiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Antlr3<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ItemGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Target</span> <span style="color: #000066;">Name</span>=<span style="color: #ff0000;">&quot;GenerateAntlrCode&quot;</span> <span style="color: #000066;">Inputs</span>=<span style="color: #ff0000;">&quot;@(Antlr3)&quot;</span> <span style="color: #000066;">Outputs</span>=<span style="color: #ff0000;">&quot;%(Antlr3.OutputFiles)&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Exec</span> <span style="color: #000066;">Command</span>=<span style="color: #ff0000;">&quot;java -cp C:\Libs\ANTLR\antlr-3.1.1.jar org.antlr.Tool -message-format vs2005 @(Antlr3)&quot;</span> <span style="color: #000066;">Outputs</span>=<span style="color: #ff0000;">&quot;%(Antlr3.OutputFiles)&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;PropertyGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;BuildDependsOn<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>GenerateAntlrCode;$(BuildDependsOn)<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/BuildDependsOn<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/PropertyGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><strong>NB!</strong> Нужно заменить названия грамматик и названия выходных файлов, а также правильно указать местоположение файла antlr.jar.</p>
<p>Далее надо добавить зависимости лексера и парсера от грамматики. Находим упоминания файлов SimpleCalcLexer.cs и SimpleCalcParser.cs внутри тега ItemGroup, содержащего упоминания файла AssemblyInfo.cs. Если их нет, значит надо добавить. В результате упоминания этих файлов должны иметь вид:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p16code4'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p164"><td class="code" id="p16code4"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Compile</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;SimpleCalcLexer.cs&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;AutoGen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>True<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/AutoGen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DesignTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>True<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DesignTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DependentUpon<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>SimpleCalc.g<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DependentUpon<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Compile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Compile</span> <span style="color: #000066;">Include</span>=<span style="color: #ff0000;">&quot;SimpleCalcParser.cs&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;AutoGen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>True<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/AutoGen<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DesignTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>True<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DesignTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DependentUpon<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>SimpleCalc.g<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DependentUpon<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Compile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Теперь можно открыть проект и убедиться в том, что парсер и лексер будут перегенерированы.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kurdyukov.com/2009/02/11/vsnet-antlr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

