Pull to refresh

Comments 23

круть!

а Дуров сейчас разрешает использовать «неродные» технологии?
я так понимаю, он затем или выкупает продукт или человека с продуктом. т.е. код ему нужен будет «родной» для платформы.
помню, в первом конкурсе(ВК-клиент) он запрещал использовать Monotouch.
Да, в том конкурсе было явно написано: «Исходный код Objective-C».
В этом таких условий не было, архив с исходным кодом C# на второй этап приняли.
Листал при выходе документацию МТПрото.
По вашему мнению перспективы есть у протокола или очередное «слизывание» у кого-то?
я не знаю, как выглядят другие протоколы, но по некоторым обзорам реализация MTProto под iOS (Telegram) шустрее пересылает файлы.
Сам протокол мне понравился. Сначала он показался мне несколько громоздким, но на деле оказался довольно удобным, гибким и легко расширяемым.
Тоже участвовал в конкурсе, могу немного прокомментировать.

MTProto мало похож на известные мне бинарные протоколы, из оригинальных решений — клиент обязан разложить полупростое число (размер, в теории, может зависеть от «назойливости» клиента) на два простых перед тем как получит возможность делать запросы.

Удобная реализация RPC — названия RPC-методов и типы данных в бинаре обозначаются с помощью CRC32 от строки, описывающей их по определенным правилам.

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

Внезапным огорчением стала работа с «векторами» — они неочевидным образом иногда были «голыми» (без CRC32-заголовка), а иногда — нет, причём в отличие от сотен «голых» чисел, это — явная экономия на спичках.

Видно, что ребята попытались максимально упростить довольно сложные вещи типа миграции между ДЦ, но в протоколе всё равно пришлось побиться об них. В целом, однако, впечатления положительные.
клиент обязан разложить полупростое число

proof-of-work как в Bitmessage?

Кстати, большинство отзывов «крутятся» вокруг того факта, что видео/аудио/фото и прочий контект передается/отправляется куда быстрее. Чем вызвано? В чем особенность передачи файлов? За счет чего достигается ускорение?
Файлы разбиваются на порции и пересылаются через отдельную сессию и отдельное соединение.
Таким образом передача данных не мешает получению обновлений и другим вызовам методов. Вот и все особенности
Да, я думаю это схожий алгоритм.

Передача файлов действительно идёт так, как описал xakpc. Предполагается что клиенты MTProto могут уменьшать размер изображений, таким образом уменьшая объём данных.
Интересно! Мы с товарищем делали на Qt, надо бы тоже статью оформить :)

p.s.
CamelCase — это PascalCase, а тру camelCase с первой маленькой :)
Писать про нечто на Qt не имеет смысла, статей достаточно. Конкретно здесь статья имеет два пункта «уникальности»:
  1. Рассказать о разработке на Android на C#
  2. Рассказать о протоколе MTProto

Поделитесь тогда, пожалуйста, русскоязычными статьями про разработку под Android на Qt с использованием замыканий и лямба-выражений ( C++11 ) для протокола MTProto. Надеюсь, что среди этого достаточного количества статей, полно интересных моментов о том, как на питоне генерируют C++ код по json-схеме протокола, и как приходится форкать и допиливать некоторые opensource проекты, чтобы собрать свой.

В общем, я хотел сказать, что вы и Пастернака вероятно не читали, но осуждаете :)
Ну коли просите, к примеру эта статья.

А вообще, прошу меня простить, я думал вы просто про Qt говорили.
Да? Покажите-ка мне эту кучу РУССКОЯЗЫЧНЫХ статей на тему android + Qt. Интересно будет посмотреть.
Не успел…
PascalCase — действительно…

И как, вам удалось пройти в третий этап?
А интерфейс писали руками или всё-таки отдельно в IntelliJ с автокомплитом? А то я тоже брался участвовать с Xamarin, да вот без автокомплита XML писать интерфейсы андроида это боль.
Xamarin предлагает неплохой инструмент рисования интерфейсов, его и использовал. Хотя признаюсь, без Intellisence тяжело писать раскладку руками.

Ирония в том что Intellisence там есть, просто заставить его работать не так просто
У меня например после подключения схем он так и не заработал, зато сгенерировал 100 варнингов.
Зашёл на сайт Xamarin погрустить о ценах, обнаружил, что бесплатная версия теперь может запускаться на устройствах, но с ограничением в 32Кб кода. Стал гуглить, много ли это, выходит, что мало, хватает только на что-то примитивное без сторонних библиотек. Зато обнаружил альтернативную реализацию .NET под андроид, dot42, для некоммерческого использования бесплатно и без ограничений. Буду пробовать.
да dot42 тоже интересный вариант, однако он только под ведройд, вот сделали бы кросс (хотя бы ios) было бы счастье.
В дополнение.

SQLite вполне способен заменить файловую систему. Это сразу дает много очков к реюзу кода. Да и производительность не сильно страдает (главное разделить файл с блобами и файл индексов, в файле блобов не искать, а сразу запрашивать нужное).
Интересно. А напишите мне в вк: (http://vk.com) — интересно будет пообщаться по поводу библиотеки мтпрото+апи для шарпа.
Нет, просто Степан уже готовится к аналогичному конкурсу для Windows Phone :).
Очень понравилась статья

В дополнении:
1. Создание одной cross-platform portable compiled library кажется мне предподчительнее чем линкование
2. Библиотека MvvmCross очень помогает разработке.
Во-первых, разделением Business Logic от UI,
во-вторых, там есть несколько полезных плагинов, которые облегчают кроссплатформенный код — кеширование картинок, работа с файлами, SqlLite…
Sign up to leave a comment.

Articles