войти зарегистрироваться

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

При попытке обработки не очень маленького регулярного 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

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


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

Идея
Всё началось с идеи — вначале она мне показалась немного скучной, и смысл в реализации я не видел, но подумав дважды (а то и трижды) я понял, что это может принести некоторый профит к моим навыкам. Но об этом ниже :)

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

Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.

XSLTПроизводительный и читабельный 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.

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

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

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


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

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

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

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

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

PythonПарсинг на Pуthon. Как собрать архив Голубятен из песочницы

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

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

В статье даются пояснения по применению библиотек на примере составления списка публикаций С.М. Голубицкого, приведена ссылка на работающий скрипт.

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

Xpath — это язык запросов к элементам xml или xhtml документа. Также как SQL, xpath является декларативным языком запросов. Чтобы получить интересующие данные, необходимо всего лишь создать запрос, описывающий эти данные. Всю «черную» работу за вас выполнит интерпретатор языка xpath.
Очень удобно, не правда ли? Давайте посмотри какие возможности предлагает xpath для доступа к узлам веб-страниц.

Python«LXML» или как парсить HTML с лёгкостью

Описание библиотеки


«lxml» — это библиотека для парсинга, основанная на библиотеках C (Си) libxml2 и libxslt. Она обладает хорошей скоростью работы и простотой использования. Данная библиотека предоставляет «питонический» API и очень схожа на «ElementTree» API.
«lxml» обладает большими плюсами:
  • Соответствие стандартам XML
  • Поддержка невалидного HTML-кода
  • Активная поддержка библиотек экспертами
  • Скорость
  • Многофункциональность
  • Безопасность (нет проблем с памятью)

Единственный минус — данную библиотеку нельзя использовать в «GAE» и в других местах, где используют встроенный python.

Скачать последнюю (2.3) на текущий момент версию можно здесь.
Официальную документацию в PDF-формате можно почитать здесь.

XSLTXPath наглядно

XPath является одним из ключевых моментов на дороге к пониманию XSLT. И на первых порах хочется получить какой-нибудь простой способ поэкспериментировать с ним, чтобы в деталях разобраться, как он работает. Способа такого, впрочем, не наблюдается. Приходится или качать совсем не бесплатные XML/XSLT редакторы, или довольствоваться статичными картинками с zvon.org. Может быть, я плохо искал. Но с моей колокольни все обстоит именно так. И когда передо мной в очередной раз встала задача «Объяснить XSLT», в голове и родилась идея крохотного сервиса. После того, как все заработало, было решено выкатить его для всеобщего пользования: наверняка не я один сталкивался с похожими проблемами.

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

Данный топик рассказывает о возможности использования XPath для выбора объектов из базы данных в случаях, когда использование SQL нежелательно.