Enchantner
Апрель 5, 2011 23:36:59
Заранее прошу прощения, что вопрос не совсем по питону, но в основе проекта лежит Django, да и вообще задача интересная.
Собственно, надо реализовать веб-интерфейс для клеточного автомата, который будет рассчитываться на сервере. Проблема в том, что среди начальных требований есть задание начальных данных мышкой, то есть смена состояния клеток по клику, дальнейшие результаты расчета будут возвращаться, скорее всего, в виде картинок.
HTML5 Canvas отпадает, потому что требуется поддержка IE. Я пробовал генерировать структуру на сервере и вставлять в DOM самой HTML-страницы - но на поле 1000 на 1000 браузер уже начинает просить пощады и очень долго рассуждать. А flash я, к сожалению, знаю довольно плохо.
В общем, прошу совета - как реализовать на клиенте задание начальных данных мышкой для больших полей и как сериализовать-десериализовать это поле для передачи на сервер за минимальное время? JSON почему-то не кажется хорошим решением, а бинарный формат яваскриптом реализовывать - это злобно…
PooH
Апрель 6, 2011 05:26:47
Enchantner
HTML5 Canvas отпадает, потому что требуется поддержка IE.
Не все так плохо с канвасом.
http://code.google.com/p/explorercanvas/. В работе с растром там многого нет, но вектор работает неплохо.
Или даже
http://raphaeljs.com/
Enchantner
Апрель 6, 2011 09:43:15
PooH
А как со скоростью-то? Я понимаю, что рисование квадрата в любом случае быстрее DOM-манипуляции, но все зависит от реализации…
И да, насчет SVG (Raphael) думал, но там опять же та же ерунда - поддержка SVG появилась только в IE 9, а всякие svg2swf - ужасно неудобные и тормозные…
PooH
Апрель 6, 2011 11:21:48
Enchantner
PooH
А как со скоростью-то? Я понимаю, что рисование квадрата в любом случае быстрее DOM-манипуляции, но все зависит от реализации…
А фиг знает, пробовать надо :) Я делал на нем карту интерактивную, вроде хватало скорости. В принципе он почти напрямую в VML операции транслирует.
Enchantner
Апрель 12, 2011 23:18:01
А по сериализации никто ничего не посоветует хорошего? Как можно на сервер максимально компактно это все отправить?
zheromo
Апрель 12, 2011 23:42:35
JSON + Zip
если вариантов значений клеток не много, что-то типа RLE сжатия
PooH
Апрель 13, 2011 05:44:26
Enchantner
Как можно на сервер максимально компактно это все отправить?
Может битовый массив? На клиент придет набор целых чисел. Побитные операции в javascript есть.