<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:dedm</id>
  <title>Ванькин ЖЖ</title>
  <subtitle>Ванька</subtitle>
  <author>
    <name>Ванька</name>
  </author>
  <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom"/>
  <updated>2009-07-19T13:55:47Z</updated>
  <lj:journal userid="7118061" username="dedm" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://dedm.livejournal.com/data/atom" title="Ванькин ЖЖ"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:87463</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/87463.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=87463"/>
    <title>Theory of Constraints</title>
    <published>2009-07-19T12:04:03Z</published>
    <updated>2009-07-19T13:55:47Z</updated>
    <category term="management"/>
    <category term="development"/>
    <content type="html">Оказывается, существует довольно интересная теория управления проектами — &lt;a href="http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D0%B9"&gt;Теория Ограничений&lt;/a&gt;, которая дополняет и расширяет классический подход, описываемый в &lt;a href="http://www.pmi.org/Resources/Pages/Library-of-PMI-Global-Standards-projects.aspx"&gt;Guide to PMBok&lt;/a&gt;. Последний является международным промышленным стандартом, сертификацию по которому осуществляет &lt;a href="http://pmi.org"&gt;PMI&lt;/a&gt;. Theory of Constraints (TOC) в свою очередь позиционируется авторами, как более современный и эффективный подход, однако требующий от менеджера измененить свое стандартное мышление.&lt;br /&gt;&lt;br /&gt;О применении этой теории к разработке программных продуктов в России: &lt;a href="http://sqlmag.ru/cio/2005/01/173751/_p1.html"&gt;интервью с соавтором в журнале CIO.ru&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;К слову, надо будет поискать какие-нибудь модные концепции, расширяющие &lt;a href="http://swebok.org/"&gt;Guide to SWEBoK&lt;/a&gt;. Поговаривают, многие авторитетные разработчики, в том числе небезызвестные Мартин Фаулер или Гради Буч, считают, что этот промышленный стандарт разработки ПО нуждается в значительных доработках.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:87141</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/87141.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=87141"/>
    <title>Version numbering</title>
    <published>2009-07-15T08:00:31Z</published>
    <updated>2009-07-15T08:21:05Z</updated>
    <category term="versioning"/>
    <category term="development"/>
    <content type="html">Правила и порядок нумерации версий программных продуктов — это один из многих вопросов, который мне постоянно не давал покоя, и неоднократно был причиной споров с менеджерами и маркетологами.&lt;br /&gt;&lt;br /&gt;До абсурда, конечно же, эту проблему довел непревзойденный лидер всяких абсудров, компания Microsoft: так, например, программная версия Windows 7 вовсе не 7.0, а 6.1.&lt;br /&gt;&lt;br /&gt;Познавательная статья, которая приводит множество удачных и неудачных примеров нумерования версий в ПО: &lt;a href="http://technologizer.com/2009/07/14/version-numbers/"&gt;The Amazing World of Version Numbers&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:86912</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/86912.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=86912"/>
    <title>Logging is an art</title>
    <published>2009-07-14T08:08:07Z</published>
    <updated>2009-07-14T08:08:32Z</updated>
    <category term="logging"/>
    <category term="development"/>
    <content type="html">Logging is an art — такая концептуальная идея &lt;a href="http://java.dzone.com/articles/its-not-working-first-steps"&gt;изложена в интересной статье&lt;/a&gt;, в которой пошагово описываются те очевидные действия, которые должен выполнить пользователь, прежде чем сообщить разработчику о проблеме в виде «все сломалось и ничего не работает».</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:86437</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/86437.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=86437"/>
    <title>ORM</title>
    <published>2009-07-14T06:31:51Z</published>
    <updated>2009-07-14T06:31:51Z</updated>
    <category term="orm"/>
    <category term="java"/>
    <category term="development"/>
    <content type="html">Интересная табличка, сравнивающая две &lt;i&gt;стандартных&lt;/i&gt; техники ORM: &lt;a href="http://db.apache.org/jdo/jdo_v_jpa_orm.html"&gt;JDO vs JPA&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:86101</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/86101.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=86101"/>
    <title>Интересы компании и социальные сети</title>
    <published>2009-07-07T09:12:39Z</published>
    <updated>2009-07-07T09:15:38Z</updated>
    <content type="html">Исследовательская лаборатория HP опубликовала интересное исследование: &lt;a href="http://www.hpl.hp.com/techreports/2009/HPL-2009-138.html"&gt;Towards an Analytic Approach to Evaluate Enterprises' Risk Exposure to Social Networks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;В частности, они объясняют, почему решения менеджмента закрыть сотрудникам доступ ко всяким одноклассникам и вконтакте являются глупыми и недальновидными, и приводят более эффективные способы уменьшения рисков.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:85867</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/85867.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=85867"/>
    <title>Vim ist da powah</title>
    <published>2009-07-06T13:39:03Z</published>
    <updated>2009-07-06T13:39:03Z</updated>
    <category term="ide"/>
    <category term="vim"/>
    <content type="html">EDC недавно опубликовала рейтинг самых популярных платформ разработки среди пользователей: &lt;a href="http://www.evansdata.com/reports/viewRelease_download.php?reportID=19"&gt;Software Development Platforms - 2009 Rankings&lt;/a&gt; (Чтобы скачать весь отчет целиком — просто вбейте в форму данные от балды.)&lt;br /&gt;&lt;br /&gt;К сожалению, vim в этот рейтинг не попал :) Зато большой интерес представляют критерии, по которым оцениваются эти платформы.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:85545</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/85545.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=85545"/>
    <title>Green IT</title>
    <published>2009-07-06T13:14:50Z</published>
    <updated>2009-07-06T13:14:50Z</updated>
    <content type="html">Один ваш запрос в гугле по количеству вырабатываемого CO&lt;sub&gt;2&lt;/sub&gt; сравним со вскипанием одного чайника, &lt;a href="http://www.foxnews.com/story/0,2933,479127,00.html"&gt;передает нам FoxNews&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:84941</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/84941.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=84941"/>
    <title>Software requirements &amp; Separation of concerns</title>
    <published>2009-07-03T07:55:33Z</published>
    <updated>2009-07-03T08:48:26Z</updated>
    <content type="html">Часто замечаю, что многие разработчики функциональных требований не обладают функциональным мышлением, и как следствие, функциональные требования функциональнымы по сути и не являются.&lt;br /&gt;&lt;br /&gt;В частности, вместо описания состояний, в которых может находится система, нужно описывать действия, которые с ней производит пользователь, например: требование «пользователь может быть авторизованным или неавторизованным» правильнее формулировать, например, так: «система проверяет введенный пользователем пароль, и в случае успешного результата пользователь сможет выполнять такие-то действия». &lt;span style="font-size:smaller;"&gt;(У меня где-то был более подробный разбор проблемы на примере из реального техзадания. Если кому-то будет интересно, то я опубликую его в следующих сериях).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Мне это казалось интуитивно понятным, и недавно я обнаружил похожую более обобщенную идею Separation of Concerns в авторитетных источниках:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-size:smaller;"&gt;The programmer is having to do several things at the same time, namely, &lt;i&gt;1. describe what is to be computed&lt;/i&gt;; 2. organise the computation sequencing into small steps; 3. organise memory management during the computation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Ideally, the programmer should be able to concentrate on the first of the three tasks (describing what is to be computed) without being distracted by the other two, more administrative, tasks.&lt;/i&gt; Clearly, administration is important but by separating it from the main task we are likely to get more reliable results and we can ease the programming problem by automating much of the administration. The &lt;i&gt;separation of concerns&lt;/i&gt; has other advantages as well. For example, program proving becomes much more feasible when details of sequencing and memory management are absent from the program. Furthermore, descriptions of what is to be computed should be free of such detailed step-by-step descriptions of how to do it if they are to be evaluated with different machine architectures. Sequences of small changes to a data object held in a store may be an inappropriate description of how to compute something when a highly parallel machine is being used with thousands of processors distributed throughout the machine and local rather than global storage facilities. Automating the administrative aspects means that the language implementor has to deal with them, but he/she has far more opportunity to make use of very different computation mechanisms with different machine architectures.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Elements-Functional-Programming-International-Computer/dp/0201129159"&gt;Chris Reade, Elements of Functional Programming, 1989&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;То есть, выражая свою первую идею другими словами, функциональные требования должны концентрироваться на описании того, что &lt;i&gt;будет делать&lt;/i&gt; система с точки зрения пользователя (1), а не в какой последовательности нужно подавать команды вычислительной машине (2), и не в каком виде будет представлен в памяти результат этих действий (3).&lt;br /&gt;&lt;br /&gt;Но все-таки в первую очередь разработчик должен думать не только о том, &lt;i&gt;что&lt;/i&gt; должна делать система, а о том, &lt;i&gt;зачем, с какой целью&lt;/i&gt; она это будет делать. Это другой не менее важный concern, о котором советовал задумываться еще в 1974 году небезызвестный Дейкстра:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-size:smaller;"&gt;In another mood we may ask ourselves whether, and if so: &lt;i&gt;why, the program is desirable&lt;/i&gt;. But nothing is gained ­— on the contrary! — by tackling these various aspects simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html"&gt;Dijkstra, Edsger W., On the role of scientific thought&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;В этом состоит вторая простая и очевидная идея: описание целей и задач как неотъемлемых артефактов software requirements нужно всегда выделять в два отдельных документа.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:84586</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/84586.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=84586"/>
    <title>TeX ist da powah!</title>
    <published>2009-07-01T08:28:56Z</published>
    <updated>2009-07-01T08:36:46Z</updated>
    <content type="html">Пост, утверждающий превосходство &lt;a href="http://www.tug.org/"&gt;T&lt;sub style="vertical-align: -0.5ex;margin-left: -0.1667em;margin-right: -0.125em;font-size: 1em;"&gt;E&lt;/sub&gt;X&lt;/a&gt; над другими жалкими визуальными редакторами и УГ-форматами документов вроде M$Word.&lt;br /&gt;&lt;br /&gt;Тот, кто не пользуется &lt;a href="http://www.tug.org/texlive/"&gt;T&lt;sub style="vertical-align: -0.5ex;margin-left: -0.1667em;margin-right: -0.125em;font-size: 1em;"&gt;E&lt;/sub&gt;X&lt;/a&gt;'ом для создания документации — расстраивает Дональда Кнута.&lt;br /&gt;&lt;br /&gt;Dixi.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:84147</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/84147.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=84147"/>
    <title>Software engineer's code of ethics</title>
    <published>2009-06-29T10:11:34Z</published>
    <updated>2009-06-29T11:23:47Z</updated>
    <category term="standards"/>
    <category term="development"/>
    <content type="html">Моральный кодекс профессионального разработчика:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.computer.org/certification/ethics.htm"&gt;IEEE-CS/ACM Joint Task Force on Software Engineering Ethics and Professional Practices&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Последний пункт гласит: [...] software engineers shall continually endeavor to:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;8.09. Recognize that personal violations of this Code are inconsistent with being a professional software engineer. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Проверьте, можете ли вы называть себя профессионалом. Еще одна рекомендуемая статья по теме: &lt;a href="http://www.processimpact.com/articles/culture.pdf"&gt;Creating a software engineering culture (pdf)&lt;/a&gt; by Karl E. Wiegers.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:83626</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/83626.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=83626"/>
    <title>Highload &amp; benchmarks</title>
    <published>2009-06-25T11:29:53Z</published>
    <updated>2009-06-25T11:37:04Z</updated>
    <category term="web-development"/>
    <category term="benchmarks"/>
    <category term="highload"/>
    <content type="html">Мне уже давно приходится сталкиваться с нагруженными системами, но вопрос о существовании стандартной методики оценки производительности долгое время для меня оставался открытым.&lt;br /&gt;&lt;br /&gt;Похоже, мне удалось, наконец, найти хорошую отправную точку в этом вопросе. Встречайте всемирно признанного авторитета: &lt;a href="http://www.tpc.org/"&gt;Transaction Processing Performance Council&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Основные предлагаемые бенчмарки:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tpc.org/tpc_app/default.asp"&gt;TPC-App&lt;/a&gt; is an Application Server and web services benchmark&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tpc.org/tpcc/default.asp"&gt;TPC-C&lt;/a&gt; is an on-line transaction processing benchmark&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tpc.org/tpce/default.asp"&gt;TPC Benchmark™ E&lt;/a&gt; (TPC-E) is a new On-Line Transaction Processing (OLTP) workload&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tpc.org/tpch/default.asp"&gt;TPC-H&lt;/a&gt; is an ad-hoc, decision support benchmark</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:82652</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/82652.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=82652"/>
    <title>Знаю, что боян, но пусть эта цитата будет здесь</title>
    <published>2009-06-22T10:24:24Z</published>
    <updated>2009-06-22T10:25:46Z</updated>
    <category term="management"/>
    <category term="quotes"/>
    <content type="html">«Adding manpower to a late software project makes it later»&lt;br /&gt;--&lt;br /&gt;Frederick Phillips Brooks</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:81062</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/81062.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=81062"/>
    <title>Его нужно знать в лицо :)</title>
    <published>2009-06-08T18:40:48Z</published>
    <updated>2009-06-08T18:43:48Z</updated>
    <category term="лица"/>
    <category term="люди"/>
    <content type="html">Благодаря этому человеку обычные покупатели Apple превращаются в религиозных фанатиков:&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src="http://img34.imageshack.us/img34/4515/37129216.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Угадали, кто это?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:80871</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/80871.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=80871"/>
    <title>Школьная заметка</title>
    <published>2009-06-08T09:00:52Z</published>
    <updated>2009-06-08T11:00:22Z</updated>
    <category term="school"/>
    <category term="development"/>
    <content type="html">В то время, как наши учителя и преподаватели кропотливо часами, сутками проверяют сочинения по русскому языку и литературе, написанные от руки школьниками и абитуриентами, в развитых странах придумали, как автоматизировать и эту работу.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vantagelearning.com/school/products/intellimetric/"&gt;IntelliMetric®&lt;/a&gt; — автоматизированная система выставления оценки за письменное сочинение. Фактически уже сейчас является международным стандартом и используется при тестировании кандидатов, поступающих на некоторые отделения самых престижных школ (например, в Гарвард, &lt;a href="http://www.sbs.ox.ac.uk/MFE/Class+profile.htm"&gt;Оксфорд&lt;/a&gt; etc). Появилась система всего пару лет назад, и насколько мне известно, русскоязычных аналогов в природе не существует.&lt;br /&gt;&lt;br /&gt;По утверждению разработчиков программа способна распознавать обман в 95% случаев и часто дает более точную оценку, чем сам человек. Но ввиду серьезности экзамена, человек все-таки выставляет вторую независимую оценку, и если разница между оценками человека и робота превысит один балл (по семибальной шкале), привлекается еще один, третий эксперт.&lt;br /&gt;&lt;br /&gt;Это очередной интересный пример наукоемкой коммерческой разработки, которая проходила по принципу „what is possible to make“, not „what is possible to sell“.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:79974</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/79974.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=79974"/>
    <title>Кризис социальных сетей</title>
    <published>2009-05-27T18:00:59Z</published>
    <updated>2009-05-27T18:03:40Z</updated>
    <content type="html">«Создатель пакетной технологии компьютерных сетей Ethernet Роберт Меткалф однажды вывел формулу, согласно которой полезность любой сети прямо пропорциональна квадрату численности ее пользователей».&lt;br /&gt;&lt;br /&gt;Помните про &lt;a href="http://en.wikipedia.org/wiki/Dot-com_bubble"&gt;dot-com bubble&lt;/a&gt;, который лопнул весной 2000-го года?&lt;br /&gt;&lt;br /&gt;Год назад &lt;a href="http://www.kommersant.ru/doc.aspx?docsid=855711"&gt;«Коммерсантъ» посчитал&lt;/a&gt;, что кризис социальных сетей тоже не за горами. Оправдываются ли ожидания? Что будет дальше?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:79480</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/79480.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=79480"/>
    <title>Business Vision</title>
    <published>2009-05-25T10:26:35Z</published>
    <updated>2009-05-25T20:18:40Z</updated>
    <category term="marketing"/>
    <category term="development"/>
    <content type="html">Пришел к выводу, что с точки зрения мотивации разработка бывает только двух типов: либо она ориентирована на маркетинг, либо на технологию.&lt;br /&gt;&lt;br /&gt;При разработке первого типа производится продукт, который будет приносить прибыль (what is possible to sell). Разработка второго типа ориентировано на исследование того, что вообще можно было бы произвести (what is possible to make).&lt;br /&gt;&lt;br /&gt;Разработчик должен стремиться отдать предпочтение общественно полезным технологиям, нежели мнению отдельно взятых маркетологов.&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;upd: спонсор поста — &lt;a href="http://en.wikipedia.org/wiki/Tim_Berners-Lee"&gt;Sir Timothi ¨Tim¨ Berners-Lee&lt;/a&gt;&lt;/sub&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:78322</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/78322.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=78322"/>
    <title>Подсмотрел у Фаулера</title>
    <published>2009-05-15T10:57:53Z</published>
    <updated>2009-05-15T11:59:53Z</updated>
    <category term="development"/>
    <category term="fowler"/>
    <content type="html">Простая, но концептуальная идея классификации бизнес-логики приложения состоит в выделении трех последовательных частей:&lt;br /&gt;&lt;br /&gt;— валидация (validation): проверяем, что входящие данные имеют смысл и должным образом подходят для выполнения дальнейших действий;&lt;br /&gt;— воздействие (consequence): запускаем какое-нибудь действие, которое изменяет состояние системы (переворачивает мир™);&lt;br /&gt;— проведение вывода (derivation): извлекаем некую информацию на основе той информации, которую мы уже имеем (строим проекцию данных).&lt;br /&gt;&lt;br /&gt;При этом части не всегда обязательны. Например, при просмотре списка имеющихся сообщений может происходить только вывод, при логгировании сообщения — только валидация и воздействие.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:76153</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/76153.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=76153"/>
    <title>Symlinks &amp; php feature</title>
    <published>2009-04-08T15:30:36Z</published>
    <updated>2009-04-09T14:56:06Z</updated>
    <category term="development"/>
    <content type="html">Обнаружил интересную особенность при работе с симлинками, пока воспроизвел только в php: если по ходу выполнения скрипта меняется симлинк, то fopen его не подхватывает, и работает со ссылкой на старый файл. Примечтаельно, что аналогичные инструкции на C работают, как и ожидалось. Код под катом.&lt;br /&gt;&lt;br /&gt;UPD: проблема решена, нужно использовать clearstatcache().&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ mkdir dir1 dir2; echo null1 &amp;gt; dir1/file; echo null2 &amp;gt;dir2/file&lt;br /&gt;$ php -r "        system('rm -f link');&lt;br /&gt;         system('ln -s dir1 link');&lt;br /&gt;&lt;br /&gt;         echo readlink('./link').PHP_EOL;&lt;br /&gt;&lt;br /&gt;         file_put_contents('./link/file', 'line1'.PHP_EOL);&lt;br /&gt;&lt;br /&gt;         system('rm -f link');&lt;br /&gt;         system('ln -s dir2 link');&lt;br /&gt;&lt;br /&gt;         echo readlink('./link').PHP_EOL;&lt;br /&gt;&lt;br /&gt;         file_put_contents('./link/file', 'line2'.PHP_EOL);&lt;br /&gt; "&lt;br /&gt;dir1&lt;br /&gt;dir2&lt;br /&gt;$&lt;br /&gt;$ cat dir1/file ; cat dir2/file&lt;br /&gt;line2&lt;br /&gt;null2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;А ожидаем:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;line1&lt;br /&gt;line2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;UPD: Код на C, который приводит к ожидаемому результату:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;	int fd;&lt;br /&gt;&lt;br /&gt;	system("rm -f link");&lt;br /&gt;	system("ln -s dir1 link");&lt;br /&gt;&lt;br /&gt;	fd = fopen("./link/file", "wb");&lt;br /&gt;	fputs("line1\n", fd);&lt;br /&gt;	fclose(fd);&lt;br /&gt;&lt;br /&gt;	system("rm -f link");&lt;br /&gt;	system("ln -s dir2 link");&lt;br /&gt;&lt;br /&gt;	fd = fopen("./link/file", "wb");&lt;br /&gt;	fputs("line2\n", fd);&lt;br /&gt;	fclose(fd);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;	return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:75843</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/75843.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=75843"/>
    <title>Vim ist da powah #2</title>
    <published>2009-04-02T15:26:04Z</published>
    <updated>2009-04-02T15:26:04Z</updated>
    <category term="vim"/>
    <content type="html">&lt;a href="http://vimperator.org/"&gt;Vimperator&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Пост, доказывающий превосходство vi над другими жалкими программами.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:75743</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/75743.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=75743"/>
    <title>Vim ist da powah</title>
    <published>2009-04-02T09:04:20Z</published>
    <updated>2009-04-02T09:04:20Z</updated>
    <category term="ide"/>
    <category term="development"/>
    <category term="vim"/>
    <content type="html">Еще одна заметка, доказывающая превосходство vi над другими жалкими IDE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ken.ath.cx/kens_code_pit/2009/04/01/minor-annoyance-about-eclipse/"&gt;Minor annoyance about Eclipse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;«I have been recommended to take a look at &lt;a href="http://eclim.sourceforge.net/"&gt;Eclim&lt;/a&gt; to see if it would fit my needs. It seems like an interesting effort and I would sort of love to have vim with eclipses integration functionality but it just seems like a whole lot of work for what you get»</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:75099</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/75099.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=75099"/>
    <title>MVC in theory</title>
    <published>2009-03-30T12:05:08Z</published>
    <updated>2009-04-01T12:25:13Z</updated>
    <category term="development"/>
    <category term="mvc"/>
    <content type="html">MUST&lt;sup&gt;*&lt;/sup&gt; read: &lt;a href="http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf"&gt;Enforcing Strict Model-View Separation in Template Engines&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:smaller;"&gt;* - word is to be interpreted as described in &lt;a href="http://www.ietf.org/rfc/rfc2119.txt"&gt;RFC 2119&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Further reading: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.create.ucsb.edu/~stp/PostScript/mvc.pdf"&gt;A Description of the Model-View-Controller User Interface Paradigm in the Smalltalk-80 System&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://markmail.org/message/b6ivfrm6vumwakzq"&gt;separating C from V in MVC&lt;/a&gt; (historical discussion in org.apache.perl.modperl)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:74773</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/74773.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=74773"/>
    <title>home configs</title>
    <published>2009-03-26T05:18:58Z</published>
    <updated>2009-03-26T05:19:17Z</updated>
    <category term="linux"/>
    <category term="development"/>
    <category term="bookmarks"/>
    <content type="html">Какой интересный сайт нашел случайно: &lt;a href="http://dotfiles.org/"&gt;dotfiles.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Я для своих конфигов использую svn-репозиторий, и на всех хостах практически одинаковые чекауты держу, однако хранилище чужих конфигураций — тоже прелюбопытный ресурс.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:74583</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/74583.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=74583"/>
    <title>Открытое письмо президенту США</title>
    <published>2009-03-21T14:45:11Z</published>
    <updated>2009-03-21T14:45:11Z</updated>
    <content type="html">Dear user, remember: manual is your friend.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:73162</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/73162.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=73162"/>
    <title>XML</title>
    <published>2009-03-17T08:30:27Z</published>
    <updated>2009-03-17T08:30:27Z</updated>
    <category term="quotes"/>
    <content type="html">«You should &lt;i&gt;never&lt;/i&gt; need to edit XML content purely by hand»&lt;br /&gt;--&lt;br /&gt;Rod Johnson</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:dedm:72542</id>
    <link rel="alternate" type="text/html" href="http://dedm.livejournal.com/72542.html"/>
    <link rel="self" type="text/xml" href="http://dedm.livejournal.com/data/atom/?itemid=72542"/>
    <title>А вы знаете, что</title>
    <published>2009-03-15T18:05:25Z</published>
    <updated>2009-03-15T18:10:59Z</updated>
    <category term="фото"/>
    <category term="кино"/>
    <content type="html">Самый светосильный объектив в мире — &lt;a href="http://ogiroux.blogspot.com/2008/06/worlds-fastest-lens-zeiss-50mm-f07.html"&gt;Zeiss 50mm f/0.7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Всего в мире таких объективов десять, из них шесть — у NASA, а три принадлежали Стенли Кубрику.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.luciolepri.it/lc2/marcocavina/articoli_fotografici/Planar_50_0,7_ancetres/01.jpg" /&gt;</content>
  </entry>
</feed>
