понедельник, 13 августа 2018 г.

Skype и его история сообщений

Немногие знают, что у меня постоянно висит в Скайпе диалог  с неким К., которого я уже давно знаю и с которым у меня часто происходят довольно примечательные диалоги. Их иногда довольно здорово, спустя полгода-год перечитать, потому что это уже отпечаток истории, как старый фотоальбом или записки пятилетней давности. Но скроллить мессенджер вверх, чтобы почитать всё в хронологическом порядке неудобно, т.к. там полноценный браузер и он тупит и тормозит из-за бесконечных подгрузок через AJAX. И недавно, я задумался об экспорте истории в удобочитаемый вид.  На поверку оказалось, что самый лучший способ экспортировать полностью историю из Скайпа - это, судя по всему, устроиться в NSA. Почему?  Да потому что, как обычно, развитие продукта отломало всё что можно.

Вот, например, есть ссылка на FAQ.  Вроде бы всё адекватно написано. Но нет: во-первых в новом Skype для Windows 10 экспорт истории найти невозможно. Я искал минут пятнадцать, но его нет.  В других местах, естественно говорят о том, что-де юзайте Skype Classic. Так вот  - там эта кнопка открывает пустое окно. В Skype API этого тоже нет, там вообще кроме interviews и ботов ничего и нет. Шиш вам с маслом, а не история, ишь чего захотели.

Если говорить серьёзно, то  в этом есть какая-то логика: что если я взломал чей-то аккаунт и захотел слить историю? Но тогда какой смысл вообще говорить об экспорте истории, какой смысл вообще в централизованном сервере скайпа? 

Однако, в конечном итоге, историю удалось достать из файла C:\Users\<имя пользователя>\AppData\Roaming\Skype\<имя аккаунта Skype>\main.db .  И то, по сути из-за того, что использовалась старая версия скайпа и там сообщения судя по всему, грузились до бесконечности. В итоге удалось достать сообщения, которые были отправлены 5 лет назад.  А вот, если вы поставили скайп заново хоть какой - то дальше месяца назад по времени не улетите, как бы ни хотелось. По крайней мере, у меня не вышло. 

Изнутри этот файл - тупо БД SQLite3, можно сходу выбрать все нужные сообщения через несложный код вида:

SELECT 
    `id`, 
    `timestamp`, 
    `from_dispname`, 
    `body_xml`  
FROM  Messages 
WHERE 
    `convo_id` = <ID чата в таблице Conversations> 
ORDER BY 
    `timestamp` ASC; 

timestamp здесь - время отправки, from_dispname - имя автора, отображаемое в чате, body_xml - по большому счету HTML сообщения в чате. В принципе, это единственное место, где я был доволен ситуацией, ибо обрабатывай - не хочу, хотя и не секурненько. Также в этой таблице, есть ещё другие флаги и поля, которые хранят важную информацию, но мне пока хватило и этих.

Каких-то особых выводов в этой истории нет и быть не может т.к. всё соответствует трём максимам:
  1. Всё что не сохранено локально в двух экземплярах можно считать удалённым
  2. Всё что хранится в облаке можно считать удалённым.
  3. Единственный хороший мессенджер  - это тот, который вы написали и хостите сами.  По крайней мере, если в нём чего-то не будет - то вы сами виноваты.







вторник, 3 апреля 2018 г.

И ещё раз про AppVeyor

Недавно отвалился билд со странной, периодически появляющейся ошибкой от devenv - "This operation should only take place on the UI thread". Гугл по ней ничего полезного не дал, все файлы были в порядке.

Исправил тем, что поменял devenv на msbuild для сборки. И всё заработало без проблем. 

Ещё недавно переоткрыл для себя braced initialization в C++ . Вот здесь в примерах плохо понятно, почему это круто, но на самом деле даже при переприсваивании объекта можно серьёзно сэкономить в объёме на названии конструктора.

Например какой-нибудь код, вида :  m_current_line->ToId = Maybe<unsigned int>(m_current_rule->Id);  запросто превращается в m_current_line->ToId = {m_current_rule->Id}; ,а это уже на 20 символов меньше к набору и чтению. И в чтении теряются только типы, которые не всегда так уж важны. Удобно!

вторник, 2 января 2018 г.

Мои итоги года (часть 2 или про программирование в целом)

Я во многом этот год провёл за PHP и куда меньше за плюсами, но во многом старался ковырять много интересных штук. Однако недавно поймал себя на мысли что всё равно как-то интерес ко всему этому стал угасать.

И да, я в этой части не буду говорить про блокчейн и про биткойн. Во-первых, это скорее финансовые инструменты и они мне менее интересны. Тем не менее, если вычесть это и ML, то 2017 в этом плане для меня абсолютно ничем не примечательный год. 

И мне грустно от этого. Почему?