@scala_ru

Страница 569 из 1499
Arcady
19.03.2017
05:19:46
Нормальный простой и краткий курс. Если про Heather Miller

The mirror
19.03.2017
05:22:00
Вторую неделю сдал уже?

курс хороший, ага

Grader error: Malformed feedback. Please visit the Discussion forum to see if your peers are experiencing similar errors. If the error isn't resolved in 24 hours, please reach out to Coursera through our Help Center.

Google
The mirror
19.03.2017
05:22:43
Никто с таким не сталкивался?

Vyatcheslav
19.03.2017
07:24:50
только эта ошибка или там что-то еще было?

The mirror
19.03.2017
07:34:29
OOM еще :/

Vyatcheslav
19.03.2017
07:42:47
ну значит проблема в OOM :) Возможно, collect раньше времени вызываешь, или где-то еще память расходуешь.

Nick
19.03.2017
07:43:30
если оом , то ясно дело задание не выполнено)

Sergey
19.03.2017
08:06:10
Ого, а у меня вторая неделя только завтра начнется

Vyatcheslav
19.03.2017
08:28:36
Я 2 недели за 2 дня сделал, а дальше просто лекций много, начинаю смотреть и засыпаю :D

The mirror
19.03.2017
08:44:46
cache нормально работает?

Vyatcheslav
19.03.2017
08:47:33
да, в задании даже ничего мутить с memory/disk не нужно. Но подумай, куда его нужно вставить, учитывая, что грейдер запускает методы напрямую (а не main)

Nick
19.03.2017
11:57:00
а кто у нас тут в scala.meta уже с головой окунался?

Mikhail
19.03.2017
11:57:22
Nick
19.03.2017
12:02:50
вопрос как найти реализацию для интерфейса в компаил таиме и подставить

Oleksandr
19.03.2017
12:09:20
а если их несколько, реализаций?

Google
Nick
19.03.2017
12:11:50
то заломать сборку)

Mikhail
19.03.2017
12:13:42
вопрос как найти реализацию для интерфейса в компаил таиме и подставить
так ведь вроде никак. скаламета с синтакс-tree только работает. максимум что умеет это класс+компаньон. посмотри обычные макросы для этого, хотя возможно их тоже не хватит. тогда можно плагин к компилятору навернуть - он довольно легко пилится и ты можешь после любой фазы запуститься - там уже точно все будет доступно

Oleksandr
19.03.2017
12:17:28
пробежаться по программе в духе scalafix, разве что

Mikhail
19.03.2017
12:17:31
технически никто не мешает тебе classpath прошерстить ж
у тебя нет класспафа. на этапе скаламеты - ты не знаешь, какие еще классы будут val runsAfter = List("typer") - вот сразу после этого скаламета работает. typer это шаг №4 в скалац из 24 шагов)

технически никто не мешает тебе classpath прошерстить ж
технически ты можешь любой джарник сам прошерстить и вычленить оттуда все классы и проверить родителей - если очень прям хочется

однако задачка - "фейлится если есть больше одной реализации интерфейса" - так себе - какая-то костыльная. архитектурно негодная

Mikhail
19.03.2017
12:20:52
какбы все так делают
кто все? соседи по парте?

Nick
19.03.2017
12:21:02
да любой di

нашел два кандидата - вались

KrivdaTheTriewe
19.03.2017
12:24:11
или делай раунд робин между вызовами

Mikhail
19.03.2017
12:24:38
нашел два кандидата - вались
ты хочешь di в компайл тайм?

Oleksandr
19.03.2017
12:24:56
походу семантикапи пока так не умеет

Nick
19.03.2017
12:25:14
но не совсем di

Oleksandr
19.03.2017
12:26:32
но рефлект 100% умеет, заюзай его

Mikhail
19.03.2017
12:26:40
походу семантикапи пока так не умеет
в прошлый раз же выяснили, что семантик апи работает только после отработанной компиляции) т.е. надо сначало скомпилировать, чтобы появился дб и им можно было бы воспользоваться)

Google
Oleksandr
19.03.2017
12:27:33
можно компилить до, так сказать, компиляции

Mikhail
19.03.2017
12:27:39
ну да, что не так?
ну в процессе компиляции ты уже не сможешь им воспользоваться)

Nick
19.03.2017
12:28:18
но рефлект 100% умеет, заюзай его
хм, мне нужно эт в compile time

Mikhail
19.03.2017
12:28:39
хм, мне нужно эт в compile time
рефлект макросы - (обычные скаловские макросы) - работают в компайл тайм

Oleksandr
19.03.2017
12:29:23
макросы -- часть апи скаларефлекта)

Nick
19.03.2017
12:29:31
а, я думал ты про reflection

Oleksandr
19.03.2017
12:29:39
я про скаларефлект

Mikhail
19.03.2017
12:30:10
смогу)
каким образом ты сможешь это использовать при первичной компиляции?

Nick
19.03.2017
12:30:44
я так понял scala.meta как раз их замена)

Oleksandr
19.03.2017
12:31:19
каким образом ты сможешь это использовать при первичной компиляции?
делая две компиляции, фейковую с стабами для дб, и потом нормальную это первое, что пришло в голову, наверняка есть покрасивее подход

Mikhail
19.03.2017
12:31:21
я так понял scala.meta как раз их замена)
нет. она если только в следующей жизни станет их заменой)

Oleksandr
19.03.2017
12:31:48
я так понял scala.meta как раз их замена)
скаламета сознательно не предоставляет кучу всего

Mikhail
19.03.2017
12:32:01
я тоже думал о двойной компиляции, но что-то попахивает это

Oleksandr
19.03.2017
12:32:55
Nick
19.03.2017
12:33:03
можно попробовать и при первичной

по факту мне эт нужно для того, чтобы либа юзалась как реализация некоторого api

Google
Nick
19.03.2017
12:34:12
не вариант

Mikhail
19.03.2017
12:35:38
мм compilation = { fakeCompile(); trueCompile() } :)
это уже не первичная компиляция. это по факту чек после компиляции, только с оверхедом на повторную компиляцию. в таком случае правильнее архитектурно запускать стороннюю задачу на чек скомпилированных классов

Oleksandr
19.03.2017
12:36:24
ну я согласен, что это уродливый костыль :) поинт в том, что цель достижима

Nick
19.03.2017
12:37:29
а через имплиситы не вариант?
для них нужен будет явный импорт

Vladimir
19.03.2017
15:41:37
В курсе по спарку val langs: List[String] =... def langSpread: Int = ... есть какой-то сакральный смысл делать список валом, а инт - дефом?

с учетом того, что и то, и другое придется по сети передавать

Vyatcheslav
19.03.2017
15:57:57
хз. Разве что в грейдере они наследуют класс StackOverflow и переопределяют значение через def (хотя зачем?). Попробуй на val заменить, интересно, что будет :) Думаю, что без разницы

V
19.03.2017
17:45:41
проясните плз

"Применение привычных операторов, при этом, на самом деле — вызов метода: a + b тождественно a.+(b)"

Admin
ERROR: S client not available

V
19.03.2017
17:46:00
как это a.+(b)?

вычитал, а допетрить не получается)

Oleksandr
19.03.2017
17:49:28
a.plus(b), здесь 0 разницы между "+" и "plus"

точка и скобочки опциональны (иногда) зачем так сделано -- uniform access principle

V
19.03.2017
18:21:32
В Scala арифметические операции это методы
я это понял, что нет примитивных типов, а все переменные это объекты классов, но вот написание а.+ это что значит что символ + это прямо такой метод у объекта?

V
19.03.2017
18:24:08
Да, scalac потом это в .plus$ преобразует
круто, спасибо, очень интересно

Alex
19.03.2017
18:32:05
интересно кстати про http://scala-miniboxing.org/

я смотрю автор доучился в EPFL и проект заглох?

Google
Aleksei
19.03.2017
18:34:54
ну так обычно и бывает с такими проектами-курсовыми =)

Alex
19.03.2017
18:36:18
так-то да но вроде полезная штука, обидно

Oleksandr
19.03.2017
18:36:28
я смотрю автор доучился в EPFL и проект заглох?
afaik он переедет в дотти линкер

Alex
19.03.2017
18:36:34
хотя вроде в дотти грозятся что-то сделать ага

V
19.03.2017
19:04:55
посмотрел видео на сайте http://scala-miniboxing.org/, и возник вопрос. производительность выросла, чтож там такое внутри минибокса, что он такой результат дает... почему для того чтобы скала быстрее работала написали минибокс, а разработчики скала не возьмут эти улучшения в оф релиз?

Oleksandr
19.03.2017
19:09:38
AFAIK, там спекулятивные эвристики, которые иногда улучшают, а иногда ухудшают

собсно "в оф релиз" оно и делается -- гуглить "dotty linker"

Mikhail
19.03.2017
19:10:35
я это понял, что нет примитивных типов, а все переменные это объекты классов, но вот написание а.+ это что значит что символ + это прямо такой метод у объекта?
явного разделения как в яве - да нет. но под капотом везде где компилятор может - он старается использовать примитивы. хотя его маниакальное стремление иногда приводит к дополнительным операциям бокс-анбокс) несмотря на то, что a + b на определенном этапе компиляции в дереве будет представлено как a.plus(b) - на выходе в байткоде будет ALOAD + IADD - без вызова метода plus.

Oleksandr
19.03.2017
19:16:00
спасибо, я уже поставил sbt, хочу посмотреть в живую
если что, удобнее всего байткод скалы смотреть в репле, через :javap <your_class/method>

Mikhail
19.03.2017
19:17:13
если что, удобнее всего байткод скалы смотреть в репле, через :javap <your_class/method>
мне в идее проще. там есть плагинчик show bytecode - общего назначения)

V
19.03.2017
19:31:44
мне в идее проще. там есть плагинчик show bytecode - общего назначения)
вот говорят что IDE вообще для скалы не особо надо, и мне стало интересно, а если хочешь посмотреть код родительского класса? в той же идее это удобно, зажал кнопку(вроде ctrl или shift), и ткнул в класс, и все раскрылось..

Mikhail
19.03.2017
19:32:50
всегда есть люди, которым блокнота за глаза

но если выбирать ide, то лучше идеи под скалу ничего нет. хотя если вспомнить первые релизы скалы - тогда лучшим был эклипс)

V
19.03.2017
19:43:32
подскажите что делать ? установил sbt, запустил sbt.bat. Пошла загрузка файлов, и прервалось с ошибкой, из которой я понял что надо было запускать с правами администратора. посмотрел ошибку и закрыл консоль, решил что сейчас запущу sbt с правами администратора и все загрузится как надо, а оно не грузится теперь, запускает консоль sbt, но такое ощущение что скрипт до конца неотработал. .

Mikhail
19.03.2017
19:50:28
так оно в консоль должно тебе ошибкой плюнуть. но полный лог тоже где-то есть. не припомню, чтобы он понадобился когда-нибудь

V
19.03.2017
19:50:32
именно потому что я не могу выполнить команду sbt в рандомной директории, я подумал что что-то не до конца установилось. в частности переменная PATH

Mikhail
19.03.2017
19:51:11
да, в паф надо добавить путь к папке где батник лежит ( не сам батник)

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