Регулярные выражения (regexp)

комментариев 18

Регулярные выражения (regexp)

Регулярные выражения (regexp, англ. regular expressions, жарг. регэкспы или регексы) — современная система поиска текстовых фрагментов в электронных документах, основанная на специальной системе записи образцов для поиска.

Вдогонку к моей заметке про регулярные выражения нашлось ещё несколько полезных ссылок на новые сервисы автоматической проверки и конструирования регэкспов.

  • Шпаргалка по регулярным выражениям — на стенку.
  • RegexPal: Скрипт, который позволяет на лету создавать и проверять паттерны регэкспов средствами JavaScript. Подсвечивает синтаксис и содержит подсказки. Кстати, этот скрипт можно сохранить — он работает независимо от сервера.
  • Regexp.ru: Проверяет регэкспы средствами PHP (preg_match_all).
  • REGex Tester: Проверяет регэкспы средствами PCRE, POSIX или JavaScript.
  • Java Regexp: Проверяет регэкспы на Java.

Морфологический анализатор для PHP-скриптов

комментария 24

Морфологический анализатор для PHP-скриптовДолго мы ломали над этим голову… Морфология русского языка весьма сложная штука в плане алгоритмизации. Но использование в практически любом проекте морфологизатора, например, для поиска или подбора — даёт проекту неплохой бонус в удобстве использования.

Самый удачный, быстрый и простой в использовании морфологизатор я нашёл совсем недавно. Это phpMorphy. и он умеет следующее:

  1. Определение словоформ слова;
  2. Определение корня слова;
  3. Определение начальной формы слова.

Если нужно реализовать поиск с учётом словоформ, то это совсем просто — нужно просто получить корень слова с помощью phpMorphy ( $root = $morphy->getPseudoRoot($words); ) и провести поиск по базе данных SQL-оператором LIKE.

Сам скрипт занимает не больше 30 Kb, а русский словарь для него - 2.5 Mb.

Справедливости ради отмечу, что рассматривались и другие морфологические скрипты.

Определяем Google PR и Яндекс ТиЦ в PHP

комментариев 25

PHPВот несколько простых функций, которые позволяют скрипту получить значения классических пузомерок (ТиЦ, PR) для страницы или сайта средствами PHP, может кому-нибудь пригодятся. Не требуют от сервера ничего сверхъестественного — PHP и возможности внешних соединений будет вполне достаточно.

скачать PHP скриптGetPR.phps — получение Google PR в виде числа.

скачать PHP скриптGetCY.phps — получение тулбарного Яндекс ТиЦ в виде числа.

Ещё Яндекс ТиЦ можно получить из каталога в виде картинки вот таким образом:

<img src=http://www.yandex.ru/cycounter?$uri>

Картинка, взятая по этому адресу покажет favikon`ку сайта, закешированную Яндексом.

<img src=http://favicon.yandex.net/favicon/$uri/>

$uri в этих примерах — нужный адрес сайта без http:// и www.

5 инструментов моей продуктивности

комментариев 26

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

1. Mandriva Linux 2008 Free + комплект из Apache, PHP и MySQL.
Эта система меня порадовала и я её уже не хочу ни на что менять. Стабильность, открытость, понятность.

2. Firefox с плагином Firebug.
Комплект, который работает как швейцарский нож для разработчика. Осторожно, может вызывать лень. Хотя сейчас ещё Opera качаю — не для серфинга (мне неудобно), а для контроля верстки.

3. Google и его сервисы - GMail, Reader, Docs.
Поисковик, отличная почта, RSS-читалка и онлайн-офис. Удобный комплект.

4. Pidgin IM.
ICQ, Jabber, IRC, … — клиент. Надо бы к нему ещё Skype прикрутить.

5. Audacious.
Аналог XMMS и WinAmp. В отличие от второго — работает под Linux, в отличие от первого — не имеет проблем с кривыми русскими кодировками в тегах. Почему он в этом списке? Люблю работать под музыку.

А какие инструменты постоянно используете вы?

Обновление дизайна блога

комментариев 25

В ближайшие дни будет глобальное обновление блога, которое я давно собирался сделать. Версии WordPress и всех плагинов станут последними, дизайн уже готов — его разрабатывает отличный дизайнер под моим чётким руководством. Осталось немного доработать ветвление комментариев и OpenID-авторизацию — вечная головная боль в WordPress.

Будут небольшие косметические изменения. Например, больше не будет категорий — в данном блоге я не вижу в них смысла. Изменится форма добавления комментариев — мы изрядно поработали над её удобством. Исчезнет всплывающая подсказка над ссылками — она, кажется, только мешает. Вместо списка последних комментариев в сайдбар будут выводиться теги.

Дело осталось за малым — выловить все мелкие баги в свежесозданной теме и отловить их.

Недорогая регистрация доменов

комментариев 18

Домены .RU по 300 рублейПрикрутил к блогу партнерскую панель для регистрации доменов по довольно выгодным ценам.

Цены на данный момент такие:

.RU - 300 рублей (~12$)

А так же: .SU — 500 рублей (~22$) и COM, NET, ORG, BIZ, NAME, INFO, MOBI, EU, WS — 400 рублей (~16$). Домены регистрируются на имя и паспортные данные клиента в автоматическом режиме. Оплата производится с помощью WebMoney и смежных сервисов.

Да, я знаю, что если очень постараться — можно оптом выкупить дешевле, но средняя цена на домены .RU у регистраторов и хостеров держится на отметке 600 рублей. Я предлагаю в 2 раза дешевле.

Referer: от причины к следствию

комментариев 19

PHPВы когда-нибудь интересовались, по каким словам ваш сайт или блог находят люди, приходящие с поисковиков? Иногда от души ржу, просматривая статистику, собранную плагином WP-ShortStat. Но пока мы смеёмся, умные люди используют этот подарок разработчиков браузеров — переменную HTTP_REFERER, в которой всегда содержится эта информация.

Некоторые онлайн-магазины используют эти данные для простейших поведенческих механизмов. Например, пользователю, пришедшему по запросу «купить телевизоры», всё его время пребывания на сайте будет показываться реклама спецпредложений по продаже телевизоров. Это значительно увеличивает конверсию посетителей в покупатели.

Основной поток посетителей (с ПС) любого сайта можно разделить на ветви по нескольким ключевым словам и сделать сайт динамическим в зависимости от того, что искал пользователь. Вот простейший PHP-скрипт для определения ключевых слов, по которым на ваш сайт пришли с Yandex, Google, Altavista,Mail.ru, Rambler и Yahoo.

<?php
if (!is_empty($ref = $_SERVER['HTTP_REFERER']))
{
// $ref="http://go.mail.ru/search?q=%C6%E8%EB%E8%ED%F1%EA%E8%E9"; // проверили, работает.
$uri = parse_url($ref);
$host = isset($uri['host'])?strtolower($uri['host']):'';
parse_str($a = $uri['query'],$query);
if (preg_match('~\.yandex\.ru$~',$host)) {$search_query = $query['text'];}
elseif (preg_match('~\.google~',$host)){$search_query = $query['q'];}
elseif ($host == 'www.altavista.com') {$search_query = $query['q'];}
elseif ($host == 'go.mail.ru') {$search_query = $query['q'];}
elseif ($host == 'www.rambler.ru') {$search_query = $query['words'];}
elseif (preg_match('~\.search.yahoo.com~',$host)) {$search_query = $query['p'];}
else {$search_query = '';}
require("a.charset.php");
$search_query = charset_x_win($search_query);
}
echo $search_query;
?>

Переменную $search_query вместо отображения можно сравнивать с чем-нибудь и на основе результата строить какую-то динамику. Функция charset_x_win из класса a.charset.php просто приводит фразу к правильной русской кодировке. Кстати, если немного поколдовать — можно ещё получить номер страницы выдачи, с которой пришёл пользователь.

Perl 5.10.0 \ ActivePerl 5.10.0 Build 1001

комментариев 5

Perl 5.10Сегодня организация Perl Foundation сообщила о выпуске языка Perl 5.10.0, а через четыре часа ActiveState выпустила ActivePerl 5.10.0 Build 1001.

В новой версии Perl есть ряд существенных изменеий. Например :

  • улучшения в работе с регулярными выражениями;
  • усовершенствования в работе с UTF-8;
  • появление «умного» оператора поиска соответствий;
  • доработанный интерпретатор, подсистема выдачи сообщений об ошибках и механизм распределения памяти.

Релиз Perl 5.10 во многом примечателен: во-первых, выпуск состоялся на 20-летнюю годовщину с момента выхода Perl 1.0 (18 декабря 1987 года ), во-вторых, это первое столь существенное обновление за многие годы — в состав модификации PERL 5.10 вошла часть возможностей языка PERL 6, который разрабатывается с 2000 года.

База синонимов слов

комментария 22

В наш век Web 2.0 и прочих радостей программы должны быть максимально умными и понимать человека с полуслова, причём даже если это не совсем то слово. На этот счёт в голову приходит мысль о том, что если программа получает от пользователя какие-либо данные в виде слов (строка поиска, теги, команды, ещё что-то), то лучше всего будет не просто использовать полученный текст, а проверить его на ошибки, морфологию и синонимы.

С морфологическим анализатором мы ещё разбираемся (есть у Drupal и есть у Яндекса, оба своеобразны). А вот с синонимами всё сложнее — до сих пор не существует хотя бы более-менее применимого алгоритма и базы синонимов. Результат работы любого современного синонимайзера — полный бред с точки зрения человека. Видимо, не сошлись ещё дороги программистов и лингвистов. Но если тексты обрабатывать не нужно, а только, например, строку поискового запроса, то базы найти можно.

Вот, например, результат парсинга словаря русских синонимов и сходных по смыслу выражений Н. Абрамова (18151 слово и 68729 синонимов) и ещё одна (отличающаяся) база синонимов, чей источник мне к сожалению не известен (5371 слово и 20296 синонимов).

Формат файлов — текстовый, по одному слову на строчку в алфавитном порядке, далее через спецсимвол идут синонимы.

Словарь русских синонимов и сходных по смыслу выражений. Н. Абрамов. База синонимов русского языка

Linux для разработчика

комментариев 48

MandrivaС подачи руководства (скоро новый год, новые законы, новые штрафы) решили в техотделе провести эксперимент — выбрать оптимальную платформу для своей работы в плане удобства и цены.

Метод был выбран двоякий — с одной стороны производилась оценка себестоимости смены платформы и покупки необходимого ПО под неё, с другой стороны — скачивалось всё подряд и тестировалось на рабочей станции, пробном сервере, компьютере дизайнера и моём ноутбуке (Dell Inspiron 1300).

Выводы показались мне настолько интересными, что я решил ими поделиться.

1. Рабочая станция рядового сотрудника (менеджера\кладовщика, с бухгалтерами пока сложнее). Почтовый клиент, браузер, оффис с MS-совместимостью и терминальный клиент, аналогичный mstsc. Принятое решение — Xubuntu 7.10. Просто и без лишнего, быстро и стабильно.

2. Сервер. Серверная надёжность, серверный комплект программ и полная пуленепробиваемость. Классическое решение — FreeBSD 6.2.

3. С дизайнером оказалось сложнее — я догадываюсь, что все используемые издательские платформы есть и под Linux, но переучить человека на что-то альтернативное не всегда реально — есть проблемы и со шрифтами, и с их сложными дизайнерскими цепочками преобразований, и с форматами файлов. Но использование Windows показало себя в этом аспекте самым невыгодным. Как ни странно, покупка компьютера от Apple с лицензионным комплектом тех же программ, что используются и под Windows, обойдётся дешевле. Нужно ли говорить о реакции самого дизайнера ? …

4. Со своим ноутбуком я провозился долго. Хотелось и красиво и удобно и чтобы сразу всё работало. В том числе и Wi-Fi модуль, и видеокарта Intel, заточенная под широкоформатный дисплей.

Были перепробованы Ubuntu (не впечатлило, с драйверами проблемы), ArchLinux (я на ассемблере не программировал, я хочу что-то более простое в настройке), Suse Linux (отличная подборка драйверов и жуткая нестабильность, я бы даже сказал, суицидальность).

Потом я решил попробовать уже знакомую мне Mandriva и эта система меня покорила. Быстренькоустановилась, ничего не попортив, да ещё и исправив ошибки на диске с Windows (оставлю её пока, тем более, что лицензия куплена), быстро сообщила какой файлик докачать чтобы заработала Wi-Fi карточка, прямо из коробки заиграла MP3, DVD, AVI и даже WMA, распознала безумную кодировку русских тегов в моей музыке, радостно сообщила, что полнофункциональный комплекс из Apache, PHP и MySQL со всеми нужными модулями уже настроен и работает, а моё желание подурачиться на выходных удовлетворила опять же встроенная в однодисковый DVD-дистрибутив OpenArena, свободно подключающаяся к любому Q3-серверу в сети или интернете. И это ещё не всё, огромное количество полезностей и удобностей, которые работают в мандриве без бубна — это нечто.

Вот так я совершил для себя небольшой исторический переворот — перешёл на свободное программное обеспечение.


© 2007-2026 Блог разработчика, страница об авторе.