Круто! Спаибо! Ви в 2018 сделали то, чего не хватает Samer Buna в его updated Node's Streams: разжевали на "живих" примерах. Теперь и Buna стал для меня хорошо понятен. А в сочетании с "Школа Метархии по программной инженерии на конференции Одесса JS 2018" складивается более или менее приличний пазл. Супер! Thanks so much! 29:57 hot reload )) 1:00:11 True back-end! "html is crap", - А, ну просто какая-то строчка...
Небольшое уточнение по обработке ошибок. 34:20 "return new Error()" из main не передаст управление в .catch() метод. Для этого необходимо выбрасывать ошибку, а не возвращать ее: "throw new Error()".
Спасибо, как всегда интересно и познавательно, всегда что-нибудь новое да откроешь! Кстати, событие readable выбрасывается, когда в потоке есть данные для чтение И когда мы считали последние данные из потока, НО перед событием end.
Тимур, в файле 4-error-fstat.js есть небольшая неточность: -- если ответы от lstat-a мы получаем в произвольном порядке, то выводить результат при обработке запроса для файла с максимальным индексом может быть ... рано. -- надо инкрементить/декриментить счетчик полученных ответов (в т.ч. и неуспешных) и только, когда все обработали, выводить статистику ... gist.github.com/DScheglov/d2d61e171ecd556428a7c2b31d119765
Такой вопрос по материалу с http сервером, который возвращает html (конец лекции): здесь, на сколько я понимаю, файл читается асинхронно, запросы на сервер тоже идут асинхронно: не получится ли так, что запрос на сервер ушел, а данные из файла еще не дочитались?
@Timur Shemsedinov Тимур, может Вы знаете, почему readable вызывается два раза, в том числе и при частичном считывании внутреннего буфера? есть небольшой файл read.txt с одной строкой (я пробовал и большой файл, больше 64кб (больше размера внутреннего буфера)) и в таком примере в обоих случаях 'readable' вызывается два раза, не понимаю, почему так происходит const stream = fs.createReadStream('read.txt', { encoding: 'utf-8' }); stream.on('readable', () => { console.log('readable'); const data = stream.read(1); console.log(data); })
@@ME-ls9de Я не люблю, когда выпадает автокомплит, отовсюду лезут подсказки, все блымает, я использую midnight commander и mcedit, это вполне современный инструмент, я в нем все делаю быстрее, чем многие в штормах и эклипсах. mc не тормозит, работает везде, у меня даже на телефоне, умеет работать через ssh, ставится на любую ос и даже вовсе без ос работает, на винде.
@@TimurShemsedinov ну, в учебных проектах, может да. Но как быть в крупном проекте, где +100500 файлов и тд?) Тем более вебсторм можно как угодно кастомизировать, подключать плагины и тд, так что терминал нервно курит в сторонке
Добрый день. Подскажите, в ноде есть возможность работать с файлами эксель: вытягивать из экселевских файлов данные и формировать новые экселевские файлы? Спасибо за ответ.
Извиняюсь может за глупый вопрос , но почему то filter что на 4 минуте не удаляет у меня пустые строки , там где пустая строка, в line приходит и не удаляется
windows os? тогда newline обознвачается как /r/n, а не /n как в линуксе. нужно сплитить /r/n, либо взять { EOL } символ из require('os'), чтобы работоло везде
1:39 Работа с файлами
35:12 Буферы
43:46 Файловые потоки
Тимур, спасибо огромное вам за труд! Материал очень крутой и аналогов по качеству на просторах русскоязычного ютуба, как мне кажется нет.
Круто! Спаибо!
Ви в 2018 сделали то, чего не хватает Samer Buna в его updated Node's Streams: разжевали на "живих" примерах. Теперь и Buna стал для меня хорошо понятен. А в сочетании с "Школа Метархии по программной инженерии на конференции Одесса JS 2018" складивается более или менее приличний пазл. Супер! Thanks so much!
29:57 hot reload ))
1:00:11 True back-end!
"html is crap", - А, ну просто какая-то строчка...
Спасибо за труд Тимур Гафарович!
Спасибо за качественный материал!
Небольшое уточнение по обработке ошибок. 34:20
"return new Error()" из main не передаст управление в .catch() метод. Для этого необходимо выбрасывать ошибку, а не возвращать ее: "throw new Error()".
Спасибо, как всегда интересно и познавательно, всегда что-нибудь новое да откроешь!
Кстати, событие readable выбрасывается, когда в потоке есть данные для чтение И когда мы считали последние данные из потока, НО перед событием end.
Тимур, спасибо вам, качество материала просто огонь!
Супер интересно, спасибо
Спасибо огромное, очень интересно и полезно!
1:05:10 Заставило орнуть в голос. Огромное вам спасибо)
спасибо огромное очень полезное видео=))
Спасибо, отличный урок, особенно про "сложное детство в браузере" :)
Спасибо!🔥🔥🔥
Тимур, в файле 4-error-fstat.js есть небольшая неточность:
-- если ответы от lstat-a мы получаем в произвольном порядке, то выводить результат при обработке запроса для файла с максимальным индексом может быть ... рано.
-- надо инкрементить/декриментить счетчик полученных ответов (в т.ч. и неуспешных) и только, когда все обработали, выводить статистику ...
gist.github.com/DScheglov/d2d61e171ecd556428a7c2b31d119765
Согласен, делайте pull-request в github.com/HowProgrammingWorks/Files/blob/master/JavaScript/4-error-fstat.js
@@TimurShemsedinov github.com/HowProgrammingWorks/Files/pull/1
Зашел сюда, чтобы о том же написать)
В репозитории HowProgrammingWorks/Streams есть AbortSignal, про сигналы от вас материал только в платном курсе по асинхронности?
Вроде да, там ещё все лекции обновленные на состояние js 2024
Отличное видео)
Спасибо!
Такой вопрос по материалу с http сервером, который возвращает html (конец лекции): здесь, на сколько я понимаю, файл читается асинхронно, запросы на сервер тоже идут асинхронно: не получится ли так, что запрос на сервер ушел, а данные из файла еще не дочитались?
а, вижу, не досмотрел до ответа чуть-чуть
Скильки не передиввився курсів по js, петриченка, маніна і тд. А результат - нічого не розумію по Node.js це фіаско
Может это поможет: dou.ua/calendar/31588/
7:42 не могу понять. зачем нам buffer.toString(), ведь если мы указали кодировку, то buffer и так будет строкой.
На этом таймкоде я говорю о совсем другом, но чуть выше действительно я зря перевожу буфер в строку, это у меня ошибка
Кстати, перепроверил, под видео ссылки на исходники, так я это поправил еще чуть ли ни в день лекции
что за оператор "!!"?
если это два раза оператор отрицания, то разве !!line это не то же самое, что line ?
line это string, а !!line это boolean
readFile под капотом создаёт readableStream?
Нет
@@TimurShemsedinov Спасибо!
@Timur Shemsedinov Тимур, может Вы знаете, почему readable вызывается два раза, в том числе и при частичном считывании внутреннего буфера?
есть небольшой файл read.txt с одной строкой (я пробовал и большой файл, больше 64кб (больше размера внутреннего буфера)) и в таком примере в обоих случаях 'readable' вызывается два раза, не понимаю, почему так происходит
const stream = fs.createReadStream('read.txt', { encoding: 'utf-8' });
stream.on('readable', () => {
console.log('readable');
const data = stream.read(1);
console.log(data);
})
@@aleksandr2245 Наверное потому, что он читает за раз по 64, следовательно за раз не сможет больше прочитать.
В 3 примере не надо коллбек делать async и дожидаться буфера через await? writeFile дождется пока файл прочитается и только потом начнет запись?
без таймкода невозможно понять, о чем вопрос
Прикольная идеха) Как называется? Терминатор?)
Это не IDE, а консольный файловый менеджер mc (midnight commander) со встроенным редактором mcedit, использую с 1998 года
@@TimurShemsedinov а чего не пользуете современный IDE, тот же WebStorm - удобный и время экономит?)
@@ME-ls9de Я не люблю, когда выпадает автокомплит, отовсюду лезут подсказки, все блымает, я использую midnight commander и mcedit, это вполне современный инструмент, я в нем все делаю быстрее, чем многие в штормах и эклипсах. mc не тормозит, работает везде, у меня даже на телефоне, умеет работать через ssh, ставится на любую ос и даже вовсе без ос работает, на винде.
@@TimurShemsedinov ну, в учебных проектах, может да. Но как быть в крупном проекте, где +100500 файлов и тд?)
Тем более вебсторм можно как угодно кастомизировать, подключать плагины и тд, так что терминал нервно курит в сторонке
Хотя, что через ssh можно работать на телефоне это круто)
Добрый день. Подскажите, в ноде есть возможность работать с файлами эксель: вытягивать из экселевских файлов данные и формировать новые экселевские файлы? Спасибо за ответ.
В самой ноде -- нет. Но, есть масса пакетов, которые предлагают решения -- надо искать.
www.npmjs.com/search?q=xls
@@dimitro.cardellini Спасибо
Извиняюсь может за глупый вопрос , но почему то filter что на 4 минуте не удаляет у меня пустые строки , там где пустая строка, в line приходит
и не удаляется
Просто не пойму почему разный результат с уроком, если так записать в фильтр line => line !== '
' , то вырезает
windows os? тогда newline обознвачается как /r/n, а не /n как в линуксе.
нужно сплитить /r/n, либо взять { EOL } символ из require('os'), чтобы работоло везде
3:00 Ох... readFileSync и так возвращает строку при указанной кодировке, а не буфер... так что какая то вакханалия в коде.
Вы правы, это у меня ошибка. Надеюсь вакханалия в коде на этом исчерпана или весь код в лекции плохой? )))
Под видео есть ссылки на репозитории с кодом, перепроверил, оказалось, я это поправил еще в 2018 году
const server = http.createServer((req, res) => {
console.log({req, res});
res.writeHead(200, { 'Content-Encoding': 'gzip' });
pipeline(
rs,
gs,
res,
(err) => {
if (err) {
console.error('Pipeline failed.', err);
} else {
console.log('Pipeline succeeded.');
}
}
);
});
Редактор нормальный скачайте ради бога....
base64 /dev/urandom | head -c 1M > data.txt прям напрямую указываешь в Линуксе заполняет сколько скажешь)
на linux fedora
а я пользуюсь linux mint, в заголовках не пишет что минт, linux x86 и все