<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:janatem</id>
  <title>всякие мысли</title>
  <subtitle>Артем</subtitle>
  <author>
    <name>Артем</name>
  </author>
  <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom"/>
  <updated>2009-12-06T21:28:56Z</updated>
  <lj:journal userid="10558188" username="janatem" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://janatem.livejournal.com/data/atom" title="всякие мысли"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:63576</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/63576.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=63576"/>
    <title>janatem @ 2009-12-06T21:25:00</title>
    <published>2009-12-06T21:25:35Z</published>
    <updated>2009-12-06T21:28:56Z</updated>
    <category term="задачка"/>
    <category term="математика"/>
    <content type="html">&lt;span class='ljuser ljuser-name_plakhov' lj:user='plakhov' style='white-space: nowrap;'&gt;&lt;a href='http://plakhov.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://plakhov.livejournal.com/'&gt;&lt;b&gt;plakhov&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;  подкинул &lt;a href="http://plakhov.livejournal.com/116046.html"&gt;задачку&lt;/a&gt; размять мозг.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;Есть входящий поток объектов. Сколько их, заранее неизвестно. Для каждого объекта известен его вес (float). Нужно придумать алгоритм, выбирающий N из этих объектов (число N задано свыше) таким образом, чтобы вероятность оказаться выбранным была для каждого объекта пропорциональна его весу, и не зависела от его места в очереди. Память &lt;s&gt;константная&lt;/s&gt; O(N) (при этом число объектов K &amp;gt;&amp;gt; N). За один проход. Естественно, алгоритм имеет право использовать random() - иначе непонятно, о каких &amp;quot;вероятностях&amp;quot; идет речь, или уж выбрал, или уж нет.&lt;/div&gt;&lt;br /&gt;После некоторых препирательств по поводу формулировки задачку я решил, но в ней обнаружилось двойное дно, ради чего, собственно, пишу отдельным постом.&lt;br /&gt;&lt;br /&gt;Как обычно, буду решать математическую, а не программистскую задачу. Поэтому сразу выкидываю расплывчатое и ненужное условие K&amp;gt;&amp;gt;N, ограничиваясь необходимым для осмысленности K&amp;gt;=N. Также забиваю на требование однопроходности и ограничения по памяти. Это потом само получится. ;)&lt;br /&gt;&lt;br /&gt;На самом деле всё же однопроходность учитывается некоторым образом. А именно, я считаю, что при поступлении k-го объекта уже требуется иметь заготовленный ответ на случай, если этот объект окажется последним. Поэтому в обозначениях ниже понятие &lt;img src="http://www.codecogs.com/eq.latex?A_i^k" alt="" /&gt; является осмысленным для N&amp;lt;=k&amp;lt;=K.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Обозначения.&lt;/strong&gt; Пусть &lt;img src="http://www.codecogs.com/eq.latex?\{w_i\}" alt="" /&gt; -- веса объектов; &lt;img src="http://www.codecogs.com/eq.latex?W_k = \sum_{i=1}^k w_i" alt="" /&gt;; &lt;img src="http://www.codecogs.com/eq.latex?A_i^k" alt="" /&gt; для k&amp;gt;=N обозначает вероятностное событие &amp;quot;i-й объект был выбран среди k первых&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;strong&gt;Теорема.&lt;/strong&gt; Для k&amp;gt;N верно &lt;img src="http://www.codecogs.com/eq.latex?p(A_i^k)=\frac{Nw_i}{W_k}" alt="" /&gt;. (А для k=N эта вероятность тривиальным образом равна единице.)&lt;br /&gt;&lt;br /&gt;Из этой теоремы, в частности, выводятся ограничения на веса, при которых задача имеет решение. А именно, выражение справа всегда должно иметь смысл вероятности, т.е. не превосходить единицу.&lt;br /&gt;&lt;br /&gt;Идея доказательства в следующем. Разобьем вероятностное пространство на элементарные события -- выбраны конкретные N элементов из k возможных -- коих будет &lt;img src="http://www.codecogs.com/eq.latex?C_k^N" alt="" /&gt; штук. Обозначим их вероятности как &lt;img src="http://www.codecogs.com/eq.latex?p_{i_1\dots i_N}" alt="" /&gt;, где индекс &lt;img src="http://www.codecogs.com/eq.latex?i_j" alt="" /&gt; соответствует наличию &lt;img src="http://www.codecogs.com/eq.latex?i_j" alt="" /&gt;-го объекта в выборке. Тогда полная вероятность выбора i-го объекта равна сумме элементарных вероятностей, у которых присутствует индекс i. По условию задачи эта вероятность равна &lt;img src="http://www.codecogs.com/eq.latex?\lambda w_i" alt="" /&gt; для некоторого значения лябмда. Если просуммировать всё подряд, то получится &lt;img src="http://www.codecogs.com/eq.latex?\sum_{i=1}^k p(A_i^k) = \sum_{\dots} p_{i_1\dots i_N}" alt="" /&gt;.&lt;br /&gt;&lt;br /&gt;Можно заметить, что в правой части каждое элементарное событие будет представлено ровно N раз. Поэтому, учитывая, что сумма вероятностей элементарных событий равна 1, сумма справа равна N. Отсюда находим лябмда и получаем утверждение теоремы.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid2"&gt;&lt;/a&gt;&lt;strong&gt;Теперь самое интересное&lt;/strong&gt; -- про множественность решений. Хотя мы определили вероятность выбора каждого объекта, однозначно приписать вероятности элементарным событиям в общем случае не удается, потому что уравнений получается порядка N, а элементарных событий &lt;img src="http://www.codecogs.com/eq.latex?C_k^N" alt="" /&gt;.&lt;br /&gt;&lt;br /&gt;Я не поленился расписать случай N=2, K=4 и полностью решить систему уравнений на &lt;img src="http://www.codecogs.com/eq.latex?p_{i_1\dots i_N}" alt="" /&gt; -- действительно, пространство решений двухпараметрично (6 неизвестных, 5 уравнений, общая система имеет ранг 4).&lt;br /&gt;&lt;br /&gt;Это говорит о том, что есть множество решений, которые дают правильные вероятности, но разное совместное распределение для выбранных объектов. В условии задачи ничего не говорится о совместном распределении, но, поскольку задача взята из какой-то прикладной области (так ведь?), это может иметь значение.&lt;br /&gt;&lt;br /&gt;Из условия алгоритмической эффективности легко строится одно из решений (привожу его ниже), но я не выяснил, существуют ли другие решения, удовлетворяющие алгоритмическим требованиям. Наверно, достаточно о-большое сделать побольше (в смысле, взять побольше памяти, не нарушив при этом асимптотику), чтобы построить решение с другим совместным распределением.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid3"&gt;&lt;/a&gt;&lt;strong&gt;Алгоритм.&lt;/strong&gt; Заводим пул на N объектов. Заводим регистр, который хранит W_k на k-м шаге (т.е. при поступлении k-го объекта). Первые N объектов закидываем в пул. Далее, беря очередной k+1-й объект и имея, таким образом, N+1 объект, вспоминаем, что Боливар не вынесет (N+1)-рых -- решаем, кого выбросить: новый объект или что-нибудь из пула. Делается это следующим образом. Пусть &lt;img src="http://www.codecogs.com/eq.latex?B_i^k" alt="" /&gt; -- вероятность выбросить i-й объект на k-м шаге. Тогда по формуле Байеса &lt;br /&gt;&lt;img src="http://www.codecogs.com/eq.latex?p(B_i^{k+1}|A_i^k) = \frac{p(B_i^{k+1}\cap A_i^k)}{p(A_i^k)} = \frac{p(A_i^{k+1})}{p(A_i^k)}" alt="" /&gt;.&lt;br /&gt;&lt;br /&gt;Смысл условной вероятности слева таков: &amp;quot;на k+1-м шаге i-й объект будет оставлен при условии, что он дожил до этого момента&amp;quot;. То есть в точности то, что нам нужно при принятии решения на k+1-м шаге! Надо только заметить, что N+1-й шаг особый, потому что вероятность события &lt;img src="http://www.codecogs.com/eq.latex?A_i^N" alt="" /&gt; равна единице, в то время, как на следующих шагах она нетривиальна.&lt;br /&gt;&lt;br /&gt;Чтобы наш алгоритм заработал, надо сконструировать &amp;quot;бросание жребия&amp;quot; таким образом, чтобы из N+1 объекта (тех, что в пуле, и одного нового) был выброшен ровно один. При этом мы уже нашли вероятности выбрасывания объектов из пула (для i-го объекта это будет &lt;img src="http://www.codecogs.com/eq.latex?1-\frac{p(A_i^{k+1})}{p(A_i^k)}=1-\frac{W_k}{W_{k+1}}" alt="" /&gt;; NB: она не зависит от объекта, только от номера шага!) и знаем вероятность выбрасывания свежепоступившего объекта -- она должна быть равна &lt;img src="http://www.codecogs.com/eq.latex?1-p(A_{k+1}^{k+1}) = 1-\frac{Nw_{k+1}}{W_{k+1}}" alt="" /&gt;. (Учет-контроль: сумма всех должна быть равна единице. Я даже не поленился проверить апостериори вероятность выживания объекта в конце работы алгоритма.)&lt;br /&gt;&lt;br /&gt;Как-то так.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:63326</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/63326.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=63326"/>
    <title>От чего тупеет интернет?</title>
    <published>2009-11-21T15:04:41Z</published>
    <updated>2009-11-21T15:04:41Z</updated>
    <category term="всякое"/>
    <category term="математика"/>
    <content type="html">&lt;div style="text-align: right;"&gt;Детям нельзя в интернет. От детей интернет тупеет. (&lt;a href="http://bash.org.ru/quote/40084"&gt;bash&lt;/a&gt;)&lt;/div&gt;&lt;br /&gt;Не знаю, тупеет ли интернет и от чего именно, но, по-моему, это явный признак деградации.&lt;br /&gt;&lt;br /&gt;Мне понадобилось решить нехитрый дифур, а я позабыл, как это делается. Полез гуглить, а там по запросу типа &amp;quot;методы решения ОДУ&amp;quot; и т.п. все ссылки на первой странице -- про численные методы, маткады и т.п. Как будто люди забыли математику (точнее, ее раздел -- дифуры). (Может быть кто-нибудь покажет мне правильный запрос?)&lt;br /&gt;&lt;br /&gt;После некоторого напряжения мозга я увидел, как сделать замену, и решил уравнение сам, но осадок остался. Мне неудивительно, что я сам слегка отупел, всё-таки давно не брал в руки шашек. Но куда пропали ссылки на учебники и лекции по дифурам? Может их там и не было?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:63142</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/63142.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=63142"/>
    <title>Гигантомания</title>
    <published>2009-11-21T10:54:28Z</published>
    <updated>2009-11-21T15:07:17Z</updated>
    <category term="дети"/>
    <content type="html">Был такой выпуск Ералаша, где чел на уроке труда сделал табуретку трехметровой высоты, &amp;laquo;...сказали &amp;laquo;семь раз отмерь, один раз отрежь&amp;raquo;, ну я так и сделал -- отмерил семь раз&amp;raquo;.&lt;br /&gt;&lt;br /&gt;В книжке по оригами дети нашли модель лебедя и сделали:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://xoft.ru/~art/lj-share/lebed.jpg" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Там было написано, что понадобится 20 листов А4 (это довольно много, большинство моделей требуют 1-2 листа). Но дальше было написано то, что дети поленились читать. А именно: нарезать листы А4 на куски вроде 6х8 см. Ну вот и получилось такое чудище. ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Upd.&lt;/strong&gt; Он еще и крылья умеет расправлять:&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://xoft.ru/%7Eart/lj-share/lebed2.jpg" alt="" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:62734</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/62734.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=62734"/>
    <title>Про почтовые клиенты</title>
    <published>2009-11-12T21:20:05Z</published>
    <updated>2009-11-12T21:20:05Z</updated>
    <category term="software"/>
    <content type="html">Странное дело, как нелогично мыслят дизайнеры софта. В данном случае речь пойдет о почтовых клиентах.&lt;br /&gt;&lt;br /&gt;Недавно решил разгрести авгиевы конюшни и попытаться привести в порядок свою почту -- создать правильные фильтры, метки и т.д. Одно из вопиющих неудобств -- это то, что мои (т.е. отправленные мною) письма сохраняются в отдельное место (которое называется &amp;quot;Отправленные&amp;quot;), вместо того, чтобы сортироваться по общему принципу. Например, если пишу в группу рассылки, то должно попадать туда же, куда сваливается от других членов группы.&lt;br /&gt;&lt;br /&gt; Хотел было по-быстрому исправить это, но оказалось, что задача нетривиальна. Я пользуюсь evolution и браузером для gmail-а. Ни там, ни там я не нашел естественных способов сделать, что хочу. Раньше я пользовался емаксовым gnus-ом, и там была возможность автоматически добавлять что-нибудь к заголовкам, поэтому там работает добавление bcc себе. Правда, это решение, хоть и работает, попахивает извращением. Как сделать это в гугле или в evolution, я не так и не придумал.&lt;br /&gt;&lt;br /&gt;Разве я хочу странного? По-моему, естественно, чтобы фильтры работали единообразно как для входящих, так и для исходящих, и чтобы то, что гмейл называет цепочками, никогда не ломалось. А функция &amp;quot;найти все мои письма&amp;quot; и так тривиально выражается через общие механизмы; ну ладно, если кому-то очень хочется, путь на нее будет специальная кнопка или виртуальная папка.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:62468</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/62468.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=62468"/>
    <title>Стохастическая арифметика</title>
    <published>2009-10-25T17:07:53Z</published>
    <updated>2009-10-25T17:07:53Z</updated>
    <category term="математика"/>
    <content type="html">Есть идея о том, как контролировать точность компьютерных вычислений. Представление с плавающей точкой не дает никакой гарантии точности,&amp;nbsp;поэтому для каждого алгоритма нужно отдельно доказывать корректность. Интервальную арифметику придумали для того, чтобы доказывалось само,&amp;nbsp;но у нее есть проблема с тем, что длины интервалов слишком быстро растут. Если бы имелся механизм, учитывающий функциональную зависимость между аргументами, то, возможно, всё было бы не так плохо.&lt;br /&gt;&lt;br /&gt; Я предлагаю другой, возможно, новый подход, который, по идее, дает стохастическое доказательство корректности и учитывает зависимости. Я потратил некоторое время, чтобы проверить, нет ли уже чего-нибудь в этом роде. Вроде бы прослеживается некоторая связь с нечеткой логикой (точнее, с нечеткой интервальной арифметикой -- обобщением интервальной арифметики). Может быть, стоит копать куда-то в строну так называемой вероятностной логики (product logic), чтобы увидеть, что предлагаемое мной уже изобретено. Тем не менее попытаюсь изложить концепцию.&lt;br /&gt;&lt;br /&gt;Вместо того, чтобы представлять вещественное число в виде интервала или в формате IEEE 754 (что в общем-то тоже в некотором смысле есть интервал), предлагается задавать число в виде случайной величины с заданным распределением. Для этого надо сделать две вещи:&lt;ol&gt;&lt;li&gt;Зафиксировать некоторое параметризованное семейство распределений, так чтобы набор параметров можно было представить в виде битовой последовательности (скорее всего ее длина должна быть фиксированной и равно какому-то круглому количеству битов).&lt;/li&gt;&lt;li&gt;Определить частичный порядок на нашем семестве распределений, так чтобы можно было сказать, что одно распределение &amp;quot;точнее&amp;quot; другого.&lt;/li&gt;&lt;/ol&gt;Имея частичный порядок, всегда можно можно перейти от &amp;quot;реального&amp;quot; представления &lt;img src="http://www.codecogs.com/eq.latex?a(p_1, \dots, p_n)" alt="" /&gt; с вещественными параметрами к &amp;quot;дискретному&amp;quot;  &lt;img src="http://www.codecogs.com/eq.latex?a(\tilde p_1, \dots, \tilde p_n)" alt="" /&gt;, где параметры &lt;img src="http://www.codecogs.com/eq.latex?\tilde p_i" alt="" /&gt; конечно-преставимы в машине.&lt;br /&gt;&lt;br /&gt;Как определить порядок &amp;quot;точнее&amp;quot;? Мне не удалось найти универсального определения, но можно ввести такое понятие, назовем его уровнем значимости, -- положительное число (близкое к нулю), которое выбирается для каждой задачи заранее из каких-то физических или &amp;quot;вычислительных&amp;quot; соображений. Тогда для заданного уровня значимости &lt;img src="http://www.codecogs.com/eq.latex?\varepsilon" alt="" /&gt; два распределения a и b связаны отношением &lt;img src="http://www.codecogs.com/eq.latex?a\prec b" alt="" /&gt; (a &amp;quot;точнее&amp;quot; b), если для любого интервала &lt;img src="http://www.codecogs.com/eq.latex?B\subset R,\quad \mu_b(B) \ge 1-\varepsilon" alt="" /&gt; существует интервал &lt;img src="http://www.codecogs.com/eq.latex?A\subset B,\quad \mu_a(A) \ge 1-\varepsilon" alt="" /&gt;.&lt;br /&gt;&lt;br /&gt;Для примера можно попробовать двупараметрическое семейство нормальных распределений N(c, s), пополненное дельта-функциями (формально записываемыми как N(c, 0)). Здесь при любом уровне значимости N(c, 0) всегда точнее N(c, s), и вообще &lt;img src="http://www.codecogs.com/eq.latex?N(c, s_1)\prec N(c, s_2)" alt="" /&gt; при s1 &amp;lt; s2. Если взять разные c, то сравнимость будет зависеть от уровня значимости.&lt;br /&gt;&lt;br /&gt;Используя порядок, можно сформулировать задачу выполнения арифметической операции как нахождение какого-нибудь представимого распределения, так чтобы истинное распределение было &amp;quot;точнее&amp;quot; найденного. При этом желательно подыскивать не какое попало, а &amp;quot;поточнее&amp;quot;, т.е. &amp;quot;наименьшее&amp;quot; из тех, которые &amp;quot;больше&amp;quot; истинного. (Пока не обращаем внимание на то, что существование &amp;quot;наименьшего&amp;quot;, вообще говоря, под вопросом.) Это задача кажется трудоемкой, поэтому, во-первых, надо позаботиться о рациональном выборе представляемого семейства и, во-вторых, о том, чтобы эффективно реализовать арифметику, впоть до привлечения специальных аппаратных средств.&lt;br /&gt;&lt;br /&gt;Теперь о зависимостях. Можно считать, что задача формулируется в следующем виде: дано совместное распределение n чисел, результат надо выразить в виде совместного распределения m чисел. Если подойти наивно, то количество информации, требуемое для представления вектора, зависит экспоненциально от длины вектора. Так, скорее всего, не годится. Можно заметить, что почти все элементарные операции над числами бинарны (ну или унарны). Тогда можно хранить только попарные зависимости, коих O(n^2), что гораздо лучше, чем экспонента. Получается, что исходный вектор (а также результатный и все промежуточные) хранится в виде набора n распределий и некоего обобщения ковариационной матрицы -- набора попарных распределений. (Здесь наверно есть избыточность -- вовсе незачем хранить попарное распределение двух независимых чисел...)&lt;br /&gt;&lt;br /&gt;Проблем здесь, конечно, куча.&amp;nbsp;Я пока не готов описать арифметику для вышеупомянутого семейства гауссиан даже для простых случаев (ну разве что a+b для независимых). Кроме того, совершенно неясно, что делать с операциями арности больше 2 (хотя бы if, у которого условием стоит a&amp;gt;0).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:62266</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/62266.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=62266"/>
    <title>В гугле забанили</title>
    <published>2009-10-19T13:30:17Z</published>
    <updated>2009-10-19T13:30:17Z</updated>
    <category term="software"/>
    <content type="html">Только что наблюдал прикольный глюк. Когда идешь на gmail.com, то запрос обычно перенаправляется куда-то вроде &lt;a href="https://www.google.com/accounts/ServiceLogin?чего-то_там=mail.google.com"&gt;https://www.google.com/accounts/ServiceLogin?чего-то_там=mail.google.com&lt;/a&gt; . Смысл глюка был в том, что на этом процесс не останавливался, а в URL-е дальше происходила замена этого mail.google.com . Причем это происходило рекурсивно; до тех пор, пока не упиралось в ограничение браузера на длину URL-а.&lt;br /&gt;&lt;br /&gt;Минут через 10 всё пофиксилось само, но осадок остался...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:62125</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/62125.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=62125"/>
    <title>incredible machine</title>
    <published>2009-10-04T11:02:01Z</published>
    <updated>2009-10-04T17:21:42Z</updated>
    <category term="дети"/>
    <category term="игры"/>
    <category term="физика"/>
    <content type="html">Вот какой забавный подарок крестного достался детям на день рожденья -- &lt;a href="http://xoft.ru/~art/lj-share/incredible_machine.avi"&gt;видео&lt;/a&gt; (95 МБ). Правда, там написано &amp;quot;от 15 лет&amp;quot;, да еще инструкция не содержит русских букв, так что мое участие в сборке было существенным.&lt;br /&gt;&lt;br /&gt;Можно было бы мертвую петлю побольше сделать, если бы шарик был не обычный,&amp;nbsp;стальной, а, например, пластмассовый со свинцовым ядром, чтобы момент у него поменьше был. Но всё равно, и так круто.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:61749</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/61749.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=61749"/>
    <title>1 Гс</title>
    <published>2009-10-01T20:35:55Z</published>
    <updated>2009-10-01T20:35:55Z</updated>
    <category term="всякое"/>
    <content type="html">Мне тут напомнили, что у меня скоро юбилей,&amp;nbsp;очень круглый. 12 октября исполняется миллиард секунд! Наверно надо что-то замутить, ибо столь круглых дат почти не бывает. ;)&lt;br /&gt;&lt;br /&gt;Много это или мало? Если пренебречь тем, что гига- отличается от гиби-,&amp;nbsp;то это половина 32-битной эпохи. (Не четверть, а половина,&amp;nbsp;потому что один бит зарезервирован под знак -- можно отмерять от начала эпохи не только вперед,&amp;nbsp;но и назад.) На самом деле 10^9 заметно отличается от 2^30, так что бинарный юбилей будет на два года позже...</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:61559</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/61559.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=61559"/>
    <title>janatem @ 2009-09-30T00:17:00</title>
    <published>2009-09-29T20:41:05Z</published>
    <updated>2009-10-02T08:06:12Z</updated>
    <category term="всякое"/>
    <content type="html">Давненько я здесь не оставлял записей.&amp;nbsp;И&amp;nbsp;не потому что иссякла мысля и нечего выразить, и даже не из-за лени. Просто образовалось перманентное ощущение цейтнота...&lt;br /&gt;&lt;br /&gt;Для начала -- просто лытдыбр.&lt;br /&gt;&lt;br /&gt;Я недавно вернулся с конференции в Абрау-Дюрсо &amp;quot;Научный сервис в сети Интернет&amp;quot;.&amp;nbsp;Несмотря на название,&amp;nbsp;инета там не было, а мой телефон почему-то не давал gprs (и я пока не осилил разобраться, видимо придется пешком идти в офис мтс). В результате образовалось немного скучных, без компромата, &lt;a href="http://xoft.ru/~art/pics/2009-09-xx.Abrau.byArt/"&gt;фоток&lt;/a&gt;. Также в процессе сбора воедино фотографии, сделанные участниками (пока в доступности вижу только &lt;a href="http://picasaweb.google.com/katrin.elinor/200903?feat=embedwebsite#"&gt;эти&lt;/a&gt; от &lt;span class='ljuser ljuser-name_katrin_elinor' lj:user='katrin_elinor' style='white-space: nowrap;'&gt;&lt;a href='http://katrin-elinor.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://katrin-elinor.livejournal.com/'&gt;&lt;b&gt;katrin_elinor&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; ).&lt;br /&gt;&lt;br /&gt;Еще я занимался нехарактерной для моей специальности деятельностью, а именно -- художественной. От чего получил моральное удовлетворение по полной программе, пытаясь раскрыть тему сисек. (Вроде бы можно выложить результат в открытый доступ, но я пока не получил четких санкций.) Также открыл для себя занятный инструмент для самовыражения в векторной графике -- &lt;a href="http://www.inkscape.org/"&gt;inkscape&lt;/a&gt;. (Конечно же довольно быстро обнаружился ряд недостатков и недоделок, но всё равно штучка очень хорошая; можно давать детям.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Upd&lt;/strong&gt;. Кроме фотографий зацените модное доменное имя: &lt;a href="http://exascale.ru/abrau/09/"&gt;http://exascale.ru/abrau/09/&lt;/a&gt; .&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:61240</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/61240.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=61240"/>
    <title>Веселые картинки</title>
    <published>2009-09-09T08:44:21Z</published>
    <updated>2009-09-09T08:44:21Z</updated>
    <category term="всякое"/>
    <content type="html">На xkcd есть картинка, от которой меня просто прет.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/55/"&gt;&lt;img src="http://imgs.xkcd.com/comics/useless.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Правда там нелогично написано преобразование Фурье (непонятная штука была использована как связанная переменная), к тому же с ошибкой (минус потерялся). Но всё равно -- для меня это больше чем картинка-анекдот; она обозначает тип мышления.&lt;br /&gt;&lt;br /&gt;А вот есть &lt;a href="http://xkcd.com/150/"&gt;другая картинка&lt;/a&gt;, которая тоже в топе. Но я не понимаю ее смысла. Объясните мне кто-нибудь, а то я вижу там только сцену инцеста.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:60972</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/60972.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=60972"/>
    <title>Про свет</title>
    <published>2009-08-20T19:50:48Z</published>
    <updated>2009-08-20T19:50:48Z</updated>
    <category term="физика"/>
    <content type="html">Я, кажется,&amp;nbsp;изобрел полезную штуку. Настолько полезную, что не понимаю, почему это не внедрили. (Ну уж совсем невероятно, что это еще не придумали.)&lt;br /&gt;&lt;br /&gt;Проблема такая. Кто ездит на автомобиле ночью, знает,&amp;nbsp;что есть товарищи, которые нам совсем не товарищи,&amp;nbsp;и не удосуживаются нормально настроить фары. Также, бывает, забывают вовремя выключить дальний свет. Ну и вообще,&amp;nbsp;даже если все всё делают как надо, свет чужих фар доставляет неудобства.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;Идея в следующем: пусть свет фар всех автомобилей будет поляризованным, а все зеркала и лобовое стекло отражают/пропускают свет с перпендикулярным направлением поляризации. (Может быть со стеклом возникнут технические сложности,&amp;nbsp;тогда достаточно поляризационных очков для водителя.)&lt;br /&gt;&lt;br /&gt;Конечно, направление поляризации света фар должно быть у всех одинаковым, а то выйдет фигня, как с право- и левостороннестью движения. Возможно, есть некоторые соображения,&amp;nbsp;из которых следует, что вертикальная (или горизонтальная) поляризация по каким-то соображениям лучше (например, из-за естественной поляризации солнечного света атмосферой -- получаем халявный бонус к защите от солнца у горизонта). Ну тем проще выбрать.&lt;br /&gt;&lt;br /&gt;Теперь о том,&amp;nbsp;как внедрить. Ясно, что покупать очки (или менять зеркала/стекла) -- дело выгодное исключительно владельцу. Заставить же произвести замену фар сложнее, придется простимулировать автопроизводителей. Однако мы видим, что различные системы безопасности, контроля выхлопа и т.п., напрямую не нужные покупателю, более-менее успешно внедряются,&amp;nbsp;поэтому можно поверить, что необходимые механизмы воздействия существуют. В результате поляризующие фары должны постепенно вытеснить обычные.&lt;br /&gt;&lt;br /&gt;Я нашел пока только одну техническую сложность: если тупо поставить поляризационные фильтры к обычным лампам, то получим 50% потери света. Поэтому хорошо бы как-то усовершенствовать конструкцию фары в целом. Также, возможно, придется считаться с тем, что отраженный от дороги свет частично сохранит начальную поляризацию, и из-за этого эффективность освещения немного упадет.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:60812</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/60812.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=60812"/>
    <title>Сны о чем-то большем</title>
    <published>2009-08-16T09:59:42Z</published>
    <updated>2009-08-16T09:59:42Z</updated>
    <category term="сны"/>
    <category term="бридж"/>
    <content type="html">Снилось, будто сторговал с Маратом большой шлем. Раздача была такая: Т??, ТДхх, Т??, x (распределение фосок в трефе и черве не помню). Торговля шла очень глупо -- я обсчитался в количестве тузов и спасовал на открытии. Партнер открылся в мажоре, потом убежал в 3 бубей. Тут я обнаружил потерявшегос я туза и, кроме того, заметил, что есть все задержки и почти все они первого класса. Вполне шлемовая карта. Учитывая, что партнер еще не знает про бубновый фит, но ленясь считать силу, говорю сразу 6 бубей. Он поднимает до 7, и я просыпаюсь. Зная, что партнер склонен к импульсивности, ощущаю беспокойство -- что ж там дальше? Долго пытаюсь снова заснуть, чтобы посмотреть продолжение. Наконец, мне удается вернуться в сон, и я смотрю расклад. Вижу у партнера Вхх в пике при почти равномерном раскладе и от расстройства сразу просыпаюсь,&amp;nbsp;даже не проверив, берется ли малый шлем. :(</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:60475</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/60475.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=60475"/>
    <title>Про интернет-провайдеров</title>
    <published>2009-08-13T14:38:29Z</published>
    <updated>2009-08-13T14:38:29Z</updated>
    <category term="hardware"/>
    <content type="html">Сегодня продолжаю писать всякие гадости. На этот раз, запоздало выполняя просьбу &lt;span class='ljuser ljuser-name_yurikl' lj:user='yurikl' style='white-space: nowrap;'&gt;&lt;a href='http://yurikl.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://yurikl.livejournal.com/'&gt;&lt;b&gt;yurikl&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;, расскажу про работу наших интернет-провайдеров.&lt;br /&gt;&lt;br /&gt;Было так: наш домашний интернет был подключен через ADSL&amp;nbsp;от domolink'а. В июле там задумали менять какое-то оборудование. Из-за этого сеть пропала не на день, как можно было ожидать,&amp;nbsp;а более чем на две недели. Даже не горела лампочка DSL. Собственно,&amp;nbsp;из-за этого я &lt;a href="http://janatem.livejournal.com/60067.html"&gt;возился со скайлинком&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;В августе я не выдержал и переподключился к другой конторе -- billing-lan.net . Раньше мы имели с ними дело,&amp;nbsp;но потом нашлось несколько причин (в том числе высокие тарифы) уйти к домолинку. У биллинга вроде бы всё сделано красиво -- в дом заходит прямо-таки ethernet. Но ихний VPN -- это гемор еще тот. Мне кое-как удалось настроить соединение с компьютера,&amp;nbsp;но ведь не хочется же держать его,&amp;nbsp;большой и гудящий, включенным 24/7 для того, чтобы жила вся домашняя сеть. Надо устанавливать VPN-соединение с рутера. Однако рутер -- устройство довольно тупое,&amp;nbsp;поэтому заставить его делать слегка нестандартные действия непросто.&lt;br /&gt;&lt;br /&gt; Проблема в том, что VPN-сервер находится не в локальной сети, и нужно ходить к нему через шлюз. При этом, если установлен дефолтный маршрут, то поднявшийся PPP перезатирает его своей обычной опцией replacedefaultroute, в результате срубая сук, на котором сидит. Поэтому приходится держать специальный route для доступа подсети, где живет vpn-сервер. Моя коробочка не имеет в конфиге отдельного поля для локального шлюза, она думает, что vpn-сервер всегда живет в локальной подсети. Поэтому пришлось брать в руки бубен и настраивать маршруты вручную. При этом из-за ошибки в прошивке мои настройки часто не могут пережить ресета или даже временного обрыва VPN-соединения -- почему-то адрес интерфейся WAN самопроизвольно заменяется на адрес ppp-интерфейса. (Железка DLink Dir-320 с прошивками dd-wrt, я пробовал три версии прошивки,&amp;nbsp;но все они с этой ошибкой.) Я пока не осилил создание хака для этой прошивки,&amp;nbsp;чтобы запускать в нужный момент загрузки мой скрипт из nvram. Т.е. я не хочу осваивать весь toolchain для создания новой прошивки, а пытаюсь перебиться тем, что можно записывать в nvram.&lt;br /&gt;&lt;br /&gt; В общем этот виндовозно заточенный протокол PPTP меня бесит. Неужели нельзя сделать чего-нибудь более цивильного? Хотя бы тот же openvpn, который работает понятно и надежно. Вообще ведь ничто не мешает держать набор сервисов, чтобы клиент мог выбрать наиболее ему подходящий.&lt;br /&gt;&lt;br /&gt;А еще биллинговский саппорт отжигает. У них довольно часто отваливается то vpn-сервер, то шлюз. В очередной раз звонил им по этому поводу, говорю, что шлюз не работает. Оператор-девушка начинает что-то впаривать про то, устанавливается ли соединение и т.п. Я пытаюсь донести, что если шлюз не работает, то и VPN-соединение в принципе не может быть установлена. Она вообще создает впечатление достаточно грамотного для такой должности айтишника,&amp;nbsp;но здесь как будто специально начинает прикидываться дурой. &amp;quot;Мы не отвечаем за настройки маршрутизатора, попробуйте с компьютера&amp;quot; и т.д. Я думаю, хрен с вами, цепляю нетбук,&amp;nbsp;меняю мак-адрес -- вижу шлюз есть,&amp;nbsp;и даже vpn поднимается;&amp;nbsp;переподключаю опять рутер -- тоже всё работает. Т.е.&amp;nbsp;они в саппорте приучены зачем-то сначала лапшу вешать,&amp;nbsp;а потом,&amp;nbsp;пользуясь временным замешательством клиента,&amp;nbsp;быстренько проверяют свои железки.&amp;nbsp;Часто за это время удается поправить все косяки, и в результате -- клиент дурак, а саппорт весь в белом.&lt;br /&gt;&lt;br /&gt;Однако, возвращаясь к домолинку. По совету &lt;span class='ljuser ljuser-name_yurikl' lj:user='yurikl' style='white-space: nowrap;'&gt;&lt;a href='http://yurikl.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://yurikl.livejournal.com/'&gt;&lt;b&gt;yurikl&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp; я попробовал изменить настроки в разделе ADSL: бывают какие-то ADSL2, ADSL2+ и т.д. (точнее, я тупо включил все галки, чтобы он сам выбирал). В результате случилось чудо: и светодиод DSL зажегся,&amp;nbsp;и, более того, оно соединилось и заработало. Правда,&amp;nbsp;как оказалось,&amp;nbsp;работает плохо, довольно часто отваливается. Да и всё равно подло с их стороны после смены железа не сказать о том,&amp;nbsp;что надо какие-то заточки сменить.&lt;br /&gt;&lt;br /&gt;В результате имеем два интернета, оба плохо работающие,&amp;nbsp;но плохо по-разному. (Хех,&amp;nbsp;что получается! Все хорошо работающие устройства работают одинаково хорошо,&amp;nbsp;каждое плохо работающее устройство плохо работает по-своему.)&lt;br /&gt;&lt;br /&gt;Интересно, это везде так или где-то всё же могут обеспечить нормальный сервис?&amp;nbsp;И&amp;nbsp;связаны ли текущие проблемы с периодом отпусков?&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:60161</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/60161.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=60161"/>
    <title>Как поссорились Иван Иванович с Иваном Никифоровичем</title>
    <published>2009-08-13T11:46:51Z</published>
    <updated>2009-08-13T11:46:51Z</updated>
    <category term="непонятное"/>
    <category term="всякое"/>
    <content type="html">&lt;a href="http://fregimus.livejournal.com/66234.html"&gt;Суть&lt;/a&gt; в том,&amp;nbsp;что &lt;span class='ljuser ljuser-name_fregimus' lj:user='fregimus' style='white-space: nowrap;'&gt;&lt;a href='http://fregimus.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://fregimus.livejournal.com/'&gt;&lt;b&gt;fregimus&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp; неточно процитировал некоего журналиста &lt;span class='ljuser ljuser-name_scottishkot' lj:user='scottishkot' style='white-space: nowrap;'&gt;&lt;a href='http://scottishkot.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://scottishkot.livejournal.com/'&gt;&lt;b&gt;scottishkot&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;(причем,&amp;nbsp;кажется,&amp;nbsp;более-менее правильно передав дух высказывания, но изменив букву). А тот прямо таки в суд подал за клевету (или пока только пригрозил).&lt;br /&gt;&lt;br /&gt;На месте fregimus'а мог бы оказаться каждый. Даже я, хотя с меньшей вероятностью, -- я бы, конечно, в такое непонятное месиво не полез, однако иногда позволяю себе и в более извращенной форме перевирать чужие высказывания.&lt;br /&gt;&lt;br /&gt;Поэтому мне представляется полезным проанализировать причины столь резкой и явно неадекватной реакции. Может быть, журналист преследовал какие-то свои, мне непонятные, пиар-цели. А может он просто в каком-то непонятном порыве написал гневный комментарий,&amp;nbsp;а потом пожалел об этом, да поздно было ,-- получилось, взял сам себя на понт. Кстати, сам &lt;a href="http://bars-of-cage.livejournal.com/562731.html?thread=8269867#t8269867"&gt;текст&lt;/a&gt;, помимо легко извлекаемого смысла содержит в себе куски чистого словоблудия, столь искусного,&amp;nbsp;что я, имея необходимость на него отвечать,&amp;nbsp;боролся бы с искушением выразить свой ответ на каком-нибудь языке программирования (например, брейнфаке), с тем, чтобы отомстить автору нарочитой непонятностью за нарочитую непонятность.&lt;br /&gt;&lt;br /&gt;Я, признаюсь, не осилил разобраться в сути флейма -- почитал лишь по диагонали. Ну собачатся люди себе и ладно. Но стоило fregimus'у вынести свое замечаение в другое место... Кстати, может быть в этом дело? Наверно людям не нравится,&amp;nbsp;когда о них говорят в третьем лице. Я сам сталкивался с подобной, столь же импульсивной, реакцией -- после вялотекущей перебранки в чужом журнале оставил о ней несколько язвительное упоминание в своем журнале.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:60067</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/60067.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=60067"/>
    <title>Дачный интернет</title>
    <published>2009-08-05T23:40:45Z</published>
    <updated>2009-08-05T23:40:45Z</updated>
    <category term="модем"/>
    <category term="software"/>
    <category term="linux"/>
    <category term="hardware"/>
    <content type="html">Мне попалась в руки такая игрушка -- модем C-motech CNU-680. Я хотел быстренько справить интернет-нужду, но не тут-то было.&lt;br /&gt;&lt;br /&gt; Мы уже привыкли, что многие производители железа не заботятся о пользователях, которые живут на линуксе. Чисто формально по задумке разработчиков этот CNU-680 должен работать и с линуксовым компом, даже без специального ядерного модуля. Реально это сделано так: usb-устройство при втыкании обнаруживается как несколько устройств: (1) обычный флеш-накопитель, (2) CD-диск, а также (3) некое дополнительное SCSI generic устройство (я так понял, три штуки /dev/sg* отвечают соответственно за (1) и (2), а также за еще одно дополнительное).&lt;br /&gt;&lt;br /&gt;Первое на основную функциональность не влияет, просто дает флешку (правда, я не смог ее подмонтирова, там какая-то неизвестная таблица разделов,&amp;nbsp;ну и фиг с ней, не стал разбираться).&lt;br /&gt;&lt;br /&gt; На CD-диске находятся драйвера для разных ОС,&amp;nbsp;причем то, что лежит в директории Linux, заслуживает отдельного комментария. Там есть бинарник с именем RDEVCHG, который надо запустить из-под рута и скрипт,&amp;nbsp;который запускает wvdial с якобы правильным конфиг-файлом. Еще (что само по себе замечательно) там есть исходник этого RDEVCHG.&lt;br /&gt;&lt;br /&gt;Ни бинарник, ни скрипт у меня не заработали, но это само по себе не примечательно. Важно другое -- созерцание исходника и скрипта вызывает ощущение, что разработчики намеревались плюнуть в душу всем пользователям, и это, похоже, им удалось. Я даже не уверен, что автор кода дошел до стадии &amp;quot;works for me&amp;quot; -- там реально написан полный бред. Что я выяснил: требуется всего-то сделать один вызов ioctl() в применении к устройству /dev/sg* (номер 3 в моем перечне). Хитрость лишь в том, чтобы угадать правильный номер устройства (вместо звездочки). Результатом этого ioctl() должно быть появление нового устройства /dev/ttyACM*,&amp;nbsp;которое является одним стандартным устройств соответствующих модему; с ним уже работает wvdial (ну или напрямую pppd).&lt;br /&gt;&lt;br /&gt;В общем, они пытаются перебором проверить все /dev/sg*, но делают это неправильно -- условие успеха не то. Кроме того, они неправильно интерпретируют возвращаемое значение ioctl(). Не знаю, есть ли дистрибутив линукса, на котором этот код работает. Даже если бинарник где-то сработает,&amp;nbsp;то скрип точно нерабочий. Еще они ввели меня в заблуждение относительно цели выполнения ioctl(),&amp;nbsp;поэтому я не смог правильно подхачить код, чтобы всё заработало.&lt;br /&gt;&lt;br /&gt;Потом уже я нашел на sourceforge маленький проект &lt;a href="http://cmotech-tools.sourceforge.net/"&gt;cmotech-tools&lt;/a&gt; -- тот же самый вызов ioctl(), только правильно и аккуратно обернут.&amp;nbsp;Плюс к тому примочка с udev, которая запускает всё автоматически при включении (а также, похоже, само восстанавливает соединение при обрыве (а обрывы, как я успел убедиться, довольно часты)). В общем, это cmotech-tools прекрасно заработал у меня (правда я не стал заморачиваться с udev -- всё вручную). (Только меня подстерегли еще одни грабли -- долго не мог понять, где брать логин/пароль для скайлинка.)&lt;br /&gt;&lt;br /&gt;PS. А производители этой железки -- козлы. Отобрали у меня кучу времни, причем совершенно не по делу.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:59771</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/59771.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=59771"/>
    <title>Всякая фигня происходит...</title>
    <published>2009-08-05T22:45:14Z</published>
    <updated>2009-08-05T23:46:49Z</updated>
    <category term="всякое"/>
    <content type="html">Во-первых, я теперь считаюсь больным и сижу дома, на работу не хожу. После похода в Хибины у меня заболела спина и я, наконец, добрался до врача. Теперь вот лечусь.&lt;br /&gt;&lt;br /&gt;Во-вторых дома уже две недели нет инета. Кто-то -- то ли провайдер, то ли АТС -- менял оборудование, и теперь DSL не работает. В Домолинке придумали клевую отмазку: согласно договору они имеют право &amp;quot;починять&amp;quot; (т.е. с чистой совестью вообще ничего не делать) в течение двух рабочих недель. И это вроде как написано в договоре. (Почитать договор что ли?)&lt;br /&gt;&lt;br /&gt;Еще я убил кучу времени на то, чтобы подключиться через gprs. Всё безрезультатно -- не помогл даже мой старый телефон, который я точно использовал как модем. Да, тут еще проблема курицы и яйца -- чтобы подключиться к инету, надо вкурить мануалы, которые водятся в инете... В результате я на несколько дней оказался почти в полной изоляции.&lt;br /&gt;&lt;br /&gt;Из более оптимистичного:&lt;ul&gt;&lt;li&gt;Я взял погонять скайлинковский модем и кое-как подключился через него&amp;nbsp;(но эти грабли -- отдельная тема).&lt;/li&gt;&lt;li&gt;Наконец-то подошел к Хаселю на интимное расстояние (благо необходимый софт был заранее установлен, а также распечатана брошюрка). Я восхищен! Если раньше я осознавал, что алгебраические полиморфные типы данных в ML по выразительности сравнимы с классами в ООП, то сейчас вижу, что ООП как парадигма программирования просто сосет у хаскельных классов (особенно, если включить какие-нибудь расширения, например GADT -- &amp;quot;обобщенные&amp;nbsp; алгебраические типы&amp;quot;).&lt;/li&gt;&lt;li&gt;Я самостоятельно заботал, как делать внутримышечную инъекцию. И, собственно, сделал. Надеюсь Хе, когда узнает, меня не прибьет за то, что я постеснялся обращаться к соседу-врачу, а сделал всё сам. ;)&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:59474</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/59474.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=59474"/>
    <title>А мы уйдем на север...</title>
    <published>2009-07-11T18:08:08Z</published>
    <updated>2009-07-11T18:08:08Z</updated>
    <category term="поход"/>
    <category term="Хибины"/>
    <content type="html">...и переждем там недели полторы.&lt;br /&gt;&lt;br /&gt;Это примерно здесь:&amp;nbsp;&lt;a href="http://xoft.ru/~art/hibiny/01.jpg"&gt;http://xoft.ru/~art/hibiny/01.jpg&lt;/a&gt; (осторожно,&amp;nbsp;19 МБ)&lt;br /&gt;&lt;br /&gt;Стартовые массы: 34.0,&amp;nbsp;22.7, 6.0, 6.0 кг.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:59311</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/59311.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=59311"/>
    <title>ICFPC-2009: конкуренты</title>
    <published>2009-07-03T19:33:56Z</published>
    <updated>2009-07-03T19:33:56Z</updated>
    <category term="математика"/>
    <category term="icfpc"/>
    <content type="html">Роясь в блоге замечательной харьковской команды THIRTEEN (я уже упоминал ее), увидел пост с вызывающим текстом: &lt;a href="http://thirteen.kharkov.ru/2009/07/01/icfpc-2009-thirteen-testcase-4001-video/"&gt;Здесь базу посетили _после_ Луны&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Созерцание ролика вызвало у меня культурный шок.&amp;nbsp;Они реально жгут! Без дозаправки облетают все цели. Главное обидно, что мы, выведя все нужные формулы, не доперли до очень простых вещей (которые становятся наглядными на видео):&lt;ol&gt;&lt;li&gt;Для изменения энергии орбиты выгодней всего ускоряться в перигее. Причина довольно очевидна: скорость максимальна =&amp;gt; приращение квадрата скорости максимально. Энергия однозначно задает a -- большую полуось эллипса.&lt;/li&gt;&lt;li&gt;Для изменения других параметров выгоднее ускоряться в апогее. Это верно по крайней мере для угла наклона оси эллиса относительно координатной оси. (Где лучше менять эксцентриситет, не меняя энергии, так сходу не скажу, но это вроде и не требуется.)&lt;/li&gt;&lt;li&gt;Почему-то я не верил, что перехват может быть успешным и при большой разности векторов скорости. Из-за этого мы рассматривали только орбиты касательные к целевым. Сейчас я почти уверен, что мой алгоритм локальной доводки будет успешно работать не только на касательных. По крайней мере вдалеке от Земли -- там линеаризация будет достаточно точной.&lt;/li&gt;&lt;/ol&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:59019</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/59019.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=59019"/>
    <title>ICFPC и математика</title>
    <published>2009-07-01T21:32:03Z</published>
    <updated>2009-07-01T21:32:03Z</updated>
    <category term="всякое"/>
    <category term="математика"/>
    <category term="icfpc"/>
    <content type="html">Еще раз о пользе и вреде чистой, непрограммистской математики в условиях соревнования.&lt;br /&gt;&lt;br /&gt;Как восторженно и поэтично &lt;a href="http://thirteen.kharkov.ru/2009/06/30/san-esse-o-polze-matematiki/"&gt;пишет&lt;/a&gt; об этом участник-нематематик (команда THIRTEEN):&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;Понимающие математику! О, они подобны музыканту, берущему нотную запись незнакомого музыкального произведения, и начинающему играть ноты, претворяя их в жизнь. Понимающие математику берут с нужной полочки формулы, и знают, что в них к чему! Для того, чтобы перевести тело из одной любой точки в другую в орбитальном пространстве земли, нет нужды методом приближений искать нужный вектор приложения сил, запуская каждый раз прилагаемую программу, и наблюдая, чем это закончится, а потом чуть-чуть изменять вектор и пробовать еще раз, приближаясь к нужному варианту. Так делаем мы, люди, но не математики. [...]&lt;/div&gt;&lt;br /&gt;А вот слова математика &lt;span class='ljuser ljuser-name_janatem' lj:user='janatem' style='white-space: nowrap;'&gt;&lt;a href='http://janatem.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://janatem.livejournal.com/'&gt;&lt;b&gt;janatem&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;'а:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;В очередной раз напоминаю (в первую очередь себе!), что аналитические методы на ICFPC -- это зло.&amp;nbsp;Конечно, приятно аналитически решить задачу и получить удовольствие, но всегда есть риск, что это не удастся сделать за разумное время. [...]&lt;/div&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:58784</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/58784.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=58784"/>
    <title>ICFPC-2009</title>
    <published>2009-07-01T14:11:05Z</published>
    <updated>2009-07-01T17:02:15Z</updated>
    <category term="математика"/>
    <category term="icfpc"/>
    <category term="software"/>
    <category term="программирование"/>
    <content type="html">&lt;strong&gt;Событие&lt;/strong&gt;:&amp;nbsp;http://icfpcontest.org/&lt;br /&gt;&lt;strong&gt;Команда&lt;/strong&gt;: Error 404&lt;br /&gt;&lt;strong&gt;Состав&lt;/strong&gt;:&lt;a href="http://yurikl.livejournal.com/profile"&gt;&lt;img width="17" height="17" style="border: 0pt none ; vertical-align: bottom; padding-right: 1px;" alt="[info]" src="http://l-stat.livejournal.com/img/userinfo.gif" /&gt;&lt;/a&gt;&lt;a href="http://yurikl.livejournal.com/"&gt;&lt;b&gt;yurikl&lt;/b&gt;&lt;/a&gt;&amp;nbsp;, &lt;span class='ljuser ljuser-name_janatem' lj:user='janatem' style='white-space: nowrap;'&gt;&lt;a href='http://janatem.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://janatem.livejournal.com/'&gt;&lt;b&gt;janatem&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&amp;nbsp;, Антон и еще Антон&amp;nbsp;(ощутимо не хватало &lt;span class='ljuser ljuser-name_druxa_druxa' lj:user='druxa_druxa' style='white-space: nowrap;'&gt;&lt;a href='http://druxa-druxa.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://druxa-druxa.livejournal.com/'&gt;&lt;b&gt;druxa_druxa&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;)&lt;br /&gt;&lt;a href="http://icfpcontest.org/scoreboard.php"&gt;&lt;strong&gt;Предварительный результат&lt;/strong&gt;&lt;/a&gt;:&amp;nbsp;2735.2781 баллов,&amp;nbsp;14 задач (25-е место).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Собственно задание&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;a name="cutid1"&gt;&lt;/a&gt;Дан космический аппарат в поле тяжести Земли, и надо им управлять так, чтобы наиболее полно выполнить заданную миссию, причем побыстрее и потратив поменьше топлива. Худший результат достигается, если аппарат врезается в Землю или расходует всё топливо -- тогда за раунд дают ноль баллов. Вот перечень заданий-миссий:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Перейти с одной круговой орбиты на другую круговую. (Здесь организаторы облажались, и большее количество очков получали те, кто сжигал &lt;u&gt;больше&lt;/u&gt; топлива. Исправлять они отказались, ибо &amp;quot;так даже прикольней получилось&amp;quot;.)&lt;/li&gt;&lt;li&gt;То же самое, но надо еще состыковаться с другим спутником на целевой орбите.&lt;/li&gt;&lt;li&gt;Обобщение (2): начальная и целевая орбиты эллиптические.&lt;/li&gt;&lt;li&gt;(Задание было выложено по прошествии суток -- после завершения lightning-раунда.) Нужно было собирать космический мусор -- пачка спутников на различных орбитах. Чтобы жизнь малиной не казалась, добавили заправочную станцию на низкой орбите и Луну. (Опять же без багов со стороны организаторов не обошлось -- Луна не действовала на наш КА, только на мусор. Из-за этого было нереально поймать спутник на окололунной орбите. Но его всё-таки исправили.)&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: large;"&gt;Организация&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Найдите десять отличий от ICFPC-2008 (там надо было управляться с марсоходом). ;)&lt;br /&gt;&lt;br /&gt;Моя критика в адрес организаторов состоит в основном в том, что была дана известная и скорей всего давно решеная задача -- те, кто в теме и &amp;quot;держит в руках&amp;quot; соответсвующие алгоритмы, могли бы довольно быстро и без особого труда всё решить. Ну разве что оставлось бы место для творчества в четвертом задании -- нужно было придумать стратегию очередности обхода спутников и заправки. В этом свете не слишком впечатляющие результаты команды ИПМ выглядят особенно бледно. В наше оправдание замечу, что некоторая часть аппаратов серии &lt;a href="http://ru.wikipedia.org/wiki/%D0%9B%D1%83%D0%BD%D0%B0_%28%D0%BA%D0%BE%D1%81%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%29"&gt;Луна&lt;/a&gt; была утеряна из-за расчетных ошибок.&lt;br /&gt;&lt;br /&gt;Тем, кто внимательно и до конца прочитал условие, обломился бонус: ссылка на википедийную статью про &lt;a href="http://en.wikipedia.org/wiki/Hohmann"&gt;маневр Хохманна&lt;/a&gt;. (На самом деле в русской транскипции Hohmann вовсе не Хохманн, а Гоман -- мы потом уже нашли советскую книгу докосмической эры (!), где было написано по теме почти всё.) В этой статье есть все три формулы, чтобы без напряженя мозга решить первое и второе задания. (Ну на самом деле не совсем так: точности не всегда хватало, поэтому нужен был еще алгоритм finetune для локальной доводки.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Сам процесс&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В течение всего контеста команда почти полностью была&amp;nbsp; в одном месте в реале. Это хороший бонус. Благодаря удачному распределению сил нашей команде удалось быстро реализовать (1) виртуальную машину, (2) маневр Гомана и (3) наивный finetune, что позволило в первую же ночь закомитить пристойные результаты для первого и второго задания.&lt;br /&gt;&lt;br /&gt;На второй день я научился аналитически стоить эллипс по трем точкам.Очень удобно уравнение эллипса в полярных координатах:&lt;br /&gt;&lt;img src="http://www.codecogs.com/eq.latex?%5Crho=%5Cfrac%7Bp%7D%7B1-e%5Ccos%28%5Cphi-%5Calpha%29%7D" alt="" /&gt;&lt;br /&gt;Здесь фокус эллипса находится в начале координат, как раз там, где у нас Земля. (По сравнению с &lt;a href="http://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%BB%D0%B8%D0%BF%D1%81#.D0.A3.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B2_.D0.BF.D0.BE.D0.BB.D1.8F.D1.80.D0.BD.D1.8B.D1.85_.D0.BA.D0.BE.D0.BE.D1.80.D0.B4.D0.B8.D0.BD.D0.B0.D1.82.D0.B0.D1.85"&gt;канонической формулой&lt;/a&gt; здесь добавлен угол alpha между большой полуосью эллипса и осью координат.) Таким образом, любая эллиптическая орбита задается тремя параметрами.&lt;br /&gt;&lt;br /&gt;Потом, &lt;span class='ljuser ljuser-name_yurikl' lj:user='yurikl' style='white-space: nowrap;'&gt;&lt;a href='http://yurikl.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://yurikl.livejournal.com/'&gt;&lt;b&gt;yurikl&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;  научился (тоже аналитически) строить эллипс, касательный двум данным эллипсам (правда, с некоторыми ограничениями), а мне удалось допилить алгоритм локальной доводки до почти идеального.&lt;br /&gt;&lt;br /&gt;Дальше пошли танцы с бубнами: всю эту машинерию так просто применить не всегда удается из-за потери точности (особенно на высоких орбитах), а также из-за влияния Луны в четвертом задании. Численно решать ограниченную задачу трех тел как-то не хотелось (точнее,&amp;nbsp;обратную к ней), хотя наверно, если покопаться, нужные алгоритмы можно было найти. Поэтому решили считать Луну всего лишь возмущением для эллиптических орбит.&lt;br /&gt;&lt;br /&gt;Лирическое отсупление -- попутно нашел прикол в википедийной статье про &lt;a href="http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D1%82%D1%80%D0%B5%D1%85_%D1%82%D0%B5%D0%BB"&gt;задачу трех тел&lt;/a&gt;: &lt;div style="margin-left: 40px;"&gt;[...] Это подтолкнуло Пуанкаре и Зундмана искать решение не в виде функций от &lt;span class="texhtml"&gt;&lt;i&gt;t&lt;/i&gt;&lt;/span&gt;, а в виде рядов от некоторого параметра. [...] Эти ряды были найдены [...] К несчастью, как показал Д. Белорицкий, по крайней мере в случае Лагранжа для нужд вычислительной астрономии в сходящихся рядах Зудмана &lt;u&gt;нужно брать как минимум&lt;/u&gt; &lt;img src="http://www.codecogs.com/eq.latex?10%5E%7B8%5Ccdot%7B10%5E6%7D%7D" alt="" /&gt; членов.&lt;/div&gt;&lt;div style="margin-left: 40px;"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;В общем, на Луну мы даже и не пытались летать, и занимались всякой эвристической фигней типа подбора констант. И довольно быстро скатились в таблице с третьих мест до двадцатых. Поскольку в последние четыре часа мы комитили мало, ожидается, что окончательный результат будет хуже предварительного (25-е место).&lt;br /&gt;Да, можно отметить такой полезный,&amp;nbsp;но простой как валенок,&amp;nbsp;хак: если на очередной маневр не хватает топлива, и неясно, что делать,&amp;nbsp;то надо тупо отключить двигатели и ждать окончания раунда, надеясь не врезаться в Землю. Тогда исключается возможность получить ноль баллов за опустошенный бак.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Замечания на будущее&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; Язык программирования Java показался вполне удовлетворительным. Правда к концу мероприятия бОльшая часть кода превратилась в плохочитаемую лапшу. В связи с этим надо подумать, как с этим бороться. Наверно в определенный момент надо было потратить время на рефакторинг. Тем более, что идея использовать continuation passing style мне пришла в голову не в последний момент,&amp;nbsp;а когда еще можно было задешево переоформить имеющееся хозяйство. Задним числом видно, что это было бы полезно:&amp;nbsp;появилась бы так необходимая модульность. Конечно, нет повода не искать и другие языки.&lt;br /&gt;&lt;br /&gt;Полезно заранее подготовить инструментарий. Об этом говорилось уже сто раз, но опять наступаем на грабли: к началу контеста выяснилось,&amp;nbsp;что я потерял свой доступ к репозиторию,&amp;nbsp;и ни у кого нет админского доступа. (К слову сказать, я умудрился забыть дома компьютер.) При этом не было защиты от падения интернета и всё хозяйство хранилось на удаленном сервере. Чудесным образом проблем с инетом не было.&lt;br /&gt;&lt;br /&gt;Да, еще мы так и не нашли удовлетворительного средства для реализации блога+вики+чего-еще-надо в одном флаконе. Хотя заранее потратили изрядно времени. Это отдельная тема для обсуждения.&lt;br /&gt;&lt;br /&gt;В очередной раз напоминаю (в первую очередь себе!), что аналитические методы на ICFPC -- это зло.&amp;nbsp;Конечно, приятно аналитически решить задачу и получить удовольствие, но всегда есть риск, что это не удастся сделать за разумное время.&amp;nbsp;Таким образом,&amp;nbsp;правильная стратегия -- иметь в запасе набор алгоритмов разной степени универсальности для решения следующих типовых задач: решение системы алгебраических уравнений, поиск экстремумов,&amp;nbsp;поиск путей в графах и т.д. Если задача не берется аналитически за небольшое время (полчаса-час), то сразу переходить на численные методы. Уж потом можно распараллелиться и пытаться заменить плохое численное решение на хорошее аналитическое.&lt;br /&gt;&lt;br /&gt;Хорошо бы заранее озаботиться готовкой правильной еды. Для этого не жалко завести специального члена команды.&amp;nbsp;;)&amp;nbsp;А то всякие пиццы, пусть даже и горячие, меня совсем не радуют... Ну и надо подумать о режиме сна. То ли спать понемногу, но часто,&amp;nbsp;то ли наоборот, не знаю. А то я часто ловил себя на том,&amp;nbsp;что мозг уже не соображает, и только зря время тратится.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Upd&lt;/strong&gt;. Да, для подобных задач обязательно иметь под руками библу для работы с комплексными числами. А то по какому-то недоразумению в стандартной яве ее нет. В результате и в этом контесте, и в прошлогоднем дело было так: вначале всё писалось на отдельных координатах, потом в какой-то момент меня заколебывало вспоминать, как сторить перпендикуляр или уравнение касательной,&amp;nbsp;и сначала вся аналитика, а потом и программа переделывалась под использование комплексных чисел. Вероятно, из-за этого немного падает эффективность, но ведь продуктивность гораздо важнее!&lt;br /&gt;&lt;br /&gt;PS. Вот еще один &lt;a href="http://users.livejournal.com/_adept_/94839.html"&gt;отчет&lt;/a&gt; для сравнения.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:58518</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/58518.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=58518"/>
    <title>janatem @ 2009-06-25T11:07:00</title>
    <published>2009-06-25T07:20:08Z</published>
    <updated>2009-06-25T07:20:08Z</updated>
    <category term="hardware"/>
    <content type="html">Насчет того, как &lt;a href="http://janatem.livejournal.com/55881.html"&gt;сделать проигрыватель на рутере&lt;/a&gt;:&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;em&gt;К сожалению,&amp;nbsp;я обнаружил, что выбор usb-звуковушек совсем не велик;&amp;nbsp;кроме того,&amp;nbsp;всё что сейчас есть в магазинах -- очень наворочено и поэтому слишком дорого.&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;На самом деле правильные устройства конечно же есть, например некая &lt;a href="http://mightyohm.com/blog/2008/10/inside-the-syba-sd-cm-uaud-usb-stereo-audio-adapter/"&gt;SYBA SD-CM-UAUD&lt;/a&gt;. И стоит она по 50 копеек пучок (точнее $8). Только это за морем телушка -- полушка... А в российских магазинах я не нашел даже упоминания о ней.&lt;br /&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:58287</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/58287.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=58287"/>
    <title>Фишерандом</title>
    <published>2009-06-24T13:59:41Z</published>
    <updated>2009-06-24T13:59:41Z</updated>
    <category term="математика"/>
    <category term="шахматы"/>
    <content type="html">Почитывал описание правил фишеровских шахмат в русской википедии и заметил, что приведенная там &lt;a href="http://ru.wikipedia.org/w/index.php?title=Случайные_шахматы&amp;amp;oldid=15406093#.D0.9D.D0.B0.D1.87.D0.B0.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D0.BF.D0.BE.D0.B7.D0.B8.D1.86.D0.B8.D1.8F"&gt;процедура выбора начальной расстановки&lt;/a&gt; явно кривая.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;...&lt;br /&gt;Случайным образом выбрать вертикаль для белого короля из диапазона b1-g1.&lt;br /&gt;Случайным образом выбрать позиции для ладей: одну из диапазона a1-позиция короля, другую из диапазона от позиции короля до h1.&lt;br /&gt;Из оставшихся белых клеток первой горизонтали выбрать случайную позицию для белопольного слона.&lt;br /&gt;Из оставшихся чёрных клеток первой горизонтали выбрать случайную позицию для чёрнопольного слона.&lt;br /&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Невооруженным взглядом видно, что, хотя все 960 позиций достижимы, они выпадают не равновероятно. Если король попадет на b1 или g1, то вариантов расположения ладей будет 6*1=6, а если попадет в центр -- то 3*4=12. (Здесь не учитывается ограничение на разнопольность слонов, но всё равно понятно, что будет криво.)&lt;br /&gt;&amp;nbsp;&lt;/div&gt;Полез разбираться, что пишут в английской версии,&amp;nbsp;и нашел целый список процедур установки. Там были и правильные (например, &lt;a href="http://en.wikipedia.org/wiki/Chess960_starting_position#Bodlaender.27s_dice-rolling_method"&gt;бодландеровская&lt;/a&gt;), и кривые, в том числе попавшая в русскую (&lt;a href="http://en.wikipedia.org/wiki/Chess960_starting_position#Rovida.27s_dice-rolling_method"&gt;by Ravida&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt; В связи с этим возникает вопрос: зачем существуют кривые способы, если они ничем не лучше правильных (ну разве что вместо 6-7 бросков кубика достаточно 5-6)? Причем кривых способов много разных. Неужели люди,&amp;nbsp;пользуясь ими, не чувствуют что что-то не так?!&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:58021</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/58021.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=58021"/>
    <title>Театры мечт</title>
    <published>2009-06-17T11:55:04Z</published>
    <updated>2009-06-17T11:58:34Z</updated>
    <content type="html">Мы с Хеленкой отметились посещением Dream Theater в Лужниках. Кратко о впечатлениях. Никакой особой программы, тем более концепта, у них не было,&amp;nbsp;просто подборка из разных альбомов, ну и, само собой, новенькое из не вышедшего пока альбома. Да, конечно же были и &lt;strike&gt;пьяные вариации&lt;/strike&gt; импровизации, что характерно для DT. :)&lt;br /&gt;&lt;br /&gt;Вот только организаторы подкачали. Звук бы отвратен. Еще для такого огромного зала просто необходимы были экраны. Ну и цены на билеты -- в прошлом году у меня был шанс за ту же сумму попасть на _трехдневный_ фестиваль Graspop, где DT был лишь одним из многих пунктов программы. Хотя цены всё же можно назвать рыночно адекватными, поскольку зал был полон несмотря ни на что.&lt;br /&gt;&lt;br /&gt; Я уже давно понял, что не стоит ходить на монстров, собирающих большие залы (прямо-таки стадионы на десятки килозрителей). Эти стадионы и спортивные залы не заточены под концерты, в них неизбежно поганый звук, и даже на хороших местах нет ощущения присутствия. (Однако ж опять наступаю на старые грабли.) Хочется чего-нибудь более камерного.&lt;br /&gt;&lt;br /&gt;В связи с этим я придумал новый жанр развлечений, дешевый и бесхитростный. Вот есть театр -- живая игра,&amp;nbsp;а есть кино -- мертвая. Предлагаю аналогично жанр мертвой музыки: пусть будет маленький зальчик на 20-100 чел с хорошей аудиоаппаратурой и акустически правльной геометрией. Важно, чтобы затея не выродилась в обычный бар с фоновой музыкой;&amp;nbsp;т.е. должно быть расписание,&amp;nbsp;что и в какое время дают. Такие зальчики могут находиться в любых местах города,&amp;nbsp;так чтобы людям было удобно, например, после работы потусоваться,&amp;nbsp;выпить пивка и заценить новый (или наоборот)&amp;nbsp;альбомчик любимых авторов.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:57708</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/57708.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=57708"/>
    <title>Даешь гендерное равноправие!</title>
    <published>2009-06-02T11:29:38Z</published>
    <updated>2009-06-02T11:29:38Z</updated>
    <category term="всякое"/>
    <category term="software"/>
    <content type="html">Настройка женского линукса:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;$ echo 'alias lady=man' &amp;gt;&amp;gt; ~/.bashrc&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:janatem:57527</id>
    <link rel="alternate" type="text/html" href="http://janatem.livejournal.com/57527.html"/>
    <link rel="self" type="text/xml" href="http://janatem.livejournal.com/data/atom/?itemid=57527"/>
    <title>janatem @ 2009-05-24T20:53:00</title>
    <published>2009-05-24T21:02:57Z</published>
    <updated>2009-05-24T21:04:21Z</updated>
    <category term="всякое"/>
    <content type="html">Кажется, так линукс еще никто не опускал. ;)&lt;br /&gt;&lt;br /&gt;Мне звонят из магазина:&lt;br /&gt;-- Вы заказывали ноутбук такой-то?&lt;br /&gt;-- Да.&lt;br /&gt;-- Доставка туда-то в такое-то время. Так?&lt;br /&gt;-- Да, всё правильно.&lt;br /&gt;-- Только вы знаете, что он &lt;em&gt;без операционной системы&lt;/em&gt;?&lt;br /&gt;-- Как?! На сайте было написано, что там линукс установлен.&lt;br /&gt;-- Да, но там нет графики. И вообще...&lt;br /&gt;-- Я знаю, что такое линукс. [Только не втыкаю, почему &amp;quot;нет графики&amp;quot;, и почему бы ясно не сказать, какой там дистрибутив.]&lt;br /&gt;-- Ну ладно, я вас предупредил.&lt;br /&gt;&lt;br /&gt;Видимо следует считать, что в данном контексте linux = free dos = &amp;quot;просто бесплатная ОС&amp;quot;. Просто для того, чтобы ноутбук мог при включении &amp;quot;помигать лампочками&amp;quot;. Может быть по закону запрещено продавать компьютеры без предустановленной ОС?</content>
  </entry>
</feed>
