@scala_ru

Страница 686 из 1499
Alex
22.05.2017
10:54:06
S S S S a

Nikolay
22.05.2017
10:54:36
s3a больше нравится

Arcady
22.05.2017
12:11:03
кто-нибудь кстати пользуется обновленным scastie?
Переключил бэкенд на scala.js, хелловорлд завелся. Но мееедлеенноооо.

Google
Nikolay
22.05.2017
12:52:21
circe может из коробки сделать декодинг в shapeless-овский record? судя по документации и тестам в circe все должно работать, но не компилится

https://github.com/circe/circe/blob/master/modules/tests/shared/src/test/scala/io/circe/shapes/ShapelessSuite.scala#L48

Dmitry
22.05.2017
13:27:06
ребя, подскажите структуру данных для хранения сообщений приложения типа чатик

Daniel
22.05.2017
13:27:56
Домашка?)

Dmitry
22.05.2017
13:28:29
собеседование на junior

Daniel
22.05.2017
13:28:53
давай как на SO пишешь конкретную проблему, её пытаемся разобрать а то докапываясь до требований может всё перевернуться

Aleksey
22.05.2017
13:28:55
ребя, подскажите структуру данных для хранения сообщений приложения типа чатик
Мы в одном проекте хранили в виде свусвязного списка бакетов по N сообщений. Бакеты отденльно индексировались полнотекстовым поиском.

Oleksandr
22.05.2017
13:29:23
собеседование на junior
https://github.com/donnemartin/system-design-primer/blob/master/README.md

там много всякого

Aleksey
22.05.2017
13:31:01
а хеш сет не рассматривали?
При чем тут хэшсет?

Daniel
22.05.2017
13:32:13
При чем тут хэшсет?
Не, не так Почему хэш сет?

Google
Alex
22.05.2017
13:32:20
блокчейн

Dmitry
22.05.2017
13:32:20
При чем тут хэшсет?
подгружать историю сообщений

блокчейн
эфир? XD

Alex
22.05.2017
13:32:43
зато секурно

Daniel
22.05.2017
13:33:02
ну предположим у тебя есть такой хэш сет с сообщениями как ты будешь подгружать историю?

можно прям пример кода

Vladimir
22.05.2017
13:33:47
_.sort(_.createdAt) кривая рожа.жпг

Daniel
22.05.2017
13:35:45
_.sort(_.createdAt) кривая рожа.жпг
желательно чтоб Дмитрий сам пришел к каким то выводам вероятно в силу опыта ему нужны наводящие вопросы

Dmitry
22.05.2017
13:36:18
всем спасибо, ребята

Aleksey
22.05.2017
13:36:23
_.sort(_.createdAt) кривая рожа.жпг
Без троллинга давайте

Daniel
22.05.2017
13:39:58
подгружать историю сообщений
scala> val xs = collection.mutable.HashSet("10 msg", "2 msg", "5 msg", "3 msg") xs: scala.collection.mutable.HashSet[String] = Set(3 msg, 2 msg, 5 msg, 10 msg) scala> xs.head res3: String = 3 msg

для пятницы, кстати, норм чат будет)

Alex
22.05.2017
13:40:18
если без троллинга, то разновидности CRDT вроде часто используют

Daniel
22.05.2017
13:41:06
Вряд ли на позицию джуниора требуется распределенное решение

Вопрос скорее в конкурентном доступе к одному ресурсу

Aleksey
22.05.2017
13:45:40
У нас была какая тема. Наше хранилище сообщений для чатика должно было а) быстро, желательно за один поход в лоулевел-сторадж получить список сообщений б) быстро получать следующие экраны (скроллинг). в) искать сообщения полнотекстовым поискаом выводя их с контекстом и возможностью опять же поскроллить вверх-вниз. По этому поверх произвольного KV с поддержкой CAS мы накрутили двусвязный список списков по N сообщений.

scala> val xs = collection.mutable.HashSet("10 msg", "2 msg", "5 msg", "3 msg") xs: scala.collection.mutable.HashSet[String] = Set(3 msg, 2 msg, 5 msg, 10 msg) scala> xs.head res3: String = 3 msg
Звучит как идея для моднейшего стартапа за миллиард на пример. Чат где все сообщения вперемешку. Хэшчат.

Daniel
22.05.2017
13:47:52
Место где царит веселье и радость

Alex
22.05.2017
13:53:30
и хэш

Google
Dmytro
22.05.2017
14:03:24
Привет. Написал пост на Хабре по мотивам своего курса на Степике: https://habrahabr.ru/post/329176/

.
22.05.2017
14:10:32
Aleksey
22.05.2017
14:12:16
А сообщения в кейсклассах или сериализованы в json например?
В базе ве хранилось в json. Сами сообщения могли быть разного типа (наследовались от одного sealed trait). Например текст, стрикер, ну и всякие специфические вещи.

.
22.05.2017
14:15:47
В базе ве хранилось в json. Сами сообщения могли быть разного типа (наследовались от одного sealed trait). Например текст, стрикер, ну и всякие специфические вещи.
На Ваш взгляд следующий подход с кешированием оправдан? В бд хранить совсем древнее, свежие сообщения кидать кеш, а затем шедуллером дописывать в бд?

.
22.05.2017
14:21:40
Во многих базах свежие и так будут висеть в кэше
Т.е. если понадобится к ним обратиться это будет эквивалентно обращению в кеш?

Daniel
22.05.2017
14:22:31
да но всегда есть нюансы (как с любым кэшом) и для точного понимания (для приближения к этому) надо изучать уже конкретные базы

дьявол в деталях

KrivdaTheTriewe
22.05.2017
15:21:44
я сейчас наброшу, а есть бенчмарки горутин и правильно организованных скалафьюч ?

Nikita
22.05.2017
15:26:06
я сейчас наброшу, а есть бенчмарки горутин и правильно организованных скалафьюч ?
ну этот ваш го, у меня есть поинтереснее задачка. Если взять CRDT G-counter, и запустить 4 треда с ним которые будут его инкрементить и мержить в бекграунде, сможет ли такое решение обогнать те же 4 треда и расшаренный atomicLong?

Alex
22.05.2017
15:26:44
сомнительно

Denis
22.05.2017
15:26:57
чет сдается мне что нет

слишком много оверхеда ради i=i+1

Google
Nikita
22.05.2017
15:28:17
если каждый тред будет свою thread-local копию обновлять, и раз в секунду синхронизировать с другими

должно же быстрее быть чем CAS у atomicLong? или тут что-то хитрое должно быть?

.
22.05.2017
15:31:45
В LSM-tree подобный подход и используется.
К сожалению тогда не знал этого, пришлось велосипедить.

Vladimir
22.05.2017
15:35:46
должно же быстрее быть чем CAS у atomicLong? или тут что-то хитрое должно быть?
CAS же вроде на уровне процессорной инструкции реализуется, нативнее некуда

Nikita
22.05.2017
15:39:11
с одной стороны да, с другой где-то должно быть число тредов при котором CAS становится медленнее

надо будет написать небольшой бенч

для проверки гипотезы

Vladimir
22.05.2017
15:43:50
тут уже могут быть нюаньсики на уровне архитектуры проца, кмк: L2 кэш же шарится между ядрами, во всяком случае у некоторых intel, почему бы не выполнять CAS через него

и intel же рассказывают, что они контрибутят в jvm по части оптимизаций для своих процов

Aleksei
22.05.2017
16:43:34
А чо там Ибрагим то опять активизировался?

Daniel
22.05.2017
16:43:52
Оптимизации на уровне процов вам нужны будут примерно никогда хотя мож кто-то и работает в конторах, где стоимость оптимизации хардварно специфичного кода оправдывает все (с учетом того, что железо у вас будет меняться относительно быстро, чуть режем чем рождаются новые js фреймворки). Сегодня тюнили пропускную способность под одно железо, через полгода нам привезли новое с другими характеристиками. Возможны отдельные моменты связанные с нума и прочее но опять же, это требует понимания принципа, но не ковыряния в деталях. В jvm это спрятано глубоко, имеет специфичные реализации для разных архитектур, может меняться время от времени. Там свои оптимизации и ваши попытки что-то сделать на таком уровне не приведут к результату (с вероятностью около 1). Что вы можете делать. Мониторить ресурсы приложения, чтобы знать где проблема и принимать решения либо оптимизировать логику приложения, либо купить железа потому что оптимизировать дорого/некуда.

надо будет написать небольшой бенч
зависит от характера нагрузки писать бенч нужно сугубо под свой кейс

Aleksei
22.05.2017
16:48:09
пишет? )
Только что

Daniel
22.05.2017
16:49:27
https://github.com/olafurpg/scala-repos/blob/1225fa10eb67934d7c15fec745ceefe43005533b/repos/PredictionIO/data/src/main/scala/io/prediction/data/api/EventServer.scala#L334-L385 спрей роуты в хаскопитоновском стиле %)

Wystan
22.05.2017
16:58:45
Откройте реддит, там новости с каждым днем смешней и смешней

Aleksei
22.05.2017
16:59:06
А тебя не IVAN зовут?

Google
Wystan
22.05.2017
16:59:25
Не, иван -это не я.

Или все русские - иваны?

Aleksei
22.05.2017
16:59:40
а то знаете это самый крутой вопрос

do you know someone called IVAN, he is a scala developer?

Wystan
22.05.2017
16:59:58
Какой правильный ответ?

Ничо се. А чо еще спрашивает?

Ибрагим не работает на эту компанию я специально спрашивал

Aleksei
22.05.2017
17:00:58
я хз чо это он вдруг

типа удаленка есть туда сюда

хай лоад во все щели

Wystan
22.05.2017
17:01:15
А чо за контора?

Aleksei
22.05.2017
17:01:27
не говорит

Wystan
22.05.2017
17:01:38
Java?

Aleksei
22.05.2017
17:02:28
хз

завтра узнаем

но если четсно, то что то как то стремно

KrivdaTheTriewe
22.05.2017
17:06:43
Java?
scala

Aleksei
22.05.2017
17:06:57
А вот и Иван видимо )

Daniel
22.05.2017
17:07:08
или Ибрагим

KrivdaTheTriewe
22.05.2017
17:07:37
мне тоже пишет

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