@nodejs_ru

Страница 2179 из 2748
Harry
21.06.2018
06:01:16
Kuviakov
21.06.2018
06:01:29
есть сообщение допустим 3 кб, оно разбивается железом на пакеты ~1500 байт, и каждый раз когда приходит один пакет вызывается data с частью сообщения = логика не работат, не замечали такого?

Mark
21.06.2018
06:02:09
done is better than perfect?
Да, что-то я не то сделал сейчас. извиняюсь

Google
Max
21.06.2018
06:12:39
есть сообщение допустим 3 кб, оно разбивается железом на пакеты ~1500 байт, и каждый раз когда приходит один пакет вызывается data с частью сообщения = логика не работат, не замечали такого?
это не баг это особенность tcp протокола - он не гарантирует что на другом конце придут данные разбитые по буферам точно также как и они были отправлены через socket.write(buffer) - он только гарантирует что эти данные (если склеить в один большой буффер) будут правильном порядке в более мелких буфферах (размер которых будет кратен MTU). А вот если у тебя вдруг получается неправильный порядок мелких пакетов то это уже баг в ноде/tcp-ip стеке что маловероятно

Kuviakov
21.06.2018
06:23:28
это я знаю, поэтому все данные что приходят на сокет каждого клиента сначала попадают в буфер каждого клиента и есть проверка что сообщение целое по меткам начала и конца. про то что порядок гарантируется не знал, просто в нагрузке разные сломаные сообщения эмулировались, перемудрил) еще пробовал подписывать сообщение хешем но оно медленней получилось, корректность данных то же гарантируется? или снабжать хешем все таки нужно?

спасибо в любом случае

смущает наличие "лишних" буферов и логики которая казалось бы должна быть в v8, зашита...

Max
21.06.2018
06:44:03
это я знаю, поэтому все данные что приходят на сокет каждого клиента сначала попадают в буфер каждого клиента и есть проверка что сообщение целое по меткам начала и конца. про то что порядок гарантируется не знал, просто в нагрузке разные сломаные сообщения эмулировались, перемудрил) еще пробовал подписывать сообщение хешем но оно медленней получилось, корректность данных то же гарантируется? или снабжать хешем все таки нужно?
никакие хеши для проверки корректности не нужны - корректность данных проверяется на уровне tcp. Единственное что нужно так это добавить в начале данных размер сообщения а потом накапливать эти буфферы которые приходят в событиях "data" до тех пор пока не соберется сообщение полностью (так работают многие протоколы поверх tcp включая http и вебсокеты)

Kuviakov
21.06.2018
06:46:02
понял спасибо!

Sergey
21.06.2018
06:52:50
но такой размер практически нигде не применяется

Yaroslav
21.06.2018
07:03:26
можете пожалуйста напомнить бота, который уведомляет о новых версиях

Vlad
21.06.2018
07:04:04
но такой размер практически нигде не применяется
+, посыл был в том, что 3Кб месседж не будет разбиваться на отдельные tcp-сегменты

Yaroslav
21.06.2018
07:04:52
.
спасибо

Дмитрий
21.06.2018
07:20:56
Node v10.5.0 (Current) https://nodejs.org/en/blog/release/v10.5.0
И что прям многопоточность работает?

Google
Дмитрий
21.06.2018
07:22:33
Нода не поддерживает?
Поддерживают только яблочные браузеры

Yaroslav
21.06.2018
07:35:12
будем надеяться, что приживется и доведут до ума

Дмитрий
21.06.2018
07:36:22
Интересно, успеют ли запилить до выхода lts

Nurik
21.06.2018
07:43:07
Нода не поддерживает?
Как и большинство императивных языков. Это прерогатива функциональных языков.

Yura
21.06.2018
07:46:16
Да даже си умеет
Всмысле "даже" си? Си это сильнейшый язык которому лет больше чем мне Нода по сравнению с ним ребенок

Дмитрий
21.06.2018
07:46:47
И вообще в ноде поддержка была но за флагом, версии в 6

Yura
21.06.2018
07:48:20
Это я про то что си не функциональный яп
Ну не функциональный но процедурный И js тоже не функциональный

Дмитрий
21.06.2018
07:48:50
Ну не функциональный но процедурный И js тоже не функциональный
Вот только в js куда больше функциональности чем в Си

Стас
21.06.2018
07:49:00
Всем привет

Можно задать вопрос?) Весь мозг уже сломал)

Подскажите, как составить регулярное выражение)

Вида "Поиск строки - выборка из строки"

Evgeny
21.06.2018
07:50:12
?

Mikhail
21.06.2018
07:50:27


Стас
21.06.2018
07:50:42
К примеру есть строка "window.buildVersion = 1000;" в файле, надо заменить собственно цифры в этой строке)

Oleg
21.06.2018
07:50:53
+

Стас
21.06.2018
07:50:55
Извините за большое количество сообщений ?

Google
Nurik
21.06.2018
07:51:12
Да даже си умеет
Это не в стандарте, насколько я знаю, а присутсвует в реализациях компияторов. И потом, мне неизвестно зачем это нужно в си.

Стас
21.06.2018
07:52:07
ну и что сложного ?
В определении места между '=' и ';', сохранением того, что между ними

Наталья
21.06.2018
07:52:20
"window.buildVersion = 1000;".replace(/window.buildVersion = \d+;/g, 'window.buildVersion = 123')

Nurik
21.06.2018
07:52:33
В js в стандарте.
А ну, значит я про c++.

Стас
21.06.2018
07:52:58
"window.buildVersion = 1000;".replace(/window.buildVersion = \d+;/g, 'window.buildVersion = 123')
Надо не просто заменить, а куда-то сохранить содержимое

Nurik
21.06.2018
07:53:12
Наталья
21.06.2018
07:53:59
Надо не просто заменить, а куда-то сохранить содержимое
Используй джеквери с пелагинами от хрома, загугли

Стас
21.06.2018
07:54:04
fs
в плане в переменную)

Дмитрий
21.06.2018
07:54:12
Я про си.
Тем более. Там её даже в стандарте нет. А тут стандарт есть, но нигде кроме яблока не реализовано

Наталья
21.06.2018
07:54:26
в плане в переменную)
Ну да конечно, в чем в проблема то ?

Nurik
21.06.2018
07:54:48
Тем более. Там её даже в стандарте нет. А тут стандарт есть, но нигде кроме яблока не реализовано
Ну и ? Ты готов юзать рекурсию по дефолту ? Иначе нафига тебе эта хвостовая оптимизация ?

Стас
21.06.2018
07:55:24
Ну да конечно, в чем в проблема то ?
в регулярном выражении, чтобы не парсить весь файл)

Дмитрий
21.06.2018
07:55:32
Ну и ? Ты готов юзать рекурсию по дефолту ? Иначе нафига тебе эта хвостовая оптимизация ?
Я готов. И юзаю. Но только когда стек будет не сильно большой

Наталья
21.06.2018
07:55:47
Стас
21.06.2018
07:56:25
Ну да конечно, в чем в проблема то ?
"window.buildVersion = %Здесь могут быть любые цифры%;".replace(/window.buildVersion = \d+;/g, 'window.buildVersion = %Здесь могут быть любые цифры + 1%')

Nurik
21.06.2018
07:56:35
Я готов. И юзаю. Но только когда стек будет не сильно большой
Когда я писал про по дефолту, я имел ввиду отказ от циклов вообще. Как это сделано в elixir, elm.

Google
Наталья
21.06.2018
07:57:19
"window.buildVersion = %Здесь могут быть любые цифры%;".replace(/window.buildVersion = \d+;/g, 'window.buildVersion = %Здесь могут быть любые цифры + 1%')
Давай 500 рублей я тебе напишу скрипт который будет тебе менять значение любой строки

Стас
21.06.2018
07:57:35
Я понял, спасибо за помощь)

Дмитрий
21.06.2018
07:57:36
Да, готов. Кроме рекурсией в js есть map, reduce и т.д.

Boa
21.06.2018
07:58:10
в регулярном выражении, чтобы не парсить весь файл)
тебе нужно пройти в цикле по всей строке и собирать в массив по одной букве последовательно, пока не соберешь "window.buildVersion =" тут тебе нужно приготовиться и дальше начать собирать по символу в другую строку, пока не встретишь ";" дальше СТОП. первый массив выбрасываешь, во втором твой результат

Anton
21.06.2018
08:00:28
Подскажите, как составить регулярное выражение)
const str = 'window.buildVersion = 1000;' const pattern = /^(.+?)(\d+)(.+?)$/ const match = str.match(pattern) console.log(match[2]) // 1000 const newStr = str.replace(pattern, '$1' + 1337 + '$3') console.log(newStr) // window.buildVersion = 1337;

Стас
21.06.2018
08:02:36
Что-то вроде /window.buildVersion = \S;/ ?

Nurik
21.06.2018
08:03:05
Да, готов. Кроме рекурсией в js есть map, reduce и т.д.
Это конечно же хорошо. Особенно если это какой-нибудь highland с ленивыми выислениями. Но это уже либы. И потом где тут связь с рекурсией?

Наталья
21.06.2018
08:03:10
Anton
21.06.2018
08:03:34
зочем так сложно ?
ну взять всё, что до числа (группа $1), число (группа $2) и всё, что после числа до конца строки (группа $3)

а потом склеить обратно с новым числом

Дмитрий
21.06.2018
08:03:56
Boa
21.06.2018
08:04:08
/window.buildVersion = [^;]+;/
const kek = "window.buildVersion = 123123;".match(/window.buildVersion = (\d+)/); const result = kek ? kek[1] : null; console.log(result);

Стас
21.06.2018
08:04:10
Понял, спасибо большое)

Наталья
21.06.2018
08:05:17
Извените пацаны, но у меня свой JavaScript, я ваш не понимаю

Google
Anton
21.06.2018
08:06:09
если надо именно с таким текстом (window...), то можно такой паттерн /^window\.buildVersion = (\d+?);$/

Nurik
21.06.2018
08:06:31
Речь же про отказ от циклов была. Циклы почти всегда нужны для работы с массивами
Отказ от циклов, в пользу иммутабельности, практично, когда есть ленивость. и можно маппить небоясь, что памяти не хватит. Иначе цепочки мапов, будут неоптимальны, с точки зрения производителности. Особено если это нода. И не юзаются либы.

Nurik
21.06.2018
08:07:32
Лол, это жс. О какой производительности вообще речь?
Чувак, это нода. Там eventloop если ты не забыл.

Sergey
21.06.2018
08:08:38
Лол, это жс. О какой производительности вообще речь?
Что не так с производительность в js?

Дмитрий
21.06.2018
08:08:50
Sergey
21.06.2018
08:10:22
У меня есть, ЧЯДНТ?

Loljeene
21.06.2018
08:11:01
О боги, почалось

Дмитрий
21.06.2018
08:12:14
Давайте поговорим еще о многопоточности

Наталья
21.06.2018
08:16:11
Mark
21.06.2018
08:16:24
const host = new URL(url).hostname; "errorMessage": "ReferenceError: URL is not defined", Lambda Как решить?

Mark
21.06.2018
08:17:12
Нет

Mark
21.06.2018
08:17:24
Нельзя

8.10

Страница 2179 из 2748