﻿1
00:00:01,280 --> 00:00:04,030
‫Instruktur: Aliran adalah konsep mendasar lainnya di

2
00:00:04,030 --> 00:00:05,260
‫Node.js. JS.

3
00:00:05,260 --> 00:00:07,063
‫Jadi sekarang mari kita pelajari semua tentang mereka.

4
00:00:08,370 --> 00:00:11,020
‫Jadi pertama-tama, apa itu stream?

5
00:00:11,020 --> 00:00:15,530
‫Nah, dengan stream kita bisa memproses artinya membaca dan menulis

6
00:00:15,530 --> 00:00:19,150
‫data sepotong demi sepotong tanpa menyelesaikan seluruh operasi

7
00:00:19,150 --> 00:00:20,760
‫baca atau tulis.

8
00:00:20,760 --> 00:00:23,930
‫Oleh karena itu kita tidak perlu menyimpan semua data

9
00:00:23,930 --> 00:00:26,080
‫dalam memori untuk melakukan operasi ini.

10
00:00:26,080 --> 00:00:29,020
‫Misalnya, ketika kita membaca file menggunakan

11
00:00:29,020 --> 00:00:31,990
‫stream, kita membaca sebagian data, melakukan

12
00:00:31,990 --> 00:00:36,080
‫sesuatu dengannya, lalu mengosongkan memori, dan mengulanginya hingga seluruh

13
00:00:36,080 --> 00:00:37,510
‫file diproses.

14
00:00:37,510 --> 00:00:39,870
‫Atau pikirkan YouTube atau Netflix,

15
00:00:39,870 --> 00:00:42,210
‫yang keduanya disebut perusahaan

16
00:00:42,210 --> 00:00:45,540
‫streaming karena streaming video menggunakan prinsip yang sama.

17
00:00:45,540 --> 00:00:48,940
‫Jadi, alih-alih menunggu hingga seluruh file video dimuat,

18
00:00:48,940 --> 00:00:52,051
‫pemrosesan dilakukan sepotong demi sepotong atau sepotong-sepotong

19
00:00:52,051 --> 00:00:55,700
‫sehingga Anda dapat mulai menonton bahkan sebelum seluruh

20
00:00:55,700 --> 00:00:57,180
‫file diunduh.

21
00:00:57,180 --> 00:01:00,140
‫Jadi prinsipal di sini bukan hanya tentang Node.js. JS.

22
00:01:00,140 --> 00:01:03,620
‫Tapi universal untuk ilmu komputer pada umumnya.

23
00:01:03,620 --> 00:01:07,250
‫Jadi seperti yang Anda lihat, ini menjadikan streaming kandidat yang

24
00:01:07,250 --> 00:01:10,490
‫sempurna untuk menyerahkan data dalam jumlah besar seperti

25
00:01:10,490 --> 00:01:14,280
‫misalnya, video atau juga data yang kami terima sepotong demi

26
00:01:14,280 --> 00:01:16,250
‫sepotong dari sumber eksternal.

27
00:01:16,250 --> 00:01:19,270
‫Selain itu, streaming membuat pemrosesan data lebih efisien

28
00:01:19,270 --> 00:01:21,960
‫dari segi memori karena tidak

29
00:01:21,960 --> 00:01:25,530
‫perlu menyimpan semua data di memori dan juga dari

30
00:01:25,530 --> 00:01:28,470
‫segi waktu karena kita bisa mulai memproses data

31
00:01:28,470 --> 00:01:31,223
‫saat tiba, daripada menunggu sampai semuanya tiba.

32
00:01:32,430 --> 00:01:35,210
‫Oke, jadi sekarang kita tahu apa itu stream,

33
00:01:35,210 --> 00:01:37,870
‫mari kita bicara sedikit tentang bagaimana implementasinya di

34
00:01:37,870 --> 00:01:39,100
‫Node.js. JS.

35
00:01:39,100 --> 00:01:43,197
‫Jadi di Node, ada empat jenis aliran dasar: aliran

36
00:01:43,197 --> 00:01:46,583
‫yang dapat dibaca, aliran yang dapat ditulis, aliran

37
00:01:46,583 --> 00:01:48,700
‫dupleks, dan aliran transformasi.

38
00:01:48,700 --> 00:01:50,780
‫Tetapi yang dapat dibaca dan ditulis

39
00:01:50,780 --> 00:01:52,370
‫adalah yang paling penting.

40
00:01:52,370 --> 00:01:55,370
‫Jadi kita akan lebih fokus pada keduanya.

41
00:01:55,370 --> 00:01:58,660
‫Jadi aliran yang dapat dibaca adalah aliran yang darinya kita dapat membaca.

42
00:01:58,660 --> 00:02:02,410
‫Kita bisa mengkonsumsi data, masuk akal kan?

43
00:02:02,410 --> 00:02:06,080
‫Sekarang aliran ada di mana-mana di modul inti Node.

44
00:02:06,080 --> 00:02:09,010
‫Jadi agak seperti acara, seperti yang kita bicarakan sebelumnya.

45
00:02:09,010 --> 00:02:12,490
‫Misalnya, data yang masuk saat server http mendapat

46
00:02:12,490 --> 00:02:15,700
‫permintaan sebenarnya adalah aliran yang dapat dibaca.

47
00:02:15,700 --> 00:02:19,160
‫Jadi semua data yang dikirim dengan permintaan datang sepotong

48
00:02:19,160 --> 00:02:22,490
‫demi sepotong dan tidak dalam satu bagian besar.

49
00:02:22,490 --> 00:02:25,270
‫Juga contoh lain dari sistem file adalah

50
00:02:25,270 --> 00:02:27,867
‫kita dapat membaca file sepotong

51
00:02:27,867 --> 00:02:31,170
‫demi sepotong dengan menggunakan layar baca dari modul

52
00:02:31,170 --> 00:02:35,010
‫FS, yang sebenarnya bisa sangat berguna untuk file teks besar.

53
00:02:35,010 --> 00:02:37,400
‫Baiklah, sekarang hal penting lainnya yang

54
00:02:37,400 --> 00:02:39,994
‫perlu diperhatikan adalah bahwa stream sebenarnya adalah

55
00:02:39,994 --> 00:02:42,320
‫instance dari kelas EventEmitter.

56
00:02:42,320 --> 00:02:45,490
‫Artinya semua aliran dapat memancarkan dan mendengarkan

57
00:02:45,490 --> 00:02:46,730
‫peristiwa bernama.

58
00:02:46,730 --> 00:02:49,530
‫Sama seperti yang kita pelajari di kuliah terakhir.

59
00:02:49,530 --> 00:02:52,260
‫Dalam hal aliran yang dapat dibaca, mereka dapat memancarkan,

60
00:02:52,260 --> 00:02:54,710
‫dan kami dapat mendengarkan banyak acara berbeda.

61
00:02:54,710 --> 00:02:58,920
‫Tetapi dua yang paling penting adalah data dan peristiwa akhir.

62
00:02:58,920 --> 00:03:01,660
‫Peristiwa data dipancarkan ketika ada bagian data

63
00:03:01,660 --> 00:03:03,020
‫baru untuk dikonsumsi,

64
00:03:03,020 --> 00:03:05,710
‫dan peristiwa akhir dipancarkan segera setelah tidak

65
00:03:05,710 --> 00:03:07,920
‫ada lagi data untuk dikonsumsi.

66
00:03:07,920 --> 00:03:09,570
‫Dan tentu saja, kita kemudian dapat bereaksi

67
00:03:09,570 --> 00:03:11,220
‫terhadap peristiwa ini sesuai dengan itu.

68
00:03:11,220 --> 00:03:14,670
‫Dan sebenarnya kita akan melakukan hal itu di video berikutnya.

69
00:03:14,670 --> 00:03:17,193
‫Jadi untuk berlatih bagaimana bekerja dengan aliran.

70
00:03:18,170 --> 00:03:21,350
‫Terakhir, selain event, kita juga memiliki fungsi penting yang bisa

71
00:03:21,350 --> 00:03:23,050
‫kita gunakan di stream.

72
00:03:23,050 --> 00:03:25,110
‫Dan dalam kasus aliran yang

73
00:03:25,110 --> 00:03:28,770
‫dapat dibaca, yang paling penting adalah pipa dan fungsi baca.

74
00:03:28,770 --> 00:03:31,760
‫Dan sekali lagi, Anda akan melihat ini beraksi di

75
00:03:31,760 --> 00:03:34,470
‫video berikutnya, terutama fungsi pipa yang sangat

76
00:03:34,470 --> 00:03:37,520
‫penting, yang pada dasarnya memungkinkan kita menyambungkan aliran bersama-sama,

77
00:03:37,520 --> 00:03:39,960
‫meneruskan data dari satu aliran ke

78
00:03:39,960 --> 00:03:43,040
‫aliran lainnya tanpa harus terlalu mengkhawatirkan peristiwa sama sekali.

79
00:03:43,040 --> 00:03:45,893
‫Oke, selanjutnya, aliran yang dapat ditulis adalah aliran yang

80
00:03:45,893 --> 00:03:48,060
‫dapat kita gunakan untuk menulis data.

81
00:03:48,060 --> 00:03:51,330
‫Jadi pada dasarnya, kebalikan dari aliran yang dapat dibaca.

82
00:03:51,330 --> 00:03:55,440
‫Contoh yang bagus adalah respons http yang dapat kami kirim kembali ke

83
00:03:55,440 --> 00:03:58,530
‫klien dan yang sebenarnya merupakan aliran yang dapat ditulisi.

84
00:03:58,530 --> 00:04:01,760
‫Jadi aliran tempat kita bisa menulis data.

85
00:04:01,760 --> 00:04:04,650
‫Jadi ketika kita ingin mengirim data, kita harus menuliskannya di suatu

86
00:04:04,650 --> 00:04:05,483
‫tempat, bukan?

87
00:04:05,483 --> 00:04:09,200
‫Dan itu di suatu tempat adalah aliran yang dapat ditulis,

88
00:04:09,200 --> 00:04:11,570
‫dan itu masuk akal, bukan?

89
00:04:11,570 --> 00:04:14,750
‫Misalnya, jika kami ingin mengirim file video besar

90
00:04:14,750 --> 00:04:17,182
‫ke klien, kami akan mengalirkan

91
00:04:17,182 --> 00:04:20,120
‫hasil itu seperti yang dilakukan Netflix atau YouTube.

92
00:04:20,120 --> 00:04:23,130
‫Sekarang tentang event, yang terpenting adalah

93
00:04:23,130 --> 00:04:25,268
‫event drain dan finish.

94
00:04:25,268 --> 00:04:27,040
‫Dan fungsi yang paling penting

95
00:04:27,040 --> 00:04:29,000
‫adalah fungsi tulis dan akhir, beberapa

96
00:04:29,000 --> 00:04:31,850
‫di antaranya akan Anda lihat beraksi di kuliah berikutnya.

97
00:04:32,720 --> 00:04:34,830
‫Sekarang cepat tentang aliran dupleks.

98
00:04:34,830 --> 00:04:38,070
‫Mereka hanyalah aliran yang dapat dibaca dan ditulis pada

99
00:04:38,070 --> 00:04:39,530
‫saat yang bersamaan.

100
00:04:39,530 --> 00:04:41,140
‫Ini agak kurang umum.

101
00:04:41,140 --> 00:04:44,320
‫Tapi bagaimanapun, contoh yang baik adalah soket web

102
00:04:44,320 --> 00:04:45,980
‫dari modul net.

103
00:04:45,980 --> 00:04:49,194
‫Dan soket web pada dasarnya hanyalah

104
00:04:49,194 --> 00:04:53,130
‫saluran komunikasi antara klien dan server yang bekerja

105
00:04:53,130 --> 00:04:56,840
‫dua arah dan tetap terbuka setelah koneksi dibuat.

106
00:04:56,840 --> 00:05:00,191
‫Akhirnya, transformasi stream adalah aliran dupleks, jadi

107
00:05:00,191 --> 00:05:03,670
‫aliran yang dapat dibaca dan ditulis, yang pada

108
00:05:03,670 --> 00:05:06,588
‫saat yang sama dapat mengubah

109
00:05:06,588 --> 00:05:09,900
‫atau mengubah data saat dibaca atau ditulis.

110
00:05:09,900 --> 00:05:12,970
‫Contoh bagus dari yang satu ini adalah

111
00:05:12,970 --> 00:05:17,250
‫modul inti zlib untuk mengompresi data yang sebenarnya menggunakan aliran transformasi.

112
00:05:17,250 --> 00:05:20,220
‫Baiklah, dan itulah empat jenis aliran

113
00:05:20,220 --> 00:05:23,300
‫dan gambaran umum tentang bagaimana kita dapat menggunakannya.

114
00:05:23,300 --> 00:05:25,220
‫Sekarang ada sesuatu yang penting

115
00:05:25,220 --> 00:05:26,470
‫untuk disebutkan di

116
00:05:26,470 --> 00:05:29,140
‫sini sebelum kita melanjutkan, yaitu fakta bahwa peristiwa

117
00:05:29,140 --> 00:05:32,010
‫dan fungsi yang saya tunjukkan ini adalah untuk

118
00:05:32,010 --> 00:05:34,680
‫menggunakan aliran yang sudah diimplementasikan seperti yang

119
00:05:34,680 --> 00:05:37,320
‫saya tunjukkan di sini sebagai contoh kami.

120
00:05:37,320 --> 00:05:41,000
‫Jadi misalnya, Node mengimplementasikan permintaan dan tanggapan http ini

121
00:05:41,000 --> 00:05:42,750
‫sebagai aliran, dan

122
00:05:42,750 --> 00:05:45,550
‫kemudian kita dapat mengkonsumsinya, kita dapat menggunakannya

123
00:05:45,550 --> 00:05:48,130
‫menggunakan peristiwa dan fungsi yang tersedia

124
00:05:48,130 --> 00:05:50,170
‫untuk setiap jenis aliran.

125
00:05:50,170 --> 00:05:52,980
‫Tentu saja kita juga dapat mengimplementasikan aliran kita

126
00:05:52,980 --> 00:05:56,660
‫sendiri dan kemudian mengkonsumsinya menggunakan peristiwa dan fungsi yang sama ini.

127
00:05:56,660 --> 00:05:59,810
‫Namun itu akan menjadi video untuk lain waktu

128
00:05:59,810 --> 00:06:01,810
‫karena untuk membangun sebagian

129
00:06:01,810 --> 00:06:04,960
‫besar aplikasi, yang paling penting adalah mengetahui cara

130
00:06:04,960 --> 00:06:06,980
‫benar-benar menggunakan streaming, bukan cara mengimplementasikannya.

131
00:06:06,980 --> 00:06:09,130
‫Baiklah, jadi sekarang mari kita lanjutkan dan

132
00:06:09,130 --> 00:06:11,113
‫benar-benar menggunakan aliran dalam praktik.

