@scala_ru

Страница 929 из 1499
Daniel
10.09.2017
20:04:07
уточни сразу задачу

дефолтный ответ параллелить самой аккой, например через роутер

Anatoliy
10.09.2017
20:05:11
просто математические вычисления, если получен в итоге результат true - его надо отдать, если нет - думаю вернуть None и всё

Google
Anatoliy
10.09.2017
20:05:43
дефолтный ответ параллелить самой аккой, например через роутер
а можно носом ткнуть что почитать если не сложно? акку пробовал но именно на уровне просто запуска актора и всё

Daniel
10.09.2017
20:06:35
http://doc.akka.io/docs/akka/current/scala/routing.html#routing

имхо, получится подобие форкджоин пула на акторах =)

Anatoliy
10.09.2017
20:08:07
Спасибо) а подобие - это плохо?

Daniel
10.09.2017
20:10:54
нет, на акторах скорее всего меньше проблем с отладкой будет, но зато будет оверхед чтобы распараллелить вычисления их надо будет дробить на куски и отправлять куски в разные акторы ForkJoinPool примерно так и работает со своими Task -ами

Anatoliy
10.09.2017
20:16:22
А вроде в акторах можно сделать так что бы отправлялось по одному и тому же адресу но при этом были потоки и возможность параллельной работы? Типа там в конфиге как раз просто указать и всё? Или это оно и есть? Я сейчас роуты имею в виду...

Daniel
10.09.2017
20:19:40
акторы абстрагируют тебя от потоков (пока ты сам их не притащешь например через Future) с роутером ты пишешь роутеру, он уже раскидывает вычисления по рабочим акторам (роутер настраивается либо в коде либо через конфиг) вероятно тебе предстоит озаботиться вопросом а куда рабочие акторы пошлют результат

Artem
10.09.2017
21:15:50
Вы уверены что вам для этой задачи нужна akka?

Mikhail
11.09.2017
05:15:06
Для такой задачи точно не нужна

Anatoliy
11.09.2017
09:00:51
разбей на 100 кусков, запихни в вектор или лист, сделай ,coll.par.map(calcPart).foldLeft(...)(aggregateResult)
Эм... весь прикол в том что я просто не понял что вы сейчас написали :) Точнее понял только мап, остальное - нет(

Oleg
11.09.2017
09:01:40
Эм... весь прикол в том что я просто не понял что вы сейчас написали :) Точнее понял только мап, остальное - нет(
В скалке есть параллельные версии коллекций, они могут запускать операции типа map в кучу параллельных потоков

Google
Oleg
11.09.2017
09:02:09
Превращается обычная коллекция в параллельную, если такая есть, методом .par

Поэтому если распараллеливание требуется очень простое

Типа разбить работу на n кусков, потом собрать результат, это можно сделать, не выходя из scala library

Anatoliy
11.09.2017
09:02:49
просто получается что мне надо примерно 500 млн записей пихнуть сначала полностью в лист и только потом считать?

Oleg
11.09.2017
09:03:15
Думаю, лучше разбить на 500 кусков по миллиону или типа того

Alexander
11.09.2017
09:03:45
параллельные коллекции вроде выпиливать будут, не?

Anatoliy
11.09.2017
09:04:00
calcPart это метод которым я считаю, так? а foldLeft(...)(aggregateResult) что тогда?

Oleg
11.09.2017
09:04:25
calcPart это метод которым я считаю, так? а foldLeft(...)(aggregateResult) что тогда?
ну у тебя получится 500 результатов, потом ты пробегаешься и собираешь

параллельные коллекции вроде выпиливать будут, не?
Ну их наверняка в отдельный какой-то модуль выпилят типа как xml и рефлекшн

Nikolay
11.09.2017
09:05:10
параллельные коллекции вроде выпиливать будут, не?
слышал что вроде бы вынесут из stdlib

Oleg
11.09.2017
09:05:39
Потому что наверняка потом потребуется читать лениво инпут из файлов и как-то фейлы\эксепшны обрабатывать, не перезапуская всю джобу

Aleksey
11.09.2017
09:09:04
calcPart это метод которым я считаю, так? а foldLeft(...)(aggregateResult) что тогда?
Это левая свертка. foldLeft(начальное_значение_аккумулятора) { case (текущее_значение_аккумулятора, элемент_коллекции) => текущее_значение_аккумулятора + элемент_коллекции }. На пример List(1,2,3,4,5).foldLeft("") { case (acc, x) => acc + x.toString } будет "12345"

Anatoliy
11.09.2017
09:09:14
ну фейлов там не будет по идее, просто математические вычисления. все фейлы проверяются до этого так что внутри просто считаем числа, всё если получится то что ищем - тогда отдаем результат, возможно в другой актор который уже и будет писать если нет - тогда нет

Gregory
11.09.2017
09:10:17
Парни, а подскажите кое-что по акке: если мы делаем actorSelection с вайлдкардом, есть ли возможность сделать что-то типа resolveOne, но чтобы получить сразу все акторрефы, которые заматчатся?

Oleg
11.09.2017
09:10:59
спасибо, вроде понятно, хотя зачем оно там надо - пока непонял, или это способ склеить данные из ответа?
способ склеить результаты X параллельных вычислений, получив итоговый результат

Anatoliy
11.09.2017
09:11:21
Спасибо, сейчас попробую)

Oleg
11.09.2017
09:12:03
но опять же, если нужен нормальный мемори-футпринт придётся делать стримы, потому что лениво-параллельных коллекций нет в скале

Aleksey
11.09.2017
09:13:13
спасибо, вроде понятно, хотя зачем оно там надо - пока непонял, или это способ склеить данные из ответа?
Да. Если после мапа тип не меняется, то можно юзать reduce. Получается map().reduce(). Редьюс это как фолд, только без начального значения и может выполняться параллельно. На пример List("1", "2", "3").map(_.toInt).reduce(_ + _) == 6

Google
Aleksey
11.09.2017
09:15:28
но опять же, если нужен нормальный мемори-футпринт придётся делать стримы, потому что лениво-параллельных коллекций нет в скале
Есть стримы станадартные, они ленивые. Из них можно брать чанками и эти чанки параллельно считать. Но это не точно -- не смотрел в это дело уже лет пять.

Oleg
11.09.2017
09:17:07
Ivan
11.09.2017
09:17:32
Подскажите пожалуйста. На курсере курсы scala fp design, scala parrallel programming, spark . Можно ли к ним выполнять задания в бесплатной версии курса?

Aleksei
11.09.2017
09:17:48
да

Ivan
11.09.2017
09:18:18
спасибо

Aleksey
11.09.2017
09:18:36
Нет. Всё просто. Для стрима параллельная версия - это ParVector https://scastie.scala-lang.org/Odomontois/eym3tXSsTYW7Mndr9mOroQ
Я имею в виду, что чанки берем последовательно, но обрабатываем их содержимое параллельно.

Aleksey
11.09.2017
09:22:55
Типа Stream[ParSeq[JobInput]] ?
Сейчас попробую записать.

Anatoliy
11.09.2017
09:28:08
А можно как-то вот такое запараллелить? for (i <- 0 to factorial(j)) { result(sq, i, j) } sq - List[CaseClass]

Просто по идее - такое должно быть достаточно легко параллелить...

Хотя вроде сделал, действительно просто :)

Aleksei
11.09.2017
09:38:15
у рэнжа вроде есть метод par, можно сделать (0 until j).par.map { j => ... }

такое самое простое

Anatoliy
11.09.2017
09:38:30
for (i <- (0 to factorial(j)).par) { вот так сделал

аналогично ведь?

Aleksey
11.09.2017
09:39:35
В общем что то в таком духе. Без стримов но с обычным итератором def doMap(c: Char) = c.toInt def doReduce(a: Int, b: Int): Int = a + b val WindowSize = 1024 val xx = scala.io.Source.fromFile(new java.io.File("hello.txt"), WindowSize) .iter .grouped(WindowSize) .map(xs => xs.par.map(doMap).reduce(doReduce)) .reduce(doReduce)

Но сдается мне что пять лет назад я все такие не стандартную библиотеку юзал, а что-то другое.

Ivan
11.09.2017
13:59:19
Не подскажете где еще кроме hh.ru , мой круг да scala jobs в телеграмме глянуть можно позиции для scala junior ? В идеале remote/partime.

Bulat
11.09.2017
14:00:34
Линкедин

Google
Ivan
11.09.2017
14:15:54
ткс ?

KrivdaTheTriewe
11.09.2017
14:16:08
тиньков кредитные системы

Nick
11.09.2017
14:16:28
Они ж вроде не Ткс больше

Да и там нету ремоута

KrivdaTheTriewe
11.09.2017
14:16:44
ну желательно же ремоут

Ivan
11.09.2017
14:17:39
ткс только офис

KrivdaTheTriewe
11.09.2017
14:18:05
ну врядли ты найдешь джуна на ремоут

Ivan
11.09.2017
14:18:55
Опыт разработки есть. на скале нету.

KrivdaTheTriewe
11.09.2017
14:20:02
@optician_owl @odomontois , они искали вроде ( они ткс ) джунов, но у них требование, пройти курс

поэтому всё просто, проходишь курс и идешь на собеседование

Daniel
11.09.2017
14:20:40
Я закрыл уже вакансию

KrivdaTheTriewe
11.09.2017
14:20:46
Daniel
11.09.2017
14:21:07
Олег может ищет еще

Валерий
11.09.2017
14:22:09
Опыт разработки есть. на скале нету.
та же фигня, только я еще пока на этапе чтения материалов по скале

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

т.к. есть большой опыт в разработке в целом

Sergey
11.09.2017
14:30:10
поэтому всё просто, проходишь курс и идешь на собеседование
Откликался с сертификатом — не позвали даже на интервью.

Или имеется в виду фулл специализация на курсере? (5 курсов)

Daniel
11.09.2017
14:31:29
это у Олега было требование про курсы, по-моему первые 3 нужно

KrivdaTheTriewe
11.09.2017
14:31:40
первые три, да

Google
Олег
11.09.2017
14:45:54
Mr.White
11.09.2017
15:25:54
это у Олега было требование про курсы, по-моему первые 3 нужно
Речь об этих курсах https://www.coursera.org/specializations/scala ?

Daniel
11.09.2017
15:26:17
да

Mr.White
11.09.2017
15:26:29
спасибо

Vyacheslav
11.09.2017
16:24:59
@salimonov удаленную работу можно найти на https://www.upwork.com/ или https://www.glassdoor.com/

Aleksei
11.09.2017
16:29:32
ну есть чат с вакансиями, он в описании этой группы

Mr.White
11.09.2017
16:39:17
@salimonov удаленную работу можно найти на https://www.upwork.com/ или https://www.glassdoor.com/
Ага, я в курсе, просто любопытно было как в Тинькофф решили фильтровать кандидатов по прохождению курсов.

Pavel
11.09.2017
17:34:00
в Скайп чате был чувак как-то

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