26 февраля 2012 г.

Windows 8: ARM архитектура == смерть .Net и Silverlight?

Но рок-н-ролл мертв, а я-а-а-а ... еще нет...
Б.Г. (который не Билл Гейтс, а Борис Гребенщиков)

Мыслей много, с чего бы начать ...
Начну, пожалуй, так - 8 лет назад (в далеком 2004 году) Joel Spolsky написал замечательную статью - Как Microsoft проиграла битву за API (оригинал статьи - How Microsoft Lost the API War). Правильных мыслей в статье много и она остается актуальной и по сей день. В общем и целом статья сводится к одному предложению: Microsoft утратила религию обратной совместимости (eng. "Microsoft Lost the Backwards Compatibility Religion"). На тот момент речь шла о том, что утеряна обратная совместимость между новой платформой .Net и старыми языками (Visual Basic и Microsoft C++) - т.е. если Вы писали на чем-то "старом", то вам нужно все учить заново и практически с нуля.
Для молодого поколения, напомню, что платформа .Net появилась в 2002 году и примерно в 2003-2004 годах состоялся достаточно большой отток разработчиков Microsoft на другие средства (в том числе и прямого конкурента .Net - Java). Объясняется это просто - зачем инвестировать (в том числе время) во что-то новое с еще сомнительным будущем, если есть более "вкусные" для изучения языки/платформы? Тем более, что формально заявленные средства конвертации старого кода в новый попросту не работали. Например, мне не удалось за 2 недели портирвоать проект VB6 в 40тыс.строк кода на .Net. Проще было написать этот же код на .Net заново.

Итак, прошло 10 лет, Microsoft всех кто остался (и появился новый) приучила к платформе .Net, которая должна работать на всех современных версиях Windows и даже на мобильных устройствах (я про Windows Phone 7).


И вот новая версия Windows 8 уже не за горами. А в ней много всего "вкусного" и в том числе работа не только на Intel архитектуре, но и на ARM. И что мы видим - судя по всему .Net на ARM не будет (по крайней мере в обозримом будущем)! Мало того, бинарно приложения для ARM и Intel совместимы не будут (хотя это как раз более-менее прогнозируемый момент).
But at least with Windows 8 on PCs running Intel and AMD architectures (x86/x64), most Windows apps since version 3.0 will run on the Desktop. This will not be the case on Windows for ARM for an obvious and unavoidable reason: Applications compiled to run on these processors are not code-compatible with ARM-based platforms. And managed apps made for the .NET Framework - which as late as Spring 2011 was still being touted as the platform of Windows' future - will not run on WOA because the .NET Framework is not code-compatible with ARM, at least not at this time.

25 февраля 2012 г.

"Лечим" D-Link DIR-685 от зависания и рестарта

Неделю назад написал статью о том как настроил в офисе роутер D-Link DSR-1000N для работы с двумя интернет провайдерами. Статья вызвала интерес (реально много заходов по ней) и я решил немного продолжить тему роутеров.

Стоит у меня дома уже пару лет вот такой вот "зверь" - D-Link DIR-685 (Hardware Version : A1 Firmware Version : 2.00NA). И все бы с ним было более-менее, если бы он периодически не перезапускался. "Вылечил" я эту болезнь абсолютно случайно - обратил внимание, что меня постоянно сканят и flood'ят какие-то нехорошие люди (смотреть статистику в разделе Status, Log):
Feb 25 06:29:32ATTACK Detected: 002[PING-FLOODING] attack from WAN (ip:96.242.232.31) detected. Packet dropped.
Feb 25 06:24:57ATTACK Detected: 002[PING-FLOODING] attack from WAN (ip:77.109.0.58) detected. Packet dropped.
Feb 25 06:24:54ATTACK Detected: 002[PING-FLOODING] attack from WAN (ip:94.154.212.241) detected. Packet dropped.
Feb 25 06:24:53ATTACK Detected: 002[PING-FLOODING] attack from WAN (ip:77.109.0.58) detected. Packet dropped.
Feb 25 06:24:51ATTACK Detected: 002[PING-FLOODING] attack from WAN (ip:83.228.10.61) detected. Packet dropped.


И закралась у меня мысль, что в этой "железке" (а точнее в ее софте), что-то не так  с буфером входящих пакетов (т.е. он, конечно, пишет, что пакеты dropped, но скорее всего все таки происходит переполнение буфера и, как следствие, зависание и reboot роутера).

Собрался я уже firmware перепрошивать на какой-то очень custom'ный (например, с ftp.dlink.ru), но как-то было боязно, так как аппарат приехал ко мне из USA. Вдруг у него там внутренность другая, с нашими прошивками не особо совместимая.

В общем, обновлять firmware я не решился и на всякий случай отключил ответы на ping'и по WAN порту: Advanced, Advanced Network 
Enable WAN Ping Response :   
и сазу аппарату моему полегчало.

Полет уже более 5 дней и проблема зависаний и reboot'ов, надеюсь, решена :)
Connection Type : Static IP
Cable Status : 100 Full
Network Status : Connected
Connection Up Time : 5 Days, 18:04:14


Так что статистику у меня по D-Link'у стала еще лучше стала. Из 5 "коробочек", которые держал в руках 4 "пахали" и одна сгорела ;(

UPDATE: Превращаем D-Link DIR-685 в почти NAS сервер.

11 февраля 2012 г.

Интернет!? Дайте два... или два канала интернет в офисе на D-Link DSR-1000N (за 300$)

Для многих интернет давно стал не роскошью, а средством. Средством коммуникации, поиска информации, развлечения и общения. Сложно сформулировать, чем для современного человека является интернет. Он ... как электричество, воздух или лифт - когда интернет есть, ты его не замечаешь, а когда его нет - становится достаточно сложно.
Иными словами многим хочется иметь надежный канал выхода в интернет за разумные деньги. Как показывает практика, у любого, даже самого надежного интернет провайдера случаются аварии и два канала доступа в интернет становятся обязательными для очень многих (быстрый - основной и подешевле - резервный). 
Для локальных (домашних) целей обеспечить резервный канал элементарно - мобильный интернет через телефон или любое другое GPRS устройство.
Другое дело когда у вас компьютеров несколько (скажем, небольшой офис на 5-10 рабочих станций плюс пара серверов): иметь на каждого потребителя резервный мобильный канал дорого и не эффективно (переключение каналов будет, скорее всего, происходить вручную, что не добавляет здоровья ни сотрудникам, ни системным администраторам).
Конечно, можно подключить мобильный интернет на маршрутизатор (если он это позволяет) и автоматически или полуручным способом их переключать. Но для меня это не альтернатива по многим причинам: 
  1. ширины (т.е. пропускной способности) канала мобильного интернета на всех не хватает,
  2. маршрутизатор зачастую стоит в зонах с плохим покрытием мобильных операторов (например, те же серверные :)
  3. требуется ручное переключение доступа, что также не всегда возможно.
Итак, решено - берем два интернет канала, роутер с двумя WAN портами и двух независимых интернет провайдеров.
В качестве роутера я себе выбрал D-Link DSR-1000N (есть еще его "младший брат" D-Link DSR-500N - такой же, но на 50$ дешевле и без чего-то там неважного :). Для тех, кто "в танке" - N означает Wi-Fi 802.11N. Если Wi-Fi не нужен - есть модельки подешевле и без N.
Верить ли в D-Link или нет - каждый решает сам. Я с ними "живу" уже около 10 лет. Было 5 "коробочек": 3 удачные, 2 нет (одна сгорела, одна "глючит" и не перепрошивается). Был опыт с Linksys'ом с еще худшей статистикой: 2 "коробочки" и обе неудачно глючные.
Конечно, если Ваш бюджет позволяет выбрать решение от "дорогих производителей" (т.е. CISCO), то брать китайско-российские поделки смысла нет, но на мой бюджет D-Link - это самое то.
Как его правильно "готовить" - опять же вопрос вкуса. Я сделал в офисе следующее:

I. Создал резервный вариант маршрутизатора:
  1. Мой "быстрый" провайдер прописывает у себя mac адреса подлключаемых к нему устройств. По-этому прописал в один из WAN портов  DSR-1000N  mac адрес WAN порта старого маршрутизатора и задал соответствующие настройки.
  2. Проинструктировал пользователей, что если новый маршрутизатор выйдет из строя, то достать из стола старый, включить в розетку и подключить два кабеля: WAN и дальше на LAN и сделать вид, что так и было :).
II. Подключил два WAN порта:
  1. Ethernet в первый от провайдера (как было описано в I.)
  2. Ethernet через DSL во второй (здесь пришлось немного "повозиться" PPPoE, DSL роутер в режим "маршрутизатора").
III. Убедился, что оба WAN'а "подняты" и настроил балансировку нагрузки:
  1. Состояние обоих WAN'ов видно в web консоли на закладке Status.
  2. Балансировка позволяла делать разное, но для меня наиболее удачным стал вариант Round-robin.
  3. В качестве критерия выбора - время ping'а DNS сервера провайдера. Здесь есть маленькая тонкость: у моего основного провайдера очень эээ .... плохой DNS сервер (даже когда канал есть, DNS сервер периодически недоступен). По-этому я прописал в качестве основного DNS сервера основного провайдера 8.8.8.8 (бесплатный DNS от Google).
IV. Тесты:
  1. Тестировал я через  http://www.speedtest.net Так как "ширина" каналов разная - сразу видно на каком из WAN каналов идет работа.
  2. Выдернул кабель из WAN1 - убедился, что работа не прервалась и что тест (и trace :) показал работу на DSL канале.
  3. Подключил WAN1 и убедился, что все восстановилось "само" :)
V. На практике:
  1. Схема пока живет "аж" второй день. Но вчера уже все было ОК - когда основной провайдер в пятницу вечером начал "лагать" (т.е. ping 8.8.8.8 ухудшился) - роутер перешел на второй канал, а спустя минут 40 вернул все "как было".
  2. Опрос работающих пользователей никаких нареканий не вызвал :)
  3. Реально D-Link DSR-1000N мы используем уже четвертый месяц. Нарекания на него есть и об этом ниже.
VI. Нарекания на D-Link DSR-1000N:
  1. Долго включается. Раза в 2-3 медленнее любого остального оборудования того же класса с которым я имел дело. Иногда, уже начинаешь нервничать, что "все пропало" (например, после перепрошивки), а это он еще "не поднялся".
  2. Прошивка, которая из коробки, она слегка "глючная" в web интерфейсе (не открываются некоторые страницы - например, dashboard).
  3. Прошивка, которая из коробки, как-то странно себя ведет с шифрованием Wi-Fi. По сути есть только WEP (WPA 2 - почему-то нет). Есть новые прошивки на сайте, но об этом ниже.
  4. Web интерфейс заставил зарегистрироваться иначе не хотел "сам" проверять прошивку. Первый раз у меня такие сюрпризы с маршрутизиторами. Чай не iPhone, чтоб активироваться ;). После регистрации ничего не нашел, хотя на ftp.dlink.ru новые стабильные прошивки были ;(
  5. Не опознал мой USB CDMA модем (может и не должен). Вообще, тема, что к нему что-то еще третье можно воткнуть через USB как-то странно раскрыта в документации (или это я такой тупой :). Как я понял, нужно определиться - или WAN 2, или USB модем. Перечня совместимых модемов я не нашел. В общем, если кто-то из Украины заведет его с МТС модемом и поделится инфой как его "правильно готовить" - с меня пиво.
  6. Есть новые прошивки на ftp.dink.ru. Они даже ставятся. И, о чудо! С них даже можно откатиться!!! В них даже решены проблемы из пунктов 2., 3 и частично 5. (вроде бы разделили WAN 2 и USB модем можно на WAN 3 "повесить"). Вот только одна проблема - не работает Wi-Fi. Причем именно не работает :) Проверяли в офисе на 3 ноутах разных производителей - эффект такой: коннект с Wi-Fi есть и не пропадает, а вот соединения по tcp/ip (или ниже) рвутся. Что видят пользователи: постоянно переноннективающийся skype, при попытке открыть часть страниц - не открываются, но помогает refresh, попытка скачать файл - пытка, присоединить документы в gmail не получилось ни у кого.  Экспериментировал с разным шифрованием трафика Wi-Fi (и даже без шифрования) - проблема остается при любом из вариантов. В общем если кто-то еще отважится на эксперимент по обновлению прошивки и у него останутся работать основные функции и "вылечатся" часть из описанных мной багов - дайте знать. 
Итог
На рынке появился класс недорогих маршрутизаторов с двумя WAN портами и поддержкой Wi-Fi. При бюджете в 300$ на них можно перейти и решить вопрос с недоступностью интернета, при этом обеспечив как резервирование канала связи, так и резервирование самого маршрутизатора.

Update от 16.03.12
Мне тут написали, что уже вышла де новая прошивка 1.04B58_RU и что в ней решены все описанные мной проблемы. Враки! Все кроме одной - по прежнему не работает skype  (чудом в него два раза входил, но это было ненадолго и не считается :). Документы как-то в gmail'e upload'ятся, но я бы сказал, что медленнее чем на текущей прошивке  1.03B43_RU. Что-то существенное докрутили в поддержке PPPoE, работе с несколькими WAN'ами (определение "упавшего" и "подняти" нужного) ну и WAN3 (только для моделей DSR-*N) с WPA2 (всего исправлено 59 bug'ов и добавлено 11 новых features - прямой линк на changelog).

Update от 09.04.12
Существует простой workaround, решающий проблему неработоспособности skype по Wi-Fi для прошивок версии 1.04 и 1.06. Подробности в отдельном посте. "Родное" решение от DLink.

Update от 29.08.12
Ссылка на австрийский pdf файл (на Английском) как "завести эту балалайку" на 300Мб. У меня он взлетал до 156, а потом падал до 56 снова. Вкратце: Channel spacing = 20/40 Mhz, Security  = WPA+WPA2, Encryption = TKIP+CCMP и Authentication = PSK.

Update 19.09.12
Часть ответов на вопросы по совместимости 3G модемов и родном решении по skype дана в отдельном посте.