Архив за 21 января 2014

Думаю, многие из нас писали код вида:

    @Override
    public boolean onTouch(View view, MotionEvent event) {
        final float x = event.getX();
        final float y = event.getY();
        // использование x и y...
        return false;
    }

Но, думаю, не многие задумывались о том, какой путь проходит каждый объект MotionEvent прежде чем попасть в этот метод. В большинстве случае в этом нет необходимости, но все же случаются ситуации, когда незнание особенностей MotionEvent и обработки касаний приводит к печальным результатам.

Год назад я с друзьями разрабатывал приложение, где очень многое упиралось в обработку касаний. Однажды, загрузив новые исходники из репозитория и собрав приложение, я обнаружил, что вертикальная координата касания определяется неверно. Просматривая последние коммиты команды, я наткнулся на интересную строку, где внезапно от y-координаты отнималось 100. То есть, что-то вроде «y -= 100;», причем, это число не было вынесено как константа и вообще было непонятно почему именно 100. На мой очевидный вопрос я получил ответ «Ну, мы опытным путем определили, что в этом месте y-координата всегда на 100 (пикселей) больше, чем должна быть». Здесь, конечно, стоило бы перечитать документацию по обработке касаний и, просмотрев код проекта, найти ошибку, но я решил пойти более интересным путем – проследить по исходникам Android за MotionEvent от его получения до утилизации.

Если я смог кого-то заинтриговать историей в стиле «По следам полосатого бага» — добро пожаловать под кат.
Читать полностью »

Пришло время рассказать о еще одной стороне применения замечательного языка Форт.
Этим циклом статей я покажу, как с его помощью можно создавать крошечные клиент-серверные приложения. Каждое из которых можно использовать как исследовательский и обучающий инструмент.
Для развлечения нам понадобится Windows вплоть до семерки и пакет SP-Forth. Андрей Черезов декларировал возможность запуска его форт-системы под Линуксом, но я это не проверял.

Для начала попробуем создать простейшую серверную программку, которая будет отдавать присоединившемуся клиенту ну… скажем текущую дату и время на сервере.

Читать полностью »

DMMR: управление по радиоканалу через USB «свисток»

Позавчерашняя публикация анонса этого поста в нашем сообществе ВКонтакте вызвала неожиданно бурную реакцию. За прошедшее время мы успели собрать несколько новых радиомодулей, несколько диммеров, несколько USB- и PROG-адаптеров и запрограммировать их. Произведено предварительное тестирование диммеров, установленных в реальных стенах (пока без реализации протокола ZigBee). В однокомнатной квартире-студии и в двухэтажном коттедже из пенополистерол-бетонных блоков (междуэтажные перекрытия — дерево). Всё более чем работоспособно. Даже с простыми печатными антеннами с обоих сторон. Подробности + видео с участием неприбранного рабочего стола — внутри.
Читать полностью »

Анонсированный накануне выставки CES 2014 моноблочный компьютер Acer DA223HQL, работающий под управлением ОС Android, поступил в розничную продажу в Европе. В Старом Свете изделие оценено в 500 евро.

Acer DA223HQL

Acer DA223HQL наделен дисплеем типа VA диагональю 21,5 дюйма разрешением Full HD. Динамическая контрастность равна 100 млн к одному, яркость — 250 кд/кв.м, а время реакции пикселя составляет 8 мс.

Читать полностью »

Ещё в первой половине года стало известно, что IBM намеревается продать часть своего серверного бизнеса. Новые данные касательно этого вопроса публиковались нами в последних числах прошлого года. В качестве потенциального покупателя, напомним, выступает Lenovo, но за прошлый год двум гигантам так и не удалось договориться. По мнению некоторых источников, компании просто не могут сойтись в цене. Якобы IBM рассчитывает выручить с продажи порядка 4-6 млрд долларов, тогда как Lenovo готова заплатить лишь 2,5 млрд.

Читать полностью »

Вероятно многие встречались с таким вот «партизаном» при старте или завершении приложения:

Здравствуйте, я ошибка 217 и я вам ничего не скажу

Очень информативное сообщение, сразу понятна причина ошибки, место и способ ее решения :)
Впрочем, если без шуток, что это вообще такое?
Конечно-же это исключение, но ни тип исключения, ни его описание нам не доступны — просто «Runtime error 217» и адрес, а дальше сами…

Если честно, раньше я как-то даже не задумывался по поводу данного исключения, т.к. в моих проектах оно явление редкое, пока однажды у целой череды пользователей не начала воспроизводится именно 217-я ошибка.
Впрочем, даже тогда я не пошел по правильному пути и просто добавил дополнительный уровень логирования в проект, по результатам которого достаточно оперативно нашел причину и исправил ее.
Но, по сути, я просто потратил свое время…

И тратил бы его в дальнейшем, если бы на днях со мной не связался Виктор Федоренков и не рассказал о своих мыслях по поводу ошибки за номером 217.

Читать полностью »

Компания Backblaze опубликовала в своём блоге статистику использования дисковых накопителей в своих серверах. Backblaze предоставляет услугу дешёвого облачного бэкапа. В основе их инфраструктуры — жёсткие диски потребительского класса. За четыре года работы компания собрала порядочную статистику по отказоустойчивости разных типов дисков, использовавшихся в их хранилище. Парк накопителей Backblaze состоит в основном из дисков Seagate и Hitachi — почти по 13 тысяч. Ещё 2838 дисков — производства Western Digital, и по несколько десятков накопителей Samsung и Toshiba. Таким образом, данные Backblaze позволяют сравнить работу дисков потребительского уровня трёх производителей — Seagate, WD и Hitachi — в условиях датацентра.

image
Читать полностью »

По данным тайваньских источников в цепи поставок комплектующих, ниша 7-дюймовых планшетов больше не интересна Google — компания постарается сфокусироваться на 8-дюймовых устройствах. Причина такого решения банальна: обострившаяся конкуренция в сегменте 7-дюймовых планшетов.

На смену Google Nexus 7 придет модель Nexus 8

Читать полностью »

image
В языке perl существует несколько операторов, которые состоят только из точек. Сколько таких операторов вы можете назвать?
Читать полностью »

Компания Stealth.com пополнила свой ассортимент безвентиляторным мини-ПК LPC-630F. В небольшом алюминиевом корпусе габаритами 200 х 200 х 65 мм разместилась платформа Intel с процессором Core i7-3520M. Данный, далеко не самый новый CPU, располагает парой ядер с частотой 2,9 ГГц и характеризуется уровнем TDP 35 Вт.

Stealth.com LPC-630F

Читать полностью »