суббота, 19 октября 2013 г.

Сяоми головного мозга

В последнее время вокруг аппаратов компании Xiaomi творится что-то невообразимое. Я имею в виду не Китай, где Mi2s стал самым продаваемым смартфоном (передавайте привет компаниям Apple и Samsung с их флагманами), а Россию, где эмоции на различных ресурсах просто зашкаливают. С одной стороны воюют ярые фанаты, практически такие же, как у Apple, с другой - врачи, дистанционно устанавливающие диагноз "У вас Сяоми головного мозга". Я попытаюсь разобрать ситуацию здраво и взвешенно, без скатывания в какую-либо сторону.

Самый лучший смартфон?

Итак, является ли Xiaomi Mi2s самым лучшим смартфоном на сегодняшний день? Ответ однозначный: нет. Эпплофилы, Сонибои и прочие фанаты Самсунгов могут спокойно выдохнуть и закрыть эту страницу. А с остальными мы продолжим.

А если Mi2s - не лучший, то кто тогда лучший? А нет такого. Любой современный смартфон сочетает в себе огромное число характеристик. И какие-то из них более важны, а какие-то менее. Но для разных людей и набор важных характеристик будет разным. Вот в чем парадокс. Поэтому я могу только рассмотреть все эти характеристики, а что важнее - каждый решит уже для себя.

Размер имеет значение

Mi2s играет в форм-факторе 4,3", где нет практически ни одного топового устройства (вот только недавно в Японии появился Sony Z1 f, впрочем, к нему мы еще вернемся). Samsung, HTC, Oppo делают максимально крутые устройства только начиная от 5", а в более маленьких - экономят, и экономят весьма существенно. Это может быть экран, процессор, объем памяти или что-то еще. Единственный, кто также не сэкономил в свое время - это Meizu MX2, но он все же на 3 мм шире, а здесь каждый миллиметр может иметь критическое значение для удобного хвата одной рукой. Впрочем, как раз с хватом у Mi2s явные проблемы. Несмотря на почти идеальные 62 мм ширины, корпус имеет не самые удачные скосы (по крайней мере, со штатной крышкой). И держать аппарат в руке гораздо менее удобно, чем SGS4 Mini или HTC One Mini.

Дизайн и корпус

Дизайн у Mi2s довольно невыразительный. Скажем так: на уровне Samsung. Штатная комплектация "черная панель, белая крышка" смотрится даже чуть интереснее белых самсунгов. Но большим плюсом аппарата является огромный выбор сменных крышек. Можно сделать закос под iPhone 4 или 5. Или выбрать индивидуальный дизайн - так, чтобы телефон был не похож ни на какой другой и сразу привлекал внимание.

В предыдущем посте я уже писал про то, что у сенсорных кнопок на лицевой панели нет подсветки. Это не очень удобно в темноте. Хотя, безусловно, приноровиться и не путаться потом не составляет никакого труда.

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

Экран

Экран при диагонали 4,3" имеет разрешение 720х1280, что дает 342 ppi (для тех, кто вдруг забыл, Retina в iPhone - это 326 ppi). Производителем матрицы может быть как Japan Displays, так и Sharp. Говорят, что экраны от Sharp заметно лучше при прямом сравнении (я сам не сравнивал, так что собственным опытом поделиться не могу). Но в любом случае, если не сравнивать экран ни с кем в лоб, вы не заметите у него никаких недостатков. В отличие от SGS4 Mini и Sony Z/Z1/Z1 f. Да, я в курсе, что настоящие фанаты этих производителей не видят там недостатков и готовы с пеной у рта доказывать, что низкое разрешение или плохие углы обзора - это даже плюс, но давайте будем честны: если вы предъявляете максимальные требования к экрану, то вам придется выбирать между Xiaomi Mi2s, Meizu MX2, HTC One Mini или же переходить к устройствам с большей диагональю.

Экран прикрыт минеральным стеклом Asahi DragonTrail, которое неплохо противостоит металлу, но отлично царапается песочком. Да и без явного песочка могут появляться мелкие царапки, которые видны при выключенном экране. Впрочем, это очень сильно зависит от условий эксплуатации. Мне приходилось видеть телефоны с Gorilla Glass 2, которые держали аккуратно в кармане женской сумочки, но это не мешало им за 3-4 месяца покрываться целой сетью царапок. Возможно, у Gorilla Glass 3 с этим лучше, не знаю. Но в любом случае, если боитесь царапок, придется клеить на экран защитную пленку.

Камера

В Mi2 и Mi2s 16 Gb установлен модуль камеры Sony Exmor R f/2.0 8Mpix, в Mi2s 32 Gb - Sony Exmor RS f/2.2 13Mpix (точно такой же как в SGS4 или Sony Z). Хорошие ли получаются снимки? На мой взгляд - да. Дневные кадры немного проигрывают по детализации SGS4 (я в курсе, что люди, которые не любят SGS4 и пользуются им через силу, делают на нем совершенно невыразительные снимки, но это же не показатель). Кадры в сумерках оказываются несколько хуже, чем у HTC с его ультрапикселем. Но если ваша основная цель Instagram - то достаточно будет просто сказать, что камера Mi2s превосходит камеру любого iPhone до 5 включительно (с 5s не сравнивал, так что за него не скажу). Впрочем, можете составить мнение о камере самостоятельно: начните отсюда (Mi2s) или отсюда (Mi2). Если камера критична - вам придется забыть про SGS4 Mini. HTC One Mini, Meizu MX2 или Sony Z1 f - надо смотреть, я видел слишком мало снимков с них, чтобы сделать какие-то окончательные выводы.

Аппаратная платформа

Qualcomm Snapdragon 600, 4-quad, Adreno 320 GPU, 2 Gb RAM. Этим все сказано, 28к баллов в AnTuTu. Ну вот теперь точно все сказано. Круче только Sony Z1 f (Snapdragon 800, Adreno 330). Все остальные конкуренты заметно слабее. В теории Meizu MX2 проигрывает не катастрофически, но его платформа от Samsung закроет вам дорогу в мир OpenGL ES 3.0 даже после обновления на Android 4.3.

По личным впечатлениям могу сказать, что Asphalt 8 не тормозит на максимальных настройках. В Real Racing 3 - тоже все хорошо.

Программная платформа

Здесь все неоднозначно. С одной стороны Xiaomi пока запаздывает с обновлением Android. В Mi2s - всего лишь 4.1, а не 4.3 или хотя бы 4.2 (как в Hongmi aka Red Rice). Это значит, что OpenGL ES 3.0 пока нет. С другой стороны поверх Android бежит MIUI - одна из лучших оболочек. Про нее можно долго рассказывать, но лучше попробовать самому (тем более, что MIUI бывает для многих смартфонов). Смотреть надо все: встроенные приложения (возможность фокуса + спуска по тапу в камере просто прекрасна), темы, прочие возможности (ограничения разрешений приложений "из коробки").

Цена и покупка

А вот здесь переходим к самому грустному. Если вы проживаете на территории Китая, то у вас все будет в шоколаде: невероятно низкая цена с доставкой вам домой или в офис и никаких проблем с гарантией. В России, конечно, же все намного печальнее. Xiaomi не осуществляет доставку в Россию, а значит, вам придется покупать у перекупщиков, что вносит свои коррективы:
  • цена будет выше (сейчас это - от $360);
  • вам нужно будет искать гарантировано хорошего перекупщика, чтобы не получить (sic!) китайскую подделку китайского телефона;
  • иногда случаются странные проблемы, когда таможня разворачивает посылки, в которых есть аккумуляторы;
  • гарантия может являться только доброй волей перекупщика, а при ее выполнении вам придется пару месяцев сидеть без телефона;
  • отсутствие РСТ означает, что вам придется вручную прошивать на телефоне русский язык (а также, вручную ставить Google Play); с одной стороны это очень легко, а с другой - это то, что у РСТ-конкурентов делать точно не надо.

Так стоит ли овчинка выделки?

Это все очень индивидуально. Есть люди, которым я однозначно советую покупать только Xiaomi Mi2s, а есть те, кому категорически не рекомендую этого делать (и предлагаю покрутить в руках Meizu MX2, HTC One Mini, SGS4 Mini - все РСТ, и выбрать что-нибудь из них).

среда, 7 августа 2013 г.

Xiaomi Mi2s

Почему именно он

Я давно наблюдаю за темой топовых китайских смартфонов и не устаю поражаться сочетанием их цены и функциональности. По этому показателю они оставляют далеко позади всех конкурентов. Правда с началом продаж в России цены взлетают высоко вверх (что можно наблюдать по Meizu MX2 и Oppo Find 5), но возможность заказать телефон из Китая по более привлекательной цене всегда остается.

Xiaomi меня привлек тем, что за небольшие деньги дает мощную начинку в компактном размере. Полгода изучения форума привели к выводу, что серьезного уровня брака нет, а значит, аппарат можно брать.

Итак, что мы имеем

Внешность

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

Экран прикрыт "стеклом" Asahi Dragontrail (ходят слухи, что это аналог Corning Gorilla Glass, но нормального сравнения их я не видел). В теории стекло очень стойкое и его невозможно поцарапать ключами или ножиком, но песочком царапается "на ура".

Из коробки аппарат идет только с белой крышкой, но есть много разных официальных цветных: глянцевые, матовые, металлик, "кожа крокодила" и неофициальных (например, под iPhone 5).

В руке аппарат лежит неплохо, чуть хуже, чем SGS4 Mini (чувствуется разница в скосе углов), но им все еще можно комфортно управлять одной рукой (ширина в 62 мм - всего на 3 мм больше, чем у iPhone - решает).

Начинка

Внутри стоит один из самых мощных чипов на сегодняшний день: Qualcomm Snapdragon 600: 4 ядра CPU APQ8064T (Krait) 1.7 ГГц и 4 ядра GPU (Adreno 320). Что это значит:
  • На текущий день нет ни одного приложения или игры, которые могли бы на нем тормозить (не тормозя при этом на чем-то другом);
  • Процессор настолько быстрый, что даже в режиме энергосбережения интерфейс летает (нетипично для андроида, правда?);
  • Если будете долго играть во что-то серьезное (не обеспечив вентиляцию), то можно получить серьезный нагрев и перегрев (вплоть до повреждения экрана).
На предыдущей модели -  Mi2 (без "s") установлен процессор чуть попроще - APQ8064 1.5 ГГц.

С радиочастью не все гладко. Во-первых, отсутствует WCDMA 900, а значит, в некоторых местах в России телефон будет выпадать из 3G в EDGE. А, во-вторых, антенны распложены в нижней части устройства. И там, где сигнал сети не очень сильный, он становится еще слабее. Иногда можно перевернуть аппарат, но, например, разговаривать так можно разве что по громкой связи или гарнитуре.

Экран в телефоне - производства Sharp, 4.3" 720x1280, 342 ppi. Естественно, IPS. Сколько я не приглядывался, отдельных пикселей заметить не смог. Под микроскопом, естественно, разница с 441 ppi (5" Full HD) будет очень значительная. Есть автоматическая регулировка яркости. В режиме энергосбережения экран немного тускнеет.

Говорят, что экран Mi2/Mi2s проигрывает экрану Meizu MX2. Не знаю, одновременно я их в руках не держал, только по очереди с большой разницей во времени. Но, например, на фоне Oppo Find 5 Xiaomi не теряется.

Камера здесь стоит довольно хорошая: в Mi2 и Mi2s 16Gb - Sony Exmor R f/2.0 8 Mpix, в Mi2S 32Gb - Sony Exmor RS f/2.2 13 Mpix (такая же, как в SGS 4 и, по слухам, iPhone 5s). Но софт для обработки снимков вылизан не так хорошо, как у Samsung. Поэтому фоточки получаются не великолепные, а просто очень хорошие. Есть HDR, который иногда позволяет получить кадры, невозможные для обычной камеры. При съемке видео так же есть HDR и есть замедленная съемка.

Управление камерой довольно удобное. Можно спускать затвор клавишами громкости (обеими). Можно фокусироваться на объекте и сразу делать снимок одним тапом по экрану (если успеете сделать тап быстрее, чем сработает автофокус, то снимок не сделается, вместо этого будет сделан focus lock на несколько секунд). Также есть следящий автофокус, распознавание лиц/улыбок и прочие современные фишки/плюшки.

На 13 Mpix камере фоточки получаются очень большими (6-6,5 Мб JPEG).

Примеры фоток можно посмотреть здесь (папка в dropbox).

Комплектная батарейка имеет емкость 2000 MAh. Несколько дней она входит в рабочий режим, потом начинает работать очень хорошо. Если устраивает режим энергосбережения, то батарейки точно будет хватать на световой день. Например, у меня сейчас осталось 49% (с зарядки снял утром). При том, что ходит куча уведомлений (твиттер, почта, RSS). Если много фоткать, да еще и в HDR, то, конечно же, заряжать придется 2 раза в сутки.

Также можно купить батарейку на 3000 MAh, но к ней идет другая крышка (аппарат становится толще) и выглядит уже не так красиво.

MIUI

Одним из главных достоинств аппарата является его оболочка над Android - MIUI: быстрая (говорят, что на других аппаратах она тормозит, но здесь я не заметил тормозов), сильно настраиваемая и очень удобная. Когда очередной яблодрочер начнет говорить вам, что интерфейс Android - корявый, нелогичный и непонятный, просто спросите его, видел ли он MIUI. Как правило, оказывается, что не видел. А, между тем, Xiaomi делает гораздо более привлекательный интерфейс, чем Google или (не к ночи будь помянут) Samsung. Если вы никогда не сталкивались с MIUI, прочтите для начала парочку обзоров. Хотя бы этот или тот.

Прошивка

Поскольку, аппарат официально продается только в Китае, что из коробки в нем установлены только английский и китайский языки. Но перепрошивка в русский достаточно проста. Скачиваете 1 архив (я взял miui.su), кладете его в корень под именем update.zip и перезагружаетесь в режиме Recovery (громкость вверх + питание). После этого говорите "перепрошить из update.zip" и voila - все готово. После этого прошивка от miui.su может сама находить обновления.

И что в итоге?

Стоит ли аппарат своих денег (да еще и с учетом того, что покупать придется не у производителя, а у перекупщиков)? Mi2, цена на который снижена с выходом Mi2s - стоит однозначно. Mi2s 32Gb - уже заставляет призадуматься, поскольку его цена приближается к Meizu MX2 РСТ и Oppo Find 5 (да, это уже лопата, но Full HD - это Full HD). Но если вас не пугают минусы аппарата, то брать, на мой взгляд, стоит.

Update: где и за сколько купить

Лучше всего вкурить соответствующую тему на 4pda. Ленивым можно сразу сходить на http://fulcrumall.com или http://hotmid.com. В зависимости от модели (Mi2 или Mi2s) и объема памяти, а также наличия или отсутствия акций и купонов, цена может быть в диапазоне $250-450.

четверг, 27 июня 2013 г.

Oppo Find 5

На работе для тестирования разрабатываемых приложений на разрешении XXHDPI купили смартфон Oppo Find 5 (Full HD на 5"). И вот какие у меня о нем впечатления.

Для пользователя

Первое, что бросается в глаза -- это, конечно же, экран. Большой, красочный. И очень четкий. Точки здесь не разглядеть даже под лупой, не говоря уже про невооруженный глаз. Смотреть видео или играть в игры (благо 4 ядра Snapdragon S4 Pro позволяют это делать без проблем) -- одно удовольствие.

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

Камера вроде бы неплоха, но толком я ее не тестировал.

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

Для разработчика

Из коробки аппарат не определяется ADB, а значит отладка (и даже простой запуск приложений прямо из IDE) на нем не работают. Тем странным людям, которые ведут разработку под Andoroid из Windows, придется сначала скачать и установить драйвера с сайта Oppo, а потом настраивать. Под Linux достаточно одной настройки:

Сначала создаем (редактируем, если был) файл /etc/udev/rules.d/51-android.rules, записывая в него строку:
SUBSYSTEM=="usb", ATTR{idVendor}=="22d9", MODE="0666", GROUP="plugdev"
Не забываем сделать файл доступным на исполнение.

После этого открываем файл ~/.android/adb_usb.ini и дописываем в него строку
0x22D9
Это, как несложно догадаться, VendorID для Oppo.

Сам телефон необходимо при подключении по USB устанавливать в режим MTP. Все, отладка из IDE работает!

среда, 24 апреля 2013 г.

А есть ли кризис ИТ-кадров в Ижевске?


Помнится, Олег Вылегжанин любит повторять, что в Ижевске настал кризис ИТ-кадров. Но так ли это на самом деле? Для компаний уровня ЦВТ или, скажем, НПО "Компьютер" - вполне возможно. А вот для менее крутых крупных компаний это зачастую не так. Или так, но они тщательно скрывают это от кандидатов на работу :-)

Так в чем же выражается отсутствие кризиса кадров в ИТ? Прежде всего в том, что компаниям не нужны специалисты. Это звучит странно, но это действительно так. Очень многие компании не хотят брать на работу даже мидлов, не говоря уже про сеньоров. Они готовы брать джуниоров. Или не брать никого, если вдруг джуниор не найдется. Рассмотрим эту ситуацию на паре примеров.

Пример первый и достаточно нетипичный - я. В 2012 году я стал серьезно подумывать о том, чтобы сделать свое хобби основной работой (переквалифицироваться из десктоп-разработчика в мобильного). К тому времени у меня уже был некоторый опыт разработки под Java (ME) и плюс я прокачивал свои скиллы в разработке под Android. Поскольку компания, где я тогда работал, не хотела заниматься разработкой мобильных приложений (предпочитая отдавать все на аутсорсинг или даже партнерам), то оставалось только искать другого работодателя. Поскольку я не был супервыгодным кандидатом (общие технологии разработки у меня, конечно, были прокачены довольно круто, но конкретно в Android я тянул только на джуниора), то начал я довольно осторожно - не с рассылки резюме, а с вопросов: какого уровня кандидаты вообще нужны. Результаты были довольно обескураживающие. Некоторые компании вообще не отвечали на вопросы (как так можно, я, честно говоря, до сих пор не представляю), некоторые открыто заявляли:"Нам нужен джуниор, если вы хотя бы мидл, то пообщаться можно, но все равно мы вам можем предоставить условия только как джуниору". Особенно странно это было слышать от тех компаний, где нет сильной команды способной быстро подтянуть джуниора до своего уровня. А может, я просто чего-то не понимаю в найме людей и теория, что лучше взять готового специалиста, который сможет писать продукт (и писать качественно) с первого рабочего дня, уже безнадежно устарела?

В 2013 я все-таки стал искать работу более активно. Но общение с компаниями только подтверждало выводы от предыдущих наблюдений.

Первая компания сказала: "Мы вас совсем не знаем, поэтому можем считать вас только джуниором и предоставить соответствующие условия". Мне до сих пор интересно, какое слово из моего резюме им неизвестно? Или им неизвестен уровень ПО, которое я разрабатывал (проектировал, руководил разработкой и т.д.)? Если так, то тут помочь я им не могу, оценивать уровень ПО, производимого компанией №1 в регионе, надо все таки уметь самостоятельно.

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

Третья компания извинилась, что дезинформировала меня насчет вакансии и предложила другую работу. Мне ничего не оставалось, кроме как отказаться.

В конце концов я нашел место, где меня смогли оценить и предложить то, что мен было надо, но, сдается, что я попал скорее на исключение, чем на правило.

Второй случай произошел совсем недавно. Я пытался устроить одного своего знакомого, который (в отличие от меня) является сеньором безо всяких скидок и поправок. Причем устроить я его пытался на вакансию, которая максимально точно соответствовала его специализации. Ответ компании (а я общался тоже с хорошо знакомым мне человеком) меня совершенно убил: "Нам надо несколько джуниоров на смешную зарплату". Все, точка. И люди даже не хотят общаться на предмет того, что специалист на текущем месте легко выполняет объем работы за 3-4 джуниоров. Или что у него все скиллы прокачаны больше, чем у текущей команды вместе взятой. Просто не надо и все, хоть головой об стену убейся.

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

PS. Комментировать можно не только здесь, но и на ИжАйТи.

суббота, 20 апреля 2013 г.

Android: пишем свои стили для ActionBarSherlock и HoloEverywhere

Использовать все время стандартные стили скучно. Да это и может не отвечать требованиям к дизайну конкретного приложения. Поэтому рано или поздно захочется сделать свои стили (темы). Для того, чтобы сэкономить некоторое время, расскажу о самых заметных граблях.

Генератор стилей

Конечно же, начинать работу со стилями луче не с нуля, а с использования генератора стилей. И тут нас поджидает засада №1: генератор не может отдать пакет, который будет работать одновременно и в Android 2.* + ABS + HE, и в Android 4.*. Связано это с тем, что стили он именует либо в новой нотации ("android:actionBarStyle"), либо в старой ("actionBarStyle"), но не одновременно. Поэтому придется дописывать блок с именами стилей вручную. Ну и не забудьте, конечно, указать теме правильного родителя (например, Holo.Theme.Light.DarkActionBar).

Применение стилей

Дальше мы начинаем применять стили и... HoloEverywhere тупо вылетает на том, что это не его стандартный стиль. Что же делать? Иногда помогает переименование своего стиля в "AppTheme", но если серьезно доработать стиль (чтобы применять его для элементов HE, а не только ABS), то и это не помогает. На помощь приходит решение, подсмотренное на (сюрприз! сюрприз!) Stack Overflow: в design-time выставляем стандартную тему, а первой строкой onCreate(), даже до вызова super пишем:
setTheme(R.style.AppTheme);
И voila, как говорят французы. Все работает!

вторник, 16 апреля 2013 г.

Android: настоящий wrap_content по ширине для ListView

По умолчанию список (ListView) в Android растягивается на всю ширину контейнера. Иногда это бывает не слишком удобно и хочется сделать так, чтобы он занимал ширину строго по содержимому. Как же быть?

Начинающий разработчик воскликнет: "Элементарно! Выставим для ширины значение "wrap_content" и все станет шоколадно!" Я сегодня сказал так же. И даже сделал. Но ничего не сработало.

Как обычно ответ нашелся на stack overflow. Самый популярный ответ говорил, что ничего сделать нельзя. Ведь элементов списка может быть несколько миллионов и на вычисление ширины может уйти несколько часов. Но если промотать ветку до конца, то там обнаружится вполне себе рабочее решение, которое отлично работает для небольшого списка. Единственное, что мне там не понравилось - так это не очень удобные параметры для вызова извне. Поэтому я доработал код до обертки, которую удобно вызывать:
public class ViewUtils {
    private static int getWidestView(Context context, Adapter adapter) {
        int maxWidth = 0;
        View view = null;
        FrameLayout fakeParent = new FrameLayout(context);
        for (int i = 0, count = adapter.getCount(); i < count; i++) {
            view = adapter.getView(i, view, fakeParent);
            view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
            int width = view.getMeasuredWidth();
            if (width > maxWidth) {
                maxWidth = width;
            }
        }
        return maxWidth;
    }

    public static void setListViewWidthByContent(ListView listView) {
        listView.getLayoutParams().width = (int) (getWidestView(listView.getContext(),
                listView.getAdapter()) * 1.05);
    }
}

суббота, 6 апреля 2013 г.

Как мы не стали чемпионами


6 апреля состоялся первый открытый чемпионат Ижевска по игре "Что? Где? Когда?".

Когда я в первый раз прочитал анонс турнира, то мне захотелось тряхнуть стариной и собрать старый добрый сильный состав команды "НПО Компьютер". Сказано -- сделано. Удалось собрать почти что самый первый состав команды (с которым мы играли на первом этапе Кубка Мира в 2003 году): Анна Тернавская, Артем Старыгин, Василий Бабинцев, Константин Чермак, Андрей Подкин и, капитан команды, Рафаэль Гиззатуллин.

Организация турнира была на высоте. Место проведения: Театр оперы и балета. Спонсор: Ростелеком. Собственно проведение: Ижевский клуб "Что? Где? Когда". К слову сказать, на этом мероприятии раздавала свои визитки конкурирующая организация, клуб "60 секунд", проводящий игры в гриль-баре BBQ.

Честно говоря, я, да и другие игроки команды, как выяснилось, ожидали увидеть небольшую тусовку "для своих", но мероприятие оказалось довольно масштабным, играло около 60 команд. Среди них были и те, кого мы видели еще в 2003, когда большое интеллектуальное движение в Ижевске еще только зарождалось, и новички, пришедшие играть по сути первый раз.

После получения бланков немного удивила вопросная дистанция -- всего 24 вопроса. Мы, конечно, не ждали 75 или даже 90 вопросов, как бывает на иных турнирах, но все же для чемпионата (или более правильно -- кубка) города логично ждать хотя бы 36 вопросов.

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

Первый и второй вопросы игры оказались до того легкими, что слегка расслабили нас. И уже третий прилетел как щелчок по носу -- первый минус. Снова собрались, спокойно взяли 4 подряд вопроса и ... обидно слили восьмой, хотя все, что нужно для его взятия, было на столе. Потом, видимо, по инерции слили еще один, но все таки дожали тур до конца с результатом 9 из 12.

После объявления итогов оказалось, что впереди нас 8 команд, причем лидеры опережают нас на 2 очка (они взяли 11 из 12). Неприятно, но не смертельно.

Поняв, что отступать уже некуда, второй тур мы заиграли так, чтобы не было мучительно больно за бесцельно прожитые годы показать свои притязания на высокие места. Итог: абсолютно лучший результат второго тура: 11 из 12.

Лидеры же -- напротив, несколько сдали и после 24 вопросов мы делили места с 1 по 4. А это значит, что началась перестрелка из 3 вопросов.

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

Второй вопрос мы взяли довольно уверенно, а одна из команд на нем отсеялась. Следовательно, мы уже призеры. Оставалось только выяснить, какие именно.

Третий вопрос перестрелки мы слили, имея правильную версию на столе. Впрочем, как оказалось позже, это ни на что не повлияло бы. При равенстве баллов места между командами распределялись согласно рейтинга взятых ими вопросов (у вопроса тем больше рейтинг, чем меньше команд его взяло). Мы по такому показателю оказались на чистом втором месте, пропустив вперед только команду "Habemus Papam".

В качестве приза мы получили по "электронной книге" (по сути это мини-планшет с резистивным экраном) Ritmix на каждого игрока, одну грамоту и один сертификат на бесплатную игру в Dozor.

И если выходя из дома, я нацеливался исключительно на 1 место, считая любой другой результат поражением, то сейчас я, в принципе доволен. Мы заняли призовое место в серьезной борьбе, проявив характер и ворвавшись в лидеры когда, казалось, нам уже ничего светило.

воскресенье, 24 марта 2013 г.

Заметки о рутовании

Рутанул свой LG Optimus One. Если кто-то будет делать то же самое, вот несколько полезных вещей:
  • для того, чтобы обновить бинарник su (из приложения superuser) необходимо перемонтировать файловую корневую систему в r/w (например, можно это сделать в ES Explorer);
  • один из безболезненных методов расчистки места: найти данные (/data/data) и кеши (/data/dalvik-cache) от уже удаленных приложений и удалить их;
  • еще один безболезненный способ расчистки места: удалить встроенное приложение, поставить его из Google Play и снова сделать системным (эффект тем больше, чем больше занимали обновления приложения);
  • покупка ключа к Titanium Backup заставляет его работать быстрее на несколько порядков;
  • при удалении системных приложений не забывайте постоянно перезагружаться и устанавливать отладку по USB.

пятница, 15 марта 2013 г.

Использование bit.ly в Android

В какой-то момент разработки #TweetLink я подумывал об использовании в нем сокращения ссылок от bit.ly. В конце концов передумал (смысла в этом мало: все равно все ссылки принудительно будут обработаны t.co, разве что кто-то будет сильно извращаться с нестандартными протоколами и отправлять не в твиттер).

Но наработки остались и потому могу рассказать по шагам, как это делается:
  1. Для начала надо пойти на https://bitly.com/ (можно написать и http://bit.ly - будет редирект) и зарегистрироваться там. Регистрироваться лучше, понятное дело, на специальный аккаунт приложения.
  2. После этого надо узнать свои Username и API Key. Сделать это можно здесь.
  3. Собственно для отправки берем готовый код BitlyAndroid отсюда.
  4. Использование класса - простейшее: создаем экземпляр с указанием Username и API Key и вызываем метод укорачивания ссылки.
  5. Ну и не забываем дать приложению Internet в uses-permission (если ранее этого еще не было сделано).
Вот как-то так.

четверг, 14 марта 2013 г.

Tweet Link - удобный способ публиковать новости в твиттер

Готовя подборки новостей для твиттера @DelphiKingdom, я столкнулся с некоторым неудобством публикации. С одной стороны хочется затвитить не только заголовок новости и ссылку на нее, но и некоторый анонс. С другой стороны, не только анонс, но и заголовок иногда бывает настолько длинным, что (в совокупности со ссылкой) превышает размер твита. Сначала я укорачивал тексты новостей вручную, но потом мне это надоело и захотелось автоматизировать процесс. Так родилась идея приложения Tweet Link.

Для начала надо сказать, чем Tweet Link не является. Это не еще один клиент твиттера. Это всего лишь средство для удобной публикации новостей.

Какие у него есть сценарии работы:
  1. Постинг в официальный клиент твиттера. Тогда Tweet Link работает всего лишь как укорачиватель анонсов.
  2. Постинг в веб-клиент. Это уже новая функциональность системы (отправка в твиттер через мобильный сайт).
  3. Постинг в какой-то другой сервис при помощи дополнительной настройки. На случай если захочется почесать левое ухо правой пяткой чего-то странного необычного.
Несмотря на то, что даже в названии обозначена заточенность приложения под постинг ссылок, можно с его помощью твитить и простой текст. Он тоже будет корректно укорачиваться.

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


понедельник, 28 января 2013 г.

День Android на IzhDevCom. Впечатления организатора

Вот и прошла первая из серии мобильных встреч Izhevsk Developer Community. Хочу рассказать об этом "с той стороны баррикад", поскольку я был одним из докладчиков и организаторов мероприятия.

Подготовка

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

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

Организация мероприятия

За общую организацию отвечали те же, кто и всегда: Дмитрий Плотников, Кирилл Иванов и Егор Коновалов. Все было, как обычно, на высоте. Участники получили блокноты-ручки, призы от докладчиков за внимательность и были обеспечены неплохим Wi-Fi-интернетом (которого хватило почти до конца хакатона).

Зал, кстати, был заполнен почти до отказа, что на моей памяти случилось первый раз (я не был на встречах по Node.js и Ruby, но подозреваю, что и там приходило меньше народу).

Доклады

Первый доклад (Основы разработки под Android) читал я и собственно поэтому объективно оценить его я не могу. Субъективно, там был один fail: когда у меня не получилось вовремя создать приложение "Hello World" и продемонстрировать на нем необходимость применения ActionBarSherlock. Правда по ходу я исправился и во время секции вопросов-ответов показал-таки злополучный пример.

Вывод: а вод нефиг делать частичное обновление Android SDK непосредственно перед докладом. Лучше вообще ничего не обновлять.

Доклад Сергея про тестирование тоже не обошелся без недоработок: по ходу достаточно длительного запуска автотестов народ откровенно скучал. Вообще, доклад как-то не очень хорошо попал "в струю". Тестировщиков на мероприятии практически не было, а те из разработчиков, кто был, как-то не очень интересовались этой темой (подозреваю, что они делились на две группы: либо не доросли, либо уже все знали). Лично мне тема была очень интересна, но я-то уже это все видел...

Доклад Тимура (Mono for Android) был, безусловно, самым хипстерским: рассказывать про разработку под Android, показывая презентацию с iPad, а управляя ей с iPhone - это сильно :-)

Тематика доклада оказалась очень близка участникам мероприятия. Все же, у нас как раз наиболее сильна тусовка .NET-разработчиков.

Хакатон

Несмотря на то, что на хакатон осталось довольно мало народу, прошел он вполне интересно. Было и много драйва (например, от ребят из Nosorog Studio), было и законченное приложение, разработанное полностью "с нуля" (от Михаила Губанова и Евгения Клементьева).

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

Выводы

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