вторник, 18 января 2011 г.

GSM 5G что хотелось бы иметь

Что бы я добавил в стандарт сотовой связи GCM 5G.


1. Автоматический перевод телефонов в режим вибрации в театрах, кино, залах конференций и подобных местах. В общем, там, где все время просят их отключить, но всегда кто-нибудь да забудет или проигнорирует. Сота шлет сигнал телефону - мол, заткнись - и он затыкается. В идеале конечно позиционировать абонента и делать это именно когда он находится непосредственно в "тихом" помещении - чтобы в коридоре "громкий" режим телефона возвращался обратно.

2. Как продолжение предыдущего пункта, сота должна уметь выключать GSM модуль в самолетах / больницах и других серьезных местах. Возникает правда вопрос - а как его обратно автоматически включить, если GSM модуль отключен? Как вариант, сота сообщает телефону через какое количество времени телефон должен вернуться в строй. Для самолетов такое точно бы работало, для больниц - не знаю...


3. Способность GSM модулям телефонов связываться напрямую друг с другом если они в пределах досягаемости одной соты. Такой peer-2-peer для соседей. Телефон тогда бы отсылал на соту только тарификационные данные - поговорил с абонентом таким-то столько-то минут и секунд. Это бы решило проблему связи в большой толпе когда все друг другу звонят. Ну и конечно снизило нагрузку на соты в какой-то мере.

4. В адресной книге - статусы абонентов как в аське / скайпе. Чтобы не звонить и слышать "абонент временно недоступен" - видеть сразу что человека нет в сети. В статусе также можно было бы писать имя оператора, местоположение, в роуминге ли абонент или нет, ну и много чего еще интересного.

5. Ну и то, что уже наверняка есть на Android - автоподключение к халявным Wi-Fi сетям поблизости. Иметь базу городских точек с бесплатным Wi-Fi и просто определать их по местоположению.

четверг, 30 декабря 2010 г.

Ленты RSS: фильтрация и полное содержание

Копался и сортировал свои подписки (которые RSS). Попутно решил пару сопутствующих проблем. Хочу поделиться.

Фильтрация

Есть ленты, в которых нет разбиения на какие-либо подразделы / темы. Собственно, почти все они такие. А если тематизация и существует, то достаточно строгая (например, можно подписаться на новости "Политика", но нельзя на новости "Путин" или "Путин или Медведев"). Как следствие, приходится либо просматривать большое количество обновлений такой ленты, либо отказаться от нее совсем (я выбрал второе - придерживаюсь принципа, что рассылка должна иметь большую точность).

Альтернатива - настроить правила подписки самому или фильтровать общий канал на основе своих фильтров. Для решения задачи прошерстил с десяток сайтов, вот что получилось:

  1. http://re.rephrase.net/filter  - просто и со вкусом. Скармливаем оригинальный фид, задаем логическое правило пропуска фидов - и вуаля! (новости согласно моим музыкальным вкусам). Проблема только одна, правда серьезная - фильтрация по русским словам не работает. Отсюда второй ресурс.
  2. Yahoo.Pipes - вагон и маленькая тележка сил и средств по работе с лентами (и не только). Можно делать действительно всё и это достаточно просто. Правда, требует регистрации, но получившийся фид может быть общедоступным (моё Хабра-избранное). Странно, что Google ещё подобный набор не добавил в свой feedburner и/или reader. 

Было еще много других, но их с легкостью выдает поисковик по фразе "rss filter". Они либо не работали с русскими фидами, либо портили html-содержание ленты, либо просто мне не понравились.

Полнотекстовые RSS-обновления

Некоторые сайты /блоги публикуют не весь свой контент в ленту один-к-одному, а только заголовок+первый абзац (или по выбору как на Хабре и LiveJournal). Не буду говорить плохо это или хорошо - у каждого способа есть своё применение. Идеально было бы представлять каждую ленту в двух форматах - в полном и в виде анонса. Но так, к сожалению, не везде, а значит есть задача по формированию полностатейной RSS ленты по имеющейся (в которой только анонсы). 

Ресурсы, которые решают эту проблему обычно выкусывают содержимое статьи из соответствующей html-страницы. Нужно только дать ссылку (чуть ли не в XPath) на элемент в HTML-элемент в дереве.

  1. feedex.net - принцип "нажал-и-готово". Распознает дерево сам, поэтому частенько глючит. Мне подошел только в половине случаев (удачный пример).
  2. RSS-farm - кажется один из первых отечественных ресурсов для мануального создания полнотекстовых лент. Требует установку .NET 3.5
  3. Readbox - проект хабраюзера. Делает тоже, что и RSS-farm, но требует наличия только Firefox + Firebug (плагин к лисе). Им я смог докрутить оставшиеся ленты до их полнотекстовой версии (тот же удачный пример).


среда, 22 декабря 2010 г.

Deadlock на МКАДе

Очень злободневная тема с московскими (да и не только) пробками. Не высказался только ленивый. А так как я не ленивый, то тоже черкану пару строк. Но интересна конечно не столько сама проблема, сколько её решение. Если оно конечно есть. Взять к примеру такую простую вещь, как пересечение дорог. Выясняется, что неверно "развязанные" пересечения сводят на нет и ширину дороги, и её качество. С какой бы скоростью и во сколько бы рядов поток не двигался - ему всё равно стоять на/в/перед перекрестком.

Для визуализации воспользуюсь OpenTTD. Здесь и далее одна ж/д колея может рассматриваться как от 1 до N полос для автотранспорта. Важно направление. Итак, самый примитивный перекресток с 4-мя светофорными парами:

Проблемы очевидны - любой из четырех поворотов налево блокирует всех остальных участников движения. Пробка на любом из направлений мгновенно блокирует перекресток.

Улучшаем конструкцию. Цель - сделать прямой проезд в пересекающихся направлениях неблокирующим друг друга. Блокирующим может быть только поворот направо/налево. Получаем текущие развязки на МКАД в виде 88:

Великолепно работает если основной поток идет по прямым направлениям или, максимум, поворачивает направо. Поворот налево все также сложен - он потенциально блокирует направление с которого сворачивает. Более того, очень легко достижим deadlock (4 поезда поворачивают налево одновременно).

Причем раскрутить такой deadlock очень тяжело - "отвести" в сторону какое-нибудь транспортное средство невозможно - ему в затылок "дышит" другое... Кроме того, поворот налево достаточно трудоемкий - это фактически разворот на 270 градусов вместо 90. Т.е. требует сильного снижения скорости или достаточной площади для большого радиуса. Также при таком повороте в 2х случаях из 4х требуется еще и "взбираться" на уровень вверх...

Эти проблемы решены в новой версии предыдущей развязки. Суть та же, но поворот налево теперь 90-градусный и располагается на том же уровне, что и основная дорога до пересечения. Правда, для пересекающихся направлений теперь нужны туннель (одно направление) и мост (другое).

Под мостами развязка выглядит так:

Смотрится немного громоздко, но запас прочности для deadlock'а теперь больше. Сам он теперь не образуется - а только с помощью внешних факторов - например поломки (на примере поезд на Северо-Запад сломался и перекрыл все повороты налево).

Пока проезд в прямых направлениях возможен, но через некоторое время, когда подойдут другие транспортные средства тоже поворачивающие налево, перекроются и они.

Это была развязка уже на трех уровнях. Что же будет если использовать 4? Возможно ли сделать развязку, в которой поворот налево не пересекается с другим поворотом налево? Да:

Или вот так с прозрачными мостами:

Требуется 4 туннеля и 4 моста. Самый дорогой вариант (что неудивительно). Проезд в одном направлении идет практически по прямой (и на том же уровне). На другом направлении - тоже по прямой, но на -1 уровне. А вот для поворота налево нужно сначала "взобраться" на +1 уровень, на котором проехать под двумя мостами, "взобраться" на другой мост и затем съехать с моста и с холма до начального уровня. Поворот налево снова 90-градусный, что есть несомненный плюс.

Как видно, сама развязка с точки зрения транспортного средства представляет из себя сначала развилку, а потом слияние. Примерно так это работает:

А так это уже делают в реале:

Ничего, когда-нибудь и у нас так будет.

P.S. для тайкуноводов. Как построить последнюю развязку - алгоритм:


воскресенье, 28 ноября 2010 г.

Топорный метод борьбы с шумом видекарты

Не открою Америку если скажу что видеокарты - самый-самый компонент современного ПК. Во всех смыслах. 

Самый капризный (2 слота подавай, доп. питание подавай, доп. охлаждение подавай).

Самый дорогой (да-да, чего уж там - топ видекарты (или двух)  - дороже топа ЦП. Ну я не имею ввиду серверные варианты - только десктопные.

Самый быстроустаревающий - вышла новая версия DirectX и все, вы уже за бортом современности дорогой владелец.

Самый ненадежный - наверное следствие предыдущего свойства. Производители просто не закладывают большой срок работы ибо он никому не нужен - через 2-3 года будет апгрейд...

Самый шумный в конце концов - давно минули времена пассивного охлаждения видеокарты - современная видяха куда требовательнее к охлаждению чем процессор, жесткий диск или память. Сама "карта" это уже не столько карта сколько инженерное решение как в форм фактор запихнуть чип, память, радиаторы, вентиляторы и эффективно это все развести...

Расскажу как я боролся с последним свойством. Удивительно что производители видеокарт до сих пор не установили (хотя может уже есть?) систему контроля температуры и соответствующей скорости работы вентиляторов охлаждения на карте. Чтобы она работала сама - без драйверов, программных настроек и проч. Пока этого нет, пользователям приходится иметь с этим дело. Чаще всего, конечно, любителям разгона или тем кто просто разбирается. Основная же масса людей просто терпит "пылесосный" шум видеокарты всю  недолгую жизнь компа - при этом 99% времени не запуская на нем ничего нагружающего видяху больше, чем YouTube.

Итак, если у вас шумная видеокарта в "default" режиме - добро пожаловать в волшебный мир RivaTuner. Если вам вдвойне не повезло и RivaTuner не споcобна регулировать обороты вентилятора видекарты  - тогда вы мой друг и товарищ. Тогда этот пост для вас.

Имею видяшку среднего класса (ну по крайней мере, когда я ее брал - она была средней) Asus ENGTS250 Dark Knight с вышеописанной проблемой: вентилятор все время "пилит" на максимуме и жить не дает. :) Решаем проблему топорно - меняем вентилятор на тихий. Что? Специальное охлаждение для видяхи - сразу нет по нескольким причинам:

  1. Разные форм-факторы систем охлаждения - без всякой гарантии что подойдет - надо просто брать и "примерять"
  2. Цена - на middle-ware видяху ставить охлаждение в треть или половину цены самой видяхи - нерентабельно.

Итак, приступим. Для начала снимем штатный вентилятор

Питание конечно же у него свое - "видяшечное", т.е. не такое как на материнской плате. Это значит что наш новый вентилятор будет питаться от материнки. Ничего, главное чтобы видеокарта стартовала с нулевым потреблением по каналу питания вентилятора (а то кто ж их знаешь - может "перебдели").

Идем дальше. Берем проволоку (у меня это была 1,5 мм медный кабель) и делаем из нее две буквы П

Вставляем проволоку за "крылья" радиатора

Ну вот все готово. Где же наш новый герой? Вот он:

Насаживаем новый вентилятор на видеокарточевский радиатор и закрепляем проволокой

Всё! Вставляем в корпус и наслаждаемся тишиной

Недостатки думаю видны - вентилятор неплотно примыкает к центру радиатора. Опыты показали что испытание "меховым бубликом" такая видяшка не прошла - на температуре порядка 95С система ушла в перезагрузку. Поэтому на температуру в 90С у меня стоит даунлокинг - он впрочем пока срабатывал всего пару раз - этим летом.

суббота, 27 ноября 2010 г.

Как я сделал свой ПК совсем тихим

Цель

Минимизировать шумовой эффект типичного домашнего ПК собранного в HTPC-формате. Как будет видно внизу я не заморачивался подбором специальных тихих компонентов ПК и всегда ориентировался на соотношение цена-производительность-шум. Ну разве что цену корпуса я проигнорировал. Как потом оказалось совершенно правильно, ибо он (корпус) того стоит.

Задачу можно считать выполненной если в комнате с данным ПК можно спать, а при просмотре тихих сцен фильмов комп никак не напоминает о своем присутствии (прежде всего шумом вентиляторов и жесткими дисками).

Конфигурация

Процессор:  Intel Core 2 Duo E7400 (охлаждение: Noctua NH-U12P)

Материнская плата: Gigabyte GA-EP45-DS3P

Оперативная память: Kingston KHX8500D2/G2

Видеокарта: Asus ENGTS250 Dark Knight (охлаждение штатное)

Жесткие диски (RAID-0): Hitachi Deskstar 7K100.B HDT721010SLA360 и отдельно Seagate Barracuda 7200.11 750 Gb

Блок питания: Corsair HX520W

DVD-привод: Lite-on iHAS422-31

Корпус: Antec Fusion Remote Max

В собранном состоянии (но со снятой верхней крышкой, снятым DVD-приводом и верхней крышкой отсека жестких дисков) он выглядит вот так:


Материалы

Демпфирующий материал - для шумопоглощения. Будет наклеен на все стены внутренних поверхностей, которые образуют замкнутое пространство. Чем чаще звук внутри корпуса натолкнется на такую "мягкую" стенку - тем лучше.

Антирезонансный материал - будет прокладкой между любым вибрирующим девайсом (все вентиляторы, привод, блок питания, жесткие диски) и корпусом. Представляет из себя практически самоклеящийся рубероид.


Любой герметик - я взял прозрачный сантехнический просто потому что он тогда у меня был.

Двухсторонний скотч, ножницы, нож, маркер.

Приступаем

Корпус устроен таким образом что все внутренне пространство делит на 3 отсека: БП (блок питания + две 3,5'' секции), маленький (два 3,5'' секции) и основной (все остальное - проц, мать, видяха, DVD-привод). Охлаждение работает следующим образом: воздух втягивается из двух неосновных отсеков, проходит через 3,5'' секции и попадает в основной отсек. Из основного отсека он выдувается двумя корпусными вентиляторами: 120 мм и 140 мм. БП в этом воздушном цикле не участвует: он потребляет воздух с боковой стенки и выбрасывает его с задней стенки.

Нужно помнить: шумоизоляция не должна усложнить проникновение и вообще весь путь воздуха внутри корпуса.

Внутри корпуса 3 секции: две секции с двумя 3,5'' отсеками каждая и одна съемная секция с двумя 5,25'' отсеками.

Обрабатываем 5,25'' секцию. На боковые стенки наклеиваем антирезонансный материал (места соприкосновения секции с корпусом). На внутреннюю поверхность пустого 5,25'' слота наклеиваем демпфирующий материал:


"Обезвреживаем" возможное дребезжание верхней крышки. По периметру в углах промазываем герметиком ( 0,5 - 1 мм слой) и ждем высыхания. Получается так:


Снимаем корпусные вентиляторы и по периметру их примыкания с корпусом проклеиваем антирезонансный материал (полосочки ширином 4-5 мм). Ставим вентиляторы обратно. Также проеклеиваем стенки внутри корпуса в местах где он соприкасается с БП.

Теперь самое интересное. На стенки корпуса с внутренней стороны наклеиваем демпферный материал, стараясь не заслонить слоты мат. платы. Получается как-то так (съемки против часовой со всех углов):

Важно, что отверстия воздухозабора остались незаслонёнными. У одной стенки, пришлось немного подрезать демпф. материал, чтобы не потерять жесткость конструкции:

Результаты

Разница почувствовалась сразу. Никаких визжащих звуков от жестких дисков и небольшого вентилятора видеокарты. Шум, который слышно непосредственно у корпуса напоминает шум движения воздуха по такому [непростому] маршруту. Скорее для самоуспокоения я позже поменял штатные корпусные вентиляторы на тихие от Cooler Master (на подшипниках скольжения). Если сидеть на диване (2,5 м перед компом в стойке) , то шум от компа слышен только ночью с закрытыми окнами и дверью в кухню (там шумит холодильник). Задача выполнена :)

P.S. 

Несмотря на то, что корпус считается достаточно большим для HTPC-семейства, не всякий башенный процессорный кулер в него войдет. Например мой оставил расстояние всего порядка 2 мм (!) от верхней крышки. Так что кулеры выше моего в этот корпус брать настоятельно не рекомендую - не влезет (фото сделано через щель для DVD-привода):