.NET Fest: полная программа конференции на сайте. Присоединяйся к самому большому .NET ивенту
×Закрыть

Ayo.js или дискриминация в среде Node.js

Буквально вчера сделали форк node.js из-за нарушения Code of Conduct:
github.com/ayojs/ayo
обсуждение на редите
news.ycombinator.com/item?id=15078995

кто что думает? делать форки проектов из-за обид это нормальное вариант поведения? мне лично напоминает детский сад...

LinkedIn

Лучшие комментарии пропустить

js повинен перестати існувати.

Да, это детский сад
— Для тех кто ничего не понял — один из топ контрибуторов в твитере кинул ссылку на инфу которая идет в разрез с код оф кондакт
— SJW подняли бучу и подняли голование на удаление этого персонажа
— Голосование провалилось
— SJW сделали форк без будущего, вони на порядок больше чем коммитов, никаких четких планов и тд
Как всегда в общем — те кто меньше всего пользы приносит — громче всех орет о несправедливости

Опять какие-то бабы/геи/трансгендеры на кого-то обиделись? Бывает.

Что раздражает — есть много хороших репозиториев, на которых мейнтейнер забил или не имеет времени. И никто не придёт и не поможет даже советом. И даже пулл-реквесты могут не приниматься по полгода. Приходится форкать, разбираться с проблемой самому и работать дальше. Хоть бы один из ущемленных меньшинств помог. Но вот за Code of Conduct следить — очередь выстраивается.

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

nodejs полностью провалился. Это признал даже сам автор nodejs:

That said, I think Node is not the best system to build a massive server web. I would definitely use Go for that. And honestly, that’s basically the reason why I left Node. It was the realization that: oh, actually, this is not the best server side system ever.

пруфлинк

Через неск лет напишет такое же и про GO )))

This site can’t provide a secure connection

www.mappingthejourney.com uses an unsupported protocol.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
HIDE DETAILS
Unsupported protocol
The client and server don’t support a common SSL protocol version or cipher suite.

маладца, засылаешь наивных юзеров на хакнутый сайт? А впрочем чего еще от гоубоев ожидать?

Давати биті пруф лінки — це недбалість. А що таке недбалість в програмуванні? — Почерк гавнокодера.

У меня норм открывается линка в хроме 60 как под андроидом, так и под убунтой. Может, это тебя хакнули?

works on my computer — стандартная отмазка гоубоя?

Підправив побистрячку і потім «а у нас все работает». =)

Повністю провалився Node.js для засновника, який пописав його два з половиною роки, і вже п’ять років не займається його розвитком. Якраз за цей період з’явився ES2015, багато чого змінилось, зокрема зникла проблема колбек хела, з’явився TypeScript і т.д.

Слава богу, що Node.js контрибутять 1500 користувачів. Якщо подивитись на графік активності комітів, то Node.js не збирається «провалюватись».

зникла проблема колбек хела

вместо нее появились проблемы промис хелла и async/await hell’а — m.habrahabr.ru/...​y/oleg-bunin/blog/311554 . Микс js-кода из синих и красных функций — это ведь так занимательно :) Не то что скучный код на go, в котором все функции синие.

уже js комьюнити с жира беситься. Сколько можно то? Хипстерня на хипстерне

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

Захід повільно, але впевнено і рішуче скочується в лівацьку антиутопію. Це ще дивно, що просто зробили форк, зазвичай «прогресивні» та «толерантні» починають переслідувати та травити свою жертву.

Та вроде ниже пишут, что пробовали сначала поприследовать — не получилось. Пришлось самим убегать.

Опять какие-то бабы/геи/трансгендеры на кого-то обиделись? Бывает.

Что раздражает — есть много хороших репозиториев, на которых мейнтейнер забил или не имеет времени. И никто не придёт и не поможет даже советом. И даже пулл-реквесты могут не приниматься по полгода. Приходится форкать, разбираться с проблемой самому и работать дальше. Хоть бы один из ущемленных меньшинств помог. Но вот за Code of Conduct следить — очередь выстраивается.

Не ясно только зачем это форсить как какое-то значимое событие. Давайте я начну ныть в твиттере и сделаю форк... и чо? Ноде от этого ни холодно, ни жарко.
Это не раскол среди контрибюторов как во времена io.js, это какие-то левые люди сделали форк который не способны развивать т.к. паре теток не понравилось как высказывается контрибютор ноды. Поправьте если я что-то не так понял.

Ну... вроде пишут, что контрибуторы вроде покидают плохих парней и присоединяются к хорошим.. тёткам

Да, это детский сад
— Для тех кто ничего не понял — один из топ контрибуторов в твитере кинул ссылку на инфу которая идет в разрез с код оф кондакт
— SJW подняли бучу и подняли голование на удаление этого персонажа
— Голосование провалилось
— SJW сделали форк без будущего, вони на порядок больше чем коммитов, никаких четких планов и тд
Как всегда в общем — те кто меньше всего пользы приносит — громче всех орет о несправедливости

все одно нічного не зрозумів =)
що за інфа іде врозріз код оф кондакт?

Там было какое-то запрещенное слово типа Neurodivercity. Там что-то сильно долго читать надо и разбираться кто девочек и чем обидел.

js повинен перестати існувати.

На бек-енді точно повинен.
На фронті повинен перестати існувати Angular та інші пародії на компонетне програмування.

Ви програмували на одному й іншому щось складніше за hello world?

Я не тягаю на бек-енд терабайтні віртуальні машини та фреймворки на інтерпретованих нетипізованих мовах. Зараз можна заюзати просту зв’язку Rust/Golang+PostgreSQL, навіть якщо ви віндузятник.
Angular це взагалі архітектурний хаос, мені одного погляду вистачило, щоб зрозуміти, що всі на ньому пишуть тільки через 1000000 вакансій та АААААААААААААААА щоб не померти з голоду.
Є в 10 разів зручніші і швидші фреймворки.

Є в 10 разів зручніші і швидші фреймворки.

Верно. jquery один из них.

А що не так з Angular і яку альтернативу особисто ви можете порекомендувати?

Альтернативи тільки для обраних, і там немає 1000000 вакансій.

Обраний, так все таки яка альтернатива?

Сам не пробовал, но говорят Aurelia и Vue очень норм.

Эх а я ждал что «обраний» ответит ))

Aurelia

такое же говно как и ангуляр 1

Vue

для мелких проектиков покатит

можем сделать вывод что остается React или Angular 2 ?

Антон, судя по github у вас есть опыт разработки компонентов как для Angular так и React, очень интересно ваше мнение.

по идее, моя активность на гитхабе вообще должна быть скрыта, ибо в основном private repos, за исключением пары вещей

а если вам правда интересно — может быть напишу статью через месяц, о муках выбора между React, Angular и Vue.js

Ждем )) Судя по всему муки закончились React — ом ))

скажем так, если мне давать выбор — Angular я сам в 90% случаев не выберу

Интересен ваш опыт. Сейчас разбираюсь с Angular планирую углубится в этот инструмент, но также не дает покоя React ))

И правильно не дает. С ангуларом можно работать в энтерпрайзе. Потому что багфиксинг в любом спринте будет занимать 70% времени. Ошибки возникают после каждой новой фичи по всему проекту. Сидишь себе баги ищешь. Зарплата идет.
В остальных случаях лучше писать на реакт-редакс-сага. Среднее воемя на _поиск_ причин ошибки — 5 минут. Очень большая гарантия того, что новая фича или багфикс вообще никак не повлияют на остальные части стстемы.
PS 5 минут — это если не повезет. А так: открыл консоль, проверил, что в сторе появилось, нашел, кто положил, мозги ему вправил, все работает.

Почему так все плохо с ошибками в Angular, как этого избежать (или хотя бы свести к минимуму), на что следует уделить внимание? Очень интересен ваш опыт.

Почему так все плохо с ошибками в Angular

shared state

Антон, буду благодарен если дадите пару ссылок с описанием данной проблемы и как ее решить.
Таким образом проблема не решается? angular.io/...​communicate-via-a-service

Потому что нет разделения потоков данных и событий by design. В архитектуру не заложено то, что сделать правильно — легче, чем неправильно. И в реакте можно нагородить огород, и воткнуть с производительностью, но там для этого нужно приложить усилия. Не в смысле, что это сложно сделать, а то, что проще — это почти всегда оказывается правильнее.
И судя по всему миру, не отошедшему от миграции на второй ангулар (некоторые за это заплатили сотни тысяч денег), предстоит еще одна миграция на чистые компоненты и отказ от инжектора. А после нее доверия к ангулару не будет никакого.
Вы можете найти рекомендации о том, как организовать это разделение, но ангулар Вам в этом помогать не будет. На проекте всегда найдется тот, кто все сделает «через сервис», потому что так проще.

Потому что нет разделения потоков данных и событий by design.

Шо? Ви про що, про [(ngModel)]?

можешь порекомендовать хороший гайд по сагам?

Мне полностью хватило официальной документации. На проекте используется практически весь инструментарий да исключением каналов (не нашел пока, где их нужно применять; у нас простые пути от кнопки до стора).
Типичный сценарий: fork -> take(Every|Latest|First) -> call|spawn|select -> put. Это не сложно )
Писанины много с сагами. Согласен. Но она идет в счет будущей экономии времени на рефакторинг, чтение кода, т. д.
Паралельно с routine умные компоненты могут отправлять в стор и простые actions. Логика тут та, что при отсутствии side effects ничего не мешает отправить action прямо в редьюсер. Как только возникает необходимость в отправке нескольких последовательных actions (все операции в редюсере для надежности максимально ограничены в том, что они меняют в сторе), или в общении с сервером, или запуске параллельного обработчика чего-то, в этом случае запускается routine.
У нас используется TypeScript поэтому легко было организовать показ сигнатуры в компоненте, который ее использует, через Routine<{тип}>. Без типизации они в этом плане action creator factory проигрывают

на сколько я понял, то это просто альтернатива redux-thunk на генераторах, если не хочется тянуть генераторы в проект, то можно без рутин обойтись

у нас на проекте приблуда, которая пытается зарезолвить модуль с названием екшена, если есть такой — то вызывается заэкспортированная функция от пейлода и диспатча, так и файрим перпендикулярные последовательные и параллельные экшены

на сколько я понял, то это просто альтернатива redux-thunk на генераторах, если не хочется тянуть генераторы в проект, то можно без рутин обойтис

Совершенно верно. Генераторы уменьшают вложенность кода при использовании промисов. Но также это библиотека полезных хелперов для реализации всевозможных сценариев получения и обработки данных и общения с редюсером и стором. И все это опять же «плоское» ))

Дмитрий, помимо документации, нет ли хороших книг React + Redux, которые вы могли бы посоветовать? Спасибо!

Для хороших книг что реакт, что редакс еще слишком молоды, подозреваю. Те несколько, что я видел — пересказ документации другими словами. Хотелось бы дождаться реактивных «д. паппу» и «т. мотто», чтобы почитать, что они считают необходимыми признаками хорошей архитектуры в реакте. Можно того же Абрамова пересмотреть. Действительно помогут книги по функциональному программированию, если в них будут описываться концепции больше, чем операторы языка, взятого для примера. К сожалению таких не подскажу.
Пока все как обычно: доки, гитхаб

реактивных «д. паппу» и «т. мотто»

?

джон папа и тодд мотто — два аксакала среди ангулярщиков.

аа папа с pluralsight )) тепер понятно спс

Angular 2

4-й вже є.

Я в курсе и 5 на подходе, для меня все эти версии это Angular 2

Это все различные сорты говна, спасибо стоит сказать браузерам, тошо без js и этих фреемверков, там ничего толково не сделаешь. Да и собственно разработака на js, это попытки слепить баттлкрузер из говна и палок.

Якщо гівно, то на чому фронт писати?

Это все различные сорты говна,

Окрім гівна(js) там нічого немає.

А до TypeScript, наприклад, як ставитеся?

типизированый сорт говна :D

А если серьезно, как на ваш взгляд TypeScript?

для ентерпрайза неплох, или больших проектов где куча разработчиков уровня между джун-мидл.

при возможности не использовать — 100% не использовал бы

лично мне не особо нравится, но это вопрос моих личных предпочтений, не более того

Так он собственно проблему не решает, тебе в любом случае нужно понимать нахера там эти слова импорт и экспорт, и что это за модульная система и почему она там появилась, ну да есть сигнатуры с типизацией но по факту на них можно забить и твой код будет выполнятся в среде. TypeScript это НАДМНОЖЕСТВО JS.
Я бы действительно оценил TypeScript если бы его «нативно» поддерживал браузер и безе передрачивания в JS. Но за немного упоротым JS кроются еще более упоротые браузеры.

Подсказки редактора по типам свойств компонента весьма помогают. Можно писать на чистом ес6 и не хотеть использовать тайпскрипт. Можно писать на тайпскрипте и находить его весьма полезным.
Отдельным пунктом идет то, что компилятор убирает костыль из бабеля. За эту приблуду я чистый ес6 и не люблю.

nacl, но его практически убили, потому что формошлепы не в состоянии запомнить про пару alloc() - free()

эм — вы наверно не в курсе проблемы NaCl — его вроде кроме хрома никто не сапортил, был asm.js — то же проблемы с поддержкой.

вообще тут только появилось реальная альтернатива — WASM — как только выйдут Edge 16 и Safari 11 его можно будет начать рассматривать для разработки — правда, пока не добавят прямой доступ к DOM тоже ничего с ним реального не сделаешь, ибо на сегодня вам прийдется использовать JS обвязки — а в таком режиме WASM реальный тормоз. а когда и это появится — далеко не факт что перейдут на WASM — ибо в плане производительность он для большинства случаев ничего не даст.

далее

alloc() - free()

как показывает опыт последних 20 лет — для всех проблема. и для джавистов, и для хаскелистов, и для гоферов — да почти для кого угодно. так что на C/C++ мало кто UI писать будет — это надо быть полностью идиотом чтобы идти в эту сторону. а помимо того JS как на странно очень удобен для UI.

погуглите про Qt/QML чтоли, зацените количество идиотов
и чем удобен JS для UI? безумной связкой html/css/js?

целевая платформа не WEB, хотя QML не плох

html/css

это к браузерам, а не JS

и чем удобен JS для UI?

как раз тем, за что его не любят ))) слабой-динамической типизацией — благодаря этому можно сделать любую логику UI очень просто, в особенности UI на основе DOM елементов — ибо это труба, а не сам JS

Як саме типізація впливає на легкість побудови UI?

Гавнокодери бояться статичної типізації як чорт ладана...

Говнокодерам плевать на типизацию...

Ну може у вас більше практики в цьому плані, не спорю =)

погуглите про Qt/QML

кстати на VCL тоже UI делали

Чим саме JavaScript дуже зручний для UI? Вкажіть 5 причин.

js хороший язык, с несколькими спорными моментами. намного больше проблема как раз с

браузерам

Оно там как снежный ком, и с каждым годом этот ком все больше. Раньше мне равилось педалить на js, но сейчас ноу вей —

это попытки слепить баттлкрузер из говна и палок

Язык, которые позволяет делать так:
var obj=new function(){ this.a=0; } obj.b=1;
и так:
var x=0; x="string";
и даже так:
function foo(data){ if(data==0) return "str"; if(data=="abc") return 1; }
Не может быть хорошим, имхо.

а кому в голову прийдет такое делать?

Такие находятся. Проблема в том, что это можно делать. Все больше замечаю, что проекты переводят на TypeScript, что как бы намекает.

пару комментариев выше:

А если серьезно, как на ваш взгляд TypeScript?
для ентерпрайза неплох, или больших проектов где куча разработчиков уровня между джун-мидл.

это и есть основная причина + Angular помогает с этим

Можете привести примеры, где он будет хуже JSa?

эмм, вообще везде по стороне браузера. вот для других целей как раз JS не очень и подходит.

боль фронтенда — все опцианально, ничему нельзя доверять, нет одного правильного способа построить все.

чтобы по нормальному использовать TypeScript во фронте — generic должен быть ваш лучший друг (по моим ощущениям у многих с ними проблемы) — а половина полей опциональна, а по сути это смешанные типы nul|void|number к примеру — в итоге очень усложняет жизнь, и нивелирует преймущества TypeScript

вообще UI отличается крайней динамчностью, не, вы всегда можете описать все в типах — только это усложняет вашу жизнь.

а если вы захотите писать higher order functions — то определения типов выглядеть будет еще страшнее, а это по большому счету вопрос времени когда вы их захотите использовать

но как и везде статитическая типизация очень помогает в

больших проектов где куча разработчиков уровня между джун-мидл.

ибо помогает говонокодить бездумно и потом хоть как-то в этом разбиратся

эмм, вообще везде по стороне браузера.

Странно, у нас щас постепенно весь проект переводят на .ts, никто не жалуется.

но как и везде статитическая типизация очень помогает в
больших проектов где куча разработчиков уровня между джун-мидл.
ибо помогает говонокодить бездумно и потом хоть как-то в этом разбиратся

Я думал как раз ts ограничивает разработчиков от опций говнокодинга, которые предоставляет JS в чистом виде.

никто не жалуется.

у меня к примеру на проекте тоже никто не жалуется, особенно в присутствие манагера который это дело форсит.

Я думал как раз ts ограничивает разработчиков от опций говнокодинга

от говнокодинга ничего не спасает — кроме как включение головы.
не забывайте, что JS — по факту валиден для TS. так что все что можно сделать в JS, можно сделать и в TS

больших проектов где куча разработчиков уровня между джун-мидл.

Ви ще C# чи Java не віднесли туди ж, куди й TypeScript? Справжні пацани можуть і без типів?

Маячня маячньою...

так им и не приходится работать с DOM API нескольких версий одновременно

Тобто декілька версій DOM API — це проблема TypeScript?

Такие находятся

Эта проблема решается кодревью. Если оно есть — такой херни никогда не возникнет. Если его нет — херня будет оказываться в коде на любом языке. А то насколько херня яростная — по-моему не очень важно, если ее в принципе можно избежать

Проблема в том, что это можно делать.

В жизни у человека еще больше возможностей выстрелить себе и другим в ногу. Но выжившие как-то просто решили этим не злоупотреблять.

Теряетесь в слабой динамической типизации? Бывает, это проходит с опытом.

Вот открываете вы чужой код, а там что-то типо:
$("button").click(function(){ $.get("demo_test.asp", function(data, status){ alert("Data: " + data + "\nStatus: " + status); }); });
Что будет в «data»?

То что пришло с сервера. Для корректной работы сервер должен ответить строкой, в случае с json что-то может пойти не так (потому что жквери может парсить жсон, только не помню критерии парсить/нет у $.get

То что пришло с сервера.

Какие поля будут в полученом объекте?
Конечно же можно порыться в бекенде или фидлером отправить реквест на сервер и глянуть, но это так себе подход.

Теряетесь в слабой динамической типизации?

Не так чтобы прям совсем терялся, но неявная слабая динамическая типизация для меня просто коктейль, который превращает любой язык в неподдерживаемый треш.

Какие поля будут в полученом объекте?

TS вам это не гарантирует. если вы хотите всегда быть уверенными в том что получается определенные данные — посмотрите protobuffer. как вариант вы ремапите данные от сервера, зачастую вы это и так будете делать — типичный кейс — даты, кто-то высылает число как стринг, пустой объект вместо пустой таблицы.

Какие поля будут в полученом объекте?

Поля может гарантировать только тот кто делает бекенд. Для этого пишется API Documentation и согласовывается всё на этапе разработки (кстати сталкиваюсь с тем что некоторые товарищи хотят делать REST по статье «бест практисес» и не хотят запомнить что у фронта есть свои требования к ответам; но это проблема не жс, а невнимательных людей, которые хотят делать как хотят). Никакой тайпскрипт не спасет от того, что кто-то решит что ответ не по фен-шую и исправит его, поломав фронт. Или просто от ошибки, когда что-то поломается само-собой. А если речь о 3rd-party API, то там вообще гарантий никаких от слова совсем.

Кроме того, я не использую $.get, поэтому даже не помню как он интерпретирует ответы. Использую или методы ember data, или когда их не хватает, $.ajax. Потому что $.ajax позволяет все очень тщательно настроить, а $.get это просто шорткат, подходящий не всем. Причем $.ajax оборачивается в обертку чтобы каждый раз не писать один и тот же конфиг (хедеры, как парсить ответ и т.д.)

Не так чтобы прям совсем терялся, но неявная слабая динамическая типизация для меня просто коктейль, который превращает любой язык в неподдерживаемый треш.

Мне тоже было диковато, когда я начал играться с php и js после pascal/delphi. Но в вебе такая типизация оптимальна, в силу особенностей работы браузера и http. Например поле ввода всегда возвращает текст. Но пользователь может ввести число например. А слабая динамическая типизация позволяет просто сделать Number($('#id').val()). Или ничего не делать, если нам и нужна строка. Просто нужно следить за типами и конвертировать где нужно самому. Я во многих функциях просто оборачиваю параметры в то что мне нужно. Например не param.split(' ');, а String(param).split(). И тогда даже если придет не строка, а undefined, функция все равно сработает без ошибок. Хотя это не является однозначным плюсом, и иногда так лучше не делать. Я делаю это в темплейт хелперах (такие функции, которые обрабатывают данные для отображения пользователю или для передачи другому хелперу), чтобы вместо белой страницы пользователь увидел UI, даже если какой-то текст там будет отсутствовать или неправильный. В опенсорс-библиотеках в важных местах просто проверяют параметры и кидают исключение.

Какие поля будут в полученом объекте?
Конечно же можно порыться в бекенде или фидлером отправить реквест на сервер и глянуть, но это так себе подход.

Документация кода, сваггер, не?

foo(): string | number { }
foo(): Foo & Bar | string | undefined { }
— еще страшнее )))) Свобода пугает, если не уметь ею пользоваться.

язык, который допускает ++i++ или i++++ и еще и не фиксирует жестко результат — должен быть уничтожен!!!
WAIT! OH SHI~

в мемориз, однозначно

Узелок завяжется, узелок развяжется...

Рынок порешает

Можно больше предистории плиз? Кто кому че сказал?

Может это такая культура сообщества?
Если верить стереотипам, Node.js входит в топ основных понтогенерирующих технологий на ряду с Ангуляром и Руби.

вообще node.js в отличии от ануляров достаточно устоявшийся, хотя как по мне то это очень часто встречается в джс — комьюнити

Українське ІТ саме по собі дуже понтогенеруюча область. А мажеться пересічний власник гіроскутера нодой/джавой/дотнетом/ангуляром/(вставити потрібне) важливе хіба що для тролів і ловців лулзів у певних випадках.

только реально отпочковался на какойто время оригинальный io.js, и судя по всему этот тоже соберается. тут вообще вопрос подхода

Только вот в io.js с первых дней форка начали активно добавлятся фичи и т.д. А тут, пока, кроме исьюзов типа «ой всё» и пулреквестов с изменениями правил, не наблюдается.

Подписаться на комментарии