
? animufag ?
01.07.2017
16:53:45
чаще бывает что регэкспов не хватает для выражения всех требований валидации

Boris
01.07.2017
16:58:43
Регэкспы такая штука, которую проще написать, чем прочесть или тем более поправить
Или протестить ?

Google

? animufag ?
01.07.2017
17:00:36
не ну тестить регэкспы это ок

Михаил
01.07.2017
17:00:41

? animufag ?
01.07.2017
17:00:47
чистая функция
гораздо лучше чем писать экспектейшоны в юнит тестах и код теста получается 1к 1му как оригинальный код

Boris
01.07.2017
17:04:58
Не да, только проблема в том, что тесты будут тестить какие-то кейзы и они даже будут проходит, но этот же регэксп что-то другое не сматчит или сматчит не так. Помню валидацию емейла..до сих пор ажтртсёт

Artem
01.07.2017
17:05:36

? animufag ?
01.07.2017
17:06:24
да у нас емейл проверяют просто по наличию @ в строке. дальше забили, тк плохая затея в целом
ну и тем более нынешние регукспы повыразительнее регэкспов из теории

Михаил
01.07.2017
17:13:12
http://emailregex.com

Boris
01.07.2017
17:56:38
Регекс выше это кстати для емеила)
насколько я помню в итоге пришлось отказаться от идеи проверять имейл регекспом из за того, что ниодин регексп не мог парсить имейлы из стандарта

Михаил
01.07.2017
17:57:41

Google

Boris
01.07.2017
17:57:48
а те, что могли парсить все имейлы из стандарта, так же пропускали еще и невалидные
ну да, рфц

Михаил
01.07.2017
17:58:12
этот пишут что в соотвествии с RFC 5322 сделан
как так его проглядели?) первая ссылка гугл на email regex)

Boris
01.07.2017
18:02:49
я тебе сейчас уже точно не скажу, но помню, что много было сломано копей и в итоге валидацию сделали без регэекспа, но так, чтобы он соответствовал рфц, так как это была валидация не при регистрации, и имейлов было много. На этой выборке любые регекспы не справлялись. Не уверен, что этот бы сработал. Написать я тоже могу, что соответствует, но это не значит, что оно так и есть
просто когда этих емейлов тонны, то очень быстро вылезают корнер-кейзы, которые есть в спеке, но нету в регекспе

Igor
01.07.2017
18:39:41
Кто-то по-моему скидывал сюда доклад по корутинам, но найти не смог. Может быть кто скинет ссылочку?

Umren
01.07.2017
18:40:59
https://www.youtube.com/watch?v=b4mBmi1QNF0

Igor
01.07.2017
18:48:41

Ivan
01.07.2017
19:14:53
ребят, а не подскажете смарт каст для переменных всегда не работает?

Михаил
01.07.2017
19:17:01
:D
так где должна у меня работает

DarkMentat
01.07.2017
19:22:52
скорее всего, если мутабельное поле. типа if(other.a is A) other.a.methodA()
я просто в локальную переменную присваиваю перед проверками

Ivan
01.07.2017
19:26:06
а, всё-таки есть нюансы, сейчас пример пришлю

Михаил
01.07.2017
19:26:41

Ivan
01.07.2017
19:27:41
типа обход дерева:
нода:
data class HuffmanLetter(val index: Int, val statistic: Int, val letter: Char? = null) {
var left: HuffmanLetter? = null
var right: HuffmanLetter? = null
}
обход:
private fun createLetterCodes(root: HuffmanLetter, currentCode: Queue<Byte>) {
<some code>
if (root.left != null) {
createLetterCodes(root.left, currentCode) // ошибка
}
<some code>
}
если выделить в переменную - работает
это типа стандартный подход, да?

Google

Михаил
01.07.2017
19:29:22
ну вот выше как раз про это написал) объяснение в том, что var может изменятся из пааллельного потока и компилятор не может это отследить

Ivan
01.07.2017
19:30:22
угу, понял, спасибо

Михаил
01.07.2017
19:31:21
можно тут !! заюзать
помню кстати балы когда-то речь о том, что иногда сделают смарт касты для nullable var, но что-то пока не замечал, чтоб хоть где-то работало

Quantum Harmonizer
01.07.2017
20:08:19
С val то же самое, потому что геттер можно переопределить и возвращать null через раз :)

Ivan
01.07.2017
20:18:48

Igorek
01.07.2017
20:22:27

Quantum Harmonizer
01.07.2017
20:44:01

Ivan
01.07.2017
20:44:33
ну если конструкция не гарантирует not null, то нафиг с пляжа
хотя конечно, это вопрос к ребятам из JB
просто у меня уже ощущение что котлиновский компилятор может всё )

Quantum Harmonizer
01.07.2017
20:49:23

? animufag ?
01.07.2017
20:52:32

Ivan
01.07.2017
21:53:12

? animufag ?
01.07.2017
22:08:47

Ivan
01.07.2017
22:09:16
а, блин, верно. Сорян, чёт туплю уже сегодня )

Вячеслав
02.07.2017
02:08:12
Только начал изучать программирование. Сейчас учу java. Наткнулся на kotlin. Думаю совместить)

Dmitry ?
02.07.2017
02:15:09

Вячеслав
02.07.2017
02:15:56

Google

Dmitriy
02.07.2017
12:49:30
всем привет, я пример пытаюсь собрать https://github.com/Kotlin/kotlin-fullstack-sample
но у меня не проходит задача npm-install с ошибкой "Could not list contents of <имя архива>. Couldn't follow symbolic link. Никто не сталкивался с такой проблемой? В интернете я ещё нашёл людей с похожей проблемой, но решения там не было.

Dmitry
02.07.2017
13:17:20
мб архив битый
на днях собирал - было ок

Dmitriy
02.07.2017
13:32:01
короче в убунте nodejs старый

Admin
ERROR: S client not available

Dmitriy
02.07.2017
13:32:30
но если поставить самый новый, то всё равно работать не будет из-за проблемы в другом уже плагине
работает только с 6.11 )

Igor
02.07.2017
16:02:22
Хотя я конечно не эталон человека, учившего жабу, но и новичком в ней себя бы не назвал
Еще вопросик один - если кто-то использовал ktor, у меня по какой-то странной причине не резолвится ApplicationCall.receiveMultipart(), который везде в сэмплах используется для собственно, получения мультипарта. Может кто сталкивался?
UPD: Они вероятно изменили свой API, на данный момент валиден метод ApplicationCall.reveive(type: KClass<T>)

Ilya
02.07.2017
19:34:04
Оба валидны
Там скорее всего какого-то импорта не хватает, идея что ли не подсказывает?

Михаил
02.07.2017
21:56:02
как с anko добавить вью к существующему лейауту внутри другой вью?
context.UI {
textView(R.string.smev_5_not_confirmed_label_text)
}
parentContainer!!.addView(confirmLabel)не уж то только так?

Igor
02.07.2017
23:06:42

Dmitriy
03.07.2017
08:23:05
Привет всем ,подскажите а как в котлине правильно выполнить долгую операцию в отдельном потоке. Есть свои какие нибуть фичи?

Sergey
03.07.2017
08:24:25
нет, все так же как и на джаве. разве что корутины поверх можешь заюзать если нужен результат после выполнения

Dmitriy
03.07.2017
08:25:08

Павел
03.07.2017
08:28:21

Антон
03.07.2017
08:46:56
.start()

Google

Dibro
03.07.2017
08:48:33
.start()
он сам стартует, там дефолт параметр

Антон
03.07.2017
08:49:14

Quantum Harmonizer
03.07.2017
08:53:02

Ivan
03.07.2017
09:48:20
TPE из Java.
+1 как-то обычно под каждую задачу поток создавать - жирно будет

Oleg
03.07.2017
09:56:08
async {
// Your code here
}
Привет всем ,подскажите а как в котлине правильно выполнить долгую операцию в отдельном потоке. Есть свои какие нибуть фичи?

Igor
03.07.2017
09:56:56

Oleg
03.07.2017
09:57:02
Да

Ilya
03.07.2017
09:57:03
В языке котлин нет никаких таких операций. А вот на платформах, под которые котлин умеет компилироваться – есть.

Ivan
03.07.2017
09:57:05
А для корутин есть же какой-то дефолтный пулл? Или его самому всё-таки создать придётся?

Ilya
03.07.2017
09:58:00
async надо ожидать через await (это неблокирующая операция, она суспендит окружающую корутину). Если надо просто fire & forget, тогда launch

Михаил
03.07.2017
09:58:28

Ilya
03.07.2017
09:59:04
Дефолтный диспетчер (так это называется в корутинах) есть, CommonPool называется
но диспетчер надо всегда указывать явно, иначе по нашему опыту получается такая каша…