Как-то не очень радует скорость. 100-120 мегабит/с (12-15 мегабайт/с) — вполне реальная скорость даже на n-стандарте. У жесткого диска через USB3.0 скорость на порядок больше.
Попробуйте подсоединить ноутбук проводом, по гигабитной сети, тест будет более чистым. Если эта модель не может выжать даже 10% от возможности диска — грош цена ему, как файлопомойки. И еще можно попробовать переформатировать диск в ext3, с ней роутер должен работать охотнее, если, конечно, TimeMachine это не помешает.
Вообще, намного интереснее по производительности мощный (по скоростным характеристикам сети) роутер + NAS.
Чем больше возможностей пытаются впихнуть в роутер — тем больше он становится. Когда полноценно работать с хранилищами — станут размером в htpc.
Крупный вид:
1) Индикатор «дефолтной» sim-карты, с нее по умолчанию будут производиться звонки и отправляться сообщения
2) Индикатор сигнала первой карты. Отображается в инвертированных цветах по умолчанию, чтобы легче было опознать.
3) Индикатор сигнала второй карты.
Серый квадрат на предыдущей картинке — это как раз второй индикатор. Неудачное фото или дефект сжатия.
У самсунга двухсимочные модели имеют приствку «Duos» в названии, можете полистать любой обзор — там есть большие фотографии и скриншоты двухсимочного интерфейса.
У нокии помимо Lumia есть еще и бюджетная линейка Asha. В основном — двухсимочные телефоны на одноименной платформе. Вот на них отлично бы смотрелся андроид. И не нужно будет поддерживать свою ОС.
С другой стороны, Asha представили около года назад, странно предполагать такую быструю кончину, если только плавную трансформацию в андроид.
Классная вещь!
Но в контексте хаба, за ~60 долларов без учета доставки намного интереснее помигать собственными лампами через Arduino-совместимый командный центр!
Спасибо за хороший пост про «настоящий MVC».
Совсем вскользь упомянут вопрос тестирования, который на самом деле является очень важным.
1) Тестирование бизнес-логики становится на порядок проще, поскольку сильно снижается трудоемкость написания модульных тестов. Не оставляя логики в контроллерах, достаточно тестировать только модели.
2) Модульное тестирование контроллеров — это очень скользкая тема, поскольку все чаще превращается в функциональное тестирование. Но опять же, оно становится намного проще, если в контроллере минимум связанной бизнес-логики.
Возвращаясь к MVC, контроллер должен обрабатывать (принимать) пользовательские данные и передавать их в модели. В php в целом прием пользовательских данных — тривиальная задача, поэтому контроллеры вырождаются в модель-контроллеры, что экономит время, силы, память (разработчика) при первичном прототипировании, но в дальнейшем усложняет поддержку.
Тут следует научиться видеть границу и соблюдать меру. Если в приложении единственных экшн, который делает вывод типового запроса к базе, можно обойтись шаблонной моделью и контроллером. Но как только начнет появляться новый код — необходимо прибегнуть к рефакторингу.
В статье есть пример про универсальный CRUD-контроллер. К сожалению, эта универсальность разбивается в дребезги уже при небольших различиях в требованиях к выводу данных. Начинается лапша с конфигурацией, множество реализаций или еще какие-нибудь костыли. А все ради того, чтобы не копипастить инициализацию моделей в нескольких экшнах. Отличный пример из мира Yii — CListView.
В заключении, хочу сказать, что Yii — это очень мощный и гибкий инструмент. Вариантов правильного применения множество, но только опытный разработчик сможет задействовать всю мощь без ущерба себе. Поэтому, мой совет — оглядеться по сторонам и посмотреть, как устроен мир других фреймворков, поинтересоваться причинами. Не хочу холиворить, но я бы посоветовал освоить symfony2 под крылом опытного коллеги, а потом с новыми знаниями возвращаться в Yii.
Это здорово, но потерю типизации никто не отменял.
И если для сеттера можно сделать проверку на уровне языка: public function setUser(User $user) {
...
}
то для обращения через виртуальные поля требуют ручной валидации кода.
Могу порекомендовать модель Canyon CNA-C05030W. При цене в 500 рублей имеет емкость 3Ач, 2 USB порта и (что мне было важно) удачную форму для ношения в кармане.
Их великое множество разных цветов и вкусов. Сделаны все примерно по одинаковой схеме.
Вы не думали использовать JSON-RPC в качестве реализации HTTP-RPC протокола? Добавит формализованности, уже есть готовая схема и библиотеки для работы с ним.
Могу предположить два варианта:
а) У вас древний телефон с никелевым (NiMH или NiCd) аккумулятором
б) Вы используете какой-то сторонний софт
Потому что заряд аккумулятора измеряется двумя способами:
1) по напряжению
2) по статистике (кол-во отработанных часов при известных энергозатратах)
Первый случай «хардверный», второй — «софтверный». У литиевых аккумуляторов по напряжению можно достаточно точно определить уровень заряда, в отличие от никелевых, у которых при снятии нагрузки может повышаться заряд.
P.S. вот уже много лет у меня нет проблем ни в телефонах, ни в фотоаппаратах, ни в камерах с определением заряда литиевых аккумуляторов. Производители отображают заряд хардверным способом, а остаточное время считают софтверным. Не рассматриваю случаи с дохлыми аккумуляторами и неправильным использованием (нагрузка больше расчетной, температурные условия не соответствуют документированным и т.д.).
Помимо ATX блоков питания сейчас есть еще масса стандартизованных форм-факторов меньшего размера, например Flex ATX.
Попробуйте использовать его — сэкономите массу места. Сейчас БП занимает больше места, чем все остальное вместе взятое.
Но я бы остановился на микро БП (ebay) в сочетании с внешним БП постоянного напряжения.
Действительно изящно получилось.
А сколько соединений держит такая реализация? Демон не сильно распухает при большом количестве подключений? (самое время помониторить)
Сейчас, похоже, народ немного понабежал. Минут 10 назад сообщения отправлялись оперативнее, и соединение не рвалось.
Спасибо за обзор этого API! Как-то раньше не догадывался, что есть такая хорошая и открытая возможность получать данные по авиарейсам. Теперь можно отключить древнюю парсилку табло аэропортов.
P.S. жить в 20 минутах от шереметьево — это жить в самом шереметьево. Ну или вести глубокую ночную жизнь ;)
Попробуйте подсоединить ноутбук проводом, по гигабитной сети, тест будет более чистым. Если эта модель не может выжать даже 10% от возможности диска — грош цена ему, как файлопомойки. И еще можно попробовать переформатировать диск в ext3, с ней роутер должен работать охотнее, если, конечно, TimeMachine это не помешает.
Вообще, намного интереснее по производительности мощный (по скоростным характеристикам сети) роутер + NAS.
Чем больше возможностей пытаются впихнуть в роутер — тем больше он становится. Когда полноценно работать с хранилищами — станут размером в htpc.
habrastorage.org/files/347/9ae/af9/3479aeaf98de498cace49e344753624e.jpg
Крупный вид:
1) Индикатор «дефолтной» sim-карты, с нее по умолчанию будут производиться звонки и отправляться сообщения
2) Индикатор сигнала первой карты. Отображается в инвертированных цветах по умолчанию, чтобы легче было опознать.
3) Индикатор сигнала второй карты.
Серый квадрат на предыдущей картинке — это как раз второй индикатор. Неудачное фото или дефект сжатия.
У самсунга двухсимочные модели имеют приствку «Duos» в названии, можете полистать любой обзор — там есть большие фотографии и скриншоты двухсимочного интерфейса.
В оригинальном андроиде, правда, выглядит слегка иначе:
С другой стороны, Asha представили около года назад, странно предполагать такую быструю кончину, если только плавную трансформацию в андроид.
С ним все реже приходится хвататься за мышку, чтобы переставить курсор.
Help->Default Keymap Reference
у вас нет Mac-комбинаций?Но в контексте хаба, за ~60 долларов без учета доставки намного интереснее помигать собственными лампами через Arduino-совместимый командный центр!
Совсем вскользь упомянут вопрос тестирования, который на самом деле является очень важным.
1) Тестирование бизнес-логики становится на порядок проще, поскольку сильно снижается трудоемкость написания модульных тестов. Не оставляя логики в контроллерах, достаточно тестировать только модели.
2) Модульное тестирование контроллеров — это очень скользкая тема, поскольку все чаще превращается в функциональное тестирование. Но опять же, оно становится намного проще, если в контроллере минимум связанной бизнес-логики.
Возвращаясь к MVC, контроллер должен обрабатывать (принимать) пользовательские данные и передавать их в модели. В php в целом прием пользовательских данных — тривиальная задача, поэтому контроллеры вырождаются в модель-контроллеры, что экономит время, силы, память (разработчика) при первичном прототипировании, но в дальнейшем усложняет поддержку.
Тут следует научиться видеть границу и соблюдать меру. Если в приложении единственных экшн, который делает вывод типового запроса к базе, можно обойтись шаблонной моделью и контроллером. Но как только начнет появляться новый код — необходимо прибегнуть к рефакторингу.
В статье есть пример про универсальный CRUD-контроллер. К сожалению, эта универсальность разбивается в дребезги уже при небольших различиях в требованиях к выводу данных. Начинается лапша с конфигурацией, множество реализаций или еще какие-нибудь костыли. А все ради того, чтобы не копипастить инициализацию моделей в нескольких экшнах. Отличный пример из мира Yii — CListView.
В заключении, хочу сказать, что Yii — это очень мощный и гибкий инструмент. Вариантов правильного применения множество, но только опытный разработчик сможет задействовать всю мощь без ущерба себе. Поэтому, мой совет — оглядеться по сторонам и посмотреть, как устроен мир других фреймворков, поинтересоваться причинами. Не хочу холиворить, но я бы посоветовал освоить symfony2 под крылом опытного коллеги, а потом с новыми знаниями возвращаться в Yii.
И если для сеттера можно сделать проверку на уровне языка:
public function setUser(User $user) { ... }
то для обращения через виртуальные поля требуют ручной валидации кода.
Для большей наглядности статьи было бы очень здорово:
Ну и спасибо за то, что делитесь опытом!
Их великое множество разных цветов и вкусов. Сделаны все примерно по одинаковой схеме.
а) У вас древний телефон с никелевым (NiMH или NiCd) аккумулятором
б) Вы используете какой-то сторонний софт
Потому что заряд аккумулятора измеряется двумя способами:
1) по напряжению
2) по статистике (кол-во отработанных часов при известных энергозатратах)
Первый случай «хардверный», второй — «софтверный». У литиевых аккумуляторов по напряжению можно достаточно точно определить уровень заряда, в отличие от никелевых, у которых при снятии нагрузки может повышаться заряд.
P.S. вот уже много лет у меня нет проблем ни в телефонах, ни в фотоаппаратах, ни в камерах с определением заряда литиевых аккумуляторов. Производители отображают заряд хардверным способом, а остаточное время считают софтверным. Не рассматриваю случаи с дохлыми аккумуляторами и неправильным использованием (нагрузка больше расчетной, температурные условия не соответствуют документированным и т.д.).
Попробуйте использовать его — сэкономите массу места. Сейчас БП занимает больше места, чем все остальное вместе взятое.
Но я бы остановился на микро БП (ebay) в сочетании с внешним БП постоянного напряжения.
А сколько соединений держит такая реализация? Демон не сильно распухает при большом количестве подключений? (самое время помониторить)
Сейчас, похоже, народ немного понабежал. Минут 10 назад сообщения отправлялись оперативнее, и соединение не рвалось.
P.S.: если будете использовать EndlessContainerAwareCommand в DaemonCommand, то сэкономите еще десяток строк.
P.S. жить в 20 минутах от шереметьево — это жить в самом шереметьево. Ну или вести глубокую ночную жизнь ;)