Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 December 01

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Miseo
то есть если у меня будет 20 процессов в одном приложении тогда один из них даже если и заморозится 19 будут работать как и ожидается ?
"Как ожидается" никому не известно кроме вас. Если остальные 19 будут ждать от того тупящего какой-то результат, то скорее всего нет. Если им не будет нужен этот тупящий, то да.
источник

M

Miseo in NodeUA - JavaScript and Node.js in Ukraine
Alexander
"Как ожидается" никому не известно кроме вас. Если остальные 19 будут ждать от того тупящего какой-то результат, то скорее всего нет. Если им не будет нужен этот тупящий, то да.
отлично! спасибо
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
У нас в проекте был кусок какого-то странно навернутого кода. Мы просто его не трогали год. Потом понадобилось трогать - ну просто прилепили в класс функций. А потом только поняли что это человек паттерн делал (давно). Блин ну хоть бы подписал в комментах что это паттерн а не странная супер-замороченная непонятно почему ерунда (судя по коммитам тот код прошел через несколько рук и не все поняли что автор имплементировал паттерн)
Мы не соримся, мы дискутируем) А за одно идет прокачка паттернов, чтоб как раз, среди прочего,  понимать "гениев", которые не любят писать комменты в коде)
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Понятно, что паттерны придумали не дураки и ни от хорошей жизни, связанной с наследованием. Но в книжках или у мамкиных блогеров хеловордные примеры с удобными для паттернов предметными областями. Паттерн наблюдатель? Отлично, сделаем пример с наблюдением за погодой. И в таком духе... А в жизни приваливает предметная область с такими кейсами, которые тебе в жизни не снились, и начинается натягивание совы на глобус. Тут простая школьная геометрия, а не кровавый интерпрайс, а уже началась смехопанорама с созданием объектов, типа вычислитель площади круга отдельно от самого круга... При том, что опровергнуть простоту наследования от неправильного многоугольника, который по сути является математическим движком для наследников, где остается сделать какую-то мелоч, вроде контроля за количества вершин, переданных в конструктор, ты толком не можешь. Попросил тебя разложить пататерн по его состовляющим из Википедии в контексте фигур, ты написал кучу страшных слов вместо примера. Если не знаешь всех предметных областей, где метода может быть действительно целесообразно, не проник в мировой абсолют, так и нефиг говорить, что от наследования нужно избавляться в пользу какого-о там бла-бла-бла паттерна, если не подходит, то сорян.
Вот опять ты подменяешь, и нарушаешь причинно-следственную связь
Почему не подходит наследование выше объяснено чуть ли не тобой самим: нарушается LSP. И вот за этими словами: "остаётся сделать какую-то мелочь вроде контроля за количеством вершин, переданных в конструктор" кроется что-то страшное и непонятное

Пример же с мостом я писать не хочу потому что мне лень, и потому что это уже сделал ты сам. Я же правильно понимаю, что твоё заявление про то, что мост не подходит, хоть и никак не объяснено, но основано на твоей имплементации? Ты ведь не заявлял это просто так, не проверив, действительно ли он не подходит?
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
тут идея в том, что паттерны создают правила и ограничения в том что и как делать. А ты пытаешься вместо создания нового класса многоугольник\четырехугольник превратить квадрат во что-то другое. а если у тебя будет функция добавить вершину?
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Вот опять ты подменяешь, и нарушаешь причинно-следственную связь
Почему не подходит наследование выше объяснено чуть ли не тобой самим: нарушается LSP. И вот за этими словами: "остаётся сделать какую-то мелочь вроде контроля за количеством вершин, переданных в конструктор" кроется что-то страшное и непонятное

Пример же с мостом я писать не хочу потому что мне лень, и потому что это уже сделал ты сам. Я же правильно понимаю, что твоё заявление про то, что мост не подходит, хоть и никак не объяснено, но основано на твоей имплементации? Ты ведь не заявлял это просто так, не проверив, действительно ли он не подходит?
Да скажи уже как есть: паттерн дрянь, я не могу привести пример, поэтому пишу отмазки, типа мне лень.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Kostyantin Randomname
тут идея в том, что паттерны создают правила и ограничения в том что и как делать. А ты пытаешься вместо создания нового класса многоугольник\четырехугольник превратить квадрат во что-то другое. а если у тебя будет функция добавить вершину?
Это ж зависит от предметной области
Выше был пример, когда в графическом редакторе из квадрата делают трапецию. Вроде вполне подходящий кейс для смены реализации на лету
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Сергей
Да скажи уже как есть: паттерн дрянь, я не могу привести пример, поэтому пишу отмазки, типа мне лень.
Ок, после того, как ты скажешь как есть: паттерн подходит, я не могу привести причин, почему не подходит, и веду себя агрессивно чтобы это никто не заметил 😏
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Это ж зависит от предметной области
Выше был пример, когда в графическом редакторе из квадрата делают трапецию. Вроде вполне подходящий кейс для смены реализации на лету
ты тогда работаешь с более высокоуровневой абстракцией и заменяешь одну реализацию геометрической фигуры другой. и это не нарушает никаких правил так как ты на высоком уровне работаешь с геометрической фигурой.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Kostyantin Randomname
ты тогда работаешь с более высокоуровневой абстракцией и заменяешь одну реализацию геометрической фигуры другой. и это не нарушает никаких правил так как ты на высоком уровне работаешь с геометрической фигурой.
а об чём у нас дискуссия тогда?
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
а об чём у нас дискуссия тогда?
о подмене понятий, конечно же
источник

С

Сергей in NodeUA - JavaScript and Node.js in Ukraine
Алексей Попов
Ок, после того, как ты скажешь как есть: паттерн подходит, я не могу привести причин, почему не подходит, и веду себя агрессивно чтобы это никто не заметил 😏
Я веду себя естественно. Но уже понял, что на пример ты не разведешься, потому что сильно погорячился, предложив его рассмотреть. Но ты ведь знаешь, как оно работает? Если специалист что-то предлагает, не может внятно обосновать зачем, а другие должны почему-то опровергать его предложения, то в следующий раз на его супер-советы время тратить вряд ли кто-то будет. Лучше пойти написать что-то полезное, чем играть в опровергалки с горе-теоретиком 🙂 ,чем собственно и займусь. Для себя данную тему закрыл, спасибо за дисскусию.
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
А може хтось коротко і ясно пояснити різницію між функтором і монадою в рамках js коду, а не теорії категорій?
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
Типу фунтор має представляти собою абстракцію простої операції (функції), а монада ланцюжок таких?
источник

ДП

Дима Полос in NodeUA - JavaScript and Node.js in Ukraine
Функтор умеет взять данные, взять функцию и применить функцию к данным - вернуть либо новые данные, либо вернуть данные обернутые в функтор (эндофунктор).

Монада, во-первых, это тоже функтор, а точнее из категории эндофункторов, то есть она умеет все тоже самое, что и функтор, при этом результат вычислений возвращает всегда обернутым в монаду (bind). Отличие от функтора в том, что монада может на вход получить данные обернутые в монаду, распаковать их (flatMap), применить функцию к данным внутри (map) и, повторюсь, вернуть результат обернутый в монаду.

Дело не в цепочках, так как функторы, если возвращают данные внутри функторов тоже могут по цепочке "мапить", а  в том, что монада умеет распаковать данные - обработать - и упаковать снова.

PS: если где ошибся, поправьте, не уверен, что функторы могут возвращать чисто данные.
источник

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Kostyantin Randomname
о подмене понятий, конечно же
тогда я потерял нить :-/
если вернуться к самому началу, то речь шла о каноническом примере для демонстрации lsp - геометрические фигуры должны образовывать двухуровневую иерархию наследования с абстрактным классом на вершине, и не должны наследоваться друг от друга
а дальше речь шла уже о разных ухищрениях для избегания дублирования кода - типа у этих типов фигур площадь вычисляется схожим образом, значит... и вот дальше шли разные предложения, от переноса общего кода в (ещё один) базовый класс, до выделения общего кода в отдельные классы, которые должны подмешиваться
закончилось всё, как я и ожидал, срачем
но гитлера не вспомнили
источник

V

Vitaliy in NodeUA - JavaScript and Node.js in Ukraine
Дима Полос
Функтор умеет взять данные, взять функцию и применить функцию к данным - вернуть либо новые данные, либо вернуть данные обернутые в функтор (эндофунктор).

Монада, во-первых, это тоже функтор, а точнее из категории эндофункторов, то есть она умеет все тоже самое, что и функтор, при этом результат вычислений возвращает всегда обернутым в монаду (bind). Отличие от функтора в том, что монада может на вход получить данные обернутые в монаду, распаковать их (flatMap), применить функцию к данным внутри (map) и, повторюсь, вернуть результат обернутый в монаду.

Дело не в цепочках, так как функторы, если возвращают данные внутри функторов тоже могут по цепочке "мапить", а  в том, что монада умеет распаковать данные - обработать - и упаковать снова.

PS: если где ошибся, поправьте, не уверен, что функторы могут возвращать чисто данные.
Дякую
источник

ДП

Дима Полос in NodeUA - JavaScript and Node.js in Ukraine
Vitaliy
Дякую
будь-ласка!
источник

IH

Ilya Human in NodeUA - JavaScript and Node.js in Ukraine
Дима Полос
будь-ласка!
Будь ласка*
источник

ДП

Дима Полос in NodeUA - JavaScript and Node.js in Ukraine
Ilya Human
Будь ласка*
дякую) якось забуваю постiйно(
источник