Как стать автором
Обновить

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

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

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

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

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

Время на прочтение 12 мин
Количество просмотров 69K
Разработка веб-сайтов *
Перевод
Примечание: ниже расположен перевод статьи «jQuery for JavaScript programmers», в которой автор высказывает свое мнение об этой библиотеке, ориентируясь, в первую очередь, на продвинутых программистов, и приводит несколько десятков примеров ее использования.

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

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

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

Читать дальше →
Всего голосов 47: ↑46 и ↓1 +45
Комментарии 121

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

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

ancestor


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

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

../../../@id

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

ancestor::foo[1]/@id

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

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

Время на прочтение 1 мин
Количество просмотров 5.2K
Чулан
Вот неплохая, на мой взгляд, шпаргалка по xpath axes

image

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

Firefinder — Быстрый доступ к тому, что Вы хотите увидеть

Время на прочтение 1 мин
Количество просмотров 1.6K
Разработка веб-сайтов *
Перевод
скриншот

Роберт Ниман создал новый плагин для FireBug под названием FireFinder.
Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 16

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

Время на прочтение 10 мин
Количество просмотров 2.1K
Разработка под iOS *
Сегодня мне наконец таки надоело запускать Firefox каждый раз, когда надо быстро выдернуть из сайта XPath для какого-то элемента (там для этого приятное расширение XPather), и я решил таки глянуть, как делать инъекции своего кода в Cocoa-приложения.
Вперед, к коду и скриншотам
Всего голосов 57: ↑54 и ↓3 +51
Комментарии 11

Игры с XPath

Время на прочтение 4 мин
Количество просмотров 29K
XML *


XML

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

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

Например простой XML файл может быть таким
Читать дальше →
Всего голосов 40: ↑22 и ↓18 +4
Комментарии 23

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

Время на прочтение 6 мин
Количество просмотров 1.3K
Чулан
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, с выложенными исходными кодами.
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 3

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

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

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

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

Если ваш ответ — false, автор предлагает
Читать дальше →
Всего голосов 58: ↑52 и ↓6 +46
Комментарии 52

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

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

Читать дальше →
Рейтинг 0
Комментарии 0

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

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

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

Использование XPath для указания ссылок на объекты

Время на прочтение 6 мин
Количество просмотров 2K
Чулан
Данный топик рассказывает о возможности использования XPath для выбора объектов из базы данных в случаях, когда использование SQL нежелательно.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 11

XPath наглядно

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

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

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

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

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

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

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

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

Время на прочтение 5 мин
Количество просмотров 20K
Python *
Из песочницы

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


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

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

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

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

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

Читать дальше →
Всего голосов 42: ↑37 и ↓5 +32
Комментарии 29

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

Время на прочтение 7 мин
Количество просмотров 9.6K
XSLT *
Из песочницы
В моей практике чаще всего в качестве шаблонизатора используется именно 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.

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

Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 50

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

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

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

Время на прочтение 3 мин
Количество просмотров 9.3K
Социальные сети и сообщества

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

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

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

Время на прочтение 5 мин
Количество просмотров 16K
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

Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 14