Pull to refresh
5
0
Комаров Игорь @KomarovI

Middle android developer

Send message
Да, действительно, спасибо)
Лично мне было бы интеpесно почитать более детально об устpойстве Binder Framework. В интеpнете об этом почти что нет литеpатуpы, зато повеpхностное описание найти стало довольно легко. Хотим спуститься глубже!
Проблема на аппаратном уровне (зашумление, потери). А по протоколам – речь идет о протоколах поверх Bluetooth (формате передаваемых данных – пакетов).
Подумываю, но в наших проектах скорее всего будут использоваться кастомные протоколы производителей оборудования, как минимум из-за того, что разработка собственных и поддержка с аппаратной стороны требует ресурсов, которые могут уйти, кхм, на более полезные действия.

А если вы про фреймворки, то вроде бы у protobuf с этим все хорошо, хотя не могу быть уверен, пока что руки не добрались до него.
Да, только есть проблема: если делать sealed class для эвентов – оформить в фрейм не получится. Если не делать – не будет exhaustive when работать, разве что интерфейсом заглушать. На неделе постараюсь выложить бету фреймворка для произвольных эвентов заглушенных таким способом, потом может что-то получится придумать. Как только что-то соображу – сразу добавлю в статью линк.
Именно поэтому можно не заводить детей.
Разработка это жизнь, а жизнь – разработка!
А никто ведь и не говорит, что этот метод используется 'as is'. Его можно абсолютно так же обобщить на двухфакторную авторизацию/аутентификацию.
У себя в маленьком проектике сделал довольно банальную генерацию кодов из 6 символов (самые банальные хеши с участием времени и пользовательской информации) и, чтобы избежать сложных алгоритмов просто закидывал их в Redis с фиксированным expiration. ИМХО, вышло удобнее, чем пропихивать сложную криптографию в проект ;) Да и на первый взгляд кажется вполне безопасно.
AccountManager — отвратительный компонент android фреймворка с вырвиглазным API, который просто невозможно уложить на хоть сколько-нибудь вменяемую архитектуру. Плюс из отсутствующих бонусов — в нем нет ничего для шифрования данных. Это нужно делать самому. SharedPreferences проще при таком же выхлопе. Если вдруг нужно работать с одним аккаунтом из нескольких приложений — можно сделать IPC сервис для авторизации.
Сейчас у себя делаю похожего формата авторизацию. Для защиты от брутфорса отлично помогает два простых правила:

1) на подтверждение кода дается 30 секунд. Дальше он истечет и нужно будет отправлять новый.
2) попытка подтвердить код в независимости от исхода этот код удалит отовсюду.
То есть подобрать можно только алгоритм.

Итого — берем пользовательские данные, время сервера и набор рандомных байт, делаем хеш, отображаем на числа 0..999999 (а можно и так — пусть пользователи помучаются) произвольным способом, и вуаля.
В таком случае советую попробовать написать на почту выше с вашим вопросом. Думаю, это лучшее решение
На сайте Oracle (http://www.oracle.com/technetwork/database/berkeleydb/downloads/licensing-098979.html) указано:
If you do not want to release the source code for your application, you may purchase a license from Oracle. For pricing information, or if you have further questions on licensing, please contact us at berkeleydb-info_us@oracle.com.

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

Поэтому просто взять и использовать не получится. Требуется получиться соответствующую лицензию от великой и могучей корпорации зла Oracle
Я бы вообще не стал сравнивать BerkleyDB с SQLite. Berkley это не реляционная БД. В данном контексте было рассмотрено, как использовать ее в качестве реляционной, но это далеко не единственный и не главный кейс. Из преимуществ, если уж взяться сравнивать, следующее: репликация, вложенные транзакции, многопоточная работа, надежность, явность индексации, независимость от окружения (как в статье было написано — это встраиваемая СУБД), гибкая миграция. Куда более широкий спектр настроек, рассчитана на весьма солидные нагрузки и объемы данных.

upd: касательно API — соглашусь, во многом не очень удобен, но основные косяки можно закрыть своим кодом так же, как закрываем их в SQLite :)
И создает инстанс себя в каждом потоке, угу.
Мне что-то подсказывает, что то, что GreenDAO дал вам прирост в 2 раза — не то, чтобы его преимущество. Скорее просто где-то вы не использовали prepared statements, где-то — не оптимизировали like запрос как вхождение в range. К слову, примерно 20% прирост производительности на голом SQLite дает кэширвание индексов курсора. Так что тут вопрос скорее в том, что GreenDAO за вас сделал базовые оптимизации (но это не точно).
Интересен такой вопрос — как вы делали пагинацию в случае с наличием связи 1-N или N-N. Грубо говоря, есть у меня список учеников, список классов, связанные между собой, очевидно, идентификаторами. Можно ли каким-то образом получить выборку учеников, отсортированную по любому из SecondaryIndex-ов по id класса?
А Вы не проверяли, будет ли работать отлов сигналов на Dalvik VM?
не поверите, интерфейс тривиальный, просто я использую API моей «любимой» компании Microsoft
Где-то здесь, посмотрите в data-layer
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity