суббота, 6 апреля 2019 г.

Flutter + Android = Awesome


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

суббота, 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 сообщения в чате. В принципе, это единственное место, где я был доволен ситуацией, ибо обрабатывай - не хочу, хотя и не секурненько. Также в этой таблице, есть ещё другие флаги и поля, которые хранят важную информацию, но мне пока хватило и этих.

Каких-то особых выводов в этой истории нет и быть не может т.к. всё соответствует трём максимам:
  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 в этом плане для меня абсолютно ничем не примечательный год. 

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

вторник, 26 декабря 2017 г.

Об игровых движках в 2017

Вот тут Jeff Preshing пишет о том, зачем может понадобиться писать свой игровой движок. Тут довольно классические причины: вам нравится, вам хочется контроля за тем, что в движке делается (это обо мне), ну и, обучение само собой, куда без него.

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

Что отметил для себя: я как-бы сторонник обобщения до предела, но тут как раз в статье постулируется подход "наоборот", что порой, не всё стоит обобщать и выделять в абстракции и пример с умными указателями действительно хорош.

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

Приятно, что Unity и Unreal не полностью убили разработку игровых движков (особенно на плюсах).

четверг, 14 декабря 2017 г.

Мои итоги года (часть 1 или метапост)

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

В целом, формально мне удалось выполнить это условие. Но качество постов, на мой взгляд, упало до плинтуса. Я подумал над этим и нашел тому три причины.