<?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/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
<channel>
  <title>dump -0f - /dev/mind</title>
  <link>http://users.livejournal.com/_adept_/</link>
  <description>dump -0f - /dev/mind - LiveJournal.com</description>
  <lastBuildDate>Thu, 08 May 2008 19:08:56 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>_adept_</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>http://p-userpic.livejournal.com/35290240/649412</url>
    <title>dump -0f - /dev/mind</title>
    <link>http://users.livejournal.com/_adept_/</link>
    <width>67</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/82626.html</guid>
  <pubDate>Thu, 08 May 2008 19:08:56 GMT</pubDate>
  <title>Анонс: Книга о синтаксическом анализе и построении DSL при помощи Haskell</title>
  <link>http://users.livejournal.com/_adept_/82626.html</link>
  <description>Когда-то давно на волне некоторого успеха в деле написания заметочек в блог и журнальных статей, мне подумалось - а почему бы не попробовать себя в следующей весовой категории? Мысль пришла в голову и ушла в подсознание. Осела там, окопалась и изредка напоминала о себе, впрочем - без особого результата.&lt;br /&gt;&lt;br /&gt;Однако же, когда в начале этого года &lt;span class=&apos;ljuser&apos; lj:user=&apos;_darkus_&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://users.livejournal.com/_darkus_/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://users.livejournal.com/_darkus_/&apos;&gt;&lt;b&gt;_darkus_&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; обратился ко мне с предложением стать соавтором книги, благодатная почва была уже подготовлена и обильно удобрена, и я сразу же согласился. И вот уже в течении трех месяцев мы пишем книгу о синтаксическом анализе и построении DSL (domain-specific languages) при помощи Haskell, и &lt;b&gt;ищем экспертов-рецензентов для обсуждения черновых вариантов ее глав&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;В настоящее время для прочтения выложены &lt;a href=&quot;http://adept.homeunix.net/sa_in_haskell/sa_in_haskell__introduction__20080327.pdf&quot;&gt;введение&lt;/a&gt; и &lt;a href=&quot;http://adept.homeunix.net/sa_in_haskell/sa_in_haskell__chapter_1__20080416.pdf&quot;&gt;первая глава&lt;/a&gt; книги. Вторая, третья и четвертая главы будут в самом ближайшем времени доступны тем, кто плотно заинтересовался процессом и вступил в закрытое community &lt;span class=&apos;ljuser&apos; lj:user=&apos;sa_in_haskell&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://community.livejournal.com/sa_in_haskell/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/community.gif&apos; alt=&apos;[info]&apos; width=&apos;16&apos; height=&apos;16&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://community.livejournal.com/sa_in_haskell/&apos;&gt;&lt;b&gt;sa_in_haskell&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Вы уже заинтересовались? Дело за малым: для того чтобы попасть в сообщество, необходимо написать e-mail на адреса darkus.14 AT gmail.com и dastapov AT gmail.com, в котором в паре абзацев рассказать про себя и про свой опыт использования языка Haskell, ещё в паре абзацев рассказать о том, почему имеется интерес к книге и чем конкретно, как вам кажется, вы можете помочь или быть полезны. Речь не идет о том, что мы будем устраивать формальные интервью и делить желающих на &quot;годных&quot; и &quot;негодных&quot;. Речь, скорее, о том, чтобы убедиться, что потенциальный рецензент способен связно выражать свои мысли на письме и хоть что-то слышал про Haskell или связанные с ним вещи. Эта мера, равно как и закрытие community - наш (возможно, неоптимальный) способ улучшить соотношение &quot;сигнал-шум&quot; в общении с вами.&lt;br /&gt;&lt;br /&gt;Спасибо за внимание, ждем писем!</description>
  <comments>http://users.livejournal.com/_adept_/82626.html</comments>
  <category>haskell</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/82151.html</guid>
  <pubDate>Fri, 25 Apr 2008 21:17:16 GMT</pubDate>
  <title>Автостопом по ремонту: лирическое отступление о</title>
  <link>http://users.livejournal.com/_adept_/82151.html</link>
  <description>Мне кажется, необходимо сделать лирическое отступление и объяснить подробнее, почему же все-таки для нас оказалось так тяжело спланировать и спроектировать все самостоятельно.&lt;br /&gt;&lt;br /&gt;Казалось бы, что тут сложного? Подумать, какая вам нужна мебель и прочие причиндалы, посмотрите их в магазине с рулеткой, прикиньте, как они будут стоять. И всего делов. Делают же как-то другие люди ремонт - и ничего, справляются. Как написано в одном из комментариев к предыдущему посту: &quot;&lt;em&gt;интеллектуальности тут никакой, надо только проявить свой вкус в выборе материалов и мебели, тогда и получится то, что хочется вам. А перекладывать это на каких-то дядей довольно стрёмно - эти дяди вам еще такого напридумывают, а вам потом в этом жить.&lt;/em&gt;&quot;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Бородатый анекдот утверждает, что собрать искусственную елку из набора за 3 руб. 20 коп. проще простого -- надо вставить 25 мелких палочек в 25 дырочек в стволе, а затем 2500 искусственных иголочек аккуратно разместить в предназначенных для них отверстиях. На первый взгляд просто, как землю копать, но есть определенные мелкие проблемы. Проклятые 2500 иголочек так и норовят ускользнуть между пальцев или выпасть из тех дырочек, диаметр которых оказался шире нужного. Утыкав иголочками одну-две веточки, начинаешь задумываться о том, не проще ли купить искусственную елку в сборе, пусть и в разы дороже.&lt;br /&gt;&lt;br /&gt;Точно так же просто можно сделать атомную бомбу - главное следить за тем, чтобы урановая сфера в центре первой ступени была идеально круглой, иначе получится не бомба, а какой-то радиоактивный пшик. Впрочем, я ж обещал писать про ремонт.&lt;br /&gt;&lt;br /&gt;Попробую писать максимально конкретно, без рассуждений на общие темы. Допустим, вы живете в свой квартире уже 20 лет, и вам понадобилось сделать в ванной новый крючок для полотенца. Нужно ли тут что-то долго планировать и измерять? Вряд ли. Вы уже знаете ванну, как свои пять пальцев, и просто не повесите крючок в неудобном месте. Марш-марш в магазин, купили, прикрутили и забыли.&lt;br /&gt;&lt;br /&gt;Теперь предположим, что вы хотите сделать перестановку и поменять местами спальню и гостиную. Задача чуть сложнее, но количество вариантов размещения уже имеющейся у вас мебели все равно конечно. Ее можно измерить, нарисовать в масштабе на бумаге или в Visio, подвигать так и сяк и убедиться, что есть буквально три варианта расстановки, которые допускают, что кроме мебели в комнате еще будут находиться живые люди. На планирование может уйти от часу до нескольких вечеров. Сильные духом и телом, а также профессионалы игры в Sokoban могут пытаться решать задачу с наскока, и без подготовки сразу нести кровать туда, а письменный стол - сюда, но за редким исключением ничего хорошего из этого не получается.&lt;br /&gt;&lt;br /&gt;Усложняем дальше. Допустим, вы хотите сменить всю обстановку целиком, не трогая стены-потолки. Желание новизны - святое, но вряд ли же вы захотите делать кабинет на кухне или спать в коридоре. Вы уже знаете, какие функции можно возложить на какие комнаты, у вас есть опыт (положительный и отрицательный) реализации каких-то инженерных и дизайнерских решений в этой квартире, и от него вы и будете отталкиваться. Даже если в этот раз у вас не получится результат, устраивающий вас &quot;на все 100&quot;, то уж в следующий раз точно все будет в ажуре.&lt;br /&gt;&lt;br /&gt;А если вы после десятого по счету ремонта поймете, что из этой квартиры вам уж точно ничего не выжать, и смените ее на другую, вам все равно поможет накопленный вами опыт, и вы сделаете ремонт на новом месте с таким же азартом и так же быстро, как делали его раньше на старом.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Получается, чем больше у вас &quot;ремонтного опыта&quot;, тем проще вам делать очередной ремонт. В какой-то мере отсутствие ремонтного опыта компенсируется опытом каждодневной жизни и ведения быта в квартире, которую вы собираетесь ремонтировать&lt;/b&gt;. Но что, если вы -- как это было в нашем случае -- не имеете опыта ремонта, обустройство жилья не входит в число ваших хобби, и вы не жили в квартире, которую будете ремонтировать?&lt;br /&gt;&lt;br /&gt;Легко ли вам будет решить, где поставить кровать, а где - письменный стол? Сколько у вас будет шкафов и где вы их хотите разместить? Где вы хотите делать выключатели, и что они будут выключать?&lt;br /&gt;&lt;br /&gt;Можно ли получить ответы на эти вопросы, походив по магазинам с рулеткой? Это сильно зависит от вас. Большая часть мебели сделана под Единого Стандартного Человека Среднего Роста. Столы всегда высотой 75 см, кухни - 80 см, кровати длиной в 2 м, шкафы глубиной в 60 см. и если вас устраивают стандартные варианты - вам повезло. Если у вас прихожая в 15 кв. м., а все остальное в разы больше - вам повезло вдвойне. Можете ходить, выбирать, измерять и дома пытаться нарисовать расстановку всего на листике в клеточку. Если даже где-то ошибетесь - не беда, пять-десять сантиметров туда-сюда на стене в четыре метра роли не играют. &lt;br /&gt;&lt;br /&gt;А если вдруг вас не устроило то, что есть в магазинах, ближайшая &quot;Ikea&quot; в соседней стране, а на квадратных метрах не сильно и разгуляешься? Во мне - 190 см. роста, жена ниже меня буквально на 15 сантиметров, и мы не сторонники того, что функциональность не должна приноситься в жертву в угоду внешнему виду или стилю. Стандартные столы и кухни для нас низкие, половина стандартных кроватей для меня коротка, большинство готовой мебели, по нашему мнению, имеет слишком много финтифлюшек снаружи и слишком слабые и дешевые петли и прочую фурнитуру внутри.&lt;br /&gt;&lt;br /&gt;Соответственно, многие вещи мы собирались делать под заказ, возможно - даже после окончания ремонта. В результате, у нас было слишком много степеней свободы для самостоятельного планирования и проектирования, и сложно было остановиться на чем-то конкретном и/или собрать все необходимые размеры и исходные данные для проектирования. Исключения составляли, пожалуй, лишь несколько &quot;узких мест&quot; (вроде ванны размером 1.5 м x 1.7 м), в которых приходилось все просчитывать буквально до сантиметра и выбор обстановки был поневоле ограничен стандартными вещами. &lt;br /&gt;&lt;br /&gt;А ведь кроме достаточно легкого &quot;мебельного вопроса&quot; есть вещи менее очевидные (для человека неопытного). Захотев &quot;зеленые обои&quot;, нельзя (не имея опыта) узнать, что производители обоев понимают под словом &quot;зеленый&quot; не весеннюю травку, а что-то сродни Гримпинской трясине. Захотев кухню &quot;повыше&quot;, можно с удивлением обнаружить, что 99% модных фирм решают эту проблему не увеличением размера нижних шкафов (что кажется очевидным), а установкой 20-и сантиметрового цоколя под ними. Можно также обнаружить, что рынок заполнен тем, что &quot;в этом сезоне модно&quot;, а вас от этого попросту воротит, и где искать &quot;классику&quot; - непонятно. Даже в планировании розеток и выключателей хватает подводных камней -- например, знаете ли вы, как скрестить проходные выключатели и реостаты (&quot;диммеры&quot;)?&lt;br /&gt;&lt;br /&gt;Если же вам кажется, что и это ерунда, попробуйте без подготовки ответить на следующий вопрос. Допустим, вы хотите сделать в ванной навесной унитаз. Для этого надо установить специальный каркас, обшить его гипсокартоном, поверх которого положить плитку, сделать в плитке отверстия, через которые вывести подводы для воды и канализации. Вы уже знаете, что бывают мастера-плиточники, мастера-гипсокартонщики и мастера-сантехники. Кто из них будет участвовать в изготовлении этой конструкции и в какой очередности они будут работать? :)&lt;br /&gt;&lt;br /&gt;Подытоживая, обращение к дизайнеру не было попыткой &quot;свалить все на дядю&quot;. Мы, скорее, хотели обратиться к накопленному практическому опыту и услышать совет человека, который если даже и не съел на ремонте собаку, то, по крайней мере, умеет ее готовить. Это позволило бы нам существенно сэкономить время, которое иначе пришлось бы тратить на то, чтобы набраться знаний самостоятельно.&lt;br /&gt;&lt;br /&gt;Что у нас из этого вышло - в продолжении этих записок.</description>
  <comments>http://users.livejournal.com/_adept_/82151.html</comments>
  <category>ремонт</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/81765.html</guid>
  <pubDate>Tue, 15 Apr 2008 10:34:34 GMT</pubDate>
  <title>Автостопом по ремонту: поиски дизайнера (ч.1)</title>
  <link>http://users.livejournal.com/_adept_/81765.html</link>
  <description>Предыдущая серия: &lt;a href=&quot;http://users.livejournal.com/_adept_/81078.html&quot;&gt;http://users.livejournal.com/_adept_/81078.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Итак, мы стали искать дизайнера.&lt;br /&gt;&lt;br /&gt;Технология выбора поставщика услуг при наличии большого числа предложений у нас уже отработана: &lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;1)Составляется список вопросов, которые мы бы хотели задать специалисту до первой встречи с ним - чтобы получить первое впечатление&lt;br /&gt;2)Составляется список телефонов людей и фирм, предлагающих соответствующие услуги. Телефоны берутся из доступных в интернете газет бесплатных объявлений, из разнообразных каталогов сайтов, просто поиском по ключевым словам.&lt;br /&gt;3)Все найденные телефоны обзваниваются, всем задаются вопросы по списку (возможно не все - иногда на пол-дороге становится понятно, что дальше продолжать смысла не имеет), ответы конспективно записываются.&lt;br /&gt;4)По окончании обзвона составляется короткий список основных претендентов, из которых мы и выбираем тех, с кем имеет смысл общаться более предметно.&lt;br /&gt;&lt;br /&gt;Мы успешно применяли этот метод к решению очень разных задач - от поиска ресторана для проведения свадьбы до поиска бытовой техники в интернет-магазинах. За пару дней в промежутках между делами реально обзвонить &quot;весь Киев&quot; и получить исчерпывающую информацию об интересующем предмете.&lt;br /&gt;&lt;br /&gt;В этот раз наши вопросы выглядели так:&lt;br /&gt;1)Возьметесь ли вы за дизайн квартиры в 70 кв. м.?&lt;br /&gt;2)Что именно мы получим в качестве вещественных результатов?&lt;br /&gt;3)Как строится работа с вами? Что (какие исходные данные) вам надо будет получить от нас?&lt;br /&gt;4)Сколько стоят ваши услуги?&lt;br /&gt;5)Как у вас сейчас с загрузкой? Когда бы вы могли приступить к работе?&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2416133712/&quot; title=&quot;03_02&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm3.static.flickr.com/2243/2416133712_7ca41d0438_m.jpg&quot; width=&quot;240&quot; height=&quot;168&quot; /&gt;&lt;/a&gt;Поскольку никто из знакомых не смог порекомендовать нам дизайнера, телефоны брались &quot;из интернета&quot;. Причем - только с сайтов самих дизайнеров, и ниоткуда больше. Причина проста: сайт сразу позволял оценить наличие у дизайнера таких полезных в его профессии качеств, как чувство стиля и умение пользоваться простейшими приборами и механизмами (фотоаппаратом). Большая половина дизайнеров сходу выбывала на этом этапе. Мы повидали всякое: красные мигающие надписи на синем фоне; заголовки полужирным Times-ом размеров в 82 пункта; навороченный сайт на флеше с неотключаемой музыкой и обширным портфолио, отснятым с помощью  1-мегапиксельной мобилки в разрешении 640x480. Скриншоты подобных сайтов &quot;украшают&quot; этот пост.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2415312781/&quot; title=&quot;03_03&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm3.static.flickr.com/2093/2415312781_e2d1606e2c_m.jpg&quot; width=&quot;240&quot; height=&quot;108&quot; /&gt;&lt;/a&gt;Убедившись, что дело Васи Пупкина живет и процветает и вдоволь нашутившись по этому поводу, мы обзвонили всех претендентов с нормальными сайтами. Часть отпала после первого же вопроса, причем в голосе собеседника явственно слышался подтекст: &quot;Вы что, шутите? Вот купите дом за городом метров на 400 - тогда и звоните&quot;. Несколько претендентов запросили от $50 за кв. м. и тоже выпали из списка.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2415312489/&quot; title=&quot;03_01&quot;&gt;&lt;img align=&quot;left&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3038/2415312489_b357f429c7_m.jpg&quot; width=&quot;240&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;Все (обе) оставшиеся фирмы мы пригласили приехать к нам. Они согласились, правда, в одной нам заявили: &quot;ознакомительный визит стоит 50 грн ($10)&quot;. Ну, стоит - и ладно, все равно приезжайте.&lt;br /&gt;&lt;br /&gt;Дизайнеры Игорь и Ольга, знающие цену ознакомительным визитам, приехали к нам первыми. Едва переступив порог квартиры, они сказали:&lt;br /&gt;- Ага, 96-я серия... Знаем-знаем, делали-делали. Ок, нам уже в общих чертах понятно, что тут надо делать&lt;br /&gt;- Да? Класс! И что же?&lt;br /&gt;- Давайте мы сначала подпишем с вами договор, а уже потом начнем вам рассказывать наши эксклюзивные идеи, ок? А то мы знаем эти темы - ходишь вот так, ходишь. Рассказываешь, показываешь, раскрываешь все секреты. Тебе говорят: &quot;спасибо, вы нам не подходите&quot;, а потом все твои идеи претворяют в жизнь, а тебе - ни копейки.&lt;br /&gt;(немая сцена)&lt;br /&gt;- Нуууу, - говорим мы, - хоть расскажите в деталях, как строится с вами работа.&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2415312907/&quot; title=&quot;03_04&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3145/2415312907_85850ce081_m.jpg&quot; width=&quot;240&quot; height=&quot;145&quot; /&gt;&lt;/a&gt;- Ну, мы ж уже в общих чертах говорили. Работа с нами строится так: мы смотрим на квартиру, все замеряем, через неделю приходим с красивыми 3D-картинками и планами расстановки мебели. Обсуждаем детали, записываем замечания, готовим окончательный вариант. Потом делаем чертежи, по желанию - осуществляем авторский надзор за строительством. Каждый этап стоит согласно прайс-листа, вот он. На все-про всё уйдет от двух недель до месяца.&lt;br /&gt;- Ок, а какие сведения вам нужны от нас?&lt;br /&gt;- От вас? Ничего не нужно. А зачем? И так все понятно. &lt;br /&gt;(немая сцена номер два)&lt;br /&gt;&lt;br /&gt;Пока мы приходили в себя, мастера дизайна заскучали и, не спросив нашего разрешения, закурили в квартире. Пришлось настойчиво сказать им &quot;спасибо&quot; и выпроводить за дверь. Когда шаги на лестнице утихли и сигаретный дым рассеялся, мы согласились, что 50 грн. потрачено не зря, и мы много вынесли из этого визита.&lt;br /&gt;&lt;br /&gt;(продолжение следует)</description>
  <comments>http://users.livejournal.com/_adept_/81765.html</comments>
  <category>ремонт</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/81466.html</guid>
  <pubDate>Fri, 11 Apr 2008 20:05:49 GMT</pubDate>
  <title>Извлечение данных о фильме с imdb.com и их содержательная интерпретация (ч. 2)</title>
  <link>http://users.livejournal.com/_adept_/81466.html</link>
  <description>Некоторое время тому назад я писал (&lt;a href=&quot;http://users.livejournal.com/_adept_/79951.html&quot;&gt;http://users.livejournal.com/_adept_/79951.html&lt;/a&gt;) о скрипте, с помощью которого я извлекаю данные о фильмах с сайта imdb.com. После нескольких недель эксплуатации скрипт оброс дополнительными возможностями, главная из которых - &quot;декодирование&quot; оценки фильма с помощью &lt;a href=&quot;http://community.moertel.com/ss/space/IMDB+Movie-Rating+Decoder+Ring&quot;&gt;IMDB Movie Decoder Ring&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Что это за &quot;декодирование&quot; и зачем оно нужно? А для того, чтобы ответить на вопрос: &quot;фильм с оценкой 6.1 - это фильм плохой, хороший или так себе?&quot;. Если бы оценки посетителей были бы распределены равномерно в интервале от 1 до 10, то можно было бы утверждать, что фильм с оценкой 6.1 - скорее хороший, чем средний. Однако фильмов с оценкой 1 и 2 на imdb.com почти нет, а фильмов с оценкой в интервале [5;7] - очень много. Как же можно содержательно интерпретировать оценку?&lt;br /&gt;&lt;br /&gt;Например, так: можно заменить оценку X на процентное отношение фильмов, имеющих оценку &amp;lt;=X, к общему количеству фильмов. Если более 50% фильмов в базе imdb.com имеют оценку &amp;lt;=X, то можно считать, что фильм - скорее хороший. Более того, подобные процентные отношения можно рассчитать отдельно для всех жанров, к которым относится фильм, и тогда можно будет ответить на вопрос, как выбранная нами мелодрама (жанры Comedy, Drama) соотносится с другими комедиями и драмами.&lt;br /&gt;&lt;br /&gt;Чтобы не выполнять каждый раз обработку всей базы imdb, Tom Moertel свел подобные расчеты в удобную компактную таблицу, которую он назвал &lt;a href=&quot;http://community.moertel.com/ss/space/IMDB+Movie-Rating+Decoder+Ring&quot;&gt;IMDB Movie Decoder Ring&lt;/a&gt;. Табличка эта предназначена для использования вручную, но я, как человек ленивый,  тоже не захотел связываться с обработкой сырых данных с imdb.com, и запихнул эту табличку в свой скрипт. Теперь в таблице результатов добавились две колонки: процент всех фильмов, оцененных ниже, чем этот, и (в отдельной колонке) подобные проценты по всем жанрам фильма, через запятую.&lt;br /&gt;&lt;br /&gt;В результате можно выяснить, что, например, фильм &lt;a href=&quot;http://www.imdb.com/title/tt0772157&quot;&gt;&quot;Broken English (2007)&quot;&lt;/a&gt;, имеющий оценку 6.3 -- едва-едва попадает в категорию &quot;скорее хорошие&quot;. Он &quot;лучше&quot; всего 51% фильмов в базе imdb. Кроме того, если посмотреть на его положение в каждом из жанров -- Comedy, Drama, Romance -- то окажется, что он лучше 55% комедий, но - всего лишь 42% драм и 46% романтических фильмов. Получается, что для комедии оценка 6.3 - это &quot;хорошо&quot;, а для драмы - всего лишь &quot;удовлетворительно.&lt;br /&gt;&lt;br /&gt;Полный текст скрипта - под катом.&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вот скрипт:&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;small&gt;
#!/bin/bash
# Decoder ring taken from http://community.moertel.com/ss/space/IMDB+Movie-Rating+Decoder+Ring
request=&quot;$@&quot;
file=&quot;imdb_dump.html&quot;
decoder=&quot;decoder-ring&quot;

wget -q -U Firefox &quot;http://www.google.com/search?q=$request site:imdb.com&amp;amp;btnI=I\`m Feeling Lucky&quot; -O &quot;$file&quot;

title=$(grep &quot;&amp;lt;title&amp;gt;&quot; &quot;$file&quot; | sed -e &apos;s/&amp;lt;[^ ]*&amp;gt;//g&apos;)
rating=$(grep -A1 &quot;&amp;lt;b&amp;gt;User Rating:&amp;lt;/b&amp;gt;&quot; &quot;$file&quot; | grep -o &apos;[0-9][0-9./]*&apos; | sed -e &apos;s/\/.*//&apos;)
votes=$(grep -o &apos;[0-9,]* votes&apos; &quot;$file&quot;)
genre=$(grep -A1 &quot;&amp;lt;h5&amp;gt;Genre:&amp;lt;/h5&amp;gt;&quot; &quot;$file&quot; | grep -o &quot;&amp;gt;[A-Z][a-zA-Z]*&amp;lt;&quot; | sed -e &apos;s/[&amp;lt;&amp;gt;]//g&apos; \
        | paste - - - - - - - - - | sed -e &apos;s/[ \t]*$//&apos; -e &apos;s/\t/,/g&apos;)
url=http://www.imdb.com/$(grep -o &apos;title/tt[0-9]*&apos; &quot;$file&quot; | head -1)
runtime=$(grep -A1 Runtime &quot;$file&quot; | tail -1)

column=1
r=$(echo $rating | sed -e &apos;s/\.//&apos; -e &apos;s/$/0/&apos; )
if [ -n &quot;$r&quot; ] ; then
    for treshold in 400 500 525 550 575 600 625 650 675 700 725 750 775 800 825 850 875 900 1000 ; do
        if [ &quot;$r&quot; -le &quot;$treshold&quot; ] ; then break
        else column=$(( $column + 1 ))
        fi
    done

    all_genres_rating=$(head -1 $decoder | cut -f $column)
    rating_regexp=$(echo $genre | sed -e &apos;s/,/\|/g&apos;)
    per_genre_rating=`grep -E &quot;($rating_regexp)&quot; $decoder | cut -f $column \
                      | paste - - - - - - - - - | sed -e &apos;s/[ \t]*$//&apos; -e &apos;s/\t/,/g&apos;`
fi

echo &quot;$request|$title|$url|$genre|$runtime|$rating|$votes|$all_genres_rating|$per_genre_rating&quot; | tee -a movies.csv
&lt;/small&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Рядом надо положить файл &lt;tt&gt;decoder-ring&lt;/tt&gt; следующего содержания (поля разделены табуляциями):&lt;br /&gt;&lt;pre&gt;&lt;small&gt;&lt;tt&gt;
All genres      10      23      27      33      39      46      51      60      66      74      79      86      89      93    95       97      98      99
Action  22      40      44      51      56      61      66      73      77      82      85      89      91      93      95    96       97      98
Adult   1       9       18      49      73      92      96      98      98      99      99      99      ++      ++      ++    ++       ++      ++
Adventure       14      30      33      41      46      52      56      65      69      75      78      83      86      91    93       95      96      97
Animation       4       15      18      24      28      33      35      44      48      57      62      69      76      84    89       94      96      98
Biography       3       5       7       12      15      23      29      40      50      62      70      83      87      94    97       99      ++      ++
Comedy  9       23      27      35      40      48      55      64      71      78      84      90      93      95      97    98       99      99
Crime   7       20      24      31      37      45      52      63      69      76      81      89      92      95      97    98       99      99
Documentary     5       11      13      16      19      22      25      32      37      46      53      66      73      83    88       93      96      98
Drama   4       13      16      22      27      35      42      53      60      71      78      87      91      96      97    99       99      ++
Family  14      34      39      48      55      62      66      76      80      86      88      92      94      97      98    99       99      99
Fantasy 13      26      30      38      45      52      56      65      69      76      79      84      87      91      93    95       96      97
Game Show       29      29      29      29      29      43      43      43      43      43      43      43      57      71    71       71      71      71
History 2       4       4       8       10      14      18      26      33      45      51      64      74      84      89    94       96      98
Horror  35      56      61      68      72      78      81      86      89      92      93      96      96      97      98    98       98      99
Music   7       14      16      20      24      30      34      40      47      53      60      68      74      82      87    91       95      97
Musical 8       18      19      27      31      37      44      52      60      71      77      85      90      95      97    98       99      ++
Mystery 7       21      26      33      38      46      51      62      69      78      81      86      89      93      95    96       98      98
News    0       0       0       0       20      40      40      40      40      40      40      60      60      60      60    60       60      60
Reality TV      28      40      40      52      56      60      64      64      68      68      72      72      80      84    88       92      92      96
Romance 4       14      17      24      30      39      46      59      66      76      82      89      93      97      98    99       99      ++
Sci-Fi  26      43      47      52      57      62      65      71      74      79      81      86      89      93      94    96       97      98
Short   4       8       9       12      15      19      23      30      37      49      57      72      77      87      93    97       98      99
Sport   8       20      24      30      35      45      52      64      68      76      81      88      91      95      97    98       99      ++
Talk Show       25      25      25      25      25      25      25      25      25      25      25      50      50      50    50       75      75      75
Thriller        15      35      40      48      54      62      67      75      80      86      88      93      95      97    98       98      99      99
War     5       9       11      15      18      23      28      34      43      50      59      71      77      86      92    95       97      99
Western 14      23      26      34      42      47      52      68      76      81      83      90      95      96      97    98       99      99
&lt;/tt&gt;&lt;/small&gt;&lt;/pre&gt;</description>
  <comments>http://users.livejournal.com/_adept_/81466.html</comments>
  <category>linux</category>
  <category>imdb</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/81248.html</guid>
  <pubDate>Tue, 08 Apr 2008 22:33:59 GMT</pubDate>
  <title>Телефонные разводы с подменой номера звонящего.</title>
  <link>http://users.livejournal.com/_adept_/81248.html</link>
  <description>&lt;span class=&apos;ljuser&apos; lj:user=&apos;dil&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://dil.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://dil.livejournal.com/&apos;&gt;&lt;b&gt;dil&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; спрашивает: &quot;&lt;em&gt;&lt;a href=&quot;http://phd-paul-lector.livejournal.com/178670.html&quot;&gt;http://phd-paul-lector.livejournal.com/178670.html&lt;/a&gt; - можешь прокомментировать? каким образом можно подделать номер звонящего телефона?&lt;/em&gt;&quot;&lt;br /&gt;&lt;br /&gt;По ссылке (вдруг она протухнет) рассказывается о достаточно старом &quot;разводе&quot;, который в полном объеме выглядит так: &lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;.&lt;br /&gt;Родственнику жертвы (в дальнейшем - Р) звонит мошенник (М) и говорит примерно следующее:&lt;br /&gt;&lt;b&gt;М&lt;/b&gt;: Я сотрудник вашего мобильного оператора/ФСБ/частотнадзора/... Я вас прошу/требую выключить ваш телефон на ближайшие 15 минут для проведения профилактики/т.к. он мешает пролетающим самолетам/.... Буквально на 15 минут, а потом включайте обратно. Спасибо за содействие!&lt;br /&gt;&lt;b&gt;Р&lt;/b&gt;: (офигевает от того, до чего дошел прогресс, выключает телефон).&lt;br /&gt;&lt;br /&gt;После этого М звонит жертве (Ж), которая состоит с Р в близких (предпочтительно - родственных) отношениях и говорит вот что:&lt;br /&gt;&lt;b&gt;М&lt;/b&gt;: Я полковник ФСБ/милиции/... такой-то. Ваш сын/муж/... Р только что совершил такое-то преступление (сбил человека на своей машине). Его уже повезли оформлять. Это - статья, тюрьма, расстрел. Чтобы он не сел, надо дать $20K &lt;b&gt;прямо сейчас&lt;/b&gt;. За деньгами подъедут. Это последний шанс. Вы согласны?&lt;br /&gt;&lt;b&gt;Ж&lt;/b&gt;: (в состоянии прострации соглашается на все и начинает потрошить заначки).&lt;br /&gt;&lt;br /&gt;Ж может даже пытаться звонить Р, но телефон у того - отключен. Как вариант, мошенников может быть двое, один будет изображать сотрудника милиции, второй - самого Р, который в состоянии аффекта рассказывает, как он убил человека, и просит помочь.&lt;br /&gt;&lt;br /&gt;Чтобы добавить истории реализма, мошенники звонят на мобильный телефон Ж, при этом на экране высвечивается реальный номер Р.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Вопрос&lt;/b&gt;: как можно добиться подстановки чужого номера при исходящем звонке?&lt;br /&gt;&lt;br /&gt;Я вижу минимум два варианта получить нужный эффект, не имея доступа к оборудованию оператора, обслуживающего Ж.&lt;br /&gt;&lt;br /&gt;Это, во-первых,  создание клона SIM-карты Р, и совершение звонков с клонированной карты. В случае, если Р убедили выключить телефон, мошенники даже смогут принимать звонки от имени Р, что добавит правдоподобности &quot;разводу&quot;. Плюс, все звонки оплатит Р. Красота, да и только. Чтобы провернуть подобный фокус, мошенникам необходимо либо получить IMSI и Ki SIM-карты Р от &quot;своего человека&quot; в компании-операторе, обслуживающей Р, либо получить на какое-то время физический доступ к самой SIM-карте и не запороть ее в процессе подбора значения Ki (о процессе клонирования смотри мой другой пост: &lt;a href=&quot;http://pro-gsm.info/gsm-auth.html&quot;&gt;http://pro-gsm.info/gsm-auth.html&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Во-вторых, мошенники могут совершать звонок Ж через VoIP-провайдера, который смотрит сквозь пальцы на игры абонентов с номером А (номером звонящего) или же не запрещает подобные модификации по незнанию.&lt;br /&gt;&lt;br /&gt;Расширьте-ка мой кругозор, какие еще вам видятся варианты?&lt;br /&gt;&lt;br /&gt;PS&lt;br /&gt;&lt;small&gt;Я закопался в работу и интересные проекты, поэтому комментарии буду разгребать &quot;набегами&quot;, уж не обессудьте&lt;/small&gt;</description>
  <comments>http://users.livejournal.com/_adept_/81248.html</comments>
  <category>gsm</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/81078.html</guid>
  <pubDate>Mon, 07 Apr 2008 13:51:16 GMT</pubDate>
  <title>Автостопом по ремонту: как люди доходят до того, что обращаются к дизайнеру</title>
  <link>http://users.livejournal.com/_adept_/81078.html</link>
  <description>&lt;a href=&quot;http://flickr.com/photos/_adept_/2393830904/&quot; title=&quot;01_prihozhaya&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3148/2393830904_ee669db746_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;Итак, в один прекрасный день мы стали обладателями 70 &quot;квадратов&quot; собственного жилья, на которых проектировщики уместили прихожую,  коридор, кухню, три комнаты, раздельный санузел и два балкона. Если кто в курсе - стандартная трехкомнатная квартира так называемой &quot;96-ой серии&quot;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393832190/&quot; title=&quot;02_kitchen_01&quot;&gt;&lt;img align=&quot;left&quot; hspace=&quot;10pt&quot; src=&quot;http://farm3.static.flickr.com/2181/2393832190_08172c570b_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;Рынок сейчас полон предложений вида &quot;покупай и въезжай&quot;, но наша квартира была почти полной противоположностью. В ней лет 15 не делался капитальный ремонт, ее много и со вкусом сдавали, в ней выкурили столько дешевых сигарет, что среднестатистическая лошадь тут же откинула бы копыта, приди ей в голову идея лизнуть обои (фото иллюстрируют этот пост, а если вам не лень - можете посмотреть 7-и минутное &lt;a href=&quot;http://www.youtube.com/watch?v=bkRDZSjfh1o&quot;&gt;видео на youtube&lt;/a&gt;). Короче, вы поняли.&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393002607/&quot; title=&quot;02_kitchen_02&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3017/2393002607_3c0e157c14_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;Хочешь - не хочешь, а надо было делать капитальный ремонт. Ну, а раз ремонт капитальный, то делать надо так, чтобы не было мучительно больно за бесцельно потраченные деньги или не пришлось все переделывать сразу по окончании ремонта.&lt;br /&gt;&lt;br /&gt;И мы сели думать, читать, и ходить по знакомым.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393003465/&quot; title=&quot;02_kitchen_03&quot;&gt;&lt;img align=&quot;left&quot; hspace=&quot;10pt&quot; src=&quot;http://farm3.static.flickr.com/2369/2393003465_e6aa9d45a9_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;Очень быстро мы обнаружили, что 90% процентов опрошенных делали ремонт по схеме: &quot;Вася посоветовал плиточника, Петя - сантехника, баба Люба - маляра; я им растолковал, что к чему, мотнулся, купил материалов &lt;b&gt;правильных&lt;/b&gt;, они все сделали&quot;. Более того - все в один голос уверяли, что именно это и есть самый правильный подход к ремонту, так как ты сам всем рулишь и сам все контролируешь. А обращаться к прорабам со своими бригадами или в крупные строительные компании - это, мол, сплошной перерасход денег, не дающий существенной прибавки в качестве.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393834686/&quot; title=&quot;03_coridor&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm3.static.flickr.com/2176/2393834686_225e846c20_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;Ну, хорошо. В конце-концов, кто мы такие, чтобы переть против народной мудрости? Правда, придется всем специалистам рассказывать, что именно им нужно делать. Мы уже знали, что капитальный ремонт начинается с коммуникаций, поэтому вскоре после начала активных действий нам придется общаться с сантехником и электриком.&lt;br /&gt;&lt;br /&gt;А надо вам сказать, что у нас перед глазами было несколько живых примеров, когда люди загодя не думали, что они хотят от сантехники или электрики, и получали розетки прямо над газовой плитой или стиральную машину на проходе, &quot;потому, что подвод сделали сюда, а переделывать поздно&quot;.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393006805/&quot; title=&quot;05_balkon_01&quot;&gt;&lt;img align=&quot;left&quot; hpsace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3150/2393006805_9700a473c3_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt; Мы в такие засады попадать не хотели, и сели загодя планировать коммуникации. И тут же уперлись в то, что надо понимать, где какая будет стоять мебель. Причем не какая-то конкретная мебель, которая у нас уже есть, а какая-то мебель, которую мы купим в будущем. Соответственно, надо понимать, где мы будем спать, где - есть, где - работать, а где будет детская. А потом надо будет еще определяться с цветом обоев/красок/напольного покрытия. Причем это &quot;потом&quot; может наступить достаточно быстро, а мы будем не готовы.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393838606/&quot; title=&quot;05_balkon_02&quot;&gt;&lt;img align=&quot;right&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3102/2393838606_db45ddafba_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;И тут мы загрустили. И вот почему: хотя мы и перелопачивали каждый день горы информации о ремонте, наше самообразование продвигалось очень медленно. Причем, мы в основном приобретали знания о том, &lt;b&gt;как&lt;/b&gt; что-то делать, а не о том, &lt;b&gt;что&lt;/b&gt; делать и, самое главное, &lt;b&gt;почему&lt;/b&gt;. А уж в области выбора цветов и оттенков мы и вовсе были полные профаны.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393008955/&quot; title=&quot;05_balkon_03&quot;&gt;&lt;img align=&quot;left&quot; hspace=&quot;10pt&quot; src=&quot;http://farm4.static.flickr.com/3067/2393008955_1d837d3992_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;И тут кто-то из нас сказал: &quot;а не обратиться ли нам к дизайнеру?&quot;. И в самом деле - мы регулярно посмеивались над заказчиками, которые пытались самостоятельно &quot;рулить&quot; в области нашей компетенции (управление проектами), а тут сами наступаем на те же грабли.&lt;br /&gt;&lt;br /&gt;Решено - надо отдаться профессионалам! Но как?&lt;br /&gt;(продолжение следует)&lt;br /&gt;&lt;hr&gt;&lt;br /&gt;Фото, которые не влезли в текст поста.&lt;br /&gt;В половине рам отсутствуют стекла; под обоями на стенах - наскальная живопись, оставленная еще строителями; в стене между детской и ванной - сквозная дыра:&lt;br /&gt;&lt;a href=&quot;http://flickr.com/photos/_adept_/2393004985/&quot; title=&quot;04_zal_02&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2149/2393004985_f5cae19776_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://flickr.com/photos/_adept_/2393836404/&quot; title=&quot;04_zal_03&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2090/2393836404_2350446dba_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://flickr.com/photos/_adept_/2393009629/&quot; title=&quot;06_detskaya_01&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2404/2393009629_67386ed5b9_m.jpg&quot; width=&quot;240&quot; height=&quot;135&quot; /&gt;&lt;/a&gt;</description>
  <comments>http://users.livejournal.com/_adept_/81078.html</comments>
  <category>ремонт</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/80746.html</guid>
  <pubDate>Mon, 31 Mar 2008 20:51:04 GMT</pubDate>
  <title>Автостопом по ремонту: краткий путеводитель</title>
  <link>http://users.livejournal.com/_adept_/80746.html</link>
  <description>Народная мудрость гласит, что ремонт равен двум переездам, а один переезд - двум пожарам. Знающий азы математики читатель сразу отметит, что один ремонт, таким образом, равен четырем пожарам. &lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Зададимся на минуту вопросом, почему процесс созидания сравнивается и ставится на одну планку с процессом разрушения? Я искренне надеюсь, что ваш жизненный опыт не включает в себя пережитый пожар, и вы лишь абстрактно представляете себе, что пожар - это что-то ужасное и оставляющее в человеке след на всю жизнь. Может быть, народная мудрость говорит о том, что ремонт оставляет сразу четыре таких следа? :)&lt;br /&gt;&lt;br /&gt;Нет, мне кажется, что все не так печально и не так прозаично. Я понимаю эту пословицу так: чтобы предотвратить неприятные последствия ремонта или устранить их (раз уж не удалось предотвратить) требуется в четыре раза больше времени и сил, чем для предотвращения пожара или борьбы с его последствиями.&lt;br /&gt;&lt;br /&gt;Любой взрослый здравомыслящий человек, сам того не замечая, регулярно и постоянно занят тем, чтобы не допустить пожара - не играет со спичками и не дает играть ими детям, не работает с горючими жидкостями в не проветриваемых помещениях, не готовит на открытом огне в квартире, не оставляет открытым газ, выключает утюг и так далее, и тому подобное. Все это происходит между делом, и не требует особого напряжения моральных или физических сил. А все потому, что нас учили этому с детства, это привычки, закрепленные многолетним опытом и постоянными примерами со стороны окружающих.&lt;br /&gt;&lt;br /&gt;А вот к ремонту таким образом нас никто не готовит. И получается потом, что ремонты приводят к нервным срывам, разводам, длятся полтора года, или дают такой результат, что хозяин понимает - он или взорвет эту квартиру, или продаст, но жить в ней не будет ни за что и никогда.&lt;br /&gt;&lt;br /&gt;До того, как мы (я и моя жена Юля) начали ремонт, я считал, что я - человек более-менее подготовленный. Ведь я знаю, с какой стороны держать молоток, как починить (на бытовом уровне) электрику-сантехнику, видел &quot;с близкого расстояния&quot; строительство дома и ремонт квартиры (хоть и не принимал в них очень активного участия). Да и вообще - сколько там того ремонта.&lt;br /&gt;&lt;br /&gt;Однако, жизнь внесла свои коррективы. Времени на ремонт ушло почти в два раза больше, чем планировалось и хотелось бы, нервов тоже было потрачено порядочно, про деньги даже и не стоит вспоминать.&lt;br /&gt;&lt;br /&gt;Однако, мы достойно вышли из этого испытания: не поседели, не развелись, не слегли с нервным срывом, почти не тратили деньги зря, и остались очень довольны полученным результатом. Причем я уверен - если бы кто-то до начала всего мероприятия мог толково разложить нам весь процесс по полочкам, мы бы справились быстрее и лучше.&lt;br /&gt;&lt;br /&gt;Опыт ведения дневника о том, &lt;a href=&quot;http://yulanta.livejournal.com&quot;&gt;как растет наш ребенок&lt;/a&gt; показал, что уже через пол-года мы не можем достоверно вспомнить, что именно мы делали в первые месяцы после рождения малыша. Один раз мы попробовали пересказать свой опыт по памяти друзьям, у которых только-только родилась дочка, после чего (сверившись с записями) мы обнаружили, что больше половины рассказанного мы переврали. Получается, что для повторного использования своего опыта нужно его записывать.&lt;br /&gt;&lt;br /&gt;Вот я и решил записать наш опыт &quot;прохождения&quot; ремонта в надежде, что оно пригодится нам на следующей итерации, ну и как водится - поделиться пережитым с вами.&lt;br /&gt;&lt;br /&gt;Посты на эту тему будут идти под тэгом &quot;ремонт&quot;. Подписывайтесь или наоборот - отфильтровывайте, как вашей душе угодно.</description>
  <comments>http://users.livejournal.com/_adept_/80746.html</comments>
  <category>ремонт</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/80294.html</guid>
  <pubDate>Tue, 18 Mar 2008 23:21:46 GMT</pubDate>
  <title>Сказка про репку как набор (ката-,ана-)морфизмов над списками</title>
  <link>http://users.livejournal.com/_adept_/80294.html</link>
  <description>&lt;i&gt;Этот пост был написан &quot;в стол&quot; и долгое время там лежал. В процессе переезда обычно наводишь порядок, в том числе - и в столе. Ненужное выкидываешь, нужно - приспосабливаешь для какой-то пользы. Раз уж пост был написал - надо его публиковать :)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;О чем повествует сказка про репку, вы все наверняка в курсе.&lt;br /&gt;&lt;br /&gt;Если кто забыл - напомню:&lt;pre&gt;

&amp;gt; module Main where

&amp;gt; import Prelude hiding (putStrLn, print)
&amp;gt; import System.IO.UTF8
&amp;gt; import Data.List (intersperse, find)

&lt;/pre&gt;Вы скажете - в сказке такого не было? Погодите - скоро сказка сказывается, не скоро дело делается. Так вот, жили-были любители репы:&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;pre&gt;

&amp;gt; едоки :: Едоки
&amp;gt; едоки = [ &quot;дедка&quot;, &quot;бабка&quot;, &quot;внучка&quot;, &quot;жучка&quot;, &quot;кошка&quot;, &quot;мышка&quot; ]

&amp;gt; type ЛюбительРепы = String
&amp;gt; type Едоки = [ЛюбительРепы]

&lt;/pre&gt;Потом, как известно, дед посадил репку. Вскоре прошел радиоактивный дождик, после которого репка выросла большая-пребольшая, а курочка - снесла яичко, не простое, а золотое. Конец, как известно, печальный - мышка бежала, хвостиком махнула, и &lt;a href=&quot;http://community.livejournal.com/vault13/1193187.html#cutid1&quot;&gt;прогремел невероятной силы взрыв&lt;/a&gt; ... Впрочем, это уже совсем другая сказочка.&lt;br /&gt;&lt;br /&gt;Вернемся к репке: &lt;pre&gt;

&amp;gt; main = do
&amp;gt;   putStrLn &quot;Посадил дед репку. Выросла репка большая-пребольшая. Пришло время ее тянуть ...&quot;
&amp;gt;   тянуть

&lt;/pre&gt;Как известно, дед самостоятельно не справился с задачей и стал звать подмогу. Сначала бабку, потом внучку ... - и с каждым подходом их становилось все больше и больше:&lt;pre&gt;

&amp;gt; подходы :: [ Едоки ]
&amp;gt; подходы = scanl зазвать [] едоки
&amp;gt;   where зазвать толпа подмога = подмога:толпа

&lt;/pre&gt;Выстроившись по старшинству, по команде &quot;Взялись!&quot; они брались за впереди стоящего:&lt;pre&gt;

&amp;gt; взялись :: Едоки -&amp;gt; [ (ЛюбительРепы, ЛюбительРепы) ]
&amp;gt; взялись едоки = zip едоки&apos; (&quot;репка&quot;:едоки&apos;)
&amp;gt;   where едоки&apos; = reverse едоки -- а не то дед будет тянуть самым последним

&lt;/pre&gt;, и получалась такая вот диспозиция: дедка - за репку, бабка - за дедку ... Тянут-потянут! ... Ну, всем известно, что до прихода мышки репка не вытягивается. Попробуем это описать:&lt;pre&gt;

&amp;gt; описать ситуация 
&amp;gt;   | null ситуация = &quot;&quot;
&amp;gt;   | otherwise     = unwords [ &quot;Взялись:&quot;
&amp;gt;                             , concat $ intersperse &quot;, &quot; $ map за ситуация
&amp;gt;                             , &quot;. Тянут-потянут -- &quot; ++ что_же_получилось
&amp;gt;                             ]
&amp;gt;   where 
&amp;gt;     за (кто,кого) = кто ++ &quot; за &quot; ++ винительный_падеж кого
&amp;gt;     винительный_падеж ы = init ы ++ &quot;у&quot;
&amp;gt;     что_же_получилось = if elem &quot;мышка&quot; (map fst ситуация)
&amp;gt;                            then &quot;вытянули репку!&quot;
&amp;gt;                            else &quot;вытянуть не могут!&quot;

&lt;/pre&gt;Сказка про репку, являющаяся типичным образцом формульной сказки (или сказки с кумулятивной экспозицией), заключается в том, что рассказчик последовательно описывает все диспозиции (хотя правильнее говорить - &quot;экспозиции&quot;) вплоть до последней, ставящей точку в нагромождении сюжета:&lt;pre&gt;

&amp;gt; тянуть = mapM_ putStrLn $ map (описать.взялись) подходы

&lt;/pre&gt;Вы прослушали русскую народную сказку про репку в чиста функциональном исполнении. Благодарю за внимание :)&lt;br /&gt;&lt;br /&gt;PS&lt;br /&gt;Признавайтесь, кто еще вспомнил попытки &quot;адаптировать&quot; Паскаль для наших школ и приснопамятный &quot;язык РАЯ&quot; (русский алгоритмический язык)?&lt;br /&gt;&lt;br /&gt;PPS&lt;br /&gt;Данный пост является программой на literate haskell, которую вы можете невозбранно запустить, полчив такой вот текст:&lt;br /&gt;&lt;tt&gt;&lt;small&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;/small&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;В коде на Haskell допускается использовать литералы в utf-8, чем я и воспользовался. Для компиляции и запуска кода может понадобится сторонняя библиотека utf8-string (&lt;tt&gt;apt-get install libghc6-utf8-string-dev&lt;/tt&gt; или взять &lt;a href=&quot;http://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-string-0.3&quot;&gt; на hackage.haskell.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PPPS&lt;br /&gt;С точки зрения теории категорий, map - морфизм, zip - катаморфизм, а scanl - анаморфизм списков. Отсюда и заголовок.&lt;br /&gt;&lt;br /&gt;Даже и не буду спрашивать, есть ли у вас вопросы ;)</description>
  <comments>http://users.livejournal.com/_adept_/80294.html</comments>
  <category>haskell</category>
  <category>хохмочки</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/79951.html</guid>
  <pubDate>Mon, 17 Mar 2008 16:21:45 GMT</pubDate>
  <title>Поиск по русским именам фильмов на imdb.com и автоматическое извлечение данных о фильме оттуда же</title>
  <link>http://users.livejournal.com/_adept_/79951.html</link>
  <description>Сегодня я с некоторым офигением обнаружил, что можно вбить в Google поисковый запрос &quot;Кто вы, мистер Брукс? site:imdb.com&quot; и получить первым результатом ссылку на страницу этого фильма на imdb.com.&lt;br /&gt;&lt;br /&gt;Не выходя из состояния офигения, я достал из загашников старый полу-работающий скриптик для извлечения основных данных о фильме с imdb.com и довел его до работоспособного состояния.&lt;br /&gt;&lt;br /&gt;Кому интересно, скрипт и пример его использования - под катом.&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вот скрипт:&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;small&gt;
#!/bin/bash
request=&quot;$@&quot;
file=&quot;imdb_dump.html&quot;

wget -U Firefox &quot;http://www.google.com/search?q=$request site:imdb.com&amp;amp;btnI=I\`m Feeling Lucky&quot; -O &quot;$file&quot;

title=$(grep &quot;&amp;lt;title&amp;gt;&quot; &quot;$file&quot; | sed -e &apos;s/&amp;lt;[^ ]*&amp;gt;//g&apos;)
rating=$(grep -A1 &quot;&amp;lt;b&amp;gt;User Rating:&amp;lt;/b&amp;gt;&quot; &quot;$file&quot; | grep -o &apos;[0-9][0-9./]*&apos;)
votes=$(grep -o &apos;[0-9,]* votes&apos; &quot;$file&quot;)
genre=$(grep -A1 &quot;&amp;lt;h5&amp;gt;Genre:&amp;lt;/h5&amp;gt;&quot; &quot;$file&quot; | grep -o &quot;&amp;gt;[A-Z][a-zA-Z]*&amp;lt;&quot; \
               | sed -e &apos;s/[&amp;lt;&amp;gt;]//g&apos; | paste - - - - - - - - - | sed -e &apos;s/[ \t]*$//&apos; -e &apos;s/\t/,/g&apos;)
url=http://www.imdb.com/$(grep -o &apos;title/tt[0-9]*&apos; &quot;$file&quot; | head -1)

echo &quot;$request|$title|$url|$genre|$rating|$votes&quot; | tee -a movies.csv
&lt;/small&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Запустив скрипт (пусть он лежит в файле imdb-search.sh) вот так: &quot;imdb-search.sh Кто вы, мистер Брукс&quot;, вы получите на экране такой вот результат:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;small&gt;
Кто вы, мистер Брукс?|Mr. Brooks (2007)|http://www.imdb.com/title/tt0780571|Crime,Drama,Mystery,Thriller|7.6/10|27,269 votes
&lt;/small&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Все эти данные будут продублированы в файле movies.csv, в текущей директории. Можно сделать несколько запросов, загрузить movies.csv в oocal или excel и там их покрутить.&lt;br /&gt;&lt;br /&gt;PS&lt;br /&gt;Это в связи с вновь доступным &quot;безлимитным&quot; интернетом мы разгребаем список &quot;а вот это, возможно, хотелось посмотреть&quot; :)</description>
  <comments>http://users.livejournal.com/_adept_/79951.html</comments>
  <category>linux</category>
  <category>imdb</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/79776.html</guid>
  <pubDate>Sun, 16 Mar 2008 23:02:56 GMT</pubDate>
  <title>Как устроена услуга &quot;Вам звонил Иван Иванович, а вы, сволочь эдакая, в это время ехали в метро&quot;</title>
  <link>http://users.livejournal.com/_adept_/79776.html</link>
  <description>Буду потихоньку возвращаться в эфир после долгого перерыва. Для раскачки - короткий рассказ о том, как устроена услуга, известная в наших краях под названием &quot;Вам звонили&quot;.&lt;br /&gt;&lt;br /&gt;Суть ее такова: допустим, вам звонили, а вы в тот момент были вне зоны покрытия или вообще выключили телефон. Естественно, вы о звонке ни сном, ни духом. И тут вы включаете телефон (выходите из метро, из подвала и т.п.) и вам приходит SMS примерно такого содержания: &quot;Вам звонило 10 человек с номерами: .....&quot;.&lt;br /&gt;&lt;br /&gt;Естественный вопрос: кто следит за вашими звонками в то время, когда вы не можете их принять? &lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Всё просто. Но сначала ответим на вопрос: а каков полный список причин, по которым вы можете не принять звонок?&lt;br /&gt;&lt;br /&gt;Они таковы:&lt;br /&gt;1)Вы вне зоны покрытия/у вас выключен телефон&lt;br /&gt;2)Вы не берете трубку&lt;br /&gt;3)Вы уже разговариваете по телефону, и у вас не включен сервис приема &quot;второго звонка&quot;, либо же он включен, но вы исчерпали его возможности, поставив &quot;на hold&quot; четырех (или пятерых?) собеседников&lt;br /&gt;4)Вас все задрали, и вы поставили на телефоне безусловное перенаправление звонков на телефон вашего начальника&lt;br /&gt;&lt;br /&gt;Если вы вдруг захотите, чтобы в любом из этих случаев происходило что-то более осмысленное, чем простой &quot;сброс&quot; звонка и проигрывание сигнала &quot;занято&quot; в ухо звонящему, то вам, как говорится, и карты в руки.&lt;br /&gt;&lt;br /&gt;В рамках системы GSM существуют так называем &quot;условные&quot; перенаправления (call forwards) звонков, срабатывающие только при выполнении определенных условий. Пользователь может сам конфигурировать эти условия - в известных пределах. Всего существует три вида условных перенаправлений звонков:&lt;br /&gt;1)По событию &quot;абонент недоступен&quot; (call forward when unreachable, CFNR)&lt;br /&gt;2)По событию &quot;нет ответа&quot; (call forward on &quot;no answer&quot;, CFNA)&lt;br /&gt;3)По событию &quot;абонент занят&quot; (call forward when busy, CFB)&lt;br /&gt;&lt;br /&gt;Добавим к этому безусловное перенаправление звонков (call forwarding, unconditional, CFU), и вы увидите, что в любом из описанных случаев &quot;неприема&quot; звонка вы сами можете &quot;отправить&quot; звонок на какой-то другой номер.&lt;br /&gt;&lt;br /&gt;Но вот на какой? Редко у кого есть второй мобильник, который будет принимать тогда, когда не работает первый. Плюс, перенаправление звонков стоит денег. На выручку абоненту приходят операторы мобильной связи&lt;s&gt;, была бы выручка&lt;/s&gt;. Только ленивый оператор не предоставляет услугу &quot;голосовой почты&quot; - номера, на который можно перенаправлять свои звонки, чтобы они записывались, как на обычном автоответчике (прослушивание которого стоит денег, естественно).&lt;br /&gt;&lt;br /&gt;Теперь возвращаемся обратно к теме поста. Как вы поняли, железяка, которая пишет вам SMS-ы о пропущенных звонках - это такой специальный &quot;автоответчик&quot;, который не записывает сообщения, а просто регистрирует время звонка и номер, с которого звонили. Плюс, он умеет засылать вам SMS со списком зарегистрированных звонков. Происходит это так:&lt;br /&gt;Первый вариант: платформа после первого же пропущенного звонка отправляет вам SMS Class 0 (его получение произойдет молча, т.к. это вроде как такой ping). По получении delivery report-а о доставке этого ping-сообщения, платформа отсылает информационные SMS-ы обоим абонентам - и звонившим (&quot;абонент снова на связи&quot;), и тому, кому звонили.&lt;br /&gt;Второй вариант: платформа сразу отправляет информационный SMS при первом же пропущенном звонке, а при каждом следующем звонке будет ее отзывать и дополнять информацией о новых звонках. Это будет происходить до тех, пока вы не появитесь в сети и SMS не доставится. Как только платформа получит delivery report, она отправит сообщения &quot;абонент на связи&quot; всем звонившим абонентам. &lt;br /&gt;&lt;br /&gt;Но для начала нужно, чтобы звонки попадали на эту хитрую железку (часто называемую &quot;сервис-платформой MCA&quot;, MCA = missed call alert), используется перенаправление &quot;абонент недоступен&quot; (оно же CFNR). У хитрой железки есть свой (служебный) номер телефона, на который и устанавливается перенаправление.&lt;br /&gt;&lt;br /&gt;Кто его устанавливает? Возможны варианты: &lt;br /&gt;1)Вы сами (по инструкции от оператора)&lt;br /&gt;2)Оператор массово устанавливает перенаправление всем абонентам, которые не установили его сами.&lt;br /&gt;3)Операторское железо поддерживает функциональность вида &quot;если абонент не задал номер для CFNR, то по дефолту будет использоваться такой-то&quot;&lt;br /&gt;&lt;br /&gt;Да, и последнее: что же вы увидите в SMS-е? Тут тоже возможны варианты:&lt;br /&gt;1)На каждый пропущенный звонок вам будет прислан один SMS, причем в качестве номера отправителя будет подставлен номер звонившего (чтобы телефон автоматически выбрал в вашей телефонной книге имя абонента и вы увидели его, а не номер звонившего). Это удобно вам, но расточительно для оператора.&lt;br /&gt;2)Будет прислан один SMS со списком номеров. То, насколько удобно вам будет разбираться с этим списком, зависит исключительно от интеллекта вашего телефона.&lt;br /&gt;3)Будет прислан один SMS со списком номеров. Но - на вашей SIM-карте находится какой-нибудь &lt;a href=&quot;http://pro-gsm.info/sim-toolkit.html&quot;&gt;умный applet&lt;/a&gt;, который преобразует эти номера в имена из вашей телефонной книги, или что-то в этом роде.&lt;br /&gt;&lt;br /&gt;Вопросы?&lt;br /&gt;&lt;br /&gt;PS&lt;br /&gt;Если это первый пост по тематике GSM, который вы у меня прочитали - ходите на &lt;a href=&quot;http://pro-gsm.info&quot;&gt;мой сайт&lt;/a&gt; и читайте все остальные.&lt;br /&gt;&lt;br /&gt;PPS&lt;br /&gt;И большое всем спасибо за поздравления и теплые слова в честь моего дня рождения!</description>
  <comments>http://users.livejournal.com/_adept_/79776.html</comments>
  <category>gsm</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/79177.html</guid>
  <pubDate>Sat, 08 Mar 2008 22:08:44 GMT</pubDate>
  <title>Временные мухи любят стрелы</title>
  <link>http://users.livejournal.com/_adept_/79177.html</link>
  <description>&lt;code&gt;&lt;pre&gt;today = do
   modify (\state -&amp;gt; state {age = age state +1})
   get greetings&lt;/pre&gt;&lt;/code&gt;</description>
  <comments>http://users.livejournal.com/_adept_/79177.html</comments>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/79077.html</guid>
  <pubDate>Mon, 25 Feb 2008 22:29:40 GMT</pubDate>
  <title>Сетевая инфраструктура для дома - часть вторая</title>
  <link>http://users.livejournal.com/_adept_/79077.html</link>
  <description>Тааак, первую порцию информации я переварил, теперь у меня новые вопросы:&lt;br /&gt;&lt;br /&gt;Судя по всему, наилучшим решением по соотношению &quot;цена/качество&quot; для удовлетворения моих &lt;a href=&quot;http://users.livejournal.com/_adept_/78727.html&quot;&gt;потребностей&lt;/a&gt; будет такой комплект:&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;br /&gt;1)Относительно простая коробка, исполняющая ADSL модем + WIFI router + firewall + bandwidth control. Я присматриваюсь к DrayTek Vigor 2700Ge ($110), ASUS WL-600g ($107), либо ASUS WL-500g Premium ($95), т.к. ADSL-модем с ethernet у меня уже есть (Zyxel OMNI ADSL EE), и можно будет его не выкидывать. Соответствующее All-in-one решение от Zyxel (P-662HW EE) оказалось дороговато ($250) :(&lt;br /&gt;2)Мелкий компьютер с Linux, который будет исполнять всё остальное (типа &lt;a href=&quot;http://www.itorg.com.ua/index.php?option=com_content&amp;amp;task=view&amp;amp;id=75&amp;amp;Itemid=79&quot;&gt;такого&lt;/a&gt;, только винт побольше (или даже два?), и без DVD-резака, ~$200-$250). В нее же втыкается принтер, либо, если принтер сетевой - он втыкается в модем.&lt;br /&gt;&lt;br /&gt;На VoIP пока можно волевым решением забить, т.к. это больше для баловства, а не для дела.&lt;br /&gt;&lt;br /&gt;При этом (2) втыкается в (1) по ethernet, все остальное работает через wifi. Когда захочется скорости, либо протяну по плинтусам еще витой пары, либо буду апгрейдится на 802.11n&lt;br /&gt;&lt;br /&gt;Теперь поругайте меня :)&lt;br /&gt;В частности, непонятно - оставлять ли старый ADSL-модем и брать к нему модный WIFI router (500g Premium), который &lt;b&gt;потенциально&lt;/b&gt; может пригодиться каким-то своими модными фишками, либо же брать новое модное all-in-one решение.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPD:&lt;/b&gt; Да, и кто-то имел дело с LuxS (которые, как я понимаю, есть наша сборка из A-Open-овских OEM деталей)? Как оно в деле?&lt;br /&gt;&lt;b&gt;UPD2:&lt;/b&gt; Аналогичный вопрос по DrayTek-ам вообще и по данной конкретной модели в частности. Оно ж такое дешевое не потому, что оно такое дерьмовое, правда? :)</description>
  <comments>http://users.livejournal.com/_adept_/79077.html</comments>
  <category>request</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/78727.html</guid>
  <pubDate>Mon, 25 Feb 2008 12:00:27 GMT</pubDate>
  <title>Инфраструктура для дома/small home office - нужен совет</title>
  <link>http://users.livejournal.com/_adept_/78727.html</link>
  <description>А поделитесь со мной своим бесценным опытом, пожалуйста?&lt;br /&gt;&lt;br /&gt;Задача: организовать сетевую/компьютерную инфраструктуру для дома/домашнего офиса.&lt;br /&gt;Требуемые функции:&lt;br /&gt;1)ADSL-модем&lt;br /&gt;2)Wi Fi access point&lt;br /&gt;3)Централизованная файловая помойка (NAS?)&lt;br /&gt;4)P2P-клиент&lt;br /&gt;5)Принт-сервер&lt;br /&gt;6)В перспективе - скайп-фон, asterix или что-то в этом роде&lt;br /&gt;&lt;br /&gt;Домашнего компьютера в привычном смысле этого слова (mini-tower, стационарный монитор, ...) нет и не будет. Есть два &quot;постоянных&quot; ноутбука + какое-то количество &quot;приходящих&quot;.&lt;br /&gt;&lt;br /&gt;Нефункиональные требования такие:&lt;br /&gt;1)Чтобы не сильно шумело&lt;br /&gt;2)Чтобы было поменьше проводов и отдельных коробок и занимало поменьше места&lt;br /&gt;3)Чтобы могло работать без монитора&lt;br /&gt;4)Чтобы (если придется лазить в потрохах) работало под Linux.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;Когда-то я делал так: отдельно ADSL-модем (доставшийся от провайдера), отдельно - WiFi AP (еще 802.11b :), отдельно - mini-tower (Celeron 300A/256Mb RAM/40 Gb HDD) с открученными вентиляторами (кроме блока питания), на котором была &quot;файлопомойка&quot;, P2P, http proxy, firewall и всё остальное.&lt;br /&gt;&lt;br /&gt;В принципе, все работало, но сейчас мне этот сетап нравится перестал: 1)слишком много коробок и проводов, слишком много места требуется; 2)в mini-tower нет usb-дырок, соответственно, ни внешний винт подключить, ни принтер присобачить; 3)Скорость 802.11b уже решительно бесит.&lt;br /&gt;&lt;br /&gt;Я подумывал о том, чтобы взять какую-то железку, на которую можно взгромоздить OpenWRT, причем такую, к которой можно подключить к ней внешний USB-винт и принтер (ASUS WL-500g? 700ge?), и получить таким образом функции 1-3,5. Чтобы гонять P2P там, как я понял, маловато памяти. Что я буду делать, когда я начну играть с VoIP (п. 6) - тоже непонятно.&lt;br /&gt;&lt;br /&gt;Если брать тупой ADSL-модем с WIFI AP на борту, а все остальное селить на отдельный компьютер мелкого форм-фактора, то непонятно, где взять такой компьютер - чтобы был и тихий, и мелкий, и с параметрами &quot;послабее процессор, побольше памяти, нафиг мультимедию&quot; (хочется купить в Киеве, а не ждать по почте из USA).&lt;br /&gt;&lt;br /&gt;Короче, если вы сталкивались с подобными проблемами и успешно их для себя решили - поделитесь опытом, а?</description>
  <comments>http://users.livejournal.com/_adept_/78727.html</comments>
  <category>request</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/78522.html</guid>
  <pubDate>Sun, 17 Feb 2008 22:22:35 GMT</pubDate>
  <title>Как я шифровал задания на Quest Fight 5</title>
  <link>http://users.livejournal.com/_adept_/78522.html</link>
  <description>В прошлую субботу прошла одна из &lt;a href=&quot;http://quest.com.ua&quot;&gt;игр&lt;/a&gt; формата Quest Fight, авторами которой была моя &quot;родная&quot; и любимая команда Адцтой. Изначально я думал, что в связи с нехваткой времени мое участие в игре будет минимальным - сделаю одно задание для координационного центра по давно задуманной идее, и все. Но потом я втянулся, и незаметно стал автором или соавтором нескольких загадок, которые предлагаю попробовать решить вам.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;Для тех, кто совсем не в теме - краткое вступление. Речь идет о развлечении для великовозрастных балбесов, в котором одни балбесы (организаторы, &quot;орги&quot;) рисуют во всяких стрёмных местах (заброшенные дома, ливневые канализации, ...) слова-коды, а другие балбесы ищут эти места (и коды). Орги шифруют места нахождения кодов в загадках, а участники игры (&quot;квестеры&quot;) должны их отгадывать. В случае неспособности отгадать загадку команда квестеров тупит до истечения тайм-аута (&quot;наступления автоперехода&quot;), после чего, заработав штрафное время, получает следующее задание.&lt;br /&gt;&lt;br /&gt;Quest Fight - игра &quot;большого&quot; формата, длящаяся 10-12 часов и рассчитанная на команду, состоящую из двух машин по пять человек в каждой + какое-то кол-во народу в так называемом &quot;координационном центре&quot;, который осуществляет координацию обоих половинок команды, решает загадки, роется в интернете и т.п.&lt;br /&gt;&lt;br /&gt;А теперь, собственно, загадки (сам себя не похвалишь - как оплеванный сидишь, ага :).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Начнем с загадок для координационного центра:&lt;/b&gt;&lt;br /&gt;* &lt;a href=&quot;http://pro-gsm.info/aaq/cinema.pdf&quot;&gt;Первая&lt;/a&gt;&lt;br /&gt;* &lt;a href=&quot;http://pro-gsm.info/aaq/tree-legenda.doc&quot;&gt;Вторая&lt;/a&gt;. Материалы ко второму заданию - &lt;a href=&quot;http://pro-gsm.info/aaq/tree.zip&quot;&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Кто будет решать - поделитесь потом, каким методом вы решили вторую :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Кроме этого, я делал еще и загадки для экипажей.&lt;/b&gt;&lt;br /&gt;Кто будет решать - учитывайте, что ответом должна являться улица в Киеве, или же улица и номер дома на ней.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Раз&lt;/b&gt;&lt;br /&gt;Отгадайте загадки, затем - сложите анаграмму из отгадок:&lt;br /&gt;1)Имеет тропик, не имеет рогов&lt;br /&gt;2)По мнению Франсиска он иногда способен рождать фантастических - обычно страшных или огромных размеров - сказочных существ&lt;br /&gt;3)Домен страны Маори = запас на случай атомной войны&lt;br /&gt;4)Переставь слоги в русском обмене, получишь английское имя.&lt;br /&gt;5)Дар божий, милость господня. Бывает плавающая, бывает поющая, бывает туристическая. С аккордеоном - не бывает.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Два&lt;/b&gt;&lt;br /&gt;Скрестите ужа и ... нет-нет, не стального ежа - зачем вам два метра колючей проволоки? :)&lt;br /&gt;Скрестите его с единицей поглощенного излучения и получите нужную вам улицу.&lt;br /&gt;Да, чуть не забыл! Она заканчивается на &quot;я&quot;!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Три&lt;/b&gt;&lt;br /&gt;Вы можете взять то, что попало в top 3 известнейшего интернационального чарта. Далеко ходить не придется, и он почти наверняка найдется в том, что лежит в вашем кармане или сумочке. Вы получите буквы с первой по четвертую.&lt;br /&gt;Не получилось? Не беда. Тогда возьмите большое количество текстильных волокон и разверните их - вы получите буквы из середины слова.&lt;br /&gt;Опять проблемы? Вот еще подсказка. Если вместо первых трех букв поставить не единожды трепаную траву - то получится улица имени умершего вождя (вам она не нужна).&lt;br /&gt;Все никак? Ладно, последняя подсказка. Берите одну из методологий управления инфраструктурой информационных технологий, ррразворачивайте - и вы снова получите первые четыре буквы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Четыре&lt;/b&gt;&lt;br /&gt;Пешее путешествие Александры проходило в компании хлебо-булочного изделия. Она переживала, что пополнеет.&lt;br /&gt;Ну-ка, квестеры, на Ать-два отыщите девушку и посмотрите, нет ли вокруг зеленых стрелок.&lt;br /&gt;&quot;А как ее узнать?&quot; - спросите вы. Увы, не знаю я, потому что не тактик, а стратег.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Пять&lt;/b&gt;&lt;br /&gt;А ось і ранок.&lt;br /&gt;Ранок. Як казав класик, &quot;начало, первая пора дня, от восхода солнца&quot;, але мені більше подобається інший його вислів: &quot;утро - все время дня, до полудня&quot;. В цьому я З ним погоджуюсь стовідсотково.&lt;br /&gt;Це місто просто чарівне вранці, таке тихе та замріяне. Воно нагадує мені Францію, до якої я мрію колись повернутись - бо колись я кинув там у воду декілька дрібних французьких монет, забув їх назву...&lt;br /&gt;Але пора збиратись на стадіон, побігати з солдатами та курсантами, що сумлінно готуються виступити за рідний клуб.&lt;br /&gt;Після стадіону я планую піти туди, де колись вчився, посидіти в полі та подивитись на залізницю. Приєднуйтесь до мене.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Шесть&lt;/b&gt;&lt;br /&gt;Сзади крикнули: &quot;Куда претесь, видите - организаторами предупредительный знак STOP нарисован?&quot;. В ответ рявкнули: &quot;видим запрещающее обозначение самостоятельно, побереги драгоценное горло, не ори&quot;. Впереди идущий скинул носком ботинка камушек, отсчитал полетное время вслух, услышал всплеск, сплюнул. &quot;Пусть сами спускаются, водоплавающие&quot;, - непонятно выругался предводитель авангарда, развернулся и пошел назад. Остальные квестеры, сколько было, поплелись загрустившею чередой восвояси.&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;b&gt;Семь&lt;/b&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;Meanwhile, &lt;span class=&apos;ljuser&apos; lj:user=&apos;avsej&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://avsej.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://avsej.livejournal.com/&apos;&gt;&lt;b&gt;avsej&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; интересуется: &quot;вы не в курсе существуют ли в Минске встречи, аналогичные киевским встречам developers.org.ua? Ну, или если не встречи, то сообщества где можно узнать что-нибудь новое и интересное?&quot;. Лично я - не знаю. А вы?</description>
  <comments>http://users.livejournal.com/_adept_/78522.html</comments>
  <category>квесты</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/78289.html</guid>
  <pubDate>Thu, 14 Feb 2008 23:22:15 GMT</pubDate>
  <title>Что такое data mode и кто занимает все таймслоты</title>
  <link>http://users.livejournal.com/_adept_/78289.html</link>
  <description>&lt;span class=&apos;ljuser&apos; lj:user=&apos;faceted_jacinth&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://faceted-jacinth.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://faceted-jacinth.livejournal.com/&apos;&gt;&lt;b&gt;faceted_jacinth&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; пишет: &quot;&lt;i&gt;Есть задача: построить устройство, которое раз в пять-десять минут пересылает буквально десять байт в специальное место по мобильной сети, при помощи Siemens TC35i и MC35i или их китайских аналогов. Если слать смски, то получится очень дорого. Если юзать GPRS, то девайс получится более дорогой, плюс непонятно, как правильно это всё организовать -- держать соединение открытым всё время, или открывать его каждый раз. Но есть ещё одна штука, data mode (вызывается командой &quot;AT0&quot;, прекращается тремя плюсиками после секундной паузы), про которую я вообще не понимаю, как она работает. В смысле, как она тарифицируется и как она работает на низком уровне. То есть вроде она должна тарифицироваться по времени и обеспечивать надёжную скорость, но один знакомый сказал, что переход в режим данных занимает полминуты, поэтому получается даже дороже смсок. Вот если ты про это знаешь, не мог бы кратко внести ясность и отправить к каким-нибудь источникам знаний?&lt;br /&gt;&lt;br /&gt;Или можешь пост написать, про то, как уживаются голосовые каналы, каналы данных, факсы, GPRS и смски!&lt;/i&gt;&quot;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Короткий ответ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Для начала, советую поискать тарифные планы с дешевыми СМС-ами - почти у всех операторов что-то такое есть. Может оказаться, что не так дорог SMS, как его малюют.&lt;br /&gt;&lt;br /&gt;Даже если предположить, что дешевые SMS-ы недоступны, то нельзя однозначно сказать, подойдет ли тебе data mode или нет. Все зависит от конкретных требований, предъявляемых к организации канала связи.&lt;br /&gt;&lt;br /&gt;Как это всё добро уживается вместе - может быть понятно из следующей таблицы:&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Услуга&lt;/th&gt;&lt;th&gt;Требует занятия таймслота?&lt;/th&gt;&lt;th&gt;Асинхронный режим?&lt;/th&gt;&lt;th&gt;Единица тарификации&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Голос&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;секунда&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Data&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;секунда&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Fax&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;секунда&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GPRS&lt;/td&gt;&lt;td&gt;-(*)&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;(кило)байт&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SMS&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;штука&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;&lt;strong&gt;Длинный ответ&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Изначально сеть GSM задумывалась как сеть &quot;коммутации каналов&quot;, аналогично обычным наземным &quot;проводным&quot; телефонным сетям. Сеть Интернет, напротив, является сетью &quot;коммутации пакетов&quot;. &lt;br /&gt;&lt;br /&gt;Что это значит? В сети Интернет посланный вами IP-пакет путешествует по публичным каналам связи и &quot;соревнуясь&quot; за ресурсы (полосу пропускания, такты процессора в роутере, ...) с другими такими же IP-пакетами. Никаких гарантий того, что пакет доберется до получателя сетевая инфраструктура не дает. Отправитель пакета даже не может быть уверен, что он дойдет туда, куда его посылали - ведь есть такие вещи как динамический роутинг, NAT и SNAT.&lt;br /&gt;&lt;br /&gt;В противоположность такому подходу в сети GSM для каждого разговора выделяется целый набор ресурсов, который отдается в безраздельное пользование разговаривающим абонентам. Причем, выделение этих ресурсов происходит загодя, до начала разговора, и если на каком-то этапе произошел сбой - разговор просто не состоится (пресловутое состояние &quot;сеть перегружена&quot;).&lt;br /&gt;&lt;br /&gt;Из &lt;s&gt;всех искусств для нас наиважнейшим&lt;/s&gt; всех ресурсов сети GSM самым &quot;дорогим&quot; является ресурс радио-интерфейса - пресловутые &quot;тайм-слоты&quot;. По определению, один &quot;радиоканал&quot; (одна частота) сети GSM разбивается на 16 тайм-слотов, которые используются не только для обслуживания абонентов. но и для передачи служебного трафика.&lt;br /&gt;&lt;br /&gt;Даже если вы позвонили куда-то и молчите - вы все равно занимаете тайм-слот. Соответственно, молчащие абоненты - это плохо с точки зрения экономного расходования тайм-слотов. Долго разговаривающие абоненты - тоже плохо, по тем же причинам.&lt;br /&gt;&lt;br /&gt;Простой вывод: абоненты, которые используют мобильный телефон для выхода в интернет - это плохо, т.к. они будут долго &quot;висеть на линии&quot; и много &quot;молчать&quot;. Если, конечно, выход в интернет будет организован так же, как и обслуживание голосовых звонков. Так было, и это называлось data mode (см. ниже). Потом был придуман GPRS, который является шагом в мобильных сетей с коммутацией пакетов.&lt;br /&gt;&lt;br /&gt;Под GPRS выделятся определенное кол-во тайм-слотов на каждом радиоканале, и эти выделенные тайм-слоты совместно используются всеми GPRS-абонентами (отсюда и сноска-звездочка в таблице (*)). Чем больше тайм-слотов отдали под GPRS - тем выше потенциальная скорость соединения &lt;b&gt;для каждого абонента&lt;/b&gt;. Грубо, 1 тайм-слот = максимум 9600 bps, 3 тайм-слота = 3*9600 = максимум 28800 pbs, и так далее. Если вы в округе единственный пользователь GPRS, то вся потенциальная ширина канала достается вам. Если вас десятеро - то все зависит от того, что и как вы качаете. Если все активно &quot;качают файло&quot; без передышки - то каждому достанется 1/10 пропускной способности канала.&lt;br /&gt;&lt;br /&gt;А что же SMS? А для них не требуется ни отдельного персонального тайм-слота, ни выделенного для нужд коллективного пользования тайм-слота. Для передачи SMS (тут я сильно упрощаю и смешиваю в кучу BCCH и SACCH, желающие могут погуглить эти аббревиатуры) используется тот же тайм-слот, который используется для служебного радиообмена базовой и всех телефонов в зоне ее покрытия. Правда, телефону все равно приходится крикнуть &quot;Эй! Я тута! У меня срочный пакет!&quot; и дождаться, пока базовая &quot;обратит на него внимание&quot;, так что посылать SMS-ы сплошным потоком со всех телефонов сразу - не получится.&lt;br /&gt;&lt;br /&gt;Вот так вот, если совсем вкратце, все услуги вместе и уживаются.&lt;br /&gt;&lt;br /&gt;Да, возвращаясь к первоначальному вопросу - &lt;b&gt;что же такое data mode и fax mode&lt;/b&gt;? Представьте, что вы позвонили с вашего мобильного кому-то на факс. С той стороны засвистело, и вы приложили свой мобильный к вашему факсу. Если вам сильно повезет, таким извращенным способом даже получится что-то передать. А теперь представьте, что факс установлен у вашего оператора мобильной связи, ваш мобильный телефон умеет с этим факсом специальным образом разговаривать, и телефон имеет (в сторону компьютера) интерфейс наподобие факс-модема. Представили? Вуаля, теперь вы понимаете, что такое fax mode.&lt;br /&gt;&lt;br /&gt;Если же заменить в предыдущем абзаце слова &quot;факс-модем&quot; на &quot;модем&quot;, то мы получим описание data mode. Проще говоря, мобильник с поддержкой data/fax mode сам умеет &quot;свистеть в ухо&quot; специальному оборудованию, установленному у оператора мобильной связи, а уже это оборудование умеет &quot;насвистеть&quot; факсу или модемуна той стороне. Такой мобильник умеет изображать из себя Hayes-совместимый модем, если подключить его к компьютеру специальным кабелем, по Irda или по bluetooth.&lt;br /&gt;&lt;br /&gt;Скорость передачи данных при этом фиксирована - 9600 bps, но тарифицироваться будет не объем переданной информации, а время на линии - так как вы будете занимать тайм-слот в ходе всей передачи.&lt;br /&gt;&lt;br /&gt;Что же касается времени в пол-минуты на установление соединения, то, скорее всего, у знакомого поверх физического уровня используется PPP+CHAP, или что-то в этом роде, и именно на установление соединения на этом уровне и тратится основное время.&lt;br /&gt;&lt;br /&gt;Вопросы?</description>
  <comments>http://users.livejournal.com/_adept_/78289.html</comments>
  <category>gsm</category>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/77887.html</guid>
  <pubDate>Tue, 05 Feb 2008 00:12:51 GMT</pubDate>
  <title>Обо мне пишут. Хорошо пишут, но непонятно ... :)</title>
  <link>http://users.livejournal.com/_adept_/77887.html</link>
  <description>Кто владеет языком - черкните мне в двух словах, о чем вот этот вот латвийский текст: &lt;a href=&quot;http://laacz.lv/2008/01/16/viss-par-mobilajiem-sakariem/&quot;&gt;http://laacz.lv/2008/01/16/viss-par-mobilajiem-sakariem/&lt;/a&gt; , а? :)</description>
  <comments>http://users.livejournal.com/_adept_/77887.html</comments>
  <lj:security>public</lj:security>
</item>
<item>
  <guid isPermaLink='true'>http://users.livejournal.com/_adept_/77752.html</guid>
  <pubDate>Mon, 04 Feb 2008 23:58:32 GMT</pubDate>
  <title>SMS Fraud: часть 1/X</title>
  <link>http://users.livejournal.com/_adept_/77752.html</link>
  <description>Сегодня я внезапно понял, что написать что-то очень хочется, и хочется уже очень давно, да все как-то не хватает времени на то, чтобы сесть и в спокойной обстановке что-то написать. Но совсем не писать тоже ж нельзя - бороду-то я, допустим, сбрею, а &lt;s&gt;умище&lt;/s&gt; мысли для постов куда девать прикажете?&lt;br /&gt;&lt;br /&gt;Посему будем резать хвост частями. Данный пост открывает серию постов неизвестной длины о том, как устроен сервис SMS, и каким образом разные темные и не очень личности используют лазейки в нем для честных и не очень целей.&lt;br /&gt;&lt;br /&gt;&lt;a name=&quot;cutid1&quot;&gt;&lt;/a&gt;Начнем с того, что рассмотрим, каким же путем доставляется обычный SMS с мобильного &lt;strong&gt;А&lt;/strong&gt; на мобильный &lt;strong&gt;B&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Для начала - необходимая оговорка. Вместо навевающих депрессию пассажей вида:&quot;&lt;em&gt;мобильный телефон, в который вставлена SIM-карта, в учетной записи которой в соответствующем HLR присутствует сервис &quot;телефония&quot;, которому назначен MSISDN &lt;strong&gt;A&lt;/strong&gt;&lt;/em&gt;&quot; я буду писать просто: &quot;&lt;em&gt;мобильный с телефоном &lt;strong&gt;А&lt;/strong&gt;&lt;/em&gt;&quot;, или даже еще проще: &quot;&lt;em&gt;мобильный &lt;strong&gt;А&lt;/strong&gt;&lt;/em&gt;&quot;. Ну, а вы уже сами в голове достраивайте весь этот дом-который-построил-Джек, ок?&lt;br /&gt;&lt;br /&gt;Вторая необходимая оговорка заключается вот в чем: если излагать устройство SMS в деталях и подробностях, придется пересказать половину стандартов GSM, и получится книга в 400 страниц толщиной. Чтобы этого не получилось, я все буду сильно-сильно упрощать, стараясь не растерять по пути важные детали. Я знаю, что меня читают несколько спецов по контентным услугам, програмисты SIM Toolkit-ов и прочие люди, для которых все это - ежедневный хлеб насущный. Убедительная просьба - не судите строго, и ткните пальцем, если я где-то пропущу что-то важное.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://pics.livejournal.com/_adept_/pic/0000w066&quot; alt=&quot;mobile-to-mobile SMS&quot; /&gt;&lt;br /&gt;Впрочем, вернемся к SMS-ам. На картинке схематически представлен процесс прохождения SMS-а с мобильного на мобильный. Дальше следует детальное описание каждого пункта.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Итак, с мобильного &lt;strong&gt;А&lt;/strong&gt; отправляется SMS на номер &lt;strong&gt;B&lt;/strong&gt;. Телефон договаривается с базовой о том, что неплохо было бы передать SMS, и довольно скоро SMS долетает по эфиру до базовой, оттуда - до контроллера базовой, а оттуда уже рукой подать до коммутатора (MSC). Как видно, в заголовке SMS указывается, через какой центр обработки SMS (так называемый SMSC) мы хотим отправить SMS. Нужный центр указывается своим адресом, который для всех практических целей выглядит точно так же, как и обычный номер телефона. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Коммутатор, который обслуживает абонента &lt;strong&gt;A&lt;/strong&gt;, получает SMS и стремится побыстрее сбыть его с рук. Для этого он посылает указанному SMS сообщение &lt;strong&gt;&lt;em&gt;forwardSMS&lt;/em&gt;&lt;/strong&gt;, передавая в нем SMS в точности в том же виде, в котором он его получил. Обратите внимание, что при этом MSC указывает свой адрес.&lt;br /&gt;&lt;/li&gt;&lt;