tag:blogger.com,1999:blog-58253733764671241872024-02-07T09:31:03.780+03:00Dunemaster's IT Blog.NET MattersUnknownnoreply@blogger.comBlogger13125tag:blogger.com,1999:blog-5825373376467124187.post-85799570562375409372013-08-16T18:22:00.001+04:002013-08-16T18:23:45.701+04:00Ragel + Bison Example<div dir="ltr" style="text-align: left;" trbidi="on">
For the last two days I have been struggling with various lexer/parser combinations.<br />
<br />
<b>Classical flex + (win)bison combination</b><br />
As flex and bison were designed to work together integration, is not a problem. There were some issues while compiling (and linking) generated code with Visual Studio, but there is a lot of information on the web (namely, on StackOverflow) and the documentation is rather good, some I did not spend a lot of time on them.
I already was going to write some code beyond basics, when I realized, that flex does not have unicode support.
So, I began searching the web for alternatives and found<br />
<br />
<b>Quex</b><br />
Next I attempted to use <a href="http://quex.sourceforge.net/">Quex</a>, which boasts full Unicode support, but I resigned after spending a day struggling with bison integration issues.<br />
<br />
<b><a href="http://www.complang.org/ragel/">Ragel</a></b><br />
So I ended up with Ragel. It can be integrated with bison, and there is a tutorial available:
<a href="http://zusatz.wordpress.com/2012/07/08/connecting-ragel-to-bison-in-c/">http://zusatz.wordpress.com/2012/07/08/connecting-ragel-to-bison-in-c/</a>
. Unfortunately, the tutorial does not come with downloadable code, so I created an example from it and hosted it on<a href="https://ragelbison.codeplex.com/"> CodePlex</a>. You will need VS2012, win_bison and ragel to build it.<br />
<br />
The sample also includes very basic support for Russian UTF-16 characters.<br />
<br />
<b>Tools worth noting</b><br />
<b> </b>I also considered <a href="http://www.antlr.org/">antlr</a> and <a href="http://boost-spirit.com/home/">boost::spirit</a>.<br />
<br />
<b>Additional links:</b>
<a href="http://www.gnu.org/software/bison/manual/bison.html">Bison documentation</a>
<a href="https://sourceforge.net/projects/winflexbison/">WinBison download</a>
<a href="https://www.ibm.com/developerworks/ru/edu/au-lexyacc/section2.html">IBM tutorial on lex+yacc</a>
<
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-6311966150925091952011-03-31T20:37:00.003+04:002011-03-31T22:46:01.787+04:00Дао программиста - про отладчикКогда я только начинал программировать, в школе, в институте, даже первые годы в CustIS, я постоянно пользовался отладчиком. Программа начинала работать только после нескольких сеансов ловли ошибок при помощи дебаггера (а до этого - нескольких попыток заставить скомпилироваться).
Но потихоньку я научился писать по-другому. Сначала - так, чтобы не пришлось исправлять синтаксические ошибки. Потом - обходиться без длительных сеансов отладки. Конечно, я не пишу сразу все правильно, но то, что и того и другого стало на порядок меньше - могу сказать точно.
Что изменилось? Ну во-первых, я начал больше думать, перед тем, как бросаться кодировать) Во-вторых многие ошибки получается отловить (в т.ч. понять источник проблемы) при помощи тестов, а не отладчика. Я далеко не всегда практикую TDD (даже сильно реже, чем считаю применимым), но даже тесты, написанные после кода, сильно помогают.
Можно сказать, что сейчас я воспринимаю отладчик не как инструмент ежедневной работы, а скорее как помощника для исследования чужого кода.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-25465685848349020692010-01-19T14:59:00.000+03:002010-01-19T15:00:10.180+03:00<a href="http://www.start4you.ru/test/3" title="тест Тест Белбина"><img border="0" src="http://img.start4you.ru/attemptImage/10078493" alt="тест Тест Белбина" title="тест Тест Белбина"></a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-79827795509302490702009-12-11T11:51:00.003+03:002009-12-11T11:57:12.274+03:00Отчет с конференции AgileDays'09<style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:left; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast;} h2 {mso-style-priority:9; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Заголовок 2 Знак"; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; text-align:left; mso-pagination:widow-orphan; mso-outline-level:2; font-size:18.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; font-weight:bold;} h3 {mso-style-priority:9; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Заголовок 3 Знак"; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; text-align:left; mso-pagination:widow-orphan; mso-outline-level:3; font-size:13.5pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; font-weight:bold;} h4 {mso-style-priority:9; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"Заголовок 4 Знак"; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; text-align:left; mso-pagination:widow-orphan; mso-outline-level:4; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; font-weight:bold;} a:link, span.MsoHyperlink {mso-style-noshow:yes; mso-style-priority:99; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; text-align:justify; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Arial","sans-serif"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast;} pre {mso-style-noshow:yes; mso-style-priority:99; mso-style-link:"Стандартный HTML Знак"; margin:0cm; margin-bottom:.0001pt; text-align:left; mso-pagination:widow-orphan; tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; font-size:10.0pt; font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast;} span.2 {mso-style-name:"Заголовок 2 Знак"; mso-style-priority:9; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Заголовок 2"; mso-ansi-font-size:18.0pt; mso-bidi-font-size:18.0pt; font-family:"Arial","sans-serif"; mso-ascii-font-family:Arial; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; font-weight:bold;} span.3 {mso-style-name:"Заголовок 3 Знак"; mso-style-priority:9; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Заголовок 3"; mso-ansi-font-size:13.5pt; mso-bidi-font-size:13.5pt; font-family:"Arial","sans-serif"; mso-ascii-font-family:Arial; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; font-weight:bold;} span.4 {mso-style-name:"Заголовок 4 Знак"; mso-style-priority:9; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Заголовок 4"; mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; font-family:"Arial","sans-serif"; mso-ascii-font-family:Arial; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; font-weight:bold;} span.tocnumber {mso-style-name:tocnumber; mso-style-unhide:no;} span.toctext {mso-style-name:toctext; mso-style-unhide:no;} span.mw-headline {mso-style-name:mw-headline; mso-style-unhide:no;} span.HTML {mso-style-name:"Стандартный HTML Знак"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Стандартный HTML"; font-family:"Courier New"; mso-ascii-font-family:"Courier New"; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:"Courier New"; mso-bidi-font-family:"Courier New";} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page Section1 {size:595.3pt 841.9pt; margin:2.0cm 42.5pt 2.0cm 3.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:53285194; mso-list-template-ids:-501716806;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l1 {mso-list-id:201210590; mso-list-template-ids:858022830;} @list l1:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l2 {mso-list-id:327680556; mso-list-template-ids:637404748;} @list l2:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l3 {mso-list-id:480079642; mso-list-template-ids:-307225802;} @list l3:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4 {mso-list-id:708994056; mso-list-template-ids:1444439228;} @list l4:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l5 {mso-list-id:738601277; mso-list-template-ids:-1890164956;} @list l5:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l6 {mso-list-id:987251205; mso-list-template-ids:209481336;} @list l6:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l7 {mso-list-id:1090782483; mso-list-template-ids:-1841291010;} @list l7:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l8 {mso-list-id:1416513430; mso-list-template-ids:722737434;} @list l9 {mso-list-id:1910114971; mso-list-template-ids:1004859254;} @list l9:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l4:level1 lfo1 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l4:level1 lfo2 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l4:level2 lfo2 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:72.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l3:level1 lfo4 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l5:level1 lfo5 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l6:level1 lfo6 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l7:level1 lfo7 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l2:level1 lfo8 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l9:level1 lfo9 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level1 lfo10 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l1:level1 lfo11 {mso-level-start-at:0; mso-level-numbering:continue; mso-level-text:; mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt; mso-ansi-font-size:10.0pt; font-family:Wingdings;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Обычная таблица"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";} </style> <![endif]--> <p>
Конференция проходила 9 декабря 2009 года в бизнес-центре ГУУ (Выхино) </p> <p><a href="http://www.agiledays.ru/" title="http://www.agiledays.ru">http://www.agiledays.ru</a> </p> <p>Общее впечатление хорошее, правда наиболее интересными оказались доклады к Agile относящиеся косвенно. </p><h2><span style=""><span class="mw-headline">Agile @ Intel</span><o:p></o:p></span></h2> <p><b>Евгений Сорокин, Антон Бевзюк (Intel)</b> Два Team Lead'а из Intel рассказывали про свой Agile в Нижнем Новгороде. Они делают большое внутреннее финансовое приложение для маркетинга, распределенная команда: программисты в НН (немножко в Индии), аналитики в Англии, бизнес-пользователи в Штатах. <o:p></o:p></p> <h3><a name=".D0.9A.D0.B0.D0.BA_.D1.83_.D0.BD.D0.B8.D" id=".D0.9A.D0.B0.D0.BA_.D1.83_.D0.BD.D0.B8.D1.85"></a><span class="mw-headline"><span style="">Как у них</span></span><span style=""><o:p></o:p></span></h3> <p>К Нижнем на их проекте работает сейчас 12 разработчиков, изначально было 4, в самые напряженные моменты привлекалось до 20. Утверждают, что тестировщиков нет вообще. Agile они начинали с XP(в 2002 году), в с самом книжном его варианте - используют все практики, за исключением Customer-on-Site, в силу удаленность кастомера). Очень сильно форсируют парное программирование - у программиста есть лично рабочее место, но весь код пишется вдвоем, за специальными станциями, с двумя комплектами мышей, клавиатур и мониторов. Парные сессии продолжаются по 1.5-2 часа, каждые 5-20 минут ведущий в паре меняется. Разбиение происходит на standup, который случается в 9-15 ( не работать нам в Intel:))) </p> <p>В 2008 году у них появился Scrum. Доска у них - (New, WIP, Completed, Support/Testing)+ бумажки-идеи. Работу делят опять же, классически - на user stories, которые делятся на конкретные tasks (объемом работы не более одного дня). При этом добавляется новая роль - Story Owner, программист отвечающий за данную историю целиком. Также, с внедрением Kanban в 2009 году на доске появились Kanban-лимиты. </p> <p>Заметные отклонения от книжных описаний ( к которым в Intel явно тяготеют) у них случилось только в области планирования. Во-первых, они не планируют итерацию, оценка происходит по ходу. Во-вторых оцениваются не конкретные задачи, а User Stories целиком, причем оценка эволюционировала от идеальных часов через sp к системе (просто-средне-сложно). Также, при планировании в самом начале разработке, у них получилось более 500 user stories, планирование вылилось в кошмар, что научило оценивать более крупными "функциональными" блоками. <o:p></o:p></p> <h3><a name=".D0.9F.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0." id=".D0.9F.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B"></a><span class="mw-headline"><span style="">Проблемы</span></span><span style=""><o:p></o:p></span></h3> <p>Немножко рассказали про проблемы, с которыми им довелось столкнуться, несмотря на общий радужный тон выступления. </p> <ol start="1" type="1"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Долгосрочно планирование. Они это тоже не умеют. В их проекте был фиксированный срок старта (правда, и фиксированный объем работ), рассчитать ресурсы они не сумели, пришлось срочно привлекать помощь из штатов. Правда, измеряя velocity получилось понять это на раннем этапе и не сорвать проект. <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Полный Backlog сразу составить не получилось - пришлось делить на большие блоки и уточнять по ходу. По-моему идея была изначально безнадежная) <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Распределенная команда - разный уровень, разные критерии оценки, плохо передаются знания. Методы борьбы - стандартные: строго общий бэклог, личное общение <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Новички. Команда начиналась с 4 человек, еще 8 набрали по ходу. Кажется студентов) Критерием отбора было знание основ ООП, а не опыт или знание .Net/C#. Говорят, что за 3 месяца новичок превращается в полноценного сотрудника, критерий - можно бывших новичков сажать в пару. <o:p></o:p></span></li></ol> <h3><a name="Fun" id="Fun"></a><span class="mw-headline"><span style="">Fun</span></span><span style=""><o:p></o:p></span></h3> <p>В Intel есть немало способов скрасить серые будни за написанием тупого кода (почему тупого, см. последний доклад). </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Каска-чекинка (кто в каске, тот и коммитит, во избежания столкновений) <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Сокровища('ништяки' по выражению Юли Вяцковой) и проклятья. На standup каждый случайным образом получает бонус( типа права выбирать любого в пару) и обязанность (типа протереть мониторы или убрать warning'и компилятора) <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Сердечки - на специальной доске каждый член команды получает розовые-розовые сердечки за что-то общеполезное. Курс сокровищ к сердечкам они не сообшили) <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Кондуктор - звучит сирена, и чувак с дыроколом идет пробивать бумажки. Количество дырочек на бумажке - ее lead time. Все бегут и перевешивают свои бумажки <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >И общая зарядка) <o:p></o:p></span></li></ul> <h2><a name=".D0.A3.D0.B2.D0.B8.D0.B4.D0.B5.D1.82.D1." id=".D0.A3.D0.B2.D0.B8.D0.B4.D0.B5.D1.82.D1.8C_.D0.BB.D0.B5.D1.81_.D0.B7.D0.B0_.D0.B4.D0.B5.D1.80.D0.B5.D0.B2.D1.8C.D1.8F.D0.BC.D0.B8"></a><span class="mw-headline"><span style="">Увидеть лес за деревьями</span></span><span style=""><o:p></o:p></span></h2> <p><b>Стас Фомин (Заказные ИнформСистемы)</b> </p> <p>Короткий доклад Стаса, посвященный визуализации хода процесса разработки. </p> <p>Стас показал две модели. Одну их них, Code Swarm мы уже видели (если не видели - идите <a href="http://team.custis.ru/2009/09/agile.html" title="http://team.custis.ru/2009/09/agile.html">смотрите(в конце поста)</a>) - в его основе лежит гравитационная модель, где разработчики притягивают файлы, с которыми работают. </p> <p>Вторая модель "Пчелы и цветы" еще красивее - проект визуализируется в виде цветка с каталогами-соцветиями и файлами-лепестками(или тычинками), а разработчики летают и опыляют их. </p> <p>Также Стас анонсировал предварительную версию фреймворка, позволяющего быстро делать такое видео, у меня правда он работать не захотел. Смотреть можно вот <a href="http://lib.custis.ru/index.php/ShowTeamWork" title="ShowTeamWork">здесь</a><a href="http://lib.custis.ru/index.php/ShowTeamWork">. </a><o:p></o:p></p> <h2><a name="8-.D0.B1.D0.B8.D1.82.D0.BD.D1.8B.D0.B9_S" id="8-.D0.B1.D0.B8.D1.82.D0.BD.D1.8B.D0.B9_Scrum"></a><span class="mw-headline"><span style="">8-битный Scrum</span></span><span style=""><o:p></o:p></span></h2> <p><b>Алексей Омельянчук (Сигма-ИС)</b> </p> <p>Интересный доклад, в первую очередь тем, что его читал человек из очень отдаленной от нас области написания логики для контроллеров пожарных датчиков. Мужчина уже в летах, но очень живой, после доклада даже стало приятно - как-то что-то в нашей промышленности шевелится. </p> <p>Комманда его прошла путь от производственного предприятия работающего на МО с жесктим Rational Unified Process, через крупного частного производителя контроллеров (крупнейший поставщик АвтоВаза, 2 млн. штук в год) до software-предприятия, занимающегося, в основном, программированием, а не железом. На каждом этапе добавлялись новый практики. </p> <p>Что используются </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >спринты, ограниченные во времени <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >демо (по признанию докладчика практика оказалась самой полезной) <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >планирование. Причем, планируют 120-140% от запаса времени, с разделением на обязательное и бонусы <o:p></o:p></span></li></ul> <p>Длительность спринта составляет 1 месяц, что было связано со сложившимся на предприятии укладом. Также был "мегаспринт" - 3 месяцы. Эта цифра обусловлена </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >обновлением реального железа <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >высокое руководство имеет возможность приезжать на демо с такой периодичностью. <o:p></o:p></span></li></ul> <p>Еще одна особенность - сборные команды. Каждый проект ведется максимум двумя людьми (большему количеству просто нечего делать на устройстве, куда влезает 500 строк ассемблера), команды объединяют нескоько проектов. Ни о какой кросс-функциональности речь не идет(одна настройка рабочего места занимает день-два), на таким образом все-таки немого смягчаются риски того, что в случае болезни одного человека, его будет некем заменить. Scrum-митинги из-за этой специфики проходят на по 15 минут раз в день, а большее время раз в неделю, чтобы было время въехать в чужую предметную область. На планирование специализация накладывает также глубокий отпечаток - приходится выделять человеческие ресурсы, которые могут решить данную задачу и планировать время каждого отдельно. <o:p></o:p></p> <h2><a name="SOLID-.D0.BF.D1.80.D0.B8.D0.BD.D1.86.D0." id="SOLID-.D0.BF.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF.D1.8B_OO-.D0.B4.D0.B8.D0.B7.D0.B0.D0.B9.D0.BD.D0.B0"></a><span class="mw-headline"><span style="">SOLID-принципы OO-дизайна</span></span><span style=""><o:p></o:p></span></h2> <p><b>Дмитрий Кандалов (Deutsche Bank)</b> </p> <p>Java-разработчик из Deutsche Bank рассказывал про очередной набор принципов OO-дизайна. Никаких откровений, но выучить названия и помнить о сути полезно. Рассказ велся по этой <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod" title="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">статье</a>. Докладчик разумно оговорился, что принципы надо применять по возможности, principles != rules. </p> <p><a href="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx" title="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx">Демотиваторы </a>в тему </p> <p>SOLID - это аббревиатура </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Single Reponsibility Principle - каждый класс должен иметь один смысл, делать что-то одно. Например описание книги не должно вести историю продаж этой книги. <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >The Open Closed Principle - создание потомков класса должно расширять поведение базового класс, а не требовать его изменения. <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >The Liskov Substitution Principle - обратный к предыдущему. Во всех случаяж должна быть возможность подставить объект подкласс вместо суперкласса. <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >The Interface Segregation Principle - принцип разделения интерфейсов. Если у Вас все-таки получился сложный многофункциональный объект, для каждого выделенного случая его использования выделите отдельный интерфейс. <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >The Dependency Inversion Principle - Принцип обращения зависимости. Подсистемы верхнего уровня абстракции не должны зависеть от подсистем нижнего уровня, а предоставлять им интерфейс, который они должны реализовывать. Например, программа отправки почты не должна зависеть от сетевого протокола нижнего уровня, а, вызывать его функции через интерфейс, который является частью описания модуля верхнего уровня <o:p></o:p></span></li></ul> <h2><a name="MS_Team_System_vs_IBM_Rational_Jazz:_.D0" id="MS_Team_System_vs_IBM_Rational_Jazz:_.D0.BB.D1.83.D1.87.D1.88.D0.B8.D0.B9_.D0.B8.D0.BD.D1.81.D1.82.D1.80.D1.83.D0.BC.D0.B5.D0.BD.D1.82_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D1.87.D0.B8.D0.BA.D0.B0"></a><span class="mw-headline"><span style="">MS Team System vs IBM Rational Jazz: лучший инструмент разработчика</span></span><span style=""><o:p></o:p></span></h2> <p><b>Евгений Злобин (Microsoft) и Тимур Маркунин (IBM)</b> </p> <p>Два сейла не очень убедительно продавали свои продукты. IBM выглядел лучше, но его все равно никто не купит. Рассказ про TeamSystem выглядел особенно бледно - про нужные и полезные нововведения, которые появились в 2010 версии ничего сказано не было. Но зато про них рассказывали месяц назад на Платформе, можно почитать <a href="http://www.blogger.com/wiki/index.php/%D0%9E%D1%82%D1%87%D0%B5%D1%82_%D1%81_%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8_%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0_2010#_Visual_Studio_Team_System_2010_.E2.80.94_.D0.BD.D0.BE.D0.B2.D1.8B.D0.B5_.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D0.B4.D0.BB.D1.8F_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D0.BE.D0.B9_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.8" title="Отчет с конференции платформа 2010">здесь</a>. <o:p></o:p></p> <h2><a name="DDD.2BTDD.2BMVP.2BDSL.2BGof.2BPoEAA.3DLo" id="DDD.2BTDD.2BMVP.2BDSL.2BGof.2BPoEAA.3DLove.21"></a><span class="mw-headline"><span style="">DDD+TDD+MVP+DSL+Gof+PoEAA=Love!</span></span><span style=""><o:p></o:p></span></h2> <p><b>Евгений Сорокин, Антон Бевзюк (Intel)</b> </p> <p>Доклад оставил глубокое впечатление, причем, знаю, не только у меня. Те же докладчики рассказывали о том же приложении, что и на первом докладе, но с акцентом на технические приемы и практики. Размер приложения можно приблизительно оценить по следующим цифрам: 140k строк кода, из них 100k - тесты, 20 экранов, 12 разработчиков, 2 года, 50 человеко-лет. <o:p></o:p></p> <h4><a name=".D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D1." id=".D0.A2.D0.B5.D1.81.D1.82.D0.B8.D1.80.D1.83.D0.B5.D0.BC.D1.8B.D0.B5_.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.8B"></a><span class="mw-headline"><span style="">Тестируемые интерфейсы</span></span><span style=""><o:p></o:p></span></h4> <p>Было рассказано о двух паттернах, которые позволяют строить тестируемые интерфейсы, а также о том как их тестируют. Это <a href="http://en.wikipedia.org/wiki/Model-view-presenter" title="http://en.wikipedia.org/wiki/Model-view-presenter">MVP</a>(Model-View-Presenter), используется для WinForms и веб-интерфейсов приложения и <a href="http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx" title="http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx">MVVM</a> (Model-Vew-ViewModel) </p> <p>Рассказ про тестирование поразил - пишутся авто тесты в том числе и на Binding данных к контролам. Выглядит страшновато - делают binding в дизайнере, потом через Reflection пишут код (по сути, тоже самое), который его проверяет <o:p></o:p></p> <h4><a name="Domain_Driven_Design_.D0.B8__.D1.82.D0.B" id="Domain_Driven_Design_.D0.B8__.D1.82.D0.B5.D1.81.D1.82.D0.B8.D1.80.D1.83.D0.B5.D0.BC.D0.BE.D1.81.D1.82.D1.8C_.D0.B2.D1.81.D0.B5.D0.B3.D0.BE"></a><span class="mw-headline"><span style="">Domain Driven Design и тестируемость всего</span></span><span style=""><o:p></o:p></span></h4> <p>Реализация DDD-подхода в данном случае состоит в том, что domain описан в отдельной сборке, которая является полностью независимой. Для обеспечения независимости используется прием Inversion-of-Control и одноименная библиотека. </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Плата за такой чистый дизайн велика - для каждого типа доменный модели нужен еще тип, реализующий для него работу с базой <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Зато 5000 тестов работают одну минут, в отличие от наших. Это именно то, в чем мы их решение пока сильнее нашего <o:p></o:p></span></li></ul> <p>Ребята также показались TDD-экстремистами, не знаю насколько это хорошо или плохо. Их мантры такие </p> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Подумай->Напиши тест, который падает где ты ожидаешь -> Сделай минимальное исправление <o:p></o:p></span></li><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Assert, по-хорошему, должен быть один, а исправление - минимальным. Если это не так, скорее всего нужен еще один тест. <o:p></o:p></span></li></ul> <h4><a name=".D0.9E.D1.81.D1.82.D0.B0.D0.BB.D1.8C.D0." id=".D0.9E.D1.81.D1.82.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D0.B5"></a><span class="mw-headline"><span style="">Остальное</span></span><span style=""><o:p></o:p></span></h4> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >При написании тестов использует свои embedded DSL. Например, вот такое: <o:p></o:p></span></li></ul> <pre> </pre><pre>var testDate <span style="color:green;">=</span> 11.12.<span style="color:blue;">of2009</span></pre><pre> </pre><pre><span style="color: rgb(6, 0, 255);">public</span> <span style="color: rgb(6, 0, 255);">static</span> <span style="color:red;">class</span> DoubleExtensions</pre><pre><span style="color:black;">{</span></pre><pre><span style=""> </span><span style="color: rgb(6, 0, 255);">public</span> DateTime of2009<span style="color:black;">(</span><span style="color: rgb(6, 0, 255);">this</span> <span style="color:red;">double</span> date<span style="color:black;">)</span></pre><pre><span style=""> </span><span style="color:black;">{</span></pre><pre><span style=""> </span><span style="color: rgb(6, 0, 255);">return</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color:green;">new</span></a> DateTime<span style="color:black;">((</span><span style="color:red;">int</span><span style="color:black;">)</span>date.<span style="color:blue;">Floor</span><span style="color:black;">()</span>, <span style="color:black;">(</span><span style="color:red;">int</span><span style="color:black;">)(</span>date<span style="color:green;">-</span>date.<span style="color:blue;">Floor</span><span style="color:black;">())</span><span style="color:green;">*</span><span style="color:red;">100</span>, <span style="color:red;">2009</span><span style="color:black;">)</span></pre><pre><span style=""> </span><span style="color:black;">}</span></pre><pre> </pre><pre><span style="color:black;">}</span></pre><pre> </pre><pre> </pre> <ul type="square"><li class="MsoNormal" style="text-align: justify;"><span style=";font-family:";" >Очень любят GoF и Фаулера. Из полезных паттернов упомянули Спецификацию, чему соответствует до некоторой степени Condition в Uni.Net <o:p></o:p></span></li></ul> <p><o:p> </o:p></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-79269915105680296292009-12-06T20:14:00.001+03:002009-12-06T20:14:22.639+03:00Windows 7 – часть вторая<p><strong>Обновление оконного интерфейса</strong></p> <p>  В Windows 7 в очередной раз обновился и улучшился интерфейс. Почти все нововведения показались разумными и удобными, особенно приятно, что разработчики исправили некоторые ошибки в Vista. Правда, должен предупредить, что если вы переходите с Windows XP, то привыкать и искать нужные кнопки все равно придется.</p> <a name='more'></a> <p>Сразу бросающееся в глаза изменение – обновленная панель задач. Запущенные приложения по умолчанию не подписаны, зато значок стал крупнее.Также, если приложение уже было на панели быстрого запуска, то его запуск не порождает еще один значок, а происходит выделение существующего ярлыка. Еще с панели задач исчез (опционально) ярлык свернуть все окна. Вместо то него около часов появилась небольшая область, при наведении на которую все окна становятся прозрачными, а при клике – сворачиваются.</p> <p>Показ миниатюры окна при при наведении его значок в панели задач появился, еще в Windows Vista, здесь идея получила свое развитие – при наведении мыши на миниатюру появляется окно исследуемого приложения. Особенно это полезно для интернет-браузеров, где нужную вкладку таким образом найти стало очень просто.</p> <p>Еще одно схожее новшество – т.н. Jump Lists. Для использования этой функции, правда, приложение должно быть доделано программистом. Заключается она в том, что ярлык любого приложения развертывается в список файлов, которые недавно в нем были открыты. Это похоже на список недавних документов в офисных приложениях, однако теперь для того, чтобы ткнуть в нужный файл само приложение запускать не нужно, сокращается число кликов мышкой. Функция работает и для ярлыков на панели задач и для ярлыков в меню “пуск”.</p> <p><a href="http://lh4.ggpht.com/_Cno0f7R6hIs/SxvmV6Pp9DI/AAAAAAAAABs/WdEntR-YH0E/s1600-h/image%5B9%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_Cno0f7R6hIs/SxvmWWR5l5I/AAAAAAAAABw/ioki-ken49E/image_thumb%5B5%5D.png?imgmax=800" width="481" height="459" /></a> </p> <p>Среди прочих маленьких радостей – новые набор тематических фонов рабочего стола, посвященные разным странам (я поставил русский и японский), а также функция периодической смены воллпейпера через заданный интервал времени.</p> <p><strong>Гаджеты</strong></p> <p>Первое, что видишь при первое загрузке новой Windows – это обновленные гаджеты, они же виджеты. Это такие небольшие программки, имеющие красивый и весьма лаконичный интерфейс. Виджеты существуют, например, для iGoogle и браузера Opera.  В Windows виджеты(гаджеты) появились вместе в Виста. Тогда для них выделялась специальная панель с правой стороны экрана, на которую они крепились. Не знаю, пользовался ли ими кто-нибудь, я нет, так как панель для них блокировала часть экрана и потребляла чудовищное количество памяти, что плохо согласуется с идеей небольших полезных программок.</p> <p>В Windows 7 поддержка гаджетов перестала жрать память, а сами гаджеты теперь можно закреплять в любом месте экрана (см. скриншот). </p> <p><a href="http://lh4.ggpht.com/_Cno0f7R6hIs/SxvmXGqUE5I/AAAAAAAAAB0/BPFp9rVfZ_s/s1600-h/image%5B3%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdUnft_E_OuMCJAFi3HnMK9Horq4IV7TKtuJ8tzsbYad7UaV3AjxXzolYW47M948ho3Y2YCkCLbSTcjSuX7jOWmKZIPLwUZKHZg9C4_L0Ee_tbvO5BKTAKuro1cCrH36jn4ciLP8TX7hI/?imgmax=800" width="935" height="586" /></a> </p> <p>Себе я, правда, оставил только погоду.</p> <p><strong>Windows XP Mode </strong></p> <p>Для того, чтобы пользователи не пугались несовместимости приложений с  новой ОС (что а мой взгляд сейчас более-менее актуально только для 64-битной версии), Microsoft добавила в старшие редакции Windows 7 функцию Windows XP mode. Фактически, она представляет собой слегка обновленную программу управления виртуальными машинами Virtual PC,  с добавлением, однако, некоторых полезных функций. </p> <p>Что же нам дает Windows XP Mode по сравнению с Virtual PC 2007, который, как известно, можно скачать и установить совершенно бесплатно? Во-первых это полная интеграция виртуальной машины с USB-устройствами хоста. Это означает, что устройство, для которого у Вас нет драйвера под Windows 7 вы можете подключить к виртуальной машине и, установив  драйве для Windows XP пользоваться им из виртуальной среды. У меня таким устройством оказался принтер, для которого компания Canon упорно не хочет выпускать драйвер под  64-битные версии Windows. Справедливости ради надо заметить, что теми же способностями обладаю и некоторые другие бесплатные среды управления виртуальными машинами, в частности популярный VMWare Player.  C другой стороны, при использовании функции Windows XP mode не возникает проблем с получением лицензии на Windows XP для виртуальной машины, если это конечно для Вам проблема)</p> <p>Впрочем, Windows XP Mode обладает еще одним достоинством, которое стоит упомянуть – это публикация приложений с виртуальной машины.Установленные на виртуальной машине приложения становятся доступны из меню “Пуск” хоста, запускаются и работают визуально в Windows 7, а на самом деле на Windows XP. Естественно, работает интеграция с буфером обмена.</p> <p><a href="http://lh3.ggpht.com/_Cno0f7R6hIs/SxvmZRPuYRI/AAAAAAAAAB8/qolVil2FYlA/s1600-h/image%5B16%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_Cno0f7R6hIs/SxvmaN5JnjI/AAAAAAAAACA/R74axTneaAM/image_thumb%5B10%5D.png?imgmax=800" width="1021" height="638" /></a>  </p> <p>Internet Exlporer 6 из Windows XP и IE8, работающие рядом</p> <p><strong>Экранная лупа</strong></p> <p>Экранная лупа появилась в Windows еще в 2001 году, вместе c XP, однако полезность ее мне представлялась сомнительной даже для инвалидов по зрению. В этом выпуске Windows она видоизменилась таким образом, что готова составить конкуренцию знаменитой программе ZoomIt!, весьма полезной при проведении презентаций. Необходимость в такой программе возникает например тогда, когда демонстрирую на экране высокого разрешения заказчику сложный интерфейс, необходимо показать происходящее во всех деталях, например показать конкретные пункты меню.</p> <p><a href="http://lh3.ggpht.com/_Cno0f7R6hIs/SxvmanGxJtI/AAAAAAAAACE/P7eMiwYxBZc/s1600-h/image%5B21%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_Cno0f7R6hIs/SxvmbceSlEI/AAAAAAAAACI/GS_ZxJQY5d8/image_thumb%5B13%5D.png?imgmax=800" width="712" height="446" /></a> </p> <p>Скриншот экрана разрешением 1680x1050 (демонстрация экранной лупы)</p> <p>По сравнению с ZoomIt, реализация от Microsoft имеет еще и то преимущество, что приложение остается полнофункциональным, для совершения каких-либо действий не нужно снимать увеличение.</p> <p></p> <p></p> <p></p> <p><strong>Что не понравилось</strong></p> <p>Это раздел получится коротким)</p> <p>Очень не понравился новый интерфейс поиска. По сравнению с тем, какой он был в Висте, нужные возможности стало найти тяжело, как отобрать среди результатов файлы нужных типов для меня теперь загадка.</p> <p>Еще что-то случилось с иконками около часов.  Теперь скрытые иконки не выезжают на панель задач при нажатии на стрелочку, а появляются в выплывающем вверх меню. Само по себе это не страшно, но на наведении на на нажатии они реагируют как-то странно.</p> <p>Вот, собственно и все)</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-14495360055668162862009-12-06T00:26:00.001+03:002009-12-06T00:26:11.258+03:00Мой обзор Windows 7<p>Уже почти месяц у меня  стоит Windows 7, и я решил что можно сформулировать первые впечатления.</p> <a name='more'></a> <p>Мне досталось лицензионная Windows 7 Ultimate, по-русски это издание называется “Максимальная”. Отличия между изданиями можно посмотреть <a href="http://en.wikipedia.org/wiki/Windows_7_editions">здесь</a>. Если Вам лень их изучать то, краткое резюме состоит в том что версия Home Premium подойдет в большинстве случаев. Я получил два диска, с дистрибутивами 32- и 64-битных версий системы, но только одним лицензионным ключом К слову, такая же ситуация ждет Вас при покупке новой винды в розницу.  Установлена был 64-битный вариант, сменивший также 64-битную Windows Vista Professional SP2. Я устанавливал систему “вчистую” upgrade делать не пытался  по причинам о которых пишу чуть ниже</p> <p>Первое же впечатление от новой системы было приятым - “из коробки” встали все основные драйвера, а пока я ставил нужные утилиты и рассматривал красоты интерфейса, система нашла в Интернете и поставила почти все остальные, включая, например, весьма специфический драйвер системы защиты жесткого диска от падений и драйверы аппаратных кнопок управления звуком и беспроводными интерфейсами. Замечу в скобках, что моему ноутбуку hp8510p уже исполнилось два года, а значит с более новыми системами проблем тоже быть не должно.  С остальным программным обеспечением неприятностей также не возникло – все что работал у меня под Висту без проблем заработало и на “семерке”. </p> <p>Кстати, о  Висте. Она не оставила у меня неприятного впечатления – возможно потому, что я столкнулся с ней первый раз осенью 2007, почти через год после выхода, и мне не пришлось решать те проблемы из-за которых ее прокляли первый пользователи. Кроме того, я использовал ее на мощном оборудовании, и ее отставание от XP на нем не было столь разительным( кстати, злая судьба заставила меня пользоваться на выезде к заказчику вистой на машинке с одноядерным Pentium 4 и 512 Мб памяти. После длительной настройки, мне удалось привести ее к вполне юзабельному состоянию). Вообще говоря, я считаю что для достаточно приличного ноутбука Виста была предпочтительнее XP почти с самого начала – из-за лучше поддержки высоких разрешений (на моем 15-дюймовом экране при разрешении 1680x1050 под Висту работать можно и это даже приятно, а под XP – смерть глазам)  и Wi-Fi (особенно с WPA2 шифрованием). Кстати, все это осталось и в Windows 7)). Но главным преимуществом “семерки”,  называют, конечно, не это а </p> <p><font size="4"><strong>Производительность</strong></font></p> <p>О скорости “семерки” писали все кому не лень, а я вот сомневался могу ли сравнивать т.к.</p> <ul> <li>Сравнивать используемую два года ОС и “чистую инсталляцию не совсем честно </li> <li>Я сменил жесткий диск – на смени 200-гиговому Hitachi пришел 500-гигабайтный Seagateю Оба диска на 7200 оборотов, но за счет возросшей плотность записи Seagate, конечно, должен быть быстрее </li> <li>Я сменил антивирус. <a href="http://www.avast.com">Avast!</a> меня всем устраивал, просто захотелось попробовать что-нибудь еще.  AVG мне не понравился, в результате я остановился на Microsoft Security Essentials. </li> </ul> <p>Однако, система стала настолько отзывчивее, особенно по сравнению с 64-битной версией Висты(она была заметно медленнее 32-битного вариант), что отнести это на написанное выше я не могу.  Кстати мне приходилось сидеть за <a href="http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%82%D1%82%D0%BE%D0%BF">неттопом</a> с 1 гигобайтом памяти и процессорм Intel Atom и все работало хорошо. Правда, это относится только к “упрощенной” теме оформления соответствующей “красивой”(Luna) теме оформления в Windows XP. При включении Aero, окна на неттопе стали открываться с заметной задержкой, хотя в этом может быть виновата встроенная видеокарта.</p> <p>Уф, на сегодня все, в следующем посте расскажу про понравившиеся мне нововведения в интерфейсе, всякие полезности, а также про то, что же мне все-таки не понравилось.</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-67017214765209743912009-11-19T00:08:00.001+03:002009-11-19T00:08:54.806+03:00Mind Maps<p>Открыл для себя Mind Maps. Собственно, с концепцией я знаком уже давно, а сам рисовать попробовал только сейчас.  Очень удобный способ для быстрой записи мыслей, который организуются в дерево с разнообразными типами связей.</p> <p>В качестве софтины рекомендую FreeMind, бесплатно, на Java. Работает быстро, удобные клавиатурный шорткаты</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-30396553724096054902009-11-17T23:21:00.001+03:002009-12-12T00:06:06.913+03:00Платформа 2010<p>Конференция "Платформа 2010", посвященная продуктам и технологиям Microsoft. Эта чуть отредактированная копия отчета, размещенного во внутренней вики компании</p> <p>Проходила 12-13 ноября в Москве, в Центре Международной Торговли на Красной Пресне. </p> <p>Сайт мероприятия <a href="http://www.msplatforma.ru">http://www.msplatforma.ru</a> </p> <h4><a name=".D0.9E.D1.80.D0.B3.D0.B0.D0.BD.D0.B8.D0."></a>Организационное</h4> <p><a href="http://lh3.ggpht.com/_Cno0f7R6hIs/SwMF0wagM3I/AAAAAAAAABU/Dk-YXN22UL0/s1600-h/12112009341%5B2%5D.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="12112009341" border="0" alt="12112009341" src="http://lh5.ggpht.com/_Cno0f7R6hIs/SwMF1rdDSjI/AAAAAAAAABY/MaDn0yhfzyg/12112009341_thumb.jpg?imgmax=800" width="244" height="184" /></a> </p> <ul> <li>Хорошо кондиционированные (но без сквозняка) залы. </li> <li>Нормальные проекторы. </li> <li>Нормальная еда (с горячим). </li> </ul> <p>Кстати, в центре международной торговли работает 3G у Мегафона. </p> <p>Не обошлось, конечно, без накладок. </p> <ul> <li>Часть докладов я смотрел в онлайн-режиме (конечно же, при помощи Silverlight), при этом со звуком все было хорошо, а вот снималось это так, что рассмотреть что происходит на экране было невозможно. </li> <li>Расписание на сайте конференции было неплохим, но можно было и куда лучше </li> <li>Были моменты «то густо, то пусто». Не знаю, было ли это сделано специально, но были моменты, когда параллельно шли только маркетинговые доклады, а иногда приходилось выбирать между сразу несколькими весьма интересными. </li> </ul> <ul></ul> <h4>Принесенные материалы</h4> <p>Кризис продолжает ощущаться и в офис компании я принес еще меньше полезного чем в прошлом году. Ни одной книги! На Платформе 2008, помнится,  давали целый сундук. </p> <h5><a name=".D0.96.D1.83.D1.80.D0.BD.D0.B0.D0.BB.D1."></a>Журналы</h5> <ol> <li>Windows IT Pro (01/2009) </li> <li>MSDN Magazine (12/2008). </li> <li>3 выпуска журнала "Хакер" начала 2009 года. Кстати, интересно </li> </ol> <h5><a name=".D0.9C.D0.B0.D1.80.D0.BA.D0.B5.D1.82.D0."></a>Маркетинговые материалы</h5> <p>Было, конечно, много-много бумажек-листовок, но попадались и полезности. </p> <ul> <li>Лицензия на <a href="http://www.1c-bitrix.ru/products/net">1С-Битрикс: Управление сайтом ASP.NET</a> </li> <li>Обучающий диск Windows Server 2008 R2: виртуальные машины и материалы </li> <li>Visual Studio 2010 Ultimate Beta 2 с лицензий Go live! </li> <li>Диск от M$ "Готовим веб-сайт". тоже обучающий </li> <li>И вот такая прелесть от Лаборатории Касперского </li> <li><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO0KEnn5NPAv6-sWLT2scmozu5V5OwYGaQ_4if5TVcjh0stE5BKoZu8Q2t-QlFwzb4F2cEtY7f04ijVTL11-Wv9rl0aBDqsQaN65_e2KAT6zAPnlHy5nKnkVC8-VkWDBl2Z6cKrNUVACc/s1600-h/12112009342%5B2%5D.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="12112009342" border="0" alt="12112009342" src="http://lh4.ggpht.com/_Cno0f7R6hIs/SwMF2my66rI/AAAAAAAAABg/z2VEuqBCS3g/12112009342_thumb.jpg?imgmax=800" width="244" height="184" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzGlJFzf2pFQ7kInKvbKzkI_6_uTzRYBxZ3ACIz0wvFk0PTSH8n9bTQEcmpW5BTV627Q1IyhJLWzPM_UzCeoODlPcSF2DnR1vV0Y_DdPPmd0UvLyWj_5Wh6Oj6vNNMst90dK9ShfvY96k/s1600-h/12112009343%5B2%5D.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="12112009343" border="0" alt="12112009343" src="http://lh6.ggpht.com/_Cno0f7R6hIs/SwMF4ggMahI/AAAAAAAAABo/sCXiwwr3AK4/12112009343_thumb.jpg?imgmax=800" width="244" height="184" /></a> </li> <li>А также тестовый аккаунт на Exchange 2010 от компании infobox. </li> </ul> <h4>Доклады</h4> <pre>Почти все доклады уже доступны на сайте techdays.ru</pre>
<h4><a name=".D0.9F.D0.BB.D0.B5.D0.BD.D0.B0.D1.80.D0."></a>Пленарный доклад</h4>
<p>Николай Прянишников, Норм Джуда </p>
<p>Выступление Николай Прянишникова (Президент Microsoft Россия), пришедшего в M$ год назад из «Вымпелкома», не запомнилось ничем. Обычные слова про то, что «мы уверенно смотрим в будущее» и «все у нас хорошо» </p>
<p>Основную часть времени выступал Норм Джуда, Директор по технологической стратегии Департамента Консалтинга M$. Он за два часа рассказал о большем количестве новых микрософтских технологий, от Windows 7 до Cloud Computing, причем рассказал очень хорошо — демонстрации явно были рассчитаны на WOW-эффект. </p>
<p>Особенно впечатлило голосовое управление Exchange 2010 — полная поддержка русского языка (в обе стороны text-to-speech и speech-to-text), очень естественные команды и т.д. </p>
<p>Правда, когда я стал пробовать эти функции самостоятельно, так хорошо у меня не получалось, Exchange меня понимал с пятого на десятое. Впрочем, вы можете оценить всю эту функциональности сами, см. выше. </p>
<p>Не обошел Норм Джуда вниманием и Windows 7, в основном ее возможности по работе в паре с Windows Server 2008 R2. Рекламировал технологию <i>DirectAccess</i>, но чем она отличается от обычной VPN, кроме в очередной раз упрощенной конфигурации я не понял. Более интересная штука — <i>Branch Cache</i>, технология кэширования документов с удаленных серверов на более близких (сценарий, когда из филиала много работают с документом в файлопомойке или SharePoint головного офиса). Еще порадовало то, что в Windows 7 появился нормальный <i>federated search</i> (агрегация результатов поиска из разных источников). </p>
<p>Также Microsoft активно продвигает свои технологии виртуализации, в рамках доклада была демонстрация Live Migration — технологии переноса виртуалок с одного физического сервера на другой без остановки работы. Приятно, что эта возможность доступна и в полностью бесплатном <a href="http://www.microsoft.com/hyper-v-server/en/us/default.aspx">Hyper-V Server R2</a>. Была еще демонстрация продукта <i>Operations Manager</i>, который красиво рисует схемки из физических и реальных серверов, а из полезного умеет динамически перемещать виртуальные машины с сервера на сервер в зависимости от нагрузки. Выглядит красиво, но я не уверен что в таком продукте есть большой смысл — админ все равно умнее). </p>
<p>Напоследок расскажу об еще одной впечатлившей технологии — <i>Excel Super Pivot</i>, предназначенной для клиентского анализа больших объемов данных. Прокрутка без задержки, сортировка, фильтрация и быстрое построение диаграмм на 50 млн строк данных на машине с 4 гигабайтами памяти очень впечатлила. Очень захотелось попробовать на практике, и понять где же здесь будут проблемы). Также были показана новые интерфейсные средства для анализа, например автопостроитель разрезов. Видно, что M$ взяла очень серьезный курс на клиентскую работу с данными, раз уж ей не удалось добиться серьезных успехов в серверных OLAP-технологиях. </p>
<h4><a name=".D0.9E.D0.B1.D0.B7.D0.BE.D1.80_.D1.82.D0"></a>Обзор технологий и преимуществ Exchange 2010</h4>
<p>Максим Вайсбурд, Иван Макаров </p>
<p>Доклад начался с обзора обновленного <i>Outlook Web Access</i>, нынче переименованного в <i>Outlook Web App</i>. Самые главные изменения: </p>
<ul>
<li>В интерфейс стало больше желтого цвета). </li>
<li>Полная поддержка Firefox, Chrome и Safari (А про Оперу опять забыли(((). </li>
<li>Отказ от paging’а! Список писем не нужно листать постранично. </li>
<li>Организация сообщений «по-беседами» a-la цепочки сообщений в IPhone. </li>
<li>Запоминаемые фильтры (сохраняются в виде виртуальных папок). </li>
</ul>
<p>А в самом Exchange 2010 произошли следующие изменения: </p>
<ul>
<li>Декларируется сокращение на 30 % нагрузки на дисковую подсистему. </li>
<li><i>Failover clustering</i> базы данных Exchange. </li>
<li><i>Live migration</i> отдельных ящиков и серверов целиком без прекращения обслуживания. </li>
</ul>
<p>Изменилась модель прав доступа. Практическим следствием этого стала концепция «делегированного администрирования». Можно делегировать часть администраторских функций простым пользователям, причем это гибко настраивается. Также даже самые простые пользователи получили возможности создавать свои группы на сервере Exchange — теперь за этим не придется обращаться к администратору. Почти все возможности администрирования доступны через веб-доступ. Также для администратора будет полезен режим имперсонации пользователя, для просмотра и изменения его настроек, но без доступа к содержимому ящика. </p>
<p>Также представитель M$ активно рекламировали функцию «он-лайн архив», которая, по-сути, является возможностью создать для пользователя вторую папку на сервере Exchange вместо pst файла на диске. Но смысла в ней как-то мало — на прямой вопрос, можно ли хранить эту архивную папку на отдельном хранилище, докладчик ответил что нет. Вообще, если вы ненавидите <tt>pst</tt> файлы как идею — эта функция для Вас. А если нет, то зачем она — непонятно. </p>
<p>Microsoft собирается активно продвигать Exchange 2010 по модели <i>Software as a Service</i>. Даже если Вы не хотите хостить всю почту у стороннего провайдера, Microsoft предлагает защиту от спама и вирусов (Forefront) как внешний сервис к локальной инсталляции Exchange. </p>
<h4>Visual  Studio 2010 - новое поколение инструментов для ускоренной разработки приложений</h4>
<p>Дмитрий Васюра (руководитель разработки среды Visual Basic) </p>
<ul>
<li>Изменения в редакциях Visual Studio.Их несколько, самое главное - не будет специальных "ролевых" изданий, они все объединены в редакции "Premium". </li>
<li>Поддержка мультимониторных конфигураций </li>
</ul>
<ul>
<li>Редактирование блоков кода (сразу нескольких строк). Очень давно хотелось и очень впечатает. За примером использования отсылаю к видео доклада </li>
<li>Просмотр иерархии вызовов для функции. (a-la ReSharper) </li>
<li>Поиск функции или класса по имени (тоже было в ReSharper, но выглядит даже удобнее. Также поддерживаются сокращения.) </li>
<li>Подсветка использования символа </li>
<li>Генерация классов и их членов при первом использовании. Что-то такое уже было, но сейчас вроде бы должно стать удобно использовать эти возможности для TDD - пишешь тест, упомяная классы и члены, а их заглушки создаются по заранее заданным правилам. При этом поддерживаются разные фреймворки юнит-тестов. </li>
<li>Улучшенным IntelliSense - по подстроке, по сокращению. </li>
<li>Висячие сохраняемые watch'и - очень удобно при отладке. </li>
</ul>
<ul>
<li>Множественные изменения в языках, и С++, и VB и С#. В последнем появились именованные параметры, необязательные параметры, late binding, а также <a href="http://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)">ко-вариантность и контр-вариантность</a> параметров. </li>
</ul>
<p>Новая модель расширения для редактора: </p>
<ul>
<li>managed! </li>
<li>Любой элемент редактора можно расширить или изменить </li>
<li>Несколько типов расширений (intellisense, классификаторы текста, смарттеги и т.д.) </li>
</ul>
<p>Рекомендую посмотреть - очень понравилось. </p>
<h4><a name="Microsoft_StreamInsight:_.D0.B8.D0.B7.D0"></a>Microsoft <a href="http://www.microsoft.com/global/sqlserver/2008/en/us/PublishingImages/CEP-Runtime.jpg">StreamInsight</a>: извлечение знаний из потоков реляционных данных в реальном времени</h4>
<p>Никита Шамгунов </p>
<p>Интересный доклад, посвященный новой технологии потоковой обработки данных. Общая идея такая: имеются потоки событий из самых разных источников, которые преобразуются в выходные события. Причем входные события могут идти очень в большом количестве. В качестве примеров областей применения сразу на ум приходят данные по сделкам на бирже, которые преобразуются в команды покупать или продавать, данные с датчиков, преобразуемые в команды регулирующему оборудованию(например динамическое управление энергораспределением) и т.д. Декларируется возможность обработки до 200 000 событий в секунду. </p>
<p>С точки зрения разработчика, события должны представляться классами на C#, все поля который являются скалярными величинами, а преобразования - LINQ запросам. При этом даются API для поддержки усреднения, агрегации, длящихся во времени событий, а также отсутствующих событий(например, есть датчик жизнеспособности прибора. Сам сообщение о том, что все работает нам неинтересно. Интересно как раз отсутсвие такого сообщения). </p>
<p>Продукт будет поставляться вместе с SQL Server 2008 R2, хотя отношения к SQL Server у него довольно косвенное. Технология уже сейчас применяется в поисковике Microsoft Bing </p>
<h4><a name=".D0.9A.D1.80.D1.83.D0.B3.D0.BB.D1.8B.D0."></a>Круглый стол "Процессы разработки ПО на практике"</h4>
<p>Никита Шамгунов, Дмитрий Андреев, Дмитрий Васюра, Яков Сироткин </p>
<p>Довольно бестолковое мероприятие в конце первого дня. Мне пришлось уйти пораньше, поэтому я смотрел его в режиме он-лайн. Из него удалось вынести, что: </p>
<ul>
<li><a href="http://ru.wikipedia.org/wiki/Microsoft_Solutions_Framework">MSF</a> в Microsoft если и применяется, то они об этом не знают </li>
<li>Для планирования довольно часто используется MS Project, но далеко не всегда </li>
<li>Для контроля разработки везде используется Team Foundation Server </li>
</ul>
<h4><a name="SharePoint_2010:_.D1.81.D0.B0.D0.BC.D0.B"></a>SharePoint 2010: самое главное для разработчика</h4>
<p>Владимир Колесников </p>
<p>Хороший, весьма детальный и хорошо прочитанный доклад, посвященный нововведениям в ShaerPoint 2010 с точки зрения разработчика. Интерес к SharePoint еще силен во мне, так что я прослушал его с большим удовольствием, тем более что добавлено очень много того, что ждали. К сожалению, разделить своюрадость мне в компании не с кем, так что упомяну лишь некоторые: </p>
<ul>
<li>Релиз Linq-to-Sharepoint </li>
<li>Списки SharePoint получили основные все возможности классической реляционной БД. А именно: </li>
</ul>
<ul>
<ul>
<li>Joins </li>
<li>Проекции </li>
<li>Ограничения уникальности </li>
<li>Foreign keys c контролем целостности </li>
</ul>
</ul>
<p>Microsoft долго сопротивлялась и не хотела добавлять эти возможности (о них просили еще с 2001 года), боясь неправильного использования. Увидим, насколько оправданы эти опасения </p>
<ul>
<li>Улучшения документооборота: </li>
</ul>
<ul>
<ul>
<li>Глобальный ID документа </li>
<li>Возможность построения альтернативных деревьев навигации (не по папкам, а,скажем, по категориям) </li>
<li>Составные документы </li>
</ul>
<li>Наконец ДВУХСТОРОННЯЯ синхронизация проифилей пользоватлей c AD </li>
<li>Браузерные полноценные Word и Excel (Word Web App и Excel Web App) </li>
</ul>
<h4><a name=".D0.9F.D1.80.D0.B0.D0.BA.D1.82.D0.B8.D1."></a>Практическая разработка приложений для бизнеса: платформа Office + SharePoint</h4>
<p>Георгий Баркан </p>
<p>Честно говоря, пожалел, что пошел на этот доклад. Автор уныло рассказывал об способах Data Binding в офисных документах. </p>
<h4><a name=".D0.A0.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0."></a>Разработка современных Windows-приложений – Windows Presentation Foundation 4.0</h4>
<p>Роман Здебский </p>
<p>Доклад посвящен новой версии платформы графических приложений от Microsoft. Почти четверть его была посвящена знаменитой проблеме с размытием шрифтов. Проблема была связана с вектороной природой WPF, которая, при рендринге шрифта, не пыталась привязать линию к реальным пикселям экрана, а агрессивно использовало сглаживание, в результате чего текст сильно размывался. Для решения проблемы текстовый сек WPF был полностью переписан, был улучшен алгоритм сглаживания и, если это не поможет, добавлена возможность в коде форсировать эмитация режима рендринга GDI. Показанные примеры были вполне убедительно, если бы не одно "НО": я поставил 2010 студию, которая являет WPF-приложением, и там мне шрифты все-таки показались размытыми. Правда, я не знаю используется ли в студии WPF 4 или только 3.5. </p>
<p>Другой вопрос, затронутый в этом докладе - размер дистрибутива .Net Framework. В 4 версии он радикально уменьшен с 230 мегабайт для версии 3.5 до 57 для версии 4.0 Beta 2. При этом Client Profile (урезанный набор библиотек, содержащий только клиентскую функциональности) весит 22 мегабайта и ставится теперь в любом сочетании с другими версиями. </p>
<p>С точки зрения разработчика, в WPF 4 можно назвать следующие улучшения: </p>
<ul>
<li>Поддержка Generics в XAML </li>
<li>Нормальный визуальный редактор в студии. </li>
<li>Поддержка multi-touch </li>
<li>DataGrid, наконец, поставляется вместе с WPF </li>
<li>Оптимизация производительности: можно включить преобразование векторного изображения в растровое и выполнять операции над ним. ДЛя небольшого масштабирования, поворота, а главное перемещения дает сильный выигрыш. </li>
<li>Visual State Manager как в Silverlight </li>
</ul>
<h4><a name="Visual_Studio_Team_System_2010_-_.D0.BD."></a>Visual Studio Team System 2010 - новые возможности для командой разработки</h4>
<p>Дмитрий Андреев, Антон Бевзюк (Intel) </p>
<p>На этот доклад я пошел еще и потому, что никогда не работал с Team Foundation Server, и мне захотелось сравнить(хотя бы поверхностно) его с нашим процессом (bugzilla+SVN+Wiki). Поэтому напишу о тех фичах, которые мне понравились, и прямых аналогов которым я у нас не нашел. </p>
<ul>
<li>Поддержка feature-based разработки. Проще работа с ветками. </li>
<li>Check-in gate — при коммите происходит merge c основным стволом, прогоняются тесты, и только если все хорошо, происходит окончательное сохранение в общий репозитарий — нет сломанных билдов. Этой фичи нам не хватает! </li>
</ul>
<p>Много рассказывалось о поддержке тестирования и отладки, новом инструменте Testing Lab Manager. Вообще говоря, похоже на то, что Стас рассказывал про Testopia, слова были те же. Да, Testing Lab Manager тоже умеет писать за тестировщиком видео)). Но вот следующие функции показались достаточно необычнми и запомнились: </p>
<ul>
<li>Intellitrace — запоминается контекст выполнения программы (системная информация) и, самое главное, состояние программы в ходе выполнения. То есть можно вернутся и посмотреть значения переменных на любой момент времени назад. Что интересно, функция доступна и при проверке программы тестировщиком, так что можно воспроизводить состояние программы даже после катастрофического сбоя </li>
<li>Автоматизированные UI-тесты. Прокликал один раз — потом за тебя кликает машина. Кроме того, можно генерировать C# скрипт по набору действий, в который можно вставлять Assert и пользоваться средствами распознавания контролов. Не имею опыта с другими фреймворками для UI-тестирования, поэтому судить о слабых сторонах не могу</li>
</ul>
<p>Еще одна новинка в Ultimate-версии Visual Studio — графические средства анализа кода. Заявляется возможность построения UML-диаграмм по классам проекта (было и раньше, улучшено), Sequence-диаграмм по функции (еще не смотрел, если работает — будет здоров), диаграмм зависимостей между компонентами (на наш проект построило что-то страшное и сильно тормозит). Также добавлена возможность прямо в студии рисовать Use Case диаграммы, а также строить диаграммы слоев приложений</p>
<p>Также в рамках доклада была аннонсирована покупка Microsoft компании TeamPrise, разрабатывающей плагин для интеграции Eclipse c Team Foundation Server. Заявлено, что M$ будет активно развивать это направление. </p>
<p>Второй докладчик, из Intel, кратко рассказал об их опыте применения Visual Studio 2010. Честно говоря, мне он несколько удивил, так как после слайда «что понравилось», ожидался слайд со слабыми сторонами продукта, но его не последовало. </p>
<h4><a name=".D0.94.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0."></a>Доступная интеграция SharePoint и 1C : Свободно распространяемый продукт "1С-коннектор к Microsoft SharePoint Server"</h4>
<p>Владимир Епифанов Артем Черневский </p>
<p>Рекламировали бесплатный <a href="http://umsoft.ru">продукт</a> для интеграции (частично двусторонней) SharePoint 2007 и 1C </p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-54061951138955649192009-04-30T00:21:00.002+04:002009-04-30T00:23:11.380+04:00Office 2007 SP2Вышел второй сервис-пак для офиса 2007.
Список изменений можно посмотреть <a href="http://support.microsoft.com/kb/953195">здесь</a>. Из того, что заметил сразу - Outlook просто летает. А до этого на моих не таких уж больших объемах (два файла данных общим размером около гигабайт) заметно подтормаживалUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-85458039505667520882009-03-24T13:10:00.006+03:002009-03-29T16:00:31.716+04:00Тормоза Silverlight DataGrid<div>Начал играться с Silverlight 3, обнаружил странность - при добавлении к строке шаблон детали, грид начинает сильно тормозит на большом количестве записей - без детали спокойно работает и с миллионом, а с деталью - жутко тормозит уже на 10 000. </div> <div> </div> <div>Надо проверить, есть ли такая же фигня с гридом в Silverlight 2 Пример кода: </div> <div> </div> <p><data:DataGrid AutoGenerateColumns="True"</p> <p>Name="msGrid" Grid.Row="1"</p> <p>ColumnWidth="Auto"</p> <p>RowDetailsVisibilityMode="VisibleWhenSelected"</p> <p>RowDetailsVisibilityChanged="DataGrid_RowDetailsVisibilityChanged"</p> <p>></p> <p><!--uncommenting will cause severe perfomance degradation--></p> <p><!--<data:DataGrid.RowDetailsTemplate></p> <p><DataTemplate></p> <p><StackPanel Orientation="Horizontal" Background="White"></p> <p><TextBlock Margin="5,5,5,5" </p> <p>Width="350"</p> <p>Text="Категорийный заказ на склад в Самаре!!!!"</p> <p>TextWrapping="Wrap"></TextBlock></p> <p></StackPanel></p> <p></DataTemplate></p> <p></data:DataGrid.RowDetailsTemplate>--></p> <p></data:DataGrid></p> <div><datagrid rowdetailsvisibilitychanged="DataGrid_RowDetailsVisibilityChanged" rowdetailsvisibilitymode="VisibleWhenSelected" columnwidth="Auto" row="1" name="msGrid" autogeneratecolumns="True"></datagrid> <blockquote><font face="courier new"><datagrid rowdetailsvisibilitychanged="DataGrid_RowDetailsVisibilityChanged" rowdetailsvisibilitymode="VisibleWhenSelected" columnwidth="Auto" name="msGrid" autogeneratecolumns="True" grid.row="1"><!--uncommenting will cause severe perfomance degradation--><!--<data:datagrid.rowdetailstemplate>
<datatemplate>
<StackPanel
Orientation="Horizontal" Background="White">
<TextBlock
Margin="5,5,5,5"
Width="350"
Text=" !!!!"
TextWrapping="Wrap"></textblock>
</stackpanel>
</datatemplate>
</data:DataGrid.RowDetailsTemplate>--></datagrid><!--uncommenting will cause severe perfomance degradation--><!--<data:datagrid.rowdetailstemplate>
<datatemplate>
<stackpanel orientation="Horizontal" background="White">
<textblock margin="5,5,5,5" width="350" text=" !!!!" textwrapping="Wrap"></textblock>
</stackpanel>
</datatemplate>
</data:DataGrid.RowDetailsTemplate>--></font></blockquote> </div> Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-5825373376467124187.post-27815650731710008342009-03-22T18:35:00.007+03:002013-08-16T18:26:43.261+04:00Ноутбук<div dir="ltr" style="text-align: left;" trbidi="on">
Решил написать об опыте использования своего ноутбука Hewlett-Packard 8510p , которому уже скоро исполниться полтора года.<br />
<br />
В свое время я очень долго выбирал себе машинку,и, как оказалось время потратил не зря.
Купил я его 14 ноября 2007 года по цене 50 тысяч рублей в интернет-магазине tpshop.ru. Магазином остался доволен - привезли в договоренное время и курьер терпеливо ждал пока я тестировал ноут.
Конфигурация на момент покупки была следущая:<br />
<ul style="text-align: left;">
<li>CPU Intel Core 2 Duo T7700 2.4 Ghz</li>
<li> 2x1 GB DDR2 SDRAM SAMSUNG</li>
<li>
HDD 160 gb 5400 rpm SEAGATE </li>
<li>Экран WSXGA+ (1680 на 1050) с датчиком освещенности </li>
<li>Видео Radeon HD2600 265 Mb </li>
</ul>
(Замечу в скобках, что сейчас модель 8530p, которая является наследником моего ноутбука дешевле 65 тысяч в аналогичной конфигурации не найти - следствие обвала рубля)
В такой конфигурации ноутбук был самой старшей моделью в семействе с суффиксом "p" (Есть еще "профессиональная" серия 8510w). Осматривая ноутбук перед покупкой, я обнаружил 2 битых пикселя в нижней части экрана, в результате чего удалось снизить цену с изначальных 52 тысяч до 50. Судя по форумам, небольшие дефекты матрицы - нередкое явление в этой серии ноутбуков.
Подробные обзоры экстерьера, производительности и прочих аспктов можно почитать по ссылкам ниже, а я перейду к описанию опыта длительной эксплуатации.
<a href="http://www.ferra.ru/online/mobilis/78630/">http://www.ferra.ru/online/mobilis/78630/</a>
<a href="http://www.3dnews.ru/mobile/hp_compaq_8510w/">http://www.3dnews.ru/mobile/hp_compaq_8510w/</a>
<a href="http://www.notebookreview.com/default.asp?newsID=3939">http://www.notebookreview.com/default.asp?newsID=3939</a>
<a href="http://www.notebookreview.com/default.asp?newsID=3862">http://www.notebookreview.com/default.asp?newsID=3862</a>
<a href="http://www.notebookcheck.net/HP-Compaq-8510p.5899.0.html">http://www.notebookcheck.net/HP-Compaq-8510p.5899.0.html</a>
<span style="font-size: 130%;"> </span><br />
<span style="font-size: 130%;">Апгрейд</span><br />
<span style="font-size: 130%;"> </span>
Практически сразу после покупку я провели серьезный апгрейд - увеличил память до 4 Гб (два модуля Hynix), а жесткий диск заменил на винчестер от Хитачи емкость 200 Гб и скоростью вращения пластин 7200 обороов в минуту. По роду профессиональной деятельности мне часто приходится запускать виртуальные машины, а быстрый жесткий диск и, особенно, большой объем оперативной памяти очень помогает их нормальной работе.
<span style="font-size: 130%;">Программное обеспечение</span><br />
<span style="font-size: 130%;"> </span>
Естественно, что для работы с таким объемом памяти нужна была 64 битная операционная система, к качестве которой выступила Windows Vista, предустановленная но ноутбуке - вариант 32 или 64 битный нужно было выбрать при первой загрузке. Кстати хочу сказать, что проблем с совместимостью у меня практически не было - отказались запускать лишь HOMM4 из-за дурацкого драйвера защиты от копирования Star Force а также первая цивилизация, написанная более двадцати лет назад под DOS.
Поставить операционную систему на новый жесткий диск после замены удалось очень быстро - помогли созданные диски восстановления. А вот дистрибутива ОС в Хьюлетт-Паккард пожалели.
С другой стороны я остался вполне доволен программной состовляющей поставки ноута - из всего софта, который был на нем установлен я удалили лишь триальный антивирус, заменив его авастом. Весь остальной стоит и по сей день, расскажу о нем поподробнее:
1) Cyber Link Powe DVD - известнеший и очень мощный проигрыватель DVD
2) Roxio Suite - простая программ для записи CD/DVD
3) Программа управления при помощи настраивыемых сенсорных кнопок - я ей почти не пользуюсь, просто позволяет переназначить сенсорные горячие клавиши
4) Программа управления беспроводными устройствами - чуть более быстрый спосооб включать/отключать Bluetooth и Wi-Fi, удобнее стандартных средств ОС, пользуюсь постоянно.
5) Программа обновления модулей HP
6) Програма проверки здоровья компьютера от HP - оказалась на удивления полезной. В определенный момент она сказала мне что логический диск для восстановления системы имеет размер больше чем нужно и предложила осовободить место, уменьшив размер того раздела более чем на полтора гигабайта. Полученное место, правда, пришлось выделить в оотдельный логический диск, но все равно приятно.
7) Менеджер паролей и аутентификации по отпечатку пальца - был очень полезен пока не сломался с выходом Windows Vista SP1.
<span style="font-size: 130%;"> </span><br />
<span style="font-size: large;">Живучесть</span><br />
<span style="font-size: large;"></span><br />
<span style="font-size: large;"> </span>
<span style="font-size: 100%;">Могу сказать, что ноутбук показал себя с лучшей стороны - в условиях очень интенсивной эксплуатации - я в течение года каждый день носил его с собой и запускал ресурсоемкие задачи неполадок замечено не было. Время от времени он начинал шуметь сильнее чем обычно (под загрузкой он и в нормальном состоянии не тихий), но проблема решалась при помощи пылесоса.</span>
<span style="font-size: 100%;">К сожалению, буквально вчера обнаружио на экране еще пару битых пикселей - черных и прямо в середине. В гарантию нести пока не собираюсь - при таком разрешении жить вполнее можно.</span>
<span style="font-size: 100%;">Батарея за полтора года ожидаемо снизила ресурс, но на полтора-два часа работы еще вполне можно рассчитывать.</span>
Зато по внешнему виду совcем не скажешь, что машинка изрядно пропутешествовала - ни на внешней стороне крышки, ни в открытом состоянии никаких последствий интенсивной экплуатации не видно, и лишь приглядевшиcь можно заметит пару царапин.
</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-5825373376467124187.post-26092758547823306412009-03-08T01:29:00.008+03:002009-03-24T13:15:49.338+03:00Производительно Content Query Web PartНедавно столкнулись вот с чем:
Заказчик начал жаловаться, что страничка, на который аггрегируются новости из нескольких источников (хранящиеся в списках) загружаются очень долго. Для отображения и запроса элементов использовались несколько слегка модифицированный веб-частей "Запрос содержимого"(Content Query Web Part).
Данные собирались с нескольких (около 10) списков, каждый их которых жил на своем узле.
Время загрузке страницы иногда достигало 20 секунд, хотя время-от времени происходило мгновенно.
Почему загрузка могла происходить очень быстро стало понятно - сразу работал кэш объектов, некоторое время хранящий результаты запроса. А вот поиск причины медленной работы занял два дня.
Как оказалось, в результате некоторых организационных просчетов на production-сервере заказчика оказался список размером в 900 тыс, забитый практический бесполезной информацией. А все списки SharePoint хранитв одной таблице AllUserData, размер который разросся до 1 800 000 записей. Каждый запрос к ней, которых страничка делала по числу списков занимал около секунд, а 90% времени в каждом запросе - поиск по инждексу, даже несмотря на то, что то был Clustered Index Seek.
Решение напрашивалось простое - удалить огромный список и все. Но и здесь возникли сложности - при попытке его удаления веб-приложение портала обрушивалось. Причина вноь оказалась на SQL сервере - при удалении, перемещение списка в корзну вызывалось попытку выполнить 900 тысяч INSERT в одной транзакции, чего бедный сервер, конечно не выдерживал.
Только отключение корзины (кстати, это удобнее делать через stsadm) решило проблемуUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-5825373376467124187.post-88567063721296076992009-03-07T23:15:00.003+03:002009-03-24T13:16:20.434+03:00Полезные для разработчика утилитыПо мотивам вот <a href="http://msdn.microsoft.com/magazine/ffcf64cf-2a97-434e-b936-b38e022fe718">этой </a>статьи захотелось написать свой список утилит, которые нужно знать разработчику.
1) <a href="http://nunit.org/index.php">NUnit</a> - потрясающий набор библиотек для написания юнит-тестов и утилита для их исполнения. Сейчас в нашем проекте мы используем версию 2.4.8, но дома я взял 2.5. Если есть возможность - очень рекоммендую!
2) <a href="http://ccnet.thoughtworks.com/">Cruise Control</a> - сервер непрерываной интеграции. Очень гибкий и совместимый с очень многими используюемым инструментами, в частности NUnit и SVN
3) Если вы пользуетесь SVN, то <a href="http://www.visualsvn.com/">Visual SVN</a> - Ваш выбор. Это плагин для Visual Studio, который позволяет управлять файлами непосредственно из IDE, например сильно упрощается переименование файлов. Плагин платный, но своих денег стоит.
4) <a href="http://www.jetbrains.com/resharper/">ReSharper</a> - еще один плагин для Visual Studio, и тоже платный, хотя вероятно в представлении не нужадется. Возможностей огромное количество - из часто используемого вспомню следующее:
1) Сильно расширенный поиск использования выделенного объекта (Find usages)
2) Возможности перехода от символа к супер-классу, подклассам и т.п.
3) Мощные возможности рефакторинга
4) Более удобное реадктирование комментариев
5) Подсветка потенциальных ошибок
6) Возможность исполнения NUnit тестов внутри студии с более удобным интерфейсом
6) .<a href="http://www.red-gate.com/products/reflector/">Net Reflector </a>- еще одна известная утилита для исследования скопилированных сборок. Очень хорошо производит реконструкцию кода.
Очень помогла при создании Silverlight-проекта на F#
7) Fusion Log Viewer - утилита входит в SDK, позволяет мониторить процесс загрузки сборок. Очень полезна, когда пытаешься понять что же именно не
дает программе запуститься
8) <a href="http://www.pspad.com/ru/">PSPad</a> - мощный текстовый редактор с подсветкой кода. Мы испольуем для рекдактирования PL/SQL кодаUnknownnoreply@blogger.com0