Pull to refresh
404
0
Andrew Aksyonoff @shodan

User

Send message
наименее распространенный интерфейс (и через это наименее тестируемый соотв-но)

всякие новые интересные изменения строго в последнюю очередь

кривоватый синтаксис (причем afair спрямить концептуально нельзя)

но мы ж начали обсуждение с удобства, да? :)

вот имхо (имхо) удобнее всего в большинстве случае именно sphinxql

всем понятные запросы, через привычный mysql интерфейс, все привычно и наглядно
да не за что

фичей видимо много, а разработка не стоит на месте — и где какая сегодня поддерживается, запомнить тяжело :)

так точно! причем все это на java

очень, очень полезно для энтерпрайзности и исключения неинтересных проблем перформанса («ну поставьте 1000 серверов для поиска по 10 GB данных»)

но не умею Eclipse-ом пользоваться, надо начинать!
это морфология сработала — она есть (и почти вся остальная обработка текста тоже)

подстрок пока нет — но будут
да я вообще про полнотекстовые индексы «в целом» — и чисто для информации

те. вот говорят, можно индекс ажно до 7% ужаться, а не 50% — любопытно же!!!
дык я ж не говорю — что мгновенно среагируем и сразу починим

однако раз багрепорт есть — и нам есть, что проверять, когда руки дойдут

по каждому (каждому) багрепорту рано или поздно работы ведутся
дык можно sql_attr_string успешно делать начиная с какой-то версии
> стеммеры, морфологию и пр.

я аж проснулся

видимо если ее не включать в конфиге, то не поддерживают

а если включать

Z:\work\sphinx\sphinx>mysql -P9306
Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is 1
Server version: 1.11-dev (r2691)

mysql> insert into rt values (123,'running','',1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from rt where match('run');
+------+--------+------+
| id | weight | gid |
+------+--------+------+
| 123 | 1500 | 1 |
+------+--------+------+
1 row in set (0.00 sec)
> Любой полнотекстовый индекс будет весить никак не меньше половины данных.

чисто в порядке бесполезных любопытных фактов, можно довольно ощутимо меньше

у меня навскидку сфинксом при hitless_words=all, stopwords=top100.txt получилось 31% от текста

те. это индекс без позиций слов и с отрезанием top-100 стопов такой получился

сильно зажатый индекс без позиций слов, говорят, до всего-то 7% от текста люди упихивали

зачем он такой реально нужен, конечно, все равно не очень ясно :)
удобнее всего через sphinxql имхо

sphinxse запросы корявенькие
если кстати segfault-ы репортить в трекер, у нас появляются шансы их починить

а если не репортить, не повляются

такой дуализм
Нет, не совсем. Для POD типов разрешен алиасинг при отличии квалификатора или знаковости (const int * супротив unsigned int * например), reinterpret тут ортогонален. К родительскому типу класса приводить тоже безопасно, конечно. Про дочерний однако не могу сказать наизусть, надо проверять; g++ -O3 -fstrict-aliasing -Wall в руки и вперед (на простейшем примере оно про type punning завсегда жалуется).
А, ок. Просто заход с ламентаций про ненужные оптимизации итп шаблоны как-то смазал впечатление, что SA это именно основной!!!

Обсуждать конструктивно нечего хотя бы просто потому, что это в конце концов стандарт. Dura lex, sed lex, gcc в своем праве.

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

Ну те. если среда сборки и исполнения всегда одинаковая вплоть до версии компилятора, то можно смело писать вообще (packet*) и оно даже будет работать, несмотря.

А если нет, то отличия трюков с упаковкой на разных платформах это потенциальное место для возникновения глупых проблем. Зачем такое место создавать, если можно сразу заткнуть, не очень понятно. При прочих равных предпочитаю тупой железобетонный код, который гарантированно нигде не сбойнет.
Я честно говоря не очень понимаю основного пойнта этой ветки обсуждения. О чем именно ты хочешь поговорить? Сверхидеи (см. «давайте будем богатыми и здоровыми») я так понял не годятся; дискуссиионного момента в них реально маловато, да. Хочешь пообсуждать частности, типа конкретных проблем парней, поддерживающих десктопный легаси софт, причем склонных к неуместным нано-оптимизациям? Ок, но я боюсь, на такую конкретную тему мне будет практически нечего сказать.

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

Про лютую, бешеную опасность это схоластика, конечно. Эдак можно договориться, что любые оптимизации опасны. Я и при -O1 ловил всякое. Это не более, чем лишний повод аккуратнее проверять и внятно бенчмаркать перед принятием того или иного решение.
Февраль выдался богатый на удивлятельные грабли. На месячник мне понадобится помощь коммьюнити в формате «расскажите мне, о чем рассказать» однако.
Я за точечную оптимизацию топа профайлера вообще-то. Это тоже нужно уметь делать. «Обычную десктопную программу» вообще писать на C++ сегодня не нужно. В необычных и недесктопных бывает и каждый 1% важен. Шаблоны опять-таки надо применять там, где уместно; а где неуместно, выкидывать.

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

Конкретно про aliasing мне лично (мне лично) все равно, включен он или выключен, главное, штоп warning был. Его местами однако нет и именно это более всего удручает.
В профессиональной среде знакомых с явлением лиц, боюсь, слово «синоним» проще всего объяснить именно как «алиас» :) Плюс снимаются проблем неоднозначности «aliasing», «pointer aliasing» итп. Иначе «синоним указателя» например сразу имеет неоднозначный смысл — это «pointer aliasing» или таки «alias of a pointer» или еще что? Неясно.
В коде про сетевой (packet*) есть много более насущные грабли. Данные туда положит системный вызов и поэтому никаких проблем с перестановкой чтений-записи из-за SA не возникнет (если сразу сконвертировать указатель и работать только с ним).

Во1х сильно опаснее выравнивание полей (member alignment). Вероятность поймать «не такие» байтовые смещения полей куда выше, тк. компилятор поля выравнивает по границам 4/8/16 байт (и правильно делает, иначе доступ к памяти медленнее).

Во2х плюс пересылать целые числа по сети традиционно принято в отличном от Intel порядке байт, чтоб машины итп устройства с разными порядком могли друг с другом таки говорить. Это всякие маломодные устройства типа SPARC или несколько более частые ARM унутре iPhone, iPad итп мобил. Нужно делать ntohl()/htonl().

Information

Rating
Does not participate
Works in
Registered
Activity