суббота, 6 апреля 2019 г.
суббота, 2 марта 2019 г.
Сетевая бессвязность или мысли о локалочках
Иногда, я думаю о том, что несмотря на сложившееся мнение о том, что открытое лучше закрытого, иногда гораздо проще и дешевле будет держать свою физическую локалку (даже не VPN, а именно физическую) и аккуратно давать к ней доступ, таким образом сохраняя "security by obscurity" и забив на большинство проблем, возникающих при открытой инфраструктуре (DDoS и иже с ним). К этому, временами, примешивается ещё и ностальгия по временам расцвета локалок и DC++.
Мысль довольно нубская и на мой взгляд, странная, поэтому решил подумать, разобраться и написать сей пост.
понедельник, 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 сообщения в чате. В принципе, это единственное место, где я был доволен ситуацией, ибо обрабатывай - не хочу, хотя и не секурненько. Также в этой таблице, есть ещё другие флаги и поля, которые хранят важную информацию, но мне пока хватило и этих.
Каких-то особых выводов в этой истории нет и быть не может т.к. всё соответствует трём максимам:
Каких-то особых выводов в этой истории нет и быть не может т.к. всё соответствует трём максимам:
- Всё что не сохранено локально в двух экземплярах можно считать удалённым
- Всё что хранится в облаке можно считать удалённым.
- Единственный хороший мессенджер - это тот, который вы написали и хостите сами. По крайней мере, если в нём чего-то не будет - то вы сами виноваты.
вторник, 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 в этом плане для меня абсолютно ничем не примечательный год.
И да, я в этой части не буду говорить про блокчейн и про биткойн. Во-первых, это скорее финансовые инструменты и они мне менее интересны. Тем не менее, если вычесть это и ML, то 2017 в этом плане для меня абсолютно ничем не примечательный год.
И мне грустно от этого. Почему?
вторник, 26 декабря 2017 г.
Об игровых движках в 2017
Вот тут Jeff Preshing пишет о том, зачем может понадобиться писать свой игровой движок. Тут довольно классические причины: вам нравится, вам хочется контроля за тем, что в движке делается (это обо мне), ну и, обучение само собой, куда без него.
Далее описывается разработка очень специфичного движка, заточенного под специфичную задачу, что, как я считаю и может являться основной причиной разработки нового движка. По идее, только за счет минимализма в движке можно выиграть у монстров типа того же Unity или UE.
Что отметил для себя: я как-бы сторонник обобщения до предела, но тут как раз в статье постулируется подход "наоборот", что порой, не всё стоит обобщать и выделять в абстракции и пример с умными указателями действительно хорош.
Также сериализация в статье декларируется как сложная и серьёзная проблема, с которой лучше не заморачиваться и делать как можно проще. Не знаю, у меня как-то относительно просто вышло, несмотря на присутствие графовых структур. Правда работает медленновато.
Приятно, что Unity и Unreal не полностью убили разработку игровых движков (особенно на плюсах).
Далее описывается разработка очень специфичного движка, заточенного под специфичную задачу, что, как я считаю и может являться основной причиной разработки нового движка. По идее, только за счет минимализма в движке можно выиграть у монстров типа того же Unity или UE.
Что отметил для себя: я как-бы сторонник обобщения до предела, но тут как раз в статье постулируется подход "наоборот", что порой, не всё стоит обобщать и выделять в абстракции и пример с умными указателями действительно хорош.
Также сериализация в статье декларируется как сложная и серьёзная проблема, с которой лучше не заморачиваться и делать как можно проще. Не знаю, у меня как-то относительно просто вышло, несмотря на присутствие графовых структур. Правда работает медленновато.
Приятно, что Unity и Unreal не полностью убили разработку игровых движков (особенно на плюсах).
четверг, 14 декабря 2017 г.
Мои итоги года (часть 1 или метапост)
В начале этого года я поставил себе в рамках развития нехитрую цель: писать по одному посту в месяц. В новом году я скорее всего отойду от этой идеи и вот почему.
В целом, формально мне удалось выполнить это условие. Но качество постов, на мой взгляд, упало до плинтуса. Я подумал над этим и нашел тому три причины.
В целом, формально мне удалось выполнить это условие. Но качество постов, на мой взгляд, упало до плинтуса. Я подумал над этим и нашел тому три причины.
Подписаться на:
Сообщения (Atom)

