Pull to refresh
16
0
Евгений Табацкий @jatx

Программист

См. "Какие существуют альтернативы?"

Добавил подсветку синтаксиса для Java.


Выглядит это примерно так

image

Спасибо за статью. Хоть я и обладаю некоторым опытом в практической разработке под Андроид, но многое из написанного узнаю впервые.

Добавил в приложение простенький текстовый редактор.
Возможно, в будущем появится и подсветка синтаксиса.

Вполне себе запускается через VNC.
Только вот build-tools оно по умолчанию использует для x86.
Если аналогичным способом подменить build-tools в его sdk на версию из репозитория debian, по идее должно работать. Но я не пробовал :)

Устройство arm.
Android SDK взял под x86, установил пакет android-sdk-build-tools из репозитория Debian (отсюда ограничения не версию Debian >= stretch и версию build tools == 24.0.0), скопировал build tools 24.0.0 в папку Android SDK — и всё заработало.


Про LinuxDeploy и подобные приложения я в курсе. Но в данном конкретном случае мне показалось, что удобнее будет через скрипт.

Исправил ссылку.

Еще одна ссылка — небольшой инструмент для практического использования СДЕ:
http://tabatsky.ru/BMU

Почти три года спустя была обнаружена одна интересная особенность, связанная с точностью вычислений с плавающей точкой в MATLAB:


% В идеале, оба метода должны давать одинаковый результат
% Но в связи с тем, что в матрице A_norm значения имеют одинаковый порядок
% А в матрице A_rel порядки значений могут сильно различаться
% А также в связи с тем, что точность вычислений в матлабе ограничена
% Результат метода с A_norm более точный
% На некоторых наборах данных из-за погрешности вычислений с A_rel
% Компоненты вектора x могут принимать отрицательные значения
% И соответствующие им товары не попадают в ДП
% В методе с A_norm такого быть не должно

A_rel = cov(all_goods_rel);
A_norm = cov(all_goods_norm);

cond = ones(1, goods_count);

B_rel = [2*A_rel cond'];
B_rel = [B_rel; [cond 0]];

B_norm = [2*A_norm cond'];
B_norm = [B_norm; [cond 0]];

b = [zeros(1, goods_count) 1]';
x_rel = (B_rel^-1)*b;
x_norm = (B_norm^-1)*b;

x_rel = x_rel(1:goods_count);
x_norm = x_norm(1:goods_count);
x_norm = x_norm./mean_';
x_norm = x_norm/sum(x_norm);

x = x_norm;

DP = all_goods_rel*x;

Так же был найден критерий, позволяющий судить о правильности вычисления состава ДП:


% Критерий. Цена ДП должна достаточно точно аппроксимировать среднее геометрическое всех цен: 
figure;
plot(real_time, [geom_average/geom_average(1) USD_per_DP_norm_/USD_per_DP_norm_(1) USD_per_DP_rel_/USD_per_DP_rel_(1)]);

Так же я обновил в статье некоторые устаревшие ссылки.

Одна из самых полезных функций для меня — можно ввести первые буквы и нажать TAB. Автоматически добавляет окончание либо предлагает варианты.

Не совсем очевидно, как собственно патчить. Так же есть сомнения, что Ваш способ более простой.
Собственно, а почему бы Вам не написать об этом собственную статью? :)

Тоже думал о том, как хранить его в памяти. Пока не придумал.
Еще такая идея была — dex загружается, и первым делом проверяет на устройстве root. И дальше работает, только если устройство не рутованное.

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

Вопрос интересный.
Мое мнение — стопроцентную защиту приложения от взлома сделать невозможно в принципе.
Но этот самый процент защиты всегда можно увеличить )

С той же страницы правил:


Это правило не распространяется на код, который запускается на виртуальной машине и имеет ограниченный доступ к API Android (например, код JavaScript в компоненте WebView или браузере).

dex-файл загружается каждый раз при запуске.
Смысл как раз в том, что мы можем изменить на сервере dex-файл, не обновляя само приложение.
В принципе, при желании не сложно добавить проверку на время обновления dex на сервере, и загружать его по новой, только если он изменился.


По поводу AAR — как я понял из описания, он используется на этапе компиляции и сборки приложения.
Лично мне этим пользоваться не приходилось.

Не уверен. Каждый раз при публикации там нужно ставить галочку, что-то вроде "приложение не нарушает экспортное законодательство США" (точную формулировку не помню), так что полагаю, что английская версия в данном случае первична, а в русской просто неточности перевода.

Созданный сторонними разработчиками

Интересно, что в данном случае подразумевается под "сторонними разработчиками"? Подходит ли под это определение код, созданный тем же разработчиком, который публикует APK на Google Play?

Вспоминается эта история:


Читать

В отделение Pontiac корпорации General Motors пришло письмо. "Я понимаю, — писал автор, — что могу показаться идиотом, но все, что я хочу рассказать, — святая правда.
В нашей семье все очень любят мороженое. Каждый вечер после ужина мы решаем, какой сорт будем есть на десерт, и я еду за ним в магазин. Проблемы начались после того, как я приобрел новый Pontiac. Каждый раз, когда я покупаю ванильное мороженое и собираюсь вернуться с ним домой, машина напрочь отказывается заводиться! Если мороженое клубничное, шоколадное или любого другого сорта — никаких проблем с пуском. Звучит глупо, но, может быть, в Pontiac есть нечто, что реагирует на ванильное мороженое?".
Президент отделения, понятное дело, отнесся к письму скептически, но все-таки послал инженера на проверку. Владелец автомобиля производил приятное впечатление — вежливый, образованный и явно не псих… Встретились после ужина, поехали в магазин, купили ванильное мороженое.
Все точно — машина не заводится! Так продолжалось несколько дней подряд. Шоколадное — заводится. Клубничное — заводится. Ванильное — не заводится! Инженер был человеком здравомыслящим и отказался верить тому, что у автомобиля может быть аллергия на ваниль. Он продолжал ездить с хозяином в магазин, но теперь отмечал все детали — время поездки, каким бензином и на какой колонке заправляли машину, даже температуру и облачность…
Довольно быстро выяснилось, что дело не в ванили, а в расположении товаров в торговом зале магазина. Ванильное мороженое — как самое ходовое — размещалось в холодильнике самообслуживания у самого входа, а все остальные сорта — в глубине зала, и продавались через кассира. Купить ванильное можно было намного быстрее, чем любое другое…
Задача перешла в разряд технических — почему машина не заводится, если хозяин возвращается к ней быстро? И ответ был найден сразу же — двигатель не успевал остыть, и в карбюраторе оставались пробки, вызванные интенсивным испарением бензина!

Information

Rating
Does not participate
Location
Комсомольск-на-Амуре, Хабаровский край, Россия
Date of birth
Registered
Activity