@kotlin_lang

Страница 229 из 982
? 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
да у нас емейл проверяют просто по наличию @ в строке. дальше забили, тк плохая затея в целом

А потом человек, не прочитавший теорию, старательно парсит регэкспом КС-язык
а ты видимо разбираешься в теории и можешь доказать, что строка описывается КС-грамматикой и не ниже?

ну и тем более нынешние регукспы повыразительнее регэкспов из теории

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

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
а, всё-таки есть нюансы, сейчас пример пришлю
для var не должно работать приведение к NotNull

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
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
Только начал изучать программирование. Сейчас учу java. Наткнулся на kotlin. Думаю совместить)
лучше не распыляться и учить только джаву, а после джавы котлин очень легко дается

Вячеслав
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)не уж то только так?

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

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

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

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

Антон
03.07.2017
08:49:14
он сам стартует, там дефолт параметр
Не знал, всегда явно стартовал

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

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

но диспетчер надо всегда указывать явно, иначе по нашему опыту получается такая каша…

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