Про bizwood.ru, часть 5
Apr. 30th, 2011 07:59 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
-------------Последние новости---------------
На айфоне заработало. Только на четвёртом. Я кста поменял свой 2G на 4, когда за вертолётиком ездил – нарадоваться не могу.
Гугл ко мне таки пришёл и проиндексировал ajax. То-есть, вот например: http://www.google.com/search?q=баня+из+сосны+site%3Abizwood.ru. Стало быть, проблемы с нечёткими запросами нет больше. Осталось вкрутить поиск Гугла на Бизвуд.
------------- Конец новостей ---------------
JSON schema. Валидация.
Очевидно, что данные о разных видах продуктов при занесении надо проверять. Так как формат, в котором у нас данные появляются, транспортируются и хранятся, один и тот-же – json – было бы разумно использовать одну и ту-же схему проверки этого джейсона и на клиенте, и на сервере.
Вообще, вопрос схемы встал для меня в определённый момент довольно остро. У меня было три варианта:
- писать свой, специфичный для моих нужд валидатор для мной придуманного метаязыка схемы, я даже начал его продумывать
- конвертить json в xml и валидацию проводить xsd-схемами
- найти таки подходящую реализацию схемы для джейсона
Первые два варианта очень быстро отвалились. Даже грубые прикидки по первому варианту показали, что я не уложусь скорее всего по времени. По второму – что клиентская часть станет просто монстром.
По третьему варианту библиотеку приемлемой длины для браузера я нашёл быстро и она почти идеальна. Вот она -- https://github.com/garycourt/JSV. Её пришлось совсем немного надстроить.
С php пришлось повозиться, и я ещё до сих пор не до конца решил проблемы – в частности, поэтому до сих пор закрыта регистрация. Все json-валидаторы на php, что я нашёл, очень далеки от совершенства – а именно они должны определять можно класть данные в базу или нет.
Использование json-схемы даёт возможность интегрировать описание структуры данных и интерфейса для ввода этих данных. Дело в том, что json-schema – это тоже json-данные, и причём расширяемые. То-есть надстроив на ветки схемы какой-то метаязык описания интерфейса, можно глубже объединить валидацию с отображением/вводом.
Это всё довольно быстро написалось и заработало.
Валидация идёт в реальном времени, прямо при наборе. Также, как и автозамена. Это так выглядит:
Помимо красных предупреждений обращаем внимание на то, что между цифрами стоит правильный знак умножения – типографский знак × (в Винде Альт-0215 в английской раскладке). А набирал я просто астериск *, в крестик его превратила автозамена при наборе.
Это всё надстройки над схемой. Так легче обеспечивать однородность данных.
Пока всё, перфоратор утих. Я выпил 50 бехеровки и попробую уснуть )
no subject
Date: 2011-05-06 05:29 am (UTC)no subject
Date: 2011-05-06 11:16 am (UTC)