@scala_ru

Страница 604 из 1499
Alexander
16.04.2017
19:57:51
@DmytroMitin здравствуйте, Дмитрий! Вчера посмотрел часть вашего курса https://stepik.org/course/ThCS-Introduction-to-programming-with-dependent-types-in-Scala-2294 Насколько я понял, вся практика базируется на ProvingGround, что меня сильно смутило. Честно сказать, ожидал больше tips and tricks по реализации DT в Скале. Планируете ли вы такое добавить в свой курс со временем, или, может быть, сделать отдельный?

Dmytro
16.04.2017
20:26:45
@DmytroMitin здравствуйте, Дмитрий! Вчера посмотрел часть вашего курса https://stepik.org/course/ThCS-Introduction-to-programming-with-dependent-types-in-Scala-2294 Насколько я понял, вся практика базируется на ProvingGround, что меня сильно смутило. Честно сказать, ожидал больше tips and tricks по реализации DT в Скале. Планируете ли вы такое добавить в свой курс со временем, или, может быть, сделать отдельный?
Спасибо за отзыв. Не вся, но бОльшая часть. Про зависимые типы на чистой скале (без ProvingGround) идет речь в лекциях "Dependent pair type (Σ-type)", "Dependent function type (Π-type)". Про Shapeless я только упоминаю в последней лекции "Type-level programming. Shapeless". Ну и практика на чистой скале "Type-level programming. Part 1: number exponentiation" и "Type-level programming. Part 2: vector concatenation". Причина - в библиотеке проще объяснять концепцию зависимых типов, чем их кодировать через type level + path-dependent на чистой скале или скале+shapeless, объяснять связь дженериков и type members, "Aux" pattern и т.д. - добавляется еще один уровень косвенности (ну и еще причина - я помогал искать баги в ProvingGround, так что практика была фактически готова). Этот курс вводный. Практически по любому из пяти направлений (type theory, HoTT, dependent types, type-level, theorem proving) можно написать отдельный большой курс. Так что практика получилась не вполне сбалансированная, согласен. Добавлять в этот курс - пока идет конкурс, вроде бы нельзя. Написать новый - не исключено, посмотрим. "tips and tricks по реализации DT в Скале" - это Shapeless. Начинать стоит с https://github.com/underscoreio/shapeless-guide https://www.youtube.com/watch?v=Zt6LjUnOcFQ https://github.com/milessabin/shapeless/tree/master/examples/src/main/scala/shapeless/examples https://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/

Alexander
16.04.2017
20:29:56
Спасибо за отзыв. Не вся, но бОльшая часть. Про зависимые типы на чистой скале (без ProvingGround) идет речь в лекциях "Dependent pair type (Σ-type)", "Dependent function type (Π-type)". Про Shapeless я только упоминаю в последней лекции "Type-level programming. Shapeless". Ну и практика на чистой скале "Type-level programming. Part 1: number exponentiation" и "Type-level programming. Part 2: vector concatenation". Причина - в библиотеке проще объяснять концепцию зависимых типов, чем их кодировать через type level + path-dependent на чистой скале или скале+shapeless, объяснять связь дженериков и type members, "Aux" pattern и т.д. - добавляется еще один уровень косвенности (ну и еще причина - я помогал искать баги в ProvingGround, так что практика была фактически готова). Этот курс вводный. Практически по любому из пяти направлений (type theory, HoTT, dependent types, type-level, theorem proving) можно написать отдельный большой курс. Так что практика получилась не вполне сбалансированная, согласен. Добавлять в этот курс - пока идет конкурс, вроде бы нельзя. Написать новый - не исключено, посмотрим. "tips and tricks по реализации DT в Скале" - это Shapeless. Начинать стоит с https://github.com/underscoreio/shapeless-guide https://www.youtube.com/watch?v=Zt6LjUnOcFQ https://github.com/milessabin/shapeless/tree/master/examples/src/main/scala/shapeless/examples https://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/
Спасибо за развёрнутый ответ! В целом мой поинт в том, что изучать DT на Скале не слишком удобно, но посмотреть на интересные трюки с системой типов интересно. Напишу Вам небольшой отзыв после того как весь курс пройду (наверное, будет интересно).

Google
Dmytro
16.04.2017
20:36:33
Спасибо за развёрнутый ответ! В целом мой поинт в том, что изучать DT на Скале не слишком удобно, но посмотреть на интересные трюки с системой типов интересно. Напишу Вам небольшой отзыв после того как весь курс пройду (наверное, будет интересно).
Да, проще изучать зависимые типы например на Идрисе. Но такой курс уже есть http://compsciclub.ru/courses/idrisprogramming/2017-spring/ Мне хотелось написать что-то вводное и на Скале, причем по всем пяти упомянутым направлениям. Получилось как получилось. Да, конечно, отзыв пишите (со всеми плюсами и минусами). Удачи в прохождении курса. Будут вопросы - пишите в коментах в курсе. Я считаю, что образование сейчас переживает расцвет. Первая революция была когда появились сайты типа Coursera, edX... Вторая - когда появились платформы типы Udemy, Stepik... где каждый может выкладывать курсы и делиться тем, в чем разобрался. На Stepik, к тому же, крутой движок.

KrivdaTheTriewe
17.04.2017
09:30:10
Вопрос по circe , есть нормальные статьи по бест практис, или нужно в сорцы лезть?

Denis
17.04.2017
09:31:04
а что именно интересно?

Lev
17.04.2017
09:40:22
Dmitriy
17.04.2017
09:42:48
Снова всё с тем же вопросом. Как это можно реализовать? Я уже всё что нашёл перепробовал. Задача в том, чтобы пользователь ввёл что-то, и это что-то передалось в уже запущенный процесс.

Всем привет. Не могу понять. Как отправить строку в уже запущенный процесс?

Может хоть сегодня найдется кто-нибудь, кто сможет помочь

Юрий
17.04.2017
09:43:42
А в чем проблема? Тут вроде никаких принципиальных отличий от джавы нет

Grigory
17.04.2017
09:43:59
а какие там бест практис

обычная джейсон либа)

Dmitriy
17.04.2017
09:45:56
Я уже приводил пример вопроса на StackOverflow. В джаве вроде как всё просто. Но в скале не вижу ничего аналогичного. http://stackoverflow.com/questions/41534009/how-to-write-a-string-to-scala-process

KrivdaTheTriewe
17.04.2017
09:46:06
а что именно интересно?
https://pastebin.com/micbR9Ad ну вот к примеру как чётко определяется, попадает ли имя кейс класса в результирующий жсон как структура или нет

Grigory
17.04.2017
09:47:08
силд когда апкастишь всегда появляется дискриминатор этот

Google
KrivdaTheTriewe
17.04.2017
09:47:38
силд когда апкастишь всегда появляется дискриминатор этот
ну интуитивно то всё понятно , но хотелось бы заранее знать :)

Grigory
17.04.2017
09:47:49
ну мне кажется это только единственная фича такая

это конфигруриремо

KrivdaTheTriewe
17.04.2017
09:48:08
ну мне кажется это только единственная фича такая
вот этот комментарий буду считать статьей

а тема доклада у тебя определена теперь?

Grigory
17.04.2017
09:50:11
кстате говоря тут вопрос по сирке такой, у дениса уже спрашивал; я хотел закешировать автокодеки используя шаплез Кеш; разумеется все в рантайме повалолись со стековрефлоу; никто не кешировал кодеки сирки?

а тема доклада у тебя определена теперь?
БЕЗ СПОЙЛЕРОВ (не сформулировал)

Dmitriy
17.04.2017
09:53:29
Эт я понимаю, просто я уже написал много чего, что работает со Scala Process

Да и по остальному функционалу работы с процессами скала выигрывает. Но блин вот этот вот непонятный момент

Не совсем понял, что имеется ввиду. Мне по факту всего-то перенаправить потоки ввода/вывода процесса. Если же вывод процесс замечательно ловится ProcessLogger-ом, то чтобы динамически писать в процесс я не могу найти нормального решения

это же месседжинг, не?

Есть в скала ProcessIO, но либо я не понимаю как он работает, либо он действительно здесь не поможет.

Vyatcheslav
17.04.2017
10:24:14
Эт я понимаю, просто я уже написал много чего, что работает со Scala Process
А что если так: https://pastebin.com/DhSVgcXp очень грубо и с кучей проблем, но идея думаю ясна.

Mikhail
17.04.2017
10:49:10
Dmitriy
17.04.2017
11:42:22
https://pastebin.com/HpkLAngH

Тут актор. Он обрабатывает сообщения которые приходят от пользователя по вебсокету. Запустить процесс могу. Не знаю как дальше быть, когда определил, что процесс работает и пришло новое сообщение от пользователя.

Google
Dmitriy
17.04.2017
11:45:10
Блин. Я ничего не понимаю :D

А что если так: https://pastebin.com/DhSVgcXp очень грубо и с кучей проблем, но идея думаю ясна.

Vyatcheslav
17.04.2017
11:50:27
Блин. Я ничего не понимаю :D
Ну смотри, Foo => Bar в Scala - это синоним для Function[Foo, Bar], где Foo - тип аргумента, Bar - тип возвращаемого значения. Function[T, R] - это trait, у которого есть метод def apply(v: T): R. Мы создаем наследника и реализуем apply. Суть реализации - когда будет вызвана функция in, см. ProcessIO: new ProcessIO(in: (OutputStream) ⇒ Unit, out: (InputStream) ⇒ Unit, err: (InputStream) ⇒ Unit) мы запомним OutputStream и будем слать данные напрямую в него. buffer нужен, чтобы сохранить данные, пока мы не получили OutputStream.

Dmitriy
17.04.2017
11:57:42
Тэкс, попробую, спасибо

Скопировал ваш код и добавил следующую строку после того как определил запущен ли процесс. Ну и ничего не происходит. Всё верно и я просто неправильно понимаю то, как он должен работать? (msg+"\n").getBytes().foreach(input.out.write(_))

А что если так: https://pastebin.com/DhSVgcXp очень грубо и с кучей проблем, но идея думаю ясна.
Или ничего и не должно произойти? Метод write срабатывает там где нужно, это я проверил. Но процесс на это никак не реагирует. Ну и да, я создал объект этого класса и передал его в качестве параметра для ProcessIO val input = new ConnectedProcessWriter() val io = new ProcessIO ( input, output => {scala.io.Source.fromInputStream(output).getLines.foreach(out !)}, errorr => {scala.io.Source.fromInputStream(errorr).getLines.foreach(out !)})

Iaroslav
17.04.2017
13:19:24
народ, а кто подскажет плюсы минусы cats в сравнении с scalaz. Мне у cats немного доки больше нравятся, но вокруг scalaz вроде как комьюнити больше. Кто может подсказать, какая реализация более безболезненная для использования? Или один хрен?

Alexander
17.04.2017
13:20:25
Котики более практичным задумывались, кажется. На деле примерно так.

Alex
17.04.2017
13:20:53
коты более сырые

Iaroslav
17.04.2017
13:22:22
ну вот мне коты показались более структурированными и лаконичными. Такой себе необходимый минимум. А сырые насколько? Вот прям сереьзные бока вылазят? Или мелкие неприятности?

Oleg
17.04.2017
13:23:08
ни разу ничего серьёзного не вылезало, разве что 2.10 там плохая обратная поддержка

Iaroslav
17.04.2017
13:25:00
супер, спасибо большое

Nick
17.04.2017
13:58:34
коты более сырые
а какой показатель сырости?

я вот тож в котах не наступал на чтот серьезное

Oleg
17.04.2017
14:08:53
мало операторов, совсем мало пяти-шести-значных символьных операторов

Nick
17.04.2017
14:09:14
а они нужны? )

Oleg
17.04.2017
14:09:30
типа ^^^^^^, какой-то нематематический map6 вместо него

кому понятно, что делает map6 ? Вот шесть крышечек - другое дело

Denis
17.04.2017
14:21:42
:))

Google
Vyatcheslav
17.04.2017
14:54:35
Скопировал ваш код и добавил следующую строку после того как определил запущен ли процесс. Ну и ничего не происходит. Всё верно и я просто неправильно понимаю то, как он должен работать? (msg+"\n").getBytes().foreach(input.out.write(_))
по идее должно было сработать :) Исключений не возникает? Возможно, где-то в кишках этот process io закрывает стрим после какого-то шага, тут уже хз, надо в исходниках стандартной либы копаться

Iaroslav
17.04.2017
14:56:14
отсутствие вымораживающих операторов отношу скорее к плюсам котов.

Oleg
17.04.2017
14:59:00
в котах нет BiConstrainedNaturalTransformation, зато есть FreeInvariantMonoidal

Admin
ERROR: S client not available

The mirror
17.04.2017
15:06:41
Блин, вам серьезно нужны все эти коты, скалазы и шейплессы? Я просто не пробовал и не могу разглядеть весомых плюсов

Nick
17.04.2017
15:07:09
формально не нужны

на практике либки удобно писать

The mirror
17.04.2017
15:12:25
Возможно, я не знаю. Просто возможностей скалы мне хватает с головой.

И вроде бы как я не испытываю неудобств

Andrey
17.04.2017
15:13:04
Возможно, я не знаю. Просто возможностей скалы мне хватает с головой.
Э... так все эти коты и шейплесы, это вообще-то тоже "Возможности скалы"

The mirror
17.04.2017
15:13:58
Окей, не так выразился - "возможностей без этих либ"

Andrey
17.04.2017
15:14:10
И вроде бы как я не испытываю неудобств
А это очень шаткая позиция "не испытываю неудобств". Что бы их испытывать, надо знать как можно делать по другому.

The mirror
17.04.2017
15:14:38
Если это так, то я был бы очень рад ошибаться

И с удовольствием бы изучил новый инструмент ради удобства в работе

Andrey
17.04.2017
15:15:25
Ну или более простой вариант). Задачи достаточно простые, что бы небыло необходимости в магии...

Nikita
17.04.2017
15:16:12
Блин, вам серьезно нужны все эти коты, скалазы и шейплессы? Я просто не пробовал и не могу разглядеть весомых плюсов
на практике при их чрезмерном использовании код становится трудноподдерживаемым

Andrey
17.04.2017
15:18:41
Скорее не при черезмерном, а при неправильном...

Google
Denis
17.04.2017
15:19:06
"Не испытываю недоудобств" и "жить без EitherT или OptionT" не сочетается

Nikita
17.04.2017
15:21:53
Скорее не при черезмерном, а при неправильном...
а что есть правильное использование? у нас в соседней команде чуваки запилили монаду для логгирования, в результате оказалось что с ней тяжеловато работать

Alexandr
17.04.2017
15:22:14
Есть исходники?

У меня это больной вопрос

Alexandr
17.04.2017
15:23:39
Блин, вам серьезно нужны все эти коты, скалазы и шейплессы? Я просто не пробовал и не могу разглядеть весомых плюсов
Вопрос удобства, выразительности, проверки компилляцией, возможность описать программу, как трансформацию типа.

Можно и без. Ассемблер живет как-то.

Oleg
17.04.2017
15:25:32
всё, что мы говорим о ФП-либах, где-то в ява-чате в почти таких же терминах кто-то говорит о scala

The mirror
17.04.2017
15:25:52
Хаха, кстати да

Alexandr
17.04.2017
15:26:03
Коты пока мне не нужны, но это только потому, что я не умею их готовить.

The mirror
17.04.2017
15:26:54
Ещё в 50-е люди, которые программировали в бинарном коде так же говорили про ассемблер

Oleg
17.04.2017
15:28:53
Вам Торреборе не рассказал, как монады писать?

Nikita
17.04.2017
15:29:31
во во, как раз эти товарищи

мы стараемся больше ванильной скалки придерживаться

от монад новые люди убегают в страхе

Oleg
17.04.2017
15:30:21
я так и знал, что на конфах всё врут

Страница 604 из 1499