@kotlin_lang

Страница 500 из 982
Dumitru
21.01.2018
20:50:57
уже другая фукнция main

Georgiy
21.01.2018
20:51:17
В том, что контроллер — это набор разрозненных процедур, а не целостный объект. Нарушает все заветы SOLID. И нельзя нормально завернуть какой-нибудь метод в декоратор, можно только объект.
В чем принципиальное отличие нескольких контроллеров с методами и единственного объекта сервера в Ktor с прописанными роутами? val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello, world!", ContentType.Text.Html) } } } Извини, насчет оборачивания метода в декоратор не совсем понял. Это разве не фича уровня языка?

Bogdan
21.01.2018
20:52:30
уже другая фукнция main
посмотри про саспенд, он модифицирует функцию, есть lauch - если майн завершится корунтинам капец, runBlock = блокирует до завершения корунтин

Google
Bogdan
21.01.2018
20:53:14
как-то так

Kirill
21.01.2018
20:53:44
уже другая фукнция main
прочитай, пожалуйста, вот это для начала: https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html

Dumitru
21.01.2018
20:54:09
ок спс

Kirill
21.01.2018
20:55:15
ок спс
а потом вот это: https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md и вот это: https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md

Quantum Harmonizer
21.01.2018
20:56:13
Alex
21.01.2018
20:57:37
@Harmonizr акторы в kotlinx уже есть или нет?

Quantum Harmonizer
21.01.2018
20:57:56
@Harmonizr акторы в kotlinx уже есть или нет?
в kotlinx.coroutines — довольно давно

Alex
21.01.2018
20:58:10
О, пощупаю. Спасибо!

Руслан
21.01.2018
21:04:03
@angmarr помню ты все думал какой Result/Either втащить в проект, к чему пришел? Свой используешь, или либу?

Kirill
21.01.2018
21:05:32
@angmarr помню ты все думал какой Result/Either втащить в проект, к чему пришел? Свой используешь, или либу?
плюсую вопрос. я себе написал свой на 5 строк, и не то чтобы мне это очень нравилось

Руслан
21.01.2018
21:08:37
У меня сейчас на выбор: 0. Свои 5 строк 1. arrow-data (https://github.com/arrow-kt/arrow/tree/master/arrow-data) 2. funktionale-either (https://github.com/MarioAriasC/funKTionale/tree/master/funktionale-either) 3. https://github.com/michaelbull/kotlin-result 4. https://github.com/kittinunf/Result

Georgiy
21.01.2018
21:12:52
В сыром виде, где обработчики прописаны «на месте», это так же плохо. Нет, я говорю не о фиче уровня языка. Класс должен реализовывать интерфейс — тогда его можно декорировать.
То же и с контроллерами в MVC. Согласен, что конечные контроллеры представляются набором методов. Однако, родительский класс имеет свой интерфейс, соответствующий SOLID в той или иной степени (зависит от фреймворка). И набор методов-экшнов - это просто способ представить роутинг. Скажем, имей каждый контроллер метод, возвращающий коллекцию пар ключ-значение с наименованием экшна в ключе и функцией в значении, это было бы точно то же самое, но уже кошерно, так ведь (нет лишних методов)?

Google
Igor
21.01.2018
21:14:53
@angmarr помню ты все думал какой Result/Either втащить в проект, к чему пришел? Свой используешь, или либу?
Написал свою либку (на 4 строчки), да залил на jitpack.io Теперь везде подключаю Методы решил в нее не добавлять, тк постоянно их переписываю.

Dumitru
21.01.2018
21:20:53
launch и runBlocking горят красным

вообще хз че делаю не так



Anton
21.01.2018
21:22:38
подключи корутины)

Dumitru
21.01.2018
21:22:39
пример из нета

Kirill
21.01.2018
21:24:13
пример из нета
у тебя градл проект или jps? что будет если поставить курсор на красный код и нажать alt+enter?

Dumitru
21.01.2018
21:24:51


Kirill
21.01.2018
21:25:51
пример из нета
ты создавал проект как тут(https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html#setting-up-a-project) написано?

Dumitru
21.01.2018
21:26:01
раньше вроде появлялось что бы включить их

теперь хз почему нет

нет, обычный

Georgiy
21.01.2018
21:31:29
Какой родительский класс? Какой-нибудь базовый контроллер? Наследование от классов — зло.
Насчет того, насколько это зло, спорить не буду, т.к. не сабж) Да, базовый контроллер. Пусть будет по-другому. Фреймворк предоставляет final class Controller, экземпляры которого хранят в property Map с именами экшнов в ключах и функциями в значениях. Нужный инстанс Controller вызывается при получении http запроса и может быть получен в дальнейшем (для обращения к полезному API, связанному с роутингом). Нет наследования, нет методов, не включенных в интерфейс - концептуально же отличий никаких не будет.

Bogdan
21.01.2018
21:31:43
раньше вроде появлялось что бы включить их
корунтины нужно подключить как зависимость

Kirill
21.01.2018
21:33:08
нет, обычный
создай грэдл проект, как написано в мануале. и всё заработает

Bogdan
21.01.2018
21:34:52
https://github.com/Kotlin/kotlinx.coroutines

Dumitru
21.01.2018
21:34:53
корутины это не стандартная фичя языка ?

Dumitru
21.01.2018
21:35:19
лан

Google
Bogdan
21.01.2018
21:36:18
корутины это не стандартная фичя языка ?
она построена на одном ключевом слове, и функциях + дает меньшый оверхед чем другие решения

Dumitru
21.01.2018
21:37:39
лучше поздно чем никогда, что такое оверхед ? ))

Bogdan
21.01.2018
21:38:37
каждая фича забирает у на спроизводительности, в памяти процессора и т.д.

Dumitru
21.01.2018
21:39:28
выходит Thread дает нагрузку больше ?

Bogdan
21.01.2018
21:40:13
выходит Thread дает нагрузку больше ?
да нативные потоки, представь для каждого треда создается свой стек команд, свое локальное хранилище

Андрей
21.01.2018
21:40:55
корутины это не стандартная фичя языка ?
Ну почему же, это стандартная фича языка, которая предоставляет suspend функции и сontinuation-ы

Bogdan
21.01.2018
21:41:04
корунтины это конечный автомат состояний

Bogdan
21.01.2018
21:41:45
а так да это ведь одна компания пилит

Dumitru
21.01.2018
21:41:49
то есть не везде работает, как тот же Thread

Bogdan
21.01.2018
21:41:59
везде свои нюансы

Dumitru
21.01.2018
21:42:08
ну да..

Bogdan
21.01.2018
21:42:56
то есть не везде работает, как тот же Thread
основное отличие потока от корунтин корунтины не блокирую поток, тоесть у тебя ГУИ ты вызвал операцию загрузки и твой гий умер

Dumitru
21.01.2018
21:43:50
в Thread разве блокируется ?

не в main Thread а в new

хм ну ладно

Bogdan
21.01.2018
21:44:37
в Thread разве блокируется ?
там гонка, что бы ее не было используют синхронизацию, она и блочит

Google
Dumitru
21.01.2018
21:45:10
ну теперь я вижу преимущества корутин )

у меня в голове было так: корутины почти как фреды )

Bogdan
21.01.2018
21:46:33
крунтины это один из вариантов перевода

future, promise и delay

Dumitru
21.01.2018
21:49:51
future - типа сделать в будущем promise - сделать когда нибудь delay - типа как отложить ?

немного похожие описания ))

Bogdan
21.01.2018
21:50:15
суть одна

оно когда то произойдет

Kira
21.01.2018
21:50:57
future = promise = deffered

Dumitru
21.01.2018
21:50:58
а в чем отличия ?

Bogdan
21.01.2018
21:51:13
в джаве есть Future, но там много колбеков, это когда после кода }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

Dumitru
21.01.2018
21:51:37
а так вот что такое колбэк ))

Kira
21.01.2018
21:51:43
а в чем отличия ?
Одно и тоже, просто языки/библиотеки разные

Bogdan
21.01.2018
21:52:16
корунтины помагают писать и использовать проще + для других колбек а тут конечный автомат

Dumitru
21.01.2018
21:52:37
ясно )

Bogdan
21.01.2018
21:52:37
а так вот что такое колбэк ))
колбек это вызов (в переводе)

Dumitru
21.01.2018
21:52:55
я знал как переводится

я не знал про }}}}}

Bogdan
21.01.2018
21:53:29
я знал как переводится
ну вот - run { run 2 { run3{} }}

Dumitru
21.01.2018
21:53:29
вызов в вызове типа ?

Google
Georgiy
21.01.2018
21:53:33
а так вот что такое колбэк ))
Колбэк - функция, переданная в виде аргумента в другую функцию, и вызванная той после исполнения своего тела

Dumitru
21.01.2018
21:53:41
)

Dumitru
21.01.2018
21:54:36
Грамотный Георгий )

спс

Georgiy
21.01.2018
21:56:16
Не за что) Я люблю строить точные определения, это полезно и для того кто его строит, и для того кто его услышит.

Bogdan
21.01.2018
21:57:24
Не за что) Я люблю строить точные определения, это полезно и для того кто его строит, и для того кто его услышит.
если это определение понятно, вот раньше читал научные книги, и вот определения с абзац нуждалось в пояснения в главу

Bogdan
21.01.2018
21:59:37
От предмета ведь зависит, в математике/физике увы, так и будет
програмирование берет корни от туда, и дело не в предмеет а в формате изложения. Вот Георгий кратко и ясно обяснил тереотически, я лишь смог бы показать практически

Kira
21.01.2018
22:02:13
програмирование берет корни от туда, и дело не в предмеет а в формате изложения. Вот Георгий кратко и ясно обяснил тереотически, я лишь смог бы показать практически
Дело в предмете, так как краткие определение в той же физике являются краткими потому что состоят из слов для каждого из которых нужно свое определение. В данном случае это не требовалось, так как ты знал что такое функция, тело функции, аргумент и исполнение.

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

Bogdan
21.01.2018
22:04:41
Нужен генератор определений на основе вики, который будет уточнять какие слова ты знаешь, а затем создавать определение только из знакомых слов)
вот дело не в вкики, а в книгах, и к програмированию тоже относится, там математики было больше чем у меня в вузе

Georgiy
21.01.2018
22:06:51
Будут. Функцию можно обернуть, добавив какое-то поведение. См. proxy / decorator.
Есть весьма неплохой костыль на этот случай, onBeforeAction/onAfterAction. Согласен, концепт контроллера скорее всего получил распространение из-за своей наглядности и при близком рассмотрении не пройдет проверку пуриста. Однако, и антипаттерном называть я бы его не стал, т.к. такая архитектура не сулит проблем для любых Web-приложений на любом уровне развития

Kira
21.01.2018
22:07:03
Вот ребята решили лучше разобраться в программировании на хаскеле, дружно слушают лекции по теории групп

Artem
21.01.2018
22:13:23
Ребят, а нормально ли вообще как коллбек кидать лямбду, а не через интерфейс с одним методом?

Андрей
21.01.2018
22:15:56
там гонка, что бы ее не было используют синхронизацию, она и блочит
Гонка, синхронизация - это о конкаренси. Если писать паралельный/асинхронный код без конкаренси, то и с потоками гонок не будет. А вот если конкаренси будет, то и с корутинами проблем можно получить.

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