Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-07-17

XML

Удобно и эффективно генерировать код на 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-е работает?

10 комментариев:

  1. вторая версия нашей системы
    open.lexpro.ru должна была по идее быть допилена на xslt )
    но ведущий ушел, остался я один, и пока трахаюсь со Sphinx

    ОтветитьУдалить
    Ответы
    1. значит, не все полимеры еще просрали :)
      Вообще, народу не нравится относительно низкая производительность XSLT шаблонизаторов. Это основная претензия. А на мой взгляд, народ не любит делать сайты на хмл потому, что хмл технологии слишком машинно-ориентированы, людям скучно.
      А мне нравится, я люблю универсальные решения.

      Удалить
    2. я как раз и пришел примерно год назад в эту контору заниматься шаблонизатором, ибо highload, да и удобно с данными работать.
      с тем последовательно ушли два программера и все повисло на мне. Система в первую очередь ищет, этим и занялся (довольно широкая тема). Пока закрытая версия справляется и так, она на Blitz-шаблонизаторе, тоже шустренький, но как мне кажется, не такой удобный.

      Удалить
    3. два ушли а сколько осталось? И чего ж они ушли, если проект интересный?
      Кстати, название сайта навевает мысли о лепре почему-то :)

      Удалить
    4. Остался один, а нужно по идее 4.
      Есть закрытая (коммерческая) версия. Есть открытая версия, претендующая на высокие нагрузки. И еще куча обвесов и сервисов. Есть еще идея улучшить поиск. Есть еще недописанная следующая версия. Вот такое мое хозяйство.
      Ушли за деньгами и не вернулись)
      Но все реально интересно, вот если бы я еще в этом разбирался нормально)

      Удалить
    5. это будет хорошая запись в CV, судя по всему.

      Удалить
  2. наверное, не без этого.
    за год memcache + memcachedb + питон + Sphinx + xslt + nodejs + postgres
    причем все, кроме питона плотненько так + дальше работаю, сейчас гоняю Sphinx в хвост и гриву, ускоряю индексацию, ибо полный апдейт был НЕДЕЛЮ с индексом на 300 гиг.
    дальше будет кластеризация на перконе или mariadb, порешаем за шардинг
    и засну спокойно)
    пожалуй, не хватает только плотного js-фронтенда, в коммерческих халтурках дергаю из jquery все, что надо, сложного пока не писалось.
    но знаний и теории, ппц как не хватает. не знаю, за что браться.

    ОтветитьУдалить
    Ответы
    1. Вот оно как. Завидую :)
      Браться надо за начало. Если начала не видать, берись за то, что ближе, дальше само пойдет.
      Ну и читать побольше всякого. Я всегда так делаю, помогает :)

      Удалить
    2. После того, как ушел ведущий, не оставил 40 связных строк документации по системе, я поразмыслив, взялся
      а) за ведение документации (приобрели jira)
      б) за фиксы багтрекера. Прикрутил xdebug и понеслась. По мере фиксов узнается система.
      Но есть некоторые вещи, которые реально пока сложно реализовать. Например, нужен API для доступа к коммерческой версии. Какой-то кроссплатформенный что ли. Написать я его напишу, уже кое-что написал. Но сама архитектура для меня - темный лес. Что правильно? Что неправильно? Реализовать на js через пых это правильно? Неизвестно, но принцип дернул у гуглевой капчи))
      Вот какие-то такие затыки.

      Удалить
    3. API нынче модно делать в виде REST-сервиса и комплекта клиентских библиотек. А чтобы сделать REST-сервис, надо аккуратно спроецировать предметную область на сущности с операциями. И все едино, к тому моменту когда будет готова половина работы, захочется все переделать "более правильно". Кстати, по поводу правильно-неправильно http://vasnake.blogspot.com/2012/01/make-it-work-make-it-right-make-it-fast.html

      Удалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)