Таймураз
но я не под из под рута запускал ноду на 80 порту и все работало.
У тебя явно были права, либо что-то не так с системой Если у тебя не падало ничего- это плохо. Потенциальная дыра в системе
Таймураз
я через sudo запускал
Это и есть права суперпользователя
Rodion
Это и есть права суперпользователя
но запускал же не от рута
Rodion
значит рутовых прав не было
Rodion
sudo же просто делегирование отпределенных прав, но запускается программа от имени пользователя а не от рута
Ievgen
DESCRIPTION sudo allows a permitted user to execute a command as the superuser or another user, as specified by the security policy.
Ievgen
man sudo
Таймураз
sudo же просто делегирование отпределенных прав, но запускается программа от имени пользователя а не от рута
Если ты даешь пользователю права суперпользователя- он может от имени рута (кого угодно) выполнить любое дерьмо
Rodion
Если ты даешь пользователю права суперпользователя- он может от имени рута (кого угодно) выполнить любое дерьмо
добавление в группу sudo это не выдача прав супервользователя, это выдача прав на исполнение определенных вещей чего раньше делать было нельзя. Я могу в sudoers прописать можно запускать от 80 порта приложение, а все остальное нельзя
Таймураз
я не спорить пришел, я просто не могу понять почему ноду на 80 порту нельзя крутить. Вот и все
Нежелательно, чтобы сервисы работали с правами суперпользователя Ты используешь чужой код, который не читаешь (зависимости) Когда ты даешь права своему коду, ты даешь права коду тысяч других разработчиков Уже были модули, которые тыздили все, что можно с серверов (переменные окружения и прочее дерьмо)
Таймураз
Я не хороший безопасник, но знаю, что оставляя вот такие дыры можно наткнуться на большие проблемы в будущем (возможно, ближайшем)
Таймураз
но гипотетически я же могу ноду запустить в контейнере или джейле от рута и это безопасно и все на 80 порту будет?
Некоторые даже в контейнере запускают код от другого пользователя. Там тоже время от времени дыры обнаруживают
Rodion
Некоторые даже в контейнере запускают код от другого пользователя. Там тоже время от времени дыры обнаруживают
а можно без nginx тогда обходиться и с помощью iptables 80 порт перенаправлять на 8081 порт на котором нода крутится? или все таки лучше проксить именно nginx из за его скорости и надежности а о ноде снаружи таким образом никто не узнает ничего?
Ievgen
Вопрос от рута не от рута вообще вторичен, суть в том, что есть nginx и есть некое поделие на ноде/перле/питоне etc, для того, чтобы вывести сие поделие по фунционалу/перформансу на уровень с nginx надо затратить ой как много времени и я подозреваю если бы это было сделано, то подобные вопросы бы не возникали.
Ievgen
не все что умеет слушать на 80 порту надо ставить голой жопой в мир смотреть
Ievgen
это же очевидно Карл
Ievgen
в данном контексте вторичен
Ievgen
@Atassis даже запущенная от обычного юзера нода не решает остальных вопросов
Таймураз
Тут нет вторичных моментов Он не задает конкретные вопросы и бегает по теме
Ievgen
я не даю советов, я констатирую факт
Таймураз
То есть ты считаешь, что запускать от суперпользователя ноду- норм?
Ievgen
я считаю, что это зависит от
Rodion
@Atassis даже запущенная от обычного юзера нода не решает остальных вопросов
и еще можно маленький вопрос. А для node.js есть библиотеки для работы с графикой ? У php например есть библиотека gd2 которая работает с графикой и по возможностям почти как photoshop, там вводяные знаки наложить заливки, рисование и тому подобное. А для ноды есть подобные либы для графики с мощным функционалом?
Таймураз
я считаю, что это зависит от
Ты же понимаешь, что это надо делать осознанно, и что осознанно к Родиону сейчас не относится?)
Таймураз
есть electron, почитай что это
электрон вообще не об этом
pa[aad
электрон вообще не об этом
ой блин, я думал он об gui, как-то недочитал
Rodion
а на ваш вгляд что более песпективней изучать новичку , Perl или Node.js?
Таймураз
Skeptic
А Perl сейчас где вообще используется?
Rodion
перл сейчас начать изучать- такое себе
ну я вынужден, ибо я стажером пришел в фирму где используют перл для вебсайтов. Фирма делает сайты и фирма очень старая с 2000 года, и тогда был для веба норм тока перл . И у них самописная CMS на Perl , поэтому приходится учить перл. Так же в паре проектов они используют ноду. И на ваш взгляд можно хорошо знать ноду и перл одновременно?
Rodion
или perl+node.js это shit combo?
Таймураз
и в моем случае лучше на node.js делать упор?
Кстати да, если есть возможность бежать оттуда- беги оттуда
Rodion
Кстати да, если есть возможность бежать оттуда- беги оттуда
у них сотни клиентов и много крупных и нужно поддерживать кучу проектов на perl
Таймураз
почему?
Не учись старым технолоигям
Михаил Макарычев
и в моем случае лучше на node.js делать упор?
Есть адепты перла, но они в 99.9% случаев говорят одно и то же: "на нём удобно работать с текстом, поэтому, очевидно, другие языки сосут". Но вообще это мёртвый язык, знание которого тебе не особо поможет в освоении других технологий
Skeptic
Ну с текстом также удобно работать в JavaScript и Python
Skeptic
Perl, ИМХО, давно утратил свое первенство в этой области
Rodion
Не учись старым технолоигям
ну по чесному да, perl после php вызывает дикое раздражение и сложности, парадигма "Есть больше одного способа сделать это" , мне не по душе и синтаксис перла, читать тяжеловато для новичка. Так как у нас все разработчики фулстеки, каждый верстает+бекенд+фронтенд+деплой+администрирование веб серверов, я естественно в процессе верстки начал с нуля изучать js , и после php , js мне понравился, я полюбил его, он более понятный и логичный. И тут я узнал что есть node.js и js на бэке это просто мечта и рай для меня. Очень удобно когда на фронте и на беке один язык. А то требуется знать perl для поддержки проектов, требуется знать php для поддержки других проетов, плюс js+node.js , от стольки языков за раз у новичка типа меня взрывается башка. И это за полгода моей стажировки
Rodion
Есть адепты перла, но они в 99.9% случаев говорят одно и то же: "на нём удобно работать с текстом, поэтому, очевидно, другие языки сосут". Но вообще это мёртвый язык, знание которого тебе не особо поможет в освоении других технологий
ну удобно было раньше, и удобно работаь с текстами на серверах, так как перл зачастую стоит на дистрах линукса из коробки то писать на нем однострочники для админства цены нет, так как bash сильно кастрированный, там даже массивов нет, (правда и тут его питон вытесняет ибо тоже часто из коробки установлен и писать на нем намного удобнее и приятней). А с текстами да можно и на php и на js удобно работать.
Rodion
а та node.js можно делать 3d игры?
Eldar
а та node.js можно делать 3d игры?
В основном нет чем да. Но ты можешь при желании написать бекенд для онлайн игры на Node.js
Eldar
А еще Unity поддерживает JS для скриптов
Eldar
Нет.
Eldar
Конкретно логику в играх и игры пишут на C/C++/C#
Eldar
Кое-где конечно можно обойтись и "возможностями движка", но дописывать приходится ребятам много
Eldar
Тем не менее как бекенд для тех или иных сетевых возможностей игры, ты можешь использовать Node.js
Eldar
Так в частности WarGaming (танки) кое где вкорячил Python
Eldar
Ну крупные проекты это всегда зоопарк технологий
Eldar
Или зоопарк архитектурных решений
Anton
всем привет! подскажите, кто как решал такой момент, если сталкивался: есть промис, в нём несколько потоков (`fs.WriteStream`, например), нужно зарезолвить этот промис, когда все эти потоки завершатся. сейчас использую какое-то наколеночное решение, пример:
Anton
const p = new Promise((resolve, reject) => { const readStream = fs.createReadStream(...) const writeStream1 = fs.createWriteStream(...) const writeStream2 = fs.createWriteStream(...) let firstFinished = false let secondFinished = false readStream.pipe(writeStream1) readStream.pipe(writeStream2) writeStream1.on('finish', () => { firstFinished = true if (firstFinished && secondFinished) { resolve() } }) writeStream2.on('finish', () => { secondFinished = true if (firstFinished && secondFinished) { resolve() } }) })
Anton
самое гениальное, что могу ещё придумать, это как-то так: const p = new Promise((resolve, reject) => { const readStream = fs.createReadStream(...) const writeStream1 = fs.createWriteStream(...) const writeStream2 = fs.createWriteStream(...) const streamsCount = 2 let finishedCount = 0 const resolver = () => { finishedCount++ if (finishedCount >= streamsCount) { resolve() } } readStream.pipe(writeStream1) readStream.pipe(writeStream2) writeStream1.on('finish', resolver) writeStream2.on('finish', resolver) })
pa[aad
всем привет! подскажите, кто как решал такой момент, если сталкивался: есть промис, в нём несколько потоков (`fs.WriteStream`, например), нужно зарезолвить этот промис, когда все эти потоки завершатся. сейчас использую какое-то наколеночное решение, пример:
я вижу решение вот такое: оборачиванием writestream у promise, а потом promise.all([wspromise1, wspromise2]).then(arguments => { // ta dam }) вот типа в инете решение const uploadTasks = filesToUpload.map((file) => new Promise((resolve, reject) => { var writeStream = client.upload({ container: "mycontainer, remote: file }); // seems like i should register finish events with something writeStream.on("finish", resolve); fs.createReadStream("./local_path/" + file).pipe(writeStream); }); Promise.all(uploadTasks) .then(() => { console.log('All uploads completed.'); });
Anonymous
В es6 промисы и генераторы
Alex
Спасибо
sanqa