
JetFightzer ?
11.11.2016
17:54:54
сделал вот такую штуку которая как-то так используется:
let a = async(reader("a.txt"))
.then(log)
.then(writer("a.2.txt"))
.catch(function(err) { console.log(new Error("A")) })
ридер и райтер = функции которые возвращают функции читающие/пишущие в файл. ошибки пробрасываются, поэтому при отсутствии а.тхт сработает catch
норм решение?

Nikolay
11.11.2016
17:55:38
а что не на стримах?

Александр
11.11.2016
17:55:45
ну, вариант.

Google

Nikolay
11.11.2016
17:55:55
так ты весь свой файл в память щас загоняешь

Vladimir
11.11.2016
17:58:01
стримы тебе нужны для последней задачи

Александр
11.11.2016
18:00:40
всм?

Vladimir
11.11.2016
18:01:16
ну не тебе =)

Александр
11.11.2016
18:02:00
его пост чуть выше

Vladimir
11.11.2016
18:02:41
дурацкий телеграм

JetFightzer ?
11.11.2016
18:21:30

Vladimir
11.11.2016
18:24:45

Google

Vladimir
11.11.2016
18:24:53

Александр
11.11.2016
18:26:54
переделывай всякий частоупотребимы стафф, чтобы сразу возвращал промис и юзай и разделяй асинхронный код и синхронный.

JetFightzer ?
11.11.2016
18:29:14
не для всех операций
ну конечно не для всех, но в общем случае нельзя гарантировать что стримы подойдут.
в примере ничего уникального, а в реальности там же then логика какая-нибудь, которая далеко не всегда описывается композицией функций

Vladimir
11.11.2016
18:29:49
чтобы в then можно было сделать минимальную функцию из более маленьких и простых

JetFightzer ?
11.11.2016
18:32:50
нужно больше фп!

[Anonymous]
11.11.2016
18:34:10
сколько много интересного написали :3

Fedor
11.11.2016
18:36:57
друзья, написать бота для телеграм долго? первый раз)
простейшего, с парочкой функций

Вячеслав
11.11.2016
18:39:25
легко
я на python писал
за вечер

Fedor
11.11.2016
18:40:29
но это с учетом знания питона, так?
констуркторов не встречали с простейшими функциями?

Вячеслав
11.11.2016
18:44:42
ну там не так уж и сильно нужно было знать язык, понять работу декораторов только нужно, если раньше не встречал такого

Fedor
11.11.2016
18:47:01
бота только напитоне пишут?

Vladislav
11.11.2016
18:48:09
Хоть на баше
Хоть на VBA

Каїн
11.11.2016
19:17:13
Ппцтупые примеры

Google

Каїн
11.11.2016
19:17:28
Столько либ уже , обписаться
От слова писать

Alex
11.11.2016
19:22:15
скажите плиз, синхронный метод чтения файла работает быстрей чем асинхронный ?

Fedor
11.11.2016
19:23:24
писать или писать?

Naumenko
11.11.2016
19:29:58
да, синхронный метод чтения файла работает быстрее

Nikolay
11.11.2016
19:39:38
@Teac_j но он блокирует основной поток выполнения программы

Alex
11.11.2016
19:42:55
я тестирую чтение файла, и асинхронный вызываю первым. В консоел ответ по синхронному получаю раньше чем асинхронный
$ node readFile.js
Done in sync 1486780 nanoseconds
Done in async 29085268 nanoseconds

[Anonymous]
11.11.2016
19:45:09
а какой тест, можешь показать?

Alex
11.11.2016
19:48:58
var fs = require('fs');
var begin = process.hrtime()[1];
var fclcAsync = fs.readFile('clickerHeroSaveJson.txt', {encoding: 'utf8'}, function (err, data) {
if (err) throw err;
var end = process.hrtime()[1];
console.log("Done in async " + (end-begin) + " nanoseconds");
});
var begin2 = process.hrtime()[1];
var fclcSync = fs.readFileSync('clickerHeroSaveJson.txt', {encoding: 'utf8'});
var end2 = process.hrtime()[1];
console.log("Done in sync " + (end2-begin2) + " nanoseconds");

Каїн
11.11.2016
19:52:22
Я думал что одинаковое время

Каїн
11.11.2016
19:52:29
Так как потоков в жс нету
Но это наверное было бы в веб а не ноде
С горя напьюсь
Хороших вам выходных, программисты гг

[Anonymous]
11.11.2016
19:53:24
не пей, не будь как все

Naumenko
11.11.2016
19:53:34
Дело в том, что при асинхронной операции Node начнет читать файл в фоновом режиме, а при синхронной блокируется поток выполнения прогаммы, поэтому синхронные операции выполнются быстрее
Поправьте меня, если я ошибаюсь, всякое может быть

Alex
11.11.2016
19:55:51
судя по докам ты права

Google

[Anonymous]
11.11.2016
19:56:58
ну в браузере даже не знаю
ведь вкладка = один поток
если брать в8
фоновых процессов нет

hamper ?
11.11.2016
19:57:29
асинхронные файловые операции в отдельном потоке выполняются так что на скорость не повлияет, там же libuv
ну и другая асинхронщина, ну при учете что ядро процессора в 100% не уперлось конечно

Naumenko
11.11.2016
20:01:33
Есть ответ на стэк
http://stackoverflow.com/questions/13822085/fs-readfilesync-seems-faster-than-fs-readfile-is-it-ok-to-use-for-a-web-app-in

Vladimir
11.11.2016
20:02:32
tldr: No, it is not OK to use a blocking API call in a node server as you describe.
как и говорилось тысячу раз

Admin
ERROR: S client not available

Naumenko
11.11.2016
20:06:23
да, но вопрос был ведь в том, что быстрее. Вот еще хорошая статья
https://habrahabr.ru/post/150788/
http://joxi.ru/Grq94MoT0oaOrz

darkwoolf
11.11.2016
20:06:35
как сделать пулл форкнутого репозитория на свой локальный?
всем привет

[Anonymous]
11.11.2016
20:06:56
быстрее на фор и иф писать :)
но не интересно, скучно и много времени и ещё лексическая среда общая

hamper ?
11.11.2016
20:11:01

Naumenko
11.11.2016
20:11:51
извините, если мой ответ был не полный, я не говорила, что это хорошо. Пыталась объяснить, почему синхронное чтение файлов быстрее работает. Но выше я прикрепила статью, где описанны основы многопоточности в ноде, там это должно быть намного понятней тому, кто спрашивал
у автора это получилось намного лучше, чем у меня )

hamper ?
11.11.2016
20:12:33
git remote add fork https://.../..git; git fetch fork; git merge fork/master

Name
11.11.2016
20:15:26

Alex
11.11.2016
20:19:19
и где здесь измерено время асинхронного чтения файла?
var fclcAsync = fs.readFile('clickerHeroSaveJson.txt', {encoding: 'utf8'}, function (err, data) {
if (err) throw err;
var end = process.hrtime()[1];
console.log("Done in async " + (end-begin) + " nanoseconds");
});

Google

Alex
11.11.2016
20:19:30
вот здесь я так полагаю

hamper ?
11.11.2016
20:25:11
оверхед на колбек еще надо учитывать

Name
11.11.2016
20:26:08
вот здесь я так полагаю
почему отчёт начат в момент добавления чтения в IO очередь, а не после регистрации обработчика и вызова process.nextTick?
Я про то, что в итоге замеряется совсем не то

hamper ?
11.11.2016
20:26:18
var fclcSync = (() => fs.readFileSync('clickerHeroSaveJson.txt', {encoding: 'utf8'}))();

Name
11.11.2016
20:27:28

Alex
11.11.2016
20:29:44
Done in sync 1576754 nanoseconds
Done in async 34300630 nanoseconds
вроде так же
вообщем не использовать синхронный ?

Nikolay
11.11.2016
20:36:05
почему
ты можешь как консольную утилиту использовать
через exec

Name
11.11.2016
20:51:29

Alex
11.11.2016
20:53:11
Done in sync 1486781 nanoseconds
Done in async 133205729 nanoseconds
разница огромная прям

Name
11.11.2016
20:55:27
разница огромная прям
https://0bin.net/paste/W6g-YisbmOmumjHO#Rxf1iBdU12QCcTq5Qij4R4ufmXSCyOylk-gdoYMlwbY а теперь посмотри вот этот (тоже не совсем корректный, но тут мы хоть не меряем ожидание нового цикла)

Alex
11.11.2016
20:56:09
Done in sync 23969115 nanoseconds
Done in async 2375564 nanoseconds

Nikolay
11.11.2016
20:57:02
надо мерять в двух разных файлах
по очереди
а не в одном

Name
11.11.2016
20:59:31
да, конечно, и уж тем более не один раз, и тем более не измерять задержки файловой системы, я просто указал принципиальную ошибку

hamper ?
11.11.2016
21:11:30
надо во первых хотя бы несколько сотен измерений проводить, во вторых там куча факторов которые могут влиять, от общей загруженности процессора, до оверхедов на создание функций и прочее

[Anonymous]
11.11.2016
21:13:37
на разных осях, машинах и выводить общее среднее?