@scala_ru

Страница 407 из 1499
Nikolai
11.01.2017
14:25:15
чет я не думаю что иммутабельная мепа будет быстрее мутабельной. А вот мепу на массив заменить - это вот должно помочь

Oleksandr
11.01.2017
14:26:48
угу, массив на 100 элементов, и апдейтить

Google
Nikolai
11.01.2017
14:32:35
Нуу тут уж... если этих стрингов заранее известное количество - то проиндексировать и таки свести к массиву

KrivdaTheTriewe
11.01.2017
14:33:08
неизвестно (:

Nikolai
11.01.2017
14:34:28
Ну тогда хз

KrivdaTheTriewe
11.01.2017
14:35:09
Но вообще спасибо, попытаюсь сфолдить нормально

Nikolay
11.01.2017
15:16:06
А для чего запись?

Dmitry
11.01.2017
15:20:37
Нубский вопрос. Только начинаю писать на скале. Делаю проект, в котором нужно что-то типа Jupyter Notebook с фиксированными типами ячеек. Каждый тип ячейки отличается набором входных параметрои и типом результата вычислений. Подскажите, так бы вы смоделировали типы данных в подобной задаче или есть какие-то еще фишки в подобном случае? /** * @tparam P parameters type * @tparam R result type */ sealed trait Cell[P, R] { def id: String def parameters: P /** * Either result or error */ def result: Either[R, String] } // Cell type A final case class ParamsA(param1: Long, param2: String) final case class ResultsA(result: List[Double]) final case class CellTypeA(id: String, parameters: ParamsA, result: Either[ResultsA, String]) extends Cell[ParamsA, ResultsA] // Cell type B final case class ParamsB(param1: Double) final case class ResultsB(result: String) final case class CellTypeB(id: String, parameters: ParamsB, result: Either[ResultsB, String]) extends Cell[ParamsB, ResultsB]Спасибо.

Andrey
11.01.2017
15:29:41
неизвестно (:
а откуда оно тебе приходит?

folex
11.01.2017
15:30:55
Не встречал кода непонятнее чем Twitter FInagle и все связанное. Просто >_<

folex
11.01.2017
15:31:49
Хорошо, кода на Scala.

Nikolay
11.01.2017
15:32:23
А что именно там?

folex
11.01.2017
15:32:34
есть конечно всякие шейплесы, но я о том что черт ногу сломит в этом финагле, и особенно в трифтовых сервисах :(

Google
folex
11.01.2017
15:33:02
@rockjam ну на самом деле тут на каждом шагу всякие сложночитаемые решения

https://gist.github.com/folex/931d6befbf4bbd0bd3051f2aafe37072 вот например то что заставило меня выразить негодование

Andrey
11.01.2017
15:35:37
@krivdathetriewe посмотри на реализацию в спарке. правда там RDD, но идею можно перенести на какой-нибудь стрим или итератор https://github.com/apache/spark/blob/f830bb9170f6b853565d9dd30ca7418b93a54fe3/core/src/main/scala/org/apache/spark/rdd/DoubleRDDFunctions.scala#L123

Nikolay
11.01.2017
15:39:53
folex
11.01.2017
15:40:00
да, там беда

и там везде так

Vadim
11.01.2017
15:41:04
это только на клиентах

ну точнее сервисах

folex
11.01.2017
15:41:49
https://github.com/twitter/finagle/blob/develop/finagle-thrift/src/main/scala/com/twitter/finagle/Thrift.scala

Vadim
11.01.2017
15:41:56
ну по мне это самый страшный кусок, остальное не особо смущает

folex
11.01.2017
15:42:01
не клиентах и на серверах там везде трешак, нет?

Vadim
11.01.2017
15:42:10
угу

Anatoliy
11.01.2017
15:51:30
Народ, а можно глупый вопрос по typesafe config? Что бы в исходники не лезть. Когда я читаю конфиг и пользуюсь полученными значениями, я же всего 1 раз конфиг читаю, так? Или каждый раз идет новое обращение к файлу?

Mikhail
11.01.2017
15:54:56
ConfigFactory.load() - неспроста наверное)

Anatoliy
11.01.2017
16:06:07
ConfigFactory.load() - неспроста наверное)
да я уже понял и разобрался, прошу прощения, действителньо дурацкий вопрос, задал и через секунд 10-20 уже сам всё понял :( Опять поспешил(...

KrivdaTheTriewe
11.01.2017
16:12:19
а сталкивались с тем, что идея конфиги кеширует ? и не обновляет?

Oleg
11.01.2017
16:15:58
а сталкивались с тем, что идея конфиги кеширует ? и не обновляет?
сталкивался с тем, что не редеплоит ресурсы, если параллельно что-нибудь sbt скомпилить, rebuild project помогает

Vladimir
11.01.2017
16:49:58
KrivdaTheTriewe
11.01.2017
16:54:34
https://habrahabr.ru/company/mailru/blog/319194/

Dmitry
11.01.2017
16:56:40
Едва ли есть фишки, т.к. по сути получается что ячейка она как функция. Вопрос в том, что с ними будет твориться впоследствие
Спасибо за ответ. Эти объекты потом будут ходить между сервером и клиентом и будут ходить всякие события аля SetParameters, или CellUpdated... Я ожидаю определенных сложностей с типами, т.к. у меня параметризованный основной тимп, но пока до этого момента не дошел.

Google
Dmitry
11.01.2017
16:58:26
uPickle у меня вроде с такой структурой пока в лоб работает. Я добавил границы на аргументы типа и общих предков для параметров и результатов. Типа так:

sealed trait CellParameters sealed trait CellResult sealed trait Cell[+P <: CellParameters, +R <: CellResult] { ...

И тогда корректно работает: import upickle.default._ read[Cell[CellParameters, CellResult]](write(someCellInstance))

Vladimir
11.01.2017
17:01:58
Думаю, если конкретный тип ячейки вытаскивать из сериализованных данных не придется, то проблем не будет

Dmitry
11.01.2017
17:04:54
Ок, спасибо! Я чувствую что если реально проблемы будут, то когда это все меняться под действием событий будет (монады - не монады, пока до конца не въехал в это все :) ). А сейчас вроде все понятно, начинает в голове укладываться.

Anatoliy
11.01.2017
17:20:51
Народ, а есть возможность получить ConfigObject не через ConfigFactory.load().root() ? Оно возвращает еще кучу параметров которые мне не нужны в конфиге, их можно как-то убрать?

Nikolay
11.01.2017
17:23:43
Бери только нужные

Anatoliy
11.01.2017
17:24:49
как? я не хочу всё пихать в какой-либо main общий. Да и если запихнуть - он выдаст то что внутри, а мне надо вместе с ним, я хочу это потом в файл записать..

Т.е. вот у меня есть intVal1 = 3 Я меняю значение на 123, теперь мне надо в конфиг-файле перезаписать это значение. Как взять только те данные что находятся в конфиг-файле по-умолчанию - я не понимаю, есть root(), но он возвращает вообще всё, а мне нужно только то что лежит в конфиге....

Dmitriy
11.01.2017
17:27:53
ты хочешь менять конфиги из кода?

Anatoliy
11.01.2017
17:29:36
ты хочешь менять конфиги из кода?
У меня пользователь должен иметь возможность менять данные в приложении, типа логин, еще всякое разное, но при этом рестартать приложение нельзя. Я могу конечно взять тот же SQLite, но не уверен что это хорошая идея. А заставлять пользователя лезть в сами конфиги - не есть хорошо.

Так что да, хочу менять конфиг из кода.

Anatoliy
11.01.2017
17:30:25
Будет два конфига, внутренний по-умолчанию, и внешний. Если во внешнем что-то не заполнено - берется значение из внутреннего.

Dmitriy
11.01.2017
17:31:15
мы для такого consul kv используем, есть базовый конфиг, а все что может менятся в рантайме - в другой базе\сервисе

Nikolay
11.01.2017
17:31:16
Мне кажется что использовать для этого файловые конфиги - не самое лучшее решение

Anatoliy
11.01.2017
17:32:30
Мне кажется что использовать для этого файловые конфиги - не самое лучшее решение
А что лучше? приложение десктопное, всё у пользователя хранится. Данные обновляться будут редко, но - будут.

Dmitriy
11.01.2017
17:32:49
локальная БД

Anatoliy
11.01.2017
17:33:32
локальная БД
А в чем отличие будет от конфиг файла?

Dmitriy
11.01.2017
17:34:08
в том что приложение не надо рестартить и ты сможешь перезапрашивать рантайм конфиг в случае изменения данных

Google
Ivan
11.01.2017
17:34:39
бд

Anatoliy
11.01.2017
17:34:51
в том что приложение не надо рестартить и ты сможешь перезапрашивать рантайм конфиг в случае изменения данных
Так я и так это делать могу. А в случае с БД - это на каждое действие будет делаться запрос к ФС

например h2
чем лучше? с конфига один раз прочитали - и всё, оно в памяти. а с БД читать надо каждый раз. ну или возвращаемся к тому с чего начинали

Dmitriy
11.01.2017
17:36:32
пиши в другой файл тогда, сам будешь его перечитывать периодически

локальная БД это тоже локальный файл но с навернутой абстракцией для удобства работы

Anatoliy
11.01.2017
17:37:35
пиши в другой файл тогда, сам будешь его перечитывать периодически
так какая тогда разница в какой файл писать? для конфига есть возможность это удобно парсить уже, осталось просто создать сам конфиг файл. это и хочу узнать как делать

Dmitriy
11.01.2017
17:37:38
если не хочешь дергать базу каждый раз - закешируй до момента изменения, в чем проблема

Admin
ERROR: S client not available

Nikolay
11.01.2017
17:38:02
То что приложение десктопное и видимо для одного пользователя - хорошее уточнение. Тогда может и конфиг нормально подойдёт.

Anatoliy
11.01.2017
17:38:25
если не хочешь дергать базу каждый раз - закешируй до момента изменения, в чем проблема
в том что зависимости, нет там БД, и делать её только для пары десятков переменных - глупо, или нет?

Dmitriy
11.01.2017
17:38:52
http://stackoverflow.com/questions/25280040/what-is-a-good-way-to-implement-reloading-of-a-typesafe-config

Nikolay
11.01.2017
17:40:06
Посмотри функции в духе withFallback в typesafe config - там есть кажется возможность получить данные только из конкретного файла

Anatoliy
11.01.2017
17:40:35
http://stackoverflow.com/questions/25280040/what-is-a-good-way-to-implement-reloading-of-a-typesafe-config
ну так я это знаю и умею, мне надо выдрать ConfigObject потому что у него есть render который позволяет получить форматированный вывод что бы его в файл можно было запихнуть. А с ConfigFactore.load() мы получаем Config, котоырй в объект как я вижу переделывается через .root(), который возвращает еще кучу данных, котоыре мне и надо срезать.

Посмотри функции в духе withFallback в typesafe config - там есть кажется возможность получить данные только из конкретного файла
вот withFallback Как раз использую для объединения двух конфигов и получения текущего

хотя щас смотрю - возможно именно из за него оно и выдает кучу лишних данных, сеёчас буду проверять

Спасибо за подсказку

Ivan
11.01.2017
17:44:09
ты можешь загрузить любой другой конфиг отдельно насколько я помню, там есть другие функции для парсинга конфига не только .load()

Anatoliy
11.01.2017
17:45:22
ты можешь загрузить любой другой конфиг отдельно насколько я помню, там есть другие функции для парсинга конфига не только .load()
да, могу, я уже понял что ошибка в том что я объединял значения двух конфиг-файлов через Fallback, это не правильно

В общем если кому интересно. Ошибка была в том что ConfigFactore.load возвращает не только значения из конфиг файла, но и еще кучу данных. Соответственно либо не использовать load и грузить конкретно значения из нужного конфига, либо использовать config.root().withOrigin(defaultConfig.origin()).toConfig что даст аналогичиный результат

Google
Nikolay
11.01.2017
18:02:38
Ещё кстати ты можешь свой конфиг поместить под namespace "userConfig" например, и делать ConfigFactory.load.getConfig("userConfig")

Тогда тебе будет все равно, какие ещё конфиги были подгружены

Anatoliy
11.01.2017
18:04:28
Это тоже знаю. Сейчас пытаюсь понять как сделать кто бы комментарий оставался если слияние идет двух комментов или если изменяется существующее значение уже имеющее комментарий

Mikhail
11.01.2017
18:53:49
А зачем тебе менять комментарий? Странно как-то. Вобще не трогай дефолтный конфиг. Его используй в фолбеке для ридонли

KrivdaTheTriewe
11.01.2017
18:54:48
Действует ли у вас запрет на использование scalaz в команде?

Mikhail
11.01.2017
18:54:51
Никто не мешает использовать отдельный файл пользовательский который в который ты будешь писать. И есть отдельные методы parseFileOrString ( или как он там), чтобы конкретный файл(текст) парсить в конфиг и фолбеком подключать дефолт

Nikolay
11.01.2017
19:07:24
parseString помнится есть

Nikita
11.01.2017
19:09:16
Ну не то что запрет, но крайне не одобряется

Он только в одном месте используется, для валидации json

Весьма удобно получается кстати

Wystan
11.01.2017
19:10:56
индусы, использующие клейсли

KrivdaTheTriewe
11.01.2017
19:27:19
Ну все таки

Про скалази

Anton
11.01.2017
19:42:05
Как написать реактивный драйвер к бд? ) Хочу попробовать к тарантулу написать, не знаю как подступиться

Andrey
11.01.2017
19:44:34
Michael
11.01.2017
20:09:46
Ну в целом совет рабочий ??

Alex
11.01.2017
20:10:18
рабоче-крестьянский

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