Ngobrolin Design Pattern - 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://ksana.in/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.
Ringkasan Episode
Bantu KoreksiEpisode ini membahas tentang Design Pattern dalam pengembangan software, sebuah topik permintaan dari Mas Azam Aziz. Diskusi dimulai dengan perdebatan menarik tentang apakah MVC (Model-View-Controller) termasuk dalam kategori Design Pattern atau tidak, mengingat beberapa referensi menyatakan MVC bukanlah Design Pattern melainkan Architectural Pattern. Eka dan Ivan mengulas berbagai kategori Design Pattern seperti Creational Pattern, Structural Pattern, dan Behavioral Pattern, serta membahas referensi terpercaya seperti Refactoring Guru dan Patterns.dev karya Addy Osmani. Diskusi juga mencakup perbedaan antara Front-end dan Back-end Design Pattern, serta bagaimana konsep ini berbeda dengan Rendering Method seperti SSR, CSR, dan SSG. Episode juga menyentuh topik browser security seperti CORS (Cross-Origin Resource Sharing), CORP (Cross-Origin Resource Policy), dan berbagai kebijakan keamanan browser lainnya yang relevan bagi pengembang web modern.
Poin-poin Utama
- •MVC (Model-View-Controller) sebenarnya adalah Architectural Pattern, bukan Design Pattern, dan sudah ada sejak era Smalltalk
- •Design Pattern dikategorikan menjadi tiga jenis: Creational Pattern, Structural Pattern, dan Behavioral Pattern
- •Refactoring Guru dan Patterns.dev (karya Addy Osmani) adalah dua referensi terpercaya untuk belajar Design Pattern
- •Design Pattern berbeda dengan Rendering Method seperti SSR, CSR, dan SSG yang lebih fokus pada cara rendering halaman
- •Astro direkomendasikan sebagai framework fleksibel yang bisa mengkombinasikan berbagai metode rendering dalam satu aplikasi
- •Browser security menjadi topik penting dengan berbagai kebijakan seperti CORS, CORP, CSP (Content Security Policy), dan lainnya
- •Untuk aplikasi sederhana yang tidak butuh fitur kompleks Next.js, Vite dengan React Router sudah cukup untuk membangun aplikasi
0:00[music]
0:13Halo-halo-halo selamat malam
0:15Wey lagi pada nonton bola nih
0:19Iya, selasa malam waktunya tim nah
0:22Nonton bola ya
0:23[tertawa]
0:27Kan, bener kan setelah 2 tahun kita live setiap selasa malam
0:34Dapat tuh pattern-nya kan, polanya kan
0:36Ada tim nas ya
0:38Ada tim nas
0:40Desain tim nas, bukan desain pattern
0:43Ada polanya, pola tim nas seringnya
0:50Iya, jadwalnya selasa
0:53Kemarin ada si kamis ya
0:54[tertawa]
0:57Mudah-mudahan menang ya
1:01Di GBK dong ini
1:05[tertawa]
1:09PK lagi nonton bareng dia
1:11[tertawa]
1:15Skor berapa kosong-kosong
1:17[tertawa]
1:18Mata nanya in skor
1:26[tertawa]
1:33Ini solusi mahasiswa ini
1:35Solusi mahasiswa
1:37Iya, gimana kabarnya teman-teman
1:41Malam hari ini mudah-mudahan puasanya lancar
1:44Yang menjalankan puasa
1:47Tinggal sedikit lagi ya
Lihat transkrip lengkap
1:48Bentar lagi lebaran
1:49Mungkin ada yang udah mulai mudik ya
1:51Ada yang mulai mudik
1:52Kalau ada yang mulai mudik atau minggu depannya mudik
1:56Lancar-lancar di jalan, hati-hati di jalan
1:59Semoga sampai tujuan dan kembali lagi ke
2:04Kalau yang mudik kan balik lagi kan ya
2:07Gak apa-apa kalau gak balik juga gak apa-apa
2:11Silahkan pilihan masing-masing
2:14Oh iya download aja dulu offline
2:19Bisa gak sih Youtube download offline
2:21Bisa gak ya
2:22Bisa
2:23Kalau Netflix bisa kan
2:24Oh iya bisa bisa
2:25Youtube bisa download offline
2:26Youtube bisa download
2:28Downloadnya yang kecil aja kan
2:29Buat cuma dengerin doang kan
2:30Eh boleh sih
2:31Kalau ada visualnya juga gak apa-apa
2:33Iya
2:34Yang penting jangan sambil nyetir
2:35Lihat visualnya
2:38Iya jangan sambil nyetir
2:40Dengerin aja dengerin
2:42Iya dengerin aja
2:43Kita berusaha sebisa mungkin untuk itu ya
2:45Bisa dikonsumsi hanya dengan mendengarkan ya
2:48Mungkin ada beberapa visual tapi
2:52Cukup lah ya untuk mendengarin ya
2:56Oke malam ini
2:58Sesuai dengan permintaan yang ada di
3:04Apa
3:05Di github discussion
3:07Di sini
3:09Sanaline/ngobrolinweb
3:11Itu kita mau bahas
3:13Tentang design pattern
3:15Ini adalah
3:17Topik permintaan dari
3:20Mas Azam Aziz
3:22Mudah-mudahan nonton ya
3:23Kalau gak
3:24Kalau gak nonton
3:25Mungkin nanti nonton replaynya ya
3:27Nah kalau misalkan abis
3:29Habis dari live ini
3:31Kita mau diskusi lagi di sini
3:32Misalkan kayak tadi ya
3:34Barusan saya ngobrol sama Ivan juga
3:36MVC itu termasuk design pattern
3:39Sementara dari
3:43Beberapa referensi yang kita
3:46Kumpulin
3:48Gak ada itu MVC
3:49Jadi sebenarnya
3:51Definisinya sendiri pun
3:53Masih
3:54Belum jelas ya
3:57Mungkin sudah jelas
3:59Di luar sana
4:00Di luar sana
4:01Kita nya aja yang belum
4:02Nah maksudnya
4:04Mubah yang kayak
4:05Singleton dan lain-lain
4:07Itu kan abstrak banget ya
4:08Di system apapun
4:10Pasti ada
4:11Nah sedangkan kalau MVC kan
4:13Kayak aplikasi web
4:14Aplikasi setif
4:16Ya maksudnya
4:17Udah lebih spesifik
4:18Nah padahal kayak yang
4:19Di pattern strutif itu
4:21Ada yang lebih spesifik lagi
4:22Buat kayak jokot
4:24Kayaknya apa ya
4:25Design pattern itu kayak
4:26Arturilater yang kayak istilah
4:28Yang terhubung
4:29Yang dipakai apapun itu
4:31Jadi kayak gak
4:32Gak selalu sutara dan
4:34Bisa aja kayak
4:35Yang satu orang bayangin
4:38Tapi kita gak perlu bayangin
4:39Design pattern itu
4:40Sebagai ini, ini, ini
4:41Kalau di telepon lain
4:43Jadi kayak yang beda
4:45Kayak bisa bayangin
4:46Itu sebagian yang beda juga
4:47Maksudnya
4:49Yang pattern apa aja
4:51Yang sama team MVC itu
4:54Ya mungkin kalau orangnya
4:55Yang gak aplikasi web
4:57Yang terlalu spesifik
4:58Yang semakin spesifik
5:00Hmm
5:06MVC ini terkenal karena
5:09Ini ya, karena di PHP
5:11Dipakai sama
5:13Spring
5:15No
5:16Sebelumnya Spring
5:18Spring?
5:19Eh, Spring
5:20Iya, Spring Framework sama
5:22Zen, Zen, Zen
5:23Oh, Zen Framework
5:25Zen Framework kan pakai MVC ya
5:27Iya
5:29Padahal sebenarnya
5:31MVC sudah lahir
5:33Di jamannya Smalltalk
5:35Bahasa yang
5:37Kita sendiri gak ngalamin ya
5:38Eh, gak tau ada yang ngalamin gak Smalltalk
5:40Smalltalk ini
5:42Salah satu
5:45Bahasa
5:49Apa ya
5:50Bahasa yang menjadi referensi
5:51Bahasa, bisa dibilang bahasa
5:53Pioneer lah
5:54Bahasa pertama yang mengadopsi
5:55Object Oriented Programming
5:57Oh
5:59Bukannya si
6:00Smalltalk
6:01Bukan
6:02C++
6:03C++ kan Object
6:05Kalau si kan gak ya
6:07Iya, tapi yang pertama
6:09Yang pertama itu Smalltalk
6:11Nah, yang menciptakan adalah
6:14Ini
6:15Yang juga cukup berperan untuk
6:17Beberapa
6:19Beberapa
6:21Teknologi ya
6:23Salah satunya Apple ya
6:25Mouse juga
6:27Mouse, ya mouse
6:29Apa
6:31Gui, desain gui
6:33Ya, desain
6:35Kalau ini gak tau, beneran Serog ini bukan
6:37Bener gak sih Serog photocopy
6:39Ya, mungkin
6:41Mungkin
6:43Ya, jadi apa
6:45Mac ya, Mac OS
6:47Yang awal-awal sama Windows yang awal-awal itu
6:49Terinspirasi dari OS yang
6:51Mereka kembangkan di
6:53Center ini
6:55Jadi
7:01Nah, ini yang kita kaget, ini termasuk
7:03MVC termasuk software
7:05Desain Pattern, apalagi yang ada
7:07MVC, ada MVP
7:09Ada
7:11MVP, kalau ada yang tau
7:13MTV, MTV
7:15MTV
7:17Model, template, view
7:19Di Django itu pakai MTV dia
7:21Anak nongkrong
7:23Ada lagi gak ya
7:31Nah, ini dia disini ada tuh
7:33Builder
7:35Abstract Factory, Dependency Injection
7:37Factory Method, itu ada
7:49Dan lain-lain
7:51Karena ada dikategorikan itu kayak
7:53Creational Pattern, Behavior Pattern
7:55Structural Pattern
7:57Itu macem-macem
7:59Tapi MVC-nya sendiri berada dimana
8:01Konkerensi Pattern juga ada
8:03Nah, ini kan kita bakal
8:07Kalau menurut gue ya
8:09MVC itu jatuhnya di
8:11Structural Pattern
8:13Atau Behavior, gak tau ya
8:15Arsitekural Pattern
8:17Walaah
8:19Iya, Arsitektur kan
8:21Tadi kita udah ngomongin ini kan Arsitektur
8:23Tapi ada gak disini Arsitektural Pattern
8:25Gak ada
8:31Gak ada
8:33Oke, kalau gitu
8:35Kita bahas tentang
8:37Desain Pattern menurut
8:39Ya, definisi dulu ya, menurut
8:41Refactoring Guru
8:43Nah, ini source yang bagus banget ya
8:45Ya, saya penjelasannya
8:47Sama kayak spesifikannya
8:49Nah, disini juga ada
8:55Front-end
8:57Beda gak sih, antara Front-end
8:59Back-end
9:01Ada Domain Design Driven
9:03Domain Design Driven
9:05DDD
9:07Dan lain-lain
9:09Itu beda lagi ya
9:11Front-end kan ya, waktu itu kita udah sempat
9:13Bahas kan, itu lebih ke
9:15Rendering ya, Rendering Method ya
9:17Yang
9:19Rendering Method yang kayak itu ya
9:21Penamanya Static Site Generate
9:23SSG
9:25Client Site
9:27Rendering
9:29Rendering Method ya, oh beda
9:31GUL ya
9:33GUL
9:35Siapa yang GUL?
9:37Indonesia kayaknya
9:41Ya, oke
9:43Jadi kita coba ambil definisi
9:45Dari Design Pattern
9:47Dua referensi kita ada
9:51Di Refactoring Guru
9:53Sama di Patterns.dev
9:55Kalau Patterns.dev ini
9:57Adalah
9:59Yang bikin
10:01Itu salah satunya
10:03Adi Osmani
10:05Dia terkenal
10:07Di dunia web ya, jadi mungkin untuk Front-end
10:09Kayaknya lebih cenderung
10:11Ke arah Patterns.dev, tapi kalau
10:13Refactoring Guru ini lebih Generic atau
10:15Untuk Back-end kali ya, mungkin ya
10:17Enggak sih, lebih ke konsep sih
10:19Konsep
10:21Fundamental
10:23Kayaknya suaranya
10:27Enggak kedengeran
10:29Mungkin deketin mic-nya
10:31Kecil banget
10:33Dan pecah suaranya
10:37Pake apa sih?
10:39Ada apa sih?
10:41Ada mic
10:43Lapel, mic lapel
10:45Oh, keren
10:47Oh iya, gara-gara noisnya
10:51Terlalu sedih
10:53Lagi nonton bareng
10:57Ngeri, ngeri, ngeri
10:59Oke, lanjut
11:01Oke, jadi
11:03Design Pattern ini adalah
11:05Apa ya
11:07Pattern ya, pola yang sering ditemukan
11:09Dalam mendesain software
11:11Atau bentuk dari
11:13Software design gitu ya
11:15Kurang lebih kayak Blueprint lah
11:17Kalau di
11:19Arsitektur
11:21Bangunan
11:23Gitu ya, ada Blueprint kan, sebelum kita bikin
11:25Bangunan kan, kita harus bikin
11:27Desainnya dulu
11:29Blueprint-nya dan lain-lain
11:31Terus
11:33Meskipun demikian kita
11:35Nggak bisa cuma cari pattern yang
11:37Cocok, terus
11:39Kopi, langsung
11:41Masukin ke
11:43Software atau ke aplikasi kita
11:45Nah itu kata kuncinya di kalimat
11:47Kedua tuh bukan tentang kodenya
11:49Tapi konsep untuk membecahkan suatu
11:51Masalah
11:53Ya, oh iya, ada yang track lagi
11:55Kalau di React
11:59Pernah pakai Smart Dump Pattern, oh iya
12:01Ada pattern juga ya, masing-masing banyak pattern ya
12:03Pattern tuh ada di mana-mana
12:05Ya kalau React kan, kayak presentation component
12:07Oh
12:09Terus Flux
12:11Arsitektur juga termasuk pattern kan
12:13Apa lagi itu Flux
12:15Arsitektur
12:17Yang itu, yang dipakai
12:19Redux, yang ada action
12:21Ada
12:23Reducer
12:25Nah, lain-lain, nah itu kan
12:27Flux Arsitektur
12:29Yang namanya Flux
12:31Ya, kalau kerja sendiri
12:33Nggak ada pattern-pattern, nggak ada
12:35Bebas, kobo ya
12:37YOLO
12:39Tapi nggak
12:41Tidak
12:43Sepenuhnya salah kalau
12:45Kita, kalau kita
12:47Punya, apa ya
12:49Disiplin diri sendiri ya
12:51Dipakai aja, siapa tahu
12:53Tergantung, besarnya ukuran
12:55Yang mau dibangun sih, kalau misalnya
12:57Projeknya terlalu
12:59Cuma kecil-kecilan aja pakai
13:01Desain pattern yang
13:03Adapter-adapter
13:05Adapter, iya
13:07Terlalu
13:09Terlalu over engineer
13:11Betul
13:13Kalau mungkin akan
13:15Relate, kalau kita bikin library kali ya
13:17Misalkan kita bikin library untuk
13:19Database
13:21Database-nya bisa SQLite, bisa
13:23MySQL, bisa Postgres
13:25Nah, itu ada adapter-nya kan
13:27Gitu
13:29Di web framework juga banyak kan
13:31Kayak ASURO, kayak SWELTED
13:33Nyasuhai target deployment-nya kan
13:35Iya, betul
13:37Legacy code nggak ada pattern
13:41Ada, cuman kita nggak tahu aja namanya
13:43Siapa tahu ada
13:45Ada-ada
13:47Selalu ada kok dari awal
13:49Buktinya yang tadi kita sebutkan ya
13:51MVC
13:53Nih, lihat nih MVC nih
13:55Object Authentic, pattern nggak sih?
13:57Pattern?
13:59Iya
14:01Iya
14:03MVC
14:05Itu Smalltalk
14:07Diawali dari Smalltalk
14:09Smalltalk itu bahasa tahun berapa itu?
14:11Lihat nih
14:1380-an ya, itu ada 80-nya
14:15Itu artinya tahun ya
14:17Nggak tahu
14:19Iya, yang 79-an, 79-nya
14:21Oh iya
14:23Created in 1970-an
14:25Kurang legacy apa ini?
14:27Udah ada MVC mereka
14:29Maksudnya
14:31Ada, tapi mungkin kita nggak tahu aja
14:33Nggak ngeh
14:35Nah, ini juga salah satu yang menjadi
14:37Diskusi kita beberapa hari yang lalu
14:39Kok perasaan
14:41Di kerjaan nggak ketemu ya
14:43Kita nggak perlu pattern-pattern gini ya
14:45Kalo sampai sekarang, jujur
14:47Di group WhatsApp sih
14:49Kita bahas bahwa
14:51Jujur gue kalau harus jelasin design pattern itu apa
14:53Beneran nggak tahu, karena selama ini
14:55Cuma ngerti factory sama singleton
14:57Nah, kebetulan
14:59Interview kerja nggak ditanya
15:01Dan sepanjang kerja pun, ya nggak pernah
15:03Harus ngejelasin design pattern itu sendiri apa
15:05Tapi, ya nggak tahu ya
15:07Bisa aja kan prakteknya sebetulnya udah
15:09Ketemu dan nerapin
15:11Tanpa paham itu namanya design pattern
15:13Yang namanya ini-ini, prinsipnya ini-ini
15:17Walaupun ngebahas arsitektur, misalnya itu kerjaan
15:19Kan bakal langsung dibahas kan
15:21Maksudnya bagian-bagiannya apa aja, ini tanggung jawabnya apa
15:23Pola alurnya kayak gimana
15:25Itu kan
15:27Kayak kita bisa ngejalankan itu semua
15:29Tanpa tahu teorinya design pattern
15:31Tahuin namanya dia
15:33Betul
15:35Jadi, lebih ke ini ya
15:39Lebih ke kayak
15:41Kayak kumpulan
15:43Kayak jurus-jurus kali ya
15:45Kalau kita belajar
15:47Belah diri gitu, kayak jurus-jurus kan
15:49Ini jurus ini
15:51Kalau mau nangkis itu kayak gini
15:53Tapi kan, begitu
15:55Misalkan kita belum
15:57Paham atau belum mahir
15:59Pas berantem, ya
16:01Lari aja, nggak pakai jurus
16:03Atau pakai jurus yang
16:05Tidak diajarkan sebelumnya gitu kan
16:07Nah itu nggak ada pattern kan
16:09Atau mungkin kalau pengalamannya banyak
16:11Dia tahu cara nangkis yang betul
16:13Yang nggak tahu teorinya itu adalah jurus
16:15Blablabla yang harus dipakai kalau blablabla
16:17Ya balik ke definisi yang
16:19Di layar itu konsep untuk
16:21Mempecahkan suatu masalah
16:23Kalau level yang paling praktikal
16:25Ya mungkin design pattern itu kita harus tahu
16:27Biar kalau kebetulan interview
16:29Terjalan ditanya bisa jawab
16:31Ya ya ya
16:33Kalau ada interview
16:35Bisa jawab ya, untuk lulus
16:37Interview ya
16:39Ya lebih ke
16:41Kayak apa ya
16:43Design pattern itu ya
16:45Kalau misalkan kita tadi ya
16:47Latihan gitu
16:49Mungkin kita akan belajar jurus-jurus itu
16:51Tapi pada saat prakteknya kan belum tentu kan
16:53Semuanya dibutuhkan gitu kan
16:55Nah tujuan kita
16:57Menerapkan ini atau
16:59Melatih atau mempelajari ini adalah
17:01Nanti pada saat kita ketemu
17:03Di project kita udah tahu
17:05Oh ini cocoknya pakai ini gitu
17:07Jadi secara natural keluar
17:09Atau
17:11Kalau ketemu masalah baru
17:13Oh ya itu bisa
17:15Atau kita harus ngadepin masalah baru
17:17Biar
17:19Oh jangan kayak gini
17:21Bagusan lebih cocok pakai pattern itu
17:23Kalau jenis masalahnya
17:25Seperti ini
17:27Nah ini analoginya disini
17:29Resep ya, resep masakan
17:31Resep masakan
17:33Stepnya jelas, tujuannya ada
17:37Oh apanya
17:39Algoritma itu resepnya
17:41Jadi itu
17:43Penterapan, implementasi
17:45Cuma blueprint itu apa sih
17:47Cetak biru yang tadi
17:49Yang di awal Mas Chrisa bilang itu
17:51Kalau mau bikin bangunan blueprint
17:53Blueprint itu mungkin kayak yang gambar-gambar
17:55Gitu kan ya, gambar arsitektur
17:57Gitu kan
17:59Oh kita bisa melihat hasilnya
18:01Seperti apa dan fitur-fiturnya apa
18:03Tapi cara nerapenya
18:05Cara membangunnya
18:07Kayak mungkin naruh batanya gimana
18:09Semain dan lain-lainnya mungkin ya
18:11Itu nggak di jelasin disitu
18:13Terserah yang
18:15Membangun
18:17Jadi pattern itu ada
18:23Tujuan
18:25Dan motivasi
18:27Strukturnya seperti apa
18:29Ini dari ini ya
18:31Artikel ini ya
18:33Mengandung ini
18:35Oke
18:39Istori nggak usah ya
18:43Kenapa saya harus belajar pattern
18:45Itu tadi
18:47Kalau uang cara ditanya
18:49The truth is
18:51That you might manage to work as
18:53Programmer for many years without knowing
18:55About a single pattern
18:57A lot of people do just that
18:59Even in that case
19:01You might be implementing
19:03Signed pattern
19:05Karena itu
19:09Kalau kita ketemu
19:11Pola itu berulang-ulang
19:13Terus kita ekstrak pola itu secara tidak
19:15Langsung akan menjadi sebuah
19:17Pattern kan, based practice
19:19Design pattern dan lain-lain
19:21Bahkan kita bisa menciptakan
19:25Pattern kita sendiri
19:27Siapa tahu gitu kan
19:29Siapa tahu di luar sudah ada
19:31Walaupun kayaknya semua sudah ada
19:33Tapi ada kasus-kasus tertentu
19:35Yang mungkin unik
19:37Yang belum dijelaskan
19:39Di design pattern
19:41Di buku atau di mana
19:43Bisa aja jadi design pattern kita sendiri
19:45Tapi itu dua poin keuntungannya
19:49Jadi yang pertama adalah
19:51Yang gue takut sih memperluaskan
19:53Problem solving
19:55Kita itu
19:57Orientated design
19:59It teaches you how to solve all sorts of problems
20:01Jadi kita punya pandangan yang luas
20:03Di luar sekadar masalah-masalah
20:05Atau kode-kode yang kita temuin
20:07Pas kita lagi kerja kan
20:09Terus yang kedua tuh common language
20:11Nah common language juga penting
20:15Karena
20:17Untuk berkomunikasi dengan
20:19Rakan kerja dengan
20:21Mungkin
20:23Client kita nggak bahas ini ya
20:25Pokoknya dengan rakan kerja
20:27Itu kita butuh kayak gini
20:29Kadang-kadang butuh kayak gini
20:31Karena kita menjelaskan itu maksudnya apa sih
20:33Kalau kita langsung bilang mungkin
20:35Oh kita pakai
20:37Adapter aja
20:39Lebih cepat dimengerti
20:41Daripada harus kita menjelaskan satu persatu
20:43Next, criticism
20:47Criticism
20:49Nggak perlu dibahas ya
20:51Inefficient solution
20:53Inefficient use
20:55Kadang-kadang kita suka pakai
20:57Karena kita suka
20:59Atau kita menguasai suatu pattern ya
21:01Mungkin ada pattern yang we hype up gitu
21:03Jadi semua masalah
21:05Suruh pakai pattern itu
21:07Iya itu juga
21:09Nggak boleh ya, jadi lebih ke
21:11Disesuaikan dengan
21:13Kebutuhan aja
21:15It depends ya, balik lagi it depends ya
21:17Atau itu tadi jadi terlalu kaku
21:19Karena mikir pattern-pattern yang udah ada
21:21Jadi semua masalah harus dimasukin ke
21:23Salah satu pattern itu
21:25Betul, betul
21:27Ya jangan, apapun yang terlalu
21:29Digmatis nyebar
21:31Nah pola dari
21:33Pattern ini
21:35Eh pola apa
21:37Klasifikasi
21:39Kategori, pattern-pattern itu ada
21:41Tiga kalau disini ya
21:43Ada creational, ada structural, dan behavior
21:45Tadi kita sempat lihat juga ada
21:47Arsitektural, ada
21:49Eh apa tadi
21:51Konkaren ya, konkarensi
21:53Ada macem-macem ya
21:55Jadi disini hanya dibahas 3
21:57Creational
21:59Yang berhubungan dengan membuat
22:01Sesuatu
22:03Object creation
22:05Ini udah ngomongin objek ya
22:07OP dong
22:09Terus
22:11Yang structural itu adalah
22:13Object end class
22:15Structural itu mungkin
22:17Overlap sama
22:19Arsitektural kali ya, structural
22:21Termasuk ya, structural
22:23Struktur folder, struktur
22:25Gitu ya
22:27Termasuk data flow
22:29Berarti isi next.js
22:31Ada behavior
22:33Berarti behavioral kali ya
22:35Routingnya
22:39Routingnya next.js itu kayak structural
22:41Pattern juga berarti ya, folder structure
22:43Ya nggak sih
22:45Eh bisa behavioral
22:47Bukan sih, karena
22:49Effective communication and assignment of
22:51Responsibilities
22:53Bisa
22:55Bisa, kita lihat aja salah satu
22:57Ini kan
22:59Structural itu termasuk
23:01Adapter, bridge
23:03Apa lagi ya
23:05Composite, dekorator
23:07Dekorator ini kan
23:09Lumayan sering kita pake juga ya, nggak sering sih
23:11Lumayan sering kita dengar kan
23:13Proxy
23:15Cuma nggak pernah pakai
23:17Proxy
23:19Single tone itu single tone
23:23Single tone, kalau yang
23:25Creational, yang bikin-bikin
23:27Factory method, kalau misalkan
23:29Bikin testing biasanya itu ada
23:31Factory kan, kita bikin otomatis untuk
23:33Data
23:35Dummy dan lain-lain untuk membuat data
23:37Jadi kan
23:39Misalkan apa ya, kita mau testing
23:41Apakah data yang di entry itu beneran
23:43Masuk dan kelihatan di layar atau nggak gitu
23:45Nah kadang-kadang kalau kita mau
23:47Masukin data dalam jumlah besar
23:49Dalam jumlah banyak, kita bikin factory-nya dulu
23:51Jadi nanti dia akan otomatis, misalkan
23:53Saya mau 10
23:55User baru, nah apakah 10 user
23:57Baru ini akan muncul di halaman index
23:59Misalkan, nah itu
24:01Kadang-kadang pakai factory namanya
24:03Terus ada
24:05Prototype, prototype ini JavaScript bukan
24:07Bukan ya
24:09Ya apapun yang OOP
24:11Beda
24:13Ada Singleton
24:15Singleton ini lumayan
24:17Terkenal ya
24:19Karena dia, kalau kita bikin
24:21Object biasanya
24:23Ketika kita inisiasi
24:25Kalau Object itu bisa kita inisiasi banyak
24:27Berkali-kali kan
24:29Kalau ini sepertinya dia hanya
24:31Satu instant aja
24:35Jadi ketika kita bikin instance baru
24:37Dia akan merujuk ke instance yang satu aja
24:39Jadi nggak banyak-banyak
24:41Tetap satu, tujuannya apa
24:43Ada nggak disini
24:45Oh ini problemnya ya
24:49Problem yang mau disolve
24:51Ensure that
24:53A class has just a single instance
24:55Yang kedua, provide global access point
25:01To the instance
25:03Solusinya adalah
25:05Selanjang runtime cuma ada satu instance itu
25:07Biar nggak ketimpa-timpa
25:09Unexpected dari file ini
25:11Ubah suatu
25:13Kaya property-nya
25:15Jangan sampai ada kayak gitu
25:17Singleton
25:21Contohnya lucu gitu dengan Men
25:23Itu di atas
25:27Itu atasnya
25:29Real-world analogy yang bukan contoh
25:31Oh iya iya iya
25:33Gue pernah ngeliat interview
25:35Gara-gara salah jelasin singleton
25:37Ditolak deh
25:41Singleton
25:45Berarti
25:47Yang kita bahas disini
25:49Kebanyakan berhubungan dengan OOP ya
25:51Ini OOP sekali ya
25:53Instance dan lain-lain
25:55Kayaknya OOP itu bukan
25:57Semua itu
25:59Filosofi
26:01Di filosofi atau approach
26:03Kayaknya wikinya smalltalk
26:05Tadi juga apa ya
26:07Ada design patterns itu ya
26:09Karena smalltalk itu salah satu implementer pertama
26:11Prinsip OOP deh
26:13Jadi emang object-oriented
26:15Fokus banget ya
26:17Cara-cara
26:19Pattern-pattern ini
26:21Berarti
26:23Kalau misalkan di fungsional
26:25Ada design pattern
26:27Beda lagi gitu ya
26:29Ya fungsional kan
26:31Bisa
26:33Tapi kalau misalkan kayak ini kan
26:35Instance kan nggak ada di fungsion
26:37Berarti nggak bisa
26:39Dipakai
26:41Maksudnya
26:43Kayak kelihatannya ini lebih oriented
26:45Lebih condong ke OOP karena
26:47Smalltalk pun pionernya
26:49Tapi ya
26:51Kalau di luar OOP tetap bisa pakai
26:53Cuma ya nggak terlalu banyak
26:55Yang lain-lain
26:57Adapter misalkan
26:59Adapter-an dipakai di mana-mana termasuk di fungsional
27:01Atau di paradigma yang lain kan
27:03Kalau kita pikir-pikir
27:05Model view controller nggak mesti OOP kan ya
27:07Enggak-enggak
27:09Funksional juga bisa kan
27:11Funksional yang khusus untuk model
27:13Funksional yang khusus untuk view
27:15Sama funksional khusus controller
27:17Ya apa ya
27:19Phoenix kan yang
27:21Dari Elixir juga funksional programming
27:23Tapi dia MVC
27:25MVC itu tidak
27:27Berpengaruh ke
27:29Pertanyaan yang satu aplikasi
27:31Bisa nggak nyampur-nyampur
27:33Ada single tone-nya
27:35Ada
27:37Ada
27:39Factory method-nya
27:41Ada adapter-nya bisa nggak sih
27:43Bisa aja
27:45Tergantung
27:47Modul yang mana ya
27:49Tergantung situasi
27:51Kalau bagian dan fungsionalitas yang sama
27:55Pakai pattern yang berbeda ya
27:57Posisi sama-sama komponen UI gitu
27:59Pattern-nya
28:01Campur-campur mungkin agak bingung ya
28:03Tapi kalau emang
28:05Bagian-bagian yang dikasih sama Asus
28:07Dikasih sama Asus
28:09Yey
28:11Ada kejadian apa-kejadian apa
28:13Hehehe
28:15Oke
28:17Iya
28:19Sebenernya sah-sah aja nggak ada masalah
28:21Misalkan apalagi ya
28:23Kayak tadi single tone
28:25Terus ada factory method
28:27Provide interface
28:29For creating objects ya
28:31Banyak banget interface-nya ini
28:33Terus misalkan
28:35Ya
28:37Misalkan apalagi ya
28:39Change of responsibility ini
28:41Chaining method bukan?
28:43Bukan ya
28:45Ada hubungan sama chaining method nggak?
28:47Dulu yang pernah
28:49Mas Rizal jelasin kayak actor kelas itu
28:51Design pattern juga nggak sih?
28:53Actor
28:55Actor model
28:57Actor model itu design pattern
28:59Tapi yang berhubungan dengan
29:01Di Wikipedia tadi
29:03Ini
29:05Tadi kan ada
29:07Creational
29:09Structural
29:11Behavior
29:13Ada konkurrensi
29:15Ada konkurrensi
29:17Iya
29:19Tapi disini nggak ada
29:21Bukan yang tadi ya
29:23Bukan
29:25Bukan actor model ya
29:27Bukan
29:29Ini problemnya apa
29:31Problemnya adalah
29:33Change of responsibility
29:35Restrict access to the system
29:37So only authenticated user
29:39Can create orders
29:41Step by step
29:45Step 2 bergantung pada step 1
29:47Step 3 bergantung pada step 2
29:49Itu yang problemnya
29:51Harus disolve
29:53Sebenarnya problem umum kan
29:55Yang mungkin kita sudah pernah solving
29:57Tapi kita nggak pakai ini
29:59Dan ternyata secara tidak
30:01Langsung kita buat ini sebenarnya
30:03Kita pakai itu
30:05Cuma kita nggak tahu itu namanya apa
30:07Betul
30:09Betul
30:11Sebenarnya ya
30:13Middleware aja kayak gini kan
30:15Benar nggak
30:19Dari request ke response
30:21Middleware-nya ada autentikasi
30:23Ada otorisasi
30:25Ada nambahin session
30:27Apa segala macam baru ke response kan
30:29Iya
30:31Iya
30:33Dan kalau middleware kan biasanya
30:35Di balik
30:37Ya abc
30:39Nah pas ke response cba
30:41Iya betul
30:43Real world analogy
30:45I need tech support press one if
30:47Blablabla
30:49Gimana maksudnya
30:53You try to boot all of them
30:59To see whether hardware is supported
31:01Windows detected and enable
31:03Hardware automatically
31:07Sebenarnya pattern ini kayak
31:09Booting operating system
31:11Checking satu-satunya
31:13Di cek satu-satunya
31:15Kita kalau jaman dulu masih ada
31:17Ya yang Linux itu ya
31:19Satu-satunya
31:21Check hardware ini
31:23Satu-satunya
31:25Strukturnya juga ini
31:29Didesign pakai
31:31Class diagram ya
31:33Ada yang belajar nggak
31:35Di class diagram
31:37Ini class diagram
31:39Shadow code nya
31:41Inheritance
31:43Nah ini
31:45Kalau kita pencet F1
31:51Buttonnya jadi gerai scale
31:53Bacanya
31:55Salah ya
31:57For example dialog class
31:59Which render the main windows
32:01Of the app would be the
32:03Of the object tree
32:05The dialog contents panel
32:07Oh kalau misalkan kita bikin
32:09Ini desktop app ya
32:11Terus ada panel setting
32:13Ada panel color, ada button
32:15Pakai interface
32:19Dan class
32:21Bahasanya apa nih? Oh prototype ya
32:23Shadow code
32:31Itu adalah
32:33Tadi jantannya apa?
32:35Ada satu lagi
32:37Yang menarik
32:39Yang state machine
32:41Ada kayak disini
32:43Nah ini state
32:45Ya state machine
32:47Nah ini juga sering ya
32:49Apalagi yang pakai
32:53Yang semenjak
32:57Abis redux kan banyak yang pakai
32:59State machine ya
33:01Status status
33:07Jadi kayak jalan pakai
33:09Conditional state
33:11Per request
33:13Finish state machine
33:15Nah ini dia
33:17Itu kayaknya kalau kita nge-tweet itu dulu
33:21David K. Piano itu bakal
33:23Yang bikin apa sih?
33:25X state
33:29Ya
33:31Pernah bahas
33:33The main idea is that
33:35At any given moment there is a finite
33:37Number of state which a program can be
33:39Can be in
33:41Within any unique state the program behave differently
33:43And the program
33:45Can be switched from one state to another
33:47Instantaneously misalkan kita bikin
33:49Game, game itu kan ada berapa
33:51State ada awalnya loading page
33:53Loading state
33:55Kemudian start
33:57Game loop kan
33:59Terus sampai game over
34:01Itu kan state-state nya ya
34:03Jadi apa program kita
34:05Di definisikan berdasarkan state disitu
34:07Dari gambar ini
34:09A bisa ke B, tapi A itu gak bisa
34:11Ke E, jadi kalau mau ke E
34:13Harus lewat B, harus ke B dulu
34:15Ya state nya
34:17Ada istilahnya apa
34:19Impossible state ya
34:21Ada state yang tidak bisa langsung
34:23Menuju kesana gitu
34:25Jadi ini ngaruh banget kalau
34:27Itu kan kasusnya UI nya
34:29Masing-masing juga beda kan
34:31Ini mungkin kalau contoh
34:33Nah itu tuh ada contoh yang bagus tuh
34:35Dokumen klas, dokumen bisa draft, moderation, publish
34:37Nah ya, kebayang kan
34:39Nah itu kan mungkin field-field yang aktif
34:41Atau button nya yang mana yang didisable
34:43Itu kan juga pasti bergantung sama state kan
34:45Saya yakin temen-temen sering
34:49Mengerjakan ini
34:51Kalau misalkan di database itu ada status
34:53Tapi gak tau kan
34:55Ini ternyata state kan
34:57Atau gak ngeh gitu, bukan gak tau sih
34:59Mungkin akhir-akhir ini aja taunya
35:01Perasaan dari dulu juga
35:03Kalau kita bikin block engine kah
35:05CMS kah apa
35:07Pasti ada begini, ada status
35:09Semua pasti ada status kan
35:11Contohnya user-user
35:13User tuh baru publish
35:15Masih untuk email nya belum aktif
35:17Dia harus klik email nya
35:19Validasi verifikasi
35:21Terus aktif, terus inaktif
35:23Lagi login
35:25Lagi login terakhirnya kapan
35:27Iya kan
35:29Kalau UI ya
35:31Mungkin form misalnya register user
35:33Apakah field nya udah valid semua
35:35Atau udah nyentang
35:37Apa itu saya bersedia blablabla
35:39Sudah membaca
35:41Terms and conditions yang mana sebenernya gak
35:43Bisa dibaca juga
35:45Itu kan juga state kan
35:47Kalau udah memenuhi syarat semua
35:49Di tombol submit nya
35:51Baru bisa di pencet
35:53Kalau udah di pencet piring data
35:55Ternyata dibalikin result nya error
35:57Ada field yang harus dibikulin
35:59Mungkin lain lagi
36:01UI
36:03Itu state
36:05State itu adalah behavior ya
36:07Behavior
36:09Comment
36:11Tadi ada observer juga
36:15Observer juga
36:17Sering kita pakai
36:19Oh comment ini
36:21Kayak CQRS bukan sih
36:23Ada yang tau CQRS gak
36:25Cater juga ternyata
36:27Comment query
36:31Responsible segregation
36:33Baru pertama kali
36:35Dengar
36:37Oh baru pertama ya
36:39Jadi ini
36:41Sistem arsitektur
36:43Sebentar, contohnya apa ya
36:45Jadi
36:47Ketika ada
36:49Perintah itu
36:51Dia cuma kirim comment aja
36:53Gak langsung dikerjain
36:55Jadi comment itu bisa
36:57Disimpan dan bisa
36:59Di reply
37:01Bisa di reply kayak ada itu
37:03Jadi kita bisa tau tahapan-tahapan
37:05Si user melakukan apa itu
37:07Dari CQRS ini
37:09Bener gak sih
37:13Gak ada contohnya ya
37:15Ini mirip sekali sama ini
37:19Nah ini
37:27Kurang lebih kayak gini sih
37:29Jadi ada save comment
37:35Kemudian nanti
37:37Si save comment ini akan melakukan apa
37:39Apa lagi yang menarik
37:41Itu tadi
37:43Observer
37:45Kita sering pakai
37:47Semua yang bahasannya
37:49Di belakangnya ada Observer
37:51Interaction Observer
37:53Mutation Observer
37:55Ini pasti ini ya
37:57Ah iyalah
37:59Patternya ini, jadi apa
38:01State apa yang terjadi
38:03Dia ngeobserve
38:05Sebuah
38:07Object, elemen
38:09Dan mengobserve itu
38:11Dan jika ada event terjadi
38:13Akhirnya akan ketrigger
38:15Terjadi ketrigger
38:17Dispatch event
38:19Kayak PubSap juga gak sih
38:23Publisher subscriber
38:25Sama ya
38:27Mereka pasti tau ya
38:31Iya, PubSap pasti tau
38:33Tapi gak tau kan kalau ternyata masuk ke
38:35Sini Observer kan
38:37Itu sih selalu
38:39Itu kan bahasa di atas event subscriber kan
38:41Iya bener
38:43Kita subscribe ke satu event
38:45Sama aja kayak subscribe ke YouTube
38:47Ketika ada video baru kita dapat notifikasi
38:49Kurang lebih kayak gitu kan
38:51Kalau kayak
38:53Bahas
38:55Ria ini juga sih gak sih
38:57Kayak ada behaviornya kayak gini juga
38:59Kayak event listener gitu
39:01Atau beda ya, kalau Ria itu
39:03Systemnya, cycle nya
39:05Ngereload ya
39:07Kalau state berubah dia ngereload kan
39:09Di belakang layar
39:11Di virtual domnya ya
39:13Berarti kan dia
39:15Ngeobserve state
39:17Bener gak sih
39:19Betul
39:21Tapi dia punya
39:23Coop itu ada
39:25Dependensi
39:27Ada kayak element yang terakhir itu
39:29Kalau lupa masukin
39:31Bisa ngetrigger
39:33Terus
39:35Karena jadi apa yang di watch
39:37Jadi kayak variable apa yang berubah
39:39Nah kalau itu berubah
39:41Dia bikin keopulasi lagi
39:43Keseluruhan virtual dom
39:45Nah apakah itu masuk
39:47Observer, gak tau
39:49Kita gak tau, oke
39:51Nah sekarang kita coba
39:53Masuk ke patterns.tiff ya
39:55Ini juga salah satu web
39:57Yang jadi referensi
39:59Dan
40:01Bagus banget, gitu ya
40:03Tapi yang bikin ini lebih deket
40:05Cenderung ke JavaScript ya, karena
40:07Memang dia orang web banget ya
40:09Pattern focus on plane
40:11JavaScript and Node.js
40:13Kalau ini, kayaknya bahasanya
40:15Lebih ke Java
40:17Atau Google ya
40:19Iya, put example coba kita lihat
40:21Yang ini
40:29Banyak, iya bisa
40:31Gak ada masalah
40:33Wuh, kayak gini kan
40:35Udah bisa diterapkan di TypeScript ya
40:37Tapi specific TypeScript dia ya
40:39Gak ada JavaScript ya
40:41Hanya TypeScript ya
40:43Tuh
40:45Gak, ada interface kan
40:51Kalau JavaScriptnya gak ada interface
40:53Salah satunya
40:55Iya
40:57Nah, ada bukunya nih
40:59Kalau temen-temen mau baca gitu ya
41:01Ada bukunya
41:03Bukunnya gratis ya
41:05Bukunnya gratis ya
41:07Nah, ini
41:09Mas Adi Osmani
41:11Yang jatuhnya web
41:13Di Chrome ya
41:15Kita bisa dikenalin gak sama mas Robert
41:17Adi Osmani
41:19Coba tanya aja ntar
41:21Ngomongin soal like house
41:23Page speed inside
41:25Boleh, boleh
41:27More like Corvoid Vital kali ya
41:29Ya, oh disini ada
41:31Introduction juga ya, kalau kita lihat disini
41:33Introductionnya apa
41:35Nggak ada ya
41:45Tuh, hampir-hampir sama ya
41:49Ada comment pattern, ada factory pattern
41:51Kita lihat comment tadi bener gak
41:53The couple object
41:55That execute certain task from
41:57The object that calls the method
41:59Execute certain task from the object
42:01We have
42:03Online food delivery platform
42:05User can place track and cancel orders
42:07Oke, ini ada
42:09Order manager, ada place order
42:11Ada track order sama cancel
42:13Order
42:15On the order manager class
42:17We have access place order, ya yang tadi kan
42:19It will be
42:21Totally valid JavaScript to just
42:23Use this method directly
42:25Bisa langsung
42:27Ini instance dulu
42:29Instancenya langsung
42:31However, the downside to invoke this method
42:33Directly on the manager instance
42:35It could happen
42:37That we decide to rename certain
42:39Method later on
42:41Or the functionality on the method changes
42:43Say
42:45That instead of calling place order
42:47We no rename at
42:49Order
42:51This would mean that we would
42:53Have to make sure
42:55That we don't call place order
42:57Method
42:59Anywhere in our code base which
43:01Could be very tricky in last
43:03Application, instead we want
43:05To decouple the methods from
43:07Manager object
43:09Semifunctional, maksudnya kayak
43:11Methodnya itu gak ditempelin ke
43:15Gak di-associate very quickly
43:17Gak jadi method
43:19Ya, jadi
43:21Fungsi yang terpisah gitu ya
43:23Contohnya ini
43:25Jadi kita bikinin satu
43:27Method
43:29Buat nyalainin function kan
43:31Buat nyalainin function external
43:33Jadi kayak bikin semacam reusable modular
43:35Function di luar itu kali ya
43:37Baru kemudian kita bikin
43:39Class atau
43:41Bikin fungsi-fungsi yang berguna
43:43Sebenernya gak harus functional ya
43:45Berarti bikin class lain
43:47Tapi untuk placing
43:49Class berupa komando, command
43:51Untuk placing order
43:53Ini fungsi aja disini
43:55Oh ya, ini ada class command ya
43:57Class command terus execute
43:59New command
44:01Jadi initiate
44:03Comment
44:05Buat dimasukin ke
44:07Order manager tadi
44:09Jadi order manager ini
44:11Hanya punya satu method yaitu
44:13Execute apa yang mau dia execute
44:15Comment-comment nya ada disini
44:17Jadi in case misalkan tadi
44:19Ada perubahan
44:21Nama
44:23Dan lain-lain itu jadi lebih mudah
44:25Itu ya
44:27Si class order manager nya sendiri
44:29Gak ngurus, gak concern sama
44:31Placing order nya
44:33Kalau di contoh itu dia cuma nampung
44:35Orderannya apa aja
44:37Abstraction
44:39Abstraction ya
44:41Ini singleton yang tadi
44:43Jadi ketika
44:45Class udah ada instance nya
44:47Dia hanya tinggal get instance aja
44:49Hanya punya satu
44:51Karena mungkin kebutuhannya ya
44:55Counter nya cuma satu
44:57Di satu halaman itu cuma satu, gak bisa banyak
44:59Salah satunya
45:01Nah, seperti itu
45:03Misalkan tadi apa lagi, ada proxy
45:05Prototype, prototype ini apa?
45:09To share properties among many objects
45:11Of the same type
45:13Constructors contain name property
45:19And class itself contains a bar property
45:21When using ES6
45:25Kemudian
45:35Observer
45:37Ada module
45:39Module patternnya modular ya
45:41Kan ini udah sangat umum ya
45:43Kalau bikin
45:45Nulis kode ya, kalau bisa yang modular
45:47Salah satunya dipesah
45:49Menjadi module-module kecil
45:51Tinggal import, iya kan?
45:53Ini gak ada importnya
45:55Ini export ya
46:05Nanti bisa di import
46:07Ini modular kan
46:09Sehari-hari kita
46:11Udah melakukan itu, cuman ya kita gak tahu itu
46:13Ya itu adalah pola sendiri
46:15Walaupun kita gak tahu nyamanya ya
46:17Mixin, mixin juga sering kan
46:19Middleware yang tadi
46:21Mixin ini buat
46:23CSS
46:25Ini salah satunya
46:27CSS buat SAS
46:29Tapi disini bukan
46:31Ya kan bisa diterapin buat apa aja
46:33Yang lain
46:35Object that we can use in order
46:39To add reusability functionality
46:41To another object or class without using inheritance
46:43Jadi gak harus nge-extend
46:47Class lain untuk nge-inherit
46:49Tapi untuk langsung
46:51Kayak langsung nge-inject functionality-nya ya
46:53Ya, jadi misalkan disini
46:55Kita punya ini
46:57Class dog dengan name
46:59Terus basic dog
47:01That we create doesn't have any property
47:03But a name property
47:05Dog should able do more than just a name
47:07It should be able to bar
47:09Jadi kita bikin sebuah fungsi
47:11Yang namanya dog functionality
47:15Kemudian
47:17Ini
47:19Dimixin, mixing itu apa ya
47:21Kayak dicampur gitu ya, dicampur
47:23Sekelompok
47:25Functionality di-inject
47:27Kayak dimasukin ke dalam suatu
47:29Ya, ini
47:31Ini caranya dengan gini
47:33Jadi dog functionality ini
47:35Dimasukin ke dalam
47:37Class dog
47:39Kalau misalkan nanti ada class cat
47:41Cat bisa bark ga?
47:43Ya gak bisa
47:45Kucing bisa menggonggong
47:47Berarti ini kurang generik ya
47:53Mungkin apa ya
47:55Nama itu aja dog functionality
47:57Ya, berarti
47:59Buat siapapun yang membutuhkan dog functionality
48:01Dulu kan ada mixing dog shadow
48:07Ini kan kayak
48:09Masih ribet ya
48:11Dog shadow itu kayak masih banyak yang
48:13Specifik property, pokoknya ya
48:15Sekelompok fungsionalitas itu
48:17Di-inject, siapapun yang
48:19Membutuhkan apa maksudnya
48:21Selektor apapun
48:23Yang butuh
48:25Tetap setiap shadow
48:27Ya, jadi ketika kita
48:29Udah bikin seperti ini
48:31Secara otomatis
48:33Setiap instance dari dog
48:35Itu dia punya name
48:37Punya fungsi bark dan play
48:39Dan walk tail
48:41Kira-kira kayak gitu
48:43Nah, ini lebih di
48:45Generalisasi
48:47Jadi animal functionality
48:49Bukan hanya dog, bisa walk dan
48:51Bisa sleep
48:53Ini bisa kita masukkan
48:55Ke fungsinality
48:57Si dog ini
48:59Jadi yang tadi ada bark, walk tail dan play
49:01Ditambahkan walk dan sleep
49:03Wait, kok bisa pakai
49:07Super.walk ini dari
49:09Gimana ceritanya
49:11Dari si
49:13Bapaknya
49:15Kan ini nanti bakal di-assign ke
49:17Dari sini ya
49:19Di-assign ke
49:21Prototype
49:23Ke kelas
49:25Yang mana itu ya
49:27Design dulu, abis itu
49:31Design lagi ke dog prototype
49:33Ya, ya, ya
49:35Itu kayak setara
49:37Inferil
49:39Tapi nggak mikir
49:41In terms of class, tapi in terms of
49:43Functionality-nya
49:45Yes
49:47Ada
49:49Apa lagi yang menarik
49:51Discourage
49:57Discourage the use of machine
49:59Gunakan higher
50:03Order component instead
50:05Ya, karena memang react itu kan dia sangat
50:07Lumayan
50:09Akibatnya ke fungsinality kan ya
50:11Jadi dia lebih memilih
50:13Menggunakan function
50:15Yang apa, pattern-pattern
50:17Functional dibandingkan pattern-pattern
50:19Object
50:21Orientate
50:23Oke
50:27Machine udah, middleware tadi
50:29Kurang lebih udah ya
50:31Lagi factory juga udah, animating
50:33View transition
50:35Ini beda ya
50:37Ini apa nih
50:39Udah beda-beda ya
50:41Static input, dynamic input
50:43Lebih ke front-end ya
50:47Ya, lebih ke front-end
50:49Goal, nggak ya
50:51Ini design-pattern plus campur-campur
50:53Yang
50:55Wah, kagum
50:57Oh nggak, nggak goal
50:59Tapi masih menang kan
51:01Oke, sekarang kita balik lagi
51:03Kesini ya
51:05Pertanyaan ya
51:07Kita jawab pertanyaan aja ya
51:09Secara ideal, design-pattern ini
51:11Tentukan berdasaran apa
51:13Berdasarkan what
51:15Behavioral, structural
51:17Tadi kan
51:19Bukan, tadi, ada jawabannya tadi
51:21Di itu, di structure
51:23Guru
51:25Di mana, disini, yang disini?
51:27Di paling awal
51:29Di design-pattern
51:31Maksudnya
51:33Di alamat pertama
51:35Turun ke bawah sedikit
51:37Berdasarkan
51:39Intent dan motivation-nya
51:41Tujuannya apa
51:43Dan
51:45Problem apa yang
51:47Di-solve
51:49Dan pakailah pattern yang
51:51Sesuai
51:53Jadi
51:55Berdasarkan
51:57Misalkan nih, contohnya
51:59Mau bikin sistem payment gateway
52:01Apakah cocok kalau kita pakai design-pattern berbasis service?
52:03Pertama
52:07Payment gateway yang mau dibikin, ada banyak nggak?
52:09Iya, misalkan kita mau
52:11Ada banyak, kalau satu aja
52:13Atau ada banyak
52:15Iya, kalau misalkan kita mau
52:17Connect payment gateway-nya ke mid-trans
52:19Terus ke mana tuh
52:21Ke mana lagi ya
52:23Ke
52:25Bitcoin
52:27Bitcoin, ya Bitcoin, atau
52:29Apa itu?
52:31Nah, pokoknya payment gateway lain gitu ya
52:33Ada banyak gitu pilihannya
52:35Nah, itu kita bisa pakai adapter
52:37Jadi bisa ganti-ganti
52:39Kalau misalkan cuma satu
52:41Singleton aja singleton ya
52:43Cuma satu ya, udah
52:45Satu aja
52:47Jadi
52:49Dan pattern ini
52:51Nggak harus diterapkan
52:53Ketika awal project
52:55Bisa aja di tengah-tengah
52:57Atau lebih seringnya malah begitu kan
52:59Awal-awal mungkin karena terlalu simpel ya udah
53:01Nggak usah mikirin
53:03Terlalu mikirin
53:05Tentang design pattern dan lain-lain
53:07Dan kayaknya di bagian-bagian
53:09Desap-desap bagiannya bisa pakai
53:11Macam-macam design pattern kan, kayak misalnya tadi
53:13Apa tuh, chain of responsibility
53:15Pasti at some point, pasti ada kan
53:17Yang handler satu per satu
53:19Proses kayak apa payment gateway
53:21Ngecek credential user lah
53:23Dan lain-lain, pasti kan aja
53:25Kecuali
53:27Kalau mau bangun dari awal
53:29Sudah tau project-nya gede nih
53:31Kayak
53:33Project besar dah, yang apa sih project yang gede itu
53:35Kayak Cortex misalnya
53:37Mungkin sudah bikin asistektur
53:39Diagramnya dan
53:41Setiap modul-modulnya itu sudah
53:43Sudah ada gambaran mau ngapain
53:45Dan apa yang akan terjadi
53:47Dan setiap modul mungkin ada design patternnya sendiri
53:49Dan bagaimana mengkonektikan antar modul
53:51Punya patternnya sendiri
53:53Dan itu yang ngedeside ya
53:55Biasanya, sistem arkitek ya
53:57Sistem arkitek ya
53:59Betul
54:01Jadi
54:03Kembali lagi ya, tergantung kepada
54:05Scope
54:07Dari project-nya
54:09Team-nya
54:11Yang kayak misalkan micro service monolitik itu
54:13Itu pekan juga enggak?
54:15Arkitektur itu ya
54:17Arkitektur ya
54:19Seandainya kalau cuma mau bangun
54:21Company profile yang cuma 5 halaman
54:23Ya udah, static site generator
54:25Aja udah
54:275 halaman tidak berubah sama XML aja
54:33Tidak usah SSG juga
54:35HTML aja udah, HTML SSG
54:37Doang cukup gitu kan
54:39Oke
54:41Mudah-mudahan jawab ya
54:43Waktu memilih
54:45Ini juga bingung ya, ini design pattern
54:47Kita jarang sekali, tapi ya nggak apa-apa
54:49Kebanyakan company besar itu
54:51Pake design pattern seperti apa?
54:53Maksudnya design pattern apa?
54:55Biasanya nggak tahu
54:59Tapi pasti lebih dari satu nggak sih
55:01Kalau dilihat dari itu ya
55:03Contoh-contoh tadi
55:05Masa sih seluruh codenya Google atau Meta
55:07Cuma pakai factory
55:09Cuma pakai adapter
55:11Pasti kombinasi macem-macem
55:13Pertama, saya jawab dulu
55:15Perusahaan besar itu nggak pakai
55:17Satu aplikasi doang
55:19Mereka punya ratusan aplikasi
55:21Yang mereka gunakan
55:23Ada aplikasi HR, aplikasi
55:25Marketing
55:27Ada marketing CRM
55:29Terus kemudian ada
55:31Macem-macem ya kan
55:33Jadi tergantung setiap
55:35Aplikasi atau setiap solver
55:37Yang mereka gunakan punya partner sendiri
55:39Ya contohnya operating system
55:41Jangan kan
55:43Setiap
55:45Aplikasi punya sendiri
55:47Satu halaman ini aja
55:49Bisa aja mereka
55:51Menggunakan bahkan framework
55:53Yang berbeda
55:55Dalam satu aplikasi
55:57Terus ada banyak juga
55:59Bagian-bagiannya
56:01Bisa aja lebih dari satu design pattern
56:03Lagi-lagi berdasarkan deskripsi tadi
56:05Bisa aja ada factory
56:07Untuk UI komponennya
56:09Tapi ada chain of
56:11Apa tadi yang buat
56:13Chain of responsibility
56:15Yang buat
56:17Bisa nge-check user
56:19Kalau udah, maksudnya dia
56:21Admin atau bukan
56:23Di repo ini bisa ngapusin
56:25Komentar atau engga
56:27Ya kan pokoknya pasti ada
56:29Turut-turutannya kan
56:31Ya betul-betul
56:33Dan bisa
56:35Apa ya, bisa
56:37Dicampur-campur juga
56:39Bisa macam-macam ya, bisa dicampur-campur, bisa digabungin
56:41Bahkan di satu modul pun bisa
56:45Menggunakan lebih dari satu
56:47Pattern kan, tergantung
56:49Apa yang mau dicapai tadi
56:51Yang intinya adalah intent tadi ya
56:53Observe untuk ada notifikasi baru
56:55Atau engga misalnya, ya kalau
56:57Di satu aplikasi yang sebesar ini
56:59Pasti banyak kan pattern yang dipakai
57:01Betul, betul
57:03Jadi, kita gak bisa
57:05Apa ya, gak bisa menjenderalisir
57:07Oh kalau perusahaan gede itu pakenya yang ini
57:09Perusahaan yang menengah
57:11Kebawa pakenya ini, gak bisa
57:13Jadi, memang
57:15Tergantung kebutuhan, tergantung
57:17Jenis aplikasinya, tergantung fiturnya
57:19Banyak ya, it depends-nya
57:21Banyak
57:23Jadi, kita gak bisa
57:25Tau ya, kecuali kita tanya
57:27Tapi mungkin kalau ngomongin
57:31Architectural atau structural
57:33Kayak MVC gitu ya, mungkin lebih
57:35Dimasukakan dalam satu aplikasi
57:37Satu approach
57:39Tapi kalau yang contoh-contoh pattern tadi
57:41Bisa dicampur kan
57:43Betul
57:45Kalau web
57:47Salah satu yang paling
57:49Banyak dipakai MVC kan
57:51Kalau web ya
57:53Mungkin kalau aplikasinya
57:55Kayak Android atau IOS
57:57Itu mereka kadang-kadang punya
57:59Pattern masing-masing
58:01Ada MVVM
58:03Ada viper lah, ada macem-macem
58:05Jadi, mungkin itu
58:07Bisa ditanyakan
58:09Pada saat interview
58:11Atau pada saat kuliah
58:13Oh iya, betul
58:15Compose
58:17Itu pattern ya?
58:19Kayaknya sih pattern
58:21Biasanya
58:23Gak tau, saya pernah lihat juga
58:25Kalau misalkan loongan, misalkan familiar with IOS
58:27Or Android, terus ada MVVM
58:29Ada apa gitu
58:31Familiar with MVVM pattern
58:33Nah itu bisa dilihat di
58:35Loongan pekerjaan
58:37Kalau yang sifatnya itu structural ya
58:39Structural ya
58:41Maybe
58:43Maybe
58:45Itu interactnya tuh tips
58:47Tips
58:49Yang mau memahami design pattern
58:51Seperti apa
58:53Diluar komunikasi ke senior dan baca
58:55Dokumentasi projek
58:57Sering-sering nge-freelance
59:01Sering-sering pindah company
59:03Jadi pindah aplikasi yang dipacar
59:05Sering-sering nge-code-in open source
59:09Itu jadi jago prakteknya
59:11Tapi kan
59:13Tidak tentu tahu itu nama design
59:15Patternnya apa ya
59:17Bisa juga, sudah praktek
59:19Terus kembali lagi ke teorinya
59:21Ada open source
59:25Setiap kali coding, nanya maintainernya
59:27Ini betul patternnya ga sih?
59:29Annoying sih
59:31Tapi kita jadi tau
59:33Kalau latihannya gimana ya?
59:35Maksudnya
59:37Apakah kita, disini kan memang jelas ya
59:39Ada contoh code nya kan ya
59:41Terus
59:43Supaya bisa kita melatih itu
59:45Gimana ya?
59:47Baca ya
59:49Kita coding biasa, pas kita lagi bikin sesuatu
59:51Kita coba matchingin
59:53Kita nebak dulu, ini singleton bukan sih
59:55Kita tanya atau
59:57Team lead atau maintainer
59:59Kalau open source atau apalah
1:00:01Ga tau, ini gue juga belum pernah
1:00:03Ini teori doang
1:00:05Karena kalau mulai dari singleton
1:00:07Kita suruh coding singleton doang
1:00:09Gak bisa ya
1:00:11Kita disediakan dulu, baru kita mikir
1:00:13Oh mungkin ini singleton nih
1:00:15Tapi kan kita butuh di confirm ya
1:00:17Ya mungkin tanya ke AI kali ya
1:00:19Apakah betul ini contoh
1:00:21Codo dari desain pattern singleton
1:00:23Iya
1:00:25Benar juga
1:00:27Kalau kita misalkan kita
1:00:29Kita ambil salah satu dari sini
1:00:31Terus kita bikin sesuatu
1:00:33Kayaknya kebalik ya
1:00:35Jadi apa solusi yang mencari masalah
1:00:37Yang mencari solusi
1:00:39Iya betul
1:00:41Agak
1:00:43Agak triki dua ya
1:00:45Cari-cari masalah dia
1:00:49Masalahnya ga ada
1:00:51Kan masalahnya ga ada, kita mau belajar aja gitu
1:00:53Iya kan
1:00:55Ya harus sering mungkin ini ya
1:00:59Ada ini juga itu
1:01:01Ada perumpamannya, kayak baju
1:01:03Sebenarnya
1:01:05Bukan baju yang
1:01:07Sorry
1:01:09Bukan kita yang menyesuaikan ke ukuran baju
1:01:11Tetapi baju lah yang menyesuaikan ke ukuran kita
1:01:13Lebih sering
1:01:21Mungkin salah satu tipsnya adalah
1:01:23Sering-sering baca kode ya
1:01:25Kita bisa
1:01:31Belajar teorinya dulu
1:01:33Tujuannya apa
1:01:35Ini menolong masalah apa
1:01:37Jadi ketika kita loading beneran
1:01:39Bukan cuman latihan
1:01:41Ternyata ini cocok buat
1:01:43Dipakai singleton nih
1:01:45Kita tau, ya pasti kayak gitu sih
1:01:47Sering-sering baca kode sama sering-sering nulis kode
1:01:51Itulah standar ya
1:01:53Tips dia
1:01:55Kalau non-conventionalnya
1:01:57Dokumentasi dari refactoring guru itu
1:01:59Misalnya masukin ke LLM
1:02:01Misalnya jembenai atau apalah
1:02:03Terus setiap kita coding
1:02:05Kita jelasin aja
1:02:07Masalahnya ini saya menyelesaikan dengan
1:02:09Patter singleton
1:02:11Contoh kode ini
1:02:13Betul atau enggak
1:02:15Biar kita serahkan
1:02:17Perkembangan skill kita pada LLM
1:02:19Dia ngejawab
1:02:21Oh bukan, atau kita nanya apakah
1:02:23Ada pattern lain yang sebaiknya kita pakai
1:02:25Gak tau, ini yang
1:02:27Experimental, solusinya
1:02:29Pasti gitu
1:02:31Benar-benar
1:02:35Tanyaan dari penonton tuh
1:02:41Gimana caranya biar CQRS
1:02:45Sama Event Sourcing bisa jalan badangan tanpa sistem
1:02:47Jadi ribet
1:02:49Kita CQRS aja nggak tau
1:02:51Masih nebak-nebak
1:02:53Itu yang tadi nasi desa bilang kan
1:02:55Yang di awal baru
1:02:57Tapi jadi nggak tau
1:02:59Iya, cuman ya
1:03:01Prakteknya gimana nggak tau
1:03:03Kenapa harus
1:03:05Pakai dua-duanya
1:03:07Nggak bisa salah satu
1:03:09Karena ketika sebuah sistem
1:03:11Menjalankan satu
1:03:13Atau lebih dari satu
1:03:15Apa ya, arsitektur
1:03:17Atau pattern
1:03:19Pasti akan jadi kompleks
1:03:21Ujung-ujungnya ribet
1:03:25Event Sourcing ya
1:03:27Event Sourcing itu apa
1:03:29Design Pattern juga nih katanya
1:03:33Menurut Gemini
1:03:37Design Pattern
1:03:39Where changes to an application state
1:03:41Are stored as a sequence of immutable events
1:03:45Nah, tadi yang saya jelaskan itu
1:03:47Maksudnya
1:03:49Yang mana?
1:03:51Yang tadi kayak CQRS
1:03:53Jadi CQRS itu
1:03:55Yang sepengetauan saya
1:03:57Ternyata salah ya
1:03:59Itu dia
1:04:01Perubahan state
1:04:03Itu disimpan
1:04:05Ke event-event
1:04:07Jadi dia nyimpan event aja
1:04:09Misalkan insert data, update data
1:04:11Delete data, gitu
1:04:13Dia nyimpenya
1:04:15Dalam bentuk event
1:04:17Comment ya, state
1:04:19Terus nanti baru dijalankan
1:04:21Ceritanya
1:04:23Berarti kayak
1:04:25Queuing dong ya
1:04:27Kurang lebih
1:04:29Kayak
1:04:31Queuing, jadi sudah di queue
1:04:33Nanti baru dijalankan satu-satu
1:04:35Ke service yang perlu menjalankan
1:04:37Yang bisa menjalankan comment itu
1:04:39Betul
1:04:41Message queue, message queue ceritanya
1:04:43Yes, kurang lebih
1:04:45Ini ada
1:04:49Dari Stack Overflow
1:04:51Yang sudah jarang dibuka
1:04:53Semenjak ada
1:04:55Ada chatbot
1:04:57CQRS
1:04:59Creation of two object
1:05:01Where there was previously only one
1:05:03Bukan? Salah kan?
1:05:07Apa ini? Kok nggak ngerti?
1:05:13Nggak ngerti
1:05:17Typically this means that each of
1:05:19The object will use different representation
1:05:21Of data
1:05:23Tergantung purpose-nya
1:05:25Commonly used here, write model
1:05:27Read model, jadi kalau misalkan
1:05:29Ada, kalau misalkan kita pakai MVC kan
1:05:31Model VA Controller
1:05:33Itu mau delete, mau update, mau itu kan
1:05:35Satu model itu, kalau ini dia write
1:05:37Berbeda, read-nya berbeda, jadi dipisah
1:05:39Kayaknya ya
1:05:41The key benefit here
1:05:43Is that you can tune the data
1:05:45Structure for your read
1:05:47Use case and your write
1:05:49Use case independently
1:05:51Jadi kan ada beberapa database yang
1:05:53Cepet untuk read
1:05:55Tapi lambat untuk write, begitu juga sebaliknya
1:05:57Mungkin ini yang bisa jadi solusi, mungkin ya
1:05:59Kalau event sourcing
1:06:01Yang tadi
1:06:03Yang tadi sudah disempat saya ilaskan barusan
1:06:05Dia
1:06:07Apa nih?
1:06:09Kok nggak ada?
1:06:15The system by replaying
1:06:17That series of events, jadi kayak queuing
1:06:19Jadi si comment-nya itu
1:06:21Bisa di queuing
1:06:23Oh berarti emang
1:06:31Pasangan ya?
1:06:43Nah ini pertanyaannya adalah
1:06:45Ribetnya dimana?
1:06:49Kita nggak tahu soalnya
1:06:51Apa yang bikin ribet gitu
1:06:53Karena kita nggak pernah pakai
1:06:55Sample-nya mungkin saya pernah pakai
1:06:57Ya kan bener ya, kalau kayak
1:06:59Itu tadi ada contohnya
1:07:01Nah bener kan
1:07:07Kalau kita
1:07:09Untuk read queries itu pakai yang cepat
1:07:11Seperti redis
1:07:13Kalau yang write-nya cepat itu pakai
1:07:15MySQL atau MongoDB
1:07:17Misalkan
1:07:19Itu CQRS
1:07:21Event sourcing itu yang Pub/Sub seperti MQ
1:07:23Ya event sourcing ya
1:07:25Kalau digabung
1:07:29Ketika ada
1:07:37Event untuk menyimpan data
1:07:39Dia akan simpan di
1:07:41MySQL
1:07:43Kalau ada kebutuhan
1:07:45Untuk read, dia akan
1:07:47Mengarah ke read model gitu ya
1:07:49Berarti event sourcing
1:07:51Ini lebih ke source-nya ya
1:07:53Database-nya yang mana ya
1:07:55CQRS ini lebih ke
1:07:57Memilah
1:07:59Ini model untuk read
1:08:01Ini model untuk write gitu ya
1:08:09Kalau event sourcing
1:08:11Lebih ke Pub/Sub
1:08:13Nah tapi kan ini contoh doang ya
1:08:15Contoh doang
1:08:17Contoh doang, iya
1:08:19Sepertinya kita tidak bisa menjawab
1:08:25Secara utuh ya
1:08:27Harus itu dulu
1:08:29Harus konsultasi dulu
1:08:31Harus interview dulu
1:08:33Ini CQRS-nya dipakai
1:08:35Buat apa, event sourcingnya
1:08:37Di level system kan
1:08:39Iya, kita nggak bisa
1:08:41Pertanyaan sangat
1:08:43Spesifik dan kita nggak tahu konteksnya
1:08:45Kita juga nggak ngerti CQRS sama event sourcing
1:08:47Baru teori doang
1:08:49Ini juga belum ngerti sepenuhnya
1:08:51Jadi belum bisa menjawab ya
1:08:53Oke, ada pertanyaan menarik lagi
1:08:57Iya
1:08:59Kalau di front-end tadi kita
1:09:01Udah bahas ya di patterns.dev
1:09:03Teman-teman bisa langsung ke patterns.dev aja
1:09:05Ini ada
1:09:07Pola-pola yang berhubungan dengan
1:09:09Back-end
1:09:11Ya, back-end yang ini kurang lebih ya
1:09:13Karena dia kan bahasnya JavaScript
1:09:15Dan Node.js ya
1:09:17Yang front-end juga ada
1:09:19Misalkan ketris checking
1:09:21Road-based splitting
1:09:23Bundle splitting
1:09:25Preface preload
1:09:27Kayaknya ada lagi deh
1:09:29Ada ya
1:09:31Udah segitu aja ya, oke
1:09:33Itu yang lengkap banget ada di bukunya
1:09:35Oh iya, bukunya ya
1:09:37MVC
1:09:41Di front-end juga ada yang MVC
1:09:43Ada dulu namanya Ember.js
1:09:45Itu dia pakai MVC, tapi udah
1:09:47Sudah tidak begitu
1:09:49Terdengar lagi sekarang
1:09:51Masih di-maintain nggak sih?
1:09:55Coba aja lihat
1:09:57Ember.js
1:10:01Malah dia lebih duluan
1:10:03Malah kalah sama Angular
1:10:11Angular aja masih
1:10:13Masih
1:10:15Kedengeran gitu
1:10:17Masih 4 hari yang lalu
1:10:19Ya, ini
1:10:23Dia pakai MVC
1:10:25Setau saya, dan ini front-end
1:10:27Design pattern sama design
1:10:29Arsitektur sepertinya beda
1:10:31Iya, beda
1:10:33Yang satu pola
1:10:35Yang satu arsitektur
1:10:37Tadi ini udah kita bahas ya
1:10:41Smartdom pattern
1:10:45Ada Smartdom component
1:10:47Ada presentation
1:10:49Container
1:10:51Container, iya betul
1:10:53Dia dulu pakai container yang
1:10:55Yang ada state, dia itu container
1:10:57Yang
1:10:59Cuma view doang itu
1:11:01Dump component ya
1:11:03Terus
1:11:07Apa nih
1:11:09Bahas security hole di Next.js
1:11:11Yang kemarin ya
1:11:13Baru kita bahas tentang security ya
1:11:15Tiba-tiba ada security hole
1:11:17Critical nya 9.1
1:11:19Belum 10 sih
1:11:21Belum 0 day
1:11:25Wah ada event apa tuh
1:11:27Kita mau dong Papsap
1:11:29Kalau ada GUL
1:11:33Kayaknya kejadian yang hampir GUL
1:11:35Atau kebobolan
1:11:37Masih 1-0
1:11:47Masih 1-0
1:11:49Mantap
1:11:55Oke
1:11:57Next
1:11:59Kita bahas
1:12:01Kita ga gitu ngerti sih ya
1:12:03Problem utamanya apa?
1:12:05Ada yang tau ga sih, tail dare nya
1:12:07Authentication kayaknya ya
1:12:09Oh, oke
1:12:13Bisa di bypass
1:12:15Oh wow
1:12:17Pakai
1:12:19Custom header
1:12:21Yang bikin heboh adalah
1:12:23Di Cloudflare
1:12:25CEO nya Cloudflare bilang
1:12:27Ya gausah pake Fairsell, pake Cloudflare aja sih
1:12:29Kita sudah patch header itu
1:12:31Terus dibalas lagi
1:12:33Sama CEO nya si Fairsell
1:12:35Iya
1:12:37Kalau udah patch kenapa ga di pull request ya
1:12:39Bukan
1:12:41Di block
1:12:43Custom header itu di block
1:12:45Cuma kalau custom header itu di block
1:12:47Ada yang ga bisa working
1:12:49Kayak super base kayaknya
1:12:51Atau ada base tertentu yang menggunakan
1:12:53Menggunakan
1:12:55Custom header itu
1:12:57Hmm
1:12:59Ya
1:13:01Kompleks
1:13:03Ya, drama lah ya
1:13:05Kompleks juga sih
1:13:07Masalahnya
1:13:09Bug nya terjadi karena logic
1:13:11Jadi logic bug bukan karena
1:13:13Bukan karena
1:13:15Bug ke goblokan
1:13:17Bukan goblok
1:13:19Bukan goblok Mak
1:13:21Ini berarti karena kompleksitas
1:13:23Maksudnya kompleksitas kebutuhan ya
1:13:25Ya, pure complexity logic
1:13:27Mak
1:13:29Hmm
1:13:31Oke
1:13:33Kemarin saya tanya-tanya AI
1:13:35Tentang SSR, dia bilang kalau SPA
1:13:37Juga bisa SSR menggunakan
1:13:39VT
1:13:41SPA, React, Vue
1:13:43Juga bisa SSR, bisa
1:13:45VT ada server nya kan
1:13:47Ada plugin nya, tapi engga
1:13:49Bukan by default
1:13:51Harus di install dulu
1:13:53Hit server ya
1:13:57Iya, bisa-bisa
1:14:01Dari dulu juga bisa
1:14:05Yang CSR juga kita bungkus pakai express
1:14:07Bisa jadi SSR kok
1:14:09Sebenernya
1:14:11Bisa-bisa aja
1:14:13Misal di aplikasi kita hanya butuh sebagian
1:14:15Membutuhkan SEO, apakah mending pakai VT
1:14:17Atau langsung Next.js VT
1:14:19Jangan
1:14:21Jangan apa-apa Next.js dulu
1:14:23Ya, misal di aplikasi kita hanya butuh
1:14:25Sebagian yang membutuhkan SEO
1:14:27Saya lebih mending
1:14:35Aplikasi yang hanya untuk
1:14:37Frontend yang untuk SEO sesingin
1:14:39Pakain WordPress aja
1:14:41Aplikasi internal bikin lah pakai
1:14:43Next.js atau pakai
1:14:45Content, aplikasi-aplikasi
1:14:49Dipisahkan aja
1:14:51Jangan, kalau jawaban gue lain
1:14:55Butuh fitur-fiturnya Next.js engga
1:14:57Butuh build and whistle nya
1:14:59Next.js engga, kayak yang otomatis
1:15:01Handphone optimization
1:15:03Image optimization
1:15:05Routing nya
1:15:07Routing nya banyak
1:15:09Denerbit atau engga, pokoknya
1:15:11Fitur yang apa
1:15:13Itu kan mempermudah hal-hal kompleks ya
1:15:15Kalau misalnya website nya besar dan emang butuh
1:15:17Itu semua ya udah pakai aja
1:15:19Tapi kalau engga terlalu butuh
1:15:21Kalau namanya dikit ya udah
1:15:23Web sama
1:15:25Router-router yang sebetul-sebetul
1:15:27Sekarang kan banyak-banyak kan
1:15:29Alternatif lain mungkin
1:15:31Astro bisa jadi pilihan juga karena
1:15:33Astro bisa kita set kan, oh saya mau
1:15:35Ini client saya render, oh saya mau server saya render
1:15:37Oh saya mau, by default engga perlu
1:15:39JavaScript, terus misalkan di bagian bawahnya ya
1:15:41Island, Citilator gitu-gitu
1:15:43Kayaknya bisa juga, gitu
1:15:45Jadi kalau misalkan mau jadi satu aplikasi, engga mau
1:15:47Dipisah, aplikasi nya tetep sama
1:15:49Framework nya tetep sama, ya bisa pakai
1:15:51Astro, karena Astro juga bisa pakai
1:15:53Vue, bisa pakai React, mau
1:15:55Gak suka Vue atau React, bisa pakai
1:15:57Svelte gitu kan, jadi
1:15:59Cukup flexible lah ya
1:16:01Kalau yang simple banget
1:16:03Malah Vite sama React Router
1:16:05Udah jalan ya
1:16:07Kalau misalnya simple banget
1:16:09Dan engga pengen pakai Framework ya, kasusnya
1:16:11Gak butuh rasa, engga butuh sama
1:16:13Offeringnya reksial, Astro
1:16:15Ya setiap
1:16:17State internal nya React aja
1:16:19Misalnya cuma butuh itu ya Vite dan React
1:16:21Router, udah cukup ya
1:16:23Yes
1:16:25Pertanyaan berikutnya, baru tau
1:16:29Ternyata engga cuma back-end API doang
1:16:31Yang bisa di blockir, sekarang gambar pun
1:16:33Bisa, ah namanya Corp
1:16:37Oh, Corp ya
1:16:39Kalau dulu Corp, sekarang namanya Corp
1:16:41Gitu ya, kepanilannya apa?
1:16:43Ya itu buat gambar mungkin, ya coba aja
1:16:45Picture ya, cross origin
1:16:47Cross origin, resource, picture gitu
1:16:49Bener ini, origin
1:16:53Resource
1:16:55Picture
1:16:57Policy
1:16:59Adanya resource policy
1:17:01Kalau dulu kan
1:17:05Kita sering pake htaccess
1:17:07No, ini hotlinking
1:17:09Kalau di hotlinking image kita
1:17:11Dibikin no hotlinking
1:17:13Ini adanya
1:17:15Corp
1:17:17Cross origin resource policy
1:17:19Oh ada nih resource ya bentar
1:17:21Ada co-op
1:17:23Corp course
1:17:25Coba buka deh hit nya
1:17:27Banyak banget
1:17:33Snigel
1:17:35Kayaknya bisa
1:17:37Pembahasan sendiri deh course ini segala macem
1:17:39Dan brossel integrity
1:17:41Nanti kita bahas sendiri deh ini
1:17:43Brossel integrity, course
1:17:45Terus kemudian
1:17:47Corp
1:17:49Langsung aja kita tulis
1:17:53Wah
1:17:55Sign in dulu ya, oke
1:17:57Saya klik aja disini
1:18:03Ya, jadi
1:18:05Ada banyak ya, ada course
1:18:07Yang biasa kita kena tuh
1:18:09Kalau main-main api
1:18:11Ada co-op, ada co-ep
1:18:13Apa nih, kita pengen tahu aja
1:18:15Nah ini dia
1:18:17Kalau kita
1:18:19Mau loading
1:18:21Ads, font, video, image
1:18:23Maps, dan payment solution
1:18:25Content security policy
1:18:27Berarti ya
1:18:29Source, font, script
1:18:31Betul
1:18:33Berarti
1:18:37Course origin, embedded
1:18:39Policy, course origin
1:18:41Opener, policy
1:18:43Makanya semua terkait header ya
1:18:45Iya
1:18:47Jadi ada yang boleh ditampilkan
1:18:49Ada yang gak boleh, itu diatur disini ya
1:18:51Biasanya harusnya, yang paling
1:18:53Yang paling aman kan same origin ya
1:18:59Window opener
1:19:01Ini bisa kita bahas
1:19:03Nanti
1:19:05Jadi material sendiri
1:19:07New discussion
1:19:09Browser security lah bahasanya
1:19:11Browser
1:19:13Security
1:19:15Ya
1:19:17Policy ya
1:19:19Oke, ada macem-macem
1:19:21Nanti juga sekalian kita sambungin ke itu
1:19:23Ke
1:19:25Content security policy
1:19:27Ya
1:19:29Apa lagi ya
1:19:31Ya udah policy kan chat-nya
1:19:33Yes
1:19:35Strict transport
1:19:37Strict transport
1:19:39Yes
1:19:41Yes, protection header banyak
1:19:43Oke, ada lagi yang mau ditanyakan
1:19:49Gak ada ya
1:19:53Sudah berapa score-nya
1:19:55Masih 1-0
1:19:57Indonesia bakal lulus gak
1:20:03Masih ada kemungkinan lulus
1:20:05Pilar dunia
1:20:07Masih kalau menang ya, bener gak
1:20:09Iya, ini masih
1:20:11Keringkat ke-4
1:20:13Kalau keringkat 3 atau 4 itu
1:20:15Ada 1-2 lagi playoff
1:20:17Berarti masih ada harapan
1:20:21Masih, cuma
1:20:23Terus ya
1:20:25Mungkin gak
1:20:27Minimal lulus ke
1:20:29Round selanjutnya
1:20:31Oh, jadi
1:20:33Kalo misalkan peringkat 2 atau peringkat 3
1:20:35Terbaik, nanti dia akan
1:20:37Tanding lagi sama lawan yang lain
1:20:39Nanti baru bisa masuk gitu ya
1:20:411-2, 1-2 itu
1:20:43Langsung lulus ke babak pinjisi
1:20:45Yang ke dunia, 3 dan 4-nya
1:20:47Diadu lagi sama 3 dan 4 yang lain
1:20:49Oh, iya iya iya
1:20:51Oke
1:20:53Oke, kalau gitu untuk malam ini
1:20:57Cukup?
1:20:59Cukup ya
1:21:01Kalo misalkan
1:21:03Ada yang kurang
1:21:05Kita minggu depan liburkan ya
1:21:07Minggu depan kita libur
1:21:09Sementara, lebaran dulu lah
1:21:11Kalo nanti misalkan
1:21:15Oh, mau dibahas
1:21:17Sekarang?
1:21:193 menit aja
1:21:21Boleh, siap siap siap
1:21:23Kalo temen-temen nanti
1:21:25Ada yang mau dibahas lebih lanjut tentang design pattern
1:21:27Bisa langsung kesini ya
1:21:29Nanyain lagi, nanti kita jawab lagi
1:21:31Karena kita pun
1:21:33Gak belajar gimana-gimana
1:21:35Tentang design pattern sebenernya
1:21:37Jadi kita juga agak-agak bingung juga
1:21:39Mau bahas apa
1:21:41Dari sisi mananya
1:21:43Oke
1:21:45Kalau kita anggap itu selesai, berarti
1:21:47Kita berdasarkan
1:21:49Bedah situs mau
1:21:51Yuk, bedah situs
1:21:53Bedah situs, oke
1:21:55Bedah situs baru ada satu
1:21:57Yang tadi
1:21:59Iya
1:22:01Yang tadi
1:22:03Boleh, boleh, boleh
1:22:05Bedah situs ya
1:22:07Kalo temen-temen ada
1:22:13Ada website yang mau di bedah
1:22:15Baik itu secara performance
1:22:17Apa lagi ya
1:22:19Aspeknya apa? Security, performance
1:22:21Maksudnya dari course ya
1:22:23Security policy, content security policy
1:22:25Dari browser security
1:22:27Mungkin desainnya
1:22:31Minta di apa
1:22:33SEO-nya
1:22:35Apa lagi
1:22:39Ya performance yang ukuran
1:22:41Blocking ke apa segala macem
1:22:43Ya itu performance yang masuk performance
1:22:45Best practice, best practice
1:22:47Kodenya mau dikomentarin
1:22:49Boleh, silahkan ya
1:22:51Silahkan
1:22:53Tulis aja disini
1:22:55Website-nya, ini contohnya
1:22:57Saya seng-seng bikin
1:22:59Website buat ngobrolin web
1:23:01Jadi kalo
1:23:03Kalo temen-temen punya website
1:23:05Pribadi atau project yang mau
1:23:07Di bedah
1:23:09Nanti kita dahulukan
1:23:11Yang temen-temen dulu ya
1:23:13Ini cadangan aja
1:23:15Oke, berarti
1:23:17Ini episode 2 minggu lagi ya
1:23:19Untuk pedas titus ya
1:23:21Oh ini ada gak?
1:23:23Share github-nya, baru join
1:23:25Ada di kesana.in/ngobrolinweb
1:23:27Langsung aja
1:23:29Ini kita kasih
1:23:31Shortener-nya
1:23:33Atau github.com/ngobrolin
1:23:39Sama
1:23:41Oke, cukup
1:23:45Cukup ya
1:23:47Cukup
1:23:49Oke, kalo gitu
1:23:51Terima kasih banyak buat temen-temen semuanya
1:23:53Yang sudah meramaikan
1:23:55Sambil nonton bola
1:23:57Kita ketemu lagi
1:24:012 minggu lagi
1:24:03Karena minggu depan
1:24:05Lebaran, jadi sekalian aja
1:24:07Buat temen-temen yang merayakan
1:24:11Selamat lebaran
1:24:13Yang mudik juga hati-hati di jalan
1:24:15Selama sampai tujuan
1:24:17Itu aja buat malam ini
1:24:19Terima kasih banyak semuanya
1:24:21Selamat malam, bye bye
Suka episode ini?
Langganan untuk update episode terbaru setiap Selasa malam!
Episode Terkait
16 Apr 2025
Ngobrolin CORS & Browser Policy - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...
16 Sep 2025
Ngobrolin JWT - Ngobrolin WEB
🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini akan membahas tentang JWT, auth, acess token, refresh token dll. T...
27 Mei 2025
Ngobrolin Google I/O - Ngobrolin WEB
Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...