<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0"><channel><title>записки Rulexec</title><link>http://www.rulexec.name/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Rulexec" /><description></description><language>en</language><managingEditor>noreply@blogger.com (Александр Рулёв)</managingEditor><lastBuildDate>Sun, 19 Feb 2012 04:37:16 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">88</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rulexec" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Rulexec</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Посетил sef.by to students</title><link>http://www.rulexec.name/2011/12/sefby-to-students.html</link><category>конференция</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Tue, 13 Dec 2011 11:05:52 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-5847752005441915917</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Привет! Сегодня побывал на, дословно, «&lt;a href="http://sts.sef.by/"&gt;Форум по программной инженерии для студентов&lt;/a&gt;».&lt;br /&gt;
&lt;br /&gt;
В целом, мне понравилось :). Разные были доклады, относительно много, некоторые немного скучные, некоторые весёлые. Нового ничего такого не узнал, тайну мира не открыли (чего, в принципе и не должно было быть на данном форуме). Однако я увидел, что вот, есть люди, которые что-то делают и у них есть в этом успех, что вот, есть крутые компании в Беларуси, а не мифы всё это, что есть стартаперы, есть какие-то тусовки и прочее-прочее-прочее.&lt;br /&gt;
&lt;br /&gt;
Жаль, конечно, что практически вся сфера IT, как там и сказали, находится в Минске. Если бы в моём городе были бы такие мероприятия, то было бы замечательно.&lt;br /&gt;
&lt;br /&gt;
Из докладчиков мне понравились 3 человека:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://twitter.com/mikitamikado" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="100" src="http://4.bp.blogspot.com/--laqMtRon3w/TuO6lFT0qCI/AAAAAAAABK8/xZ9OCR8GGRY/s200/mikita.jpg" /&gt;&lt;/a&gt;&lt;a href="http://twitter.com/mikitamikado"&gt;Микита Микадо&lt;/a&gt; — стартапер, CEO &lt;a href="http://www.quoteroller.com/"&gt;QuoteRoller&lt;/a&gt; и &lt;a href="http://www.codingstaff.com/"&gt;CodingStaff&lt;/a&gt;. Эдакий тусовщик, сбежавший из универа в Америку, ну и окунулся в это всё. Рассказывал, если в двух словах, про то, что начинать нужно &lt;b&gt;СЕЙЧАС&lt;/b&gt;. Неважно что, главное начинать и делать. Хоть &lt;i&gt;драйвер для принтера&amp;nbsp;&lt;/i&gt;;).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://plus.google.com/111512356605658929685" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Q5oCLL93c6U/TuO6nR7vWSI/AAAAAAAABLM/c1iDC1Vdisc/s1600/vlad.jpg" /&gt;&lt;/a&gt;&lt;a href="https://plus.google.com/111512356605658929685"&gt;Влад "mend0za" Шахов&lt;/a&gt; — рассказывал про &lt;b&gt;Linux&lt;/b&gt;, использование линукса во встроенных системах и всё такое связанное. В двух словах — используй linux везде, где ты хочешь написать свою ось. Т.е. вместо того чтобы на навороченный чайник под микроконтроллер писать свой кривой велосипед лучше взять ядро линукс, написать драйверов подогрева воды и всё будет лучше,&amp;nbsp;совместимее&amp;nbsp;и так далее.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://twitter.com/alovak" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-5fGFxFBli6Q/TuO6mDm6cXI/AAAAAAAABLE/6J-Cxe4HsAI/s1600/pavel.jpg" /&gt;&lt;/a&gt;&lt;a href="http://twitter.com/alovak"&gt;Павел Габриэль&lt;/a&gt; — говорил "о жизни". Про то, что такое работа, как мы её себе представляем. Про то, что наше представление о мире формирует реальность и прочие вещи. Слайды были понятные, без кучи текста. Он единственный на этом форуме не был «рабом» презентации. Слайды были для него, а не он для слайдов, как у большинсва остальных. Т.е. он как-бы подкреплял свои речи слайдами, а не объяснял, что на слайдах там такое. В общем, &lt;i&gt;Стив Джобс-лайк&lt;/i&gt;. Алсо, у него был макбук с наклейкой mongoDB.&lt;br /&gt;
&lt;br /&gt;
Так же там разыгрывался нетбук, но к сожалению, я его не выиграл. Ну, хоть свой не проиграл. Хотя хотелось бы сменить на что-нибудь другое.&lt;br /&gt;
&lt;br /&gt;
Немного по поводу &lt;a href="http://www.rulexec.name/2011/11/blog-post.html"&gt;игры&lt;/a&gt;. Тут внезапно оказалась, что следующая неделя — зачётная. Я вообще ничего не знал об этом. Так что мы решили заморозить любую разработку до того, пока не сдадим все экзамены и не закончится сессия. Я надеюсь, что таки сдам зачёты с экзаменами и не вылечу с первого же курса &lt;i&gt;(хотя по правде, я этого больше всего хочу, но родители будут не рады)&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Пока ехали обратно в поезде, придумали с другом идею для &lt;b&gt;Flash&lt;/b&gt;/&lt;b&gt;iPhone&lt;/b&gt;/&lt;b&gt;Android&lt;/b&gt;-игры забавной. Можно будет после сессии немного продлить заморозку социалки и попробовать реализовать по-быстрому эту идею, заработать немного денег. Может на ноут хватит. Хотя с моей ленью вряд ли я до конца сессии ещё в университете буду.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-5847752005441915917?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T22:05:52.200+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/--laqMtRon3w/TuO6lFT0qCI/AAAAAAAABK8/xZ9OCR8GGRY/s72-c/mikita.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><georss:featurename xmlns:georss="http://www.georss.org/georss">ДК МТЗ, ул. Долгобродская 24, Минск, Беларусь</georss:featurename><georss:point xmlns:georss="http://www.georss.org/georss">53.8899244 27.6132908</georss:point><georss:box xmlns:georss="http://www.georss.org/georss">53.8875849 27.608355300000003 53.892263899999996 27.6182263</georss:box></item><item><title>Текущий проект</title><link>http://www.rulexec.name/2011/11/blog-post.html</link><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Fri, 18 Nov 2011 02:59:47 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-4923307771401065428</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-wYT2muf1DMg/TsYr8HUDPXI/AAAAAAAABKs/f2QEfo9s4DI/s1600/Screenshot_3.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-wYT2muf1DMg/TsYr8HUDPXI/AAAAAAAABKs/f2QEfo9s4DI/s1600/Screenshot_3.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Привет! Как я и обещал &lt;a href="http://www.rulexec.name/2011/11/badmatch.html?showComment=1321095854168#c2820161567023599893"&gt;в комментариях&lt;/a&gt; к прошлому посту, расскажу немного о том, чем в данный момент занимаюсь.&lt;br /&gt;
&lt;br /&gt;
Собственно, где-то с конца лета я помогал питерским ребятам делать социалку, однако как-то не срослось, через какое-то время устал и ушёл. Совсем не комфортно, когда ты знаешь, что ты кому-то должен что-то и не имеешь над этим контроля.&lt;br /&gt;
&lt;br /&gt;
Ну а делать что-то нужно, без дела слишком уж уныло становится через какое-то время. Поэтому решили с друзьями делать тоже социалку. Тем более что у них тоже были идеи и они мне понравились :).&lt;br /&gt;
&lt;br /&gt;
Плюс ко всему, есть мотивация делать, за нами наблюдает одна большая компания, которая каждую неделю смотрит, что сделано, мы рассказываем, чего делали и чего будем делать дальше. И хоть мы на данный момент сделали не так уж и много (практически ничего), мы движемся, составляется кое-какая документация и всё хорошо.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-No404I5Bds4/TsYr8t4_SeI/AAAAAAAABK0/jFV_PkNPSQo/s1600/Screenshot_4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-No404I5Bds4/TsYr8t4_SeI/AAAAAAAABK0/jFV_PkNPSQo/s1600/Screenshot_4.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Игра про магию. Больше толком ничего не расскажу. Мы ориентируемся на социалку, однако по стилю игры это не совсем «тупо нажал, получил пряник, подарил пряник другу», там даже есть онлайновые PvP-битвы между игроками. Ну и их заменители, если с онлайном не ок.&lt;br /&gt;
&lt;br /&gt;
Если будет чего рассказать по архитектуре, или ещё по чём-нибудь, то напишу. Тут я не ограничен никакими неразглашениями.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;P.S. Эти картинки — скриншоты из экрана создания персонажа, если что :)&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-4923307771401065428?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-18T13:59:47.937+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-wYT2muf1DMg/TsYr8HUDPXI/AAAAAAAABKs/f2QEfo9s4DI/s72-c/Screenshot_3.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total></item><item><title>Определение места badmatch при вызове одинаковых функций</title><link>http://www.rulexec.name/2011/11/badmatch.html</link><category>Erlang</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Fri, 11 Nov 2011 20:24:49 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-4270482035893966909</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Итак, допустим, что у вас есть вот такой код:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
sometimes_not_ok(42) -&amp;gt;&lt;br /&gt;&amp;nbsp; not_ok;&lt;br /&gt;sometimes_not_ok(_) -&amp;gt;&lt;br /&gt;&amp;nbsp; ok.&lt;br /&gt;test() -&amp;gt;&lt;br /&gt;&amp;nbsp; ok = sometimes_not_ok(13),&lt;br /&gt;&amp;nbsp; ok = sometimes_not_ok(42).&lt;/blockquote&gt;
Функция sometimes_not_ok/1 возможно говорит с бд, или ещё чего-нибудь такого и может выбрасывать исключения/возвращать значения, которые никак не характеризуют аргументы, переданные ей.&lt;br /&gt;
&lt;br /&gt;
У нас есть 2 пути, как сделать так, чтобы мы знали, в каком месте случился фейл. Первый из них заключается в том, чтобы обернуть всё в case'ы:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
case sometimes_not_ok(13) of&lt;br /&gt;&amp;nbsp; ok -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; case sometimes_not_ok(42) of&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ok -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue_here;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; not_ok -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; not_ok_processing&lt;br /&gt;&amp;nbsp; &amp;nbsp; end;&lt;br /&gt;&amp;nbsp; not_ok -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; not_ok_processing&lt;br /&gt;end.&lt;/blockquote&gt;
Однако согласитесь, код при этом станет выглядеть ужасно. А если вам нужно будет поменять две строчки местами? А если у вас сотня таких вызовов? Да и это какое-то дефендное программирование выходит, у эрланга несколько другая концепция.&lt;br /&gt;
&lt;br /&gt;
Второй же наш вариант, использовать try/catch:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
try&lt;br /&gt;&amp;nbsp; ok = sometimes_not_ok(13),&lt;br /&gt;&amp;nbsp; ok = sometimes_not_ok(42)&lt;br /&gt;catch&lt;br /&gt;&amp;nbsp; error:{badmatch, not_ok} -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; not_ok_happened&lt;br /&gt;end.&lt;/blockquote&gt;
Уже намного лучше. Первоначальный код виден, его можно легко поправить, нет кучи&amp;nbsp;вложенных&amp;nbsp;условий. Однако... когда произойдёт {badmatch, not_ok}, мы не будем знать, на какой строке он произошёл, там где мы передали 18, или же 42? А вот нам позарез нужно выполнять там какие-то действия, если не ок.&lt;br /&gt;
&lt;br /&gt;
Ну и мне пришло в голову, что можно просто обернуть вызов функции в tuple. Вот так:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
try&lt;br /&gt;&amp;nbsp; {_, ok} = {first, sometimes_not_ok(13)},&lt;br /&gt;&amp;nbsp; {_, ok} = {second, sometimes_not_ok(42)}&lt;br /&gt;catch&lt;br /&gt;&amp;nbsp; error:{badmatch, {first, not_ok}} -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; not_ok_happened_first;&lt;br /&gt;&amp;nbsp; error:{badmatch, {second, not_ok}} -&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; not_ok_happened_second&lt;br /&gt;end.&lt;/blockquote&gt;
И тогда мы с лёгкостью можем определить, в каком из мест у нас badmatch. Конечно, внешний вид кода стал немножечко не таким красивым, но ведь согласитесь, так намного лучше, чем с кучей case'ов?&lt;br /&gt;
&lt;br /&gt;
Может быть, конечно, мой «способ» всем давно известен, тогда уж ладно. Но мои знания всё равно растут :).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-4270482035893966909?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T07:24:49.159+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Используем Erlang-макросы для сокращения повторений кода</title><link>http://www.rulexec.name/2011/10/erlang.html</link><category>Erlang</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Mon, 24 Oct 2011 08:22:03 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-7040442964199543947</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Немного предисловия. Данную статью я хотел запостить на хабр, однако она не была отмодерирована и не попала даже в песочницу. Может я и правда написал что-то не нужное, не знаю, но поэтому пишу сюда.&lt;br /&gt;
&lt;br /&gt;
В проекте, где я участвую, есть отдельный эрланг-модуль, у которого есть одна функция — &lt;b&gt;request&lt;/b&gt;, следующего формата:
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;request(Cmd, Args, ClientInfo, MongoSettings) -&amp;gt; ...&lt;/code&gt;&lt;/pre&gt;
Первым аргументом идёт binary(), который обозначает идентификатор метода (т.е. в этом модуле, назовём его api_methods, много-много определений функции request, с разными пре-заданными &lt;b&gt;Cmd&lt;/b&gt; (паттерн матчинг, в общем)), &lt;b&gt;второй&lt;/b&gt; — proplist с разными аргументами, &lt;b&gt;ClientInfo&lt;/b&gt; — состояние клиента, &lt;b&gt;MongoSettings&lt;/b&gt; — линк на монго-соединение, база, с которой мы работаем. В общем, это не так важно.&lt;br /&gt;
&lt;br /&gt;
До сегодняшнего дня, определение метода выглядело примерно так:
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;request(&amp;lt;&amp;lt;"method1"&amp;gt;&amp;gt;, Args, ClientInfo, MongoSettings) -&amp;gt;
  case {proplists:get_value(&amp;lt;&amp;lt;"arg1"&amp;gt;&amp;gt;, Args, undefined),
        proplists:get_value(&amp;lt;&amp;lt;"arg2"&amp;gt;&amp;gt;, Args, undefined)} of
    {Arg1, Arg2} when is_integer(Arg1) andalso
                      is_binary(Arg2) -&amp;gt;
      some_module:some_method(Arg1, Arg2, ClientInfo, MongoSettings);
    {_, _} -&amp;gt;
      {error_response, ClientInfo}
  end.&lt;/code&gt;&lt;/pre&gt;
При этом иногда количество аргументов довольно велико. И всё это разрастается в одну большую кашу. И таких блоков под полсотни уже. Я решил, что хорошо бы это хоть как-то объединить в какой-нибудь паттерн.&lt;br /&gt;
&lt;br /&gt;
Для этого я решил использовать макросы. Макрос, по сути, просто заменяет один кусок текста в вашей программе на другой (аналогично #define из C).&lt;br /&gt;
&lt;br /&gt;
Итак, как минимум нам нужно следующее:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Идентификатор метода&lt;/li&gt;
&lt;li&gt;Необходимые аргументы&lt;/li&gt;
&lt;li&gt;Guard'ы для этих аргументов&lt;/li&gt;
&lt;li&gt;Функция, в которую они будут переданы&lt;/li&gt;
&lt;/ul&gt;
Сделаем это:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;-define(METHOD(BinaryString, Arguments, CallbackModule, CallbackFunction),
    request(BinaryString, Args, ClientInfo, MongoSettings) -&amp;gt;
      request_macros(Args, ClientInfo, MongoSettings, Arguments, {CallbackModule, CallbackFunction})
).&lt;/code&gt;&lt;/pre&gt;
Тем самым мы определяем макрос &lt;b&gt;METHOD&lt;/b&gt;, принимающий четыре аргумента: идентификатор метода, список его аргументов (об этом чуть далее), модуль и функция, которую нужно будет запустить.&lt;br /&gt;
&lt;br /&gt;
Итак, формат аргументов будет следующим:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;[ {&amp;lt;&amp;lt;"arg-name"&amp;gt;&amp;gt;, [ guard1, guard2, ... , guardN]} ]&lt;/code&gt;&lt;/pre&gt;
Формат Guard'а (извиняюсь, не знаю, как правильно перевести, не защитник же):&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;{module, function}&lt;/code&gt;&lt;/pre&gt;
Где module — имя модуля, function — имя функции, которая принимает аргумент и возвращает либо true, либо false.&lt;br /&gt;
&lt;br /&gt;
request_macros — наш вспомогательный метод, который будет собственно и реализовывать все эти проверки.&lt;br /&gt;
&lt;br /&gt;
Его код:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;request_macros(Args, ClientInfo, MongoSettings, Arguments, {CallbackModule, CallbackFunction}) -&amp;gt;
  try lists:foldr(fun({ArgName, Guards}, Filled) -&amp;gt;
      case proplists:get_value(ArgName, Args, undefined) of
        undefined -&amp;gt; % Если в proplist'е нет такого аргумента, то выходим из foldr'а
          throw(missmatch);
        Value -&amp;gt;
          % проходимся по списку гвардов, проверяем каждое значение,
          % если возвращает false — покидаем foldr, иначе заполняем список аргументами
          lists:foreach(fun({Module, Function}) -&amp;gt;
              CheckGuard = apply(Module, Function, [Value]),
              if
                not CheckGuard -&amp;gt;
                  throw(missmatch);
                true -&amp;gt;
                  ok
              end
          end, Guards),
          [Value | Filled]
      end
  end, [], Arguments) of
    % Если всё ок и ошибки нет, просто вызываем функцию, которую должны
    CommandArgs -&amp;gt;
      apply(CallbackModule, CallbackFunction, CommandArgs ++ [ClientInfo, MongoSettings]),
  catch
    % В случае, если что-то не сошлось, говорим, что запрос плохой
    throw:missmatch -&amp;gt;
      {error_response, ClientInfo}
  end.&lt;/code&gt;&lt;/pre&gt;
Я думаю, что комментарии дают понять, что делает данная функция. Я поясню только две вещи.&lt;br /&gt;
&lt;br /&gt;
Первое это то, что вместо foldl я использовал foldr, чтобы просто можно было написать [El | Arr], а не Arr ++ [El], по сути, я думаю, не особо важно, что тут использовать. Если нет, сообщите об этом, буду рад.&lt;br /&gt;
&lt;br /&gt;
Ну и второе — довольно долго я не знал, как же выйти из foreach'а, fold[l | r], прочих таких обходов. И вот, пришла мысль, что можно же просто повалить этот обход исключением и словить его выше. Вот так вот.&lt;br /&gt;
&lt;br /&gt;
Ну и как итог, вместо монструозных методов у меня вышли довольно небольшие (в среднем 1-5 строк) вызовы макросов. Т.е. мой пример превращается в:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;?METHOD(&amp;lt;&amp;lt;"method1"&amp;gt;&amp;gt;, [
            {&amp;lt;&amp;lt;"arg1"&amp;gt;&amp;gt;, [{erlang, is_integer}]},
            {&amp;lt;&amp;lt;"arg2"&amp;gt;&amp;gt;, [{erlang, is_binary}]}
    ], some_module, some_method);&lt;/code&gt;&lt;/pre&gt;
Довольно локанично, не находите?&lt;br /&gt;
&lt;br /&gt;
Если есть какие-то советы, или ярость, по поводу того, что нельзя так делать или я делаю что-то не так, призываю вас в комментарии.&lt;br /&gt;
&lt;br /&gt;
Спасибо.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-7040442964199543947?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-24T18:22:03.173+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Принимаются ваши запросы на статьи</title><link>http://www.rulexec.name/2011/10/blog-post.html</link><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Mon, 10 Oct 2011 13:17:23 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-5682955878890489126</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Привет! Что-то я совсем не пишу, в последнее время. Ну, на самом деле это вполне объяснимо, учёба, разработка штуки, про которую я не могу рассказывать, и всякое разное.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Итак, я пораскинул мозгами и вот что подумал. Так как сейчас у меня нет каких-то решений, про которые я мог бы вам рассказывать, почему бы вы не могли найти мне эти решения? Я в том смысле, что я вроде бы немного умный, знаю всякие штуки, имею какой-то опыт.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
В связи с чем даю вам ссылочку на &lt;a href="https://docs.google.com/spreadsheet/viewform?formkey=dDdXSnUySldPOVZjVGhDdWswU1dQTXc6MQ"&gt;гуглоформу&lt;/a&gt;, оставив там запрос вы можете попросить меня изложить какой-либо материал по данной теме (я умею Python, javascript, немного Erlang, HTML, CSS, можно иное, не суть, главное чтобы оно было интересно).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Обращайтесь ;)&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-5682955878890489126?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-10T23:17:23.016+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Bitcommunity</title><link>http://www.rulexec.name/2011/10/bitcommunity.html</link><category>сообщество</category><category>bitcoin</category><category>bitcommunity</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 05 Oct 2011 06:04:50 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-5987115280617316740</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Описал некоторые свои идеи по поводу создания&amp;nbsp;распределенной&amp;nbsp;системы кармы.&lt;br /&gt;
&lt;br /&gt;
В двух словах — форк биткоина. В многобукв —&amp;nbsp;&lt;a href="http://wikistan.net/blog/9.html"&gt;http://wikistan.net/blog/9.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-5987115280617316740?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-05T16:04:50.177+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>heartbeat-пост</title><link>http://www.rulexec.name/2011/08/heartbeat.html</link><category>жизнь</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 31 Aug 2011 12:32:26 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-791174331680945741</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Привет, читатель. Судя по дате последнего поста, я писал примерно 2 месяца назад.&lt;br /&gt;
&lt;br /&gt;
Просто летом для меня не происходило особо чего-либо значимого, о чём стоило бы написать. Потратил много времени ни на что, можно сказать лежал и ничего не делал.&lt;br /&gt;
&lt;br /&gt;
Поступил в университет, буду учиться потихонечку. Специальность — &lt;b&gt;Прикладная математика&lt;/b&gt;. Там что-то про математический анализ,&amp;nbsp;дифференциальные&amp;nbsp;уравнения и программирование.&lt;br /&gt;
&lt;br /&gt;
На IT-фронте у меня тоже всё хорошо,&amp;nbsp;участвую&amp;nbsp;в одном довольно большом проекте, как будет закончен — расскажу. Возможно даже с какими-нибудь деталями и сложностями в разработке.&lt;br /&gt;
&lt;br /&gt;
Кстати, у меня есть &lt;a href="https://plus.google.com/109972072798220984812/posts"&gt;Google+ аккаунт&lt;/a&gt;, куда я пишу совсем небольшие заметки, вот.&lt;br /&gt;
&lt;br /&gt;
Как найдётся часик свободного времени — перескажу вам &lt;a href="https://plus.google.com/109972072798220984812/posts/S2LabUATVqK"&gt;технику Помодоро&lt;/a&gt; &lt;i&gt;(The Pomodoro Technique)&lt;/i&gt;, мне она довольно приглянулась.&lt;br /&gt;
&lt;br /&gt;
Простите за сумбурность, просто хотел рассказать что да как. Я живой :).&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-791174331680945741?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-31T22:32:26.649+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Эгея это не для меня</title><link>http://www.rulexec.name/2011/07/blog-post_05.html</link><category>блог</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Tue, 05 Jul 2011 11:37:34 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-8056661463071741623</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Сегодня попробовал &lt;a href="http://ilyabirman.ru/meanwhile/2011/07/05/3/"&gt;Эгею 2.0β&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Однако описание блога не согласилось с моей стрелкой &lt;i&gt;(←)&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Всё-таки мне нужно пилить свой блог-движок, с &lt;i&gt;блекджеком и шлюхами&lt;/i&gt;. А то у всех есть, а я как&amp;nbsp;не человек.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Кстати, в данный момент я занят реализацией «&lt;a href="http://www.rulexec.name/2011/06/p2p.html"&gt;аудио-торрентов&lt;/a&gt;». Когда оно хотя-бы музыку будет стримить по запросу, поделюсь ссылкой, где и как потестировать можно.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-8056661463071741623?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-05T21:37:34.930+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Дата результатов конкурса CUBRID it! перенесена</title><link>http://www.rulexec.name/2011/07/cubrid-it.html</link><category>конкурс</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Tue, 05 Jul 2011 02:53:05 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-2828105180031974770</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Сегодня должны были быть результаты &lt;a href="http://www.rulexec.name/2011/06/cubrid-it-programming-contest.html"&gt;конкурса&lt;/a&gt;. Однако, на его &lt;a href="http://www.cubrid.org/cubrid_it"&gt;странице&lt;/a&gt; я увидел вот такую&amp;nbsp;надпись:&lt;br /&gt;
&lt;blockquote&gt;
Update: due to the fact that there were lots of submitted solutions it will us take longer to evaluate all of them. The final results will be published on July 11th. Thank you for your patience.&lt;/blockquote&gt;
Что не может не радовать. Ведь есть ещё вероятность, что я всё-таки что-то выиграл, хоть и небольшая.&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-2828105180031974770?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-05T12:53:05.487+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Яндекс наконец всё поправил, а я нуб</title><link>http://www.rulexec.name/2011/07/blog-post.html</link><category>яндекс</category><category>конкурс</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sat, 02 Jul 2011 03:08:51 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-8886445716245883423</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Сегодня убрал с &lt;a href="http://rulexec.name/"&gt;http://rulexec.name/&lt;/a&gt; редирект. Попробовал добавить его в Яндекс, а оно мне сказало, что наконец www. стал главным зеркалом и наконец &lt;a href="http://yandex.by/yandsearch?serverurl=http%3A%2F%2Fwww.rulexec.name%2F"&gt;в выдаче&lt;/a&gt; не только главная страница.&lt;br /&gt;
&lt;br /&gt;
Ну что же. Я рад :). Теперь если я вдруг напишу чего-нибудь полезного, шансы найти это будут выше.&lt;br /&gt;
&lt;br /&gt;
Вот раньше я действительно пытался писать максимально полезные посты насколько мог. А теперь пишу всякую ерунду интересную лишь мне, в основном.&lt;br /&gt;
&lt;br /&gt;
Кстати, письма вчера от &lt;a href="http://www.rulexec.name/2011/06/cubrid-it-programming-contest.html"&gt;CUBRID&lt;/a&gt; не пришло. Скорее всего я ничего не выиграл и мне не повезло. Но всё равно ожидаю пятого числа, чтобы увидеть список победителей и узнать, что да как.&lt;br /&gt;
&lt;br /&gt;
У меня, кстати, вопрос. Что мне сделать с rulexec.name (которое без www.)? Может какую-нибудь страничку типа about замутить?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-8886445716245883423?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-02T13:08:51.742+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Что бы я делал, если бы у меня был миллион или больше</title><link>http://www.rulexec.name/2011/06/blog-post_28.html</link><category>хитроплан</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Mon, 27 Jun 2011 14:16:38 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-2971409035196354408</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Сейчас вот понял, куда бы я потратил очень большое количество денег, если бы они у меня были бы. Если бы да кабы.&lt;br /&gt;
&lt;br /&gt;
Я бы создал свою веб-студию, как бы это не было банальным. Но не для выполнения чужих заказов, нет. Скорее только своих личных прихотей. Ибо желаний море, идей тоже достаточно, а реализовывать самому не интересно, да и надоедает быстро.&lt;br /&gt;
&lt;br /&gt;
А так вот у меня были бы деньги и я мог бы держать команду, которая всё что делает — это решает мои проблемы. Ну и занимается интересным делом, других людей я бы не брал.&lt;br /&gt;
&lt;br /&gt;
Работа удалённая, полная занятость. Знания в программирования не особо важны, главное умение обучаться и умение мыслить не всегда стандартно, с любого ракурса.&lt;br /&gt;
&lt;br /&gt;
Давайте посчитаем. Например, у меня есть &lt;b&gt;$1,000,000&lt;/b&gt;. Будем считать, что месячная зарплата любого моего сотрудника &lt;b&gt;$5,000&lt;/b&gt; в месяц. Я набрал в команду следующих людей:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Сисадмина&lt;/b&gt;, который настраивает сервера для наших серверных приложений&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Художника&lt;/b&gt;, рисующего всякие красивые штуки&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Дизайнера&lt;/b&gt;, который умеет делать понятные интерфейсы и приятные шаблоны&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Верстальщика&lt;/b&gt;, который делает совсем некроссбраузерную вёрстку и идеально верстает только для текущей версии Google Chrome, немного знаком с js&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Программиста&lt;/b&gt;, который хорошо владеет &lt;b&gt;javascript&lt;/b&gt; и ActionScript3&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Программиста&lt;/b&gt;, который умеет делать не особо сложные &lt;b&gt;django&lt;/b&gt;-проекты, а так же приглядывается к Erlang'у&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Программиста&lt;/b&gt;, который имеет бороду и пишет на &lt;b&gt;С++&lt;/b&gt; хорошо работающие программы под Windows, Linux и Mac&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Меня&lt;/b&gt;, как наблюдающего, помогающего и указывающего&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
8 человек включая меня (я тоже сотрудник, да). Произведём нехитрые калькуляции:&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&amp;gt;&amp;gt;&amp;gt; 1000000 / (5000 * 8) # все эти люди вместе кушают $40k в месяц :)&lt;br /&gt;25&lt;/blockquote&gt;
Хотя можно давать им и по $2k. На просторах СНГ этого вполне будет хватать, учитывая то, что средняя зарплата ниже в несколько раз.&lt;br /&gt;
&lt;br /&gt;
Т.е. имея миллион, я могу кормить людей чуть совсем немногим двух лет. Что бы я делал, с такой командой? Ох, как я уже говорил, у меня множество идей, которые мне бы хотелось воплотить в жизнь и посмотреть, что выйдет.&lt;br /&gt;
&lt;br /&gt;
На одном из уровней игры &lt;i&gt;Portal 2&lt;/i&gt; диктор говорил что-то типа «на самом деле мы просто кидаем наукой в стенку и смотрим, что прилипло». Я хочу делать то же самое, но с разработкой ПО. Реализовывать идеи, которые приходят мне, либо моей команде в голову, насколько безумыми они бы не казались. Главное, чтобы они были хоть немного адекватными.&lt;br /&gt;
&lt;br /&gt;
Хотя скоро я начну реализовывать эти идеи. Сразу же после &lt;a href="http://spawnfest.com/"&gt;spawnfest&lt;/a&gt;'а. А так же во время его, хехе.&lt;br /&gt;
&lt;br /&gt;
И пусть даже у меня пока нет миллиона, у меня много амбиций, самоуверенности и глупости. Пожелайте мне удачи ;)&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-2971409035196354408?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-28T00:16:38.790+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Рекламный движок с биржевым ценообразованием</title><link>http://www.rulexec.name/2011/06/blog-post_23.html</link><category>идея</category><category>реклама</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Thu, 23 Jun 2011 10:29:41 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-3283198959581920989</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;a href="http://butylk.us/"&gt;Бутылк.Ус&lt;/a&gt; поделился своей идеей &lt;a href="http://butylk.us/kogda-ne-znaesh-za-chto-xvatatsya/23/06/2011/"&gt;стёбного рекламного движка&lt;/a&gt;. Ну и мне пришла забавная идея, тоже по ценообразованию стоимости рекламы. Для того, чтобы понять, о чём я говорю, вам нужно хотя-бы &lt;a href="http://habrahabr.ru/blogs/startup/120928/"&gt;представлять, как работает биржа&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Суть.&lt;br /&gt;
&lt;br /&gt;
У нас есть люди, которую хотят у вас купить рекламу, а так же вы, кто хочет её продать, наиболее выгодно для себя.&lt;br /&gt;
&lt;br /&gt;
И вот смотрите. Рекламное место в месяц приносит какое-то количество показов, которые нам нужно продавать заранее, т.к. если на месте не окажется рекламы, то этот показ бесполезен, для конечного рекламодателя. Т.е. мы, как владелец площадки производим некий скоропортящийся продукт, который, тем не менее можем продавать.&lt;br /&gt;
&lt;br /&gt;
Почему бы не устроить продажу этого товара в виде биржи? Например, смотря на своё среднее кол-во показов рекламной строки Daos я вижу, что &lt;b&gt;1 мой показ стоит 4 копейки&lt;/b&gt;. Я захожу в админку, настраиваю продажу показов блоками по 100 штук, и выставляю на биржу 100 блоков&amp;nbsp;(т.е. 10 тысяч показов)&amp;nbsp;по разным ценам, начиная от 4 рублей за 100 показов и заканчивая 10 рублями за сотню:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;10.00&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;50&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;07.00&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;25&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;05.00&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;15&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;04.00&amp;nbsp;10&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Рекламодатель, зайдя на страницу системы может сразу же купить 25 сотен показов по 4 рубля за сотню (итого 100 рублей за 2500 показов), либо их плюс ещё сколько-нибудь по 5 рублей и так далее.&lt;br /&gt;
&lt;br /&gt;
Но, если рекламодателя цена не устраивает и он не готов заплатить столько, то он может предложить свою цену. Вместе с другими предложениями может выйти так:&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;10.00&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;50&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;07.00&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;25&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;05.00&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;15&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: red;"&gt;04.00&lt;/span&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;&amp;nbsp;10&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;03.50 20&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;03.00 25&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;02.00 75&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #38761d;"&gt;01.00 100&lt;/span&gt;&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Владелец площадки же может продать некое кол-во блоков по цене, установленной рекламодателем, если никто не хочет покупать показы по установленной им цене.&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Ну и при совершении сделки, рекламодатель приходит на страницу системы, видит, что у него в портфеле есть, например, 10&amp;nbsp;купленных&amp;nbsp;блоков, т.е. 1000 показов, которыми он может распоряжаться как хочет.&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
Таким образом цена может &lt;span class="Apple-style-span" style="color: red;"&gt;понижаться&lt;/span&gt; (если владелец площадки продаёт показы по установленной рекламодателями цене), либо &lt;span class="Apple-style-span" style="color: #38761d;"&gt;повышаться&lt;/span&gt; (если рекламодатель сам выкупает показы, предложенные веб-мастером).&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-3283198959581920989?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T20:29:41.182+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>CUBRID it! Programming Contest</title><link>http://www.rulexec.name/2011/06/cubrid-it-programming-contest.html</link><category>конкурс</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 22 Jun 2011 14:00:04 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-8876538366516146124</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Узнал с &lt;a href="http://habrahabr.ru/company/cubrid/blog/120226/"&gt;Хабра&lt;/a&gt; о одном &lt;a href="http://www.cubrid.org/cubrid_it"&gt;конкурсе&lt;/a&gt;. Призы мне понравились, фотоаппарат бы не помешал :). Хотя особо не рассчитывая на победу я особо не заморачивался и решил всё банально и просто.&lt;br /&gt;
&lt;br /&gt;
Сначала я хотел реализовывать свой алгоритм на PHP, но, к сожалению, PHP-модуль CUBRID не хотел устанавливаться. Поэтому я решил использовать Java. Хотя я писал на этом языке всего 2 раза в жизни, это не было особой проблемой.&lt;br /&gt;
&lt;br /&gt;
Итак, задание следующее:&lt;br /&gt;
&lt;blockquote&gt;
Given all the tables in a database (but only the user tables, not also the system tables), determine:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;The value which occurs the most times.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;The number of occurrences for the value found above.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
Т.е. нам нужно глянуть все таблицы в базе данных и определить наиболее часто повторяющееся значение.&lt;br /&gt;
&lt;br /&gt;
Я тестировал своё приложение на базе данных demodb, которая поставляется вместе с CUBRID'ом.&lt;br /&gt;
&lt;br /&gt;
Итак, я немного подумав, понял, для того, чтобы найти повторяющийся элемент в столбце мы можем использовать &lt;b&gt;group by statement&lt;/b&gt;. Для подсчёта количества повторов же — метод агрегации &lt;b&gt;sum&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Выглядит мой запрос следующим образом:&lt;br /&gt;
&lt;blockquote&gt;
select nation_code,sum(1) as "cnt" from "athlete" group by nation_code order by "cnt" desc;&lt;/blockquote&gt;
Теперь нужно выполнить ещё одно условие задания:&lt;br /&gt;
&lt;blockquote&gt;
...and it is “non-numeric”! (“non-numeric” means that the respective value does not contain only digits – it must contain at least one non-digit character; for example, “1298” is “numeric”, but “12,98” is “non-numeric” ( and also “12.98” ), because it contains the “,” character ; same goes for “-100” – it is considered “non-numeric” as well, because of the “-” sign).&lt;/blockquote&gt;
Столбцы могут быть разных типов, поэтому приведём их к типу &lt;b&gt;varchar(255)&lt;/b&gt;:&lt;br /&gt;
&lt;blockquote&gt;
select cast(nation_code as VARCHAR(255)),sum(1) as "cnt" from "athlete" group by nation_code order by "cnt" desc;&lt;/blockquote&gt;
Теперь нам нужно проверить, есть ли в приведённой строке символы, отличные от цифр. К сожалению, в CUBRID &lt;b&gt;LIKE "%[^0-9]%"&lt;/b&gt; не работает. Поэтому мне пришлось искать другой путь сделать это.&lt;br /&gt;
&lt;br /&gt;
В итоге я нашёл функцию TRANSLATE, которая может заменять одни символы в строке на другие. Недолго думая я сделал вот так:&lt;br /&gt;
&lt;blockquote&gt;
where TRANSLATE(cast(nation_code as VARCHAR(255)), '0123456789','') &amp;lt;&amp;gt; ''&lt;/blockquote&gt;
Т.е. сначала любая цифра заменяется на ничего, а затем сравниваем оставшуюся строку. Если она пуста — значит там были только цифры.&lt;br /&gt;
&lt;br /&gt;
Ну и дело остаётся за малым: нужно получить список таблиц в базе данных и узнать какие у неё есть столбцы. Потом по имени столбца и имени таблицы собираем нужный для него запрос и объединяем в цикле с другими запросами при помощи &lt;b&gt;UNION&lt;/b&gt;. Полученный громадный запрос нужно немного обработать, сгруппировать значения и ещё раз всё пересчитать:&lt;br /&gt;
&lt;blockquote&gt;
select t,sum(cnt) as "sum_cnt" from (&lt;b&gt;%s&lt;/b&gt;) as rulexec_tbl group by t order by sum_cnt desc;&lt;/blockquote&gt;
Где t у меня — столбец значений, cnt — столбец кол-ва "попаданий", %s — громадный запрос.&lt;br /&gt;
&lt;br /&gt;
Затем берём верхний результат, можем проверить его ещё раз, точно ли он не полностью состоит из цифр и записываем результат в таблицу ответов. Done.&lt;br /&gt;
&lt;br /&gt;
Правда есть одна проблема в моём алгоритме. Он не корректно обрабатывает float-тип, который представлен как &lt;b&gt;0.0e0&lt;/b&gt;. Надеюсь такого западла там не будет :).&lt;br /&gt;
&lt;br /&gt;
На моём довольно слабом ноутбуке (1.2 Ghz процессор, 2 Gb оперативки) программа проходится по тестовой базе данных за 5 секунд.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-8876538366516146124?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T00:00:04.032+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Daos будет удалён</title><link>http://www.rulexec.name/2011/06/daos.html</link><category>daos</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 22 Jun 2011 06:36:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-5830737132696318408</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Когда все &lt;a href="http://scripts.rulexec.name/Daos/"&gt;текущие&lt;/a&gt; строки станут старше 38 дней, строки вместе с движком Daos будут удалены.&lt;br /&gt;
&lt;br /&gt;
Спасибо.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-5830737132696318408?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T16:36:39.274+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Создал аккаунт на stackoverflow</title><link>http://www.rulexec.name/2011/06/stackoverflow.html</link><category>stackoverflow</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sun, 19 Jun 2011 07:01:37 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-3229202119265939317</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Собственно в теме всё написано :). Меня там можно найти под ником... &lt;a href="http://stackoverflow.com/users/805355/rulexec"&gt;Rulexec&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Буду пробовать отвечать на вопросы всякие, проверять свои навыки, изучать английский. Вот.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-3229202119265939317?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-19T17:01:37.154+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>концепт p2p-альтернативы простоплееру</title><link>http://www.rulexec.name/2011/06/p2p.html</link><category>p2p</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sun, 05 Jun 2011 10:18:59 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-4815723379937068134</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Мне нравится иногда под настроение слушать музыку, думаю всем нравится, а тем кому не нравится, тот просто не нашёл свой стиль. И я слушал её на одном сервисе, именуемом &lt;a href="http://prostopleer.com/list217299zPMv"&gt;prostopleer.ru&lt;/a&gt;&amp;nbsp;(по ссылке мой скромный старый плейлист, я его уже давно не обновлял).&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Потом, что естественно, разработчики захотели есть, я бы тоже захотел, с таким то сервисом. Поддержание такой архитектуры требует много сил и денег. Однако &lt;strike&gt;&lt;span class="Apple-style-span" style="color: #cccccc;"&gt;я лишь школьник (уже закончил), да и&lt;/span&gt;&lt;/strike&gt; денег лишних совсем нет. Ну а зарабатывать я так и не научился. Ленюсь просто сильно.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Я просто положил в отдельную папку на &lt;a href="http://db.tt/e6DWogI"&gt;Dropbox&lt;/a&gt; всю музыку, благо у меня её совсем чуть-чуть и забил.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
А тут мне мысль пришла. Почему бы не совместить &lt;b&gt;торренты&lt;/b&gt; и простой &lt;b&gt;аудио-плеер&lt;/b&gt;? Можно особо даже не мудрить, на самом деле. Открыть трекер, который будет грабить музыкальные торрент-файлы с других трекеров, организовать десктоп-приложение, которое бы выступало в качестве обычного торрент-клиента, но с той лишь разницей, что имело бы критический приоритет получать части последовательно, с начала файла.&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="color: #cccccc;"&gt;(в этом абзаце количество слов "торрент" просто зашкаливает, да)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Можно даже не встраивать в это приложение плеер, просто сделать его эдаким локальным стриминг-сервером, к которому можно было бы подключиться &lt;i&gt;AIMP&lt;/i&gt;'ом, или другим плеером. Много чего можно сделать, вообще.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Я был бы рад, если я, либо не я сделаю это, это же точно круто :). А главное бесплатно, свободно и никто не сможет украсть сервера с «нелегальной» музыкой.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Вряд ли я в одиночку сделаю чего-нибудь, меня что-то тянет на создание своего протокола, который бы превосходил &lt;b&gt;BitTorrent&lt;/b&gt; в некоторых моментах. Мне бы абы не делать, лишь бы придумывать всякую хрень.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Всё чаще задумываюсь о зашифрованных распределённых системах, наверное ситуация в Беларуси на меня так влияет, эхх.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-4815723379937068134?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-05T20:18:59.254+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Я хочу придумать велосипед</title><link>http://www.rulexec.name/2011/06/blog-post.html</link><category>jvisor</category><category>chain</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sun, 05 Jun 2011 10:21:51 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-7308130012361955951</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Не в прямом смысле этого слова, конечно, пока что у меня нет концепта для велосипеда, хотя кто знает. В данный момент у меня практически занят каждый день на что-нибудь, сначала была гулянка, посвящённая окончанию школы, потом линейка, сегодня консультация по поводу экзамена, завтра ещё одна, послезавтра вообще экзамен, если, конечно, мне не изменяет память.&lt;br /&gt;
&lt;br /&gt;
Но иногда таки находятся минуты/часы, чтобы заняться чем-нибудь полезным, хотя хочется только отдыхать и вообще ничего не делать. Я чуточку сломал свой &lt;a href="http://projects.rulexec.name/"&gt;jvisor&lt;/a&gt;, поломав колонки и вообще. Но теперь все проекты хранятся в виде &lt;a href="http://projects.rulexec.name/projects.xml"&gt;xml-файлика&lt;/a&gt;, из которого я генерирую &lt;i&gt;html&lt;/i&gt; (не каждый раз, когда вы обращаетесь к index.html, нет, только один раз). Я немного усложнил этим себе жизнь, т.к. раньше требовалось только переделать один html файл, а теперь нужно переделать xml файл, а потом ещё и кнопку в админке нажать, ох. Но как-нибудь я себя пересилю и сделаю редактирование прямо из админки.&lt;br /&gt;
&lt;br /&gt;
Ну а теперь о главном. По поводу &lt;i&gt;erlstar&lt;/i&gt; я думаю забить, ну их нафиг. «Искра» прошла, уже не особо интересен этот проект. Но, как видите, в самом конце есть странный проектик, который является языком программирования. Я довольно много программирую, а до сих пор не написал собственный компилятор/интерпретатор, чтобы прочувствовать всю эту кухню со всех сторон.&lt;br /&gt;
&lt;br /&gt;
ЯП у меня будет не совсем обычный. У переменных не будет имён, не будет классов, переменную вообще нельзя будет создать «из воздуха». Я даже не знаю, как объяснить мою задумку.&lt;br /&gt;
&lt;br /&gt;
Вот, например, нам нужно найти сумму двух цифр, в обычном языке программирования мы бы сделали что-нибудь типа&amp;nbsp;&lt;i&gt;1 + 2&lt;/i&gt; или&amp;nbsp;&lt;i&gt;summ(1,2)&lt;/i&gt;. У меня же нужно будет здорово поизвращаться и знать обратную польскую нотацию:&lt;br /&gt;
&lt;blockquote&gt;
1,2,+ -&amp;gt; math.&lt;/blockquote&gt;
Данная запись у меня обозначает, что аргументы 1, 2 и + передаются в функцию math. Функция возвращает результат, мы можем его вывести на экран, например, так:&lt;br /&gt;
&lt;blockquote&gt;
1,2,+ -&amp;gt; math -&amp;gt; io:print.&lt;/blockquote&gt;
Суть моего языка в том, что каждая функция что-то получает, работает с этим и возвращает новые данные, которые поступают в другую функцию. Ну и так же есть своя "фишка". Есть функция chain:branch, которая «разветвляет» программу. Получается так, что у нас становится сразу несколько цепочек, которые обязательно потом сходятся в одном месте и работа продолжается.&lt;br /&gt;
&lt;br /&gt;
Сложно словами описать, я лучше потом примеры приведу.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-7308130012361955951?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-05T20:21:51.317+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>jvisor, нулевая версия</title><link>http://www.rulexec.name/2011/05/jvisor.html</link><category>jvisor</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Thu, 26 May 2011 12:57:57 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-6692958195553018350</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Всё это вторгает меня в печаль. Ничего не делаю, играю, трачу время. А время то, в итоге, уходит.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Вот и "&lt;a href="http://www.rulexec.name/search/label/lotos"&gt;Лотос&lt;/a&gt;" забросил, как на хабре наткнулся на &lt;a href="http://habrahabr.ru/blogs/webdev/119863/"&gt;статью&lt;/a&gt; про новый сервис. Сервис мне очень понравился, отличная идея, только вот с реализацией всё криво, как мне показалось. Часто всё куда-то "улетает", зависает, да и вообще, меня почему-то с ноута кикакало каждые 5 минут, видимо изза кривой системы реконнекта.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
В общем, захотелось мне сделать клона. Без кучи этих технологий, без пушинга, без менеджеров очередей каких-то на PHP, без js-чатов и прочего ненужного хлама. KISS, зачем городить всё это, если мы уже имеем флеш, где есть сокеты и тем более открыто подключение к rtmp-серверу?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Но суть этого поста не в этом. Как я уже &lt;a href="http://www.rulexec.name/2011/05/blog-post_14.html"&gt;говорил&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;
Думаю, что через пару неделек точно напишу, хотя я слишком много всего обещаю и мало чего выполняю в итоге, но теперь точно нужно же довести дело до конца.&lt;/blockquote&gt;
Так вот, я тут подумал, что если я не буду хранить в голове все те проекты, которые я веду в данный момент и этот список будет доступен другим людям, то мотивация должна повыситься, т.к. любой сможет написать в любой момент: "&lt;i&gt;А почему ProjectName уже месяц никуда не двигался?&lt;/i&gt;".&lt;br /&gt;
&lt;br /&gt;
Ну и, естественно, новая задумка, вытеснила старую, но т.к. она была совсем простой и легка в реализации, всё удалось &lt;a href="http://projects.rulexec.name/"&gt;сделать&lt;/a&gt; за один заход. Пока что нулевая версия, ибо это просто html, который редактируется вручную.&lt;br /&gt;
&lt;br /&gt;
В планах сделать удобную админку для редактирования проектов, изменения событий, создания списков. Оно будет юзать mysql, сразу говорю, не хочется в эти файлы лезть, бгг.&lt;br /&gt;
&lt;br /&gt;
Как-то вот так случайно появилась идея, странно это происходит. Как пытаешься всеми силами чего-то достичь (в моём случае найти то, что кодить), то ничего не выходит, а если просто забыть об этом и заниматься чем-нибудь другим, то оно как-то само приходит. Может и на другие вещи и области так же работает?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-6692958195553018350?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-26T22:57:57.088+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Please, donate, у нас еда закончилась</title><link>http://www.rulexec.name/2011/05/please-donate.html</link><category>монетизация</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Tue, 17 May 2011 12:53:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-3350611388007710358</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Нет-нет, я ничего не прошу. Пока я пишу код &lt;a href="http://www.rulexec.name/search/label/lotos"&gt;Lotos&lt;/a&gt;'а, почему-то в голову приходят идеи, я стараюсь выбрасывать из головы их, ибо если я начну что-то делать другое, то обратно к тому, что я делал, я уже не вернусь. Но на этот раз одна и та же идея повторилась дважды.&lt;br /&gt;
&lt;br /&gt;
Я как-то шёл по улице, возвращаясь домой и думал о том, как я буду монетизировать игру, за которую деньги брать совесть не позволит, а продавать плюшки — зло, на самом деле (не буду объяснять почему, может быть в комментариях, а то растянется и пост будет уже на другую тематику).&lt;br /&gt;
&lt;br /&gt;
В итоге мне вспомнилось инфа о том, что создатель &lt;b&gt;Dwarf Fortress&lt;/b&gt; &lt;i&gt;живёт исключительно на пожертвованиях&lt;/i&gt;&amp;nbsp;лояльных игроков. И не одни они, кстати. Так же делает это &lt;b&gt;Wikipedia&lt;/b&gt;, собирая достаточно крупные суммы&amp;nbsp;периодически.&lt;br /&gt;
&lt;br /&gt;
Так же разработчикам нужны деньги на жильё, пищу, возможно есть какие-то расходы на дизайнеров, возможно ещё каких-либо наёмных фрилансеров, расходы на хостинг, домен. Если их продуктом пользуется &lt;b&gt;достаточное количество людей&lt;/b&gt; и проект &lt;b&gt;реально полезный&lt;/b&gt; (помогает расслабиться, получить какую-либо информацию, получить какой-нибудь фан, прочее) и они используют его практически каждый день и уже не мыслят жизнь без этого проекта, почему бы не попросить этих людей скинуться на ваши потребности?&lt;br /&gt;
&lt;br /&gt;
Как я себе это представляю. &lt;b&gt;Скрипт/сервис&lt;/b&gt;, имеющий панель для владельцев проекта, а так же настраиваемый блок/страница на самом проекте. В панели можно добавлять какие-либо потребности проекта, например, «&lt;i&gt;зарплата создателям за май&lt;/i&gt;». Потребность должна быть хорошо расписана, например как &lt;a href="http://navalny.livejournal.com/583994.html"&gt;эта&lt;/a&gt;, если люди не поймут, зачем им это нужно и за что они платят, они просто не дадут денег. Но если написать, какая работа была проделана за это время и какие у них дальнейшие планы, я думаю люди могут заплатить несколько денег на поддержание проекта.&lt;br /&gt;
&lt;br /&gt;
Если проекту нужны деньги, то в каком-нибудь месте появляется строка заполняющаяся, как у википедии и предлагается пожертвовать деньги. Я думаю, что такой блок целесообразно показывать только активной аудитории, которая пользуется проектом как минимум несколько раз в неделю, ибо случайным посетителям как-то всё равно. В блоке должна быть возможность отказаться, чтобы блок с данной просьбой больше не отображался. Ну и «приманка» для платежа — необходимая сумма делиться на активную аудиторию и в зависимости от этого сумма, которую предлагают пожертвовать пользователю выходит довольно малой, а там может и накинет даже :).&lt;br /&gt;
&lt;br /&gt;
Ну вообще, с индикацией можно экспериментировать, пробовать разные способы просьб и т.д.&lt;br /&gt;
&lt;br /&gt;
В итоге я лишь хочу создать удобный инструмент для побуждения пользователей не халявить и понимать, что разработчики тоже люди и им нужно есть.&lt;br /&gt;
&lt;br /&gt;
Что вы думаете по всему этому поводу?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-3350611388007710358?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T22:53:39.915+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Корабль отчалил</title><link>http://www.rulexec.name/2011/05/blog-post_14.html</link><category>daos</category><category>lotos</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sat, 14 May 2011 02:27:43 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-492396749399568252</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Сегодня утром я, как обычно смотрю за RSS-лентой, открываю новые посты, смотрю — что-то у &lt;a href="http://brokenbrake.biz/"&gt;блога Тормоза&lt;/a&gt; CSS-стилей вроде как нет. Ну, думаю — не подгрузились просто. А оказывается нет, всё так и есть, Тормоз &lt;a href="http://brokenbrake.biz/2011/05/14/vsezaeblozaeblozaeblo"&gt;дропнулся&lt;/a&gt;.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Жаль, конечно, что не&amp;nbsp;радостно&amp;nbsp;с миллионом, а так печально и уныло без ничего почти.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Вот закрытие проекта Daos тоже немного печалит, хотя я за него не платил денег и собственно не думал о какой-нибудь пожизненной поддержке. В связи с этим, я думаю сделать свой рекламный движок&lt;strike&gt;, с блэкджеком и шлюхами&lt;/strike&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Daos не будет взят за основу, нет. Я всё перепишу, с нуля. Позаимствована будет только идея, ну и возможно стиль оформления и суть рекламного движка. Имя ему будет — &lt;span class="Apple-style-span" style="font-size: large;"&gt;Lotos&lt;/span&gt;. По-русски... &lt;b&gt;Лотос&lt;/b&gt;. Не знаю почему, просто где-то рядом.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Работать будет на PHP, на выбор либо через файлы, "по-старинке", либо через MySQL.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ведь кому-то нужна будет замена движку, когда где-нибудь поменяется API или нужны будут какие-нибудь фичи, либо ещё что-нибудь. Не на Nolix же переходить :).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Думаю, что через пару неделек точно напишу, хотя я слишком много всего обещаю и мало чего выполняю в итоге, но теперь точно нужно же довести дело до конца.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-492396749399568252?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T12:27:43.299+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>«Модоку» или попытка создать простую игру</title><link>http://www.rulexec.name/2011/05/blog-post_09.html</link><category>javascript</category><category>game</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Mon, 09 May 2011 12:21:35 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-6604339845907097045</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Собирая в уже неизвестно какой раз &lt;a href="http://ru.wikipedia.org/wiki/%D0%9A%D1%83%D0%B1%D0%B8%D0%BA_%D0%A0%D1%83%D0%B1%D0%B8%D0%BA%D0%B0"&gt;кубик Рубика&lt;/a&gt; задумался о попытке создать какую-нибудь свою головоломку, за чем обратился к одному своему другу. Ну и он быстренько сгенерировал мне идею.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Собственно даю &lt;a href="http://dl.dropbox.com/u/10234425/games/modocu-0/game.html"&gt;линк&lt;/a&gt; на черновую реализацию игры, которую он придумал.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Есть следующие недостатки:&lt;/div&gt;
&lt;div&gt;
Слишком мало вариаций поля, слишком «случайно» выглядит игровой процесс, просто кликаешь по клеткам и оно собирается.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Может у вас есть какие-нибудь идеи для совсем простой логической игрушки, или предложения для модификации до жизненного состояния этой?&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-6604339845907097045?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T22:21:35.908+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>Слоны разные нужны, слоны разные важны</title><link>http://www.rulexec.name/2011/05/blog-post_08.html</link><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Sun, 08 May 2011 13:39:41 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-7856627571370926975</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Здравствуйте, меня зовут Александр, суть такова... Есть замечательный микродвижок для продажи всяких чего-нибудей, и имя ему &lt;a href="http://brokenbrake.biz/Vinci/"&gt;Винчи&lt;/a&gt; (как того самого, да). Так вот, сегодня, его автор, Тормоз (ну а кто ж ещё?), затеял эдакий «&lt;a href="http://brokenbrake.biz/2011/05/08/elephant_sale"&gt;конкурс-марафон&lt;/a&gt;». Для меня это &lt;strike&gt;продление хостинга&lt;/strike&gt; фан, ну а для вас это открытие новых возможностей и горизонтов (так то).&lt;br /&gt;
&lt;br /&gt;
Так, тут есть развилка событий: у вас есть что продавать, и у вас нет ничего на продажу.&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;У вас есть что-то на продажу?&lt;/span&gt; Отлично, &lt;a href="http://brokenbrake.biz/Vinci/"&gt;Винчи&lt;/a&gt; был создан для вас.&lt;br /&gt;
Допустим, вы — сеошник (ну ладно, пусть будет так), я видел кучи таких людей, которые продают свои штуки (не знаю, на самом деле, что вы продаёте) на площадках типа plati.ru. Так вот, за всего €16 вы получаете скрипт, вместе с будущими обновлениями (если конечно, будут найдены какие-то баги, так то скрипт готов и полностью выполняет свои задачи).&lt;br /&gt;
&lt;br /&gt;
Давайте посчитаем, насколько это выгоднее, чем размещать свой товар на plati.ru. Сумма вашего товара — $10, у меня в логах была одна продажа где комиссия составляет 10%. Google &lt;a href="http://www.google.by/search?q=16+%D0%B5%D0%B2%D1%80%D0%BE+%D0%B2+%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B0%D1%85"&gt;говорит&lt;/a&gt;, что 16 евро это примерно $23.&lt;br /&gt;
&lt;br /&gt;
Производим вычисления, $23 / 10% = $230. Т.е. нужно произвести всего за всё время продаж на $230, чтобы Винчи стал выгоднее практически всех подобных площадок. Считаем дальше. Ваш товар стоит $10, т.е. $230 / $10 = 23. Всего 23 покупки и Винчи окупается.&lt;br /&gt;
&lt;br /&gt;
Ну и давайте сделаем как в тех рекламах по телевизору, повторю ещё пару раз. Возьмём 50 покупок, которые бы вы сделали с plati.ru и 50 покупок, которые бы вы сделали с Винчи и сравним.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;plati.ru:&lt;/span&gt;&lt;br /&gt;
50 * $10 = $500, plati.ru берёт 10% себе, у вас&amp;nbsp;остается&amp;nbsp;$500 * 90% = &lt;span class="Apple-style-span" style="font-size: large;"&gt;$450&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Vinci:&lt;/span&gt;&lt;br /&gt;
50 * $10 = $500, Vinci стоит $23, у вас остаётся $500 - $23 = &lt;span class="Apple-style-span" style="font-size: large;"&gt;$477&lt;/span&gt;. И заметьте, Винчи остаётся при вас и следующие покупки будут уже со&amp;nbsp;«стопроцентной» отдачей.&lt;br /&gt;
&lt;br /&gt;
Результат виден прямо вот совсем (что-что ты сейчас сказал?). Если вы планируете продавать массово и объёмами явно больше, чем $230, я вам сильно советую задуматься.&lt;br /&gt;
&lt;br /&gt;
Ох, что-то я совсем отвлёкся от примеров, начал что-то считать.&lt;br /&gt;
&lt;br /&gt;
Допустим вы — кто-угодно. Просто берёте и продаёте. Пока что скрипт может продавать любые файлы (текст, архивы, возможно фотографии). Собственно я не знаю, чего можно такого не продать при помощи Винчи.&lt;br /&gt;
&lt;br /&gt;
Разве что динамические какие-то штуки (серийники, ключи доступа куда-нибудь и т.п.) наверное не получится. Но для таких вещей я думаю этот скрипт не был предназначен). Впрочем, если у вас есть, что продавать динамического, то напишите в комментариях, я думаю без проблем напишу "мод" для Винчи, реализующий данный функционал. Напишу забесплатно, буду продавать через Винчи (вот, видите какая многофункциональность, хехе, продавать что угодно можно)&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;У вас нет товаров.&lt;/span&gt; Ну что же, не печальтесь. Может вы программист и у вас есть какие-нибудь полезные скрипты, которыми вы пользуетесь и они может быть могли бы быть полезны другим? Воот, у вас всё-таки есть товар.&lt;br /&gt;
&lt;br /&gt;
Заинтригованы? Купить можно &lt;a href="http://brokenbrake.biz/Vinci/"&gt;там&lt;/a&gt;&amp;nbsp;(забавно, кстати, скрипт магазина продаёт сам себя). И да, я предлагаю кому-нибудь, кому-нибудь и кому-нибудь продолжить этот &lt;a href="http://brokenbrake.biz/2011/05/08/elephant_sale"&gt;марафон&lt;/a&gt;. Ах да, вот:&lt;br /&gt;
&lt;pre&gt;             ___.-~"~-._   __....__
           .'    `    \ ~"~        ``-.
          /` _      )  `\              `\
         /`  a)    /     |               `\
        :`        /      |                 \
   &amp;lt;`-._|`  .-.  (      /   .            `;\\
    `-. `--'_.'-.;\___/'   .      .       | \\
 _     /:--`     |        /     /        .'  \\
("\   /`/        |       '     '         /    :`;
`\'\_/`/         .\     /`~`=-.:        /     ``
  `._.'          /`\    |      `\      /(
                /  /\   |        `Y   /  \
          jgs  J  /  Y  |         |  /`\  \
              /  |   |  |         |  |  |  |
             "---"  /___|        /___|  /__|
                    '"""         '"""  '"""
&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-7856627571370926975?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-08T23:39:41.932+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Попробуем же что-нибудь реализовать на "Кубиках"</title><link>http://www.rulexec.name/2011/05/blog-post_04.html</link><category>PHP</category><category>kubikz</category><category>todotree</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 04 May 2011 05:47:27 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-6962359237838680574</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Вот я написал &lt;a href="http://www.rulexec.name/2011/05/kubikzphp.html"&gt;что-то&lt;/a&gt;. Но написать — лишь половина дела. Нужно понять, для чего оно и как это&amp;nbsp;можно использовать. А ещё, однажды я &lt;a href="http://www.realaxy.com/aboutEditor/index"&gt;прочитал&lt;/a&gt; вот такое вот:&lt;br /&gt;
&lt;blockquote&gt;
Почему есть хорошие редакторы для Java и для C#? Кроме успешности и популярности этих языков есть еще и другая причина - программисты, которые задают планку, создают лучшие редакторы для этих языков, при этом сами пишут на этих языках.&lt;br /&gt;
&lt;br /&gt;
ActionScript разработчики вынуждены играть в поломанный телефон с разработчиками IDE.&lt;/blockquote&gt;
Поэтому я попробую сам сделать чего-нибудь на своей же&amp;nbsp;архитектуре&amp;nbsp;(ну ничего себе загнул), внося фиксы, правя как лучше и приделывая свистелки.&lt;br /&gt;
&lt;br /&gt;
Ну и пока я размешивал сахар в чайной кружке, пришло мне в голову сделать... ToDo &lt;strike&gt;list&lt;/strike&gt; tree. Списки это хорошо, но деревья то лучше :). Часто нельзя просто написать "что-то сделать", требуются уточнения этого "чего-то".&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-cIkls8Van-w/TcFJlVlFBgI/AAAAAAAABAI/3g0S1lyUNMM/s1600/todo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/-cIkls8Van-w/TcFJlVlFBgI/AAAAAAAABAI/3g0S1lyUNMM/s400/todo.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ну и в итоге я хочу получить такой скрипт, который бы делал вот такую штуку, как на картинке выше и его можно было легко дополнять/изменять добавляя новые модули и немного правя шаблоны.&lt;br /&gt;
&lt;br /&gt;
Чтобы это сделать, мне нужно будет написать целую горку велосипедов, а именно:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Велосипед для работы с БД&lt;/li&gt;
&lt;li&gt;Велосипед для шаблонизации&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;Велосипед для создания велосипедов&lt;/strike&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Но это разовое дело.&lt;/div&gt;
&lt;br /&gt;
Ну а сейчас я в поликлинику, а то уже почти месяц в школу не хочу, совсем хитрый.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-6962359237838680574?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T15:47:27.585+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-cIkls8Van-w/TcFJlVlFBgI/AAAAAAAABAI/3g0S1lyUNMM/s72-c/todo.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></item><item><title>Kubikz.php</title><link>http://www.rulexec.name/2011/05/kubikzphp.html</link><category>PHP</category><category>kubikz</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Wed, 04 May 2011 03:27:29 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-6061120199954853246</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;a href="https://github.com/Rulexec/Kubikz.php"&gt;Написал&lt;/a&gt; пару строк кода и обозвал это плагинной системой.&lt;br /&gt;
&lt;br /&gt;
Как-то давным-давно я хотел создать абсолютно модульную CMS. Т.е. такую, чтобы из коробки вообще ничего не было, кроме админки, где можно устанавливать новые модули и как-то их настраивать и в итоге получить из ничего то, что нужно. Абсолютная гибкость,&amp;nbsp;приспосабливаемость&amp;nbsp;к любым задачам, все дела.&lt;br /&gt;
&lt;br /&gt;
Но в тот раз ничего не вышло, хотя я несколько раз пытался.&lt;br /&gt;
&lt;br /&gt;
Так вот, сейчас я решил попробовать снова, только на уровень ещё ниже. Чтобы даже админки никакой не было. Вообще ничего не было. Решение не для юзеров, а скорее для программистов, которые, в общем то и этим занимаются. Ведь программирование это в основном связывание каких-либо компонентов воедино так, чтобы эти компоненты в итоге вместе решали заданную проблему.&lt;br /&gt;
&lt;br /&gt;
Что я сделал? &lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;strike&gt;Кучу &lt;/strike&gt;говнокод&lt;strike&gt;а который вообще не работает и &lt;/strike&gt;кривой совсем. &lt;/span&gt;&lt;a href="https://github.com/Rulexec/Kubikz.php"&gt;Небольшой класс&lt;/a&gt;&amp;nbsp;(хотя вру, там их целых 3), который имеет всего пару функций:&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;b&gt;Регистрация модуля&lt;/b&gt;. Класс модуля просто пихается в массив.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Вызов метода&lt;/b&gt;. По имени модуля и функции вызывается функция модуля, которой в качестве параметра передаётся указатель на переменную (да, не совсем удобно).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Регистрация "хука"&lt;/b&gt;. По имени модуля и имени "хука" передаётся функция, которая вызывается в момент, когда модуль делает определённое действие.&lt;/li&gt;
&lt;li&gt;Ну и немного &lt;b&gt;дополнительных методов&lt;/b&gt;, для определении версии модуля, а так же проверки, есть ли модуль вообще такой.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
В итоге я хочу получить систему, где модули могли бы взаимодействовать между собой, определять, есть ли определённые модули в системе (например, если есть модуль логирования, то логировать свои действия), навешивать хуки, чтобы одни модули могли влиять на действия других (например, модуль системы антиспама вешает хуки на определённые действия системы комментариев, перехватывая момент публикации комментария в базу данных, проверяет текст комментария, автора, и, если что-то не так, меняет ключ статуса комментария с "опубликовано" на "к модерации").&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
В данный момент помимо модулей ещё хочется сделать что-то типа интерфейсов. Т.е. чтобы можно было установить любой модуль, который реализует данный интерфейс и всё хорошо работало. Т.е. например, есть 3 модуля логирования, от Саши, Пети и Васи. Сашин модуль пишет абсолютно все логи в файл, Петин модуль пишет все логи в базу данных, а Васин выбирает только самые критичные логи и шлёт их прямо на почту.&lt;/div&gt;
&lt;div&gt;
В общем хочется чтобы были какие-то стандартные штуки, которые могут быть реализованы по-разному, но при этом они были стандартизированы и работали вместе.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Брр, сам не знаю чего хочу, одно знаю — хочу что-нибудь писать и усложнять всем жизнь.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ладно, я уже может с год на PHP не писал, есть какие-нибудь моменты, где я вобще тотально не прав и всё переделать нужно?&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-6061120199954853246?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T13:27:29.127+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></item><item><title>Астральный код, идейка да просьба о помощи</title><link>http://www.rulexec.name/2011/04/blog-post_26.html</link><category>идея</category><category>python</category><author>noreply@blogger.com (Александр Рулёв)</author><pubDate>Mon, 25 Apr 2011 23:16:17 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-3412718165296517645.post-4824553168426611046</guid><description>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Хотелось вот как-нибудь заставить себя взять, да открыть IDE и начать что-нибудь кодить. Решил с малого совсем и чего-нибудь совсем простого. &lt;a href="http://pastie.org/1834140"&gt;Превращаем&lt;/a&gt; дату в порядковый номер дня.&lt;br /&gt;
&lt;br /&gt;
Ещё идейка в связи с этим пришла. Сделать что-то типа &lt;a href="http://govnokod.ru/"&gt;говнокода&lt;/a&gt; наоборот. Где-то я вчера прочитал (наверное на IThappens), что программирование — сравне искусству и почему бы не писать "картины" кодом. Т.е. например описание модели поведения кошки написанное на Erlang с использованием &lt;a href="http://www.erlang.org/doc/man/gen_server.html"&gt;поведения gen_server&lt;/a&gt;&amp;nbsp;и прочие такие клёвые штуки, от которых глаз отвести нельзя :). Если кто-нибудь заинтересован, может попробовать сделать?&lt;br /&gt;
&lt;br /&gt;
Кстати, мне вот Яндекс&amp;nbsp;&lt;a href="http://pastie.org/1834116"&gt;ответил&lt;/a&gt;, я так и не понял, что мне делать то нужно, если кто-нибудь смыслит в этом, подскажите, а? Дело в том, что robots.txt, который на www.rulexec.name я не могу трогать — его Гугл генерит и ничего я с ним сделать не могу. Если я на rulexec.name какую-нибудь чушь повешу вместо редиректа, оно сможет вообще раздвоить эти сайты или так и ничего и не сделает?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3412718165296517645-4824553168426611046?l=www.rulexec.name' alt='' /&gt;&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-26T09:16:17.448+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item></channel></rss>

