Ngobrolin HTTP - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
0:15Hai, hai, hai. Selamat malam.
0:21Halo semuanya, gimana kabarnya?
0:24Loh, kok cuman berdua? Satu lagi mana?
0:27Menyusul, menyusul.
0:28Menyusul ya, Eka akan segera menyusul, tenang aja.
0:31Kita masih formasi lengkap malam hari ini. Seperti biasa, hari ini adalah hari Selasa,
0:38jadi saatnya kita untuk ngobrolin.
0:40Ngobrolin, wey.
0:42Setelah minggu lalu kita tidak live, malam hari ini kita live lagi.
0:49Minggu lalu itu bahasan tentang Wasm kita rekam di hari Sabtu ya.
0:56Eka menuju luar kota.
1:00Luar negeri.
1:02Luar kota dulu.
1:04Oh iya luar kota dulu, betul-betul.
1:06Ngurusin visa ya, ngurusin visa.
1:09Ups, gak boleh disebutin ya.
1:11Spoiler, ini spoiler.
1:14Sekarang Eka aja dimana.
1:16Mudah-mudahan setelah waktu Eka nya balik, nanti kita dapat banyak ilmu baru.
1:21Oh iya, harus dong.
1:23Mudah-mudahan di sana juga bisa live. Gak bisa ya, susah ya.
1:27Just itu di sana bisa kali.
1:31Pagi?
1:32Pagi.
1:33Lagi kegiatan kali, mungkin sehari sebelum acara atau setelah acara.
1:38Kebayang sih, ah udah biarin aja.
1:40Biar Eka nya nanti, biar banyak dapat insight yang baru.
1:44Iya, pertama kali ya.
1:47Kita Eka nya nanti malah ngomongin Eka, loh live lagi.
1:52Sengaja, sengaja sih.
Lihat transkrip lengkap
1:54Oke, sebelum kita lebih gosipin teman-teman yang lain.
1:59Gimana kabarnya teman-teman semuanya?
2:01Boleh dong, absen-absen dulu di kolom komentar buat yang sudah hadir.
2:06Sambil menunggu.
2:08Oh iya, kabar-kabarnya gimana, ada masalah apa di kantor?
2:11Jangan masalah politik ya, masalah teknis.
2:14Mungkin lagi ngadepin masalah, mungkin HTTP status yang membingungkan, misalkan.
2:20Atau cerita-cerita juga dong dari 48 episode.
2:2649 episode nya kita, apa yang sudah teman-teman lakukan?
2:30Apa yang sudah teman-teman pernah uji coba?
2:32Atau mungkin sudah implementasi langsung di production apa?
2:37Cerita-cerita dong, jadi kita bisa bahas nanti.
2:40Betul, betul.
2:41Kisah sukses.
2:42Kisah sukses, iya saya juga ngalamin tuh kan biasanya setiap Senin itu live streaming.
2:49Beberapa bulan yang lalu itu, belajar bareng-bareng ini TypeScript.
2:55Terus tiba-tiba ada yang message katanya dia implementasi TypeScript di kantor migrasi.
2:59Wah senang banget gitu.
3:01Gara-gara habis belajar, terus dia implementasi di kantor dan sukses gitu, kita senang banget gitu ya.
3:06Jadi kalau teman-teman punya pengalaman gitu ya, wah gara-gara nonton ini saya jadi implementasi apa ya?
3:13Performance ya, pakai apa, layout shiftnya jadi lebih bagus gara-gara insight dari beberapa episode yang lalu misalkan.
3:23Iya.
3:24Boleh ya, bagi-bagi cerita ya.
3:26Kita pernah bahas tentang font, web component, image, service worker, autentikasi.
3:35Banyak ya.
3:36Fugu, nah kalau ada Fugu, nah kita pernah undang lagi itu bintang Talmu Superstar, Fugu.
3:43Mas Tomas.
3:44Mas Tomas.
3:45Ada accessibility.
3:48Accessibility.
3:50SVG, Core Web Vital, module bundler, saya bacanya ini, kita pernah bahas ini ya gitu ya.
3:57Iya, ternyata udah banyak juga ya.
4:00Akhir itu web assembly yang lalu, nah ada ya bisa teman-teman sharing-sharing apa gitu.
4:06Biar kita senang mendengar cerita-cerita teman-teman.
4:10Uy, Audi, Audi ini penonton setia nih ya.
4:14Pengen ajukan JavaScript sebabnya bahasa awal di kampus biara anak-anak baru belajar cara debug.
4:19Apa hubungannya belajar JavaScript dengan cara debug?
4:22Memang bahasa lain nggak ada debug.
4:25Mungkin pakai debugger itu kali ya.
4:30Lebih gampang ya pakai debugger ini ya.
4:33Saya setuju sih JavaScript di awal kuliah, setuju sih, setuju banget gitu.
4:40Karena kan barrier itu entry-nya lebih landai kan.
4:45Bukan yang jadi, jadi ini, ini.
4:49Oke kok kita jadi ngelatur ya?
4:51Dua ini ya, ada dua kiblat lah ya.
4:55Kan ada yang suka memulai dengan sesuatu yang sulit dulu.
5:00Setelah itu belajarannya jadi gampang.
5:02Ada yang mungkin overwhelmed.
5:04Jadi dia harus belajar yang ringan-ringan dulu.
5:06Nanti step by step, gradually naik ke level berikutnya.
5:10Karena JavaScript itu tidak data, bukan type strict.
5:16Bukan, dynamics.
5:19Jadi nggak strict, typing data type-nya nggak strict.
5:23Jadinya migrasi yang sudah data type-nya yang strict nanti bakal pusing.
5:31Iya, mungkin ya, mungkin konsiderasinya adalah
5:37karena ada mata kuliah yang berhubungan dengan tipe data dan struktur data.
5:41Kalau ngomongin tipe data di JavaScript kayaknya nggak begitu relevan.
5:44Karena kita bisa ngapain aja itu.
5:46Jadi pakai type script itu pun kena dipaksa.
5:50Iya betul.
5:52Nah ini dia sudah datang.
5:56Apa itu type script?
5:58Kita lagi bahas ini.
6:00Tadi kita bahas kamu loh.
6:02Dari Audi.
6:06Pengen JavaScript supaya bisa di awal kuliah, di awal kampus.
6:14Dan ada dua opini.
6:19Ada yang pengen belajar yang sulit dulu, belajar type language yang strict.
6:25Ada yang seperti Audi, pengennya yang ringan dulu.
6:29Jadi biar data entry-nya lebih rendah.
6:31Tapi sebenarnya ngaduh ke apa sih, approach-nya nggak sih?
6:35Kayak functional programming, object oriented.
6:39Kalau dikasih JavaScript dulu, terus nanti pas belajar C++ atau Python,
6:47apa, pusing nggak?
6:49Setuju, setuju.
6:51Itu insight yang menarik.
6:53Karena JavaScript itu, sorry itu Shay, bahasanya banci.
6:57Bisa kemana aja.
6:59Mau functional, bisa.
7:01Mau OOP, bisa.
7:03Bisa dia.
7:05Multi-purpose.
7:07Karena sejarahnya emang harus flexible.
7:12Emang harus flexible.
7:14Jadi kalau dipetakan ke mata kuliah itu agak sulit.
7:19Karena functional programming belum diajarkan sampai sejauh ini,
7:23selama ini yang saya tahu belum diajarkan di kampus.
7:25Kampus itu baru sampai di prosedural sama OOP.
7:31Cuma orang kuliah itu sebenarnya luas banget nggak sih?
7:34Maksud saya kan dunia IT gitu atau computer science itu kan banyak banget.
7:40Orang web buat doang aja bisa macem-macem banget.
7:43Apalagi computer science kan.
7:45Atau ini yang lebih spicy.
7:49Nggak spicy sih cuma perspektif lain.
7:53Dikasih sejarahnya sama kayak prinsip-prinsip umumnya.
7:57Kayak satu semester lah gitu.
7:59Nggak usah coding dulu.
8:01Tapi ya mungkin kayak binary, prinsip-prinsipnya.
8:06Jadi kayak control flow, kondisional atau apa.
8:09Terus habis itu penjurusan deh.
8:12Jadi ada jurusan apa ya.
8:14Pengelompokan entah apalah nggak tahu.
8:16Ada yang mau larinya ke JavaScript, TypeScript.
8:19Ya udah JavaScript duluan.
8:21Pengelompokan jurusan satunya nih.
8:23Ya kayak mulai dari Titan, C++.
8:27Terus apalah infra atau networking.
8:30Nggak ada yang mau.
8:32Masih berhubungan juga nanti ke data store.
8:36Kalau misalnya dia masih pakai relasional, itu kan strict.
8:41Type nya itu kan harus strict ya.
8:43Kalau pakai relasional kan.
8:45Kalau pakai yang object relasional, ORM, beda lagi kan.
8:50Yang dipopulerkan MongoDB dan Firebase.
8:56Mungkin ya kalau uno SQL, ya itu bisa dipelajari sambil jalan sih.
9:03Maksudnya kayaknya lebih sensible kalau bahasa pengantar awalnya itu Python.
9:10Karena kan awalnya kita dijarin shadow code kan.
9:13Dari shadow code ke Python kan udah deket kan.
9:16Dekat sekali kan. Nggak juga.
9:18Dan Python lebih jati diri.
9:22Dari aliran C++.
9:26Beda.
9:28Kan kalau ngomongin bahasa pemograma itu sama kayak ngomongin agama.
9:32Nggak abis-abis.
9:34Di kiri dan kanan.
9:36Tujuan nya satu dong.
9:38Tujuan nya sama padahal ya.
9:40Cuman udah sama agama ya.
9:42Bisa lebih banyak sekaligus.
9:46Ya dibandingkan dia pasti kayaknya Python lebih punya jati diri.
9:49Dia udah OP gitu kan.
9:51Nggak setengah-setengah gitu.
9:54Dan bahasanya juga bahasa Inggris.
9:56Maksudnya secara sintaksnya.
9:59Tapi ya balik lagi tergantung.
10:01Menurut saya sih selama olimpiade komputer.
10:07Masih menggunakan paskal C++.
10:11Itu di kampus nggak bakal berhenti melakukan itu.
10:15Karena dari SMP SMA itu udah olimpiade komputernya kan bahasanya itu kan.
10:23Iya.
10:25Jadi yang inggris dibunuhnya sebenarnya sebelum itu.
10:28Iya sebelum itu.
10:30Cuma kelebihan/kekurangan nggak kuliah yang berhubungan sama IT.
10:36Bisa langsung.
10:38Nggak bisa C++ dan Python ya.
10:40Udah nulis JavaScript sama TypeScript.
10:43Sekarang kalau udah teranjur kerja sebagai webdev atau bikin agensi.
10:48Masa ada orang yang segitu isengnya bisa Python nggak?
10:54Cuma akhirnya sempat belajar sendiri Python sedikit.
10:59Cuma pengen tahu aja kalau suatu hari kepepet harus bisa.
11:03Bisa bakal bisa atau nggak.
11:05Jadi cuma declare variable-nya begini.
11:08Kalau bikin loop gini.
11:10Kondisional gini.
11:11Operasinya kira-kira gini.
11:12Ya udah, abis itu nggak lanjut.
11:14Cuma kalau kapan-kapan entah kenapa kepepet harus bisa, ya udahlah.
11:18Nanti dipikir lagi.
11:20Oke, mantap. Terima kasih Audi.
11:22Gara-gara Audi kita jadi ngelantur ke mana-mana.
11:25Anyway malam hari ini kita membahas tentang salah satu topik fundamental ya.
11:30Basic, sangat dasar sekali.
11:32Nah ini juga harus tahu ya.
11:34Orang tulis ya jahil nggak ya ini?
11:36Nggak, saya dulu nggak dapet.
11:38Nggak.
11:40Dulu nggak sampai bikin server ya.
11:43Kalau bootcamp apa ya?
11:46Misalnya kayak ya web dev jelas.
11:49Terus dev ops ya harus ngerti kan nih.
11:53Betul.
11:55Minimal harus tahu jalur, alur dari request.
12:00Ketika si user ketik domain itu si server-nya ngapain?
12:06Kan standarnya kan request terus diproses jadi response kan baliknya.
12:12Itu minimal gitu.
12:14Tapi kayaknya dulu waktu pelajar pomograman web di kampus nggak diajarin HTTP.
12:19Iya, HTTP protocol secara protocol diajarin ya.
12:22HTTP, FTP, SMTP.
12:26Itu diajarin.
12:28Yang 7 oc layer kan?
12:30Nah itu diajarin.
12:32Tapi cara bikinnya, cara gimana caranya apa ya?
12:35Gimana caranya kita melempar request dan melempar balik response itu nggak sampai sedetil itu sih.
12:44Jadi hanya cara pakai saja.
12:46Pakai telnet lah atau tools semacamnya.
12:50Dulu sih kalau di kampus diajarin itu.
12:53Nggak tahu nih, temen-temen yang kuliah mungkin bisa kasih pendapat.
12:58Kuliah jaman now sudah ada topik tentang HTTP, lebih detail atau hanya kulitnya saja?
13:05HTTP kepanjangannya apa ya?
13:08Hypertext Transfer Protocol.
13:12Lulus interview, oh nggak ya?
13:16Emang ada yang nanya gitu ya?
13:20Sebutkan kepanjangan HTTP, pakai pilihan lagi.
13:23A, B, C, D.
13:25Hypertext sih gampang ditebak, transfer-nya doang sih yang agak sulit.
13:29Kalau P-nya protocol, ok lah itu juga bisa ditebak.
13:33Ali, siapa tahu ada...
13:35Ada yang belum tahu.
13:37Nge-freeze.
13:39Atau TP-nya gagal.
13:41Atau TP-nya response-nya gagal.
13:44Oke, aman.
13:46Acek.
13:48Kalau sekarang kan itunya pakai P.
13:51Kalau nge-chat kan P.
13:54Ping.
13:56Itu P itu artinya apa ya?
13:58Bisa pa, bisa ping, bisa punten.
14:01Masa sih?
14:03Bukan poi atau hoi gitu, poi.
14:09Ini gara-gara BBM dulu, Blackberry Messenger.
14:13Biasanya nge-ping-ping kan.
14:15Dulu kalau BBM kan sejarahnya beneran ada feature ping kan ya?
14:19Iya, kalau WhatsApp nggak ada, jangan ditambah-tambah fiturnya.
14:24Jadi manual.
14:26Oke, anyway.
14:28Jadi kita malam hari ini akan membahas agak sedikit lebih detail tentang HTTP.
14:34Dan tentunya HTTPS ya.
14:36Dan kenapa penting, HTTPS itu penting.
14:39Dan kenapa HTTPS mulai ditinggalkan, dalam dana kutip.
14:43Kemudian kita lihat juga sejarahnya.
14:45Jadi kita mulai dari sejarahnya. Tadi kita udah bahas tentang kepanjangannya.
14:50Hypertext Transfer Protocol.
14:52Kita mesti sign in dulu deh, itu sign in medium.
14:54Coba deh, scroll ke bawah.
14:56Kenapa? Harus sign up?
14:58Enggak? Oh iya bener.
15:01Oh tidak, berarti kita bukanya pakai incognito.
15:06Sedikit cerita dulu, kenapa kita bisa bahas HTTP?
15:11Mas Riza bingung.
15:15Lo, kok website yang dibikinnya nggak bisa pakai HTTP ya?
15:20Harus HTTPS.
15:22Ada mau bikin demo aplikasi, demo in, deploy.
15:28Tapi juga diplonya pakai SSL Certificate kan.
15:33Jadi sebelum pakai SSL kan pakai HTTP dulu.
15:37Begitu dibuka di browser yang modern, itu pada redirect semua ke HTTPS.
15:42Gimana cara disable-nya juga udah dicobain disable.
15:46Pakai flag apa, flag apa, nggak ngaruh.
15:49Ternyata domain yang saya gunakan itu .dev.
15:54Dan kalau .dev katanya itu otomatis redirect.
15:58Padahal di Nginx saya nggak ada itu.
16:00Enforce.
16:02Enforce. Gitu, makanya langsung yuk kita bahas HTTP ini penting nih kayaknya.
16:09Ya pas balik pas ceritanya udah selesai.
16:12Oh iya dong. Kan udah tahu ceritanya selama weekend kemarin.
16:18Ini ada nih, saya lupa entah saya yang bolos atau nggak ada di kampus.
16:23Pantesan belum lulus, kamu kuliah dimana?
16:27Nggak ada belajar HTTP ya. Oh kita harus nanyain ini ya, Pak Dika kali ya.
16:33Pak Dika, kalau beliau mungkin ngajarin, nggak mungkin resminya nggak diajarin.
16:39Tapi dia bikin video sendiri-sendirian.
16:43Jadi menurutnya Pak Dika.
16:45Betul, ada materi atau ada bahan ajar nggak buat HTTP.
16:49Kalau nggak ada berarti ya.
16:51Kalau Pak Dika saya yakin pasti ngajarin sih.
16:54Cuman itu ada masuk ke kurikulum atau nggaknya yang pengen kita tahu ya.
17:00Kurikulum default.
17:02Gitu.
17:04Nah, jadi HTTP ini lahir di tahun?
17:10Nggak tahu kan.
17:12Ini pertanyaan interview nih. 1991 ya.
17:24Ya pas ada internet, ada website, harus ada protokolnya kan.
17:30Dan itu saat itu masih pakai TCP ya saat itu ya.
17:35Kalau sekarang apa?
17:37Pokoknya masih one line doang.
17:39Tapi kalau HTTP 3 beda lagi.
17:42Oh UDP ya dia udah UDP ya?
17:44Iya.
17:46Koneksi pertamanya.
17:48Bedanya TCP sama UDP?
17:51Nanti kita bahas.
17:53Nanti kita bahas, oke.
17:55Jadi tadi udah tahu kepanjangannya HTTP adalah Hypertext Transfer Protocol dikembangkan oleh web developer ini.
18:04Team Benar Steam, the real web developer.
18:07Jadi dia yang bikin web.
18:09Satu orang loh itu bukan satu team.
18:11Bukan 3 orang ini, satu orang ya.
18:13Namanya sih 3.
18:15Tapi ini adalah satu sosok orang.
18:17Dikembangkan di Labs namanya CERN.
18:22Terus ini sekitar 8-9 sampai 9-1.
18:27Mungkin teman-teman yang nonton belum pada lahir.
18:33Terus HTTP adalah, oh iya, Eka udah?
18:39Kita mah udah.
18:41Kita mah udah.
18:43Kita mah tua.
18:45Kok kita?
18:47HTTP Functions Request Response Protocol in the Client Server Computing Model.
18:54Jadi kliennya adalah browser.
18:57Servernya adalah web server.
19:00Web server.
19:02Tapi jaman itu belum ada browser ya.
19:04Jaman itu belum ada browser, jadi kita request-nya pakai telnet.
19:10Oh pakai telnet.
19:12Belum ada churl juga.
19:14Belum ada churl.
19:16Jadi pakai telnet.
19:18SSR.
19:20SSR protocol juga.
19:22Sejenis telnet lah jaman itu entah apa.
19:25Iya. Protokol telnet itu adalah protokol klien untuk segala jenis protokol.
19:33Klien untuk segala jenis protokol.
19:35Dia interface doang.
19:37Jadi mau kirim apa gitu.
19:39Jadi kayak, kalau sekarang itu analoginya kayak apa ya?
19:43Kayak Postman.
19:45Tapi bukan hanya buat HTTP.
19:47Bisa buat SSH.
19:49Bisa buat FTP.
19:51Bisa buat SMTP.
19:53Pokoknya semua protokol yang ada di jaringan.
19:57Apapun yang bisa dikirim dia cuma nyampein ya.
19:59Iya dia pakai port.
20:01Servernya mau terima atau enggak?
20:03Lebih tepatnya dia IO interface.
20:07IO interface, ya.
20:09HTTP ini umumnya jalan di port 80 ya.
20:15Jadi kalau teman-teman misalkan medium.com.280.
20:19Yaitu adalah HTTP.
20:21Kalau HTTPS 4 ke 3 kan.
20:23Jadi nggak kelihatan di sini karena defaultnya.
20:27Kecuali kalau misalkan localhost 3000.
20:29Nah itu udah buatan sendiri kan.
20:31Itu bebas ya dari kita.
20:33Di atas 1000 sekian saya lupa.
20:37Di bawah 1000 itu sudah diambil.
20:41Sudah punya OS.
20:43Oh nggak bisa dipakai ya?
20:45Gak bisa.
20:47Kalau kalau dipakai berantem.
20:49Maksudnya kadang bakal ada yang pakai.
20:51Kalau dipakai nanti ada aplikasi yang bakal gagal.
20:55Yes.
20:57Nah kita mulai dari HTTP 0.9.
21:01One line protocol.
21:03Jadi hanya ada satu baris.
21:05Nah ini contoh Telnet tadi kita udah bahas ya.
21:07Jadi Telnet ini adalah command line.
21:11Yang bisa kita panggil seperti ini.
21:13Kemudian kita kasih domainnya atau IP address-nya.
21:17Alamat apapun ya. Mau domain, IP address.
21:19Bisa IP, bisa TLD.
21:21Bisa localhost juga.
21:23Jaman motto dibikin ini kayaknya belum ada domain juga deh.
21:27Belum ada DNS kalau nggak salah.
21:29Belum ada.
21:31Jadi masih pakai IP address.
21:33Pake IP address, kemudian portnya.
21:35Nah berhubungan HTTP adalah port 80.
21:37Ya kita pakai port 80 di sini.
21:39Terus berhasil connect.
21:41Hand shaking istilahnya.
21:43Salam kenal gitu ya. Salaman.
21:45Terus abis itu kita bisa kirim request.
21:47Requestnya jenisnya apa?
21:49Ada get, post, put, update, delete?
21:51Nggak.
21:53Baru get doang tuh.
21:55Kalau ini ya. Karena 0.9.
21:57Terus kita mau request apanya?
22:01Mau request halaman apa?
22:05Kita minta page ya.
22:07Kalau dulu kan istilahnya dokumen ya.
22:09Kita mau request dokumen apa?
22:11Itu. Udah tuh abis itu dari si ininya di response lah oleh si server dengan tech HTML.
22:23Udah abis itu harus login ya.
22:27Mediumnya.
22:29Punya akun medium.
22:31Ada sih.
22:33Nah pindah, pindah window dulu.
22:35Pindah window loginnya.
22:37Sambil lihat ini.
22:39Apa ya Samy?
22:41Sambil lihat contoh dokumennya aja apa?
22:43Boleh.
22:45Kan apapun yang di web itu harus berdasarkan standar ya.
22:49Spesifikasi.
22:51Sambil share screen.
22:53Udah share belum?
22:59Sudah.
23:01Nah ini yang HTTP 1.
23:03Nah.
23:05Ya kalau baca sebenarnya bosan sih.
23:07Cuma dokumen yang jadi standar kira-kira bentuknya gini.
23:13Jadi kalau temen-temen pengen lihat.
23:15Sampai sekarang semua udah masih terdokumentasi rapih di website-nya.
23:19Tadi IETF ini kan disebut juga ya di artikel tadi.
23:25Abstratnya, tujuannya, terminologi.
23:31Ya wah ini spesifikasinya begini ya.
23:37Apa itu connection?
23:39Jadi kalau, biar nggak rancu kan.
23:41Message itu apa.
23:43Bahkan request-response yang menarik aja sih.
23:47Sampai sekarang banget kan kita juga masih pakai request-response ya.
23:51Di web API itu di browser ada request object, ada response object.
23:57Dan sekarang udah extended.
23:59Sekarang kan ada worker ya.
24:01Worker juga bisa ada kegiatan lah, ada manipulasi.
24:07Misalnya kalau pakai service worker nih kita bisa manipulasi response ya.
24:11Misalnya aslinya kan aslinya lagi offline.
24:15Response-nya 404.
24:17Bisa kita manipulasi.
24:19Jadi 200 kita balikin jenis data yang kita setting sendiri.
24:23Tapi itu semua sebenarnya kan berdasarkan prinsip request dan response object dari suatu HTTP request kan.
24:33Sama HTTP response.
24:35Ternyata ini udah dari tahun 90-an.
24:39Resource, entity, blablabla.
24:41Udah? Udah login?
24:45Login menggunakan Twitter? Gak.
24:49Ada yang bisa login.
24:51Satu-satunya akan pakai Twitter soalnya.
24:53Tapi tidak berhasil.
24:55Bentar, coba dulu.
24:59Oh, atau buka yang ini aja nih.
25:01Buka yang kedua, buka yang kedua.
25:03Yang ini.
25:05Wait, gue stop sharing.
25:07Yang dimana ya?
25:09Online protocol. Tadi kita udah bahas telnet.
25:13Terus kita get.
25:15Hanya ada satu dulu ya.
25:17Hanya bisa ngambil dokumen.
25:19Sebutannya dokumen ya halaman itu.
25:21Halaman HTML.
25:23Terus ini adalah response-nya.
25:25Response-nya dalam bentuk HTML.
25:27Single line.
25:29Ini kan port 80.
25:31Kalau dia nanti...
25:33Contohnya teman-teman mau...
25:35Connect ke SMTP.
25:37Nah itu nanti 4.
25:39SMTP berapa?
25:41443.
25:43443 bukannya SSL?
25:45Bukannya salah.
25:47Bukan.
25:49Bukannya SSL.
25:51Sorry, sebelum gue salah ngomong.
25:53Cari dulu, cari dulu.
25:55SMTP port 25 atau 587.
26:05Ah, 25.
26:07Yang benar itu.
26:09Kalau yang gue inget 143 itu IMAP.
26:11IMAP.
26:13Iya, IMAP juga.
26:15Pop 3 110 995.
26:17Kenapa saya sebut ini?
26:19Intinya pakai Telnet.
26:21Kalau kita connect ke SMTP.
26:23Nah kita gunakan portnya 25.
26:25Nanti muncul itu pesannya.
26:27Hello, eh hello.
26:31Kaya gitu.
26:33ACK, something ya.
26:35Nah ini.
26:37Zoom in dikit deh.
26:39Nah, mantap.
26:43From this humble beginnings
26:45in 1991,
26:47HTTP took a life on its own
26:49and evolved rapidly over coming years.
26:51Let's quickly recap features of
26:53HTTP 0.9.
26:55Client server
26:57Request Response Protocol.
26:59ASCII protocol
27:01running over TCP/IP.
27:03Designed to transfer
27:05hypertext document.
27:07Dokumen HTML.
27:09Sama ini tadi simpel banget kan.
27:11Comma get.
27:13Terus ga ada response error, ga ada header.
27:15Headernya aja ga ada ya.
27:17Ya udah dikasih aja langsung.
27:19Dikasih aja HTML.
27:21Begitu sudah terima response, langsung close.
27:23Ga ada keep alive.
27:25Ga ada web socket, ga ada macem-macem.
27:27Jadi, sekali kirim,
27:29selesai, bye bye.
27:31Nanti kalau mau minta lagi, request lagi.
27:33Buka lagi.
27:35Kemudian masuk ke 1.0.
27:37Ini di tahun 91-95.
27:39Ini ya, ya digunakannya ya.
27:41Ini adalah
27:43Cooperation of HTML.
27:45Ya, sudah mulai ada browser.
27:47HTML specification.
27:51A new breed of software
27:53known as web browser.
27:55Jadi web browser lahir
27:57itu di tahun sekitar 91-95.
27:59The emergence and quick growth
28:01of the consumer-oriented
28:03public internet infrastructure.
28:05Jadi, kalau dulu internet itu
28:07digunakan di kalangan terbatas.
28:09Akademis ya biasanya.
28:11Apa di kampus-kampus, militer.
28:13Militer, yang terutama militer ya.
28:15Pemerintahan.
28:17Pemerintahan negara sana.
28:19Mungkin, kayaknya kalau di kita belum ada deh.
28:21Kita belum ada.
28:23Amerika, Inggris.
28:25Nah, teman-teman, mungkin bisa share juga
28:27pengalaman berinternet pertama itu
28:29kapan dan melakukan apa
28:31di internet.
28:33Kalau saya dulu email.
28:35Gak tau bunyi modem.
28:37Gak tau bunyi modem.
28:39Telekom net instant ya.
28:41Eh, nyebutin Merk ya.
28:43Eh Merk.
28:45Sebenernya dari tadi kepikiran itu
28:47cuma nahan diri sih jinggulnya keci banget.
28:49Sampai sekarang masih afal.
28:5108.0.9.
28:53Cukup, cukup, cukup.
28:55Bip.
28:57Dan ketika kita menggunakan internet
28:59tiba-tiba, Mak, kita angkat telepon.
29:01Ini suara apa, Wai?
29:03Tiba-tiba tadi hand telponnya
29:05langsung membengkak.
29:07Membengkak, iya.
29:09Padahal buat chatting doang ya.
29:11Anyway, jadi
29:13di tahun 91-95
29:15mulai muncul satu software baru
29:17yang namanya web browser
29:19yang bisa mengkonsumsi
29:21HTTP. Kita bisa request dari
29:23HTTP, gak hanya dari Telnet lagi.
29:25Ada klien baru
29:27namanya web browser.
29:29Web browser inilah yang bertugas
29:31untuk
29:33mentranslasi
29:35HTML
29:37menjadi dokumen yang bisa kita baca
29:39oleh manusia, gitu ya. Kalo sebelumnya
29:41agak susah ya
29:43ngeliat tag-tag gitu ya.
29:45Kan user kirim response
29:47melalui web browser.
29:49Jadi kita tinggal ngetik
29:51URL atau IP yang mau
29:53dituju, enter. Nah kan
29:55si browser-nya menyampaikan
29:57HTTP request itu tadi. Terus
29:59terima response berupa misalnya
30:01dokumen HTML.
30:03Dia merender HTTP response
30:05jadi UI.
30:07Apa? Dirender di DOM.
30:09Iya.
30:11Nah, di HTTP 1
30:13sekarang sudah mulai
30:15nambah. Kalo tadi kan
30:17hanya ada satu baris. Hanya ada satu baris
30:19request dan response.
30:21Eh, gak ya. Request. Hanya ada satu baris
30:23request. Kalo sekarang
30:25request-nya ada banyak nih. Yang pertama adalah
30:27get.
30:29Kemudian ini adalah dokumen yang kita
30:31inginkan. Ini ada
30:33versi dari HTTP-nya.
30:35Yang masih dipakai sampai sekarang. Sekarang 1.1
30:37yang default ya.
30:39Kemudian ada user agent-nya.
30:41Dan kemudian
30:45iya.
30:47Kemudian dia, kita harus
30:49mendefinisikan kita ingin dokumen
30:51apa yang mau kita terima.
30:53Atau yang mau kita
30:55kirim. Sorry, yang mau kita kirim.
30:57Eh, kalo get
30:59yang kita terima dong.
31:01Ya, terima. Yang kita terima.
31:03Ya, accept. Misalkan
31:05saya mau dokumennya dalam bentuk HTML
31:07atau text ya. Dalam hal ini ya.
31:09TXT berarti. Atau
31:11saya mau semua gitu ya. Mau apapun
31:13tipenya terserah. Bebas.
31:15Ya, atau mau tipenya JSON,
31:17XML, dll. Itu urusan kita.
31:19Kemudian dibalas
31:21oleh server dengan
31:23versi HTTP-nya.
31:25Status code-nya.
31:27Kemudian ini
31:29short.
31:31Status code. Ya, status code-nya.
31:33Status code dengan bahasa
31:35ya, oke. Terus
31:37not found
31:39dan lain-lain ya. Content type-nya
31:41yang harusnya
31:43sesuai sama ini. Karena ini bisa
31:45terima semua. Dia terima apapun.
31:47Ukuran
31:49kontennya.
31:51Atau ukuran dokumennya.
31:53Kemudian
31:55expire ini untuk
31:57caching ya.
31:59Caching.
32:01Lalu, terakhir
32:03dokumennya dimodifikasi
32:05kapan? Dan ada
32:07server-nya di sini.
32:09Boleh ada, boleh enggak. Kan ini
32:11metadata information kan.
32:13Kalau di
32:15OAS itu
32:17sebaiknya jangan ada informasi apapun
32:19di sini yang berhubungan dengan
32:21web server ya.
32:23Ya.
32:25Demi keamanan.
32:27Demi keamanan. Jadi teman-teman boleh pakai ini
32:29tapi di aneh-anehin aja. Misalkan
32:31Tomcat gitu. Padahal pakainya
32:33WordPress gitu kan.
32:35Biar bingung. Silahkan.
32:37Silahkan
32:39berkreasi. Nah, kemudian setelah itu
32:41baru respons-nya di sini.
32:43Berhubungi ini text, ya dia plain text aja ya.
32:45Kalau HTML, berarti dia isinya HTML.
32:47Kalau XML, dia XML. Kalau JSON, dia JSON.
32:49Kemudian udah. Balik lagi.
32:51Begitu selesai dikirimkan,
32:53connection-nya mati.
32:55Gitu. Nah, itu TTP
32:591.
33:01In addition to media type negotiation
33:03RFC, RFC apa?
33:05Request for...
33:07Itu tadi yang kita lihat tadi. Apa?
33:09Connection.
33:11For comment.
33:13Comment kayaknya.
33:15Iya.
33:17Itu yang untuk bikin standard RFC.
33:19Oh iya. RFC.
33:21Jadi ini udah mulai ada
33:37kompleksitas. Udah mulai ada fitur-fitur
33:39yang aneh-aneh ya.
33:41Seperti encoding. Kita bisa ngirimin
33:43data, file, video, dan lain-lain.
33:45Sekarang ya.
33:47Character set support itu
33:49Compression ya.
33:51Compression, iya compression.
33:53Mau pakai gezit,
33:55broadly, dan lain-lain.
33:57Multi part ini tadi upload.
33:59Upload file, autoritasi,
34:01caching, proxy behavior,
34:03dan lain-lain. Ini udah
34:051.0 ini udah lumayan modern ya.
34:07Yang sekarang digunakan.
34:09Bisa dilihat tuh contoh di dokumennya.
34:11Kalau mau liat
34:13di private chat.
34:15Contoh contohnya.
34:17RFC tadi ya?
34:19Yang bawah.
34:21Ini ya?
34:2371.
34:25Iya.
34:27Itu yang pertama kali.
34:29Jadi kalau misalnya mungkin
34:31kalau kita yang belum pelajarin dari sini kan
34:33suka bingungan. Kayaknya tiba-tiba banyak banget.
34:35Ada apa aja sih?
34:37Dari mana, siapa yang nentuin,
34:39terus kadang kita
34:41salah kopas atau gimana tuh dari
34:43misalnya
34:45accept, ketuker,
34:47sama content encoding.
34:49Terus, ini
34:51kenapa, kapan pakai yang
34:53oh, allow,
34:55accept, kapan pakai
34:57masing-masing itu. Nah,
34:59ini definisinya semua
35:01ada di sini.
35:03Atau siapa tau yang telah temen-temen
35:05ada yang mau bikin
35:07browser.
35:09Terus bikin
35:11protokol sendiri.
35:13Bukan, ini
35:15ini dasarnya semua.
35:17Iya.
35:29Bayangkan ya,
35:31developer yang bikin
35:33ini,
35:35bukan, apa, kerjaannya
35:37itu bukan cuma encoding selesai,
35:39tapi harus bikin ini, atau bikin ini dulu
35:41baru dia encoding-nya.
35:43Dokumentasi sebanyak ini ya.
35:45Kalau ininya belum fix,
35:49nanti dia encoding, nanti dia encoding, ternyata
35:51maksudnya bukan itu. Terus pada
35:53marah-marah, kalau bukan ini, itu sama.
35:55Yang bikin si, ini ya,
35:57Omban Leslie juga ya.
35:59Itu ada author dari atas.
36:01Iya, ini ya. Dan teman-temannya, Paul ya.
36:03Timnya beliau.
36:05Jadi, encoding itu bukan cuma
36:09bikin kode.
36:11Dokumentasi juga.
36:13Gampang. Yang susah ini.
36:15Bikin kode, ya,
36:17baru sepersekian persen
36:19dari pekerjaan kita.
36:21Dokumentasi sama, apa,
36:23nentuin sih, bikin
36:25keputusan. Jadi kayak seberapa
36:27scope-nya seberapa, masalah
36:29apa yang mau dipecahin, terus kita mau
36:31kenapa buat mencapai
36:33tujuan atau masalah yang
36:35kita pecahin.
36:37Kalau Tim Bernersley, ya udah
36:39terbiasa.
36:41Terbiasa melakukan itu. Nah,
36:43ini ada pertanyaan
36:45dari Riza Minudin.
36:47"Bisa kirim
36:49dalam bentuk JSON nggak?" Bisa.
36:51Ini kan kita bisa kirim,
36:53kita mau ngirim data.
36:55Kalau ngirim data, pakai pos ya, bukan pakai get ya.
36:57Kalau get itu untuk minta
36:59request, minta data.
37:01Kalau kirim pakai JSON, bisa.
37:05Sama aja.
37:07Jadi,
37:09jawabannya bisa sekali.
37:13Karena itu yang kita lakukan
37:15sekarang, kalau bikin
37:17application JSON.
37:19Iya, nerima JSON,
37:21ngirimin juga JSON, ngirimin
37:23dalam bentuk form gitu kan, bentuknya JSON kan.
37:25Kita kirimin bodinya.
37:27Oke, kita masuk ke yang
37:29kita gunakan sekarang adalah HTTP versi
37:311, yang akan datang kita gunakan
37:33versi 2 ya. Loncatnya lumayan tinggi ya.
37:35Dari 0,9, 1.0,
37:371.1, terus nanti loncat ke 2 ya.
37:39Itu ada ceritanya nggak ya?
37:41Bukannya sudah di 2 sekarang ya?
37:43Oh, sudah di 2 ya? Sekarang 2?
37:45Sekarang 2 ya?
37:47Iya, kita akan loncat ke 3 soon.
37:49Tiga tuh malah
37:51sebetulnya, diam-diam.
37:53Browser tuh udah support,
37:55nggak, gue sudah pernah implementasi
37:57aja, pakai quick.
37:59Anyway, nanti kita lanjut.
38:01Oke, seru nih.
38:03Oke, mantap.
38:05Mana dia? Nah, ini ya. Kita bisa
38:07lihat di headers-nya di sini ya.
38:09Ada nggak, HTTP versi
38:11ininya? Ini sudah, ini bahkan
38:13sudah, ini,
38:15ini udah HTTP 3 ini.
38:17Udah 3 ya? Udah itu H3,
38:19dia terus, dia terus itu H3.
38:21Itu H3.
38:23H3 itu sudah, sudah
38:25HTTP 3.
38:27Ya, buka ini aja deh,
38:29rizafahmi.com.
38:31Oh iya, boleh deh.
38:33Ini masih HTTP 2?
38:35Iya.
38:37Mana dia?
38:39Network.
38:41Refresh lagi.
38:43Refresh. Fail.
38:45No internet?
38:47Karena ada ininya kali,
38:49ada settingannya untuk
38:51pulang.
38:53Abis cek.
38:55Abis kemaren tuh, wassup.
38:57H3 juga.
38:59Iya, berarti di belakang
39:01clock-faire ini ya.
39:03Di belakang clock-faire.
39:05Iya kan ada cewek soalnya.
39:07Yes, ketahuan kan?
39:09Buka EKA 2II.
39:11Coba juga.
39:13Oke, oke, oke.
39:15Saya percaya, saya percaya.
39:17Sekarang sudah HTTP 2
39:19dan menuju 3 ya.
39:21Berarti
39:23saya ketinggalan.
39:25Masih HTTP 1.1.
39:27Oke, ini,
39:29HTTP 1.1 ini
39:31lifecycle.
39:33Masa hidupnya lumayan lama ya.
39:35Mana dia?
39:49Into standard world release
39:51RFC 2616.
39:53Jadi yang
39:55HTTP 1 itu
39:57di-release
39:59HTTP 1.1
40:01di-release di tahun 97.
40:03Kemudian ada perubahan juga
40:05tapi nggak naik ya versinya ya.
40:07Harusnya naik ya.
40:09Minor ya.
40:11Nah, sekarang
40:13udah semakin tambah panjang.
40:15Jadi ini masih sama.
40:17Ini hidup yang kita punya kan ya?
40:19Yang kita kenal sekarang ya.
40:21Ada house-nya, ada user agent-nya,
40:23ada menerima apa saja.
40:25Termasuk tadi
40:27kalau mau JSON kita bisa juga.
40:29Ada encoding-nya, Gzip
40:31dan lain-lain. Ada
40:33apa tadi?
40:35UTF dan lain-lain tuh.
40:37Bahasa ya.
40:39Charset, charset.
40:41Ini dia, ISO. Ada cookies.
40:45Dan kemudian respons-nya juga bertambah.
40:47Kita pernah bahas cookies.
40:49Kita sudah pernah bahas cookies.
40:51Apa yang belum kita bahas coba?
40:53Kita belum bahas URL.
40:55Nah, teman-teman punya ide apa yang
40:57kita belum bahas bisa kirim ke
40:59bit.ly/ngobrolingweb.
41:03Nah, ini bisa
41:05teman-teman bisa coba.
41:07Teman-teman bisa coba HTTP,
41:09request HTTP itu kayak gini ya.
41:11Coba.
41:13Oke. Terus respons-nya juga
41:15masih mirip-mirip dengan
41:17request ya. Jadi ada versi,
41:19ada status, ada
41:21server-nya apa.
41:23Keep Alive. Nah, Keep Alive ini yang tadi
41:25belum support, sekarang udah bisa.
41:27Keep Alive itu berarti
41:29gimana tuh?
41:31Keep Alive itu connection
41:33jadi...
41:35Enggak putus ya setelah menerima.
41:37Jadi untuk koneksi
41:39antar dari si
41:41browser ke server,
41:43dia gak di-close.
41:45Gak di-close. Dia akan
41:47mendengarkan terus.
41:49Karena untuk...
41:51Kan kalau kita buka misalnya
41:53gini, web server itu punya thread.
41:55Punya pull thread.
41:57Pull of threads ya. Kalo engine
41:59X itu kan ada setting-nya
42:01itu ada children.
42:03Dia pake thread dan satu thread itu bisa
42:07menghandle berapa koneksi.
42:09Nah, kalau misalnya diputus,
42:11dia berarti kan harus booting ulang
42:13koneksinya.
42:15Kan ada panjang lagi.
42:17Ada session-nya lagi.
42:19Jadi kalau misalnya pake Keep Alive itu
42:21akan ada handshake-nya.
42:23Kalau Keep Alive itu, dia akan
42:25dengerin dulu. Sampai
42:27tergantung si web server mau kasih berapa lama.
42:29Kalau dia gak dengerin lagi,
42:31dia di-close, putus.
42:33Hmm, sampai berapa lama
42:35sampai ininya...
42:37Tergantung si web server punya...
42:39Ada time out-nya juga ya.
42:41Ada time out-nya.
42:43Nah, Keep Alive
42:45ini adalah cikal bakal dari
42:47pertanyaan dari
42:49Riza lagi.
42:51Websocket.
42:53Jadi versi
42:55tradisionalnya
42:57dari Websocket adalah Keep Alive ini.
42:59Yang sebelumnya kan
43:01request, response, selesai.
43:03Request, response, selesai.
43:05Terus ternyata ada kebutuhan untuk
43:07wah, saya butuh ini nih.
43:09Chat app misalkan. Keep Alive.
43:11Terus Keep Alive udah gak
43:13bisa apa ya, kurang
43:15flexible, akhirnya muncul
43:17Websocket. Websocket itu
43:19HTTP juga,
43:21tapi dia tetap, jadi kayak dia bikin
43:23jalur sendiri yang tidak akan
43:25tertutup. Akan terbuka
43:27terus sampai kita yang tutup.
43:29Dan semacam event-base ya?
43:31Betul. Apa?
43:33Bisa terima event, jadi
43:35kayak semacam event listener, tapi
43:37client ke server.
43:39Kita belum pernah bahas ya?
43:41Kita belum pernah bahas tentang
43:43Websocket. Ide yang bagus.
43:45Terima kasih ide-nya.
43:47Langsung kita tulis.
43:49Oke, kita lanjut dulu.
43:51Di sini, udah jelas ya, yang ini
43:53udah hampir-hampir sama, terus di sini
43:55isi dokumennya. Ini
43:57apa lagi nih?
43:59Oh, dua kali dia.
44:01Satu, dua, tiga, empat, lima, enam, ini apa enam?
44:03Inform, support, that connection...
44:05Kalau satu-satu itu
44:07dia bisa request.
44:09Oh, bisa request.
44:11Multiple ini ya?
44:13Iya, iya.
44:15Kalau dua, bisa
44:17duplex ya?
44:19Multiplex.
44:21Duplex, duplex. Duplex cuma dua ya.
44:23Kalau...
44:27Kalau dia terreflex, kayu.
44:29Kalau
44:31HTTP2,
44:33dia
44:35yang paling utamanya itu adalah
44:37kirimnya satu.
44:39Misalnya,
44:41ini kan kalau HTTP1 dia,
44:43kalau dia mau minta
44:45file itu, dia harus
44:47kirim satu, balik,
44:49dan nanti habis itu minta lagi
44:51beberapa. Misalnya
44:53CSS-nya, Fabricon-nya, JS-nya,
44:55dia akan request secara waterfall.
44:57Dia akan minta terus.
44:59Kalau HTTP3,
45:01eh, sorry, HTTP2,
45:03bisa sekali
45:05kirim, bisa satu kali
45:07kirim, nanti dari server kirim
45:09push, bisa
45:11push data.
45:13Gak perlu request, perlu request
45:15tetap.
45:17Kalau HTTP2, push.
45:19Push ya, bisa push ya.
45:21Satu jalur itu,
45:23dia pakai satu jalur yang sama.
45:25Tapi harus handshake dulu, kan?
45:27Iya, kan pertama kan handshake
45:29sudah terjadi.
45:31Iya. Baru kemudian,
45:33baru dia bisa kirimin data, kan?
45:35Itu perbedaan
45:37signifikan antara 1.1 ke 2, kan?
45:39Waduh, bingung.
45:451.1 emang udah bisa itu?
45:47Udah bisa
45:49multiplex?
45:51Udah bisa push?
45:53Gimana kalau kita scroll
45:55ke bagian HTTP2?
45:57Iya, ternyata udah ada jawabannya.
45:59HTTP2 improving
46:01transport performance.
46:03Jadi, ini fokusnya ke performance.
46:05Multiplexing itu hanya ada
46:07di HTTP2.
46:09Iya, HTTP1 belum ada, kan?
46:11Yes.
46:13Yang awalnya dimulai dari
46:15one line protocol di HTTP
46:170.9. Sekarang
46:19sudah berevolusi dengan cepat
46:21menjadi generic hypermedia
46:23transport setelah
46:25beberapa dekade
46:27selanjutnya.
46:29Apa nih?
46:31Nah, bentar.
46:33Ini apa? Ada
46:35poin menarik juga sih.
46:37Apa? Hypermedia ini.
46:39Tadinya kan beda banget, kan?
46:41Yang 0.9 ya?
46:43Tadinya hanya dokumen.
46:45Dokumen, kita nggak bisa minta
46:47apapun. Nah, ini jadi generic
46:49hypermedia.
46:51Nah, ini nyambungnya ke
46:53pertanyaan tentang JSON
46:55tadi tuh. Kita jadi bisa
46:57minta jenis
46:59itu, apa? Jenis file
47:01macem-macem, kan? -Apapun.
47:03-Coba share screen dulu.
47:05Share tab.
47:07Nah, ini nih kita
47:13bisa meminta dan
47:15mengirim macem-macem
47:17teks pun, kan?
47:19Apa? Selain teks plain,
47:21itu sebenarnya banyak banget.
47:23-Ada FPF, ada
47:25DOC.
47:27-Nah, kalau yang tadi
47:29ditanyain kan, JSON ya?
47:31-Jasen pun ada
47:33JSON-LD. Ada JSON-P
47:35kalau nggak salah ya. Tapi di sini ada nggak JSON-P?
47:37Nggak ada ya? -Kayaknya itu bakal
47:39masuk ini juga deh. Karena
47:41ini kan, apa?
47:43Ini tuh kayak udah predefined.
47:45Jadi ini
47:47IANA. Apa?
47:49Ada official registry-nya namanya
47:51IANA. Official
47:53main text-nya udah ada
47:55daftar tersendiri.
47:57Ya, nanti kalau bisa ngeliat aja sendiri.
47:59Tapi yang jelas, opsinya macem-macem banget.
48:01Jadi ini kan sebenarnya
48:03essentially semua kan text-nya.
48:05Tapi kita bisa kayak
48:07menspesifikasikan
48:09text-nya tuh jenis apa.
48:11-Ya.
48:15Nah, HTTP/2 ini
48:17lumayan
48:19apa ya, orang aware
48:21dengan versi-versi HTTP ini
48:23salah satunya gara-gara
48:25gRPC. Karena
48:27gRPC menggunakan HTTP/2
48:29yang bisa datanya di-push gitu kan
48:31itu memungkinkan gara-gara si HTTP/2
48:33gitu. Sebelumnya tuh
48:35ya kita harus request dulu kan.
48:37Nggak bisa si server
48:39sekonyong-konyong mengirimkan data ke kita
48:41gitu. Jadi kita harus request
48:43baru ada tadi.
48:45Belum pernah ya.
48:47G-RPC itu versi
48:49sederhananya.
48:51G-RPC itu kan remote procedural call.
48:53Kalau G-RPC itu remote procedural call
48:55yang dibuat oleh Google.
48:57-Oh.
48:59-Nggak tahu, nggak tahu.
49:01Itu menjadi Mr. E.G.
49:03itu apa? Yang jelas ya dari
49:05tim Google sih.
49:07Jadi ya semacam
49:09inilah sejenis
49:11protokol untuk mengirimkan dan
49:13menerima data. Sama seperti
49:15GraphQL, RCPI menggunakan
49:17JSON atau XML.
49:19-Oh, geinya itu general
49:21purpose.
49:23-Ada yang bilang gitu, ada yang bilang Google.
49:25Jadi ada banyak versi belakangnya.
49:27-Versiandaan.
49:29-Versiandaan.
49:31-Ya, jadi dia ngirimin bukan ngirimin
49:33teks. Kalau misalkan RCPI
49:35kan dia ngirimin teks JSON atau
49:37XML gitu kan.
49:39Kalau G-RPC
49:41dia ngirimin binary.
49:43-Stream. Oh.
49:45-Binary, bisa di-stream juga.
49:47Jadi katanya lebih performance-nya
49:49lebih bagus.
49:51Nah, si G-RPC
49:53kalau dikonsumsi di web, dia menggunakan
49:55HTTP2 gitu.
49:57Makanya banyak orang yang ngah
50:01sekarang, wah, HTTP sekarang versi 2 ya.
50:03Kalau dulu kan nggak peduli ya, mau versi
50:05berapa gitu ya. Kecuali yang bikin web server
50:07ya, dia bisa tahu kan. Kalau kita yang menggunakan
50:09kayaknya nggak, nggak ngah kan.
50:11Ini versi berapa gitu ya.
50:13-Karena dulu cuma satu, ya udah.
50:15Kalau cuma satu kan by default.
50:17-Nggak ada pilihan. Apalagi
50:19si web browser
50:21juga, kalau udah dia dukung
50:231.1, ya udah. Yang
50:25versi lain nggak bisa. Dia backward
50:27compatible kan, harusnya ya.
50:29Kita masih bisa
50:31pakai HTTP versi 0.9
50:33nggak?
50:35-0.9, nggak tahu. Tapi kalau
50:37satu, harusnya kan
50:39kan prinsipnya sama.
50:41Cuma ada yang
50:43kayak hinder-hinder-nya aja.
50:45-Tergantung server-nya sih ya? Pasti
50:47bisa ya? -Iya. Kalau server-nya
50:49bisa ya, ya coba aja
50:51itu cari engine
50:53X atau apa C masa lalu, fork-nya.
50:55-Ini ada pertanyaan dari Rafki.
50:59-Teknikulnya bisa kecuali server-nya mau nolak.
51:01-Oh iya, benar-benar.
51:03Ini ada pertanyaan dari Rafki.
51:05HTTP 2 ditulis pakai Go kah?
51:07Kita tidak tahu. Kayaknya nggak deh.
51:09-HTP 2 itu standard, bukan
51:11ditulis pakai apa.
51:13Jadi tergantung web server-nya
51:15ditulis pakai apa.
51:17Kalau web server-nya
51:19misalnya web application server-nya
51:21Go, ya pakai Go.
51:23Kalau engine X ya pakai
51:25saya nggak tahu, engine pakai C++.
51:27-Jadi protocol
51:29ini adalah
51:31apa ya, kesepakatan
51:33bersama, dokumen kesepakatan
51:35bersama, bahwa kalau saya kirimin
51:37ini, saya dapetin ini.
51:39Implementasinya bebas.
51:41Mau pakai C, C++,
51:43Golang, mau pakai Rust, bebas.
51:45-Express, contohnya Express nih
51:47teman-teman pakai Express.
51:49Di dalam Express itu sendiri
51:51dia akan implementasi satu library yang
51:53HTTP library.
51:55Jadi
51:57HTTP library ini
51:59yang sudah ditulis oleh teman-teman itu
52:01menggunakan standard
52:03HTTP 2.
52:05Berdasarkan standard
52:07HTTP.
52:09-Betul.
52:11-Apa sih library
52:13HTTP di NPM?
52:15-HTP?
52:17-Ya, HTTP.
52:19-Di Node.js ada built-in
52:21module namanya
52:23HTTP sama HTTPS.
52:25-Beda ya HTTP server
52:27sama HTTP client ya.
52:29-Beda.
52:31-HTP client itu adalah
52:33untuk mengkonsumsi.
52:35-Mengirim dan menerima.
52:37-Mengirim dan menerima.
52:39-Mengirim dan menerima.
52:41-Oh ternyata di Node.js sudah ada
52:43built-in. -Sudah ada built-in.
52:45Kalau Express dia pakai
52:47yang lain lagi kayaknya. Eh, pakai HTTP
52:49kalau nggak salah.
52:51-Kaya dia pakai HTTP deh.
52:53-Iya, dia raper di atasnya
52:55Node.js.
52:57Kalau
52:59HTTP client
53:01itu temen-temen biasa
53:03pakai
53:05Postman, Axios,
53:07Churl ya
53:09yang tradisional.
53:11HTTP banyak ya.
53:13Itu client. Jadi kita bisa
53:15menggunakan itu. Insomnya
53:17sama seperti browser.
53:19-Kalau di PHP 5 dulu
53:21HTTP get content.
53:23-Ok.
53:25PHP juga ada PHP Churl kan?
53:27-Iya, tapi kalau
53:29call-nya nggak ada, kalau nggak di install
53:31kan bisa. -Oh iya, kalau nggak di install, nggak bisa.
53:33-Itu kan
53:35PHP extension.
53:37-Extension. Ya.
53:39-Kalau by core-nya dia
53:41HTTP get content. -Get content.
53:43Iya, iya, iya.
53:45-Nah, kayaknya kalau di dunia HP itu
53:47apa sih, ada misalnya kayak library
53:49kayak Gazelle atau semacamnya
53:51di Laravel itu kan sebenarnya meng-extend
53:53itu ya, si apa? Yang
53:55PHP. -Curl.
53:57Ya, tergantung.
53:59Kalau dia, dia
54:01di dalamnya sudah ada curl, dia pakai curl.
54:03Tergantung.
54:05Dia bisa
54:07nge-detect apa yang di install.
54:09-Nah, kalau WebRTC,
54:11WebRTC itu apa?
54:13HTTP berapa? Beda lagi ya.
54:15Itu protokol bukan sih? -Beda teknologi.
54:17Beda teknologi ya.
54:19-Tapi dia berjalan di atas
54:21HTTP 2?
54:23-Sebelum saya bisa
54:25ngomong, saya baca dulu ya.
54:27-Dia punya protokol.
54:29-Ya, kita belum pilih partisi juga sih.
54:31-Iya, betul.
54:33Itu protokol sendiri.
54:35-Protokol sendiri?
54:37Tapi menggunakan,
54:39di atas protokol HTTP, kan?
54:41-Iya. -Jelas.
54:43-Per-to-peer dia, per-to-peer.
54:49Ya, baca dulu.
54:51Saya pernah pakai,
54:53tapi nggak pernah baca mendalam,
54:55kalau nggak ditanya begini ya.
54:57-GRPC karena menggunakan Go
54:59bisa jadi.
55:01Namanya Go.
55:03Google Lang.
55:05-Go Lang juga bisa disebut
55:07Google Lang. -Iya, Google Lang, kan?
55:09-Kalau percayaannya, maksudnya
55:11kalau resminya ya nggak, namanya Go.
55:13-Tapi kenyataannya faktanya
55:15memang dikembangkan di Google, kan?
55:17Itu ya nggak salah juga.
55:19-Nah, logonya tuh,
55:21binatangnya ternyata namanya Gofer.
55:23Tau kan itu yang kaya Tupai.
55:25Tadinya kira itu Tupai
55:27atau Brang-Brang atau apa.
55:29Ternyata bukan. Itu namanya Gofer.
55:31-Basa Indonesia-nya apa?
55:33-Iya nggak penting. Ya nggak ada, nggak tahu.
55:35Apa ya? -Oh, nggak tahu ya?
55:37Binatang bahasa Indonesia-nya.
55:39Binatang apa? Itu Gofer.
55:41-Oh, tikus tanah.
55:43-Tikus tanah.
55:47-Tikus tanah itu yang kaya gimana?
55:49-Iya itu yang kaya logonya Go.
55:51-Oh, bulunya warna biru gitu.
55:55Wah, keren banget.
55:57Heimster kali itu.
55:59-Kaya lebih kayak
56:01Tupai Brang-Brang gitu loh.
56:03-Brang-Brang ya? Iya, iya, iya.
56:05-Tadinya kira yang Brang-Brang. Bukan.
56:07Brang-Brang kan Otter bahasa Inggrisnya.
56:09Ini namanya Gofer. Ya, mungkin nggak ada di Indonesia.
56:11-Saudaranya lah.
56:13-Kok jadi
56:15ngomongin logo kita ya.
56:17Ini masih
56:19berusaha jawab ya. -I'm back to WebRTC.
56:21WebRTC itu nggak pakai satu set protocol.
56:23Dia pakai beberapa sets
56:25of protocol.
56:27Karena untuk streamnya sendiri itu
56:29bukan HTTP. Karena HTTP
56:31nggak bisa stream.
56:33Setau saya. -Belum bisa stream ya.
56:35-Jadi kalau untuk streamnya
56:37dia pakai yang berbeda.
56:43-Good question. Saya
56:45perlu baca lagi.
56:47-WebRTC itu
56:49luas banget ya ternyata.
56:51Maksudnya WebRTC itu
56:53satu kategorisasi yang berisi
56:55banyak banget API.
56:57Jadi kayak bahkan yang, apa itu?
56:59Kamera, media stream.
57:01Itu aja, itu sebenarnya bagian
57:03dari WebRTC.
57:05Media device punya
57:07semua yang terkait media
57:09capture,
57:11kamera, mikrofon.
57:13Itu ternyata bagian dari
57:15WebRTC.
57:17-WebRTC tidak menggunakan
57:21HTTP, tapi dia menggunakan
57:23TCP.
57:25HTTP menggunakan TCP sih.
57:29Tapi bukan
57:31berarti WebRTC menggunakan
57:33HTTPS.
57:35-Ini ada yang ketinggalan ya pertanyaannya.
57:39Terima kasih ya
57:41Rafki tadi pertanyaan tentang WebRTC
57:43jadi kita bisa jadikan bahan
57:45topik sendiri ya.
57:47Tadi kita sempat bahas WebSocket.
57:49Jadi implementasi socket itu
57:51bukan request setiap detik, bukan.
57:53Itu
57:55tradisional. Versi modernnya
57:57adalah dia buka jalur khusus
57:59yang tidak tertutup.
58:01Jadi bisa saling kirim data
58:03antara server sama klien.
58:07Nah, kita tadi ini baru
58:09sampai ngomongin HTTP.
58:11Belum ke HTTPS.
58:13-Padahal ide ini
58:17topik ini gara-gara HTTPS ya.
58:19-Gara-gara HTTPS.
58:21Yang mana nih?
58:23Guideline HTTPS.
58:25-Yang overview aja dulu yang
58:27paling pendek tuh. HPB
58:29NGCO.
58:31Jadi intinya kan
58:33HTTPS adalah
58:35HTTPS ditambah
58:37TLS.
58:39Nah, itu sebenarnya apa?
58:41Kalau dilihat ke atasnya itu
58:43artikel tentang TLS sih sebetulnya.
58:45-TLS itu apa kepanjangannya?
58:47Nah, ini 7 layer ya.
58:51Transport layer security.
58:53Oke, terus
58:59silahkan baca sendiri.
59:01-Mengamankan, menyediakan
59:03satu layer keamanan.
59:05-Nah, untuk HTTPS sendiri
59:07ini...
59:09-Kaya lagu Halloween gitu ya.
59:11-Lagu Halloween.
59:13Kita nggak tahu.
59:15Kita nggak merayakan Halloween.
59:17Bukan, bukan OC layer.
59:21Ini transport layer security.
59:25Beda sama, sedikit beda sama
59:29OC layer ya. OC layer juga 7.
59:311, 2, 3, 4, 5, 6.
59:33Ini cuma 6.
59:35OC layer itu network ya. Transport ya.
59:39Unencrypted communication via...
59:43Gimana?
59:45-Ingat jaman dulu mau punya HTTPS itu mahal.
59:47Oh iya.
59:49Harus bayar.
59:51Kalau sekarang ada yang gratis.
59:53Gampang.
59:57Unencrypted communication via HTTP
59:59and other protocols
1:00:01great rates, number of privacy, security
1:00:03and integrity vulnerabilities.
1:00:05Such actions
1:00:07are susceptible
1:00:09to interception, manipulation, and impersonation.
1:00:11Jadi intinya adalah...
1:00:13-Saya mau di-ticket di tengah-tengah ya.
1:00:15-HTTP itu kan...
1:00:17-In the middle attack.
1:00:19-Plan text kan. Plan text tiba-tiba
1:00:21di tengah-tengah ada yang
1:00:23ngambil request kita
1:00:25atau response kita, intercept
1:00:27kemudian dia tambahin
1:00:29sesuatu
1:00:31masuklah virus ke server kita
1:00:33atau masuklah virus ke laptop kita.
1:00:35-Atau penting yang dikirim bisa di...
1:00:37-Diambil juga, di-copy bukan diambil ya.
1:00:39Password apalah...
1:00:41-Kalau situs kita
1:00:43pakai HTTPS saja
1:00:45password yang lewat itu
1:00:47di networknya.
1:00:49Yang pegang network, yang pegang
1:00:51access point atau wifi atau router
1:00:53itu bisa lihat datanya lewat pelanjang.
1:00:55-Kaya datanya, text biasa.
1:00:57-Iya, lewat pelanjang, datanya text.
1:00:59-Saya sering main-main begitu dulu.
1:01:01Saya suka, oh passwordnya ini.
1:01:03Jaman dulu
1:01:07yang kalau
1:01:09teman-teman
1:01:11pernah merasakan,
1:01:13itu ngenet
1:01:15yang banyak aja. Dulu ada
1:01:17wifi.id, yang sebut
1:01:19merek gitu. Wifi apa gitu.
1:01:21Wih, ada wifi gitu.
1:01:23Gitu-gitu dibuka
1:01:25situsnya, terus ada iklan muncul
1:01:27dan iklan itu punya dia, gitu.
1:01:29Muncul di
1:01:31di-footer. Saya kadang
1:01:33meskipun yang saya bukan pakai
1:01:35public wifi, saya pakaiin di rumah.
1:01:37Itu loh.
1:01:39Ini situs saya, kenapa
1:01:41ada iklannya?
1:01:43Saya nggak pasang iklan ini, padahal
1:01:45oh, ternyata
1:01:47ternyata
1:01:49koneksi saya di intercept
1:01:51dan dia menginjekkan JavaScriptnya
1:01:53ke HTML
1:01:55saya, dan iklannya
1:01:57muncul.
1:01:59-Iya, kalau cuma iklan.
1:02:01Kalau tracking pixel atau semacamnya
1:02:03ya udah. -Oh, ada juga tracking
1:02:05pixel banyak.
1:02:07Suka-sukanya masukin apa.
1:02:09-Jadi hati-hati, kalau
1:02:11ada wifi gratis, ya
1:02:13waspada saja, waspada.
1:02:15-Selalu gunakan
1:02:17VPN. -Iya. Jangan
1:02:19buka website yang macam-macam
1:02:21seperti bank.
1:02:23-Macam.com
1:02:25-Bukan. Banking.
1:02:27Banking e-bank.
1:02:29Buat transaksi, ada
1:02:31username, password, dan lain-lain
1:02:33di public wifi
1:02:35karena yang punya router
1:02:37bisa melihat juga. Ada kemungkinan
1:02:39dia bisa melihat, gitu ya.
1:02:41Makanya selalu siap-siap
1:02:43dia VPN.
1:02:45-Karena belum tentu
1:02:47kita, Mas. Pasti bisa melihat sih.
1:02:49-Iya, pasti.
1:02:51Antara plain text
1:02:53atau yang encrypted, kan?
1:02:55Jadi ya, tergantung
1:02:57kita gimana. -Bisa lihat
1:02:59kalau dah encrypted, gak apa-apa.
1:03:01Bentuknya kurang-kurangnya.
1:03:03-HTTPS ini
1:03:05melakukan itu. Jadi
1:03:07mereka tidak lagi
1:03:09mengirimkan data dalam bentuk
1:03:11plain text yang bisa dibaca oleh
1:03:13mata manusia, tapi
1:03:15ini dalam bentuk enkripsi, ya?
1:03:17Dia enkripsi, ya?
1:03:19-Kalau teman-teman ingin
1:03:21bereksperimen, silahkan
1:03:23pasang sendiri, misalnya routernya,
1:03:25terus bikin browser, apa,
1:03:27HTTP sendiri di rumah, lokal hot,
1:03:29liatlah data yang lewat, itu
1:03:31bisa pakai Wireshark.
1:03:33-Wireshark. -Ya, itu saya pakai
1:03:35dulu. Saya suka pakai, terus liat data
1:03:37yang lewat. Wireshark.
1:03:39-Wireshark.
1:03:41-Semua.
1:03:43-Nah, apa hubungannya
1:03:45HTTPS sama
1:03:47Coarse? Nah, ini bisa jadi topik
1:03:49sendiri juga ini. Banyak ya topik
1:03:51malam ini ya.
1:03:53Coarse, cross origin, resource.
1:03:55-Resource,
1:03:57apa, script, eh.
1:03:59-Bukan. -Case-nya apa sih?
1:04:01-Wah, gak lulus interview.
1:04:03-Cross origin
1:04:05resource sharing.
1:04:07-Resource sharing.
1:04:09-Ada hubungannya gak? -Ini kita bahas
1:04:11saat kripsasi Sandbox.
1:04:13-Oh iya, kripsasi Sandbox.
1:04:15-Oh iya, kita bahas origin.
1:04:17-Pertanyaannya ada hubungan
1:04:19dengan HTTPS?
1:04:21-Nggak.
1:04:23-Tidak secara langsung?
1:04:25-Iya, sama-sama
1:04:27berkaitan security ya.
1:04:29-Sama-sama security, tapi
1:04:31ya, hubungannya, ya, satu
1:04:33kategori ya, tapi tidak ada
1:04:35hubungan secara langsung. Karena
1:04:37HTTPS juga bisa
1:04:39gitu.
1:04:41-Rekonsider adalah bagian dari
1:04:43HTTPS.
1:04:45-HTTP ya, gak harus HTTPS.
1:04:47-Iya, HTTPS, bukan gak harus HTTPS.
1:04:49Jadi, yang dilakukan HTTPS
1:04:51adalah protect integrity of the website,
1:04:53protect the privacy and
1:04:55security of user, enable
1:04:57powerful features on the web, contohnya
1:04:59offline experience,
1:05:01user optin,
1:05:03apa lagi,
1:05:05dan lain-lain.
1:05:09Jadi, ya itu ya, sederhananya adalah
1:05:13data kita sudah tidak bisa dibaca
1:05:15oleh mata manusia,
1:05:17harus butuh apa ya,
1:05:19butuh effort lah untuk
1:05:21mendeskripsi
1:05:23bahasa Indonesia-nya, baliknya
1:05:25apa? Decrypt ya?
1:05:27-Decrypsi. -Decrypsi
1:05:29datanya supaya bisa dibaca.
1:05:31Ya, itu posibel juga, cuman
1:05:33lebih sulit lah, gitu.
1:05:35Terus gak segampang itu
1:05:37menyusupin ke respons-nya juga.
1:05:39-Iya. -Bisa jelaskan bagaimana
1:05:41cara kerjanya gak?
1:05:43-Kerjanya HTTPS? -Apa bisa begitu?
1:05:45-Iya. -Ini? Bukan?
1:05:47-Aduh, itu TLS nih. -Itu CLS nih.
1:05:49-Doh ya. -Yang itu?
1:05:51-Bagaimana data
1:05:53di Encrypt itu pakai
1:05:55certificate private key dan public key.
1:05:57-Oke.
1:05:59Gak ada ya. -Iya gak, kalau kita generate
1:06:01generate
1:06:03-GWP, bukan. -Jangan pakai
1:06:05Less Encrypt kan,
1:06:07kalau installnya sekarang udah gampang banget ya.
1:06:09-Gampang banget. -Sertboard install
1:06:11jadi. -Malah kita gak usah ngapain-ngapain,
1:06:13biasanya kalau pakai hosting modern
1:06:15kan pasti hampir pasti include lah.
1:06:17-Udah, hampir pasti include.
1:06:19-Mustahil pakai firebox hosting atau
1:06:21kompetitor apapun lah yang modern.
1:06:23-Betul. -Gitu.
1:06:25-Atau kalau manual
1:06:27pakai apa? Pakai Cloudflare
1:06:29juga sudah ada kan?
1:06:31-Atau
1:06:33coba generate
1:06:35self generate SSL.
1:06:37-SSL sendiri.
1:06:39-Bisa juga
1:06:41self generate.
1:06:43-Self generate.
1:06:45-Nanti
1:06:47itu nanti harus allow sendiri ya.
1:06:49Allow browsernya
1:06:51kayak trust gitu.
1:06:53-Paling sederhana, di localhost aja
1:06:55di localhost, bisa kok.
1:06:57Localhost dibikin HTTPS, gimana caranya.
1:06:59-Ada.
1:07:01-Jadi kita ada private key
1:07:03dan public key.
1:07:05-Tapi jadi gak belajar.
1:07:07-Hah.
1:07:09-Dari private key dan public key itu
1:07:11public key
1:07:13public key-nya ini
1:07:15akan dibaca oleh
1:07:17browser.
1:07:19-Server. -Server.
1:07:21-Yang akan dipublish ke
1:07:23akan dikirimkan, bisa di request
1:07:25oleh si
1:07:27browser itu namanya nanti
1:07:29SSL HMC.
1:07:31Jadi dia baca public key-nya,
1:07:33dia terima
1:07:35public key-nya, terus waktu
1:07:37nanti data
1:07:39mau dikirimkan, dia
1:07:41semua data yang
1:07:43mau dikirimkan ke server
1:07:45itu akan di hash
1:07:47menggunakan public key.
1:07:49Anguritmenya banyak, saya gak tahu,
1:07:51ada beberapa
1:07:53berbagai jenis.
1:07:55Dan di-encrypt,
1:07:57terus data yang di-encrypt
1:07:59akan dikirimkan ke server.
1:08:01Nah, data yang di server,
1:08:03saat diterima,
1:08:05sebelum dia didecrypt,
1:08:07sorry, untuk mendecryptnya
1:08:09itu, dia akan ada
1:08:11proses validasi. -Dicucukin sama private key ya?
1:08:13-Yes, jadi dari
1:08:15private key, yang itu dia
1:08:17kan ada
1:08:19challenge, ada hash-nya juga,
1:08:21ada challenge hash-nya itu akan
1:08:23validasi dengan private key,
1:08:25eh, cocok ini digenerin oleh public key-nya
1:08:27sendiri, barulah
1:08:29bisa di decrypt.
1:08:31Begitulah, sekirah-kirah
1:08:35cara bekerjanya, private key
1:08:37dan public key.
1:08:39Sama, itu
1:08:41mirip-mirip kok semua
1:08:43cara kerjanya SSL
1:08:45handshake itu sama kayak cara kerjanya
1:08:47SSL.
1:08:49Ingat gak, kalau SSL itu kan kita kalau jenis SSL
1:08:51lagi, ada IDRSA,
1:08:53ada, sekarang masih jaman
1:08:55IDRSA PUP,
1:08:57publica.
1:08:59Tapi, anyway,
1:09:01RSA yang biasa tanpa .PUB
1:09:03ada yang PUB.
1:09:05Nah, kalau biasa di server kita
1:09:07taro yang authorized key,
1:09:09itu kan PUB-nya doang, jangan
1:09:11private key. Nanti
1:09:13waktu dia handshake itu kita
1:09:15dari si klien akan
1:09:17connect ke server,
1:09:19dan data yang dikirimkan
1:09:21bisa diauthorized.
1:09:23Oke, ini benar dari private key
1:09:25yang...
1:09:27hasil hasilnya itu bisa
1:09:29di decrypt oleh
1:09:31public key, dan itu
1:09:33akan bisa nyambung, itu yang namanya
1:09:35handshake. Sama.
1:09:37Ini pasti
1:09:39temen-temen sering
1:09:41kejadian kalau mau
1:09:43pull request,
1:09:45mau kirim data ke
1:09:47GitHub, ya.
1:09:49Kalau nggak mau masukin user yang password
1:09:51pakai HTTP, pakai SSH,
1:09:53itu harus generate keygen
1:09:55nya dulu kan. Abis itu
1:09:57di copy-paste lah di GitHub-nya,
1:09:59apa RSA PUP-nya.
1:10:01Kita masukin
1:10:03di account settings sama
1:10:05di lokal kita ya?
1:10:07Iya.
1:10:09Dan public key,
1:10:11public key-nya itu unik untuk
1:10:13seluruh user yang ada
1:10:15di dunia.
1:10:17Nggak ada yang sama.
1:10:19Nggak bakal ada yang sama?
1:10:21Bisa jadi sama, tetapi
1:10:23kecil banget kemungkinannya.
1:10:25Kecil-kecil-kecil-kecil banget.
1:10:27Tapi
1:10:29so far nggak akan
1:10:31bisa sama. Misalnya temen-temen coba aja
1:10:33punya 2 account GitHub,
1:10:35masukin aja public key yang dari
1:10:37user A, masukin di user B
1:10:39nggak akan bisa.
1:10:41Iya. Sekarang GitHub
1:10:43udah harus
1:10:45provider authentication ya.
1:10:47Tidak bisa hanya email.
1:10:49Harus pakai
1:10:51ini ya. Apa namanya?
1:10:53Yang harus masukin dari
1:10:55external device
1:10:57atau apa-apa.
1:10:59Pakai paski dong.
1:11:01Pakai paski dong.
1:11:03Pengen tau paski,
1:11:05nanti datang ke Tok saya.
1:11:07Loh, di Malaysia.
1:11:09Di Malaysia.
1:11:11Di Malaysia.
1:11:13Hmm.
1:11:15Oke.
1:11:17Sudah.
1:11:19Selesai, dimateri kita?
1:11:21HTTP 3? Belum.
1:11:23HTTP 3 mau dibahas?
1:11:25Yang mana? Ada nggak?
1:11:27Ada, ada, ada.
1:11:29Coba bahas ya.
1:11:31HTTP 3.
1:11:33Kita masukkan.
1:11:35Jadi, HTTP 3 ini
1:11:39sendiri belum
1:11:41fully supported ya.
1:11:43Jadi, teman-teman.
1:11:45Dan HTTP 3
1:11:49ini sendiri ada beberapa
1:11:51standard. Sorry, ada
1:11:53substandardnya. Jadi, ada yang
1:11:55bisa streaming, bisa
1:11:57push, ada bisa
1:11:59UDP segala macam. Ada
1:12:01kode-kode-nya, dan saya pusing sendiri
1:12:03kalau mau menjelaskan yang satu-satu.
1:12:05Yang membedakan
1:12:07antara hati...
1:12:09main-main different,
1:12:11main ingredients-nya yang membedakan
1:12:13antara HTTP 2 dan
1:12:153. Itu
1:12:17adalah di HTTP 3
1:12:19instead of menggunakan
1:12:21TCP, dia menggunakan UDP.
1:12:23Yang artinya jauh lebih...
1:12:25Yang UDP itu...
1:12:27Jauh lebih cepat?
1:12:29User Datagram Protocol dia
1:12:31nggak ada aceka-acekaan.
1:12:33Tidak ada handshake?
1:12:35Ada handshake, tapi dia nggak aceka.
1:12:37Oh iya. Ini kan, bedanya
1:12:39TCP sama UDP.
1:12:41Kalau TCP, dia memastikan datanya
1:12:43nyampe. Kalau UDP, nggak peduli, kan?
1:12:45Betul, betul.
1:12:47Jadi, kita kirimin data, seram menyampe
1:12:49munggak terserah, gitu kan? Bebas.
1:12:51Broadcast, kayak broadcast data, gitu.
1:12:53Kalau TCP, setelah handshake,
1:12:55dia kirimin data, dia
1:12:57tungguin dulu. Bisa buka
1:12:59ini-nya saya, dari link-nya saya
1:13:01yang tentang UDP.
1:13:03Dia tungguin dulu, sampai...
1:13:05yang glossary
1:13:07yes, glossary UDP.
1:13:09Sampai datanya berhasil dikirim
1:13:11atau datanya error, kan?
1:13:13Kalau TCP/IP, kan?
1:13:15Ada diagram yang sedikit di bawah.
1:13:17Jadi, ada status-nya. Nah, ini dia.
1:13:19Kalau UDP, hanya
1:13:21request-response saja.
1:13:23Betul. Jadi,
1:13:25sync, sync-aceka, aceka.
1:13:27Jadi, dia nanya
1:13:29kalau TCP itu, buka
1:13:31koneksi dong. Oke.
1:13:33Dua terima nggak? Oke, gue terima.
1:13:35Dia kirim lagi. Oke, siap.
1:13:37Oke, kita sudah. Pasti ini.
1:13:39Sudah selesai.
1:13:41Barulah kirimkan data-nya. Jadi, ada
1:13:43round-robin di sini. Minimal.
1:13:45Jadi, setiap kali kita request,
1:13:47ada round-robin.
1:13:49Round-robin atau salah? Bukan apalah.
1:13:51Bahasanya itu. Bolak-balik lah.
1:13:53Beberapa kali ya.
1:13:55Kalau di UDP, request,
1:13:57langsung kasih semua. Nah.
1:13:59Ini buat lu semua. Bodo amat.
1:14:01Nggak ada status error, nggak ada status
1:14:05oke, dan lain-lain ya.
1:14:07Jadi, secara...
1:14:09Tapi, ini jadi lebih cepat.
1:14:11Ya.
1:14:13Jadi, jatahannya
1:14:15koneksinya jauh lebih...
1:14:17Ya, dua kali lebih cepat lah ya.
1:14:19Ya, karena dia nggak perlu bolak-balik kan.
1:14:21Tapi, reliable nggak?
1:14:25Kalau TCP kan, terkenal-nya
1:14:27reliable kan?
1:14:29Oke, sedikit
1:14:31ini ya, sedikit
1:14:33fallback, dia ada fallback-nya begini.
1:14:37Kalau saat ini
1:14:39standard-nya tuh.
1:14:41TCP, HTTPS 3
1:14:43wajib menggunakan HTTPS.
1:14:45Masih di atas HTTPS ya.
1:14:47Menggunakan, sorry, SSL-TLS.
1:14:49SSL-TLS ya.
1:14:51Harus menggunakan SSL-TLS
1:14:53karena UDP itu kan
1:14:57kemudian lagi secara data
1:14:59dia nggak peduli, jadi makanya harus di-encrypt.
1:15:01Nah, jadi
1:15:03saya pakai HTTPS 2
1:15:05Push yang tadi.
1:15:07Namun, secara
1:15:09asetektur atau konsep
1:15:13kalau si HTTPS 3 ini
1:15:15masih ada fallback ke HTTPS 2.
1:15:17Jadi, first request
1:15:19dari si server
1:15:21ya, dia, si klien
1:15:25kan nggak tahu nih
1:15:27kalau si server itu bisa HTTPS 3
1:15:29atau tidak.
1:15:31Ya, dia masih tetap menggunakan HTTPS 2.
1:15:33Si browser pertama kali
1:15:35dia ngedetek, oke
1:15:37dia request HTTPS biasa
1:15:39HTTPS 2.
1:15:41Terus si server itu
1:15:43baliknya kasih tahu
1:15:45eh, gue support HTTPS 3.
1:15:47Di header yang tadi kita lihat itu kan?
1:15:49Iya, coba mas Riza
1:15:51buka di network type-nya tadi.
1:15:55Buka aja ini.
1:15:57Di refresh.
1:16:01Oke.
1:16:05Ke bagian dock-nya aja di atas.
1:16:07Ya.
1:16:11Turun sedikit.
1:16:13Di header-nya, response.
1:16:15Oke.
1:16:17Dia ngasih tahu
1:16:19alternate service.
1:16:21Dia ngasih tahu, saya punya H3.
1:16:23Di port 3.
1:16:25Nah, disinilah
1:16:27browser switch.
1:16:29Menggunakan
1:16:31HTTPS 3.
1:16:33HTTPS 3 ini
1:16:37dulunya
1:16:39HTTPS 2 on
1:16:41quick protocol.
1:16:43Quick itu.
1:16:45Sebenarnya sebelumnya itu.
1:16:47Jadi belum ada nama HTTPS 3
1:16:49masih kayak HTTPS 2
1:16:51plus quick.
1:16:53Artinya HTTPS 2
1:16:55on top of UDP, that's it
1:16:57sebenarnya. Terus tapi
1:16:59akhirnya dijadikan the next standard
1:17:01menjadi HTTPS 3.
1:17:03Kemulanya, dia lebih cepat
1:17:07aja, lebih cepat mengirimkan data
1:17:09untuk
1:17:13yang lain saya
1:17:15nggak banyak.
1:17:17Bahkan Nginx sendiri
1:17:19belum. Nginx
1:17:21sendiri itu, terakhir ya
1:17:23tahun lalu, itu
1:17:25untuk support
1:17:27HTTPS 3 aja, dia masih
1:17:29experimental.
1:17:31Tapi saya udah
1:17:33ada docker image-nya.
1:17:35Sudah ada docker image-nya untuk bisa
1:17:39HTTPS 3.
1:17:41Ini salah satu
1:17:43keunggulannya juga kali ya. Quick ini
1:17:45didesign untuk mobile heavy
1:17:47internet usage.
1:17:49Kalau kita pakai mobile phone.
1:17:51Behavior orang tuh udah
1:17:53behavior orang yang access internet
1:17:55udah beda banget, antara sekarang sama tahun 90
1:17:57dulu. Betul.
1:17:59Kalau dulu kan pasti di desktop kan,
1:18:01atau di laptop lah. Di desktop dan
1:18:03pasti di kantor kan dulu.
1:18:05Sekarang gue baru internet di rumah.
1:18:07Sekarang di tangan. Sekarang gue baru
1:18:09ingat perumpamaan kenapa
1:18:11butuh HTTPS 3. Untung Mas Rizal
1:18:13sebutin. Jadi
1:18:15di mobile itu, kita kan ada
1:18:17tower. Tower A sama
1:18:19tower B. Tower A sama
1:18:21tower B. Terang-terang gue terlalu lewat.
1:18:23Tower A sama tower B.
1:18:25Anggap kita lagi naik kereta api.
1:18:27Kita waktu saat request
1:18:29saat request itu kita lebih dekat
1:18:31ke tower A. Tetapi waktu
1:18:33kita response ternyata
1:18:35kita lebih dekat
1:18:37ke tower B.
1:18:39Si nya handphone kita itu
1:18:41sudah switch ke tower B.
1:18:43Nah, jadi
1:18:45kalau kita tadi
1:18:47pakai proses TCP, dia
1:18:49bingung nih. Gagal.
1:18:51ACK-ACK nya itu jadi
1:18:53lambat. Jadi terlalu
1:18:55bisa kayak kita kok lambat banget
1:18:57lembut gitu kalau dalam kereta yang
1:18:59lagi melaju gitu ya. Sedangkan
1:19:01kalau pakai dissolve nya
1:19:03pakai quick ini. Jadi gak peduli
1:19:05tower mana source untuk
1:19:07internetnya. Dia gak perlu
1:19:09ACK-ACKan. Jadi tinggal kirim
1:19:11ya, diterima.
1:19:13Itu kenapa adanya
1:19:15quick.
1:19:17Ada
1:19:19apa kayak
1:19:21case.
1:19:23Penjelasannya gitu.
1:19:25Penjelasannya pakai comic.
1:19:27Katar belakang.
1:19:29Kalau dulu HTTP
1:19:31digunakan oleh
1:19:33orang-orang yang less portable
1:19:35atau device yang
1:19:37less portable seperti laptop ataupun
1:19:39PC, sekarang sudah tidak
1:19:41lagi. Bahkan kita
1:19:43kalau sekarang ke gedung aja
1:19:45access pointnya bisa
1:19:47aja kita gak tahu kan si
1:19:49device kita ambil access point yang mana.
1:19:51Yes.
1:19:53Jadi itu
1:19:55apa-apa, si HTTP 3 ini
1:19:57dikembangkan berdasarkan kebutuhan.
1:19:59Kebutuhan perubahan behavior
1:20:01kita sebagai user.
1:20:03Roundtrip
1:20:05bahasanya itu
1:20:07ada di sini kan.
1:20:09Roundtrip itu kayaknya pertandingan
1:20:11karakter.
1:20:13Roundtrip itu kayak bergantian
1:20:15gitu. Roundtrip itu kayak bergantian.
1:20:17Informaturnakan biasanya babak penyisihan
1:20:19gitu loh.
1:20:21Ya, biasanya kalau tiebreak itu ada
1:20:23roundtrip. Yes.
1:20:25Terus
1:20:27faster. Ya, connection
1:20:29establishment karena gak perlu
1:20:31ACK-ACKan.
1:20:33Iya, zero roundtrip sama
1:20:35descriptionnya udah lebih comprehensive.
1:20:37Jadi lebih soliti.
1:20:39Ya,
1:20:41ini adalah
1:20:43huge upgrade from HTTP 2.
1:20:45Help mitigate
1:20:47the risk of attacks.
1:20:49Itu dia HTTP 3. Tapi
1:20:51belum semua
1:20:53aplikasi menggunakan
1:20:55HTTP 3. Bahkan
1:20:57masih ada yang menggunakan HTTP 1.
1:20:59Tadi ada tulisannya dimana ya? Nah ini.
1:21:01After
1:21:03bukan ya.
1:21:05Express udah HTTP 3 belum ya?
1:21:07Kayaknya belum. Masih 2 sih.
1:21:09Oh ada nih isunya dari
1:21:11tahun 2021. Siapa tau teman-teman?
1:21:13Ini dia nih.
1:21:15Nah, kalau mau lihat website yang
1:21:17masih pakai HTTP 1 tuh
1:21:19coba ya buka deh.
1:21:21Di private chat.
1:21:23Okay.
1:21:25Wah, ini yang punya
1:21:27protokol ya? Ini halaman web pertama.
1:21:29Iya. Ini adalah
1:21:31halaman web pertama.
1:21:33Buka DevTools.
1:21:35Bisa kita lihat di kiri ada itu-nya.
1:21:37Kiri atas. Not secure.
1:21:39Ada warning-nya. Not secure.
1:21:41Kiri mana? Kiri atas.
1:21:43Di jaman itu belum ada HTTPS.
1:21:49Oh, HTTPS apa? HTTPS 1?
1:21:53HTTPS dan HTTPS 1.
1:21:57Belum ada HTTPS jelas.
1:21:59Terus ini kan keliatannya masih HTTPS 1 ya?
1:22:01Coba aja, reload.
1:22:03Accept.
1:22:07Tapi response-nya normal-normal aja.
1:22:09Nggak ada versiannya ya?
1:22:11Oh iya, HTTPS 1 kan belum ada
1:22:17versi kan?
1:22:19Masuk HTTPS 1 baru kan?
1:22:21Ini 0.9 nih.
1:22:23Ini 1 keliatannya deh.
1:22:251 ya?
1:22:27Udah ada ya?
1:22:29Coba lihat row-nya, Mas.
1:22:31Row.
1:22:33Udah ada response-nya, Mas.
1:22:35Cuma tadi kan ada alt.
1:22:37response-nya diklik row.
1:22:39Itu satu-satu.
1:22:41Oh iya, satu-satu.
1:22:43Kan udah ada response-nya, Mas.
1:22:45Tapi belum ada.
1:22:47Oh, nggak perlu.
1:22:49Formal spaces nggak perlu.
1:22:53Lihat ini-nya.
1:22:55Itu kan ini standarnya tuh.
1:22:57Harus begitu. Standarnya harus
1:22:59urutannya begitu tuh.
1:23:01HTTPS 1-1, 200, OK.
1:23:03Kan kita bahas lagi.
1:23:05Itu standar itu.
1:23:09Nggak boleh dirubah-rubah.
1:23:11Dan kita belum bahas tentang status-quot ya.
1:23:13Teman-teman udah tahu ya harusnya status-quot ya.
1:23:15100 informasi.
1:23:17Oke, siap.
1:23:21Teaser buat episode berikutnya.
1:23:23OK, HTTPS status-quot.
1:23:25Yang dinosaurus apa ya?
1:23:27Dinosaurus.
1:23:29Nggak ada dinosaurus.
1:23:31Ada 419.
1:23:33Lucu-lucu ya, lucu-lucu ya.
1:23:37Ada jokes-jokes-nya juga ya.
1:23:39Oke, siap-siap.
1:23:41Boleh, boleh, boleh.
1:23:43Siapa yang bikin
1:23:45best API server
1:23:47kalau gagal,
1:23:49pokoknya kirim 200, tapi status-nya
1:23:51status-status error.
1:23:53Status error.
1:23:55Saya pernah ngalamin beneran dong, salah.
1:23:57Terus dimerahin.
1:23:59Karena itu menaruh ke
1:24:01SEO kan.
1:24:03Saya paling benci sama developer
1:24:05yang bikin begitu.
1:24:07Ya Elna, kalau gagal
1:24:09kenapa dibikin 200?
1:24:11Ya, jadi buat
1:24:13teman-teman, warning ya.
1:24:15Anak-anak bikin nih, kalau bikin
1:24:17recipe I, hatikan status-quotnya.
1:24:21Itu karena belum ngerti aja sih.
1:24:23Sebentar, kalau GraphQL
1:24:25bukannya di 200 semua ya, walaupun error ya?
1:24:27Nggak ya?
1:24:29Kayaknya ya.
1:24:31Kalau error, ya error.
1:24:33Dengan status-quot 200?
1:24:37Dengan status-quot 500?
1:24:39Kayaknya
1:24:43memes yang mengembalikan 200 itu
1:24:45gara-gara GraphQL deh.
1:24:47Kayaknya ya, nggak tahu juga.
1:24:49Teman-teman, ada yang pernah menggunakan
1:24:51GraphQL?
1:24:53Nah, makanya ini cocok buat satu episode lagi, kan?
1:24:55Iya, bisa, bisa, bisa.
1:24:57GraphQL, status-quot.
1:25:01Ada ini GraphQL over HPTP.
1:25:03Iya, dia nggak suka.
1:25:07Suka-sukanya.
1:25:09Kayaknya status-quot aslinya
1:25:11di body response-nya
1:25:13atau gimana gitu.
1:25:17Iya, status-quot in GraphQL.
1:25:19Nah, ini ada nantilah
1:25:21buat kita nanti ya.
1:25:23Oke, baiklah buat episode berikutnya.
1:25:25Berarti bahasan kita
1:25:29tentang HTTPS dan HTTPS
1:25:31kita cukupkan sampai di sini.
1:25:33Ada pertanyaan yang belum terjawab? Nggak ada ya?
1:25:37Mudah-mudahan sudah terjawab semua?
1:25:39Pasti kan aplikasi kalian sudah harus pakai HTTPS ya?
1:25:41Iya, itu
1:25:43sudah keharusan, karena
1:25:45jadi kebalik sekarang.
1:25:47Kalau mau akses HTTPS itu susah.
1:25:49Kalau dulu. Apalagi
1:25:53sertifikatnya gratis, kan?
1:25:55Kalian bisa datang ke webinar-webinar
1:25:57gratis sertifikat.
1:25:59Bukan itu ya.
1:26:01Kalian bisa
1:26:03pakai lesson creep.
1:26:05Pakain gratisan, lesson creep.
1:26:07Kalau untuk butuhan khusus
1:26:09ya silahkan bikin sendiri,
1:26:11atau kalau pengen ini sendiri belajar.
1:26:13Setelah datang, setelah datang
1:26:15sudah bisa wildcard belum sih?
1:26:17Sudah bisa ya? Apa itu?
1:26:19Setelah datang sudah bisa wildcard belum?
1:26:21Wildcard subdomain.
1:26:23Wildcard.
1:26:25Dulu sih... Tetap per origin, kan?
1:26:27Per origin.
1:26:29Sertifikat itu per origin, kan?
1:26:31Sudah bisa. Setelah datang,
1:26:33zaman saya sering pakai
1:26:35itu belum bisa wildcard.
1:26:37Wildcard itu artinya kayak...
1:26:39Ya, semua
1:26:41subdomain didatarkan di satu domain.
1:26:43Jadi cuma pakai satu
1:26:45sertifikat
1:26:47untuk semua subdomain.
1:26:49Ya.
1:26:51Sekarang sudah bisa, kok.
1:26:53Sudah bisa wildcard. Tuh, lebih keren.
1:26:55Mantap, mantap.
1:26:57Oke, kalau begitu
1:26:59terima kasih banyak semuanya yang sudah
1:27:01menemani, yang sudah ikutan diskusi juga.
1:27:03Jangan lupa
1:27:05yang mau nanya
1:27:07kasih saran, kasih topik, bisa ke
1:27:09bit.ly/ngobrolinwait
1:27:11Kita
1:27:13udahan dulu malam hari ini, ketemu lagi
1:27:15minggu depan
1:27:17di hari Selasa dengan topik yang berbeda.
1:27:19Sampai jumpa, bye-bye.
1:27:21Bye.
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
19 Feb 2025
Ngobrolin Protokol Jaringan - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...
17 Sep 2024
🗣️ Ngobrolin HTMX - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...
11 Jun 2024
Ngobrolin WebSocket - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...