Работа с файлами, буферами и файловыми потоками в Node.js

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 62

  • @apanchuk
    @apanchuk 4 года назад +38

    1:39 Работа с файлами
    35:12 Буферы
    43:46 Файловые потоки

  • @АлексейЗайцев-о7ч
    @АлексейЗайцев-о7ч 2 года назад +8

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

  • @RK-gm4pd
    @RK-gm4pd 4 года назад +6

    Круто! Спаибо!
    Ви в 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", - А, ну просто какая-то строчка...

  • @TimurSevimli
    @TimurSevimli Год назад +1

    Спасибо за труд Тимур Гафарович!

  • @timashoff
    @timashoff Год назад +1

    Спасибо за качественный материал!

  • @vitalii_goma
    @vitalii_goma 3 года назад +6

    Небольшое уточнение по обработке ошибок. 34:20
    "return new Error()" из main не передаст управление в .catch() метод. Для этого необходимо выбрасывать ошибку, а не возвращать ее: "throw new Error()".

  • @alexanderkrutko644
    @alexanderkrutko644 3 года назад +3

    Спасибо, как всегда интересно и познавательно, всегда что-нибудь новое да откроешь!
    Кстати, событие readable выбрасывается, когда в потоке есть данные для чтение И когда мы считали последние данные из потока, НО перед событием end.

  • @Максим-т2д9ы
    @Максим-т2д9ы 2 года назад +2

    Тимур, спасибо вам, качество материала просто огонь!

  • @LodkaGG
    @LodkaGG 3 месяца назад

    Супер интересно, спасибо

  • @ВладиславМаслов-л7ж
    @ВладиславМаслов-л7ж 2 года назад +1

    Спасибо огромное, очень интересно и полезно!

  • @ЮрийГалай-н9м
    @ЮрийГалай-н9м 4 года назад +3

    1:05:10 Заставило орнуть в голос. Огромное вам спасибо)

  • @alexanonymous5823
    @alexanonymous5823 3 года назад +2

    спасибо огромное очень полезное видео=))

  • @kakieToYroki
    @kakieToYroki 3 года назад +1

    Спасибо, отличный урок, особенно про "сложное детство в браузере" :)

  • @diyorbek5664
    @diyorbek5664 3 года назад +2

    Спасибо!🔥🔥🔥

  • @dimitro.cardellini
    @dimitro.cardellini 5 лет назад +6

    Тимур, в файле 4-error-fstat.js есть небольшая неточность:
    -- если ответы от lstat-a мы получаем в произвольном порядке, то выводить результат при обработке запроса для файла с максимальным индексом может быть ... рано.
    -- надо инкрементить/декриментить счетчик полученных ответов (в т.ч. и неуспешных) и только, когда все обработали, выводить статистику ...
    gist.github.com/DScheglov/d2d61e171ecd556428a7c2b31d119765

    • @TimurShemsedinov
      @TimurShemsedinov  5 лет назад

      Согласен, делайте pull-request в github.com/HowProgrammingWorks/Files/blob/master/JavaScript/4-error-fstat.js

    • @dimitro.cardellini
      @dimitro.cardellini 5 лет назад

      @@TimurShemsedinov github.com/HowProgrammingWorks/Files/pull/1

    • @ArgumentX1
      @ArgumentX1 Год назад

      Зашел сюда, чтобы о том же написать)

  • @тимур_атмосферный
    @тимур_атмосферный Месяц назад

    В репозитории HowProgrammingWorks/Streams есть AbortSignal, про сигналы от вас материал только в платном курсе по асинхронности?

    • @TimurShemsedinov
      @TimurShemsedinov  Месяц назад +1

      Вроде да, там ещё все лекции обновленные на состояние js 2024

  • @МаксимЖук-э2г
    @МаксимЖук-э2г Год назад +1

    Отличное видео)

  • @Antonio-fm1sq
    @Antonio-fm1sq 3 года назад +1

    Спасибо!

  • @igorsavelev9013
    @igorsavelev9013 3 года назад +2

    Такой вопрос по материалу с http сервером, который возвращает html (конец лекции): здесь, на сколько я понимаю, файл читается асинхронно, запросы на сервер тоже идут асинхронно: не получится ли так, что запрос на сервер ушел, а данные из файла еще не дочитались?

    • @igorsavelev9013
      @igorsavelev9013 3 года назад

      а, вижу, не досмотрел до ответа чуть-чуть

  • @yestalviv
    @yestalviv 4 года назад +1

    Скильки не передиввився курсів по js, петриченка, маніна і тд. А результат - нічого не розумію по Node.js це фіаско

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад

      Может это поможет: dou.ua/calendar/31588/

  • @notsure8175
    @notsure8175 3 года назад +1

    7:42 не могу понять. зачем нам buffer.toString(), ведь если мы указали кодировку, то buffer и так будет строкой.

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

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

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      Кстати, перепроверил, под видео ссылки на исходники, так я это поправил еще чуть ли ни в день лекции

  • @yehudavolodin1183
    @yehudavolodin1183 4 года назад +2

    что за оператор "!!"?
    если это два раза оператор отрицания, то разве !!line это не то же самое, что line ?

  • @aleksandr2245
    @aleksandr2245 3 года назад +1

    readFile под капотом создаёт readableStream?

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад +1

      Нет

    • @aleksandr2245
      @aleksandr2245 3 года назад +1

      @@TimurShemsedinov Спасибо!

    • @aleksandr2245
      @aleksandr2245 3 года назад

      ​ @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);
      })

    • @harrisonwinston2850
      @harrisonwinston2850 2 года назад

      @@aleksandr2245 Наверное потому, что он читает за раз по 64, следовательно за раз не сможет больше прочитать.

  • @nexgenua
    @nexgenua 4 года назад

    В 3 примере не надо коллбек делать async и дожидаться буфера через await? writeFile дождется пока файл прочитается и только потом начнет запись?

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      без таймкода невозможно понять, о чем вопрос

  • @АлМ-ы8ъ
    @АлМ-ы8ъ 4 года назад +2

    Прикольная идеха) Как называется? Терминатор?)

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад +3

      Это не IDE, а консольный файловый менеджер mc (midnight commander) со встроенным редактором mcedit, использую с 1998 года

    • @ME-ls9de
      @ME-ls9de 4 года назад +2

      @@TimurShemsedinov а чего не пользуете современный IDE, тот же WebStorm - удобный и время экономит?)

    • @TimurShemsedinov
      @TimurShemsedinov  4 года назад +5

      @@ME-ls9de Я не люблю, когда выпадает автокомплит, отовсюду лезут подсказки, все блымает, я использую midnight commander и mcedit, это вполне современный инструмент, я в нем все делаю быстрее, чем многие в штормах и эклипсах. mc не тормозит, работает везде, у меня даже на телефоне, умеет работать через ssh, ставится на любую ос и даже вовсе без ос работает, на винде.

    • @ME-ls9de
      @ME-ls9de 4 года назад +1

      @@TimurShemsedinov ну, в учебных проектах, может да. Но как быть в крупном проекте, где +100500 файлов и тд?)
      Тем более вебсторм можно как угодно кастомизировать, подключать плагины и тд, так что терминал нервно курит в сторонке

    • @ME-ls9de
      @ME-ls9de 4 года назад +1

      Хотя, что через ssh можно работать на телефоне это круто)

  • @АндрейФ-ж1э
    @АндрейФ-ж1э 6 лет назад

    Добрый день. Подскажите, в ноде есть возможность работать с файлами эксель: вытягивать из экселевских файлов данные и формировать новые экселевские файлы? Спасибо за ответ.

    • @dimitro.cardellini
      @dimitro.cardellini 5 лет назад

      В самой ноде -- нет. Но, есть масса пакетов, которые предлагают решения -- надо искать.
      www.npmjs.com/search?q=xls

    • @АндрейФ-ж1э
      @АндрейФ-ж1э 5 лет назад

      @@dimitro.cardellini Спасибо

  • @sashas.3323
    @sashas.3323 3 года назад

    Извиняюсь может за глупый вопрос , но почему то filter что на 4 минуте не удаляет у меня пустые строки , там где пустая строка, в line приходит
    и не удаляется

    • @sashas.3323
      @sashas.3323 3 года назад

      Просто не пойму почему разный результат с уроком, если так записать в фильтр line => line !== '
      ' , то вырезает

    • @unev
      @unev 3 года назад

      windows os? тогда newline обознвачается как /r/n, а не /n как в линуксе.
      нужно сплитить /r/n, либо взять { EOL } символ из require('os'), чтобы работоло везде

  • @PutlerXLO
    @PutlerXLO 3 года назад

    3:00 Ох... readFileSync и так возвращает строку при указанной кодировке, а не буфер... так что какая то вакханалия в коде.

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      Вы правы, это у меня ошибка. Надеюсь вакханалия в коде на этом исчерпана или весь код в лекции плохой? )))

    • @TimurShemsedinov
      @TimurShemsedinov  3 года назад

      Под видео есть ссылки на репозитории с кодом, перепроверил, оказалось, я это поправил еще в 2018 году

  • @legioner9mix
    @legioner9mix 5 лет назад

    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.');
    }
    }
    );
    });

  • @enoon_23984
    @enoon_23984 2 года назад

    Редактор нормальный скачайте ради бога....

  • @mew6085
    @mew6085 3 года назад +3

    base64 /dev/urandom | head -c 1M > data.txt прям напрямую указываешь в Линуксе заполняет сколько скажешь)

  • @vladimir_fomin90
    @vladimir_fomin90 Год назад +1

    на linux fedora

    • @vladimir_fomin90
      @vladimir_fomin90 Год назад

      а я пользуюсь linux mint, в заголовках не пишет что минт, linux x86 и все