These are chat archives for rus-speaking/android-off-topic

25th
Dec 2015
iamtodor
@iamtodor
Dec 25 2015 08:43
общался вчера со своими иос девами, они говорили, что свифт в 2014 году юзали в продакшене порядка 5% (статистика из эпл стор)
Toporik
@Toporik
Dec 25 2015 10:24
так уже гора гавнокода на объэкт Цэ, и либы. А на свифте только свифт.
это как с вашим котлином )
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 10:26
в смысле? жаба с котлином на 100% совместима в обе стороны
tonyAndr
@tonyAndr
Dec 25 2015 11:18
друзья, кто может внятно объяснить от чего в admob зависит request rpm? или статью какую скинуть. я понять не могу, почему у меня 2 приложения зарабатывают одинакого, с разницей показов в несколько порядков...
Vladimir Mironov
@nsk-mironov
Dec 25 2015 12:40
кстати, насчет вещей, которые бесят в котлине
Кто угадает, во сколько методов скомпилируется вот этот код?
public class Foo {
  private companion object {
    private const val MAGIC = "MAGIC"
  }

  public fun magic(): String {
    return MAGIC
  }
}
Artem Zinnatullin :slowpoke:
@artem-zinnatullin
Dec 25 2015 12:42
7?
Vladimir Mironov
@nsk-mironov
Dec 25 2015 12:43
близко :)
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 12:50
@nsk-mironov не знаю что такое companion object, но без него должен быть 1 метод, а по факту то что?
Vladimir Mironov
@nsk-mironov
Dec 25 2015 12:51
без него должно быть как минимум 2
конструктор - тоже метод
но по факту
их 8! ВОСЕМЬ!
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 12:52
заскринь)
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 12:52
@nsk-mironov ну да, точно, про конструктор забыл но по факту его можно и не описывать то.
А что за 8 методов то? что они делают все?
Vladimir Mironov
@nsk-mironov
Dec 25 2015 13:03
По порядку:
  1. Конструктор для класса Foo
  2. Метод magic для класса Foo
  3. companion object компилируется в отдельный класс Foo$Companion, поэтому ему тоже нужен конструктор
  4. В котлине нету понятия "field", а есть только "property", работа с которыми всегда происходит через геттеры и сеттеры, поэтому генерируется метод getMAGIC для класса Foo$Companion
  5. Foo$Companion - это синглтон с приватным конструктором и статическим полем INSTANCE, поэтому нужно еще сгенерить статический конструктор для класса Foo$Companion
  6. У класса Foo есть статическое поле COMPANION, поэтому для него тоже нужен статический конструктор
  7. const val MAGIC - приватное проперти, к которому имеет доступ класс Foo. Так как оно приватное, то для него нужен синтетический аксессор, а значит еще один метод в классе Foo$Companion
  8. Вот тут я сам не понимаю, но точно такой же аксессор генерится еще в классе Foo.
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 13:30
@nsk-mironov жуть. А на производительности приложений это все не сказывается?
Vladimir Mironov
@nsk-mironov
Dec 25 2015 13:33
Производительности на такие вещи плевать, полторы лишних инструкции никто не заметит
к тому же, такой код скорее всего заинлайнится JIT-ом
а вот количество методов это очень сильно аффектит
из примера выше можно понять, что просто добавление companion object'а в класс добавит 3 лишних метода
добавление пустого companion object'а !
а у нас их в проекте всего 182
-550 методов на ровном месте
мне кажется, я могу уже статьи писать, как заставить котлин не генерить лишние методы :)
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 13:50
И эти методы как разз приводят к границе в 64к методов, поэтому и вся боль?
Vladimir Mironov
@nsk-mironov
Dec 25 2015 13:56
ага
takigava
@takigava
Dec 25 2015 13:57
Вопрос такой, а это ограничение вообще собираются фиксить???Или оно уже навечно?
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 13:59
похоже что на вечно.. кстати надо протестить - а на Xamarin это ограничение распространяется, или нет?)
Vladimir Mironov
@nsk-mironov
Dec 25 2015 13:59
art уже поддерживает нативный multidex, там таких проблем нет
пару лет еще точно придется с этим жить
Lollipop была зарелижен 13 месяцев назад, и у него всего 30% рынка
moonsweel
@moonsweel
Dec 25 2015 14:05
лимита 64к методов уже давно нет. но на 4.1 я недавно словил проблемы с неустановкой приложения, пока шринк в proguard не включил.
Vladimir Mironov
@nsk-mironov
Dec 25 2015 14:07
и никогда не было, ага
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:07
С чего начать интеграцию dagger2 в существующее приложение?
moonsweel
@moonsweel
Dec 25 2015 14:09
странный вопрос. с правки build.gradle, наверное.
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:16
для нуба да )
есть что то понятное на русском
проче чем сегодняшнее
Vladimir Mironov
@nsk-mironov
Dec 25 2015 14:20
я бы начал с вопроса "а нафига оно мне надо"
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:21
задача стоит из текущего суперсвязного кода без тестов
Vladimir Mironov
@nsk-mironov
Dec 25 2015 14:21
потому что если есть ответ на этот вопрос, то воспроса с чего начать не должно возникать впринципе
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:21
прийти к модульности и покрыть тестами
moonsweel
@moonsweel
Dec 25 2015 14:21
это, кстати, геморрой. у меня та же проблема сейчас :(
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:22
вот да
по этоиму пока изучаю вопрос
сейчасу заказчика главная задача
пройти все чеки до нового года и самому отчитаться
moonsweel
@moonsweel
Dec 25 2015 14:22
пришёл на проект без тестов, MVP, и проект при этом здоровенный.
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:22
потом будет пар месяцев перышки
на рефакторинг
Vetryanuj
@Vetryanuj
Dec 25 2015 14:31
@moonsweel на сколько здоровенный?)
moonsweel
@moonsweel
Dec 25 2015 14:31
в каких попугаях?
Vetryanuj
@Vetryanuj
Dec 25 2015 14:33
к-во классов)
Olzhas Ilyubayev
@hondrus
Dec 25 2015 14:34
c кто нибудь с битриксом работал? там есть rest api?
Чтобы из приложения зарегаться, получать инфу от битрикса?
moonsweel
@moonsweel
Dec 25 2015 14:36
@Vetryanuj dexdump вряд ли посчитает правильно, потому что много подключаемых библиотек.
как быстро посчитать свои классы в студии, я не знаю даже
@Vetryanuj в папке src/java 540 файлов
это только основной модуль, который подключается к шести application модулям, это где-то 80% кода
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:50
@Hondrus мы с ходу не нашли, говорят гемор
Toporik
@Toporik
Dec 25 2015 14:50
Блин пятница а вы о работе )
TheRishka
@TheRishka
Dec 25 2015 14:52
Епт, пятница же! Пора домой, работать!
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:52
@Toporik ты прав, по лепро традиции
Toporik
@Toporik
Dec 25 2015 14:53
Ммм... классный ремонт в ванной, швы хорошо заделаны!
Aleksey Andreyanov
@wrewolf
Dec 25 2015 14:54
я специально еще раз открыл )
Toporik
@Toporik
Dec 25 2015 14:55
Был бы тестером, сказал бы что одна сиська ниже другой. )
TheRishka
@TheRishka
Dec 25 2015 14:55
Ракурс такой. Не баг, а фича
Toporik
@Toporik
Dec 25 2015 14:56
/Шутка про горизонт/
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 14:56
@Toporik но ты разработчик, поэтому давай Pull Request)
Toporik
@Toporik
Dec 25 2015 14:56
Какой пулл пушить надо пушить! )
Aleksey Andreyanov
@wrewolf
Dec 25 2015 15:07
ну так идеал только с костылями ( на фотках с подтяжкой скотчем )
Olzhas Ilyubayev
@hondrus
Dec 25 2015 15:21
@wrewolf ага, вот тут говорят, что нету http://dev.1c-bitrix.ru/support/forum/forum6/topic48503/
А что в итоге решили? Мне на ум приходит только написать парсер
Aleksey Andreyanov
@wrewolf
Dec 25 2015 15:47
Вот и мы парсим, отдаем где можно минимальные вью и парсим)
Toporik
@Toporik
Dec 25 2015 15:49
"Мы парсим розы в красный цвет..."
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 19:18
  1. В котлине нету понятия "field", а есть только "property", работа с которыми всегда происходит через геттеры и сеттеры
@nsk-mironov
Чтоб такого не было, есть аннотация @JvmField
брюки свойства превращаются в обычные привычные поля
Vladimir Mironov
@nsk-mironov
Dec 25 2015 19:28
да, я понимаю как можно избавиться от всех этих методов лишних
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 19:29
компаньоны были, очевидно, украдены со скалы, где по понятным причинам отказались от использования “статики”, которая ну ни фига не вписывается в понятие ООП.
Vladimir Mironov
@nsk-mironov
Dec 25 2015 19:29
это было к тому, что ты пишешь себе идиоматичный котлин код, а он компилируется в полное говно
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 19:29
а я к тому, что понятие “field” все-таки есть
Vladimir Mironov
@nsk-mironov
Dec 25 2015 19:30
в результате приходится переписывать его на нифига не идиоматичный, но более оптимальный
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 19:30
только надо захламлять код аннотациями, и получается, что выглядит уже не так лаконично
Vladimir Mironov
@nsk-mironov
Dec 25 2015 19:30
и опять таки, без чтения байткода тут не справиться :)
Dmitriy Zaitsev
@DmitriyZaitsev
Dec 25 2015 19:31
и не так высокоуровнево, как задумывалось. приходится прям подсказывать компилятору, что делать. они б еще разрешили память руками выделять
можно было об этом в котлин-чатике поговорить :)
Kirill Ashikhmin
@KirillAshikhmin
Dec 25 2015 21:33
https://vk.com/vkmc вк опять проводят конкурс на лучшее мобильное приложение. при чем не полный клиент, а для определенного функционала