а Дуров сейчас разрешает использовать «неродные» технологии?
я так понимаю, он затем или выкупает продукт или человека с продуктом. т.е. код ему нужен будет «родной» для платформы.
помню, в первом конкурсе(ВК-клиент) он запрещал использовать Monotouch.
я не знаю, как выглядят другие протоколы, но по некоторым обзорам реализация MTProto под iOS (Telegram) шустрее пересылает файлы.
Сам протокол мне понравился. Сначала он показался мне несколько громоздким, но на деле оказался довольно удобным, гибким и легко расширяемым.
Тоже участвовал в конкурсе, могу немного прокомментировать.
MTProto мало похож на известные мне бинарные протоколы, из оригинальных решений — клиент обязан разложить полупростое число (размер, в теории, может зависеть от «назойливости» клиента) на два простых перед тем как получит возможность делать запросы.
Удобная реализация RPC — названия RPC-методов и типы данных в бинаре обозначаются с помощью CRC32 от строки, описывающей их по определенным правилам.
В протоколе предусмотрено GZIP-шифрование и группировка сообщений, что довольно удобно — действительно позволяет слать меньше данных.
Внезапным огорчением стала работа с «векторами» — они неочевидным образом иногда были «голыми» (без CRC32-заголовка), а иногда — нет, причём в отличие от сотен «голых» чисел, это — явная экономия на спичках.
Видно, что ребята попытались максимально упростить довольно сложные вещи типа миграции между ДЦ, но в протоколе всё равно пришлось побиться об них. В целом, однако, впечатления положительные.
Кстати, большинство отзывов «крутятся» вокруг того факта, что видео/аудио/фото и прочий контект передается/отправляется куда быстрее. Чем вызвано? В чем особенность передачи файлов? За счет чего достигается ускорение?
Файлы разбиваются на порции и пересылаются через отдельную сессию и отдельное соединение.
Таким образом передача данных не мешает получению обновлений и другим вызовам методов. Вот и все особенности
Передача файлов действительно идёт так, как описал xakpc. Предполагается что клиенты MTProto могут уменьшать размер изображений, таким образом уменьшая объём данных.
Поделитесь тогда, пожалуйста, русскоязычными статьями про разработку под Android на Qt с использованием замыканий и лямба-выражений ( C++11 ) для протокола MTProto. Надеюсь, что среди этого достаточного количества статей, полно интересных моментов о том, как на питоне генерируют C++ код по json-схеме протокола, и как приходится форкать и допиливать некоторые opensource проекты, чтобы собрать свой.
В общем, я хотел сказать, что вы и Пастернака вероятно не читали, но осуждаете :)
А интерфейс писали руками или всё-таки отдельно в IntelliJ с автокомплитом? А то я тоже брался участвовать с Xamarin, да вот без автокомплита XML писать интерфейсы андроида это боль.
Xamarin предлагает неплохой инструмент рисования интерфейсов, его и использовал. Хотя признаюсь, без Intellisence тяжело писать раскладку руками.
Ирония в том что Intellisence там есть, просто заставить его работать не так просто
У меня например после подключения схем он так и не заработал, зато сгенерировал 100 варнингов.
Зашёл на сайт Xamarin погрустить о ценах, обнаружил, что бесплатная версия теперь может запускаться на устройствах, но с ограничением в 32Кб кода. Стал гуглить, много ли это, выходит, что мало, хватает только на что-то примитивное без сторонних библиотек. Зато обнаружил альтернативную реализацию .NET под андроид, dot42, для некоммерческого использования бесплатно и без ограничений. Буду пробовать.
SQLite вполне способен заменить файловую систему. Это сразу дает много очков к реюзу кода. Да и производительность не сильно страдает (главное разделить файл с блобами и файл индексов, в файле блобов не искать, а сразу запрашивать нужное).
В дополнении:
1. Создание одной cross-platform portable compiled library кажется мне предподчительнее чем линкование
2. Библиотека MvvmCross очень помогает разработке.
Во-первых, разделением Business Logic от UI,
во-вторых, там есть несколько полезных плагинов, которые облегчают кроссплатформенный код — кеширование картинок, работа с файлами, SqlLite…
Разработка IM на конкурс Павла Дурова с помощью Xamarin