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

24th
Jul 2015
Rustem Saitkulov
@atetc
Jul 24 2015 07:51
А кто ФП в проде юзает и какое? Какие профиты?
Rustem Saitkulov
@atetc
Jul 24 2015 09:07
Кроме ФРП имею ввиду
Vladimir Abramov
@kivsiak
Jul 24 2015 10:39
Чистую? Не особо. Но ты GuavaCollections, rx, streamapi пользуешь же? Ну вот это оно
Rustem Saitkulov
@atetc
Jul 24 2015 13:18
Я пока только принюхиваюсь.
Давайте по порядку:
Guava - ФП
rx - ФРП
streamapi - ФП
так?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:18
Guava - ужас каждого андроид разработчика
так скорее
Rustem Saitkulov
@atetc
Jul 24 2015 13:19
а можно по-пунктно про профиты послушать?
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:19
а разве в гуаве не 100 тыщ методов?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:19
@Tagakov 18 :)
alyadins
@alyadins
Jul 24 2015 13:19
@Tagakov всего лишь 13к
уже 18 =)
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:20
ну или 13, я не помню, но точно больше десятка
alyadins
@alyadins
Jul 24 2015 13:21
Недавно кстати у нас празник случился. Google Mobile Serivces теперь по кускам. У меня проект в 65к строк вместился с запасом
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:22
@lexerptz А можно как-то запас по быстрому проверить?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:22
еще плагины для градла есть
alyadins
@alyadins
Jul 24 2015 13:23
Называется запусти и офигей =). Один раз запустил на 65200 =)
Vladimir Abramov
@kivsiak
Jul 24 2015 13:24
А какието проблемы с multydex ?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:24
@lexerptz я больше офигивал, когда увидел что 15 протобуферов компилируются в 20к методов
alyadins
@alyadins
Jul 24 2015 13:24
Нууу. У меня инкрементальная компиляция не работала
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:28
А сколько лимит?
alyadins
@alyadins
Jul 24 2015 13:28
65536
2^16
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:28
Ок.
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:29
@nsk-mironov @lexerptz Сейчас все тайное станет явным. Я уже дважды избегал этого ограничения
alyadins
@alyadins
Jul 24 2015 13:30
раньше gms подключаешь, 30ку получаешь. А все для чего? Отобразить где то карту с одним пином
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:31
Бесят меня эти gms =)
alyadins
@alyadins
Jul 24 2015 13:32
Без них никуда. Сейчас меньше бесят. Раньше хочешь карты, подключи еще GoogleFit Android Wear и т.пТ
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:32
Да понятно что никуда, но все же)
alyadins
@alyadins
Jul 24 2015 13:33
Я не понимаю только. Чтобы они работали, на устройстве они должны стоять…. Вопрос… 30к методов это интерфейсные чтоле?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:33
@Tagakov когда у тебя в проекте kotlin, protobuf и guava - очень проблематично его избежать
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:34
@lexerptz Действительно, стоят и так ведь, со стороны выглядит как дублирование - установи отдельное приложение и добавь в своё огромную библиотеку..
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:35
61557
Vladimir Abramov
@kivsiak
Jul 24 2015 13:35
gms помню... первый мой шок был и знакомство с method count limit. Сейчас они побили на модули, но как правильно заметил @nsk-mironov и без них есть чему его съесть. multidex спасает. А вообще гугл чет обещает в новом компиляторе с этим сделать - типа вырезать все левое
Rustem Saitkulov
@atetc
Jul 24 2015 13:35

А какието проблемы с multydex ?

присоединяюсь к вопросу

Vladimir Tagakov
@Tagakov
Jul 24 2015 13:35
Что-то этот вывод очень хреново анализу поддается, я эту портанку аж мотать устал. Никаких дополнительных тулз нету?
Vladimir Abramov
@kivsiak
Jul 24 2015 13:37
кстати а какие есть альтернативы guava.cache модулю? у меня к примеру из гуавы только оно используется
alyadins
@alyadins
Jul 24 2015 13:38
@nsk-mironov почитал про protobuf. Плюсы видны, но зачем это усложнение. Преимущество, если ты используешь это на нескольких платформах. Описал раз и все хорошо… Но…были 13 конкурирующих форматов...
Adam
@AdamCopperfield
Jul 24 2015 13:39
proguard спасет от 13k методов гуавы?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:40
@lexerptz ну нам как нужно чтобы было на всех платформах + нужна быстрая сериализация/десериализация
takigava
@takigava
Jul 24 2015 13:41
А можно поинтересоватся, что это за ограничения и к чему они? Кто может просвятить.
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:41
@takigava давным давно, кто-то из рабработчиков андроида решил пооптимизировать
и вместо int решил использовать short
и теперь страдают миллионы простых сметрных
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:42
Так и началась эта история
Rustem Saitkulov
@atetc
Jul 24 2015 13:42
Джуна пустили в репу называется картина
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:42
т.к. в один dex файл нельзя засунуть больше 65к методов
alyadins
@alyadins
Jul 24 2015 13:42
@nsk-mironov Это не android
ааа. Да. android. Извеняюсь
Vladimir Abramov
@kivsiak
Jul 24 2015 13:43
@nsk-mironov кстати thrift на него как альтернативу смотрели?
takigava
@takigava
Jul 24 2015 13:43
@nsk-mironov @Tagakov А зачем вообще нужно было считать сколько методов впрограмме будет запихано?
alyadins
@alyadins
Jul 24 2015 13:44
@takigava адрессация на этом построена если я не ошибаюсь
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:44
@kivsiak thrift насколько я знаю, еще больше мусора генерирует :)
takigava
@takigava
Jul 24 2015 13:45
@lexerptz Ясно...
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:46
@kivsiak у нас была попытка использовать wire от square для компиляции протобуферов
но закончилось это большим фейлом
Vladimir Abramov
@kivsiak
Jul 24 2015 13:54
@nsk-mironov если не секрет, а что у вас за сервис такой? что пришлось protobuf брать? Дикое нагрузки или исторические причины? Когда смотрел в последний раз bson как бы показался меньшим злом
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:56
@kivsiak у нас просто есть нативная либа, которая используется на всех платформах и в которой вся бизнес логика выполняется
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:57
Оффтоп оффтопа
Заказчик говорит «Цена у нас будет в рублях, без копеек»
Вопрос: в каком типе данных хранить цену?
Adam
@AdamCopperfield
Jul 24 2015 13:58
насколько заказчик богат?
alyadins
@alyadins
Jul 24 2015 13:58
@Tagakov double =)
деньги = всегда double
Vladimir Abramov
@kivsiak
Jul 24 2015 13:58
деньги всегда Decimal
alyadins
@alyadins
Jul 24 2015 13:58
было в int, но потом беллорусские клиенты захотели многооооо денег. в int не влезло =(. Миллиардеры фиговы
А вообще Батька молодец. Страна милионеров...
Vladimir Abramov
@kivsiak
Jul 24 2015 13:59
а заказчик сущестово такое, сегодня у него целое число а завтра меняет он меняет валюту или происходит деноминация
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 13:59
@lexerptz А почему не float? Если честно - не особо понимаю в чем разница. Ну и если вхдящие данные целочисленные, то int, ну или да, long.. когда в принципе копеек нет
Vladimir Tagakov
@Tagakov
Jul 24 2015 13:59
@kivsiak Побеждает
Vladimir Mironov
@nsk-mironov
Jul 24 2015 13:59
“деньги = всегда double” - это мгновенный отказ со стороны заказчика
alyadins
@alyadins
Jul 24 2015 14:01
@nsk-mironov Почему? float 32 бита. 8 помоему бит на число, остальное мантисса. double 64. Там без ограничений
Vladimir Mironov
@nsk-mironov
Jul 24 2015 14:02
да какая разница какой размер у него
у double арифметика неточная
Vladimir Abramov
@kivsiak
Jul 24 2015 14:02
@BOOMik 1.0000000000000000001/3 == 1./3 что на выходе?
Vladimir Mironov
@nsk-mironov
Jul 24 2015 14:02
как и float
alyadins
@alyadins
Jul 24 2015 14:03
@kivsiak true. Это ясно…
Хотя на double будет false XD
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 14:03
@kivsiak Надо проверить на коде))
Vladimir Abramov
@kivsiak
Jul 24 2015 14:04
угу. надо проверит на коде. потому для бабла и надо Decimal всегда использовать
Vladimir Tagakov
@Tagakov
Jul 24 2015 14:04
Помогите с регуляркой плиз, я в ни в зуб ногой с ними =(
.replaceAll("(\\D)", «») <- Вырезает все кроме цифр
Как будет выглядеть регулярка которая вырезает все кроме цифр и запятой?
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 14:06
(0-9,) не? Хотя могу и ошибаться, тоже не особо с ними знаком
alyadins
@alyadins
Jul 24 2015 14:06
А вообще спасибо. Никогда не задумывался над этим. Точнее не приходилось работать с деньгами серьезнее чем записная книжка. Теперь только Decimal =), или Long касаемо Java
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 14:08
я работал с деньгами, но только отображать и суммировать их приходилось для отображения стоимости в корзине, для такого думаю можно и float спокойно использовать?
alyadins
@alyadins
Jul 24 2015 14:09
а в случае с плавающей точкой round при сравнении чем плох?
Понял сам. Не дурак XD. Пятница вечер дает о себе знать =).
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 14:10
Так объясни другим)
alyadins
@alyadins
Jul 24 2015 14:14
@BOOMik деньги всегда целые.
Дядя Вася из крыжопля положил на счет банка 30 рублей. Раз в месяц у него начало списываться по сколько то процентов. Однажды, на счету у дяди Васи стало 24.666 рублей. Хорошо подумал Вася. И начал переводить деньги. Программист Федя хорошо знает свое дело. Хранит деньги во float. Пришла транзакция на код Феди. round(24.666) сказал он машине. 24.67 сказала ему машина. транзакция прошла. Васян в плюсе на 0.003 рубля. Банк в минусе XD
Kirill Ashikhmin
@KirillAshikhmin
Jul 24 2015 14:16
Ну так округление оно на то и округление, в таком случае или Чувак в плюсе или банк. Смотря в какую строну округлять. И тут не зависит же от того, в чем хранить.
alyadins
@alyadins
Jul 24 2015 14:21
http://habrahabr.ru/post/201066/
Как всегда. Самое интересное коменты =)
Vladimir Tagakov
@Tagakov
Jul 24 2015 14:35
@BOOMik Правиьный ответ был ([^0-9|,]+)
Victor
@matrecs
Jul 24 2015 14:39
А мне сенсеи говорили хранить деньги вообще в BigDecimal :/
Jin35
@Jin35
Jul 24 2015 14:40
Храните деньги в сберегательной кассе
Victor
@matrecs
Jul 24 2015 14:42
@Jin35 А как же мейнстрим, как же биткоины?
takigava
@takigava
Jul 24 2015 14:47
У нас на работе только хардкор, только decimal с деньгами
Vitaly Kirillov
@nexus700120
Jul 24 2015 15:38
Сталкивался с банковским приложением. Там например для некоторых операций используется не математическое округление, а т.н. банковское округление. http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html#HALF_EVEN
Так, что где деньги, там и BigDecimal