
Quantum Harmonizer
31.01.2018
13:27:07

Виталий
31.01.2018
13:27:27
чот я запутался

Dumitru
31.01.2018
13:27:51
нестандартный вопрос (можете игнорить и я удалю):
В Великобритании есть вакансии для Kotlin программистов ?
Где он вообще востребован ?

Kira
31.01.2018
13:28:42
чот я запутался
При компиляции код из тела функции вставят в места её использования и в рантайме её не будет

Google

Виталий
31.01.2018
13:29:39

Badya
31.01.2018
13:29:50
JIT-компилятор тоже инлайнит

Kirill
31.01.2018
13:30:06

Kira
31.01.2018
13:30:10

Badya
31.01.2018
13:30:19

Dumitru
31.01.2018
13:30:23

Kirill
31.01.2018
13:30:45

Badya
31.01.2018
13:31:14

Quantum Harmonizer
31.01.2018
13:31:15

Виталий
31.01.2018
13:31:39
ааааа

Badya
31.01.2018
13:32:46

Kira
31.01.2018
13:32:56
Виталий А ещё я люблю логические части в отдельные методы разделять, с инлайном накладных расходов ноль

Google

Quantum Harmonizer
31.01.2018
13:33:15

Виталий
31.01.2018
13:33:34

Quantum Harmonizer
31.01.2018
13:33:58

Виталий
31.01.2018
13:34:18
я вообщем для ведроида выясняю... что бы потом не ахнуть

Quantum Harmonizer
31.01.2018
13:35:10

Kira
31.01.2018
13:35:20
Процедура и точка)
Фортран форева

Виталий
31.01.2018
13:36:37

Kira
31.01.2018
13:38:08

Badya
31.01.2018
13:38:25
Вот статья на практическом примере показывающая что в кишках https://m.habrahabr.ru/post/269023/

Kirill
31.01.2018
13:42:07
Вот статья на практическом примере показывающая что в кишках https://m.habrahabr.ru/post/269023/
https://habrahabr.ru/post/269023/#comment_8618069
apangin 18.10.15 в 16:51
> лимит инлайнинга в Hostpot JVM — 35 байткод инструкций
После этой ерунды можно дальше не читать. И что invokestatic якобы эффективнее invokevirtual, и что «лишние» push/pop якобы влияют на скорость — всё от начала и до конца — сплошная неправда. Уберите, пожалуйста, статью, чтоб не путать людей.
«Оптимизировать» программу на уровне байткода — всё равно что улучшать автомобиль, выкидывая «лишние» детали.
Верю Андрею больше чем автору статьи

Phil
31.01.2018
13:43:46
Кстати, а для чего нужен быстрый пул соединений, где скорость пула становится существенной, в каких задачах?
(P.S. хотя это и некоторый оффтопик)

Badya
31.01.2018
13:45:52
Автор статьи просто перевел то что делали ребята из HikariCP
Бенчмаркинг вообще тонкая тема

DY
31.01.2018
14:12:01

Igor
31.01.2018
14:13:05
Нафиг столько интерналов? Зачем типы у полей?

Quantum Harmonizer
31.01.2018
14:13:28
Api — плохое название

Google

Alexey
31.01.2018
14:13:33
lol во внутренних классах ссылка на this

Grushin
31.01.2018
14:13:41
sdk

DY
31.01.2018
14:13:46

Quantum Harmonizer
31.01.2018
14:13:52
execRequest можно и без run
непонятно, за что отвечают args

DY
31.01.2018
14:14:21
ну по факту без run не получится написать, в этом конкретном примере можно, да..
могу показать более реалестичный пример, в принципе

Alexey
31.01.2018
14:24:59
выглядит как размазывание кода
в котором любой "не автор" ногу сломит

DY
31.01.2018
14:26:12
в общем-то есть желание именно размазать (разбить как-то) код, т.к. методов будут сотни

Alexey
31.01.2018
14:27:27

DY
31.01.2018
14:27:50
на каждую часть апи несколько десятков

Alexey
31.01.2018
14:29:11
Ну вот каждая часть апи - свой класс с аргументом http клиент

Igor
31.01.2018
14:29:20
А как ты гарантируешь что execRequest не упадет с исключеним, а обязательно вернет Result?
Все эти Result<T, Exception> в котлине - вилами по воде писаная защита.

Alexey
31.01.2018
14:29:42
а потом их все можно уже запихать в api

Igor
31.01.2018
14:30:48

DY
31.01.2018
14:34:54

Google

Igor
31.01.2018
14:39:42
Кстати наткнулся на интересный проект https://github.com/square/kotlinpoet
Позволяет генерить Kotlin сорцы - наверное удобно юзать для всяких генераторов.

Andrew
31.01.2018
14:54:24

Igor
31.01.2018
14:56:05
Я вот думаю ее заюзать что бы автоматически генерить DSL для сторонне java-библиотеки
Не в рантай у клиента конечно, а тоже в виде либы.

Grushin
31.01.2018
14:57:32
MaterialDrawer.kt - кстати класс

Vitalii
31.01.2018
15:10:32

Igor
31.01.2018
15:12:24
Ага я вкурсе, мне нужен DSL котлин

Alexey
31.01.2018
15:19:50

Виталий
31.01.2018
15:40:25
var isNull = true
fun checkIsNull() {
var counter = 0
for (tile in tiles) {
tile.forEach {
if (it != null) counter++
}
if (counter > 0) break
}
isNull = counter == 0
}
можно как то упростить ? если в двумерном массиве есть хоть один не null
видел методы типа ....notNull.... но не понял как с ними работать (скорее всего в синтаксис еще не въехал)
и почемуто в первом if мне не позволили сделать break

Andrew
31.01.2018
15:45:23
val isNull = tiles.any { it == null }
если я ничего не упустил, само собой

Sergey
31.01.2018
15:45:52
tiles.flatten.any

Andrew
31.01.2018
15:46:12
упустил :)

Sergey
31.01.2018
15:46:48
даже не так
tiles.any { list -> list.any { it == null } }

Andrew
31.01.2018
15:48:17
да, это оптимальнее будет, оно будет бежать до первого null, а не проходить все коллекции

Виталий
31.01.2018
15:51:34
круто блин
но чет сложновато пока
спасибо)

Gleb
31.01.2018
15:53:50
еще так, но наверное медленнее будет
tiles.flatMap { it }.all { it == null }

Google

Sergey
31.01.2018
15:56:54
flatten() == flatMap { it }
any выпадет на первой встрече, это будет быстрее

Виталий
31.01.2018
15:59:35
откуда вы знаете что будет быстрее, почему в any при первой встрече будет выход, да и вообще такие подробности ? Конвертите в жабу и чтаете ? Просто в доках ниче подобного нет :(

Gleb
31.01.2018
15:59:55
так исходники открыть можно, почитать

Виталий
31.01.2018
15:59:57
хотелось бы быть тоже просвещенным

Gleb
31.01.2018
16:01:01

Andrew
31.01.2018
16:01:38

Виталий
31.01.2018
16:02:18
пардон

Gleb
31.01.2018
16:03:24

Andrew
31.01.2018
16:03:30
оно со временем придёт, не переживайте. полезно периодически проглядывать список методов на коллекциях.
ещё бы в Koans, конечно, что-нибудь на тему этих коллекций. и на тему корутин. да, много хочу :D

Sergey
31.01.2018
16:03:54
а исходники в котлине хорошие
их полезно поизучать
в stdlib*

Andrew
31.01.2018
16:04:22
так all тоже
А разве flatten не до конца добежит перед этим?
Ну если мы не о Sequence говорим, конечно

Gleb
31.01.2018
16:04:52
добежит, к сожалению

Виталий
31.01.2018
16:05:44
isNotEmpty = tiles.any { it.any { it != null } }
-> можно опускать оказывается

Andrew
31.01.2018
16:06:44
только если один параметр и подходит название it (в примере, кстати, уже сомнительный подход, и если код надо хоть немного усложнить, я бы поименовал хотя бы один из них)