Рубрика «индексация»

Почему B-деревья быстрые? - 1

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-деревоЧитать полностью »

Когда за повышением зарплаты каждый месяц ходит робот - 1

Обычно повышение зарплаты выглядит следующим образом. Способ №1, гуманитарный: сотрудник через год работы задумывается, что что-то пошло не так, и пора просить повышения. Дожидается своего локального максимума усилий, и на этой волне идёт к руководителю просить больше денег. С точки зрения теории игр это выглядит как «ну, я попросил, вдруг прокатит». Никаких доводов повышать оклад у руководителя нет.

Дальше сотрудник может поднять ставки. «Повышайте, а то уволюсь». В этой ситуации в проигрыше оказываются оба — руководитель теряет на времени обучении нового сотрудника и стоимости подбора. Сотрудник теряет на том, что может неожиданно уволиться.

Разработчики традиционно пользуются способом №2: сначала проходят где-то несколько собеседований, собирают офферы и приходят с ними к руководителю. «Смотри, вот тут мне предлагают на 20% больше, но мне у нас нравится, повышай на 15%, а то я перейду». Это уже предмет обсуждения. В банальном случае проще повысить и сохранить ценного сотрудника, но это обеспечит проигрыши в связанных играх. То есть создаст прецедент. Поэтому решение принимается (в упрощённой модели) с некоторой долей рандома.

У нас у многих математика в анамнезе. Рассматривая эту игру дальше, можно сделать простой вывод, что такой диалог для сотрудника всегда стрессовый, и он случается в момент после кризисного. То есть сначала человек беспокоится, потом делает потенциально невыгодные действия (проходит собеседования в других местах), потом приходит. Части надо повышать, части не надо. Следующий вопрос: можно ли найти функцию, которая обеспечит справедливую оценку? Будет ли эта функция снимать вот эти стрессовые ситуации?

Регулярная переиндексация каждый год — вариант такой функции. Условно, если в договоре прописано, что зарплата каждый год растёт на уровень инфляции — наверное, можно не беспокоиться. Но Вадим придумал более интересную фишку — привязать это к оценке полезности действий сотрудника для компании. Но как адекватный человек, без KPI.

Читать полностью »

Если данные не помещаются в память. Простейшие методы - 1

Самка трубкозуба с детёнышем. Фото: Scotto Bear, CC BY-SA 2.0

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

Проблема в нехватке памяти. Если у вас 16 гигабайт ОЗУ, вы не сможете туда загрузить стогигабайтный файл. В какой-то момент у ОС закончится память, она не сможет выделить новую, и программа вылетит.

Что делать?
Читать полностью »

Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

В этом статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать полностью »

Чек-лист по выживанию сайта - 1

В последнее время я как-то подозрительно часто наблюдаю примитивнейшие однотипные и довольно легко решаемые проблемы на самых разных web-проектах. Разные базы, разные языки, разные сферы деятельности и схемы монетизации. Всех их объединяет одно — лозунг «бизнес не дает переписать». Продолжающийся или только-только оконченный этап рапид-разработки растущего и агрессивно отжимающего у конкурентов долю рынка проекта родил огромную кучу т.н. «говнокода». Сомнительные архитектурные решения либо уже приносят кучу проблем, либо обещают их в будущем, но работают. Поток новых требований не дает времени навести порядок даже в инфраструктуре, не говоря уже о коде. Если вам такая ситуация знакома — добро пожаловать под кат поностальгировать, поучиться чему-то новому и/или поучить нас. Кому поржать, а кому и поплакать.

«Это все только для хайлода» — скажет вдумчивый и прозорливый читатель. Плох тот веб-проект, который не мечтает стать популярным хайлодом.

Картинка не только для привлечения внимания, но и для иллюстрации реальной ситуации на одном проекте, страдающим некоторыми из нижеперечисленных проблем.
Читать полностью »

imageДанная статья является продолжением моей статьи "Python: коллекции, часть 1: классификация, общие подходы и методы, конвертация".

В данной статье мы продолжим изучать общие принципы работы со стандартными коллекциями (модуль collections в ней не рассматривается) Python.

Для кого: для изучающих Python и уже имеющих начальное представление о коллекциях и работе с ними, желающих систематизировать и углубить свои знания, сложить их в целостную картину.
Читать полностью »

Джули Рубикон. Признание бывшего сотрудника Facebook - 1

Примечание от Робина Слоана, который опубликовал запись в своём блоге 15 марта 2016 года: «Этот рассказ появился в моём защищённом ящике в конце прошлого месяца, вместе с просьбой опубликовать его на Facebook сегодня именно в таком формате. Я не могу поручиться за подлинность истории, но она показалась мне достаточно странной и интересной».

#

Записывать всё это — последнее, что мне хочется делать, но это необходимо. Частично ради людей, которые обязаны знать, что происходит с их публикациями на Facebook, но главным образом (99%) ради Джули Рубикон и того пика на графике.

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

Привет! Так уже получилось, что современный web-контент буквально стоит на трёх китах: HTML5, CSS3 и Javascript. Тесная интеграция этих трёх инструментов позволяет создавать поистине впечатляющие результаты, но сегодня речь не о достижениях современной веб-инсдустрии, а о том, как эти достижения правильно донести до пользователей.

За отображение вашего сайта у пользователей, само собой, отвечают браузеры. Но как видит сайт поисковая система? Что она увидит, если часть контента (картинки, таблицы стиля, скрипты) будуе закрыта от сканирования? Что увидят пользователи в результатах поиска, если Google не сможет проиндексировать весь необходимый контент? Специально для ответа на эти вопросы (а также для исправления некоторых недоразумений, мешающих вам находить своих пользователей в Google) мы создали инструмент «Отчёт о заблокированных ресурсах».

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

Вот так выглядит отчёт о проверке:
Заблокированные ресуры в Инструментах для веб-мастеров
Читать полностью »

Обработка текста в поисковом движке выглядит достаточно простой снаружи, однако на самом деле это сложный процесс. При индексации текст документов должен быть обработан стриппером HTML, токенайзером, фильтром стопслов, фильтром словоформ и морфологическим процессором. А ещё при этом нужно помнить про исключения (exceptions), слитные (blended) символы, N-граммы и границы предложений. При поиске всё становится ещё сложнее, поскольку помимо всего вышеупомянутого нужно вдобавок обрабатывать синтаксис запроса, который добавляет всевозможные спец. символы (операторы и маски). Сейчас мы расскажем, как всё это работает в Sphinx.

Картина в целом

Упрощённо конвейер обработки текста (в движке версий 2.х) выглядит примерно так:

Конвейер обработки текста в Sphinx - 1

Выглядит достаточно просто, однако дьявол кроется в деталях. Есть несколько очень разных фильтров (которые применяются в особом порядке); токенайзер занимается ещё чем-то помимо разбиения текста на слова; и наконец под «и т.д.» в блоке морфологии на самом деле находится ещё по меньшей мере три разных варианта.

Поэтому более точной будет следующая картина:

Конвейер обработки текста в Sphinx - 2

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js