@kotlin_lang

Страница 254 из 982
Anton
20.07.2017
14:01:27
может потому что может?
ну как-бы котлин, глоток свежего воздуха, после ее и кровавого тырпрайза... не вижу смысла туда это тащить. наоборот поэксперментировать, что-нибудь новое попробовать, итд

Google
Denis
20.07.2017
14:02:57
Казалось бы “при чем тут kotlin?”, есть же @jvmchat
Проект на котлин, но вопрос действительно не относится к теме котлин

даже не смотря на то, что деньги утекли без блокировки
Т.е. такая ситуация может возникнуть именно из-за не выполнения блокировки сущности во время её обновления

Igor
20.07.2017
14:04:21
Таки да, а то я уже собирался тебе каналы и kotlin-акторы советовать для многопотчности

Denis
20.07.2017
14:05:27
Таки да, а то я уже собирался тебе каналы и kotlin-акторы советовать для многопотчности
Хотелось сделать максимально простое решение с использованием уже знакомых всем библиотек.

Спасибо большое всем за консультацию!

Igor
20.07.2017
14:09:16
очень приятно и толково сделан код, во времена когда я занимался наймом, я бы пособеседовал
Что-то подсказывает что конкретно этот код был был 1 к 1 (+- 10% LoC) с Java Сплошная магия и анатишки хибернейта и спинга (для того их и придумали что бы на java можно было хоть где-то кратко писать) (P.S. эти файлы по 4-20 строк, ну ни как не каноничный котлин)

Anton
20.07.2017
14:16:06
Таки да, а то я уже собирался тебе каналы и kotlin-акторы советовать для многопотчности
задумывался о каналах недавно. какую реализацию посоветуешь? из котлин-корутинс или квазаровские, или может еще какие есть?

Igor
20.07.2017
14:19:43
задумывался о каналах недавно. какую реализацию посоветуешь? из котлин-корутинс или квазаровские, или может еще какие есть?
Я бы советовал не каналы как-таковые, а сразу акторы (Akka). Для нее еще можно кучу интересных расширений написать на корутинах (если уже добрые люди не написали).

Руслан оказывается специалист по акторам https://github.com/KotlinBy/kotlin-akka

Anton
20.07.2017
14:25:12
Спасибо, гляну, я пока еще не пришел к акторам, использую vert.x - но идеи у него близкие к акторам, как я понял.

Руслан
20.07.2017
14:25:13
Мы как-то давно обсуждали что вот есть акка, и это прям киллер фича скалы. И люди почему-то не понимали что акку можно использовать из котлина без боли (потому что там есть джава API). Вот так и получился этот репозиторий

Nikita
20.07.2017
15:05:32
Всем привет! Не знаете есть какая-нибудь библиотека конфига для Kotlin? Нужно записывать и читать

Руслан
20.07.2017
15:06:07
https://kotlin.link/?q=config

Google
Nikita
20.07.2017
15:06:53
А в konfig писать можно?

Руслан
20.07.2017
15:08:05
Написано что мапки обычное можно подсовывать

Глядя на readme я сказал бы - да

Nikita
20.07.2017
15:18:52
Какая-то шизанутая библиотека

Igor
20.07.2017
16:05:46
Badya
20.07.2017
16:38:11
В теории: акторы работают на том же принципе что и реакт - в итоге получаешь что-то вроде тех же коллбеков и отдельный шедулер для них - они stackful корутины же сидят вроде как на системном шедулере, и в целом превращаются в некий switch-case при компиляции - при этом контекст выполнения им доступен, потому что их обработка происходит в том же месте где и вызов - они stackless

Igor
20.07.2017
16:38:33
а какие минусы у акторов, если вкратце?
Код сложнее писать из-за своеобразной архитектуры, тк акторы могут только сообщениями обмениваться.

Badya
20.07.2017
16:40:36
мне всегда казалось что корутины это хардкор но грамотно, а всякие реакты, акторы и прочее - костыли)

Igor
20.07.2017
16:43:23
Badya
20.07.2017
16:44:30
вообще про корутины в любом языке

есть stackless-python

Когда я был стажером, я увидел fibers в java

по сути были те же корутины

реализованы на старом добром Continuations library by Matthias Mann

https://github.com/oltolm/continuations

они же легли в основу Quazar

и скорее всего ребята из Kotlin сделали тоже самое

https://www.youtube.com/watch?v=YWLHELcvNbE

Вот собственно Сережа рассказывает как они делали корутины в жаве)

и судя по видео от ребят из Котлин https://www.youtube.com/watch?v=4W3ruTWUhpw

Google
Badya
20.07.2017
16:50:22
все тоже самое)

как только они официально их релизнут все RX, actors и т.д. можно забыть)

Anton
20.07.2017
16:52:39
а конкарент апи тоже можно?

во заживем тогда ни РХа знать не надо ни конкарента

3 ключевых слова и полетели

Badya
20.07.2017
16:53:24
если под конкарент апи ты имеешь ввиду ExecutorsFramework то наверное и его)

Anton
20.07.2017
16:53:35
ну атомики синхронизаторы и тп

Badya
20.07.2017
16:53:48
это все останется

в классической многопоточности

а тут же речь про асинхронные действия

собственно для них ExecutorsFramework и придумали в свое время

Igor
20.07.2017
16:54:54
мне всегда казалось что корутины это хардкор но грамотно, а всякие реакты, акторы и прочее - костыли)
Смотри, но тут же еще идеологическое различие. Акторы тебе дают атомарную единицу, для которой не нужны те же синхронизации, плюс ее сообщения можно хранить на диске, вместо работы с базами.

Badya
20.07.2017
16:55:12
тоже самое можно обернуть в корутину

но без коллбеков

отдельного шедулера

и тредпула под этим шедулером соответсвенно

Igor
20.07.2017
16:56:33
тоже самое можно обернуть в корутину
И ты изобретешь актор, который за тебя уже сделан _умными людьми_ с unsafe и прочим. И главный козырь - они могут также прозрачно общаться между отдельными процессами и машинами (по сети).

Badya
20.07.2017
16:56:34
ты сейчас по факту отправляешь задачи в шедулер у которого есть свой тредпул, а в треде который задачу отправил ты ждешь некий результат, или не ждешь но используешь коллбек

тут же твой же тред порождающий асинк задачу, возможно будет эту задачу и делать, а то место в котором ты ждешь как будто бы отложат в сторонку - потом задача выполнится - и то что лежало в сторонке придет на тред обратно, получит результат и пойдет работать дальше

https://i.stack.imgur.com/bzDfr.png - без корутин

Google
Badya
20.07.2017
17:04:41
https://i.stack.imgur.com/t6FP9.png - с корутиной

жирная линия - задачи, тонкая линия - простой

меньше простой, и меньше тредов

Quazar fibers по сути тоже корутины

http://vlkan.com/blog/post/2014/09/01/java-fiber-test/

Admin
ERROR: S client not available

Badya
20.07.2017
17:07:59
тут есть бенчи

Михаил
20.07.2017
17:08:32
Всем привет, подскажите, пожалуйста, как удалять ячейку(одну) из Realm, с помощью RxJava

Nikita
20.07.2017
17:10:14
А в котлине существует аналог typedef?

Чтобы обернуть имя класса

Quantum Harmonizer
20.07.2017
17:10:33
Nikita
20.07.2017
17:10:58
Спасибо!

Алексей
20.07.2017
18:48:57
всем привет написал простенькую программу для проверки курса валют (и отсылки курса по смс). Можете провести код ревью а то есть ощущение что набыдлокодил?

https://pastebin.com/pAqh1BqS

Kirill
20.07.2017
18:55:30
код отформатируй (ctl+alt+L в idea) и у тебя тут не всё, судя по fun sendSms(price: String){

Алексей
20.07.2017
18:57:07
ну все работает, просто я думал что можно написать покрасивее

Kirill
20.07.2017
18:57:15
> val parser: Parser = Parser() но > val obj = URL(urlString)

ты уж определись. но вообще типы не указывают обычно

Алексей
20.07.2017
18:59:12
Kirill
20.07.2017
19:00:56
```val a: JsonArray<JsonObject> = parser.parse(stringBuilder) as JsonArray<JsonObject>```нормальные имена дай всем переменным и избавься от ненужных локальных переменных и строки в константы

Google
Михаил
20.07.2017
19:06:53
https://pastebin.com/pAqh1BqS
Боб мартин чистый код. Топ книжка в этом случае)

Boris
20.07.2017
19:13:00
https://pastebin.com/pAqh1BqS
fun makeRequest(urlString: String): String{ val obj = URL(urlString) val connection = obj.openConnection() as HttpURLConnection connection.requestMethod = "GET" val inn = BufferedReader(InputStreamReader(connection.inputStream)) var inputLine = inn.readLine() val response = StringBuffer() while (inputLine != null) { response.append(inputLine) inputLine = inn.readLine() } inn.close() return response.toString() }превращается в URL(urlString).openStream().reader().readText()

Boris
20.07.2017
19:15:44
а весь код в Parser().parse(URL(urlString).openStream().reader().readText())

Алексей
20.07.2017
19:15:54
я же говорил что набыдлокодил)

Михаил
21.07.2017
00:58:03
никто не видел предложения в issue trackee, чтобы при переопределении джавовского метода с параметром Object object, в котлине это сразу преобразовывалось не в ``object``: Any, а в any: Any

Ivan
21.07.2017
09:03:53
А если такой идентификатор в скоупе уже есть?)
ну поломаешь ты пару сотен приложений, но это же для развития языка)

Руслан
21.07.2017
11:23:44
Kotlin Software Engineer, Android Framework - Google - 1600 Amphitheatre Pkwy, Mountain View, CA - Google Careers https://careers.google.com/jobs#!t=jo&jid=/google/kotlin-software-engineer-android-1600-amphitheatre-pkwy-mountain-view-ca-2643700480

Михаил
21.07.2017
11:25:25
А если такой идентификатор в скоупе уже есть?)
ну с `object` же ситуация разруливаться будет, также и с any

ну поломаешь ты пару сотен приложений, но это же для развития языка)
и как это может поломать хоть одно приложение?

Quantum Harmonizer
21.07.2017
11:27:49
ну с `object` же ситуация разруливаться будет, также и с any
public void func(Object object) { Object any = getAny(); ... fun func(any: Any) { val any = getAny(); ^ error ...

Михаил
21.07.2017
11:29:26
почему error?

Quantum Harmonizer
21.07.2017
11:29:48
потому что после переименования параметра any уже определено

Михаил
21.07.2017
11:29:51
это вообще ишью больше к плагину отнсится

Страница 254 из 982