С 16 ноября 2012 года администратор домена .ORG.UA ввел плату за регистрацию доменных имен на уровне домена .COM.UA и теперь всем придется платить. Средняя стоимость на рынке ожидается на уровне 80 гривен, что около 10 долларов США.
Интересно кто будет регистрировать этот ORG.UA для новых проектов за 80 грн (чуть меньше $10) если .ORG на whois.com стоит $6.48?
Детей тоже обучить работать с сайтом! И бабушек с дедушками! Фигли они все прохлаждаются когда фрилансер своим непосильным трудом зарабатывает в семью копеечку? :)
Мне главное большой монитор и много места для рук, что бы на стол можно было с локтями и пузом залезть и опереться. Ненавижу когда при работе локти на весу болтаются. А у Вас я вижу стол узковат… неужели удобно?
Ну в logcat логе только системный лог (например такая-то activity стартовала, такой-то процесс завершился и т.п.) и то что приложения сами пишут туда с помощью методов из android.util.Log. По идее приложение не должно писать в лог никакой конфиденциальной информации, но на практике разработчики часто используют методы из android.util.Log в процессе разработки с целью отладки, а потом забывают убрать вызовы этих методов из релиза. Я подозреваю что с Яндекс.Деньгами 1.71 так и получилось. В версии 1.80 это пофиксили.
Не волнуйтесь, у великого физика Фейнмана была похожая проблема. Почитайте «Вы должно быть шутите, мистер Фейнман». В этой отличной книге он кроме всего прочего вспоминает как у него в молодости не получалось снимать девушек на танцах, а его друзья (молодая, но понимающая толк в жизни семейная пара) учили его уму-разуму.
Нет, я свободный художник. Если бы я работал в Яндексе, то наверное я бы имел исходный код этого приложения и не было бы смысла заморачиваться с дизассемблированием и дебаггингом. Но так даже лучше — без исходного кода ковырять программу интереснее :)
Вроде бы тоже даёт (ну по крайней мере нужный твиттер в первой десятке). Но с Google у меня как-то лучше любовь складывается, поэтому пользуюсь в основном им :)
Возможную причину я написал выше, но может Вы и правы — дело действительно в том, что Java не склонна выкидывать public и protected методы. Честно говоря точно не знаю.
Думаю этот код не был отброшен из-за (пишу псевдокодом, так короче и понятнее, кому интересно — сам посмотрит как это выглядит в Smali):
public class CoreApplication implements LocationListener {
// ...неинтересный код был тут
public static CoreApplication getCoreApplication() {
if (coreApplication == null)
throw new RuntimeException("here CoreApplication must exists!");
return coreApplication;
}
private static void onNativeCrashed() {
Class localClass = getCoreApplication().params.getCrashHandlerClass();
if ((localClass != null) && (!getAppBuildIdFromNative().contains("master_market"))) {
new RuntimeException("crashed here (native trace should follow after the Java trace)");
new StringBuilder("App name is ").append(getAppNameFromNative());
new StringBuilder("Build ID is ").append(getAppBuildIdFromNative());
if (getAppBuildIdFromNative().length() > 32)
applicationContext.startActivity(new Intent(applicationContext, localClass).setFlags(268435456));
}
// ...неинтересный код был тут
}
Обратите внимание на метод onNativeCrashed(). Он вызывается при краше native библиотеки которая работает с Яндекс.Картами. Метод получает класс, унаследованный от CrashHandler (в котором и как раз и живет тот самый безобразный метод sendBug(String paramString)) путём вызова
Class localClass = getCoreApplication().params.getCrashHandlerClass();
Если класс получен успешно (см. дальше условия if ((localClass != null)...) и если native-библиотека которая отвечает за взаимодействие с Яндекс.Картами вернула правильный пароль :) — стартует activity, из которой потом можно будет вызвать этот самый гадкий sendBug(String paramString).
Но есть одно «но»! Если посмотреть на метод getCrashHandlerClass(), то мы увидим что он всегда возвращает null:
public class MapsCoreApplicationParams extends CoreApplicationParams
{
// ...ля-ля-ля, не важно
public Class getCrashHandlerClass()
{
return null;
}
// ...ля-ля-ля, тоже не важно
}
Поэтому класс никогда не будет получен, а следовательно activity не стартует и метод sendBug(String paramString) никогда не будет вызван. Как видите, тут все запутано как бразильском сериале :) Думаю поэтому компилятор не смог до конца вкурить все эти связи и стремный код на всякий случай оставил.
Я не стал включать все эти исследования в статью — решил ограничится общей фразой про то что мол тщательное исследование кода приложения заставляет думать что ля-ля-ля…
Если Вы о конкурсе «Охота за ошибками», то Яндекс.Деньги в нем не участвуют (странно, да?). Так что нет, награды мне не будет. Ну да мне и плевать если честно )
Интересно кто будет регистрировать этот ORG.UA для новых проектов за 80 грн (чуть меньше $10) если .ORG на whois.com стоит $6.48?
Детей тоже обучить работать с сайтом! И бабушек с дедушками! Фигли они все прохлаждаются когда фрилансер своим непосильным трудом зарабатывает в семью копеечку? :)
P.S. Мне всегда хочется спросить людей, которые строят подобные схемы — бывали ли они сами хоть раз в милиции в качестве к примеру подозреваемого?
> Локти на столе не лежат. Мне так удобнее,…
Ну вопрос вкуса и привычки наверное :) Спасибо за фото, всегда хотел кабинет под крышей.
и пузомзалезть и опереться. Ненавижу когда при работе локти на весу болтаются. А у Вас я вижу стол узковат… неужели удобно?android.util.Log
. По идее приложение не должно писать в лог никакой конфиденциальной информации, но на практике разработчики часто используют методы изandroid.util.Log
в процессе разработки с целью отладки, а потом забывают убрать вызовы этих методов из релиза. Я подозреваю что с Яндекс.Деньгами 1.71 так и получилось. В версии 1.80 это пофиксили.Обратите внимание на метод
onNativeCrashed()
. Он вызывается при краше native библиотеки которая работает с Яндекс.Картами. Метод получает класс, унаследованный от CrashHandler (в котором и как раз и живет тот самый безобразный методsendBug(String paramString)
) путём вызоваЕсли класс получен успешно (см. дальше условия
if ((localClass != null)...
) и если native-библиотека которая отвечает за взаимодействие с Яндекс.Картами вернула правильный пароль :) — стартует activity, из которой потом можно будет вызвать этот самый гадкийsendBug(String paramString)
.Но есть одно «но»! Если посмотреть на метод
getCrashHandlerClass()
, то мы увидим что он всегда возвращает null:Поэтому класс никогда не будет получен, а следовательно activity не стартует и метод
sendBug(String paramString)
никогда не будет вызван. Как видите, тут все запутано как бразильском сериале :) Думаю поэтому компилятор не смог до конца вкурить все эти связи и стремный код на всякий случай оставил.Я не стал включать все эти исследования в статью — решил ограничится общей фразой про то что мол тщательное исследование кода приложения заставляет думать что ля-ля-ля…