
Kirill
20.01.2018
18:56:16
Внутри лямбды переданной в forEach можно получить номер итерации?

Bogdan
20.01.2018
18:56:51
вроде есть аоричьИндекс
forEachIndex

Kirill
20.01.2018
18:58:11
Да.

Google

Kirill
20.01.2018
18:58:13
Спасибо.

Kirill
20.01.2018
19:07:32

Kirill
20.01.2018
19:07:48

Alexei
20.01.2018
19:10:04
Ребята хотелось бы услышать аргументированые мнения по следущей теме:
Стоит ли избегать функций в кт в рамках соего кода(не считаем тех что являются расширениями)?
аргумент в пользу избегания это то что класы проще тестить и их можно связывать с помощью ДИ(патерн не обязательно спринг)

Igor
20.01.2018
19:12:12

Alexei
20.01.2018
19:13:27
спорить сложно ибо я не знаю точной разницы между функцией(не методом) и процедурой
@angmarr не мог бы бросить почитать/написать об этом?

Mikhail
20.01.2018
19:16:58
Студия подчеркивает, но gradle собирает...

Roman
20.01.2018
19:18:13
Это известный баг, переимпорт проекта поможет.

Mikhail
20.01.2018
19:18:20

Google

Kira
20.01.2018
19:18:26

Roman
20.01.2018
19:19:02
Наверняка есть какой-то более простой способ, но я его не знаю.

Artem
20.01.2018
19:20:52
А в чем прикол gradle kotlin dsl этого?)

Igor
20.01.2018
19:21:20
@angmarr не мог бы бросить почитать/написать об этом?
Для меня функци == чистая функция (те дертминированная и без сайд эффектов см wikipeda/чистая_функция)
В них я ничег плохого не вижу, ибо они не меняют глобальное состояние и их результат зависит только от параметров.
Все остальное это “продцеры”, как вот в си были, которые меняют глобальный стейт или свои аргументы.
Это возвращает нас к процедурно-императивному стилю программирования, который конечно надо избегать.
Если в вашем коде, такие “не методы”, то точно лучше их не использовать, а сконцентрироваться на стандартном ООП с солидом и DI

Mikhail
20.01.2018
19:23:40
И чуть более понятная магия

Artem
20.01.2018
19:24:34
Понял, спасибо


Andrey
20.01.2018
19:33:27
Добрый вечер!
Помогите, пожалуйста, с коммандлайновой джавой.
Есть файл main1.kt:
import org.json.JSONObject
fun main(args: Array<String>)
{
val obbj = JSONObject()
println("Hello!")
}
Компилирую так:
kotlinc -classpath json.jar main1.kt -include-runtime -d main.jar
При старте джава выдает ошибку:
java -classpath json.jar:. -jar main.jar
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at Main1Kt.main(main1.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Перепробовал кучу вариантов с classpath. Единственное, что помогло, это засунуть руками классы из json.jar в main.jar
Джава игнорирует classpath если запускается с -jar?


Dibro
20.01.2018
19:38:37


Andrey
20.01.2018
19:39:48
не то скопировал
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
at Main1Kt.main(main1.kt:5)

Bogdan
20.01.2018
19:40:11
"При старте джава выдает ошибку:
java -classpath json.jar:. -jar main.jar"
после джара нужно указать майн, или в манивест прописать

Andrey
20.01.2018
19:41:01
котлин прописывает

Bogdan
20.01.2018
19:41:11
посмотри рукми в джар
хотя да
ругается на джисон

Dibro
20.01.2018
19:43:38
в любом случае, котлин здесь не причем, пиши в @jvmchat

Bogdan
20.01.2018
19:45:32
вроде поумочнанию просканирует папку с main.jar

Google

Bogdan
20.01.2018
19:46:26

Andrey
20.01.2018
19:47:14
пробовал, не работает

Bogdan
20.01.2018
19:51:41
а файлик json.jar рядом с майн джар?

Andrey
20.01.2018
19:58:17
Да

SkullzBoy
20.01.2018
20:00:53
I have a list with names that start with a capital letter (France) and i am trying to compare user input with the list, supposing user inputs everything in case sensitive (france) how do i make the program know that (France and france) are the same thing even if input is case sensitve

Fag
20.01.2018
20:01:30
Make the input and the other string both the same case
So, make them both FRANCE or france

SkullzBoy
20.01.2018
20:01:57
Ohhk thanks

Fag
20.01.2018
20:02:02
No problemo

SkullzBoy
20.01.2018
20:03:20
But i still have a doubt....i am reading a .txt file, how do i force it to read everyhting in capital?

Alex
20.01.2018
20:05:19
Ребята, по ktor еще вопрос есть.
Как мне отправить статические html и css по GET-запросу?

Andrey
20.01.2018
20:05:23
you should not read everything in capital, you should make strings the same case when you compare them

Alex
20.01.2018
20:05:52
static("/") {
default("client/index.html")
default("client/css/index.css")
}
Пробовал так, и как еще только не пробовал
Html отправляется, css - нет

Fag
20.01.2018
20:06:44

SkullzBoy
20.01.2018
20:07:56
Thanks!
And what if a word on the list has accent like ã and the user inputs only a

Quantum Harmonizer
20.01.2018
20:17:10

SkullzBoy
20.01.2018
20:19:53
Doesnt show anything

Google

Andrey
20.01.2018
20:20:56
Replace accents, then compare :)

Quantum Harmonizer
20.01.2018
20:21:12
lol, too complex

SkullzBoy
20.01.2018
20:21:21
I would... .txt has about 100 lines

Quantum Harmonizer
20.01.2018
20:21:22
in Unicode, this called 'decomposition'

Alex
20.01.2018
20:21:42

SkullzBoy
20.01.2018
20:21:47
Would take forever...and list could grow...so even more time replacing accents

Quantum Harmonizer
20.01.2018
20:23:47
Из каталога
Я так делаю.
static("/") {
files("./path/to/dir")
}

Alex
20.01.2018
20:25:01
Сейчас попробую, спасибо
У меня в моем html есть линк на css
Нормуль подхватит?

Quantum Harmonizer
20.01.2018
20:26:31
ну если линк указывает туда, куда надо, то норм)

Andrey
20.01.2018
20:26:43

Alex
20.01.2018
20:38:15
Папка client, в ней два файла - index.html и index.css

Quantum Harmonizer
20.01.2018
20:38:53
Все равно не помогает ?
Тут уж всё зависит от того, относительно чего путь и как он резолвится.
Можно попробовать продебажить.

Alex
20.01.2018
20:39:32
А что дебажить-то?
Пробовал так :
static("/") {
files("./client/index.html")
files("./client/index.css")
}
И так :
static("/") {
files("./client")
files("./client")
}
В первом случае отсылался html и пустой css, во втором пустой html

Quantum Harmonizer
20.01.2018
20:42:09
Пустой или 404?

Alex
20.01.2018
20:42:14
404
Он как бы есть, но его и нету

Google

Alex
20.01.2018
20:42:54
Вот так

Quantum Harmonizer
20.01.2018
20:42:59
Если у тебя уже что-то повешено на, допустим, /{smth}/, то статик не отработает.

Alex
20.01.2018
20:43:00

Quantum Harmonizer
20.01.2018
20:43:12
ещё, у меня стоит слэш после статического каталога

Alex
20.01.2018
20:43:17

Quantum Harmonizer
20.01.2018
20:43:21
т. е. ./client/
а публичный путь я себе сделал s/t/a/t/i/c чтоб точно не пересёкся с другими обработчиками.

Alex
20.01.2018
20:44:17
Мдя, чото сложновато оказалось отослать весь фронт при первом заходе на страницу ?

Quantum Harmonizer
20.01.2018
20:46:12
https://github.com/JavaneseOnline/JavaneseBackend/blob/master/src/main/kotlin/online/javanese/JavaneseServer.kt#L267
вот как у меня сделано, где it = /s/t/a/t/i/c

Alex
20.01.2018
20:46:32
Спасибо, сейчас гляну ?
По ходу, прийдется стили инлайнить ?
Потому что у тебя немного другой кейс
А мне надо, чтоб html отрендерился и подхватил стили
По ходу, надо ташить спринг, а то по привычному не выходит с ктором ?
Не, заработало, слава Богу
@Harmonizr пасиба за помощь ?

Quantum Harmonizer
20.01.2018
21:07:33

Alex
20.01.2018
21:08:31
Я нашел пример с вебсокетами и сделал как там. Весь фронт запихал в папку resources, и сделал так :
static("/") {
defaultResource("index.html", "client")
resources("client")
}