суббота, 10 августа 2013 г.

PHP: How to get Google Drive spreadsheet

Task

We have: a spreadsheet at Google Drive.
We need: to get that spreadsheet as a PHP array.

CSV format seems to be a suitable one for this task, though it allows to download one sheet only.

One-liner

Wget should be installed for this to work:

Expanded solution

Alternatively, we can use cURL:

How to get spreadsheet URL

Spreadsheet can be either shared via secret link or published. In both cases you should add &output=csv. Also, you can add &gid=N to get Nth sheet.

References

понедельник, 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), то тогда и получится живая иллюстрация степени компрессии.

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