Как стать автором
Обновить
48
0
tasman @tasman

Пользователь

Отправить сообщение

Полнотекстовый поиск в веб-проектах: Sphinx, Apache Lucene, Xapian

Время на прочтение15 мин
Количество просмотров55K
Полная авторская верcия из моего блога. Оригинал материала написан специально для Developers.org.ua

Наверное любой современный веб-проект сложно себе представить без… без контента! Да, именно контент в разных его проявлениях сегодня «правит бал» в различных веб-проектах. Не так важно — создаваемый пользователями или получаемый из других источников автоматически — информация является основной любого (ну, или почти любого) проекта. А раз так — то вопрос поиска необходимой информации стоит очень остро. И острее с каждым днем, ввиду стремительного расширения количества этого самого контента, в основном за счёт создаваемого пользователями (это и форумы, и блоги и модные нынче сообщества, вроде Habrahabr.ru). Таким образом, любой разработчик, реализующий сегодня какой-либо проект, сталкивается с потребностью реализовать поиск в своём веб-приложении. При этом требования к такому поиску уже намного сложнее и шире, чем даже год-два назад. Конечно, для каких-то проектов вполне подойдёт и простое решение, к примеру, вполне можно использовать Custom Google Search. Но чем более сложное приложение, и чем сложнее структура контента, если требуются особые виды поиска и обработки результата, или же просто количество или формат данных в вашем проекте особый, вам потребуется собственная поисковая система. Именно своя система, собственный поисковый сервер или сервис, а не сторонний, пусть даже гибкий и настраиваемый. Но что же выбрать, и вообще — какие сейчас на рынке есть поисковые проекты, которые готовы для использования в реальных проектах, не исследовательских или научных, а реальных бизнес-приложениях? Далее мы кратко рассмотрим различные варианты поисковых решений, пригодных для встраивания в ваше веб-приложение или развёртывания на собственном сервере.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии62

Каптча 3d

Время на прочтение7 мин
Количество просмотров6.3K
Прочитав топик «RapidShare — новые каптчи», я вспомнил как слушал доклад создателя каптчи на UaВебе.



Зайдя на сайт, желая посмотреть код, я увидел:
Q: Is it opensource?
A: No, sorry. Maybe later.

Я удивился! Мне казалось что любой маломальски образованный хороший программист сделает такую каптчу.
Погуглив и нашел пару интересных линков: 1, 2 и не получил кода, решил написать сам.
Читать дальше →
Всего голосов 158: ↑145 и ↓13+132
Комментарии102

Очередной HowTo по Vim

Время на прочтение1 мин
Количество просмотров7.6K
Update: похоже, что после обновления хабра появились проблемы с постингом больших статей. Старый текст, который был здесь ранее, хабр обрезал до середины, залить же новый мне не удалось — все время выдается ошибка «Возникла ошибка в получении XML данных: Internal Server Error» (насколько я понял, проблемы именно в большом объеме). Честно говоря, у меня сейчас нет ни времени ни желания разбираться с этим (к тому же переформатирование статьи из блога под хабр занимает довольно много времени), поэтому отсылаю вас к оригиналу — Очередной HowTo по Vim.
Всего голосов 2: ↑2 и ↓0+2
Комментарии30

nginx, пользовательские поддомены и rewrite

Время на прочтение3 мин
Количество просмотров48K
В самых разнообразных веб-проектах возникает задача организации пользовательских поддоменов «на лету». При использовании nginx приходит на помощь следующая конструкция:
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии27

О безналичных деньгах и банках (часть первая)

Время на прочтение5 мин
Количество просмотров11K
На сегодня в России существует и действует вполне нормальная система безналичных платежей. Конечно, у понятия «безналичный» существует множество синонимов, навроде «по банку» и т.д., но все это суть одинаково.

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

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

Фонетический поиск

Время на прочтение4 мин
Количество просмотров16K
Пару лет назад была задача написать для одного из сайтов такой поиск, который бы распознавал опечатки и предлагал бы исправленные запросы. Было перепробовано несколько вариантов, об одном из которых я и хотел тут написать. Поиск на основе звучания слов может стирать языковые границы, поскольку имена собственные на разных языках созвучны. Например, ищешь «Арнольд Шварцнеггер» на русском — находишь «Arnold Schwarzenegger» на английском, или ищешь «Michael Jordan» — находишь «Майкл Джордан», или ищешь «Чак Норрис» — и вдруг он сам тебя находит. Помимо поиска созвучных слов этот метод нивелирует большое количество опечаток. А то че-то задолбала попса, надо больше про инсайд…

...больше про инсайд
Всего голосов 123: ↑122 и ↓1+121
Комментарии77

Ежедневный Git

Время на прочтение3 мин
Количество просмотров98K
Уже были статьи про основы гита (0, 1, 2), были и статьи про внутреннее устройство репозитория. Сегодня поговорим, как простому смертному работать с гитом на автопилоте и не морочить себе голову.

Во-первых, шорткаты (в порядке убывания популярности):

alias gst='git-status'
alias ga='git-add'
alias gc='git-commit -m'
alias gp='git pull && git push'
alias gull='git pull'
alias gush='git push'
alias gb='git-branch'
alias gco='git-checkout'
alias gd='git-diff'

Во-вторых, отображение текущей ветки в командной строке:
export PS1='`__git_ps1 "%s"` \w \$ '

Выглядит так:
lazy-args-in-futures ~/Work/io/oleganza-io.git $

(Как установить: ericgoodwin.com/2008/4/10/auto-completion-with-git)

Типичный поток работы в одной ветке
Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии36

Текстура для веб-дизайна

Время на прочтение1 мин
Количество просмотров13K
Последние время мне часто приходится искать разнообразные текстуры. Поэтому я решил опубликовать несколько сайтов с большим выбором текстур.

Первым в этом списке я выбрал http://www.textureking.com/ — красивый и понятный дизайн сайта, а также хороший выбор текстур которые разделены на 14 категорий.

Следущим будет http://www.cgtextures.com/ — огромное количество текстур и их категорий (вожможно он и получше textureking :), вам решать.
Читать дальше →
Всего голосов 75: ↑68 и ↓7+61
Комментарии63

Делаем did you mean, часть вторая

Время на прочтение3 мин
Количество просмотров2.5K

Здравствуйте



Не так давно я писал про правильный did you mean.
Несмотря на все мои улучшения, guess-инг всё равно часто ошибался, и выдавал странные результаты.

Однако недавно, мне удалось значительно улучшить качество guess-инга, и я решил, что было бы неплохо написать «патч» к моей предыдущей статье :)


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

Расширения для OpenOffice

Время на прочтение2 мин
Количество просмотров12K
Чтобы хоть как-то восполнить пробел по расширениям в OpenOffice, я решил сделать небольшую подборку с кратким описанием. Немного погуглив, я понял, что тема очень актуальна, но освещена очень слабо. Целью данной статьи является не описать все существующие расширения, а всего лишь рассказать, какие они бывают, что они умеют и где их достать.
Читать дальше →
Всего голосов 61: ↑56 и ↓5+51
Комментарии34

Deep in Cocoa

Время на прочтение6 мин
Количество просмотров4K
в этой статье я попытаюсь рассказать немного больше о Cocoa и его основных принципов. Скажу сразу, что материал не будет всеобъемлющим, поэтому матчасть учим здесь.

Откройте XCode и создайте новое Cocoa Application, назовите его DotView. Что будет делать наша программа? Она будет рисовать на компоненте NSView точку. Что такое NSView? Это базовый класс для графических виджетов Cocoa, поэтому если вы хотите создать свой собственный виджет, то скорее всего это будет наследник NSView.
Читать дальше →
Всего голосов 34: ↑27 и ↓7+20
Комментарии18

Изучаем потоки, чанки и ищем конец

Время на прочтение1 мин
Количество просмотров13K
Примечание: ниже перевод статьи «On Streaming, Chunking, and Finding the End», в которой авторы рассматривают процесс передачи информации по HTTP-соединению и возможности для ускорения этого процесса. Мои комментарии далее курсивом.

Два способа передачи



Как и в большинстве механизмов передачи данных, в HTTP существует два основных способа отправить сообщение: «все и сразу» или «по частям». Другими словами, в HTTP есть возможность отправлять данные до тех пор, пока еще есть хотя бы что-то, что можно отправить, либо отправить все данные как одну логическую единицу, указав предварительно ее размер.

Если вы занимаетесь веб-разработками достаточно продолжительное время, скорее всего, вы уже знаете, как работает сброс буфера (flush) на стороне сервера. Этот метод позволяет начать отправку части данных пользователю, в то время как скрипт может продолжать выполнять некоторые, достаточно медленные, действия (скажем, ресурсоемкий запрос к базе данных). Если вы уже применяли эту возможность, тогда вы, вероятно, использовали преимущества потокового (streaming) механизма, хотя могли и не знать всех деталей работы HTTP-протокола.

читать дальше на webo.in →
Всего голосов 36: ↑33 и ↓3+30
Комментарии24

Договор. Поисковая оптимизация сайта

Время на прочтение10 мин
Количество просмотров38K
В продолжение темы о договорах хочу представить вам договор на SEO, который мы используем в нашем Интернет-агентстве.

Одна из ключевых проблем договора на SEO — за что же собственно берем деньги? Существуют три основные точки зрения. 1. за позиции в топе 2. за трафик с поисковиков 3. за работу в целом.
Брать деньги с клиентов за позиции – неверная позиция для оптимизатора. Глюки поисковика, смена алгоритма, результат работы лишь через 2-3 месяца. Все это не то, что способствует прибыли организации. К тому же такой вариант исключает предоплату. Выводить в топ по конкурентным тематикам, вкладывая деньги компании нет никакого желания.
Вариант с оплатой за посетителей более приемлемый. Но опять же как быть с предоплатой? Первые два месяца работать за счет собственного бюджета, пока посетителей мало или нет вообще?
Третий вариант – оплата за проведенный комплекс работ, наиболее интересен для seo-компании. Мы делаем – это, это и это. За эффект отвечаем своим опытом, репутацией, но никак не юридически.
Для тех, кто спросит: «а как же гарантии?» Я отвечу: а никаких 100% гарантий нет и быть не может. Оптимизатор как крестьянин – землю вспашет, засеет, удобрения подкинет когда надо. А вот требовать гарантий урожая с него смысла нет – слишком много зависит от погодных условий (погреет ли Яндекс-красно-солнышко).
Единственное, что остается заказчику – подбирать более опытных крестьян. А лучше колхоз. И смотреть на предыдущие урожаи (портфолио).
И еще один любимый мною пример. Все смотрели передачу «Тачки на прокачку» на MTV, где делают тюнинг старым авто? Так вот так же и с сайтом – оптимизатор может его прокачать, форсировать движок, а попадет ли машина (сайт) в гонке в топ10 – какие тут гарантии?

Теперь собственно, договор. Некоторые пункты прокомментирую ниже.
Читать дальше →
Всего голосов 44: ↑36 и ↓8+28
Комментарии92

Чем изучение Haskell/Python вредит программисту

Время на прочтение5 мин
Количество просмотров28K
От переводчика:

На этот перевод меня толкнула очередная ситуация «мозгового ступора» при написании банального кода на C++/C#: я часами смотрел на уродливый код, но не мог сделать его по-настоящему лучше; мне пришлось просто принять то, что уродливым его видел только я один, и это была моя проблема, а не проблема в коде или языке. Я вспомнил те времена, когда такого со мной не было — а заодно вспомнил и эту старую статью, автор которой пострадал так же, как и я, при этом хорошо написав об этом.


Я обнаружил, что изучение Python и Haskell не улучшило меня как программиста на других языках (что противоречит тому, что иногда пишут об этом). В частности, Haskell — являясь настолько непохожим на императивные языки — по идее, должен был дать мне просветление в программировании, которое помогало бы мне даже без использования какого-либо языка вообще. Мой текущий опыт не совсем соответствует этому, и вот, почему:
Читать дальше →
Всего голосов 94: ↑85 и ↓9+76
Комментарии222

Google App Engine: достоинства и недостатки

Время на прочтение3 мин
Количество просмотров3.8K
Google App Engine: достоинства и недостатки
Изучив информацию в интернете о Google App Engine, хотел бы высказать собственное мнение по поводу громких споров вокруг этого продукта, а также предоставить общий перечень его ограничений на основе изученных публикаций по данной теме.

Профессиональный разработчик подбирает инструмент под задачу и решает ее средствами, которые есть в наличии.

Это касается как выбора языка Python, так и платформы в целом. Я лично являюсь Python и Django разработчиком уже больше года и могу судить об их преимуществах и недостатках. Python и Django показали себя в качестве отличных средств для создания web-приложений. Использовать их или нет — дело каждого. По моему мнению, Google подобрал и предоставил достаточно средств для полноценной web-разработки. Почему выбран именно Python, я думаю, понятно всем — корпорация имеет широкий опыт работы с данным языком. А также не следует забывать, что Guido van Rossum — член команды разработчиков.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии61

Фоновая загрузка файлов на сервер

Время на прочтение3 мин
Количество просмотров5.4K
Все, кто пользуется GMail и завсегдатеи Хабрахабра замечали, что приаттаченные файлы потихоньку загружаются на сервер через несколько секунд бездействия и затем поля с именами файлов заменяются на чекбоксы.

Похожий функционал я реализовал в одном Django-проекте с помощью JQuery.
При выборе ползователем логотипа для визитки, файл логотипа прозрачно загружается на сервер, обрабатывается и затем «отдается» браузеру. и пользователь видит, что в макете логотип поменялся на выбранный им.
Читать дальше →
Всего голосов 43: ↑37 и ↓6+31
Комментарии41

Страны, регионы, города

Время на прочтение1 мин
Количество просмотров120K
Карта мира
Хочу поделиться базой стран, регионов и городов на русском языке. Возможно, кому-то пригодиться в своих проектах. В базе 106 стран, 922 региона и 10969 городов!

Если кто не понял о чем речь, то вспомните, например, как на ВКонтакте указывается город: выбирается страна -> подгружается список регионов -> выбирается регион -> подгружается список городов

Читать дальше →
Всего голосов 124: ↑122 и ↓2+120
Комментарии128

Веб сервер за пару вечеров — II

Время на прочтение5 мин
Количество просмотров11K

Многие из нас собирали компьютер сами, из комплектующих. Дело не сложное, соединить с десяток шлейфов, да завинтить столько же винтиков. Но мало кто сталкивался с самостоятельной сборкой серверов, причем не обычных а в промышленном формате под стойку 19 дюймов. В этом небольшом обзоре я опишу свой опыт сборки такого сервера, постараюсь показать что это не сложно, и остановлюсь на главных моментах, на что нужно смотреть. На написание этого обзора меня толкнуло то, что информации о сборке rack 19’ серверов в рунете очень мало, и приходилось её искать буквально по крупицам.
Читать дальше →
Всего голосов 142: ↑141 и ↓1+140
Комментарии191

Создание программ для Mac OS X. Часть 1: вступление и Objective-C

Время на прочтение10 мин
Количество просмотров73K

Вступление


Я думаю все слышали про Mac OS X как операционную систему для дизайнеров и домохозяек. Но хочется рассказать про средства разработки для OS X, а то хорошие программы пишут, а на чем — никто не знает.

Сразу скажу, что не буду рассказывать про кроссплатформенные фреймворки и тулкиты(такие как Qt) или про создание консольных приложений, я расскажу про то, что в плане создания приложений отличает Mac OS X от других операционных систем, а именно — фреймворк Cocoa. Оговорюсь сразу, что буду стараться избегать сравнений с другими фреймворками, я хочу просто рассказать про Cocoa.
Читать дальше →
Всего голосов 96: ↑90 и ↓6+84
Комментарии91

StaticGenerator Pro

Время на прочтение3 мин
Количество просмотров1.5K
Jared Kuolt создал небольшой скрипт кэширования для Django. Всем замечателен: и простотой и размером.

Но у скрипта StaticGenerator и nginx-конфига, приведенного Jared-ом, есть недостатки:
1) актуально только для сайтов без регистрации;
2) работа с ссылками только простого вида;
3) генерация только при изменении/добавлении контента и/или комментариев.

Я исправил эти недочеты, добавил кое-что интересное в скрипт, и получился StaticGenerator Pro.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии7

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность