Удобно и
эффективно генерировать код на XML можно
так:
>>> from StringIO import StringIO >>> out = StringIO() >>> xml = XmlWriter(out) >>> xml.addNamespace("xhtml", "http://www.w3.org/1999/xhtml") >>> xml.startTag("xhtml:html") >>> xml.startTag("xhtml:body") >>> xml.text("Hello world!") >>> xml.tag("xhtml:img", {"src": "smile.png", "alt": ":-)"}) >>> xml.endTag() >>> xml.endTag() >>> xml.close() >>> print out.getvalue().rstrip("\r\n") <?xml version="1.0" encoding="utf-8"?> <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xhtml:body> Hello world! <xhtml:img alt=":-)" src="smile.png" /> </xhtml:body> </xhtml:html> |
А я в свое время
подобный велосипед сам сделал, на PHP. У
нас страницы сайта выдавались на XML и
потом уже превращались в HTML накладыванием
епитимьи шаблонов XSL.
Интересно,
много ли нынче сайтов на XML-е работает?
вторая версия нашей системы
ОтветитьУдалитьopen.lexpro.ru должна была по идее быть допилена на xslt )
но ведущий ушел, остался я один, и пока трахаюсь со Sphinx
значит, не все полимеры еще просрали :)
УдалитьВообще, народу не нравится относительно низкая производительность XSLT шаблонизаторов. Это основная претензия. А на мой взгляд, народ не любит делать сайты на хмл потому, что хмл технологии слишком машинно-ориентированы, людям скучно.
А мне нравится, я люблю универсальные решения.
я как раз и пришел примерно год назад в эту контору заниматься шаблонизатором, ибо highload, да и удобно с данными работать.
Удалитьс тем последовательно ушли два программера и все повисло на мне. Система в первую очередь ищет, этим и занялся (довольно широкая тема). Пока закрытая версия справляется и так, она на Blitz-шаблонизаторе, тоже шустренький, но как мне кажется, не такой удобный.
два ушли а сколько осталось? И чего ж они ушли, если проект интересный?
УдалитьКстати, название сайта навевает мысли о лепре почему-то :)
Остался один, а нужно по идее 4.
УдалитьЕсть закрытая (коммерческая) версия. Есть открытая версия, претендующая на высокие нагрузки. И еще куча обвесов и сервисов. Есть еще идея улучшить поиск. Есть еще недописанная следующая версия. Вот такое мое хозяйство.
Ушли за деньгами и не вернулись)
Но все реально интересно, вот если бы я еще в этом разбирался нормально)
это будет хорошая запись в CV, судя по всему.
Удалитьнаверное, не без этого.
ОтветитьУдалитьза год memcache + memcachedb + питон + Sphinx + xslt + nodejs + postgres
причем все, кроме питона плотненько так + дальше работаю, сейчас гоняю Sphinx в хвост и гриву, ускоряю индексацию, ибо полный апдейт был НЕДЕЛЮ с индексом на 300 гиг.
дальше будет кластеризация на перконе или mariadb, порешаем за шардинг
и засну спокойно)
пожалуй, не хватает только плотного js-фронтенда, в коммерческих халтурках дергаю из jquery все, что надо, сложного пока не писалось.
но знаний и теории, ппц как не хватает. не знаю, за что браться.
Вот оно как. Завидую :)
УдалитьБраться надо за начало. Если начала не видать, берись за то, что ближе, дальше само пойдет.
Ну и читать побольше всякого. Я всегда так делаю, помогает :)
После того, как ушел ведущий, не оставил 40 связных строк документации по системе, я поразмыслив, взялся
Удалитьа) за ведение документации (приобрели jira)
б) за фиксы багтрекера. Прикрутил xdebug и понеслась. По мере фиксов узнается система.
Но есть некоторые вещи, которые реально пока сложно реализовать. Например, нужен API для доступа к коммерческой версии. Какой-то кроссплатформенный что ли. Написать я его напишу, уже кое-что написал. Но сама архитектура для меня - темный лес. Что правильно? Что неправильно? Реализовать на js через пых это правильно? Неизвестно, но принцип дернул у гуглевой капчи))
Вот какие-то такие затыки.
API нынче модно делать в виде REST-сервиса и комплекта клиентских библиотек. А чтобы сделать REST-сервис, надо аккуратно спроецировать предметную область на сущности с операциями. И все едино, к тому моменту когда будет готова половина работы, захочется все переделать "более правильно". Кстати, по поводу правильно-неправильно http://vasnake.blogspot.com/2012/01/make-it-work-make-it-right-make-it-fast.html
Удалить