...

суббота, 19 июля 2014 г.

COOLRF: дайджест новостей проекта #2


Летом мы стали гораздо реже публиковаться на Хабре. Точнее сказать, перестали публиковаться вовсе. Начались сады-огороды, увеличилась нагрузка на основной работе. Наше сообщество ВКонтакте, собравшее уже более 2700 участников, стало вполне подходить для публикации коротких заметок о ходе проекта, чем мы и пользовались всё это время.


Что же произошло за два месяца «молчания»? В сегодняшнем «выпуске»: презентация проекта, два новых модуля системы (термостат NB1 и датчик протечки WS1), облачный компилятор для NRF24LE1 и интерфейс управления умным домом.



COOLRF: «Умный дом» для находчивых




Мы изменили слоган. Синонимы слова «находчивый» — догадливый, дальновидный, изворотливый, изобретательный, ловкий, понятливый, прозорливый, проницательный, расчетливый, сметливый, смышленый, сообразительный. В общем — как раз Вы, наш дорогой читатель.

JetStyle нарисовал нам новый логотип, уже оцененный участниками нашего ВКонтакт-сообщества «о, ну этот гораздо лучше».


Написана презентация, целью которой является краткий рассказ о сути нашего проекта. Для тех, кому «вроде интересно, но не всё понятно». Надеемся, что презентация расставляет все точки над «i». Если нет — welcome в личку и комменты с предложениями по доработке и нераскрытыми вопросами.



Термостат NB1




Наш термостат устанавливается в широко распространенные электрические конвекторы NOBO. Без какой-либо доработки последних. Позволяет удаленно управлять конвектором. Делает доступными такие сценарии работы, как «включил тепло на даче перед выездом из города, приехал зимой в уже теплый дачный дом» или «днем греем воздух до 25 градусов, а ночью — до 15» и т.д. Содержит «на борту» локальные органы управления, позволяющие изменять целевую температуру. Поддерживает функцию обратной связи. В любой момент можно узнать текущее состояние конвектора и температуру его датчиков.

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


Можно будет купить как полностью в сборе, так и в виде конструктора. Состав конструктора (заглавное фото поста): печатная плата, три детали корпуса, три ножевых контакта (не распаянных), необходимый крепеж. Работа над термостатом близится к завершению. Доводим до совершенства исполнение ножевых контактов и деталей корпуса. Программная часть прошивки написана и работоспособна.



Датчик протечки WS1




Размещается в местах вероятных протечек: под ванной, за бачком унитаза, под кухонной раковиной. Питается от батареи CR2032. Расчетное время работы от батареи порядка 2-3 лет. При снижении заряда ниже сигнального уровня сообщает центральному устройству о необходимости замены батарей. Спроектирован под готовый корпус, ставится, опираясь на два выступающих вывода в нижней части.


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



Облачный компилятор для NRF24LE1




Одна из причин великой популярности Arduino — удобная и простая среда разработки. Скачиваешь установочный пакет, ставишь и программируешь. Не надо ничего настраивать, подключать сторонние библиотеки, разбираться в сложном интерфейсе. Цель проекта COOLRF не только в создании интересных аппаратных решений. Мы хотим, чтобы программировать наши модули было не сложнее, чем программировать Arduino.

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



Интерфейс управления умным домом COOLRF.ATHOME




Центральное устройство умного дома COOLRF — компьютер, подключенный к домашней радиосети с одной стороны и к WiFi — с другой. На компьютере крутится веб-сервер, позволяющий контролировать текущее состояние всех систем умного дома и управлять ими. Мы можем загружать интерфейс управления на планшете или смартфоне, можем в браузере на компьютере. Можем делать это внутри квартиры, либо (если настроен проброс портов) снаружи из любой точки земного шара.

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


Для персонализации интерфейса будет необходимо понимать HTML, CSS, JavaScript, KnockoutJS и уметь читать предлагаемые примеры.


Что дальше?




Мы продолжаем работать над проектом вечерами и ночами. Наша скорость не сильно высока, но мы не стоим на месте. Сейчас в разработке находятся небольшой сенсорный пульт управления на четыре кнопки и модуль подключения NRF24LE1 к компьютеру по USB (для управления сетью и программирования). Вступайте в наше ВКонтакт-сообщество и будьте в курсе наших новостей.

P.S. В первой половине августа (с 3 по 11) я буду с семьей находиться в отпуске в Санкт-Петербурге. Если найдутся желающие встретиться и пообщаться о проекте, буду рад выделить на это один из вечеров. Кстати, если у кого-то из читателей есть интересные (стоимостью и месторасположением) варианты по аренде 1-2-комнатной квартиры на указанный период времени — пожалуйста напишите мне в личку здесь или в ВК.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[recovery mode] Очередной пост про то, как кто-то написал свою игру


Преамбула




Привет! Сегодня я раскажу вам про свой опыт написания игры для мобильных устройств. Немножко о себе: мне 24 года, имею средний опыт программирования под Android. Начал этим заниматься еще с первых версий Android'а, написал несколько простеньких программок, которые поддерживали меня все это время на плаву и давали возможность не искать работу, а так же одну маленькую игру с очень грустной историей (речь не о ней).

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

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



Идея




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

Выбор жанра пал на runner/endless, наверное потому, что в то время я играл в Doodle Jump. Идея пришла спонтанно, уже даже не вспомню при каких обстоятельствах. Главный герой — шагающая пружинка (да, такая как американская Slinky). Пружинка должна была шагать по ступенькам или платформам, какой конкретно должен быть геймплей и сеттинг я тогда еще не представлял. Стояла задача написать прототип такой пружинки, поэтому я поспешил заказать себе настоящую Slinky американского производства и изучить ее в живую.


Выбор движка




После изучения пружинки в живую, я начал думать как можно это написать. В принципе, вариантов было не много: писать свою математическую модель для симуляции или использовать физический движок. Поскольку я не гений математики, физики и программирования, я выбрал физический движок. Выбор игрового движка изначально пал на Corona по многим причинам — это мультиплатформенность, Lua, Box2D, большое комьюнити и количество разнообразных библиотек.

Первые прототипы пружинки были ужасны. Она была очень корявая, прыгала не правильно и расходовала почти все ресурсы тогдашних мобильных процессоров (если кому интересно, у меня даже есть видео ранних прототипов). Уже тогда я столкнулся с большим ограничением Corona — онлайн билды. Дело в том, что вы можете запускать написанный Lua код моментально на эмуляторе, но если нужно запустить на устройстве — нужно отправлять код на сервер и ждать на выходе готовый APK файл, затем закидывать его на телефон, устанавливать, запускать. Поскольку мне частенько надо было тестировать производительность на телефоне, приходилось делать онлайн билды. Это был ад. Забегая на перед, скажу что физ. модель пружинки тщательно полировалась на протяжении двух лет, поэтому дальше вести разработку на Corona я не мог.

Альтернатива была найдена достаточно быстро — Gideros. У него есть как симулятор для PC, Mac, Linux так и для Android, iOS. Устанавливая симулятор (плеер) на телефон вы можете передавать код по WiFi и тут же его запускать. Очень удобно. После портирования кода на Gideros я заметил еще один его плюс — производительность. Прототип стал бегать быстрее. Точные причины этого мне не известны. Скорее всего это более прямые руки разработчиков этого движка. За все время его использования я нашел и немало косяков, но они не так значительны. Кстати, недавно разработчики Gideros пообещали сделать его Open Source, так что всем советую обратить на него внимание.

Геймплей




Это наверное самая болезненная часть разработки. Придумать новый, хороший геймплей для игры очень сложно. За это время я успел не раз пожалеть о том, что не решился написать очередной клон какой-то популярной игрушки. Больше всего времени в моем случае ушло не на написание кода, а на придумывание/тестирование геймплея. Вариантов было очень много и разных. Иногда я не знал что выбрать. Посоветоваться с друзьями часто не самая хорошая идея, хоть и помогли они мне не мало. Именно с этим связаны мои длительные паузы в написании игры, часто меня посещала депрессия от неспособности придумать что-то путевое.

Еще один важный момент — управление. Здесь я тоже перепробовал все возможные варианты, в итоге остановился на самом, как мне кажется, простом, который не ломает геймплей.

Какой геймплей получился в итоге можете посудить сами. Игра на первый взгляд не далеко ушла от Doodle Jump-а и ему подобных (наверное из-за наличия платформ), но геймплей все же сильно отличается. В первую очередь главным персонажем — пружинкой, обладающей физикой, со всем вытекающим влиянием на геймплей. На моей памяти это единственный раннер/джампер с физикой (если не считать столкновение дудла с платформой физикой).

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


Графика и звуки




Времена, когда студенты писали за ночь на коленке игру не имея бюджета и потом получали неплохой выхлоп уже давно прошли. Я это отлично понимал, поэтому для графики и звуков/музыки нанял фрилансеров. На графику ушло приблизительно три месяца, на звуки/музыка три недели. Результатом работы я доволен. Это не вершина искусства, но выглядит на сегодняшний день не плохо. Художник был знакомый, опыта до этого в геймдеве не имел. Но я считаю мне с ним повезло, у него талант и хорошее будущее. Больше всего мы с художником старались над фоном, поскольку события игры развиваются в космосе, мы создали пять очень длинных и красивых фонов, которые плавно прокручиваются по мере приближения пружинки к планете (вот так вот). От себя я добавил партиклы, которые еще более украсили игру. Надеюсь, симпатичная графика привлечет больше женской аудитории, чем немного сбалансирует общую аудиторию игры, любящую игры на скилл.

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

Если интересно, бюджет на графику и звуки/музыку ~ $2200.

Монетизация




Тоже очень важный этап разработки. Если не сказать важнейший. Изначально я возомнил себе что пишу мега игру, 100%-ый хит и покоритель топов и без проблем найду себе издателя, а уж он будет заботиться монетизацией. Очень быстро пыл остыл, игрой не заинтересовался никто из более чем 20 издателей. Точнее один заинтересовался — финны из Fingersoft, но через пару писем они просто перестали мне отвечать. Создалось впечатление, что издатели хотят готовый хит на тарелочке, а рисковать не хочет никто.

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

Все же, я решил их добавить, почему бы и нет? Но поскольку я не только разработчик, но и игрок, я отлично понимал какое же это зло, и дабы создать дух честного соревнования в игре, я постарался найти максимальный баланс, чтоб внутренние покупки в лучшем случае сокращали время накопления звездочек, а для того, чтоб поставить рекорд по прежнему нужен был скилл. Если не считать одноразовые бусты — основной товар в игре это разные пружинки (вид и способности, бонусы).

Из возможных баннеров я выбрал полноэкранный баннер от AdMob. Кстати, при любой внутренней покупке баннер отключается. О своих результатах я могу написать позже, если будут желающие узнать.


Технические сложности




Их было предостаточно.

Самая основная проблема всегда была низкая производительность. Главный персонаж — пружинка состоит из большого количества физических обьектов и джоинтов. Это создает большую нагрузку на процессор. Сколько я не старался как-то упростить эту модель, идеально работающей была только определенная конфигурация. Но за время написания игры прогресс не стоял на месте, и сейчас уже на рынок выходят 8-ядерные мобильные процессоры. Это, конечно не значит что играть можно только на них, но минимальной производительностью, необходимой для того, чтоб получать удовольствие от игры, а не плеваться в экран, обладает девайс Nexus S (например). Если с пружинкой я ничего поделать не мог, то мог сделать остальной игровой код максимально быстрым, насколько это вообще было возможно. Мне пришлось досконально изучить Lua, и я оптимизировал код где только мог. Но самый большой толчек в производительности дало использование LuaJIT (кстати, еще один большой плюс Gideros).

Неплохую нагрузку на процессор составили и партиклы. Для них я использовал библиотеку для Gideros — TNT Particles Engine. Хорошая такая библиотека, в ней есть все, что нужно. Я уже даже начинал писать свой нативный аналог, получалось, но разработчик библиотеки написал в блоге что тоже разрабатывает новую, нативную версию, поэтому я решил сосредоточиться на других вещах и подождать его. К сожалению он так ничего и не выпустил.

Чтоб попытаться решить проблему со слабыми девайсами, владельцы которых могут заслуженно налепить единиц, я хотел каким-то образом отфильтровать их в маркете. К сожалению, нет подходящих фильтров в манифесте, кроме как фильтр по экранам. Поэтому игра недоступна для small-screen девайсов вообще, и доступна для normal-screen девайсов только с плотностью экрана hdpi и выше. Для больших экранов игра доступна почти для всех устройств, кроме ldpi. В консоли разработчика Android есть конечно возможность вручную отключать неподходящие модели, но их там более 6000, так что увольте.

Для интерфейса я решил использовать библиотеку Widget Candy, написанную для Corona и Gideros, о чем потом пожалел. При нехилой цене в 50 евро, она обладает целым пучком разных багов, которые приходилось обходить вставляя различные костыли, потому что разработчик не отвечает на багрепорты.

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

Что дальше?




А дальше я буду наблюдать за игрой, читать отзывы и пытаться привлечь новые установки. Четкого плана раскрутки у меня, к сожалению, нет. Необходимо посмотреть окупится ли игра, стоит ли ее дальше развивать, поддерживать. Возможно выпущу версию на iOS в ближайшее время (нужно только перекомпилить).

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

Всем, кто дочитал этот нудный пост — огромное спасибо! Жду ваших отзывов.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[Перевод] Использование элементов, в качестве фоновых изображений при помощи -moz-element

Перевод статьи «Use Elements as Background Images with -moz-element», David Walsh

Все мы знаем, что все браузерные вендоры по своему определяют многие CSS и JavaScript фичи, и я благодарен им за это. Mozilla и WebKit предлагают свои интересные проприетарные свойства, и хотя, как мы знаем, утверждение стандартов происходит годами, намного дольше чем стоило бы, мы все должны быть за это благодарны. Есть одно интересное CSS свойство о котором вы наверняка еще не слышали — -moz-element, это реализованное Mozill'ой CSS свойство, которое позволяет разработчикам использовать HTML элементы в качестве фонов для других элементов!


Смотреть демо



HTML и CSS




Предположим, что HTML элемент существует внутри текущей страницы и у него задан стиль. У элемента есть CSS градиент, текст и несколько CSS свойств:

<div id="mozElementBack" style="border:1px solid #999;width: 200px; height: 100px; color: #fff; background: -moz-linear-gradient(top, #063053, #395873, #5c7c99);">
I'm in the background.
</div>




Я задал стили внутри атрибута элемента, но -moz-element работает и со стилями указанными в тегах style или внешних таблицах стилей. Теперь, имея элемент на нашей странице, мы можем использовать его как «background» для другого элемента:

#mySpecialElement {
/* mozElementBack exists as an element within the page */
background: -moz-element(#mozElementBack) repeat;
}




Присваивание ID элемента свойству -moz-element, теоретически, превращает элемент в фоновое изображение, позволяющее применять background-repeat и все остальное. Также, заметьте, что элемент обновляется при обновлении стиля и содержимого фонового элемента, так что вы работаете с «живим» фоном!
Смотреть демо



Потрясающее CSS свойство, не так ли? Возможность использования существующего HTML элемента, в качестве CSS фона, просто удивительна, но благодаря Mozilla, это полностью возможно. Вы думаете о реальном применении это свойства? Преимущество, которое я вижу в -moz-element это то, что вы сможете включать текст в фон, также вы сможете использовать элементы сгенерированные внешними скриптам (скрипты социальных закладок, например). Какая же это интересная реализация!

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Написание своих дополнений для Shell. Часть 2: bash



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

Преамбула



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



Bash, в отличие от zsh, требует к себе некоторого велосипедостроения в отношении дополнений. Бегло погуглив, я не нашел более-менее нормальных туториалов, потому за основу были взяты имеющиеся в системе файлы дополнений для pacman (искренне надеюсь, что отцы-основатели Arch'а не придумывали много велосипедов).

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



proga [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
[ -o PROFILE | --open PROFILE ] [ -t NUM | --tab NUM ] [ --set-opts OPTIONS ]




Список флагов:


  • флаги -h и --help не требуют аргументов;

  • флаги -e и --essid требуют аргумента в виде строки, без дополнения;

  • флаги -c и --config требуют аргумента в виде строки, файл с произвольной локацией;

  • флаги -o и --open требуют аргумента в виде строки, дополнение по файлам из определенной директории;

  • флаги -t и --tab требуют аргумента в виде строки, дополнение из указанного массива;

  • флаг --set-opts требует аргумента в виде строки, дополнение из указанного массива, разделены запятыми;


Структура файла



Здесь все переменные должны возвращать массив. Каких-либо особых форматов тут уже нет. Сначала опишем флаги, потом уже все остальные переменные. Я напомню (так как ниже я уже не буду приводить функции более подробно), что _proga_profiles(), в отличие от других переменных, должна возвращать актуальный на данный момент массив:

# variables
_proga_arglist=()
_proga_settings=()
_proga_tabs=()
_proga_profiles() {}




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

# work block
_proga() {}




Далее, опять, без выделения в отдельную функцию делаем соответствие «функция-команда»:

complete -F _proga proga


Флаги



Как было сказано выше, особого формата тут нет, доступные флаги располагаются просто массивом:

_proga_arglist=(
'-h'
'--help'
'-e'
'--essid'
'-c'
'--config'
'-o'
'--open'
'-t'
'--tab'
'--set-opts'
)


Массивы переменных



Приведу только функцию, которая в zsh выглядела таким образом:

_proga_profiles() {
print $(find /some/path -maxdepth 1 -type f -printf "%f\n")
}




В bash так не получится, пришлось чуть-чуть изменить:

_proga_profiles() {
echo $(find /some/path -maxdepth 1 -type f -printf "%f\n")
}


Тело функции



За дополнение в bash отвечает переменная COMPREPLY. Для отслеживания текущего состояния нужно вызвать функцию _get_comp_words_by_ref с параметрами cur (текущая опция) и prev (предыдущая, собственно состояние). Ну и нужно несколько точек, на которых сворачивать в определенную часть case (переменные want*). Для генерации дополнения используется compgen. После флага -W ему подается список слов. (Есть еще флаг -F, который вызывает функцию, но у меня он помимо этого еще и ворнинг выдает.) Последним аргументом идет текущая строка, к которой и нужно генерировать дополнение.

Таким образом, наша функция выглядит так:



_proga() {
COMPREPLY=()
wantfiles='-@(c|-config)'
wantprofiles='-@(o|-open|s|-select)'
wantsettings='-@(-set-opts)'

wanttabs='-@(t|-tab)'
_get_comp_words_by_ref cur prev

if [[ $prev = $wantstring ]]; then
# не делать дополнения, ждать введенной строки
COMPREPLY=()
elif [[ $prev = $wantfiles ]]; then
# дополнение по существующим файлам
_filedir
elif [[ $prev = $wantprofiles ]]; then
# дополнение из функции
COMPREPLY=($(compgen -W '${_proga_profiles[@]}' -- "$cur"))
elif [[ $prev = $wanttabs ]]; then
# дополнение из массива
COMPREPLY=($(compgen -W '${_proga_tabs[@]}' -- "$cur"))
elif [[ $prev = $wantsettings ]]; then
# дополнение из массива
# -S вставит запятую после, но вот мультивыбор не включил =(
COMPREPLY=($(compgen -S ',' -W '${_proga_settings[@]}' -- "$cur"))
else
# вывести доступные аргументы
COMPREPLY=($(compgen -W '${_proga_arglist[@]}' -- "$cur"))
fi

true
}


Заключение




Файл хранится в директории /usr/share/bash-completion/completions/ с произвольным именем. Файл примера полностью может быть найден в моем репозитории.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Написание своих дополнений для Shell. Часть 1: zsh



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

Преамбула



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



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

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



proga [ -h | --help ] [ -e ESSID | --essid ESSID ] [ -с FILE | --config FILE ]
[ -o PROFILE | --open PROFILE ] [ -t NUM | --tab NUM ] [ --set-opts OPTIONS ]




Список флагов:


  • флаги -h и --help не требуют аргументов;

  • флаги -e и --essid требуют аргумента в виде строки, без дополнения;

  • флаги -c и --config требуют аргумента в виде строки, файл с произвольной локацией;

  • флаги -o и --open требуют аргумента в виде строки, дополнение по файлам из определенной директории;

  • флаги -t и --tab требуют аргумента в виде строки, дополнение из указанного массива;

  • флаг --set-opts требует аргумента в виде строки, дополнение из указанного массива, разделены запятыми;


Структура файла



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

#compdef proga




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

# variables
_proga_arglist=()
_proga_settings=()
_proga_tabs=()
_proga_profiles() {}




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

# work block
_proga() {}




Далее без выделения в отдельную функцию идет небольшое шаманство, связанное с соотнесением приложения, которое было декларировано в первой строке, с функцией в теле скрипта:

case "$service" in
proga)
_proga "$@" && return 0
;;
esac


Флаги



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

ФЛАГ[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ




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

{(ФЛАГ_2)ФЛАГ_1,(ФЛАГ_1)ФЛАГ_2}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ




Замечу, что, если Вы хотите сделать дополнения для двух типов флагов, но некоторые флаги не имеют второй записи, то Вам необходимо продублировать его таким образом:

{ФЛАГ,ФЛАГ}[описание]:СООБЩЕНИЕ:ДЕЙСТВИЕ




СООБЩЕНИЕ — сообщение, которое будет показано, ДЕЙСТВИЕ — действие, которое будет выполнено после этого флага. В случае данного туториала, ДЕЙСТВИЕ будет иметь вид ->СОСТОЯНИЕ.

Итак, согласно нашим требованиям, получается такое объявление аргументов:



_proga_arglist=(
{'(--help)-h','(-h)--help'}'[show help and exit]'
{'(--essid)-e','(-e)--essid'}'[select ESSID]:type ESSID:->essid'
{'(--config)-c','(-c)--config'}'[read configuration from this file]:select file:->files'
{'(--open)-o','(-o)--open'}'[open profile]:select profile:->profiles'
{'(--tab)-t','(-t)--tab'}'[open a tab with specified number]:select tab:->tab'
{'--set-opts','--set-opts'}'[set options for this run, comma separated]:comma separated:->settings'
)


Массивы переменных



В нашем случае есть два статических массива (не изменятся ни сейчас, ни через пять минут) (массивы умышленно уменьшены):

_proga_settings=(
'CTRL_DIR'
'CTRL_GROUP'
)

_proga_tabs=(
'1'
'2'
)




И есть динамический массив, который должен каждый раз генерироваться. Он содержит, в данном случае, файлы в указанной директории (это можно сделать и средствами zsh, кстати):

_proga_profiles() {
print $(find /some/path -maxdepth 1 -type f -printf "%f\n")
}


Тело функции




Помните, там выше было что-то про состояние? Оно хранится в переменной $state, и в теле функции делается проверка на то, чему оно равно, чтобы подобрать соответствующие действия. В начале также нужно не забыть вызвать _arguments с нашими флагами.

_proga() {
_arguments $_proga_gui_arglist
case "$state" in
essid)
# не делать дополнения, ждать введенной строки
;;
files)
# дополнение по существующим файлам
_files
;;
profiles)
# дополнение из функции
# первая переменная описание
# вторая массив для дополнения
_values 'profiles' $(_proga_profiles)
;;
tab)
# дополнение из массива
_values 'tab' $_proga_tabs
;;
settings)
# дополнение из массива
# флаг -s устанавливает разделитель и включает мультивыбор
_values -s ',' 'settings' $_proga_settings
;;
esac
}


Заключение




Файл хранится в директории /usr/share/zsh/site-functions/ с произвольным, в общем-то, именем с префиксом _. Файл примера полностью может быть найден в моем репозитории (не сочтите за рекламу, я специально все имена повырезал).

Дополнительная информация может быть найдена в репозитории zsh-completions. Например, там есть такой How-To. А еще там есть много примеров.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Dell стала крупнейшей компанией в мире, принимающей биткоины


18 июля корпорация Dell в партнёрстве с компанией Coinbase начала приём биткоинов в своём официальном электронном магазине. Теперь любую покупку на сайте компании можно оплатить с помощью криптовалюты. 2013 год Dell закончила с оборотом почти 57 миллиардов долларов. Это в четыре раза больше, чем предыдущий рекордсмен экономики Биткоин — американская компания спутникового ТВ DISH network.



Для популяризации нового способа оплаты Dell предлагает скидку 10% на продукты линейки Alienware при оплате биткоинами. Корпорация подчёркивает такие преимущества криптовалюты, как полная независимость системы от традиционных финансовых учреждений и государственных границ, а так же меньшую цену транзакций по сравнению с традиционными платёжными системами.


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Хакатон FabLab: двое суток и последствия. Как это было

Пару недель назад в Москве прошло такое интересное мероприятие, как FabLab Weekend — хакатон с паяльниками и 3d-принтерами. Я поучаствовал в этом мероприятии и преисполнился эмоциями, которыми и хочу поделиться с хабрасообществом.

Внимание: внутри сочинение и фотки.


Хакатон – популярное в последние годы развлечение. Традиционный формат состоит из нескольких бестолковых выступлений с презентацией идеи, бесплатного кофе, пиццы, интернета и мешков-кресел. Компания-промоутер получает несколько сотен молодых, пассионарных пользователей, а иногда и несколько толковых идей.


Идеальное развлечение для гикующего студента или фрилансера. Другое дело, что даже что-то условно похожее на продукт или хотя бы зачатки стартапа в результате хакатонов получается довольно редко.


Тем загадочнее выглядел проспект предстоящего «хардварного хакатона», с 3d-принтерами и паяльниками прямо в воркзоне: размещение оборудования и его предоставление его всем желающим явно выходило за рамки промошн-акции. Порог вхождения в хардварный бизнес выше, корпорации предпочитают статичные выставки в экспоцентрах, максимум, что можно от них получить — чашку кофе и демосет. Вспоминая опыт предыдущих хакатонов, мы воображали трэш и толпу восторженных школьников, и с этими мыслями дружно записались на мероприятие.


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


Пятница



Вечером пятницы мы собрались в офисе Ernst&Young, где, по программе, должна была пройти регистрация участников. Переговорная «Париж», больше похожая на небольшой лекторий, оказалась заполнена довольно плотно. Шаблон презентации, предоставленный организаторами, большей частью состоял из частей бизнес-плана, что выглядело необычно для трехминутного питча.

Нужно было придумать «серьезный» продукт, и мы распаковали наши студенческие работы: наша кафедра занималась медицинской электроникой, и почти у всех работы были связаны с электрофизиологией, так что в презентации описали мы портативный кардиограф. Расчет был на то, что мы скомпонуем железо по проекту из дипломов, поместим в красивый корпус, развернем по отработанной технологии сервис на Azure и добавим интеграцию с соц. сетями – вроде достаточно, чтобы впечатлить экспертов.

image

Скромно сидим и делаем презентацию — за полчаса до выступления. Стыдно.


На этапе заявления презентации к нам подошел другой участник, и предложил объединить усилия. Это был Михаил Шагиев, который искал команду для стартапа, который как раз связан с кардиографией. Команда у нас была даже более, чем укомплектована: мы пригласили как можно больше своих знакомых по учебе и работе, да и просто знакомых. Поэтому в девять ноль ноль, в Макдональдсе на Тверской. Ясно.


Суббота



Цифровой Телеграф похож на другие площадки, размещенные в исторических монументах, такие как Артплей или Цифровой Октябрь, и совсем не похож на маленькие подвалы-антикафе или комнаты-офисы в зданиях советских институтов. В Телеграфе очень просторно, пусто и холодно: кирпичные стены совсем не покрыты отделкой, а в откосах окон зияют щели. Захватив стратегический ресурс – мебель и перегородки-доски, мы принялись распаковывать привезенный материал.

Вскоре прибыли и виновники торжества со своими хозяевами – три Picaso Designer и три MakerBot. Все это напоминало микроскопическую выставку кошек: хозяева нервно берегли своих питомцев, а посетители жадно разглядывали диковину умиленными глазами. Как оказалось, все аппараты предоставлены различными организациями: MakerBot привёз Иван из Лаборатории Трёхмерной Печати, Picaso – Сергей Герасимов из Bionic Lab и ребята из HSE Lab. Я больше всего ожидал увидеть компактный ЧПУ гравер, вроде Roland MDX, но никто из «хозяев» с собой его брать не собирался. Паяльников тоже не было, и несколько человек уехали в свои офисы исправлять эту оплошность.


image

Принтеры приехали.


Объявленный формат предполагал лишь один чекпоинт по железной части – в самом конце, а по маркетингу мероприятий запланировано было много. От команды требовалось провести опрос целевой аудитории, нарисовать landing page еще несуществующего продукта, скомпоновать «бизнес-план». Кроме того, по площадке все время ходили странные люди и задавали разные вопросы: просили сформулировать концепцию «в два слова» или «продать» устройство так, как если бы оно было готово.

Подвезли остальное оборудование: две станции Lukey с феном, китайский осциллограф Rigol на 100 МГц, стендовый мультиметр, россыпь паяльников и ящик барахла «на компоненты».

Мы планировали собрать на макетной плате нехитрую схему на пару каналов, состоящую из балансного усилителя, активного фильтра и сигма-дельта АЦП. В качестве «головы» была заготовлена Raspberry Pi с линуксом на борту. Фильтры и усиление были посчитаны в дипломах, компоненты куплены по перечням, оставалось только все это собрать.



По плану каждый занимался своим делом: разворачивал ASP-сервис на Azure, orinichev писал клиент для WinRT, simbik верстал веб-морду и рекламные проспекты для конкурса, alexzero собирал схему, а я настраивал «клубничное» окружение на сбор данных и отправку.

Нам очень повезло – общение по «продажной» части нам полностью компенсировали присоединившиеся участники – Михаил и Оганес, в том числе и задание опросить несколько десятков людей на улице и составить облик целевой аудитории.




Работа пошла.


Ночь



Вечером в Телеграфе становится по-особенному холодно, а организаторы не предусмотрели никакого утепления – ни пледов, ни обогревателей. За окном лил проливом дождь. На барной стойке весьма удачно материализовалась кофемашина Юра, которая выглядела единственным, не считая паяльников, источником тепла. Вокруг нее, как будто тотема, собралось почти все население хакатона.

«Зря вы пледы не заказали. На всех хакатонах, что я был, пледы были».


Как обычно бывает, неосторожно брошенная фраза очень быстро развилась в длительный разговор о формате, целях и судьбе мероприятия. Инициатива проведения такого нетипичного для Москвы конкурса принадлежит Дмитрию Кирсанову из REAL Inventors, создающему площадку для старта «железячных» стартапов. Они тесно сотрудничают с московскими ЦМИТами, и опираются на их оборудование, но стартапу площадки прототипирования мало: по мнению Дмитрия, нужно варить инженеров, маркетологов и потребителей в одной кастрюле, добиваться, чтобы хорошая идея находила своего клиента, и поэтому на мероприятие приглашены люди из ВШЭ и Сколково. Это первое мероприятие такого рода, и подготовка велась в спешке, кто-то из гостей не приехал, ожидали очень маленький охват аудитории, но получилось лучше, чем ожидали.


Когда Дмитрий и другие организаторы уехали ночевать, пришло время продолжать работу над проектом. Одиноко стоящий осциллограф был экспроприирован и началась борьба между сном и отладкой. Подсистемой взаимодействия с АЦП являлся драйвер spidev, логику системы реализовывал python — достаточно просто и удобно для RPi.




Ночью тоже работаем.


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




Пусто в лесу — только птичка поет.


К сожалению, данные с АЦП представляли собой мусор, линия готовности переключалась без всякого порядка, и даже не удавалось провести один цикл чтения-записи регистра. Вопросы вызывала логика работы с линией CS, предварительное стробирование и внутреннее тактирование. Наиболее продвинутый электронщик решил, что исправлять будем последний вариант. Подходящего кварца вокруг не было, rPi из пользовательского режима выдавала только 10 кГц, поэтому нужно было собрать генератор из подручных материалов.

Было четыре утра и сон одолевал. Со стеклянными глазами alexzero написал ассемблерный блинк на 1 МГц и отправился проверять, но кто-то нажал случайно программный модификатор х10. Пятьдесят вольт с выхода ардуины отправили в нокаут всех :(


Воскресенье



Утром стало ясно, что с АЦП ничего не выйдет, и его нужно заменить. Пока ребята завтракали, я успел посетить ближайший «Чип и Дип». Новая микросхема конфигурировалась с линий и имела хороший мануал работы. Подключив и чуть-чуть подправив существующий код, я увидел, что данные вполне осмысленны.

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

Печать моих «сувениров» завершилась. Я первый раз экспериментировал с 3d-печатью, и для меня стало неожиданным заполнение отверстий и втулок частыми ребрами жесткости, послойные трещины и случайное смещение некоторых слоев. В принципе, я был готов к невысокому качеству деталей и результат меня вполне обрадовал. Для сравнения я попросил Ивана изготовить несколько деталей на MakerBot, и результат был в чем-то лучше: не было повреждений при снятии детали и отделения заполнений, но качество внешних поверхностей мне больше понравилось на Picaso. Отдельное спасибо хочется сказать сотруднику Picaso Евгению за помощь в снятии деталей.




А вот и результат.


На площадке вновь появились «трекеры» из ВШЭ. На сей раз им был интересен уже прототип, и мы даже могли что-то им продемонстрировать. После обеда на площадку приехал молодой человек творческого вида, который провел тренинг речи и уверенности на сцене. Этот тренинг, полный хореографии и нестандартных звуков, довольно сильно контрастировал с усталыми лицами участников и имел большую популярность.




Антон Ланде овладевает.


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


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




На сцене — Миша Шагиев и orinichev .


В конечном итоге нам отмерили второе место и приз зрительских симпатий, так что мы себя считаем победителями – две номинации здесь только у нас. Здесь же и капля разочарования: материальных призов не было. Спустя несколько дней, правда, пришло письмо с подтверждением бесплатного месячного доступа в три ЦМИТа – скромно, но замечательно для первоначального общения с самими ЦМИТами.




Вау.


Послевкусие


В чем-то хакатоны немного напоминают ярмарку деревенских невест перед барином, в чем-то – рекламную тусовку, вроде фестиваля «Ред Булл», а в чем-то – мертвую корпоративную конференцию с реверансами и паршивым кофе. Здесь получилось нечто иное: рекламировать организаторам было нечего, приглашенные гости выглядели «вишенкой на торте», барина не было, реверансы делать никто не умел. И ведь довольно интересно получилось!


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


Вообще, мне непонятно, почему ЦМИТам не хватает аудитории, ведь грубо – это изобретатели-одиночки, стартапы, студенты и дети, и все они потенциально обладают собственной активностью и ищут возможности для реализации своих идей. Есть какой-то концептуальный провал между освоением денег на оборудование и его использованием, и «хардварный хакатон» — одна забитая свая в выстраивании этого мостика.

Успешность пилотного мероприятия показывает, что «порог вхождения» упал, и даже группа восторженных школьников способна за два дня продемонстрировать прототип в железе. Тем не менее, опытные электронщики и конструктора среди участников значительно подняли б общий уровень мероприятия (это приглашение электронщикам на хабре!).


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


Что до нас – после работы, проведенной за два дня, нам стали поступать предложения о реселлеров. Такая непривычная для нас отдача и усилия Михаила — конечно же повод для открытия стартапа, и мы уже потихоньку работаем над прототипом и общаемся с инвесторами начального этапа. Следите за новостями!


Большая часть фотографий принадлежит организаторам, и я говорю им большое спасибо за них.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


SpaceX отправит 40 мышей на МКС


Частная компания SpaceX получила ещё один заказ на доставку груза на Международную космическую станцию с помощью ракеты-носителя Dragon. На этот раз груз необычный — 40 живых мышей в контейнерах.



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


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




Контейнеры для мышей


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


Следующий запуск Dragon состоится не позднее сентября и станет четвёртым из 12 визитов на МКС, которые запланированы до конца 2015 года. По контракту с НАСА компания SpaceX получит $1,6 млрд.



This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


[Перевод] Использование принципов гештальт-психологии для роста конверсии сайтов. Часть 3: анализ выгод и затрат

Часть 1

Часть 2

Эллиот Шмуклер (из LinkedIn и Wealthfront) однажды сказал, что успех сайта можно свести к трем основным рычагам:


1. Увеличение экспозиции (охватить большее количество людей)

2. Уменьшение трения

3. Увеличение стимула


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


Немного информации



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

Работа этого принципа имеет под собой крепкое основание, которое формировалось на протяжении всего периода существования человека, начиная с времен, когда неправильное соотнесение рисков и выгод почти гарантировано стоило жизни человеку, принявшему неверное решение. Поэтому, несмотря на то, что некоторые «затраты» могут казаться мелкими, например время и усилия на заполнение нескольких полей в форме заказа, их «психологическая стоимость» может повлиять на процесс принятия решений.



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


Пример № 1: Официальный магазин олимпиады Ванкувер-2010 (21,8%)


Одно из исследований показало, что более 67% интернет-магазинов теряют около 67 процентов потенциальной выручки и Официальный магазин олимпиады Ванкувер-2010 не стал исключением.


Для того чтобы выйти из сложившейся ситуации, команда магазина решила снизить уровень трения (рычаг №2).


image



Оригинальная форма заказа содержала 4 страницы: войти, создать учетную запись, реквизиты, подтверждение платежа. Для тестирования был предложен вариант, в котором все четыре этапа были сведены к одной странице.

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


В совокупности эти два изменения увеличили количество заказов на 21,8% за счет уменьшения трения, т.е. улучшения соотношения выгоды/затраты.


Пример № 2: Meebox (рост доходов на 121%)


Meebox, хостинговая компания в Дании, решила проверить свою структуру ценообразования.


image



К первоначальным тарифным планам были добавлены приличные скидки, которые достигали 40% для тех, кто приобрел пакет, предполагающий два года обслуживания.

После внедрения изменения наблюдался 121% рост доходов (на 51% вырос коэффициент конверсии, на 46% увеличилась средняя стоимость заказа).

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


Пример № 3: Soocial (28%)


Soocial решили сделать упор на расширение верхней части воронки (упрощение первого контакта с продуктом), поскольку они знали, что именно этот элемент имеет первостепенное значение на ранних этапах жизни компании. Объектом для тестирования стала кнопка регистрации. Они не стали менять дизайн, справа от кнопки было добавлено всего два слова: «это бесплатно».


image



Эти два простых слова увеличили CTR на 28%.

«Бесплатно» является мощным словом, но вы должны быть осторожны из-за двух вещей:


1. Если продукт на самом деле не бесплатен (или частично бесплатный), вы разочаруете множество клиентов

2. «Бесплатно» часто подразумевает «дешево». Если ценность вашего предложения строится вокруг высокого качества предоставленных услуг, такой подход может плохо повлиять на ваш имидж.


Пример № 4: Expedia (увеличение прибыли на 12 000 000)


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

Речь идет о форме с данными для отправления счета. Оригинальный вариант требовал, кроме всего прочего, указать имя компании. В тестовом варианте это поле было удаленно.


image



Это простое изменение — удаление дополнительного поля привело к увеличению доходов на $ 12 млн.

Несмотря на то, что поле было не обязательным, оно по-прежнему усиливало трение. Кроме того, что форма выглядела длиннее, пользователь вынужден был принимать решение о том, стоит ли заполнять поле с именем компании, что тоже имеет свою «энергетическую ценность».

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Объединённые Арабские Эмираты объявили о создании собственного космического агентства и полете на Марс в 2021 году


Все больше стран и национальностей присоединяется к исследованиям космоса, как околоземного космического пространства, так и дальнего космоса. В частности, на днях шейх Мохаммед ибн Рашид аль-Мактум ( премьер-министр и вице-президент Объединённых Арабских Эмиратов, правитель Дубая) заявил о создании в ОАЭ собственного космического агентства.


Также шейх заявил о намерении отправить на Марс первый арабский космический корабль уже к 2021 году. Для этой цели ОАЭ вкладывает в программу 20 миллиардов дирхамов (это примерно 5,44 миллиарда долларов). Вероятно, в ОАЭ пойдут по проторенному пути (неоднократно испытанному в поистине гигантского масштаба строительных проектах): это найм высококлассных иностранных специалистов, компаний-подрядчиков, и создание собственной космической инфраструктуры именно таким путем.


В общем-то, в ОАЭ на ветер слов не бросают, и вкладывают действительно огромные суммы денег в сферы, которые интересны арабскому сообществу. Ну, а как известно, у арабов указанного региона средства действительно имеются, и хорошо, что их (средства) будут вкладывать в развитие космической сферы. Хотелось бы надеяться, что все это будет происходить в рамках сотрудничества с другими космическими агентствами, в результате чего космос станет еще ближе к человечеству.


Сейчас шейх Мохаммед заявляет, что «Арабы, снова, могут сделать свой вклад в науку, для всего человечества».


Via HHSheikhMohammed


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Лондон теперь доступен в 3D на Google Maps


По столице Великобритании теперь можно совершить виртуальную экскурсию. Лондон — пятый город Великобритании, который теперь доступен в 3D как на Google Maps, так и в Google Earth. Предыдущими четырьмя населенными пунктами Великобритании, которые стали доступны в 3D-варианте, стали Рединг, Лидс, Бирмингем и Сток-он-Трент.


Как обычно, объемное изображение можно увеличивать, уменьшать, вращать и проводить прочие манипуляции.


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


Google начал добавлять текстуры еще в 2006 году, но только два года назад компания стала добавлять большое количество 3D элементов на свои картографические сервисы.





This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Обзор гик-кафе: Припой, Klюtch, Gagarin и другие

Середина лета и жара не располагают к вдумчивой работе, особенно в мегаполисах. Хочется либо валяться в тени, либо… валяться в тени. Правда, новосибирцы сейчас поспорили бы с этим тезисом, но им просто не повезло. Всё-таки в целом по стране лето получилось классическим. И если вы ещё не были в отпуске, то сейчас самое время.

Всем отдыхающим в помощь мы уже подобрали полезные мобильные приложения и всякие интересные гаджеты, чтобы отпуск прошёл веселее и увлекательнее. Теперь мы хотим предложить вам небольшую подборку кафе, которые придутся по душе всем истинным айтишникам и тру-гикам. Всякие пляжи, экскурсии и развращающий тело и душу all inclusive — дело хорошее, но всё же банальное. Так что если будете проездом в некоторых уголках планеты, загляните в подобранные нами кафе и ресторанчики. А потом отпишите, понравилось ли.


Адрес: Москва, ул. Беговая, 2


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




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





Цены среднего уровня. Музыка довольно попсовая, но в меру. Wi-Fi есть, но незащищённый. Прямо из кафе есть вход в магазин «Чип и Дип», так что можно совместить приятное с полезным. Довольно симпатичное место, сразу настраивающее на деловой лад.


Адрес: Санкт-Петербург, ул. Чехова, 3


Это заведение позиционирует себя как IT-бар, а также post-internet club. Фактически это кафе с уклоном в коворкинг. Точнее, анти-кафе — плата здесь берётся за время пребывания.





Дизайн зала как бы намекает, что целевая аудитория — айтишники и вообще всевозможные гики. Но даже не это главное. Самое интересное в этом кафе заключается в регулярном проведении всевозможных IT-лекций, семинаров и мастер-классов. На наш взгляд, слово «клуб» будет гораздо уместнее при описании Klюtch, чем «кафе» или «бар».



Адрес: Нижний Новгород, пр-т Молодежный,12А


Интерьер заведения выдержан в стиле а-ля космический корабль: сталь, заклёпки, звёздное небо, фотографии космонавтов. Правда, никаких антуражных предметов, связанных с космосом, тут нет. Еда здесь без изысков. Кстати, было бы очень оригинально, если бы в меню была хотя бы пара блюд в тюбиках, как для космонавтов. Говорят, что эту идею хотят реализовать в Тюмени, в строящемся ресторане.




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


Адрес: 1245 Rue Drummond, Montréal, QC H3G 1V8, Canada


Чёрно-красная цветовая гамма, угловатость мебели, потолок в полумраке и несколько игровых автоматов и телевизоров с игровыми приставками. Отличное место, чтобы посидеть с друзьями или поработать. Несколько мрачновато, но это дело вкуса.




Адрес: 321 Massachusetts Ave, Cambridge, MA 02139, United States



По современным меркам это старинное заведение, открывшееся аж в 1991 году. Меню здесь написано на доске в виде периодической системы элементов. Спокойное место с отменнейшей кухней. Благодаря месторасположению заведения основными его клиентами являются учёные и студенты. Американская версия «научного» паба.



Адрес: 3/F, Monopoly Park, 59/27 Rama 3 Rd., Thailand


Обычный ресторан с традиционной тайской кухней, но с официантами-роботами. Посетители на сенсорных экранах выбирают блюда, а электронные дуболомы в виде японских воинов развозят заказы по столикам. Также роботы автоматически увозят со столов пустую посуду.




Адрес: 388 Union Ave, Brooklyn, NY 11211, United States



Бар-кафе, уставленное действующими игровыми автоматами. Когда-то это было главное развлечение молодёжи, а сейчас автоматы превратились в атрибут ностальгии для гиков. Неумолимая поступь прогресса.


Кстати, в Москве есть место под названием Музей советских игровых автоматов (м.Бауманская). Здесь собраны самые разные автоматы из нашего детства, причём почти все действующие, и в них можно играть. Для этого нужно купить у бармена советские монеты. Даже стоят автоматы с газировкой, заправленные, по словам владельцев, аутентичным лимонадом, который они покупают в Черноголовке (кажется). Правда, это всё же не кафе, хотя там и можно купить чай/кофе/печенье/молочный коктейль. Но если они расширят ассортимент напитков и продуктов, то должно получиться полноценное гик заведение.


Адрес: 134-136 Wardour St, London W1F 8ZP, United Kingdom


В этом кафе используется очень интересная система заказа блюд. Над каждым столиком расположен проектор и камера, распознающая жесты. Посетители могут «листать» меню, отображаемое прямо на поверхности стола и тарелках. Здесь сразу можно увидеть большие фотографии, цену и описание. Причём оба посетителя могут работать с этим виртуальным меню одновременно.




Адрес: Japan, 〒160-0022 Tokyo, Shinjuku, 3−8−9, 新宿Qビル5F


Простенькое заведение, основной «фишкой» которого является очень большая коллекция 8- и 16-битных игр для старых телевизионных приставок. Естественно, во всё это великолепие можно тут же играть.




А это компоненты местного коктейля Dr.Mario. Если честно, выглядит жутковато.



На этом всё. Если вы знаете в своём городе какое-то кафе с интерьером для настоящих гиков, напишите о нём в комментариях.


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


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.