Со временем Sphinx оброс большой кучей режимов поиска и ранжирования. Регулярно возникают вопросы про разное (от «как вытащить документ на 1е место» до «как рисовать от 1 до 5 звездочек в зависимости от степени совпадения»), которые на самом деле суть вопросы про внутреннее устройство тех режимов. В этом посте расскажу все, что вспомню: как устроены режимы поиска и режимы ранжирования, какие есть факторы ранжирования, как в точности рассчитываются факторы, как финальный вес, все такое. И, конечно, про звездочки!
Дегтярёв Евгений @bat
Go/PHP Developer
Разработка web-приложений на C++
2 min
56K
Прочитав недавний топик про использование C++ и fastcgi, я наконец-то решился опубликовать свои наработки на тему Web и C++.
Существующие решения, с моей точки зрения, реализуют простые вещи сложным образом. Моей целью было устранить это досадное недоразумение, написав библиотеку, которая позволит писать эффективные кросс-платформенные веб-приложения на С++ так же легко и быстро, как и на PHP, Python, Java, и т.д.
+114
Apache, fastcgi и c++: «Hello, world»
6 min
43K
Писать web-приложения на C/C++ дело неблагодарное. Многие говорят, что это полное безумие, когда есть PHP и Perl. И я с ними согласен. Это очень просто написать сайт на PHP(особенно используя фреймворки вроде Zend Framework).
Но..(всегда есть какое-то «но»).
Давайте не будем забывать, что простота использования складывается не только из простого синтаксиса. Учитывается множество параметров. И одним из весомых параметров является наличие статей «Get started with ...» с примерами «hello, world»-программ. Я собираюсь добавить немного простоты написанию fastcgi на C/C++. И если прочитав эту статью хоть один человек скажет «А это не так уж и сложно», то я буду считать свою миссию выполненной.
+76
Наследство выпускника, или Последнее д/з по информатике
2 min
1.7K
То же сделал я. Но прежде — решил оставить после себя ему нечто такое, что так или иначе принесет пользу. Реальную пользу.
Об этом и расскажу.
+152
Кризис (не финансовый) программиста
2 min
3.8KЯ много писАл о том, как же прекрасна эта игра, под названием программирование! Мне, и я уверен, что многим из вас, программирование заменяет все существующие логические игры, дает постоянный разогрев мозгам, не давая им засохнуть, и приносит дикое моральное удовлетворение, отличающееся от оргазма только отсутствием физических ощущений.
Так уж получилось, что много лет назад, я забросил c++ и Delphi, и чувствуя потребности IT рынка, начал осваивать php. Так что все, о чем я буду писать, касается конкретно web-программирования, и косвенно любой другой области программирования.
Признаюсь честно, хотя работы хватает, мои мозги, все равно, начинают сохнуть. Я уже писал раньше, что момент, когда программист становится профессионалом, обусловлен, прежде всего, выдвижением на первый план качества и сроков реализации проекта. А значит приходиться использовать готовые продукты (я имею ввиду различные cms), которые обеспечивают должное качество, отсутствие уязвимостей и багов, гибкость, и короткие сроки реализации.
Так уж получилось, что много лет назад, я забросил c++ и Delphi, и чувствуя потребности IT рынка, начал осваивать php. Так что все, о чем я буду писать, касается конкретно web-программирования, и косвенно любой другой области программирования.
Признаюсь честно, хотя работы хватает, мои мозги, все равно, начинают сохнуть. Я уже писал раньше, что момент, когда программист становится профессионалом, обусловлен, прежде всего, выдвижением на первый план качества и сроков реализации проекта. А значит приходиться использовать готовые продукты (я имею ввиду различные cms), которые обеспечивают должное качество, отсутствие уязвимостей и багов, гибкость, и короткие сроки реализации.
+45
Личный тайм-менеджмент
9 min
93KПочитав недавний топик про лягушек я понял, что Хабрасообщество не очень хорошо ориентируется в вопросах тайм-менеджмента и многие никогда не занимались построением своей тайм-системы.
Поэтому я попробую исправить этот недочёт.
Под катом Вы не найдёте каких-то инновационных моделей управления временем. Это будет фундамент, основа, без которой нельзя обойтись людям, которые заботятся о своём будущем, о своём благосостоянии и личностном развитии.
Welcome!
Поэтому я попробую исправить этот недочёт.
Под катом Вы не найдёте каких-то инновационных моделей управления временем. Это будет фундамент, основа, без которой нельзя обойтись людям, которые заботятся о своём будущем, о своём благосостоянии и личностном развитии.
Welcome!
+160
Они просто не хотят хорошо работать
2 min
2.8KВ одном цеху на предприятии Чарльза Шваба работал некий начальник, рабочие которого не справлялись со сменным заданием. Шваб недоумевал: «Как так получилось, что такой способный человек, как вы, не мог добиться выполнения задания?» Инженер отвечал хозяину: «Сам не понимаю. Я и уговаривать их пытался, и подгонял, и бранил их, рвал и метал, грозил, что прокляну их и потом уволю. Но результатов так и не было. Они просто не хотят хорошо работать».
+53
Javascript от А и до…
3 min
3.7KНачал замечать что на Хабре появляются статьи по программированию, может на это натолкнули фразы типа «хабр уже не тот», но это не так важно, потому как мне это нравится, всегда хотелось узнать что-то новенькое … моя первая статья привела к огромному краху, поэтому почитав людей, я повторю свои усилия и начну цикл заметок о JavaScript от самого начала и до тех пор, пока это будет востребовано =)
+59
Fly AJAX — пишите меньше, имейте больше. Нестандартный AJAX и индексация поисковиками.
4 min
5.2K
Обсуждение предыдущей статьи было бурным. Самые ярые любители jQuery, Mootools кричали зачем мол нужен другой велосипед.
В данной статье мы рассмотрим использование техники Fly AJAX. Это одна из нескольких функциональных возможностей, которые не реализованы в ранее указанных больших (и мною уважаемых) фреймворках. Также, в данной статье, мы рассмотрим принципы правильного проектирования и построения сайтов для хорошей индексации с применением AJAX технологии.
+69
Хитрости с логированием в однопоточных неблокирующих серверах.
6 min
2.8KХочу рассказать об очередном результате моих изысканий в области оптимизации производительности Web-серверов.
На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
+53
Закрепляем jQuery — 25 отличных советов
19 min
168KTranslation
Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.
Далее все написано от имени автора оригинальной статьи.
jQuery прекрасен. Я использую его вот уже почти год и, хотя я и был достаточно впечатлен в самом начале, он нравится мне все больше и больше по мере использования и по мере того, как я узнаю о том, как он устроен внутри.
Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).
Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.
Далее все написано от имени автора оригинальной статьи.
Введение
jQuery прекрасен. Я использую его вот уже почти год и, хотя я и был достаточно впечатлен в самом начале, он нравится мне все больше и больше по мере использования и по мере того, как я узнаю о том, как он устроен внутри.
Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).
Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.
Содержание
- Загружайте фреймворк с Google Code
- Используйте «шпаргалку» (cheat sheet)
- Соединяйте все ваши скрипты и уменьшайте размер файла
- Используйте возможности Firebug для ведения логов
- Минимизируйте операции выборки в пользу кэширования
- Сводите манипуляции с DOM-деревом к минимуму
- Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
- Используйте «id» вместо классов, где это возможно
- Задайте контекст своим селекторам
- Используйте последовательности вызовов методов с умом
- Научитесь правильно использовать анимацию
- Научитесь назначать и делегировать события
- Используйте классы для сохранения состояния
- Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
- Пишите собственные селекторы
- Подготавливайте HTML и модифицируйте его, когда страница загружена
- Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
- Используйте служебные функции jQuery
- Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
- Как узнать что картинки загружены?
- Всегда используйте последнюю версию
- Как проверить, что элемент существует?
- Добавляйте класс «JS» в элемент «html»
- Возвращайте «false» для отмены поведения по-умолчанию
- Короткая запись для события готовности документа
+176
Веб-типографика сегодня. Часть I
7 min
28KЧасть I — Часть II — Часть III — Часть IV — Часть V — Часть VI
Как-то ко мне обратился знакомый дизайнер с просьбой разобраться в странной по его мнению ситуации. Клиент просил «сделать так же, как у Apple», но с использованием собственных способов расположения блоков, изображений, цветовой гаммы и текста. В общем, дизайн в итоге получался совершенно непохожий на apple.com, но этого, собственно, и добивался клиент. И вроде бы у дизайнера получилось, но… Клиенту по-прежнему не нравилось, он всё равно требовал переделать макет. По его ощущения «что-то было ну совсем не так». А что именно — тот объяснить был не в силах. Вот и возник вопрос у моего коллеги по поводу того, как угодить капризам клиента и понять его чаяния. Оказалось всё не так просто, но вполне объяснимо. Я и раньше сталкивался с данной проблемой. Поэтому решил попробовать изложить свои мысли по этому поводу.
Итак, какова ситуация в области современной веб-типографики и какими способами следует решать возникающие проблемы?
Часть I
Как-то ко мне обратился знакомый дизайнер с просьбой разобраться в странной по его мнению ситуации. Клиент просил «сделать так же, как у Apple», но с использованием собственных способов расположения блоков, изображений, цветовой гаммы и текста. В общем, дизайн в итоге получался совершенно непохожий на apple.com, но этого, собственно, и добивался клиент. И вроде бы у дизайнера получилось, но… Клиенту по-прежнему не нравилось, он всё равно требовал переделать макет. По его ощущения «что-то было ну совсем не так». А что именно — тот объяснить был не в силах. Вот и возник вопрос у моего коллеги по поводу того, как угодить капризам клиента и понять его чаяния. Оказалось всё не так просто, но вполне объяснимо. Я и раньше сталкивался с данной проблемой. Поэтому решил попробовать изложить свои мысли по этому поводу.
Итак, какова ситуация в области современной веб-типографики и какими способами следует решать возникающие проблемы?
+112
Пуленепробиваемый HTML: 37 шагов к идеальной разметке
11 min
20KTranslation
Примечание: это не полный перевод статьи. Я выбрал только самые интересные лично для себя пункты. Статья не претендует на свежесть, но возможно даже люди хорошо знакомые с версткой найдут для себя что-то интересное. Статья затрагивает некоторые аспекты семантики верстки с конкретными примерами.
Под катом много букв! Чтоб не потеряться в их обилии все пункты выделены заголовками.
Под катом много букв! Чтоб не потеряться в их обилии все пункты выделены заголовками.
+126
Начало научной карьеры (часть 5)
6 min
2.7KИтак, как и обещал, давайте сделаем шаг назад и поговорим о «болонской» магистратуре. Мне довелось узнать эту систему с хорошей стороны; не могу обещать, что в каждом университете она реализована точно так же. Но думается, что мой опыт должен быть скорее похож на норму, нежели на что-то нестандартное.
Сразу хочу призвать отказаться от дискуссий о научном качестве того или иного типа образования. Будем обсуждать только социальные аспекты, то есть привлекательность болонской системы для студента. По поводу же качества попробую высказаться мягко. Системы образования — как языки программирования. Если бы хотя бы один был очевидно лучше других, других бы не осталось. Да, может, болонская система немного лучше, а может, и немного хуже (в научном плане). Однако социальные аспекты не менее важны. Как я уже говорил, возможно, с научной точки зрения лучше запереть молодого специалиста в шарашке, и пусть себе изобретает. А то отвлекается, видите ли, на пиво и дамочек. Поэтому вопрос я ставлю иначе: в какой системе человек чувствует себя наиболее комфортно и при этом получает достаточно качественное образование. И здесь мои симпатии всецело на стороне «болонского» образования, об особенностях которого ниже и пойдёт речь.
Сразу хочу призвать отказаться от дискуссий о научном качестве того или иного типа образования. Будем обсуждать только социальные аспекты, то есть привлекательность болонской системы для студента. По поводу же качества попробую высказаться мягко. Системы образования — как языки программирования. Если бы хотя бы один был очевидно лучше других, других бы не осталось. Да, может, болонская система немного лучше, а может, и немного хуже (в научном плане). Однако социальные аспекты не менее важны. Как я уже говорил, возможно, с научной точки зрения лучше запереть молодого специалиста в шарашке, и пусть себе изобретает. А то отвлекается, видите ли, на пиво и дамочек. Поэтому вопрос я ставлю иначе: в какой системе человек чувствует себя наиболее комфортно и при этом получает достаточно качественное образование. И здесь мои симпатии всецело на стороне «болонского» образования, об особенностях которого ниже и пойдёт речь.
+61
Сравнение PHP-фреймворков: CakePHP, CodeIgniter и Yii
11 min
47KНе так давно на Хабре проскакивал пост о появлении нового PHP-фреймворка под названием Yii.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
+85
Заметки о лучшем хостинге: часть третья, проблемы и их решение
4 min
1.6K
- Заметки о лучшем хостинге: часть первая
- Заметки о лучшем хостинге: часть вторая, служба поддержки и настройка wildcard subdomains в IIS
Итак, если первые две статьи обладали в целом позитивным настроем, то эта заметка будет состоять из перечисления трудностей и полученных неприятностей.
+14
Веб-дизайн: женский и мужской взгляд — небольшой эксперимент
2 min
5.7KНедавно столкнулся с такой ситуацией: разрабатывал дизайн для сайта одной фирмы, было представлено 3 варианта. Как часто бывает, мое мнение не совпало с мнением заказчика, выбрали макет, который мне нравится меньше других. К подобным ситуациям я уже привык — всегда следую золотому правилу «клиент всегда прав», однако все равно был несколько удивлен.
Я просто из любопытства решил сделать небольшой соцопрос по поводу трех разработанных дизайнов — создал пост в своем блоге на Я.ру с просьбой выбрать понравившийся вариант. Результаты меня, мягко говоря, удивили:
Я просто из любопытства решил сделать небольшой соцопрос по поводу трех разработанных дизайнов — создал пост в своем блоге на Я.ру с просьбой выбрать понравившийся вариант. Результаты меня, мягко говоря, удивили:
+47
Индикация языка ввода
1 min
6.7KПосле прочтения поста про пароль и раскладку клавиатуры решил набросать скрипт, который бы сигнализировал, на каком языке вводится пароль.
+40
Структуры данных в memcached/MemcacheDB. Часть 1
8 min
5.1KДостаточно часто нам приходится хранить данные в memcached или MemcacheDB. Это могут быть относительно простые данные, например, закэшированные выборки из базы данных, а иногда необходимо хранить и обрабатывать более сложные структуры данных, которые обновляются одновременно из нескольких процессов, обеспечивать быстрое чтение данных и т.п. Реализация таких структур данных уже не укладывается в комбинацию команд memcached
Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.
Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
get
/set
. В данной статье будут описаны способы хранения некоторых структур данных в memcached с примерами кода и описанием основных идей.Memcached и MemcacheDB в данной статье рассматриваются вместе, потому что имеют общий интерфейс доступа и логика работы большей части структур данных будет одинаковой, далее будем называть их просто «memcached». Зачем нам нужно хранить структуры данных в memcached? Чаще всего для распределенного доступа к данным из разных процессов, с разных серверов и т.п. А иногда для решения задачи хранения данных достаточно интерфейса, предоставляемого MemcacheDB, и необходимость в использовании СУБД отпадает.
Иногда проект разрабатывается изначально для нераспределенного случая (работа в рамках одного сервера), однако предполагая будущую необходимость масштабирования, лучше использовать сразу такие алгоритмы и структуры данных, которые могут обеспечить легкое масштабирование. Например, даже если данные будут храниться просто в памяти процесса, но интерфейс к доступа к ним повторяет семантику memcached, то при переходе к распределенной и масштабируемой архитектуре достаточно будет заменить обращения к внутреннему хранилищу на обращения к серверу (или кластеру серверов) memcached.
+47
Вычисление значения выражения
7 min
48KВ продолжение поста Компилятор выражений. По просьбам читающих. Специально для michurin
Есть много способов вычислить значение выражения мне больше всего нравится метод с двумя стеками.
Нравится за его элегантность и простоту реализации.
Суть метода 2х стеков (наверняка у него есть красивое научное название.) заключается в том, что любое сложно выражение, в конечном счете, сводится к последовательности простых операций. В нашем случае это будет бинарная операция над операндами A и В.
Мы будем идти слева на право, добавляя операнды в один стек, а операции в другой. При каждом добавлении новой операции мы будем пытаться вытолкнуть из стека старые, руководствуясь приоритетами операций.
Есть много способов вычислить значение выражения мне больше всего нравится метод с двумя стеками.
Нравится за его элегантность и простоту реализации.
Суть метода 2х стеков (наверняка у него есть красивое научное название.) заключается в том, что любое сложно выражение, в конечном счете, сводится к последовательности простых операций. В нашем случае это будет бинарная операция над операндами A и В.
Мы будем идти слева на право, добавляя операнды в один стек, а операции в другой. При каждом добавлении новой операции мы будем пытаться вытолкнуть из стека старые, руководствуясь приоритетами операций.
+51
Information
- Rating
- Does not participate
- Location
- Алтайский край, Россия
- Registered
- Activity
Specialization
Backend Developer