
Andrew
16.07.2017
05:08:43

Дмитрий
16.07.2017
05:11:15
Я просто даже не ожидал такого трюка — я искал практический функциональный стек в жс, никогда бы не подумал что нужно было смотреть в эту сторону вместо всяких gcanti)
Тут будто под носом летающая тарелка приземлилась

Vladimir
16.07.2017
05:16:29

Google

Дмитрий
16.07.2017
05:20:41
Чтобы не вылетать со stack overflow
У тебя есть алгоритм, который описывается с помощью длинного ряда функций — purescript, ocaml реализации, просто фп в жс и так далее.
Если ты используешь стек, то играешь с огнём — рано или поздно ты обязательно вылетишь, плюс он потенциально выполняется бесконечно

Vladimir
16.07.2017
05:22:14

Дмитрий
16.07.2017
05:22:41
Если у тебя стек в виде простого плоского массива, то можно аккуратно выполнять его, останавливаясь в любом месте, можно оптимизировать его на лету, обобщать, менять, координировать, параллелизировать и так далее

Vladimir
16.07.2017
05:22:54
Это понятно

Дмитрий
16.07.2017
05:23:44
Просто нельзя полагать, нужно располагать
Тл;тр — они делают оптимизированный стек из функциональных языков
Fiber — это абстрактная единица вычислений, вызов функции в терминах жс

Vladimir
16.07.2017
05:25:59
Ну те у них по сути будет свой call-stack?

Дмитрий
16.07.2017
05:29:30
Да, но это само по себе довольно тривиально, минимальная имплементация у меня — строк сто.
У них он просто уже прокачан на приоритизацию, параллельные вычисления и всё остальное, то есть является прикладной, готовой к принесению профита штукой

Vladimir
16.07.2017
05:33:37
Интересно, как на это отреагирует деоптимищатор v8?

Дмитрий
16.07.2017
05:33:52
Очень рад

Vladimir
16.07.2017
05:38:10
Хотя ему вообще должно же быть пофиг, он конкретно за вызовами следит, а не за стеком

Google

Дмитрий
16.07.2017
05:38:11
const jsStack = f(f(f(f(f(f(d)))))))
Все функции выполняются разом, требуют всего внимания V8, потенциально готовы упасть
function fiber(stack, d) {
let result = d
for( const fn of stack ) {
result = fn(result)
}
return result
}
Плоский массив выполнения, в любой момент можно прерваться, остановиться, если ясно что данные больше не нужны и так далее

Vladimir
16.07.2017
05:39:45
Не, я говорил конкретно про ту часть, которая занимается реалтайм (де)оптимизацией

Дмитрий
16.07.2017
05:40:27
А, ну ему наверное всё равно, да
Я до этого места ещё не дошёл ?

Влад
16.07.2017
06:32:00
Кто то может объяснить что за типы и flow в чате обсуждали?

Dmitry ?
16.07.2017
06:36:21

Влад
16.07.2017
06:37:00
Ааа, понял, у Стефанова читал об этом
Я уже с утра подумал типизацию в es2018 вводят

Дмитрий
16.07.2017
06:38:13

Max
16.07.2017
06:39:58
++

Shane
16.07.2017
06:57:33
Привет. Подключил notyjs 3.1 не работают уведомления. Точнее стили не импортит. Кто сталкивался в чем проблема

Никита
16.07.2017
08:18:17
Народ, как описать immutable state через flow?
допустим
`const initialState = Map({ options: Map({test:true, test2:1, test3:'string'}), items:List([1,2,3])}`
как это будет выглдеть с flow?

Ivan
16.07.2017
08:37:22
поясните за ТайпСкрипт

Dreamerinnoise
16.07.2017
08:37:53
Что интересует?

Ivan
16.07.2017
08:43:14

Dreamerinnoise
16.07.2017
08:43:32

Ivan
16.07.2017
08:44:08
ну это я понял

Google

Vladimir
16.07.2017
08:44:28
этого недостаточно?

Ivan
16.07.2017
08:46:11
да я вот понять не могу

Dreamerinnoise
16.07.2017
08:47:54
Ну тогда он тебе не нужен

Vladimir
16.07.2017
08:48:11
?

Дмитрий
16.07.2017
08:49:04
Ну тут в принципе подписываюсь ? Если надо объяснять, то не надо объяснять
Как понять, что вам нужна типизация:
1. Начните новый проект на жс
2. Подождите, пока не станет мучительно больно

Vladimir
16.07.2017
08:50:37
что там есть из коробки кроме типов, async/await

Anton
16.07.2017
08:51:03

Влад
16.07.2017
08:51:18
Разве типизация не усложняет разработку?

Дмитрий
16.07.2017
08:51:48
Ну кстати резонный вопрос

Mike
16.07.2017
08:51:52

Anton
16.07.2017
08:51:58

Дмитрий
16.07.2017
08:52:03
Усложняет

Dreamerinnoise
16.07.2017
08:52:18
Усложняет и облегчает

Дмитрий
16.07.2017
08:52:20
Просто позволяет нормально писать проекты больше определенного размера

Anton
16.07.2017
08:52:32
Пффф

Mike
16.07.2017
08:52:33
Да и вообще типы от лукавого, не дают строки с числами складывать

Дмитрий
16.07.2017
08:52:47
Как правило, это размер начинается с приложения чуть больше ту ду листа

Anton
16.07.2017
08:52:51
JsDoc и тесты решают большую часть проблем.

Google

Дмитрий
16.07.2017
08:53:08
Я тоже так говорил, лол
Добавь "пока что")

Anton
16.07.2017
08:53:25
Большие проекты это сколько?

Дмитрий
16.07.2017
08:53:31
Как правило, это размер начинается с приложения чуть больше ту ду листа

Vladimir
16.07.2017
08:53:36

Nikita
16.07.2017
08:53:50
@zachot
type ItemsState = {
+items: Object[],
}

Admin
ERROR: S client not available

Влад
16.07.2017
08:54:04
У меня вот ошибок с типами не бывает. Очень много ошибок на состоянии завязано

Nikita
16.07.2017
08:54:10
+ говорит flow, что поле иммутабельно

Влад
16.07.2017
08:54:13
Это конкретно в реакте

Vladimir
16.07.2017
08:54:18
насколько я понял, он на crypto же работает?

Дмитрий
16.07.2017
08:54:39
и telegram-mtproto ж на ts'е?
flow. Так как мне нужно было рефакторить код с довольно сложной предметной частью, то сообразительность типизации для меня была не бонусной, а жизненно необходимой вещью

Anton
16.07.2017
08:55:49
Я когда 10 лет назад переходил с нормальных языков на lua, а потом, прости боже, php тоже понять не мог как жить дальше. Даже подсветки синтаксиса не было нормальной.
Сейчас строгая типизация - как костыль.

Дмитрий
16.07.2017
08:56:42
Вот в этом вся и разница. flow, ts — это скорее просто статическая
У меня например далеко не 100% flow coverage

Nikita
16.07.2017
09:00:51
Подскажите за ant design: кто нибудь mobile-first делал проекты? как вообще комбинировать ant.mobile и обычный ant (плавный переход на десктопную версию)?

Vladimir
16.07.2017
09:01:43

Дмитрий
16.07.2017
09:05:10
Я просто как-то пытался его во fuse засунуть, а в итоге получил болт
Ааа, блин, ну это может быть ?
Я пробую сделать универсальный пайплайн, но пока ещё ряд проблем есть, можешь issue открыть, чтобы я не забыл)
Загон в универсальности — как либа должна распространять и инклудить воркеры, которые всегда на странице идут отдельным файлом??
Пока что решение — импортить worker-loader и делать require соответствующего формата, соответственно получается что webpack only
Я если честно про другие бандлеры даже как-то не подумал

Google

Anton
16.07.2017
09:10:15
Так файл для воркера можно "руками" в браузере генерить через BlobUrl

Дмитрий
16.07.2017
09:11:20
Знаю, но не уверен, что это хорошее решение)
Тем более, что туда половина проекта инклудится, по 300 кб каждый (пока что)

Alex
16.07.2017
09:20:05

Дмитрий
16.07.2017
09:20:21
Да
Там есть отдельное понятие — deadline
В рамки которого нужно укладываться, чтобы не мешать другому коду)

Alex
16.07.2017
09:23:33
Скорее бы. А то у меня получилось только 40 фпс выжимать с форком gsap на анимации для всей странице через width.

Anton
16.07.2017
09:24:30
А через Транзишен сколько?

Alex
16.07.2017
09:25:41

Дмитрий
16.07.2017
09:26:00
Ну ты уже сейчас можешь юзать 16 реакт

Cenator
16.07.2017
09:27:18

Alex
16.07.2017
09:28:14

Дмитрий
16.07.2017
09:32:21

Alex
16.07.2017
09:33:36

Дмитрий
16.07.2017
09:33:48
?