@jvmchat

Страница 1080 из 2890
Alexander
18.01.2017
16:16:38
где-то были видео докладов

Dmitry
18.01.2017
16:51:15
https://issues.apache.org/jira/browse/THRIFT-6

вот как баги надо закрывтаь

James Tiberius Kirk ?
18.01.2017
17:15:38
а баг про нпе после нулов в мапе там есть?

Google
Dmitry
18.01.2017
17:15:48
всегдаа

без него трифт уже будет не тот

по багу десериализации мапы с нулами можно ньюфагов отличать

James Tiberius Kirk ?
18.01.2017
17:16:45
Resolution: Won't Fix

нашел

часто используете кастомные аннотации? норм практика или так себе?

Baruch
18.01.2017
18:51:26
отличная практика

Aliaksei
18.01.2017
18:51:44
Павда есть один нюанс...

http://www.yegor256.com/2016/04/12/java-annotations-are-evil.html

Baruch
18.01.2017
18:52:25
ну этот есть, да

James Tiberius Kirk ?
18.01.2017
18:57:27
лучше бы по делу шо сказал

Alexander
18.01.2017
19:08:38
часто используете кастомные аннотации? норм практика или так себе?
использовали на нескольких проектах. Вроде, норм все было. С ними проблемы начинались, когда нужно было внести изменение в их логику или разобраться с перфомансом. В этот момент все зависит от качества кода, лежащего за этими аннотациями. Все как обычно :)

James Tiberius Kirk ?
18.01.2017
19:09:06
меня пугает использование рефлекшона за ними

Google
Nick
18.01.2017
19:09:17
в логику аннотации?)

ничоси)

эт прост ж мета инфа)

Alexander
18.01.2017
19:09:39
ты же понял про что я

кто-то же их обрабатывает

и что-то делает

и все такое

Nick
18.01.2017
19:10:05
меня пугает использование рефлекшона за ними
обычно эт не страшно, один раз выполнить можно)

Alexander
18.01.2017
19:10:28
да и джава тормозит

Dmitry
18.01.2017
19:16:09
меня пугает использование рефлекшона за ними
че за хня.. аннотации != сразу рефлекшон, некоторых аннотаций в рантайме вообще нет

ты хоть бы конкретизировал

мол "для задачи Х хочу использовать аннотацию способом У"

кто-то же их обрабатывает
чекер фреймворк например

Anton
18.01.2017
19:20:22
Вообще необязательно, что аннотации будут обрабатываться рефлекшеном

А если и будут, то скорее всего один раз

Aliaksei
18.01.2017
19:51:58
Бля, какие противные стикеры

Adam
18.01.2017
19:55:12
как то хотели сделать аннотацию @CopyPaste но чтото не прижилось

Руслан
18.01.2017
19:57:31
@PotomOtrefactoryu

@ToDoTest

Dmitry
18.01.2017
20:02:58
@Deprecated

Google
Dmitry
18.01.2017
20:03:05
oh, wait..

Alexander
18.01.2017
21:37:25
https://code.google.com/archive/p/gag/

Everest
18.01.2017
22:13:52
Кто подскажет где сейчас народ exelab.ru, где кракеры сейчас?

Alex
18.01.2017
22:27:03
/stat@combot

Combot
18.01.2017
22:27:03
combot.org/chat/-1001043090457

Арсений
18.01.2017
22:56:08
Народ поясните за синглетон в котлине, если это object че там конструктора нет? Че делать, если мне нужно использовать синглетон, в котором полюбому должен быть context, а я не хочу инжектить его по сути после инициализации, инициализировать левым методом?? в чем смысл?

Vitaliy
18.01.2017
22:59:47
Android?

Арсений
18.01.2017
22:59:56
ага

Vitaliy
18.01.2017
23:02:36
ага
Обычно делают контекст статичным в Application

Alexander
18.01.2017
23:02:37
Руслан, ты на круглосуточном саппорте котлина? :)

Vitaliy
18.01.2017
23:02:53
А в singleton прокидывают обычной инициализацией поля

На самом деле, делай просто все зависимости интерфейсными синглтонами

И будет тебе DI прямо в синглтоне

Арсений
18.01.2017
23:03:20
@bvitaliyg по сути инжекция, вариант напрашивается да

Vitaliy
18.01.2017
23:03:38
Ну других вариантов нет

А вообще лучше не используй Котлин

Admin
ERROR: S client not available

Vitaliy
18.01.2017
23:03:50
От него проблем больше, чем профита

Google
Арсений
18.01.2017
23:04:12
просто зачем тогда делать этот object без конструктора там в таком случае, хочу идеология вкурить

Руслан
18.01.2017
23:04:28
interface Application { fun getContext() } val singleton = object : Application { override fun getContext() { TODO("not implemented"). } }

Vitaliy
18.01.2017
23:04:32
Ну, у тебя есть init {}

Руслан
18.01.2017
23:04:47
Вот так на класс левеле пакэдж сделать

Vitaliy
18.01.2017
23:04:51
Можешь там делать что угодно

А вообще, если подумать, singleton и DI это разные вещи

В DI ты каждый раз модуль вручную конфигурируешь, нет глобальной точки доступа из всего приложения

Арсений
18.01.2017
23:07:30
interface Application { fun getContext() } val singleton = object : Application { override fun getContext() { TODO("not implemented"). } }
ну пока это просто object с методом getContext, откуда он его возьмёт в итоге, что вернет метод getContext

Ну, у тебя есть init {}
Да, но откуда ините взять контекст

Арсений
18.01.2017
23:14:10
Замыкается просто на то что у тебя там есть
угу, но как по-красивому ему там взяться изначально

Vitaliy
18.01.2017
23:14:37
Руслан
18.01.2017
23:14:53
Только засетать ему. Ты предлагаешь конструктор, но мне тяжело представить как оно может выглядеть.

Vitaliy
18.01.2017
23:15:20
А вообще, прокидывай не контекст, а интерфейс, в котором есть то, что тебе нужно от контекста

Контекст это типичный god-object

Арсений
18.01.2017
23:16:49
Только засетать ему. Ты предлагаешь конструктор, но мне тяжело представить как оно может выглядеть.
ну в java в getInstance передать контекст (из которого лучше взять getApplicationContext()), при первой инициализации он проинициализируется через конструктор внутри метода getInstance

Руслан
18.01.2017
23:17:47
можно кусочек кода, я ж говорю, я не андроид дев

Арсений
18.01.2017
23:19:04
А вообще, прокидывай не контекст, а интерфейс, в котором есть то, что тебе нужно от контекста
Слишком большая связь уже, архитектуру перепиливать всю придется. Нужен контекст.

Google
Арсений
18.01.2017
23:20:49
MyApplication.getContext()
Этот вариант хорош, из класса Application доставать в init {}.

Vitaliy
18.01.2017
23:24:08
Можно и на месте инициализировать, на самом деле

Но если надо что-то вычислить перед этим, инит удобнее

Арсений
18.01.2017
23:28:08
сейчас попробую
object SingletonExample { val context: Context init { this.context = MyApp.context } } class MyApp : Application() { override fun onCreate() { super.onCreate() context = this } companion object { lateinit val context: Context private set } }

Что-то в этом роде

Руслан
18.01.2017
23:35:08
Ну да, норм

Арсений
18.01.2017
23:35:12
Я поясню, если интересно @HeapyHop , класс Application будет создан в первую очередь в приложении, т.е. он будет гарантировано проинициализирован в инициализации синглетона и мы сможем из него забрать context

Руслан
18.01.2017
23:35:34
val singleton by lazy { // делаем что угодно MyApp.context }

можно еще так сделать

Арсений
18.01.2017
23:37:35
ок, всем спасибо

Страница 1080 из 2890