@scala_ru

Страница 580 из 1499
Nick
27.03.2017
14:02:30
и не обязательно по всем нодам ходить

Nick
27.03.2017
14:03:15
И?
ну откуда O(n)

Aleksey
27.03.2017
14:05:23
ну откуда O(n)
У Node в DOM плоский список детей. Мы можем представить это дерево, как список таплов где первый элемент это мм. показатель вложенности.

Google
Mikhail
27.03.2017
14:05:59
Алгоритм рассчета дифа работает за O(n), проблема только в аллокациях. Сейчас это сделано так что каждая нода, каждый атрибут аллоцирует объект. При исполнении самого алгоритма множественно алоцируются таплы, опшны, листы и так далее. Там чудовищный ресурс для оптимизации. Я собираюсь этим заняться, но позже. В какой-то момент рендеринг станет чуть ли не дешевле чем json-сгенерить на play-json каком-нибудь :)
я и плеем не пользуюсь) напомни, куда исчезнет общий обьем хранимого состояния на стороне сервера под каждую открытую страницу? и да - O(n) - это медленно. точечная мутация О(1) - гораздо быстрее) Чтобы обсуждать все пунтики с чувством, с толком, с расстановкой - без кружки виски не обойтись)

Vasily
27.03.2017
14:06:07
Алексей говорит о том, что надо по всему дереву пройти, чтобы дифф построить

Mikhail
27.03.2017
14:06:46
можно тебе в пример stackoverflow привести? у них дохера часто проблемы?)
конечно можно. свободу слова в чатике коком не запрещали)

Aleksey
27.03.2017
14:06:54
Ох телеграм.

Aleksey
27.03.2017
14:09:45
это O(logn)
Ну я конечно не специалист по оценке алгоритмов в био-о нотации, но если таплы одинаковой длинны (а они одинаковой дилнны в моем случае), то это n*k, а k вроде бы как опускают.

Mikhail
27.03.2017
14:10:53
иногда O(1) медленнее, чем O(n)
это когда твоя единичка на самом деле n^2 ? ))

Google
Nick
27.03.2017
14:11:59
это когда твоя единичка на самом деле n^2 ? ))
нет) там же есть еще хитрожопыи cpu ) и иногда даже nˆ2 может оказаться быстрее)

Aleksey
27.03.2017
14:12:29
в том же реакте есть shouldcomponentupdate)
Иногда рассчитать shouldcomponentupdate дороже чем сделать дифф. Все зависит от реалиции. Представь что стоимость рассчета ченьжсета это просто N сравнений, где N это количество узлов DOM. Что такое полторы тысячи equals для современного процессора?

Mikhail
27.03.2017
14:15:28
нет) там же есть еще хитрожопыи cpu ) и иногда даже nˆ2 может оказаться быстрее)
пренебречь, вальсируем. такие граничные кейсы, при которых это имеет место быть можно даже в слух не упоминать

Nick
27.03.2017
14:15:52
кстати у того же реакта пишут, что O(nˆ3)

?Ivan
27.03.2017
14:16:22
Nick
27.03.2017
14:16:40
exactly

Aleksey
27.03.2017
14:17:07
кстати у того же реакта пишут, что O(nˆ3)
Кубическая сложность? Не верю.

Nick
27.03.2017
14:17:17
Кубическая сложность? Не верю.
https://facebook.github.io/react/docs/reconciliation.html

Aleksey
27.03.2017
14:17:25
Я сейчас попробую примерчик написать.

Nick
27.03.2017
14:17:33
вру

у них O(n) тож

Aleksey
27.03.2017
14:17:40
Да, врешь.

Nick
27.03.2017
14:18:06
я понял откуда O(n) берется, ты ж только по изменениям бежишь

а не по всему дереву

Aleksey
27.03.2017
14:20:00
> If we used this in React, displaying 1000 elements would require in the order of one billion comparisons. This is far too expensive. Instead, React implements a heuristic O(n) algorithm based on two assumptions: > > 1. Two elements of different types will produce different trees. > 2. The developer can hint at which child elements may be stable across different renders with a key prop.

я беру только первое предположение, но этого хватает.

Google
Nick
27.03.2017
14:20:31
я ж написал выше)

Oleg
27.03.2017
14:24:19
Кубическая сложность? Не верю.
Здесь имеется в виду алгоритм вычисления оптимального диффа

Навроде расстояния левенштейна

т.е. имея деревья [1, [2, 3], 4] -> [1, 4, [2, 3]], алгоритм поймёт, что нужно поддеревья поменять местами

Yuriy
28.03.2017
04:09:40
Привет всем, кто-нибудь знает возможно ли включить логи для 'akka-http', а не только лишь акторов 'akka'? Например 'akka.loglevel = DEBUG'.

Aleksey
28.03.2017
05:58:52
Олег Бунин хочет сделать студию для подкастов на РИТ++ https://www.facebook.com/oleg.bunin/posts/1472543066120713. Напишите туда, если слушаете Скалалаз.

Mikhail
28.03.2017
07:06:15


Viacheslav
28.03.2017
12:13:27
Посоны превед! Банальный вопрос: вот есть у меня 3 микросервиса работают себе все хорошо. В один прекрасный момент юзер меняет настроечку приложения и надо эту настройку пропихнуть во все сервисы. Варианты: берем какой-нибудь consul/zookeeper и храним там настройки, каждый раз приложение читает настроечки оттуда и все ок. Делаем какой-то механизм который событийно уведомляет сервисы о изменившихся настройках. Кто как у себя реализовывает?

Daniel
28.03.2017
12:14:06
Дёргаем консул раз в 5-10 секунд, полёт нормальный

Alexey
28.03.2017
13:11:21
стрим настроек через консул и пересоздание при изменении выглядит норм

Artem
28.03.2017
13:14:16
ну или динамические настройки аля как сделано в archarius

Artem
28.03.2017
13:14:34
которые колбеками обновляются

Denis
28.03.2017
13:26:42
Есть тайп класс для штук которые умеют xmap[B](fa: F[A])(ab: A => B, ba: B => A): F[B] делать?

Daniel
28.03.2017
13:27:40
Invariant

Denis
28.03.2017
13:27:57
Invariant
Точняк

спасибо

Viacheslav
28.03.2017
13:32:01
ну или динамические настройки аля как сделано в archarius
Спасибо! Архариус это огонь, то что надо. Уже начал свой велик ваять а тут уже готовое

Алексей
28.03.2017
14:01:28
Привет, может кто-нибудь сталкивался в Spark с такой фигней, отрабатывает StringIndexer/VectorAssembler и на 199(из 200) тупо залипает, при этом shuffle write постоянно растет, пока не исчерпает все доступное место или не будет убит раньше, причем не зависит от размера исходного набора. Даже не пойму куда копать.

Alexandr
28.03.2017
18:15:49
Чем отличается State от Lens и Prism? У меня каша в голове :(

Google
Alex
28.03.2017
18:24:06
state это разновидность автомата Мили, а линзы - автомата Мура

линзу можно перегнать в State, а назад нет

Admin
ERROR: S client not available

Alex
28.03.2017
18:25:26
def getS[S,A](l: Lens[S, A]): State[S,A] = State(s => (l.get(s), s)) def setS[S,A](l: Lens[S, A], a: A): State[S,Unit] = State(s => (l.set(s, a), ()))

Alexandr
28.03.2017
18:34:28
Спасибо!

Nikolay
29.03.2017
08:50:41
https://twitter.com/propensive/status/846683941604077569

Dmitriy
29.03.2017
09:11:13
Подскажите нубу. Задача - написать веб-морду к консоли. Вводишь команды, они передаются в шелл, шелл даёт вывод и это передается обратно на страницу. Сделал частично через sys.process "!!" Но что делать с выводом, который требует ответа? Например. Ввожу ssh root@8.8.8.8 . Сервер запрашивает пароль. Как вывести пользователю на страницу запрос пароля и как потом его передать в поток шелла

Юрий
29.03.2017
09:18:40
а в чём проблема то собственно? Юзай любые подходящие js штуки для ввода пароля. Как юзер введет - передашь в консоль

Dmitriy
29.03.2017
09:20:00
Первая проблема в том, как получить инфу о том, что консоль требует ввода

Aleksey
29.03.2017
09:23:34
Первая проблема в том, как получить инфу о том, что консоль требует ввода
По тему тексту что ты принимаешь через out. На пример если пришло "Enter password:\n" ты начинаешь писать in.

Mikhail
29.03.2017
09:37:54
Подскажите нубу. Задача - написать веб-морду к консоли. Вводишь команды, они передаются в шелл, шелл даёт вывод и это передается обратно на страницу. Сделал частично через sys.process "!!" Но что делать с выводом, который требует ответа? Например. Ввожу ssh root@8.8.8.8 . Сервер запрашивает пароль. Как вывести пользователю на страницу запрос пароля и как потом его передать в поток шелла
Нужно просто прокси ин-аут организовать. Все, что печатаешь на клиенте писать в out, все что читаешь из in запущенного процесса - отдаешь и отображаешь на клиенте. Больше ничего и не нужно. Можно просто баш дальше запустить в постоянку и с ним работать. Проксику совершенно необязательно знать, ждет там кто-нибудь что-нибудь или нет.

Kirill
29.03.2017
09:38:47
посмотри sys.process.ProcessIO

Mikhail
29.03.2017
09:38:51
Но для этой задачи уже немало все понаделали. На скале есть смысл это делать только, если знаешь зачем оно и чем готовое не подходит)

Kirill
29.03.2017
09:38:57
ему можно передать обработчики in/out

Dmitriy
29.03.2017
09:39:42
Есть примеры библиотек? Искал и не нашел ничего.

Но для этой задачи уже немало все понаделали. На скале есть смысл это делать только, если знаешь зачем оно и чем готовое не подходит)

Для упрощения работы с shell видел только ammonite

Mikhail
29.03.2017
09:40:17
Есть примеры библиотек? Искал и не нашел ничего.
на скале? не знаю. просто ищи javascript ssh, javascript terminal - куша реализаций

Dmitriy
29.03.2017
09:40:29
Да, именно на scala

Mikhail
29.03.2017
09:40:30
тебе задачу решить или со скалой поиграться?

Google
Mikhail
29.03.2017
09:42:09
в любом случае тебе надо понять, что твоя прослойка - она просто прослойка. которая запускает процесс и работает как передаст с его ин-аут - ничего более

Dmitriy
29.03.2017
09:42:42
Ну вот пока обсуждали, у меня вроде начало укладываться

Вобщем всем спасибо, пока пойду пробовать

Юрий
29.03.2017
10:15:08
https://github.com/yudai/gotty все уже придумано )
Чего только не придумают

Алексей
29.03.2017
10:16:03
там правда только ANSI кодировка, но в целом норм, даже VIM и тп можно запустить и будет норм работать.

Dmitriy
29.03.2017
10:17:09
Спасибо, но это Go. Нужна Scala, но поразбираюсь, может получится что перенять

Denis
29.03.2017
10:23:17
https://github.com/yudai/gotty все уже придумано )
Gotty это компилятор из dotty в go?

Oleg
29.03.2017
10:23:23
Алексей
29.03.2017
10:34:49
Gotty это компилятор из dotty в go?
это go-tty, проброс tty в браузер через web сокет

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