рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреЛрдИ рдлрд┐рд░ рд╕реЗ рдЧрд▓рдд рд╣реИ - рдХрд▓ рдиреЛрдб рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдореЗрдВ рдПрдХ рдкреЛрд╕реНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд▓реЗрдЦрдХ рдиреЛрдб рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдФрд░ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╕реА рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╣ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:
... рдпрд╣ рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛, рддреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реБрдИред рд╣рд╛рд▓рд╛рдБрдХрд┐ Node.js рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдлрд┐рд░ рднреА рдЗрд╕рдиреЗ рдСрдкрд░реЗрд╢рди рдХрд░рддреЗ рд╕рдордп рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд╣реЛрд▓реНрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛
рдЖрдЗрдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд▓реЗрдЦрдХ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред
рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░реАрдо'рдЖрдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЕрдХреНрд╕рд░ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ:
- Node.js рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдХреА рдЬрдЯрд┐рд▓ рдХрд╣рд╛рдиреА - рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рджрд░реНрдж рдФрд░ рдкреАрдбрд╝рд╛
- рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реИрдкрд░ рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдмрд╕реЗ рд╕рд╣рдЬ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИ
- рдмрд╣реБрдд рдЕрдЬреАрдм рдкреНрд░рд▓реЗрдЦрди рдЬреЛ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдФрд░ рдирд┐рдореНрди-рд╕реНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ
рд╕рднреА рдПрдХ рд╕рд╛рде, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреИрд╕реЗ рдФрд░ рдХреИрд╕реЗ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд▓реЗрдЦрдХ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдХрд╛рд░реНрдп рджреЛрд╣рд░рд╛рдПрдВ (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ):
рдлреЙрд░реНрдо рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд 2.5 рдЬреАрдмреА рдлрд╝рд╛рдЗрд▓ рд╣реИ:
C00084871|N|M3|P|201703099050762757|15|IND|COLLINS, DARREN ROBERT|SOUTHLAKE|TX|760928782|CELANESE|VPCHOP&TECH|02282017|153||PR2552193345215|1151824||P/R DEDUCTION ($76.92 BI-WEEKLY)|4030920171380058715
рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
- рекрейреи рд╡реАрдВ рдФрд░ рекрейреирекрей рд╡реАрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдирд╛рдо (рдпрд╣рд╛рдВ рд╕рддреНрдп рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдЧрд┐рдирддреА рдХреИрд╕реЗ рдХреА рдЬрд╛рдП, реж рдпрд╛ рез рд╕реЗ?)
- рд╕рдмрд╕реЗ рдЖрдо рдирд╛рдо рдФрд░ рдпрд╣ рдХрд┐рддрдиреА рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ
- рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд╣ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реНрддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ? - рд▓реЗрдЦрдХ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдиреЛрдб "рд╣реИрдВрдЧ" рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓реЗрдЦрдХ рд╣рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рджреЗрддрд╛ рд╣реИред
рдордЬреЗрджрд╛рд░ рддрдереНрдп: Node.js рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореЗрдВ 1.67GB рддрдХ рдореЗрдореЛрд░реА рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
рд▓реЗрдЦрдХ рдЗрд╕ рддрдереНрдп рд╕реЗ рдПрдХ рдЕрдЬреАрдм рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░реАрдо рд╣реИ рдЬреЛ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддреА рд╣реИ, рдФрд░ рдЙрд╕рдиреЗ рдЧрд▓рдд рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред
рдЪрд▓реЛ рдереАрд╕рд┐рд╕ рдХрд╛ рдЦрдВрдбрди рдХрд░рддреЗ рд╣реИрдВ: " рд╣рд╛рд▓рд╛рдВрдХрд┐ Node.js рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдлрд┐рд░ рднреА рдпрд╣ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реЛрд▓реНрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ", рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдХрд░ рдЬреЛ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛:
const { Writable } = require('stream') const fs = require('fs') const split = require('split') let counter = 0 const linecounter = new Writable({ write(chunk, encoding, callback) { counter = counter + 1 callback() }, writev(chunks, callback) { counter = counter + chunks.length callback() } }) fs.createReadStream('itcont.txt') .pipe(split()) .pipe(linecounter) linecounter.on('finish', function() { console.log(counter) })
NB : рдХреЛрдб рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЦрд░рд╛рдм рд╣реИрдВ!
рдЖрдкрдХреЛ рдХрд┐рди рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╕реНрдкреНрд▓рд┐рдЯ - npm рдПрдХ рдкреИрдХреЗрдЯ рдЬреЛ "рдЗрдирдкреБрдЯ" рдкрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде "рдЖрдЙрдЯрдкреБрдЯ" рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреА рдПрдХ рдзрд╛рд░рд╛ рджреЗрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдзрд╛рд░рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЧрдИ рд╣реИред рд╣рдо рдЗрд╕реЗ рдПрдХ рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ ReadStream рдореЗрдВ рдкрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЦреБрдж рдХреЛ рдкрд╛рдЗрдк рдореЗрдВ ...
- linecounter - WritableStream рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдЗрд╕рдореЗрдВ, рд╣рдо рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдЯреБрдХрдбрд╝рд╛ (рдЪрдВрдХ) рдФрд░ рдХрдИ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдПред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ "рд▓рд╛рдЗрди" рдХреЛрдб рдХреА рд▓рд╛рдЗрди рд╣реИред рд░рд┐рд╡рд░реНрд╕ - рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣рдордиреЗ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдПрдкреАрдЖрдИ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ "рдЯреБрдХрдбрд╝реЛрдВ" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ
- 'рдЦрддреНрдо' - рдРрд╕реА рдШрдЯрдирд╛рдПрдВ рдЬреЛ "рддрдм рд╣реЛрддреА рд╣реИрдВ" рдЬрдм рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рд░реАрдбреЗрдмрд▓рд╕реНрдЯреНрд░реАрдо рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ "рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ"ред рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╣рдо рдХрд╛рдЙрдВрдЯрд░ рдбреЗрдЯрд╛ рдЧрд┐рд░рд╡реА рд░рдЦ рджреЗрддреЗ рд╣реИрдВ
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдПрдХ рдмрдбрд╝реЗ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
> node linecounter.js 13903993
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрд┐рд╕ рдЪреАрдЬ рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреЛрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдХрдерди рдХреЛ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣, рд╣рдо рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрддрд╛рдПрдВ:
- рдХреНрдпрд╛ рдЖрдк рдкрдврд╝рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рдП?
- рдХреНрдпрд╛ рдЖрдк рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛?