Anonymous
модули лучше через доки изучать по примерам
igo
Bushrut
сейчас идет dev интенсив Skill Branch, можеш там посмотреть
Anonymous
есть, но я не пишу на ноде
Serhii
это глупо в миксине вязаться к зису, лучше уж передавать явно как и Владюня говорил
Serhii
ты уверен что хочешь this в утилитах?
Vlad
learn.javascript.ru
igo
Vlad
Vlad
сделай просто функции
Vlad
которые принимают твой вебгл контекст аргументом
Vlad
так и тестировать проще
igo
на самом деле, там достаточно много одноообразных вызовов типа
gl.util.compileShaders(gl, type, source);
gl.util.linkProgram(gl, ...);
…
igo
и их очень много.
igo
ну, вернее, если это будет просто util, то без первого gl.
Vlad
нет
Serhii
нужно всего навсего вынуть все проперти с миксина и вставить в ctx
Vlad
https://github.com/getify/You-Dont-Know-JS
Vlad
вот ещё
igo
ну, по сути у меня там ещё всё промисами приправлено, так что мне хочется писать просто
.then(gl.util.compileShaders)
.then(gl.util.linkProgram)
Serhii
https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Ces2015-loose%2Cstage-1%2Cstage-2%2Cstage-3&experimental=true&loose=true&spec=true&code=class%20Ctx%20%7B%0A%20%20constructor%20()%20%7B%0A%20%20%20%20this.mine%20%3D%205%3B%0A%20%20%7D%0A%7D%0A%0Avar%20utils%20%3D%20%7B%0A%20%20doSpecial%20()%20%7B%0A%20%20%20%20console.log(this.mine)%3B%0A%20%20%7D%0A%7D%0A%0Avar%20ctx%20%3D%20new%20Ctx()%3B%0Actx.utils%20%3D%20Object.assign(ctx%2C%20utils)%3B%0A%0Actx.utils.doSpecial()
Serhii
хз, я дошел до этого
Serhii
чтобы примешать в любой обьект миксин достаточно скопировать в экземпляр методы, а уже куда ты ложить это будешь это присваивание
Serhii
но главное в обжект асайн то что он не создает новый обьект и не изменяет ссылку что важнее
igo
https://goo.gl/LDjTpg
igo
у тебя тогда скоупы нарушаются.
Serhii
а что ты ожидал ?
Vlad
https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Ces2015-loose%2Cstage-1%2Cstage-2%2Cstage-3&experimental=true&loose=true&spec=true&code=class%20supWebgl%20%7B%0A%20%20constructor(ctx)%20%7B%0A%20%20%20%20this.ctx%20%3D%20ctx%3B%0A%20%20%20%20this.show%20%3D%20this.show.bind(this)%3B%0A%20%20%7D%0A%20%20show()%20%7B%0A%20%20%20%20console.log(this.ctx)%3B%0A%20%20%7D%0A%7D%0A%0Anew%20supWebgl(%27yolo%27).show()%3B
igo
ну и ещё придётся в какой-то момент всё-таки привязаться к конкретному инстансу Ctx.
ctx.utils = Object.assign(ctx, utils);
Serhii
ты миксином хочешь подмешать коасс
Vlad
Vlad
igo
йеп
igo
да, наверное, я фигню какую-то захотел.
igo
вот ещё тут показывал
в общем, да, по сути, нужно обычное наследование со сменой скоупа для каждой функции. иначе никак не сделаешь.
Anonymous
я бы писала на жаве
Anonymous
для приложений/игр
Serhii
php
Anonymous
Vlad
вангую эрланг
Vlad
они нигде не рассказывали про свой бэкенд, на самом деле
Vlad
вотсап рассказывал, у них точно эрланг
Vlad
притом пропатченный
Vladimir
мб golang
Vlad
не думаю
Vladimir
Вообще, обычно можно загуглить вакансию, посмотреть знания каких языков требуют
Anonymous
у телеграма работа с данными больше, чем в ватсапе, у ватсапа например даже история на сервере не хранится
Дима
Трансформер (трансдюсер) — это обычный пайп, но во-первых отдельно от аккумулятора, то есть выносим не совсем удобный (acc,val)=>whatever отдельно
Дима
И в результате ещё и работа пайпа оптимизируется, не содаются промежуточные массивы, каждое значение как бы пропускается через него сразу
Дима
Обычный пайп
Дима
Дима
И трансдюсер)
Дима
Serhii
мм
Serhii
очень наглядно, OR в массивах
Дима
https://medium.com/@roman01la/understanding-transducers-in-javascript-3500d3bd9624#.p1xlkud7c
http://elbenshira.com/blog/understanding-transducers/ clojure, но тоже понятно написано
Anonymous
😞
igo
так, а ну-ка 😏
Vlad
Serhii
да там шутка
Vlad
Andrey
и какие библиотеки в js такое позволяют делать? ramda о первом варианте, rx.js?
igo
Дима
оо, роман
Его не знаю, но блог интересный)
Vlad
подпишись в тви
Vlad
он хороший
Дима
👌
Vlad
Vlad
а rxjs он не про трансдьюсеры, он про реактивность
Andrey
Andrey
Vlad
концептуально мб
Дима
Ну он в основе лежит
Vlad
в применении нет
Andrey
и меня в рамде это и растраивало, что код который я видел, слишком много лишних проходов делал по коллекциям, что совершенно не оптимально, когда каждый раз делаем по 5 проходов массива и трансдьюсеры, то, что нужно в таких ситуациях)
Andrey
и думал уже, что реактивный подход выход