<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>balmaster</title>
    <description/>
    <link>http://balmaster.ya.ru/</link>
    <image>
      <url>http://avatars.yandex.net/get-avatar/balmaster/32c63fe98b7757b3e79e1154de7292d7.3100-middle</url>
      <title>balmaster</title>
      <link>http://balmaster.ya.ru/</link>
    </image>
    <language>ru-RU</language>
    <pubDate>Sat, 13 Mar 2010 04:03:48 +0300</pubDate>
    <lastBuildDate>Sat, 13 Mar 2010 04:03:48 +0300</lastBuildDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>ya.ru:10405202 ya.ru:normal ya.ru:public</generator>
    <item>
      <title>ApplicationContext - структура для управления интерфейсами подсистем приложения</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/56942.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1147</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1147</comments>
      <description>В принципе вопрос наличия такой структуры встает для любого приложения&lt;br/&gt;&lt;br/&gt; Решается он по разному.&lt;br/&gt;&lt;br/&gt; В серверах приложений оно навязывается фреймверком&lt;br/&gt;&lt;br/&gt; В spring явно выделено в отдельный шаблон (разработчик приложения явно определяет контекст своего приложения)&lt;br/&gt;&lt;br/&gt; Но у меня задача другая - есть клиентские приложения и написаны они на .NET&lt;br/&gt;&lt;br/&gt; А для таких приложений в .NET отсутствует что нибудь похожее на ApplicationContext (ну может это я не вкурсе :) )&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;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt; кто создает?&lt;/b&gt;&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;инициализатор приложения&lt;/li&gt;&lt;br/&gt;&lt;li&gt;инициализатор системных тестов&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;li&gt;&lt;b&gt;количество объектов?&lt;/b&gt;&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#000000"&gt;один объект на все приложение&lt;/font&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;подходящий шаблон&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Singleton&lt;/li&gt;&lt;br/&gt;&lt;li&gt;просто статический класс&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;li&gt;&lt;b&gt; когда создается?&lt;/b&gt;&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;перед запуском основного цикла приложения&lt;/li&gt;&lt;br/&gt;&lt;li&gt;перед запуском первого системного теста&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;li&gt;&lt;b&gt; что содержит?&lt;/b&gt;&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;интерфейсы менеджеров различных подсистем приложения&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;li&gt;&lt;b&gt; изменяемость в процессе работы?&lt;/b&gt;&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;не изменяется после инициализации&lt;/li&gt;&lt;br/&gt;&lt;li&gt;прикладной разработчик не может зарегистрировать новый менеджер в контексте&lt;/li&gt;&lt;br/&gt;&lt;li&gt;прикладной разработчик не может изменить контекст&lt;/li&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;для конструирования можно использовать FactoryMethod&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/ol&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;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; итого для C# получаем&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;font color="#000083"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/font&gt; System;
&lt;font color="#000083"&gt;&lt;b&gt;using&lt;/b&gt;&lt;/font&gt; System.Collections.Generic;

&lt;font color="#000083"&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/font&gt; Inquest.Common.Service
{
    &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;interface&lt;/b&gt;&lt;/font&gt; Manager{}

    &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; ApplicationContext
    {
        &lt;font color="#000083"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;readonly&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;object&lt;/b&gt;&lt;/font&gt; lockObj = &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;object&lt;/b&gt;&lt;/font&gt;();
        &lt;font color="#000083"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt; ApplicationContext instance;

        &lt;font color="#000083"&gt;&lt;b&gt;protected&lt;/b&gt;&lt;/font&gt; ApplicationContext() {}

        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt; ApplicationContextCreator Creator { &lt;font color="#000083"&gt;&lt;b&gt;get&lt;/b&gt;&lt;/font&gt;; &lt;font color="#000083"&gt;&lt;b&gt;set&lt;/b&gt;&lt;/font&gt;; }

        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/font&gt; ApplicationContext GetInstance()
        {
            &lt;font color="#000083"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(instance== &lt;font color="#000083"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;)
            {
                &lt;font color="#000083"&gt;&lt;b&gt;lock&lt;/b&gt;&lt;/font&gt; (lockObj)
                {
                    &lt;font color="#000083"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(instance==&lt;font color="#000083"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;)
                    {
                        &lt;font color="#000083"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt; (Creator != &lt;font color="#000083"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;)
                        {
                            &lt;font color="#000083"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt;
                            {
                                instance = Creator.FactoryMethod();
                            }
                            &lt;font color="#000083"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/font&gt; (Exception e)
                            {
                                &lt;font color="#000083"&gt;&lt;b&gt;throw&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ApplicationContextException(&lt;font color="#008200"&gt;&lt;b&gt;"init&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;instance"&lt;/b&gt;&lt;/font&gt;,e);
                            }
                        }
                        &lt;font color="#000083"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;
                        {
                            instance = &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ApplicationContext();
                        }
                    }
                }
            }
            &lt;font color="#000083"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; instance;
        }

        &lt;font color="#000083"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;readonly&lt;/b&gt;&lt;/font&gt; Dictionary&amp;lt;Type,Manager&amp;gt; managers = &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; Dictionary&amp;lt;Type, Manager&amp;gt;();
        &lt;font color="#000083"&gt;&lt;b&gt;protected&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt; RegisterManager(Manager &lt;font color="#000083"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;)
        {
            &lt;font color="#000083"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;(&lt;font color="#000083"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;==&lt;font color="#000083"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;)
                &lt;font color="#000083"&gt;&lt;b&gt;throw&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ApplicationContextException(&lt;font color="#008200"&gt;&lt;b&gt;"manager&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;is&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;null"&lt;/b&gt;&lt;/font&gt;);

            &lt;font color="#000083"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt;
            {
                managers.Add(&lt;font color="#000083"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;.GetType(), &lt;font color="#000083"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;);
            }
            &lt;font color="#000083"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/font&gt;(ArgumentException e)
            {
                &lt;font color="#000083"&gt;&lt;b&gt;throw&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/font&gt; ApplicationContextException(String.Format(&lt;font color="#008200"&gt;&lt;b&gt;"manager&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;{0}&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;already&lt;/b&gt;&lt;/font&gt; &lt;font color="#008200"&gt;&lt;b&gt;registered"&lt;/b&gt;&lt;/font&gt;,&lt;font color="#000083"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/font&gt;.GetType()),e);
            }

        }
        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; T GetManager&amp;lt;T&amp;gt;() where T : Manager
        {
            &lt;font color="#000083"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt; (T) managers[&lt;font color="#000083"&gt;&lt;b&gt;typeof&lt;/b&gt;&lt;/font&gt; (T)];
        }
    }

    &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; ApplicationContextException : Exception
    {
        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; ApplicationContextException(String message,Exception exception) : &lt;font color="#000083"&gt;&lt;b&gt;base&lt;/b&gt;&lt;/font&gt;(message,exception){}
        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; ApplicationContextException(&lt;font color="#000083"&gt;&lt;b&gt;string&lt;/b&gt;&lt;/font&gt; message) : &lt;font color="#000083"&gt;&lt;b&gt;base&lt;/b&gt;&lt;/font&gt;(message){}
    }

    &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;abstract&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt; ApplicationContextCreator
    {
        &lt;font color="#000083"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/font&gt; &lt;font color="#000083"&gt;&lt;b&gt;abstract&lt;/b&gt;&lt;/font&gt; ApplicationContext FactoryMethod();
    }
}
&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; Ссылки:&lt;br/&gt;&lt;br/&gt; ENCAPSULATED CONTEXT Pattern&lt;br/&gt;&lt;br/&gt; &lt;a href="http://www.allankelly.net/static/patterns/encapsulatecontext.pdf"&gt;http://www.allankelly.net&lt;wbr/&gt;/static/patterns/encapsul&lt;wbr/&gt;atecontext.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a name="cutid1-end"&gt;&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Sat, 13 Mar 2010 04:03:48 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <title>первый взгляд на java script</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/56645.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1146</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1146</comments>
      <description>Моя пополамка играет в &lt;a href="http://www.travian.ru/"&gt;www.travian.ru&lt;/a&gt;, интерфейс у которого не очень удобен, и сподвигла она меня на написание скрипта для firefox под &lt;a href="https://addons.mozilla.org/ru/firefox/addon/748"&gt;greaseemonkey&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Задача скрипта - собрать информацию о нападениях на игрока и вычислить какое из нападений реальное а какое только отвлечение внимания (у них это называется спам).&lt;br/&gt;Надо сказать, что использование скриптов среди травианщиков дело обычное и привычное. &lt;br/&gt;&lt;br/&gt;С javascript я ниразу в жизни дела не имел. но слышал что на нем "пишут разные скрипты".&lt;br/&gt;Взялся за дело с энтузиазмом.&lt;br/&gt;&lt;br/&gt;За день нужный скриптик был написан. Сценарий простой: скрипт активируется по желания пользователя, собирает статистику и выводит ее на страницу, потом периодически повторяет сбор статистики.&lt;br/&gt;&lt;br/&gt;Впечатления от javascript остались сомнительные: динамическая типизация, отсутствие непротиворечивой документации по реализациям (&lt;a href="http://help.dottoro.com/index.php"&gt;http://help.dottoro.com/index.php&lt;/a&gt; и &lt;a href="https://developer.mozilla.org/ru/JavaScript"&gt;https://developer.mozilla.org/ru/JavaScript&lt;/a&gt; это лучшее что нашлось), отсутствие средств для синхронизации асинхронных запросов, нет готовых средств для разбора кастомных datetime, глюки в реализации замыканий (это исключительно от непонимания, см объясние ниже).&lt;br/&gt;&lt;br/&gt; развернуть&lt;br/&gt;&lt;br/&gt;&lt;span style="font-size: larger;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;0. документация&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;EMCA 3 раза публиковал стандарт&lt;br/&gt;2001 &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-327.htm"&gt;http://www.ecma-internati&lt;wbr/&gt;onal.org/publications/sta&lt;wbr/&gt;ndards/Ecma-327.htm&lt;/a&gt;&lt;br/&gt;2005 &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm"&gt;http://www.ecma-internati&lt;wbr/&gt;onal.org/publications/sta&lt;wbr/&gt;ndards/Ecma-357.htm&lt;/a&gt;&lt;br/&gt;2009 &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"&gt;http://www.ecma-internati&lt;wbr/&gt;onal.org/publications/sta&lt;wbr/&gt;ndards/Ecma-262.htm&lt;/a&gt;&lt;br/&gt;официальный перевод стандарта &lt;a href="http://javascript.ru/ecma"&gt;http://javascript.ru/ecma&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://javascript.ru/"&gt;http://javascript.ru/&lt;/a&gt;&lt;br/&gt;хороший блог &lt;a href="http://javascript.ru/blog/Dmitry-A.-Soshnikov"&gt;http://javascript.ru/blog/Dmitry-A.-Soshnikov&lt;/a&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;&lt;br/&gt;1. синхронизация асинхронных запросов.&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt; так уж получилось что для сбора статистики нужно сделать в среднем около 200 запросов.  перед каждым запросом нужно подождать случайный интервал, чтобы тебя не забанили как бота. в общем пришлось считать запросы. тоесть синхронные запросы использовать нельзя.&lt;br/&gt;&lt;br/&gt;был заведен глобальный счетчика запросов&lt;br/&gt;var reqCount = 0;&lt;br/&gt;&lt;br/&gt;объявлена функция send&lt;br/&gt;&lt;br/&gt;function send(url, userObj,callback, params) {&lt;br/&gt;    reqCount++;&lt;br/&gt;    var options = {&lt;br/&gt;        'url':url,&lt;br/&gt;        'method':'GET',&lt;br/&gt;        'onload':function(e) {&lt;br/&gt;            try {&lt;br/&gt;                callback(e,userObj);&lt;br/&gt;                reqCount--;&lt;br/&gt;            }&lt;br/&gt;            catch(err)&lt;br/&gt;            {&lt;br/&gt;                reqCount--;&lt;br/&gt;                throw err;&lt;br/&gt;            }&lt;br/&gt;        },&lt;br/&gt;        'onerror':function(e) {&lt;br/&gt;            reqCount--;&lt;br/&gt;        }&lt;br/&gt;    };&lt;br/&gt;    setTimeout(function() {GM_xmlhttpRequest(options);} ,Math.floor(SEND_INTERVAL* Math.random()));&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;тоесть после выполения запроса и его успешной обработки или при ошибке счетчмк уменьшается а перед выполеннием увеличивается. идея неудобна в смысле глобальности счетчика. если параллельно нужно 2 набора запросов запускать ничего не получится. надо избавлятся от глобального счетчика&lt;br/&gt;&lt;br/&gt;прогугление ничего не дало - всмысле все варианты решения оказались похожи на мой с глобальным счетчиком :(&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;2 работа с custom datetime строкой&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;пришлось все делать вручную &lt;br/&gt;atTime = "12:08:45".split(":") и Date(((parseInt(atTime[0])*60 +  parseInt(atTime[1]))*60 + parseInt(atTime[2]))*1000)&lt;br/&gt;что вызывает проблемы с часовым поясом - это необходимо учесть.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size: larger;"&gt;3 проблемы с работой замыканий&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;проблема была в непонимании реализации замыканий, точнее механизма разрешения свободных переменных.&lt;br/&gt;&lt;br/&gt;быстрое чтение стандарта показало что, хрен из него поймёшь как устроены замыкания без вдумчивого анализа&lt;br/&gt;поэтому начал искать уже анализ и нашел&lt;br/&gt;&lt;a href="http://javascript.ru/blog/Dmitry-A.-Soshnikov/Tonkosti-ECMA-262-3.-CHast-6.-Zamykaniya."&gt;http://javascript.ru/blog&lt;wbr/&gt;/Dmitry-A.-Soshnikov/Tonk&lt;wbr/&gt;osti-ECMA-262-3.-CHast-6.&lt;wbr/&gt;-Zamykaniya. &lt;/a&gt;&lt;br/&gt;&lt;br/&gt;рекомендовалось ознакомится с &lt;a href="http://javascript.ru/blog/Dmitry-A.-Soshnikov/Tonkosti-ECMA-262-3.-CHast-2.-Obekt-peremennyh."&gt;http://javascript.ru/blog&lt;wbr/&gt;/Dmitry-A.-Soshnikov/Tonk&lt;wbr/&gt;osti-ECMA-262-3.-CHast-2.&lt;wbr/&gt;-Obekt-peremennyh.&lt;br/&gt;&lt;/a&gt;и &lt;a href="http://javascript.ru/blog/Dmitry-A.-Soshnikov/Tonkosti-ECMA-262-3.-CHast-4.-Cep-oblastej-vidimosti.-0"&gt;http://javascript.ru/blog&lt;wbr/&gt;/Dmitry-A.-Soshnikov/Tonk&lt;wbr/&gt;osti-ECMA-262-3.-CHast-4.&lt;wbr/&gt;-Cep-oblastej-vidimosti.-&lt;wbr/&gt;0&lt;/a&gt;&lt;br/&gt;после ознакомления стало понятно что такое контексты, переменные и область видимости в понимании js&lt;br/&gt;вернулся к замыканиям&lt;br/&gt;&lt;br/&gt;выяснилось что для замыканий в js по стандарту всегда используется статическая синтаксическая область видимости. причем для разрешения свободных переменных используется стандартная цепочка областей вложенности. поэтому если мы имеем например&lt;br/&gt;&lt;br/&gt;function test() {&lt;br/&gt;    var a = some expression;&lt;br/&gt;    send(function () {&lt;br/&gt;        // эта функция вызовется асинхронно и будет разрешать а в момент ВЫПОЛНЕНИЯ через цепочку вызовов&lt;br/&gt;        var b = a;&lt;br/&gt;    }&lt;br/&gt;    a = new value;&lt;br/&gt;    send(function () {&lt;br/&gt;        // эта функция вызовется асинхронно и будет разрешать а в момент ВЫПОЛНЕНИЯ через цепочку вызовов&lt;br/&gt;        var b = a;&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;если бы для разрешения свободных переменных использовался бы копирование их значений в контекст функции, то проблем бы небыло при асинхронном выполнении&lt;br/&gt;&lt;br/&gt;но если send выполняется асинхронно значение a при первом вызове может быть и новым и старым, в зависимости от того что выполнилось быстрее. имеем проблему datarace&lt;br/&gt;&lt;br/&gt;чтобы избежать подобного можно значение переменной передавать явно как аргумент в send&lt;br/&gt;&lt;br/&gt;function test() {&lt;br/&gt;    var a = some expression;&lt;br/&gt;    send(a,function (a) {&lt;br/&gt;        var b = a;&lt;br/&gt;    }&lt;br/&gt;    a = new value;&lt;br/&gt;    send(a,function (a) {&lt;br/&gt;        var b = a;&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;в данном случае проблема datarace уже не возникает&lt;br/&gt;&lt;br/&gt;в общем спасибо &lt;a title="&amp;#x418;&amp;#x43D;&amp;#x444;&amp;#x43E;&amp;#x440;&amp;#x43C;&amp;#x430;&amp;#x446;&amp;#x438;&amp;#x44F; &amp;#x43E; &amp;#x43F;&amp;#x43E;&amp;#x43B;&amp;#x44C;&amp;#x437;&amp;#x43E;&amp;#x432;&amp;#x430;&amp;#x442;&amp;#x435;&amp;#x43B;&amp;#x435;." href="http://javascript.ru/person/Dmitry-A.-Soshnikov"&gt;Dmitry A. Soshnikov&lt;/a&gt; за перевод стандарта и серию поясняющих статей.&lt;br/&gt;&lt;br/&gt; &lt;a name="cutid1-end"&gt;&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 22 Feb 2010 14:04:41 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Хорошая статья</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/56436.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1145</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1145</comments>
      <description>Хорошая статья про роли внутри проекта и общей эффективности процесса разработки&lt;br/&gt;&lt;br/&gt;&lt;a href="http://fotki.yandex.ru/users/balmaster/view/274676/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/4010/balmaster.2/0_430f4_9e6e24b5_L.jpg" width="365" height="350" title="" alt="" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://fotki.yandex.ru/users/balmaster/view/274676/"&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.boxesandarrows.com/view/bringing-holistic"&gt;http://www.boxesandarrows&lt;wbr/&gt;.com/view/bringing-holist&lt;wbr/&gt;ic&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Tue, 16 Feb 2010 08:34:22 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <title>Баллада про пильщиков</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/56288.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1143</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1143</comments>
      <description>Люди всей страны c детьми и взрослыми, рты открыв, забросив все дела,&lt;br/&gt;Просидели много лет под козлами, на которых шёл распил бaблa.&lt;br/&gt;Где-то в небе руки мускулистые двигали промышленный резак&lt;br/&gt;И катились стружки золотистые каждому в карман за просто так.&lt;br/&gt;...&lt;br/&gt;Ну-ка отвечайте без истерики, кто придумал это западло?&lt;br/&gt;Кризис где-то там у вас в Америке, а у нас — не пилится баблo?!&lt;br/&gt;Нам плевать на банки и на вкладчиков, кто у вас чего не доплатил!&lt;br/&gt;Вызовите срочно к нам наладчиков, пусть наладят прерванный пропил!&lt;br/&gt;&lt;br/&gt;&lt;a href="http://shlakoblock.livejournal.com/927425.html"&gt;http://shlakoblock.livejournal.com/927425.html&lt;/a&gt;&lt;br/&gt;взято у alexeychen&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Thu, 11 Feb 2010 23:57:38 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <title>jvisualvm и статус потоков</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/55983.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1142</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1142</comments>
      <description>jvisualvm посвоему интерпретирует статусы потоков java&lt;br/&gt;&lt;br/&gt;информации о том что они обозначают (например MONITOR) в документации найти не удалось, анализ исходников jvisualvm показал следующее:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;table border="1" bordercolor="#000000" cellpadding="3" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="25%"&gt;&lt;b&gt;статус jvisualvm&lt;br/&gt;&lt;br/&gt;&lt;/b&gt;&lt;/td&gt;&lt;td width="50%"&gt;&lt;b&gt;соответствует статусу потока в java&lt;br/&gt;&lt;br/&gt;&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="25%"&gt;RUNNING&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td width="50%"&gt;RUNNABLE&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="25%"&gt;SLEEPING&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td width="50%"&gt;поток находится в состоянии WAITING потому что вызван метод sleep&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="25%"&gt;WAIT&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td width="50%"&gt;WAITING&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="25%"&gt;MONITOR&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td width="50%"&gt;BLOCKED&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="25%"&gt;ZOMBIE&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td width="50%"&gt;NEW или TERMINATED&lt;br/&gt;&lt;br/&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;настоящие статусы потоков java описаны здесь &lt;br/&gt;&lt;br/&gt; &lt;a href="http://java.sun.com/j2se/1.6.0/docs/api/java/lang/Thread.State.html"&gt;http://java.sun.com/j2se/&lt;wbr/&gt;1.6.0/docs/api/java/lang/&lt;wbr/&gt;Thread.State.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 05 Feb 2010 10:12:07 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <guid isPermaLink="false">ya.ru:10405202:1141</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1141</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1141</comments>
      <description>&lt;p&gt;&lt;noindex&gt;&lt;b style="background-color: #defff4; color: #529d85; line-height: 150%; padding: 0.3em;"&gt;&lt;span class="b-yauser"&gt;&lt;a href="http://balmaster.ya.ru/"&gt;&lt;span style="color:#f00;"&gt;b&lt;/span&gt;almaster&lt;/a&gt;&lt;/span&gt; нашёл друга, его зовут &lt;span class="b-yauser"&gt;&lt;a href="http://crexfexpex.ya.ru/"&gt;&lt;span style="color:#f00;"&gt;V&lt;/span&gt;oins&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/noindex&gt;&lt;/p&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 30 Nov 2009 10:45:47 +0300</pubDate>
      <category>ya.ru:friend</category>
      <category>ya.ru:friendee:32255780</category>
    </item>
    <item>
      <title>Прошел batman arkham asylum</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/55688.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1140</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1140</comments>
      <description>во всех смыслах замечательная игра, очень понравилась&lt;br/&gt;&lt;a href="http://www.batmanarkhamasylum.com/media"&gt;http://www.batmanarkhamasylum.com/media&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 18 Nov 2009 19:24:32 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>games</category>
    </item>
    <item>
      <title>Мудрый совет</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/55306.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1139</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1139</comments>
      <description>взято у &lt;a href="http://hedin.livejournal.com/"&gt;hedin&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Когда у вас случается трудный день и вы восклицаете: - 'Я НЕНАВИЖУ свою работу' - попробуйте сделать следующее: По дороге домой зайдите в аптеку и купите ректальный термометр Johnson &amp;amp; Johnson. Удостоверьтесь, что термометр именно этой фирмы!&lt;br/&gt;&lt;br/&gt;Придя домой, закройте за собой дверь, завесьте шторы и отключите телефон - никто не должен вам мешать! Переоденьтесь в удобную домашнюю одежду и сядьте в любимое кресло.&lt;br/&gt;Распакуйте термометр и аккуратно положите его на стол. Достаньте из упаковки инструкцию к ректальному термометру и внимательно прочитайте.&lt;br/&gt;&lt;br/&gt;Обратите особое внимание на фразу, напечатанную мелким шрифтом: 'Каждый ректальный термометр фирмы Johnson &amp;amp; Johnson проверен персонально и затем продезинфицирован!'&lt;br/&gt;('Every Rectal Thermometer made by Johnson &amp;amp; Johnson is personally tested and then sanitized.')&lt;br/&gt;&lt;br/&gt;А теперь закройте глаза и повторите громко пять раз: 'Я так счастлив, что не работаю контролёром качества в фирме Johnson &amp;amp; Johnson!'&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Sun, 01 Nov 2009 13:51:46 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <title>Замечательный сайт</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/55275.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1138</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1138</comments>
      <description>&lt;a href="http://is.ifmo.ru/"&gt;http://is.ifmo.ru/&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Sat, 24 Oct 2009 14:31:29 +0300</pubDate>
      <category>ya.ru:text</category>
    </item>
    <item>
      <title>снова за рулем</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/54942.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1137</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1137</comments>
      <description>сегодня вечером после почти трехлетнего перерыва снова сел за руль, съездил до соседнего города и обратно. ощущения супер! хочу машинку!!!&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 16 Oct 2009 21:15:03 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>авто</category>
    </item>
    <item>
      <title>адаптационное</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/54687.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1136</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1136</comments>
      <description>&lt;a href="http://ivand.livejournal.com/1161143.html"&gt;http://ivand.livejournal.com/1161143.html&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;br/&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;br/&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;br/&gt;Здесь хватит на всех сковородок и вил.&lt;br/&gt;Славься подземное наше узилище…&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Mon, 21 Sep 2009 13:33:22 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>fun</category>
    </item>
    <item>
      <title>Боец не заметил потери отряда</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/54366.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1135</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1135</comments>
      <description>По мотивам “Боец не заметил потери отряда” сделали перепевку.&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;br/&gt;И софт дописать все хотят до конца.&lt;br/&gt;Да вот незадача: не знают бойцы,&lt;br/&gt;Какой к компонентам был сделан API.&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;br/&gt;“Без спеков, что делать поведает жизнь.&lt;br/&gt;XP запрещает о спеках тужить.&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;br/&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;br/&gt;Седую былинку смахнувши с лица,&lt;br/&gt;Боец не заметил потери отряда&lt;br/&gt;И “Яблочко” - песню допел до конца.&lt;br/&gt;&lt;br/&gt;(с) Геннадий Алпаев, Петр Федин, Сергей Мартыненко &lt;br/&gt;&lt;a name="cutid1-end"&gt;&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 11 Sep 2009 00:53:29 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>fan</category>
    </item>
    <item>
      <title>skype for nokia</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/54063.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1134</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1134</comments>
      <description>&lt;a href="http://www.skype.com/intl/en/download/skype/skypelite/"&gt;http://www.skype.com/intl&lt;wbr/&gt;/en/download/skype/skypel&lt;wbr/&gt;ite/&lt;/a&gt;&lt;br/&gt;теперь могу звонить с мобильного через скайп&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Wed, 09 Sep 2009 01:52:57 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>связь</category>
    </item>
    <item>
      <title>Украли телефон. Опечален.</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/53803.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1133</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1133</comments>
      <description>Вчера на выходе из вагона метро на Цветном бульваре. из кармана увели телефон. очень ловко.&lt;br/&gt;&lt;br/&gt;Решил обратится в милицию по всей форме.&lt;br/&gt;Написал заявление, меня пару раз уговаривали его забрать но я настаивал и заявление приняли и зарегистрировали.&lt;br/&gt;В понедельник еду составлять фоторобот жулика.&lt;br/&gt;&lt;br/&gt;Оказывается они не обращаются к сотовым операторам чтобы отслеживать действия телефона по его IMEI. Типа такие мероприятия сотовые операторы осуществляют только после решения мосгор суда. В мосгорсуд должна обратится милиция, но они этого не делают по поводу краж, только, как они говорят, если преступление тяжелое, суд выносит решение и сотовый оператор включает запись всех событий проходящих по телефону с указанным IMEI&lt;br/&gt;&lt;br/&gt;пока занес свой имей в список украденных&lt;br/&gt;&lt;a href="http://www.cotka.ru/BList/"&gt;Черный список IMEI украденных или потерянных сотовых телефонов стандарта GSM.&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Буду добиваться от следователя чтобы он подал запрос в мосгорсуд на предоставление информации МТСом по IMEI моего телефона.&lt;br/&gt;Моя пополамка &lt;span class="ljuser  ljuser-name_el_marka" style="white-space: nowrap;"&gt;&lt;a href="http://el-marka.livejournal.com/profile"&gt;&lt;img src="http://l-stat.livejournal.com/img/userinfo.gif" alt="[info]" width="17" height="17" style="vertical-align: bottom; border: 0; padding-right: 1px;"/&gt;&lt;/a&gt;&lt;a href="http://el-marka.livejournal.com/"&gt;&lt;b&gt;el_marka&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; всегда убеждала меня что милиция работает. надо только ее правильно напряч. буду проверять на практике :)&lt;br/&gt;&lt;br/&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Sun, 06 Sep 2009 12:28:44 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>жизнь</category>
    </item>
    <item>
      <title>В какой интересной стране мы живем</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/53557.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1132</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1132</comments>
      <description>"В олимпийской заявке Сочи сказано, что к 2014 г. 410 тысяч жителей Сочи будут свободно говорить по английски. (Общая численность населения Сочинской агломерации составляет около 500 тысяч - СА). Это означает, что по уровню проникновения английского языка Сочи обгонит Лондон"&lt;br/&gt;&lt;br/&gt;&lt;a href="http://saleksashenko.livejournal.com/39919.html"&gt;http://saleksashenko.livejournal.com/39919.html&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Sat, 29 Aug 2009 13:36:09 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>жизнь</category>
    </item>
    <item>
      <title>Бывшие рекламщиги-креатифщеги устраиваются в налоговую?</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/53283.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1131</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1131</comments>
      <description>В какой интересной стране мы живем :)&lt;br/&gt;&lt;br/&gt;Новый налог придумали сотрудники межрайонной инспекции ФНС № 2 по Челябинской области. В том, что с акватории Магнитогорского водохранилища испаряется вода, частично виноват ММК, решили налоговики, так что с объема естественным образом убывшей воды следует заплатить налог. Взяв расчетные объемы испарений, налоговики доначислили комбинату 9,9 млн руб. водного налога и 1,9 млн руб. штрафа.&lt;br/&gt;&lt;br/&gt;Налоговики из других регионов не уступают челябинским. В Краснодарском крае они пытались взыскать 100 000 руб. налога на имущество (со штрафами) за могилы и памятник Ленину, числившиеся на балансе ООО «Горкомхоз». А в Якутии доначислили около 30 000 руб. налога на добычу полезных ископаемых палеонтологам, нашедшим кости мамонта. Эти претензии налоговиков также развалились в судах.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.vedomosti.ru/newspaper/article.shtml?2009/08/28/211886"&gt;http://www.vedomosti.ru/n&lt;wbr/&gt;ewspaper/article.shtml?20&lt;wbr/&gt;09/08/28/211886&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 28 Aug 2009 08:45:24 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>fan</category>
    </item>
    <item>
      <title>ANT, Java and Windows UNC patches</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/53082.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1130</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1130</comments>
      <description>Задача копировать файлы на удаленную машину (Windows) используя свтроенные средства ANT&lt;br/&gt;&lt;br/&gt;Как задавать каталог на удаленной машине? UNC?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;copy file="test" tofile="file:////SERVER1-TLS/c$/test1"/&amp;gt;&lt;br/&gt;приводит к ошибке&lt;br/&gt;D:\temp\build.xml:4: Failed to copy D:\temp\test to D:\temp\file:\SERVER1-TLS\c$\test1 due to java.io.FileNotFoundException D:\temp\file:\SERVER1-TLS\c$\test1 (The filename, directory name, or volume label syntax is incorrect)&lt;br/&gt;&lt;br/&gt;&amp;lt;copy file="test" tofile="//SERVER1-TLS/c$/test1"/&amp;gt;&lt;br/&gt;&lt;br/&gt;Отлично работает&lt;br/&gt;&lt;br/&gt;То есть правильное сопоставление UNC (remote file name) &amp;lt;==&amp;gt; URI&lt;br/&gt;&lt;br/&gt;&lt;div dir="ltr" style="text-align: left;"&gt;&lt;font face="Courier New"&gt;&lt;span class="st0"&gt;//SERVER/some/path" &amp;lt;==&amp;gt; &lt;/span&gt;&lt;span class="st0"&gt;file:////SERVER/some/path&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;почему ант таск copy не принимает URI имена?&lt;br/&gt;&lt;a title="http://ant.apache.org/manual/CoreTasks/copy.html" href="http://ant.apache.org/manual/CoreTasks/copy.html"&gt;Ant task Copy&lt;/a&gt; описание не дает ответа в каком формате должны быть имена файлов&lt;br/&gt;org.apache.tools.ant.taskdefs.Copy&lt;br/&gt;private void copySingleFile() &lt;br/&gt;{&lt;br/&gt;...&lt;br/&gt; fileCopyMap.put(file.&lt;b&gt;getAbsolutePath&lt;/b&gt;(),new String[] {destFile.&lt;b&gt;getAbsolutePath&lt;/b&gt;()});&lt;br/&gt;...&lt;br/&gt;}&lt;br/&gt;Использование getAbsolutePath говорит о том что ANT Copy ничего не знает про URI, поэтому пути нужно передавать в &lt;b&gt;формате ОС&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Захотелось разобраться что такое URI и как оно различается для разных OS&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;В 2005 году стандартизаторы договорились до единого стандарта &lt;br/&gt;&lt;a title="&amp;#x421;&amp;#x442;&amp;#x430;&amp;#x43D;&amp;#x434;&amp;#x430;&amp;#x440;&amp;#x442; &amp;#x43D;&amp;#x430; URI &amp;#x438;&amp;#x43C;&amp;#x435;&amp;#x43D;&amp;#x430; RFC 3986" href="http://tools.ietf.org/html/rfc3986#page-49"&gt;Стандарт на URI имена RFC 3986&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Про UNC от microsoft стандарт даже не упоминает&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a title="Microsoft &amp;#x438;&amp;#x43C;&amp;#x435;&amp;#x435;&amp;#x442; &amp;#x441;&amp;#x43E;&amp;#x431;&amp;#x441;&amp;#x442;&amp;#x432;&amp;#x435;&amp;#x43D;&amp;#x43D;&amp;#x44B;&amp;#x439; &amp;#x432;&amp;#x437;&amp;#x433;&amp;#x43B;&amp;#x44F;&amp;#x434; &amp;#x43D;&amp;#x430; UNC -&amp;gt; URI" href="http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx"&gt;Microsoft имеет собственный взгляд на UNC -&amp;gt; URI&lt;/a&gt;&lt;br/&gt;Причем для локальных и удаленных имен, URI имеет различную нотацию&lt;br/&gt;&lt;p&gt;For the UNC Windows file path&lt;br/&gt;&lt;br/&gt;&lt;span style="font-family: Courier New;"&gt;    &lt;/span&gt;&lt;b style="font-family: Courier New;"&gt;&lt;font color="#804040"&gt; \\laptop\My Documents\FileSchemeURIs.doc&lt;/font&gt;&lt;/b&gt; &lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;The corresponding valid file URI in Windows is the following:&lt;br/&gt;&lt;br/&gt;&lt;span style="font-family: Courier New;"&gt;     &lt;/span&gt;&lt;b style="font-family: Courier New;"&gt;&lt;font color="#0000ff"&gt;file://laptop/My%20Documents/FileSchemeURIs.doc&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;For the local Windows file path&lt;br/&gt;&lt;br/&gt;&lt;span style="font-family: Courier New;"&gt;     &lt;/span&gt;&lt;b style="font-family: Courier New;"&gt;&lt;font color="#804040"&gt;C:\Documents and Settings\davris\FileSchemeURIs.doc&lt;/font&gt;&lt;/b&gt; &lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;The corresponding valid file URI in Windows is: &lt;br/&gt;&lt;br/&gt;&lt;span style="font-family: Courier New;"&gt;    &lt;/span&gt;&lt;font style="font-family: Courier New;" color="#0000ff"&gt; &lt;b&gt;file:///C:/Documents%20an&lt;wbr/&gt;d%20Settings/davris/FileS&lt;wbr/&gt;chemeURIs.doc&lt;/b&gt;&lt;/font&gt; &lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;The &lt;b&gt;number of slashes&lt;/b&gt; following the ‘file:’ is dictated by the same&lt;br/&gt;rules as other wellknown schemes like http and ftp. The text following&lt;br/&gt;two slashes is the hostname. In the case of the UNC Windows file path,&lt;br/&gt;the hostname appears immediately following the ‘//’. In the case of a&lt;br/&gt;local Windows file path, there is no hostname, and thus another slash&lt;br/&gt;and the path immediately follow. &lt;/p&gt;&lt;br/&gt;The username, password, and port components of a file URI in Windows are not used.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;См также&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a title="The Bizarre and Unhappy Story of 'file:' URLs" href="http://blogs.msdn.com/freeassociations/archive/2005/05/19/420059.aspx"&gt;The Bizarre and Unhappy Story of 'file:' URLs&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;font size="2" face="Courier New"&gt;DOSPATH:         c:\windows\My Documents 100%20\foo.txt &lt;br/&gt;&lt;br/&gt;HEALTHY:         file:///c:/windows/My%20D&lt;wbr/&gt;ocuments%20100%2520/foo.t&lt;wbr/&gt;xt&lt;br/&gt;&lt;br/&gt;LEGACY:          file://c:\windows\My Documents 100%20\foo.txt &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;DOSPATH:         \\server\share\My Documents 100%20\foo.txt &lt;br/&gt;&lt;br/&gt;HEALTHY:         file://server/share/My%20&lt;wbr/&gt;Documents%20100%2520/foo.&lt;wbr/&gt;txt &lt;br/&gt;&lt;br/&gt;LEGACY:          file://\\server\share\My Document&lt;/font&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;font size="2" face="Courier New"&gt;&lt;a title="&amp;#x412; java &amp;#x432;&amp;#x441;&amp;#x435; &amp;#x43F;&amp;#x43E; &amp;#x434;&amp;#x440;&amp;#x443;&amp;#x433;&amp;#x43E;&amp;#x43C;&amp;#x443;" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=207103"&gt;В java все по другому&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;font face=""&gt;Видно что про микрософт они знают&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;&lt;div class="bz_comment"&gt;&lt;br/&gt;        &lt;span class="bz_comment_head"&gt;&lt;br/&gt;          &lt;span class="comment_rule"&gt;-------&lt;/span&gt; &lt;i&gt;Comment&lt;br/&gt;          &lt;a name="c42" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=207103#c42"&gt;&lt;br/&gt;            #42&lt;/a&gt; From &lt;br/&gt;          &lt;a href="mailto:john_arthorne@ca.ibm.com"&gt;John Arthorne&lt;/a&gt;&lt;br/&gt;          2009-01-07 11:35:42 -0400 &lt;br/&gt;          &lt;/i&gt;&lt;br/&gt;          &lt;span class="comment_rule"&gt;-------&lt;/span&gt;&lt;br/&gt;        &lt;/span&gt;&lt;br/&gt;        &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;font face="Courier New"&gt;I have hit another roadblock that URI#resolve also doesn't behave correctly&lt;br/&gt;&lt;br/&gt;with UNC paths. There is a Sun bug for this too:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4723726"&gt;http://bugs.sun.com/bugda&lt;wbr/&gt;tabase/view_bug.do?bug_id&lt;wbr/&gt;=4723726&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The root of the problem is that Java incorrectly encodes a UNC path like this:&lt;br/&gt;&lt;br/&gt;\\SERVER\SOME\PATH&lt;br/&gt;&lt;br/&gt;As the following URI:&lt;br/&gt;&lt;br/&gt;file:////SERVER/SOME/PATH&lt;br/&gt;&lt;br/&gt;However the correct encoding is the store the server name as the host&lt;br/&gt;&lt;br/&gt;component:&lt;br/&gt;&lt;br/&gt;file://SERVER/SOME/PATH&lt;br/&gt;&lt;br/&gt;There is an excellent reference from Microsoft on this subject found here:&lt;br/&gt;&lt;br/&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2006/12/06/file-uris-in-windows.aspx"&gt;http://blogs.msdn.com/ie/&lt;wbr/&gt;archive/2006/12/06/file-u&lt;wbr/&gt;ris-in-windows.aspx&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think we are stuck with using Java's faulty encoding of UNC paths since we&lt;br/&gt;&lt;br/&gt;are using URI, but we can perhaps workaround the bug in URI#resolve.&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div dir="ltr" style="text-align: left;"&gt;См также&lt;br/&gt;&lt;br/&gt;&lt;font face=""&gt;&lt;a title="File,URI,URL conversions are strange for UNC path" href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086147"&gt;File,URI,URL conversions are strange for UNC path&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;&lt;font face=""&gt;&lt;a title="Deprecated toURL method does not handle UNC path" href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6360233"&gt;Deprecated toURL method does not handle UNC path&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;См также&lt;br/&gt;&lt;br/&gt;&lt;a title="Eclipse UNC Paths" href="http://wiki.eclipse.org/Eclipse/UNC_Paths"&gt;Eclipse UNC Paths&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div dir="ltr" style="text-align: left;"&gt;&lt;b&gt;&lt;font face="Courier New"&gt;&lt;span class="kw2"&gt;new&lt;/span&gt; &lt;span class="kw3"&gt;File&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"//SERVER/some/path"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;toURI&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;.&lt;span class="me1"&gt;toString&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt; -&amp;gt; &lt;span class="st0"&gt;"file:////SERVER/some/path&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;a name="cutid1-end"&gt;&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 28 Aug 2009 03:02:05 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>ant</category>
      <category>java</category>
      <category>windows</category>
    </item>
    <item>
      <title>батаника</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/52861.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1129</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1129</comments>
      <description>Однако в Windows всетаки научили copy и xcopy правильно обращаться с UNC именами&lt;br/&gt;&lt;br/&gt;например, скорировать все xml файлы на удаленную машину &lt;br/&gt;copy *.xml \\BARMAGLOT\C$\Test &lt;br/&gt;&lt;br/&gt;В документации подробности про UNC пути отсутствует :)&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Fri, 28 Aug 2009 01:40:38 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>windows</category>
    </item>
    <item>
      <title>afisha.yandex.ru продолжает радовать своими ляпами</title>
      <guid isPermaLink="false">http://balmaster.livejournal.com/52490.html</guid>
      <link>http://balmaster.ya.ru/replies.xml?item_no=1128</link>
      <comments>http://balmaster.ya.ru/replies.xml?item_no=1128</comments>
      <description>&lt;a href="http://fotki.yandex.ru/users/balmaster/view/209309/"&gt;&lt;img src="http://img-fotki.yandex.ru/get/26/balmaster.2/0_3319d_22505b34_XL.jpg" width="800" height="621" title="&amp;#x43D;&amp;#x430;&amp;#x437;&amp;#x430;&amp;#x434; &amp;#x432; &amp;#x431;&amp;#x443;&amp;#x434;&amp;#x443;&amp;#x449;&amp;#x435;&amp;#x435;" alt="&amp;#x43D;&amp;#x430;&amp;#x437;&amp;#x430;&amp;#x434; &amp;#x432; &amp;#x431;&amp;#x443;&amp;#x434;&amp;#x443;&amp;#x449;&amp;#x435;&amp;#x435;" border="0"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://fotki.yandex.ru/users/balmaster/view/209309/"&gt;«назад в будущее»&lt;/a&gt;&lt;noindex&gt;&lt;/noindex&gt;</description>
      <pubDate>Thu, 27 Aug 2009 17:56:58 +0300</pubDate>
      <category>ya.ru:text</category>
      <category>fan</category>
    </item>
    <yx:navigation xmlns:yx="urn:yandex-functions">
      <yx:previous>http://balmaster.ya.ru/rss/posts.xml?tb=20</yx:previous>
    </yx:navigation>
    <ppb:more xmlns:ppb="http://blogs.yandex.ru/schema/rss">http://balmaster.ya.ru/rss/posts.xml?tb=20</ppb:more>
  </channel>
</rss>
