Pull to refresh
21
0
Send message

Вероятностный морфологический анализатор русского и украинского языков на PHP

Reading time3 min
Views3.5K
Перед каждым разработчиком сайтов рано или поздно становится вопрос о реализации поиска по сайту. Желательно чтобы поиск был по основе слова, т.е. не учитывал окончания слов. Для этой цели используются программы стеммеры, которые и выделяют из слова основу. Многие стеммеры работают на основе словаря, и вот чтобы не использовать огромные словари в небольших и средних проектах можно использовать вероятностный морфологический анализатор. Его отличительная особенность в относительно малом размере базы данных и соответственно в отсутствии нагрузки на базу. Без больших потерь в качестве выделения основы.

Стемминг — это процесс нахождения основы слова для заданного исходного слова. Основа слова необязательно совпадает с морфологическим корнем слова. Алгоритм стемминга представляет собой давнюю проблему в области компьютерных наук. Данный процесс применяется в поиcковых системах для обобщения поискового запроса пользователя.
Конкретные реализации стемминга называются алгоритм стемминга или просто стеммер.

Заинтриговал?
Total votes 21: ↑20 and ↓1+19
Comments16

Ubuntu, fake DNS Server или настройка локального DNS сервера для веб-разработчика

Reading time3 min
Views8.3K
Зачем это надо.
На рабочей станции разработчика есть NN локально поднятых проектов. Этот разработчик для каждого проекта проделывает следующее:
  1. Для работы с локальной копией проекта редактирует конфиг своего веб сервера (apache, lighttpd etc.) и указывает в конфиге имя хоста для этого локального проекта.
  2. Потом перезапускает веб сервер.
  3. Потом идет редактировать /etc/hosts Прописывает там имя нового хоста и локальный ip.
  4. Потом выясняет что этот прописанный хост перекрывает тот, что внезапно нужен в интернете, или он ошибся когда прописал имя в конфиге веб-сервера или в hosts.
В итоге всего этого занудства как правило тратится драгоценная нервная энергия которую можно потратить более эффективно на что-то поинтереснее.

Что я предлагаю сделать.
Читать дальше →
Total votes 15: ↑7 and ↓8-1
Comments22

Знакомство с библиотекой libevent на примере создания простейшего Web-сервера картинок

Reading time7 min
Views11K
В данной статье я покажу как используя библиотеку libevent, написать простейший Web-сервер, который будет по запросу клиентов выдавать файлы jpeg картинок.

Библиотека libevent предоставляет программистам доступ к кроссплатформенному асинхронному сетевому API. На основе данной библиотеки можно создавать высокопроизводительные сетевые приложения. Например, libevent используется в таких известных приложениях как Memcached (распределённая система кэширования) и TOR (распределённая анонимная сеть).

Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments10

«О пользе солнцезащитных кремов» или какой совет дали бы Вы?

Reading time1 min
Views546
Пятничный пост добра!
Алекс Дубас & Ёлка «О пользе солнцезащитных кремов»

кто не видел смотрите и заряжайтесь позитивом.
Для чего это?
Читать дальше →
Total votes 47: ↑24 and ↓23+1
Comments11

Шаблонизатор PHPTAL

Reading time3 min
Views891
У данного шаблонизатора подход, который отличается от прочих типов шаблонизаторов. И это не может не заинтересовать.
По запросу PHPTAL хабр выдает только одну ссылку,
TAL — это Атрибутивный Язык Шаблонов. Он так называется, потому что команды языка являются атрибутами тегов.
читать дальше
Total votes 28: ↑13 and ↓15-2
Comments17

Редакторы кода с помощью javascript

Reading time2 min
Views1.4K
Очень часто в web-проектах надо использовать визуальный редактор кода (richtext code editor), похожий на существующие IDE, с номерами строк и подсветкой кода. Наиболее часто он используется в редактировании исходного кода статьи или шаблонов в админке. В этой статье я перечислю существующие скрипты по аналогии со списком WYSIWYG-редакторов.
Практически все существующие визуальные редакторы создают iframe и генерируют внутри страницу в соответсвии с данными javascript-объекта, занимающимся всеми задачами по генерации кода и обработке клавиш.
Основанные на iframe:
  • EditArea — наиболее популярный редактор благодаря табуляции, gzip, совместимость пространства имён с другими библиотеками
  • CodePress — парсит SQL, Perl, C#, XSL, ASP, VBscript. Отдельные движки для разных браузеров (gecko=firefox, ie, opera). Создаётся iframe со внутренним CodePress'объектом с обращением через contentWindow. Сразу внутри скрипта идёт поиск textarea-элементов по классу, так что с динамическими ajax-редакторами прийдётся изменять скрипт. Кроме того нумерация (до 1500) строк сделана при помощи одной картинки
  • CodeMirror — парсит JS, HTML, CSS

Напомню что iframe не соответсвует XHTML спецификации, а с использовать
предложенный тэг object с не сильно получится, из-за ограничения на
доступ внутренних dom-элементов (поправьте если я неправ).
Основанные на div'ах
  • MDK-editor — самый нормальный редактор, есть контекстное меню. В минусы можно отнести некрасивый скин, небольшую тормознутость и неизвестную лицензию на использование.
  • Helene — вместо iframe используется фоновый div и динамически позиционируемая textarea поверх. Поскольку изменяется только один ряд, то невозможно выделить нескольких строк сразу
  • 9ne — похож на консоль, но нет возможности выделения всей строки Shift+End. Эмулирует каретку мигающим div'ом.

PS. Аннонсирую что в скором времени выйдет блог-движок моего производства…

Оригинал
Total votes 17: ↑16 and ↓1+15
Comments7

Морфологический поиск

Reading time3 min
Views7.1K
Точный поиск, реализуемый в базах данных это очень хорошо, когда дело касается точных фраз. Но что делать, когда среди документов есть Киевская карта но нету Карты Киева? В дело включаются языковые фильтры.Во-первых уже на лексическом уровне становится сложно оперировать с монолитным блоком текста что-бы учитывать всевозможные перестановки слов и расстояния между ними. Во-вторых, чем глубже копать в язык, тем ясней становится то, что семантический web — невероятно сложная планка для автоматических анализаторов и генераторов каких-то образов и моделей, что уж говорить про то что-бы написать RDF вручную.Морфология изучает изменение формы объектов в разных областях науки (ботанике например). Поэтому есть два пути — либо
учитывать все формы при поиске, либо вырезать корень слова и искать
только по нему. Последний способ называется stemming, отличается
быстротой, простотой и не нуждается в словарях. Именно его используют Битрикс и MS Sharepoint, Sphinx. Проблемы возникают со словами где корень изменчив (бег-бежать, расти-прирост, лев-львица). Я не буду рассказывать про стемминг, посмотрите как это реализовано php с русской морфологией. Меня больше интересуют словари. Национальный корпус русского языка приводит примерно какие характеристики могут иметься у любого слова. Теперь мы плавно подходим к пониманию того что нам необходима современная морфологическая база слов (RMU, AOT), прототип для семантической сети.

Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments11

Эффективный поиск по сайту. Постановка проблем — поиск решений.

Reading time7 min
Views3.8K
Это перепечатка статьи Ивана Никитина, которая в сентябре была опубликованна на нашем сайте Nomagic.ru. Данная статья содержит только постановку задачи и обсуждению возможных решений. Ссылки на статьи с описанием решения поставленной задачи c помощью LiveSearch API на ASP и PHP можно найти в конце статьи.



У любого современного сайта, на котором присутствуют более 5 – 10 страниц с контентом, должна быть поисковая система. Как бы хорошо мы не планировали навигационную панель, или каталог товаров/разделов сайта, все равно любые наши попытки интуитивно-понятной систематизации, в конечном итоге, будут непонятны 101-му пользователю сайта.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments15

mod_rewrite — просто о сложном

Reading time4 min
Views63K

Что это такое?


mod_rewrite — это модуль для веб-сервера Apache, предназначенный для преобразования URL-ов. Модуль использует в своей работе правила, которые могут быть описаны как в конфигурации сервера (httpd.conf), так и в файлах .htaccess непосредственно в файловой структуре Вашего сайта. Правила описываются в виде регулярных выражений PCRE

Hello world


Простейший пример. Допустим, Вы захотели, чтобы никто не знал, что Ваш сайт написан на PHP и решили замаскировать расширения файлов. Можно, конечно, внести соответствующую директиву в конфигурацию Apache и тогда все файлы с расширением ".msl" («My Super Language») будут обрабатываться интерпретатором PHP. Но можно поступить проще:
создаем в корне нашего сайта файл .htaccess со следующим содержимым
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.msl$ $1.php [QSA,L]


Первая директива включает механизм mod_rewrite в текущей папке и во всех ее подпапках. Вторая указывает модулю mod_rewrite, что текущая папка в файловой системе соответствует корню сайта. Третья — непосредственно правило преобразования URL.

Прочесть его можно так:
Если сразу после начала строки ("^") идет произвольное количество любых символов ( "(.*)" ), причем мы хотим запомнить, что именно это за символы, окружая их скобками, затем идет точка ("\.") (экранируем точку, потому что одиночная точка — это просто любой символ), затем символы «msl» и на этом строка заканчивается ("$"), то заменим исходный URL на следующий: возьмем первую запомненную подстроку в скобках из правила, прибавим к ней ".php", добавим все дополнительные параметры адреса, которые могли быть "[QSA]" и на этом закончим, не будем применять дальнейшие преобразования, если они есть "[L]"

Все, теперь Вы можете смело менять все ссылки, заканчивающиеся на ".php" на ".msl" и писать в своем блоге, что изобрели новый скриптовый язык. Apache, встретив ссылку на «index.msl» с помощью mod_rewrite на лету преобразует ее в «index.php» и вызовет нужный скрипт.

А что еще умеет mod_rewrite?


Читать дальше →
Total votes 45: ↑33 and ↓12+21
Comments12

Свой минимальный grid CSS-фреймворк. Что в нем должно быть?

Reading time2 min
Views1.6K
Сделав вид, что не знаю о холиварах вокруг css-фреймворков и ненависти к велосипедам, поделюсь своими мыслями («Еще один все понял» © Лепрозорий) по поводу надобности и удобства использования сабжа.

Их есть куча и они обладают своей идеологией, а, например 960gs, Blueprint, YUI grids — самые мне известные и опробованные на собственной коже.
Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments15

Кэшинг пакетов для Composer

Reading time8 min
Views20K
Используя современный подход к разработке проектов начинаешь пользоваться прелестями менеджера пакетов, в случаe с разработкой на PHP это Composer. В данной статье мы кратко рассмотрим Composer и далее речь пойдёт о настройке локального кэша пакетов.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments9

Symfony CMF. Часть 1, хранение данных

Reading time18 min
Views34K
image

Вместо предисловия


Я программирую на Yii уже два года и в последнее время начал засматриваться на Symfony Framework 2. Отчасти меня привлекает продуманная архитектура, отчасти слабая связность компонентов, отчасти гибкость построенных приложений. Сразу после того, как я разобрался с основным устройством нового фреймворка, мне стало интересно, возможно ли на нем построить CMS, а может быть, даже воспользоваться готовой.

Коробочного решения пока не придумали, однако, каким-то образом я забрел на сайт проекта Symfony CMF и оказался сражен наповал методичным подходом к решению тех проблем, с которыми я сталкивался в бытность работы на конвеере по натягиванию дизайна на какой-нибудь Друпал. На Хабре публикаций про именно CMF нет, да и сам проект еще очень сырой, однако в перспективе выглядит все интересно, хоть местами и есть к чему придраться.

Symfony CMF


Проект Symfony CMF призван упростить разработку функционала, присущего CMS, для всех, кто использует в работе Symfony Framework 2.
Основные особенности проекта:

  • слабая связность компонентов
  • масштабируемость
  • удобство
  • тестируемость

Стоит сделать акцент на слове CMF — проект не является CMS сам по себе, это именно фреймворк. В отличие от CMS, где все компоненты жестко завязаны друг на друге, в Symfony CMF вы:

  • используете все, что хочется
  • заменяете то, что не нравится
  • игнорируете то, что не требуется

То есть, вам дан набор модульных инструментов для разработки, а не готовое приложение «под ключ», хотя уже разработаны базовые бандлы, обеспечивающие CMS-функционал.
Зачем еще один CMF?
Total votes 37: ↑33 and ↓4+29
Comments17

Unix как IDE: Работа с текстом

Reading time6 min
Views28K
Текстовый редактор — это основной инструмент для любого программиста, вот почему вопрос его выбора становится причиной яростных дебатов. Unix традиционно тесно связан с двумя своими многолетними фаворитами, Emacs и Vi, и их современными версиями GNU Emacs и Vim. Эти редакторы имеют очень разный подход к редактированию текста, но при этом сравнимы по мощи.

Поскольку я отношусь к секте Vim, далее мы обсудим неисчерпаемые возможности этого редактора, а также инструменты командной строки, вызываемые прямо из Vim для расширения встроенной функциональности. Некоторые из обсуждаемых дальше принципов могут быть применимы и для Emacs, но не для простых редакторов, вроде Nano.
Читать дальше →
Total votes 71: ↑61 and ↓10+51
Comments34

Архитектура форм в Symfony2

Reading time10 min
Views24K
Картинка для привлечения внимания

В Symfony 2 появился совершенно новый компонент для работы с формами, который, насколько я знаю, легко заменит большинство подобных библиотек для PHP и по функционалу, и по возможности в расширении оного (конечно, если не брать в расчет небольшие недостатки при работе с JavaScript). Разработка этого компонента заняла более двух лет, хотя думать над ним я начал еще где-то в 2009-ом году или даже раньше. С каждой новой версией этот компонент становится все более и более стабильным, а полностью стабильная версия ожидается с выходом Symfony 2.2.

Данный пост приурочен к выходу Zend Framework 2 Form RFC, так как мне кажется, что его разработчики, по сути, сделали много того, что уже было сделано нами. Конечно же всем ясно, что Zend Framework 2 должен обладать прослойкой для работы с формами, который полностью учитывает особенности компонентов, поставляемых с фреймворком. Целью данного поста является попытка показать, что Symfony2 Forms прекрасно подходит под эти требования. Функционал, присущий Symfony2, может быть легко убран: код для обработки форм и все уровни абстракций полностью независимы. Привязать же поддержку особенностей компонентов Zend-а так же не составит труда.

Создание обобщенной библиотеки для работы с формами, которая покрывает все возможные сценарии использования, возникающие при разработке, было непростым испытанием, долгим и сложным делом, которое, к тому же, еще не завершено. Сотрудничество и дальнейшее совместное развитие должно помочь добиться более гибкого и простого управления формами из PHP.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments110

Завершён перевод книги «Pro Git»

Reading time1 min
Views194K
Что может быть лучшим подарком на день знаний для программиста? Конечно, полезная книга ;) Поэтому команда переводчиков «Pro Git» поднапряглась и доделала перевод книги на русский язык.

«Pro Git» — это довольно обширная обучающая книга о Git от Скотта Шакона — активного участника разработки проектов Git и GitHub. Автор рассматривает в тексте всевозможные аспекты работы с Git'ом, начиная с установки программы и базовых принципов работы децентрализованных систем контроля версий, и заканчивая рассмотрением внутреннего устройства Git'а и созданием валидных объектов в базе Git'а собственными руками. Несмотря на довольно обширный материал и затрагивание довольно специфических тем, книга написана довольно простым языком, содержит массу примеров и иллюстраций, и поэтому должна быть понятна и новичкам, только начинающим знакомиться с системами контроля версий.

Последняя версия перевода книги доступна в форматах pdf, epub, mobi.
Также доступна онлайн-версия перевода, но она, к сожалению, не обновлялась с мая.
Читать дальше →
Total votes 141: ↑135 and ↓6+129
Comments55

Документация к cms Fine Cut Engine

Reading time7 min
Views3.9K
Всем доброй пятницы!


Может быть кому-нибудь пригодится: Fine Cut Engine?

Это админка для сайта-визитки.

В настоящий момент документация Fine Cut Engine есть только на английском, топик предназначен для исправления этого недочета. Upd: для удобства ссылка на downloads.

Заявленные Фичи:
— Keep it Simple: настолько, насколько было возможно
Без базы данных o_0
— Free from Fat: практически отсутствует back-end
— Free to Use: MIT или GPL
— Хорошо интегрируется: можно включить всё что угодно в шаблон
— Без попкорна: это не кино
— Там нет ложки: мы помним The Matrix :)

UPD 1: элементарная файловая «CMS» с одно-страничным web 2.0 UI, ни малейшего намёка на излишества, и силу этой же специфики — весьма шустро отдающая запросы (как, впрочем, и множество подобных), спасибо heathen за комментарий. В работе с подобными движками лично меня постоянно не устраивала необходимость переходов по ссылкам при создании содержимого, а так же не хватало дерева в котором будет виден URL редактируемой страницы и структура сайта в целом.

UPD 2: в самой глубине документации есть ссылка на Google Grops.

UPD 3: сайт проекта это его же дефолтный шаблон (Twitter Bootstrap) с дефолтным же содержимым.
В админке используется jQuery с разными компонентами, а так же elFinder и ACE Editor (тот самый что и в Cloud9 IDE), knokout.js, замечательный плагин для JSON (перечень «всего» тут ).

Приступим ?
Total votes 33: ↑24 and ↓9+15
Comments8

UICloud: Самая большая база пользовательских интерфейсов

Reading time1 min
Views34K


UICloud — это база бесплатных пользовательских интерфейсов с поисковой системой, рейтингом и каталогизатором в которой собрано все от исходников в формате PSD, до готовых решений на HTML, CSS или jQuery: формы, слайдеры, кнопки, календари, элементы и полноценные интерфейсы для мобильных и веб приложений. В проекте уже сейчас можно найти практически все что нужно для облегчения процесса разработки дизайнерам и разработчикам.

На данный момент в базе 23586 элементов и почти тысяча UI-сэтов включающие в себя готовые решения в едином стиле. Проект создан Британской студией Double-J Design целью проекта является создание самой обширной UI базы.
Total votes 163: ↑161 and ↓2+159
Comments40

Реализация MVC паттерна на примере создания сайта-визитки на PHP

Reading time16 min
Views717K
mvc

Как вы уже догадались из названия статьи, сегодня речь пойдет о самом популярном, разве что после Singleton, шаблоне проектирования MVC, хотя такое сравнение не совсем уместно. Понимание концепции MVC может помочь вам в рефакторинге и разрешении неприятных ситуаций в которые, возможно попал ваш проект. Дабы восполнить пробел, мы реализуем шаблон MVC на примере простого сайта-визитки.

Читать дальше →
Total votes 80: ↑46 and ↓34+12
Comments175

Скрипт мониторинга процессов MySQL на Perl

Reading time6 min
Views6.8K
Всем привет.

Более пяти лет я работаю системным администратором в хостинговой компании, обслуживаю более сотни серверов с freebsd и centos. За это время накопилось много самописных скриптов, облегчающих мне жизнь. Этими скриптами хочу поделиться с сообществом, да и выслушать здоровую критику никогда не помешает.

Предыстория.
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments10

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

Reading time6 min
Views134K
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Читать дальше →
Total votes 53: ↑46 and ↓7+39
Comments45

Information

Rating
Does not participate
Location
Калининградская обл., Россия
Date of birth
Registered
Activity