Как стать автором
Обновить
402
0
Andrew Aksyonoff @shodan

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

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

Как напечатать float

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

Казалось бы, совершенно непонятно, зачем живым людям в 2021 году решать задачу под названием «печатаем обычное вещественное число». Вроде бы это должно быть уже решено — причём примерно в тот момент, когда эти вещественные числа изобрели. Но оказывается, что нет. 

Привет, меня зовут Андрей, я занимаюсь инфраструктурой поиска в Авито и сегодня расскажу, зачем это вообще нужно — печатать вещественные числа. Какие есть методы (один) решения этой боевой задачи и как это получилось у нас в проекте, в рамках наших очень странных требований. А также, зачем таки подобное, хм, умеренно эзотерическое знание, может когда-то понадобиться и вам. На каком бы вы языке не писали. Read on!

Читать далее
Всего голосов 34: ↑33 и ↓1+43
Комментарии23

Встреча разработчиков про Sphinx, 18 июня (суббота)

Время на прочтение2 мин
Количество просмотров5.1K
image
С прошлого митапа про Sphinx прошло уже больше года, так что самое время собраться снова. 18 июня состоится второй SphinxSearch meetup, территориально снова в Avito, регистрируйтесь и присоединяйтесь! Что-то интересное обещают порассказывать Avito, Ozon.ru и Нетология, ну и я тоже буду присутствовать, участвовать и состоять. Опять же пицца, кофе, печеньки. Под катом чуть подробнее о докладчиках и программе. Ну — и куда в точности приходить тоже там!!!
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии12

А вот про Sphinx 3.0

Время на прочтение6 мин
Количество просмотров37K
Вот вы там все сидите и ничего не знаете, а мы, тем временем, пилим помаленьку мега-релиз поискового движка Sphinx за номером 3.0. Грядет ряд больших переделок. Часть из них, как полагается, ещё даже как следует не начата. Однако большая часть уже скорее готова, чем нет. А отдельно взятые изменения даже протекли в публичную ветку 2.3. Так что, пожалуй, настало время вкратце начинать рассказывать, чего ожидать в светлом будущем: надеюсь, не столь отдалённом. Кому интересно почитать, все под кат; кому послушать, приходите на meetup в эту субботу. Если совсем вкратце, то: прощай, концепция дополняющего основную базу движка; привет, хранилище документов, тотальный RT, репликация, REST и ряд других известных ключевых слов.
Читать дальше →
Всего голосов 74: ↑72 и ↓2+70
Комментарии54

Этот наш мир

Время на прочтение12 мин
Количество просмотров42K
Иногда я проверяю свою рабочую почту и вижу там сообщение «Анонс доклада: Вершиннная эллиптическая криптография в N-сторонних Бананотряховых[1] пространствах». Я смотрю аннотацию и там говорится что-нибудь типа «Хорошо известно, что 5-сторонний обмен секретами нелегален со времён Протестантской Реформации [Лютер1517]. Однако, используя новые результаты в области исполняющихся за полиномиальное время Бананотряховых проекций, мы показываем, как множество корреспондентов, притворяющихся друзьями (но являющихся противниками)[2], могут послать друг другу вплоть до 5 ехидных язвительных замечаний, устойчивых к атакам с использованием выбранным по Бананотряху открытого текста сообщения». Такое чувство, что началась середина трагичной, но вряд ли интересной оперы. По какой именно причине нас только что засунули в эллиптический мир? Кто именно такой этот Бананотрях, и почему нам не пофигу, какой он там открытый текст выберет? Если потому, что он похитил наши семьи, можно мне хотя бы обменяться сообщениями с похищенной роднёй, и если да, обязательно ли сообщения должны быть ехидными и язвительными?
Читать дальше про Бананотряха, устойчивые пароли, невест по почте, Моссад и всякое другое
Всего голосов 157: ↑107 и ↓50+57
Комментарии24

MySQL клиент формата A4

Время на прочтение5 мин
Количество просмотров26K
Можно ли уместить исходники MySQL клиента на 1 страничке формата A4? Оказывается, если 8 кеглем (в принципе читаемо) и после обфускации, то можно! А если нормальный код без обфускации и 10 кеглем, то таки нельзя: надо целых 6 страничек.

В ходе работы над всяким у меня тут случайно получился крохотный, но работающий MySQL клиент размером чуть больше 1000 строк. Стало интересно, насколько компактнее можно сделать. Потратил половину воскресенья, изолировал и минимизировал код. В результате появился nanomysql, CLI клиент для MySQL, полные исходники которого занимают чуть менее 380 строк и примерно 10500 байт, и при этом компилируются и работают под Linux, Windows, MacOS. Написано на C++ с абсолютным минимумом STL.

Скриншоты, циферки и прочие подробности уикэнд-сумасшествия по изготовлению наноклиента под катом.
Читать дальше →
Всего голосов 97: ↑88 и ↓9+79
Комментарии32

Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

Время на прочтение6 мин
Количество просмотров38K
По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

  • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
  • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
  • бенчмарки надо делать правильно: иначе могут дико дрожать;
  • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
  • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
  • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
  • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
Читать дальше →
Всего голосов 166: ↑153 и ↓13+140
Комментарии60

Sphinx встреча (Москва, 8 мая)

Время на прочтение1 мин
Количество просмотров3.1K
8 мая в 19.00 планируем устроить небольшую Sphinx-оводческую встречу в Москве. Еду в гости в Сотмаркет; говорят, у них из 500к уников каждый второй пользуется поиском; поэтому есть, о чем поговорить.

Для разгона я буду рассказывать про новые возможности версии 2.1 (за почти что полтора года между релизами их скопилось немало!), затем вопросы, мордобой, прочее неформальное общение. Приглашающая сторона только что подтвердила мероприятие и сказала, что смогут принять от 40 до 50 гостей. Так что если есть интерес, добро пожаловать!

Заявки кидать Вадиму Крючкову по адресу kruchkov.v@sotmarket.ru, нужно ФИО (для списка на охрану) и контактный телефон. Лучше успеть до 12:00 дня 8 мая. Засядем в головном офисе Сотмаркета по адресу г.Москва, Старопетровский проезд 7а, стр.30, м.Войковская. Для заблудившихся, телефон для связи 8-903-572-4143.

До встречи!
Всего голосов 16: ↑15 и ↓1+14
Комментарии6

Секретная Гильдия Долины Кремния

Время на прочтение3 мин
Количество просмотров4.5K
Пару недель назад я пил пиво с друзьями в Сан-Франциско и кто-то язвительно заметил:

«У тебя слишком много хипстеров, эдак вы не отмасштабируетесь. Найми несколько жиробасов, знающих C++.»

Шутка смешная, но заставила меня задуматься. Кто эти «жиробасы, знающие C++» или, как сказал еще кто-то, «бородатые парни в растянутых свитерах, которые поддерживают сервера Google»? И почему если ты встретил одного из них, это как дернуть за нитку клубка и они вообще все, похоже, друг друга знают?

Причина в том, что…
Читать дальше →
Всего голосов 172: ↑138 и ↓34+104
Комментарии81

Про борьбу с качеством

Время на прочтение5 мин
Количество просмотров12K
Ровно через три дня будем раскрывать всем желающим кучу секретов: про настройку, оптимизацию, качество поиска и масштабирование Сфинкса (это все еще такой движок полнотекстового поиска и не только) в разные стороны. Подробности в самом конце поста.

А вот один из секретов про качество поиска начну раскрывать прямо здесь и сейчас. Это новая штука под названием expression ranker, добавленная в версии 2.0.2-beta, (правильный русский перевод еще не придумали), и чуть подробнее я сейчас расскажу про него под катом. Вкратце, оно позволяет задавать свою формулу ранжирования прямо на лету, и даже отдельную для каждого запроса. В общем, эдакий конструктор, который дает возможность каждому попробовать построить свой личный MatrixNet, с четырехмерными шахматами и оперными певицами.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии1

Вышел 2.0.2, скоро слет пользователей и 2.0.3

Время на прочтение5 мин
Количество просмотров2.1K
Мы тут дотестировали, собрали бинарные пакеты и выложили версию Sphinx 2.0.2-beta (это такой опен-сорсный поисковой сервер, использующийся на куче вебсайтов), запланировали на середину декабря (революционное изменение!) к выпуску Sphinx 2.0.3-release, а также усердно готовимся к (бесплатному) слету пользователей Сфинкса 04 декабря в Санкт-Петербурге. Зарегистрироваться на слет нужно по ссылке чуть выше, подать крутой доклад через нашу контактную форму, а ряд подробностей про те ~30 новых фичей и планы/сроки по ближайшим релизам и их циклу можно прочитать под катом.
Читать дальше →
Всего голосов 78: ↑78 и ↓0+78
Комментарии20

Теория Заговора

Время на прочтение1 мин
Количество просмотров5.6K
[Сцена: ранние 90е, офис некоего производителя компьютеров в Силиконовой Долине]

— У меня отличная идея!

— Мочи.

— Знаешь, как программистов-старичков обычно обгоняют и втаптывают в грязь молодые пацаны? Эти детишки только из колледжа выпустились, а код на C и C++ строчат быстрее нас, опытных старых пердунов. У меня это уже в печенках сидит.
Читать дальше →
Всего голосов 246: ↑205 и ↓41+164
Комментарии153

Обходим чужие тормоза

Время на прочтение8 мин
Количество просмотров6.8K
Бэкапил историю сообщений из Skype самописной утилиткой, год назад она работала отлично, а теперь стала люто тормозить. Это неприемлемо, тк. в том числе ради скорости экспорта она и была написана, поэтому полез в профайлер. По итогам узнал всякое и получил множественные просветления. Оказывается, breakpoint на функцию в подгруженной системной DLL ставить приходится с подвывертом, а не просто по имени, но таки можно и нетяжело. Оказывается, Skype API написан местами зверски криво, отчего и тормозища. Оказывается, чужие бинарники иногда можно очень легко подхачить и подоптимизить (слава MS Research!). Оказывается, профайлер может сильно врать, а не просто слегка подбрехивать. Ключевые слова для нетерпеливых: C++, VS, CodeAnalyst, Skype COM API, MS Research, Detours, SQLite; а для всех остальных подробности под катом.
Читать дальше →
Всего голосов 180: ↑176 и ↓4+172
Комментарии59

Мастер-класс в Киеве, 18 июня (сб)

Время на прочтение2 мин
Количество просмотров763
В следующую субботу, 18го июня, буду проводить в Киеве мастер-класс про Сфинкс, аналогичный проведенному на недавнем Devconf. Осталась неделя, самое время зарегистрироваться. Под катом пара-тройка ответов на стандартные вопросы.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии11

Новости 2.0.1-beta

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

Как здесь уже заметили, недавно вышел Sphinx 2.0.1. Релиз случался в легкой спешке, тк. «совершенно неожиданно» (примерно как сессия или Новый год) еще вдобавок вышла книжка для начинающих, описывающая как раз новую версию. Книга «про транк» это таки слишком эксцентрично, поэтому пришлось оперативно публиковать версию. Хорошо, что мы месяц-другой именно к релизу и готовились: чинили баги, не сильно ломали фичи. В заметке расскажу про всякие нововведения в свежей версии 2.0.1 и планы на следующую версию, см. подкат.
Читать дальше →
Всего голосов 93: ↑91 и ↓2+89
Комментарии30

Про C++ алиасинг, ловкие оптимизации и подлые баги

Время на прочтение6 мин
Количество просмотров42K
С удивлением обнаружил, что про явление алиасинга (aliasing) здесь постов нет. Ситуацию нужно исправить, тк. алиасинг в любой сколько-то сложной C++ программе обязательно хоть где-нибудь, да есть. Это может быть хорошо, давая возможность ловких оптимизаций, а может быть плохо, внося повышенной паршивости баги. Под катом вкратце про оба случая (ну и неизменное «компилятор бьет спина», конечно; для разнообразия сегодня это gcc).
Читать дальше →
Всего голосов 90: ↑89 и ↓1+88
Комментарии49

Учимся правильно бенчмаркать 2: как компилятор бьет в спину

Время на прочтение5 мин
Количество просмотров1.6K
Получить годные цифры бенчмарка это полдела, однако вторая половина их правильно интерпретировать, узнать что-то новое, и суметь применить. 100x отличия промеж дебажным и нормальным билдом удивили, решил копнуть глубже. По итогам получше узнал, что происходит в дебаге; поискал отличия между 2005 и 2008 студией (не нашел); выяснил, как ускорить дебажный билд в 3 раза за пару минут (ставим блок против удара в спину); методом «взять и запустить» получил результаты, отличающиеся от авторских в 3.5 раза (адская сила x64 в действии!); и для смеха замерил плохой, негодный недовектор против хорошего (плохой оказался до 100 раз быстрее). Подробности под катом.
Читать дальше →
Всего голосов 76: ↑74 и ↓2+72
Комментарии24

Учимся правильно бенчмаркать (в том числе итераторы)

Время на прочтение3 мин
Количество просмотров2.5K
Скачал пример из предыдущего постинга, от запуска к запуску время дрожало до 1.5 раз, от 0.76 до 1.09 секунд. Как можно оценивать результаты подобных бенчмарков, неясно. Проблема знакомая, столкнулся и решал буквально вчера. Вкратце, виноват CPU throttling, а так же странный affinity в коде. Под катом борьба (успешная) и обсуждение.
Читать дальше →
Всего голосов 85: ↑82 и ↓3+79
Комментарии21

Конференция пользователей Sphinx уже в это воскресенье

Время на прочтение1 мин
Количество просмотров766
Внезапно, до общего Московского сбора пользователей поискового движка Сфинкс осталось менее 3 суток. Программа докладов — sphinxsearch.com/conf2010ru.html, место проведения — МГУ, ВМК (2й уч. корпус), ауд. П-14, начало — 24 октября, 10:00 утра.

Только что разослал почтовые подтверждения всем зарегистрировавшимся; если вы ничего не получили, срочно напишите нам. Если еще не регистрировались, остался последний день (пятница) — но есть некоторая опасность, что сидячих мест уже может не хватить, приходите с походной пенкой или раскладными стульчиками ;)

Мы ждем всех!
Всего голосов 26: ↑24 и ↓2+22
Комментарии10

Конференция пользователей Sphinx: Москва, 24 октября

Время на прочтение1 мин
Количество просмотров500
Мы устраиваем первую конференцию пользователей Sphinx. Бесплатную, опен-сорсную, все эти дела. Пройдет 24 октября (воскресенье), в Москве.

Доклады в основном технические: про ловкое использование связки Sphinx/MySQL, про поисковой кластер на несколько TB, про тонкости поиска работы, про тонкости товарного поиска. Что особенно приятно, все это будут рассказывать как раз пользователи. Понятно, кое-что расскажем и мы сами. Но ваш боевой опыт интереснее, потому приглашаем еще докладчиков!

Чуть больше подробностей, регистрация, и вообще вся актуальная информация — по адресу sphinxsearch.com/conf2010ru.html

Пишите письма, заходите в гости, будем рады видеть!

UPD: еще обновления будут класть в vkontakte.ru/club20032698 — вконтактом не пользуюсь, но говорят, многим удобно.
Всего голосов 47: ↑44 и ↓3+41
Комментарии18

вышел Sphinx 1.10-beta

Время на прочтение1 мин
Количество просмотров1.3K
Третьего дня выложил Sphinx 1.10-beta, с блекджеком и шлюхами RT индексами, строковыми атрибутами, оптимизированным форматом индекса, и традиционным десятком-другим фич поменьше. Вчера выложил к нему RPM вот еще.
Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии50
1

Информация

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