Pull to refresh
  • by relevance
  • by date
  • by rating

Иллюзии XML/XSLT технологий

Website development *XML *
Иногда в компьютерном мире происходят всплески интереса к той или иной технологии. Всплески не случайные, а явно поддержанные производителями этих технологий. Это и не удивительно, ведь сложно продавать одно и то же, проще продавать что-то новое или старое, но названное иначе. Ничто так хорошо не продается, как функция, которой нет в прошлой модели. Почему так устроен потребитель? А мнение потребителя банально эксплуатируется, ему просто навязывается желание. Крупные производители ПО очень часто исчерпывают рынок сбыта и нуждаются в постоянной смене технологий для того, чтобы продать обновления и просто увеличить цены на программы. Ну и проще отстраиваться от конкурентов, заверяя, что у нас лучшие и новейшие технологии.

Так случилось с XML. Ведь XML — это, в общем-то, ничего нового. XML — это упрощённое подмножество языка SGML, который берет свое начало еще в GML 1960 года выпуска компании IBM. XML, по сути, просто стандартизировал формат обмена информацией и все.

Но случилось чудо, мы получили XML и появился объект для рекламы и производители начали на каждом углу заявлять, что у них уже и базы данных с XML и вообще все пропитано XML.
Читать дальше →
Total votes 27: ↑20 and ↓7 +13
Views 1.9K
Comments 24

jQuery для JavaScript-программистов

Website development *
Translation
Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.

Когда jQuery увидела свет в январе 2006, я подумал: «очередная красивая игрушка». Выбор CSS-селекторов в качестве базиса было, конечно, изящной идеей (подробнее о ней в моей заметке getElementsBySelector), но использование цепочек преобразований выглядело немного замысловато, и сама библиотека, по-видимому, не покрывала всех возможных случаев. Я расценивал тогда jQuery только как временное и проходящее решение.

Только несколько месяцев спустя понял я, насколько же ошибался по отношению к ней. jQuery является просто произведением инженерного искусства. Она умело покрывает достаточно широкой диапазон повседневных функций и предоставляет при этом удобный API для расширений, с помощью которых можно добавить любую другую функциональность. Абстрактность в ней заложена на уровне ядра — речь идет о выборе DOM-элементов — и она извлекает из него максимум пользы. И что важнее всего, использование этой библиотеки подразумевает следование хорошему стилю в программировании и хорошо сочетается с другими частями JavaScript-кода.

Большинство современных обзоров jQuery делают упор на дизайнеров и неопытных разработчиков. Я попытаюсь объяснить, почему она также нужна и опытным программистам.

Читать дальше →
Total votes 47: ↑46 and ↓1 +45
Views 67K
Comments 121

Три редкоиспользуемые оси в XPath

XSLT *
Основная мощь языка XPath заключается в осях, позволяющих добраться до любого элемента в исходном документе. Рассмотрим применение таких редкоиспользуемых осей, как ancestor, descendant и self.

ancestor


Задача: получить атрибут id элемента-«прадеда» foo.

Обычно в таких случаях начинают рисовать лестницы:

../../../@id

Такая запись плоха тем, что малопонятна без знания исходного xml. Автор рекомендует в подобных случаях использовать более информативное выражение:

ancestor::foo[1]/@id

Эта запись не только даёт представление об искомом элементе, но и продолжает работать даже в том случае, когда текущий элемент изменил своё положение в дереве.
Читать дальше →
Total votes 63: ↑61 and ↓2 +59
Views 63K
Comments 16

Шпаргалка по осям в XPath

Lumber room
Вот неплохая, на мой взгляд, шпаргалка по xpath axes

image

Возможно, кому-нибудь да и будет полезной. Я так поначалу просто распечатал и повесил на стенку рядом возле рабочего стола.
Total votes 26: ↑24 and ↓2 +22
Views 2.3K
Comments 4

Плагин для сафари? Запросто!

Development for iOS *
Сегодня мне наконец таки надоело запускать Firefox каждый раз, когда надо быстро выдернуть из сайта XPath для какого-то элемента (там для этого приятное расширение XPather), и я решил таки глянуть, как делать инъекции своего кода в Cocoa-приложения.
Вперед, к коду и скриншотам
Total votes 57: ↑54 and ↓3 +51
Views 1.9K
Comments 11

Игры с XPath

XML *


XML

XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

XML это удобная штука хранить файлы в читаемом виде.

Например простой XML файл может быть таким
Читать дальше →
Total votes 40: ↑22 and ↓18 +4
Views 28K
Comments 22

Ratings Service / Online-сервис + REST API для поиска рейтингов фильмов

Lumber room
Ratings Service — это online-сервис, который позволяет узнать рейтинг фильма по его названию.

image

Отличительные особенности:
  1. поиск по нескольким Интернет-базам одновременно (на данный момент это КиноПоиск.Ru и КиноКопилка.ру)
  2. легкий интерфейс; можно пользоваться с мобильного телефона, например, через Opera Mini
  3. возможность получать результаты выборки в формате XML в стиле REST
  4. хостинг на Google App Engine / Java
  5. Open Source

Я бы хотел рассказать о некоторых особенностях реализации и поделиться впечатлениями работы с Google App Engine / Java. Ниже вы также найдете адрес проекта на Google Code, с выложенными исходными кодами.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Views 615
Comments 3

Проверка равенства, неравенства, идентичности узлов в XPath

XSLT *
С одной стороны, в языке XPath используются знакомые каждому программисту операторы сравнения «равно», «не равно», «меньше», «больше» и другие. С другой стороны, эти операторы умеют работать не только с примитивными типами, но и с целыми наборами узлов. Незнание правил сравнения наборов узлов может привести к некоторым сюрпризам.

Попробуйте быстро ответить на вопрос, чему равно следующее выражение:

foo = 'bar' and foo != 'bar'

Если ваш ответ — false, автор предлагает
Читать дальше →
Total votes 58: ↑52 and ↓6 +46
Views 10K
Comments 52

Mozart: ссылки Вперед — Назад в списочных материалах

Lumber room
Понадобилось мне в разделе Статьи одного из проектов, что использует в качестве базиса Mozart (mozartframework.ru), реализовать в конце каждой статьи ссылку на следующую и предыдущую. Нет ничего проще, дальше по большей части будет инструкция по использованию XSLT.

Читать дальше →
Rating 0
Views 203
Comments 0

Парсинг (разбор) XML документов с помощью CSS селекторов

Symfony *
Translation
Привет. Заметил что постов посвященных Symfony 2.0 все еще не много. Постараюсь это исправить в ближайшее время топиками и переводами про компоненты фреймворка. Сейчас же представляю вашему вниманию перевод статьи с блога Фабьена (Fabien Potencier) который всегда интересно читать. Перевод, возможно не всегда дословный, но смысл я старался передавать четко. Итак начнем.

— HTML и XML документы это как хлеб и масло для веб-разработчиков. День за днем вы, скорее всего, создаете множество HTML документов. И наверняка вам приходится парсить некоторые из них время от времени: потому что вы используете веб службы и хотите извлечь некоторую информацию, или потому, что вы хотите получить данные с нужных веб страниц, или просто потому, что хотите написать функциональные тесты для веб сайта. Получить содержимое достаточно просто, но как его разобрать, чтобы выделить нужную информацию?
Читать дальше →
Total votes 36: ↑29 and ↓7 +22
Views 5.1K
Comments 7

XPath наглядно

XSLT *
XPath является одним из ключевых моментов на дороге к пониманию XSLT. И на первых порах хочется получить какой-нибудь простой способ поэкспериментировать с ним, чтобы в деталях разобраться, как он работает. Способа такого, впрочем, не наблюдается. Приходится или качать совсем не бесплатные XML/XSLT редакторы, или довольствоваться статичными картинками с zvon.org. Может быть, я плохо искал. Но с моей колокольни все обстоит именно так. И когда передо мной в очередной раз встала задача «Объяснить XSLT», в голове и родилась идея крохотного сервиса. После того, как все заработало, было решено выкатить его для всеобщего пользования: наверняка не я один сталкивался с похожими проблемами.
Читать дальше →
Total votes 100: ↑93 and ↓7 +86
Views 58K
Comments 35

Примеры xpath-запросов к html

Website development *
Xpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.
Читать дальше →
Total votes 61: ↑57 and ↓4 +53
Views 412K
Comments 47

Парсинг на Pуthon. Как собрать архив Голубятен

Python *
Sandbox
Статья описывает разработку скрипта на языке Python. Скрипт выполняет парсинг HTML-кода, составление списка материалов сайта, скачивания статей и предварительную очистку текста статьи от «посторонних» элементов. Используется библиотеки urllib (получение HTML-страниц), lxml (парсинг HTML-кода, удаление элементов и сохранение «очищенной» статьи), re (работа с регулярными выражениями), configobj (чтение файлов конфигурации).

Для написания скрипта достаточно базовых знаний языка Python, навыков программирования и отладки кода.

В статье даются пояснения по применению библиотек на примере составления списка публикаций С.М. Голубицкого, приведена ссылка на работающий скрипт.
Читать дальше →
Total votes 60: ↑46 and ↓14 +32
Views 41K
Comments 41

Бесплатная отправка SMS от своего мегафоновского номера с помощью python-скрипта

Python *
Sandbox

Для чего это нужно?


Стоит рассмотреть два уровня использования подобной возможности:
  1. Обычная, бытовая потребность отправки относительно длинного сообщения (если вы конечно не обладаете такой же скоростью печати на телефоне, как и на компьютере)
  2. Необычная, гиковская потребность получать рассылочную информацию там, где нет компьютера, смешанная с нежеланием платить за доставку этой информации лишние деньги

Обычное применение

Итак, наверняка многие сталкивались с ситуацией, когда необходимо написать относительно длинное смс-сообщение:
  • скопипастить кому-нибудь нужную информацию
  • подробно описать какие-нибудь детали встречи, когда у вашего собеседника поговорить нет возможности
  • ну или банально написать что-то в духе тех самых проиндесированных смс-ок :3

Необычное применение

Здесь варианты использования ограничены только вашей фантазией и умениями парсить нужные информационные потоки, например:
  • прогноз погоды
  • заголовки rss-ленты
  • твиттер-лента
  • данные по нагрузке вашего сервера
  • ?????
  • PROFIT!

Читать дальше →
Total votes 42: ↑37 and ↓5 +32
Views 17K
Comments 29

Производительный и читабельный XSLT: сборник советов

XSLT *
Sandbox
В моей практике чаще всего в качестве шаблонизатора используется именно XSLT. Я не буду рассуждать о том, почему так происходит — о преимуществах данной технологии написано вполне достаточно. Но ещё больше написано о её недостатках. Считается, что XSLT является слишком многословным и тяжёлым для чтения, а также не самым производительным. В этой статье я постараюсь собрать несколько советов по улучшению качества XSLT-кода с точки зрения читабельности и выразительности. Некоторые из них также позволят XSLT работать несколько быстрее.

Именованные шаблоны

Многие «проблемы» XSLT связаны с тем, что мы слишком часто пытаемся писать на нём в процедурном стиле. Мы постоянно пытаемся сделать из него Smarty, но упираемся в один простой факт — XSLT является декларативным языком, как бы необычно это для нас не выглядело.
Например, мы пытаемся использовать именованные шаблоны, воспринимая их как процедуры, выводящие данные в определённом формате:

<xsl:template name="CreateItemLink">
    <xsl:param name="item"/>
    <a href="/item/?id={$item/id}">
        <xsl:value-of select="$item/name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Наверное, многие программисты именно так написали свой первый шаблон. И он неплохо решает свою задачу. Декларативный XSLT предлагает немного другой подход:

<xsl:template match="item">
    <a href="/item/?id={id}">
        <xsl:value-of select="name"/>
    </a><br/>
</xsl:template>


* This source code was highlighted with Source Code Highlighter.

Разница совсем не велика. Дело вкуса и стиля программирования. Давайте посмотрим, как шаблон будет использоваться в дальнейшем.

Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Views 8.9K
Comments 50

Grab — python библиотека для парсинга сайтов

Python *
Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.
Читать дальше →
Total votes 80: ↑79 and ↓1 +78
Views 141K
Comments 52

Постинг данных из скрипта во Вконтакт на публичную страницу

Social networks and communities

Недавно ко мне в голову пришла идея засрать публиковать в ВКонтакте данные о погоде на день, так как летом по утрам перед работой я частенько забывал заглянуть на сайт с погодой и одевался совсем не так, как советовали синоптики. В данном топике будут рассуждения по поводу реализации постинга во вконтакте и пример с профитом от того, что у меня получилось сделать.

Идея
Всё началось с идеи — вначале она мне показалась немного скучной, и смысл в реализации я не видел, но подумав дважды (а то и трижды) я понял, что это может принести некоторый профит к моим навыкам. Но об этом ниже :)
Читать дальше →
Total votes 25: ↑15 and ↓10 +5
Views 5.4K
Comments 15

XPath: ускоряем итерацию по NodeList

Java *
При попытке обработки не очень маленького регулярного XML-файла (на самом деле всего лишь около тысячи записей) обнаружил, что итерирование по NodeList вместе с извлечением с помощью XPath начинает существенно тормозить (занимая порядка 2 минут на моём файле), причем тормоза увеличиваются с обработкой каждого следующего узла (node). Эта проблема поднимается также

blog.astradele.com/2006/02/24/slow-xpath-evaluation-for-large-xml-documents-in-java-15

jbwhammie.blogspot.com/2011/02/make-java-xpath-work-on-large-files.html

Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 15K
Comments 14