понедельник, 7 апреля 2008 г.

Форма с произвольным вводом

Цель: ускорить/упростить ввод данных в формы. Область применения: там, где один человек вводит много данных в однотипные формы. Средства: добавляем "ума" обработчику формы - он должен понимать менее формальные данные. Пардон за тавтологию.

Допустим, в форме есть такие поля: URL, ФИО, телефон, возраст. Случай тривиальный: данные различаются кардинально, URL с возрастом никак не спутаешь, равно как и с телефоном. Добавляем к форме дополнительное поле textarea, и когда человек в это поле что-то вводит, разбираем введенное по образцам, распихивая результаты в основные поля.

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

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

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

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

Конечно, для более сложных форм логика уже не такая тривиальная. Но все решаемо, ИМХО. Где-то у меня был рабочий прототип, нужно будет выложить и запостить ссылку.

воскресенье, 6 апреля 2008 г.

Кеширование картинок, упомянутых в CSS-коде

Никогда не видел, чтобы кто-то такое делал. Хотя идея лежит на поверхности: обойти все теги link и style, из них "выкорчевать" все url(...), затем полученные URL'и подгрузить любым доступным способом. "Отзывчивость" разного рода скриптов, манипулирующих классами, должна значительно возрасти, стать более гладкой. Код может быть оформлен совершенно независимо от другого контента на странице, отдельным скриптом. Ну, разве что страница генерирует CSS на лету, в процессе исполнения, уже после onload. Но во всех остальных случаях должна получиться польза.

суббота, 5 апреля 2008 г.

Измеритель удачливости

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

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

пятница, 4 апреля 2008 г.

Онлайновое игровое пространство

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

четверг, 3 апреля 2008 г.

Самообучающиеся психологические тесты

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

среда, 2 апреля 2008 г.

"Живая" иллюстрация JPEG-качества на JavaScript

Допустим, есть некоторый сайт, который позволяет загрузить картинку, что-то с нею сделать, затем скачать результат в виде JPEG-файла. Например, просто пережимает картинку с меньшим качеством или конвертирует PNG/GIF/BMP/TIFF в JPEG выбранного качества.

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

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

Микространички в гриде (еще одна социальная сеть)

Точнее, не сеть, а принцип. Такие вот свойства:

  • каждый участник имеет свою "микространицу" - небольшой участок с произвольным контентом;
  • контент микространицы - фото, картинка, текст, какие-нибудь значения (день рождения, количество дней в браке, иконка разбитого сердца на каждый неудавшийся роман, последняя запись с twitter.com, статус вроде асечного, и т.д.), или скорее комбинация всего этого; все управляется чем-то вроде билдера;
  • некоторые части контента могут обновляться самостоятельно - важный для человека фид, таймер, еще что-нибудь;
  • у каждого участника есть страница, на которой расположены микространицы всех его друзей (или сеткой, или произвольно - это уж кто как хочет);
  • когда участник заходит на свою страницу друзей, все недавно изменившиеся микространицы подсвечиваются; должна быть возможность быстро посмотреть, что изменилось на каждой отдельной странице (пара кнопок "вперед/назад на шаг").

Такой вот "пульт управления". Было бы интересно на флеше сделать прототип - анимировать, скажем, несколько воображаемых минут деятельности такого пульта.

вторник, 1 апреля 2008 г.

Пляшущие человечки

  1. Берем фотографию человека в полный рост:
    • пользователь загружает файл...
    • ...или делает вебкамерой несколько "снимков".
  2. На фотографии выделяем голову, туловище, плечи, предплечья, кисти, бедра, голени, ступни:
    • автоматически (образ ведь довольно несложен, на контрастном фото проблем возникнуть не должно)...
    • ...или просим обвести части тела мышью.
  3. Вырезаем выделенные области и создаем спрайты.
  4. Накладываем на спрайты заранее записанный танец - вроде motion capture, только проще.
  5. Добавляем музыку, фон, дискотечную анимацию или что-то в этом роде.
  6. Экспортируем как Flash-ролик.

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

понедельник, 31 марта 2008 г.

Сайт с ёмкими выражениями

Было бы интересно создать такой сайт, где люди могли бы постить свои ёмкие выражения, читать чужие, голосовать за ёмкость. Для любителя StarCraft таким выражением могло бы быть елозить калошами по карте - для не посвященных это просто набор слов, а для тех, кто знает, в чем дело - это целая история. Т.е. чтобы раскрыть смысл выражения, нужно бы целый рассказ выдать. Для любителя Quake III это могло бы быть рельса на семнадцатом. Для программиста - ночь с долбаггером. Ну и так далее, из любой области применения человеческих мозгов и рук. Очень было бы любопытно почитать.

воскресенье, 30 марта 2008 г.

Стерео-вебкамера

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

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

пятница, 28 марта 2008 г.

Беглое чтение хираганы и катаканы

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

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

Выглядит довольно просто, надо будет сделать.

31-е марта 2008. Сделал пробный вариант. Это просто торба:

ほろづにい うつれんにい わえてる れぐこ こすぬるしゃ ぷろすこご かむにゃ、 ざくりわゆせご わほづ  ぺせる、  ないる ぷりにく うほむ  せり、 なぷりゃぜんの わするしわやし。 わしゃきい らず  たきえ むぐのわえにや えむ かざろし、 つと ぺれづ ぐらざみ わすぴひわえつ くろほつにい そるねつにい ざいちく、  わせ わおくるぐ わねざぷの ざもるかえつ  かずぢい ずわうく すたのわいつしゃ おそべんの つえつきむ

Пока не получается отдельно читать и отдельно смеяться. А вот оригинал из "Мира пауков" Колина Уилсона:

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

Чат-блог

Как и обычный блог, но отличие как между e-mail и instant messaging. Т.е. человек постит небольшие мессажки, без заголовков, как бы монолог в чате. Такая идея возникла после того, как увидел несколько блого подряд, где либо были мелкие посты по строчке-другой, либо один пост на каждый день, но со многими апдейтами. Уверен, было бы популярно среди определенного интернетонародонаселения.

А где-то через месяц после выдвижения идеи наткнулся на Twitter. Из чего следует, что идея хорошая, но несвоевременная.

среда, 26 марта 2008 г.

PrtScr -> Файл -> Онлайн

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

Так вот, можно было бы сделать связку сайт + клиентская программа, работающую следующим образом: жмешь PrtScr (или какой-нибудь шорткат похитрее), во всплывшем окошке вводишь название и/или комментарий (опционально), через пару секунд в клипбоарде или в новом всплывающем окошке получаешь ссылку на страницу со скриншотом. А уж ссылку послать - дело нехитрое.

Брелок для цифровых подписей

Аппаратная часть: USB-брелок с двумя USB-портами, одним цифробуквенным индикатором, одиной кнопкой. Первый USB-порт легкодоступен ("очевиден"); он предназначается для операций шифрования/подписи. Второй USB-порт "прячется" за неочевидной крышкой, или защищен еще каким-либо образом, предупреждающим случайный выбор второго порта вместо первого; предназначается для управления ключами (перегенерация и т.д.). При подключении устройства с помощью первого порта, хост-система получает доступ к API вида "послать на данные на подпись; получить саму подпись". Перед посылкой данных по известному алгоритму генерируется контрольная сумма этих самых данных. Эта контрольная сумма выводится на дисплей хост-системы. По тому же алгоритму USB-брелок рассчитывает контрольную сумму этих же данных и выводит ее на собственный цифробуквенный дисплей. Пользователь справнивает обе контрольные суммы и нажимает на брелке кнопку подтверждения, после чего сгенерированная цифровая подпись или зашифрованные данные передаются в хост-систему.

Если подключить брелок через второй порт, то хост-системе предоставляется другой интерфейс: "сгенерировать новую пару ключей".

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

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

(У меня язык не поворачивается сказать "на брелоке". Лучше буду писать "на брелке".)

понедельник, 24 марта 2008 г.

All-bugs.com: самые неприятные баги в чужих программах

Вот бы такой сайт сделать: баг-трекер для закрытого ПО. С рейтингами по багам, воркэраундами и т.д.

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

А так вот есть сайт, на котором этот баг можно выложить, описать шаги для его воспроизведения - как в обычном баг-трекере. А кто-то другой посмотрит и скажет: "Да, точно! Та же фигня, каждый день извожусь! Но придумал решение: надо открыть такое-то окно и..." или "Друг, ты пользуешься старой версией. Они пофиксили это во вчерашнем релизе 3.141", или "Есть альтернативная программа поприличнее".

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

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

Есть сложности:

  • сайт получится похожим на директорию софта (т.е. легче не сайт делать, а к существующей директории прикрутить новую функциональность);
  • все держится на комьюнити.

воскресенье, 23 марта 2008 г.

Словарь жестов

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

  • жесты можно вводить через Flash- или Shockwave-апплет - что-то вроде скелетной анимации кисти, всей руки, всего тела
  • YouTube-ролик позволит добавить жест еще проще
  • каждый жест имеет отдельную страницу с минимумом оформления, графматериалом в центре, название где-то сверху, краткое описание где-то снизу - и вот такую страницу можно кому-нибудь послать в виде открытки

"Направленный" звук в интерфейсах

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

Когда какая-нибудь программа выводит простое диалоговое окно типа "Ошибка", "Информация", "Подтверждение", этот процесс сопровождается проигрыванием звукового эффекта. Было бы неплохо проигрывать этот эффект с балансом, измененным в соответствии с положением окна на экране. В случае стереозвука это просто "левее окно - левее звук, правее окно - правее звук". Можно и вертикальное положение учитывать. Еще было бы неплохо совместить это с выводом большей части таких окон не в центре экрана, а в центре родительского окна.

Этот же принцип можно применить и в медиаплеере, тем более что тут это будет заметнее из-за того, что можно двигать окно и ощущать эффект в динамике. Но вот это уже точно "фенечка".

пятница, 21 марта 2008 г.

Акустический распознаватель жестов + 3д-монитор

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

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

Можно поставить задачу попроще: человек цепляет на лоб повязку из особого материала, который отражает ультразвук получше кожи. И теперь тем же способом вычислять положение головы и направление "вперед", т.е. куда человек лбом уставился. Глаза, ясное дело, в монитор смотрят. А раз известно положение глаз относительно монитора, картинку можно пересчитать с другой перспективой.

Возможно, инфракрасные лучи во втором случае сработают получше. А вообще у меня такое чувство, что про что-то подобное второму случаю я читал.

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

четверг, 20 марта 2008 г.

Сигнальный чип для бытовой техники

Допустим, спроектировали и наладили производство чипов с такими свойствами:

  • на входе - питание и одна (две, четыре - это уже как получится) сигнальная линия
  • внутри - Wi-Fi, Bluetooth, или еще какой-нибудь радио-модуль
  • еще внутри записан уникальный код - серийный номер чипа, подобие MAC-адреса, и т.д.
  • при появлении импульса на сигнальной линии радио-модуль генерирует и передает правильно оформленный пакет с уникальным кодом внутри

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

  • электрочайник или кофеварка - сигнал "кипим! готово!"
  • стиральная машина - сигнал "готово!"
  • дверной звонок (для любителей наушников самое то)
  • и тому подобные применения

Кроме встраивания в бытовые приборы, можно делать самостоятельные "штуковины": датчик + питание + чип. Применять можно так:

  • датчик освещенности - стандартное "кто-то пересек сигнальный луч", или газета закрыла датчик от света
  • датчик влажности - земля в цветочном горшке высохла, белье высушилось
  • пьезодатчик - кто-то подозрительно возится с замком двери
  • и тому подобное

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

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

среда, 19 марта 2008 г.

Гибкий сканер + гибкий дисплей

Где-то пробегала информация о прототипе гибкого сканера в виде пластинки с кредитку. Его предполагалось "накручивать" на неплоские поверхности вроде бутылок.

Гибкие дисплеи уже вроде бы даже попали на серийные устройства.

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

  • читабельная расшифровка штрих-кода
  • PANTON-значение цвета
  • перевод текста
  • увеличенное изображение (если разрешение сканера позволяет)
  • каким-то образом откорректированное изображение (вроде фотофильтров)

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

  • зум
  • выбор языка перевода (если автоматический выбор не сработал)
  • настройка яркости и контрастности

А если такие сканеры еще и вне видимого диапазона могут работать?