Обновить
404
0
Andrew Aksyonoff @shodan

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

Отправить сообщение
Таки нет сил более молчать ;)

Ребята, там ведь в тексте прямо сразу (сразу) после того предложения про циферки русским по белому все (все) написано.

Вы не поверите, наверное, но я того — типа знаю, что такое mangling, зачем в целом нужен, что такое c++filt, чем __stdcall отличается от __fastcall, и еще массу странных вещей.

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

Смысл, однако, в том, что (снова) заметив несложную зависимость — даже не нужно тратить вреия, гуглить и подновлять в голове эти правила, насущная мини-подзадача мгновенно решается и так, причем — быстрее.

Кроме того, заметка написана — не для меня, и даже не для тех, кому слово mangling последние 20 лет родное, ошибки компиляции boost-а читаемы, а всю заметку можно сжать к трем строкам «skype4com дрочил lcmapstringex как одуревший; хукнулся detours-ом; сделал fastpath; начало 3.6x летать; detours сила; skype4com FUUU» совершенно без потерь.

Но, наверное, революционные выводы о степени незнаний автора делать интереснее ;)
Теоретически можно, если поставить Call Stack Sampling. Практически, в данном случае оно тоже подбрехивает. LCMapStringW в профайле низко; LCMapStringEx высоко. Но по факту LCMapStringEx адскую кучу раз вызывается именно из LCMapStringW и именно W я перехватываю.

5 часов это прикидки (!), причем по числу уже экспортированных чатов, а не мессаг. А там очень неравномерное распределение. Конечная цифра могла быть сильно другая, но я не дождался. 3.6 раза в свою очередь это ускорение на небольшом подмножестве работы, менее 1.5% чатов и менее 0.5% мессаг.

Те. если дождаться конца работы исходной версии на полных данных, коэффициент скорее всего будет другой.

Инкрементально делать сложнее, интерфейс не способствует. Плюс сама идея городить инкрементальные бэкапы для 30 мб текста из 200 мб базы меня коробит, на таких объемах полный экспорт обязан длиться разумное время.
> Зачем ради всяких недогосударств, которые не могут перейти на нормальную письменность

Country, Population, GDP
China, 1336M, $10.1T
Russia, 139M, $2.2T
South Korea, 49M, $1.46T
Thailand, 67M, $0.59T
Нет, конечно — я даже не знал, что у них есть сколько-то публичный трекер.
(пожимает плечами) Меня пока отлично устраивает, если что.

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

А говнокода везде и всюду кучи, не в его наличии или отсутствии счастие.
В тематическом блоге по C++ я ожидаю, что еще и не такое понятно.
Повторюсь, там ОЧЕНЬ МНОГО вложенных вызовов в Skype API видно, если из сисколла глядеть — несколько десятков, возможно, более сотни. Наверняка оно собрано с оптимизациями и потому с одной из точек стек и не разматывается, ага.
Я ж там написал в самом конце, SQLite Browser. Тушишь скайп, открываешь main.db, там открываешь табличку с мессажками, и далее нехитрыми SQL запросами творишь чудеса.
Можно и я пробовал. Только до собственно программы стек не разматывается и поэтому ни в отладчике VS, ни в дереве CA все равно моего кода не видать. Чтобы понять, какой вызов приводит к чему и в каком объеме, так и эдак приходится вручную обставлять программу breakpoint-ами либо printf-ами.
Если два — как понять, который врет?
Чем-то не устроило, деталей уверенно не помню. То ли ряд нужных non-message events экспортировать не удавалось, то ли часть messages терялась, тк. отсутствовала в main.db (предположительно хранилась в chatsync).
> Жалко не остались на автопати, просто все рассосались подумали, что не будет.

Вот вечно так, сам не организуешь — ничего не самоорганизуется!!!

Ладно, учтем ошибки на будущее — будем объявлять понятнее, что все оставшиеся вопросы необходимо задать в ближайшем заведении!!!
В зависимости от конкретных требований, есть ряд фич и директив: charset_table, blend_chars, exceptions. Первые две позволяют настроить классы символов. Третья дает задать список уникальных исключений из правил (в котором можно использовать вообще любые символы).
В тесте помогает.

— Query 1 (mode=extended2,ranker=(default),index=) — Query 'dog run': retrieved 4 of 4 matches in 0.001 sec.
Word stats:
'=dog' found 2 times in 2 documents
'dog' found 4 times in 4 documents
'=run' found 2 times in 2 documents
'run' found 4 times in 4 documents

Matches:
1. doc_id=4, weight=4430 body=«dog run»
2. doc_id=1, weight=3416 body=«dog runs»
3. doc_id=2, weight=3416 body=«dogs run»
4. doc_id=3, weight=2402 body=«dogs running»
При включении «просто» морфологии оно все слова приводит к одному и тому же стему внутри и более не отличает.

Можно попробовать index_exact_words=1 + expand_keywords=1. Первое сохранит исходные точные формы в индекс. Второе автоматом расширит запрос и заменит каждое слово на (=слово|слово). Что, теоретически, приведет к бусту веса точных совпадений.
можно еще «one two three»/1, оно эквивалентно. (Именно так внутри эмулируется ANY.)
> Использую SPH_MATCH_ANY

ыыыааа.

который вообще не смотрит на частоты слов — это вроде умеренно подробно как раз расписано в посте. нет?

(one | two | three) + extended2 + sph_rank_proximity_bm25 и вперед.
Длина не имеет значения. При прочих равных ранжироваться выше должны более редкие слова. Если слово «мини» в коллекции реже, чем «трактор», оно победит.

Информация

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