Lompat ke konten utama
EP 139

Konsep Dependency Injection

Ringkasan Episode

Bantu Koreksi

Episode ini membahas konsep Dependency Injection (DI), sebuah design pattern fundamental dalam software development. Para host menjelaskan apa itu Dependency Injection dengan contoh praktis menggunakan JavaScript, membandingkan kode tanpa DI dan dengan DI untuk menunjukkan perbedaan dan manfaatnya. Diskusi mencakup konsep terkait seperti Inversion of Control dan prinsip SOLID (khususnya Dependency Inversion). Contoh yang digunakan adalah analogi mobil dan mesin (engine), di mana dengan DI, kelas Car tidak perlu membuat instance Engine sendiri di constructor, melainkan menerima engine sebagai parameter yang di-inject dari luar. Episode ini juga disponsori oleh DomaiNesia dengan promo code untuk cloud VPS.

Poin-poin Utama

  • β€’Dependency Injection adalah teknik di mana dependencies di-inject dari luar, bukan dibuat di dalam class/function
  • β€’Tanpa DI: constructor membuat instance dependency sendiri (new Engine()), dengan DI: engine diterima sebagai parameter
  • β€’DI merupakan implementasi dari prinsip Inversion of Control dan Dependency Inversion (bagian dari SOLID)
  • β€’Manfaat DI: kode lebih fleksibel, mudah di-test (bisa inject mock), dan loosely coupled
  • β€’Artikel referensi dari Smashing Magazine (2020) menjelaskan DI dalam perspektif web development
  • β€’Konsep DI relevan untuk interview dan penting dipahami untuk arsitektur aplikasi yang baik
  • β€’Kolaborasi dengan DomaiNesia: promo code NGOBROLINVPSDN untuk diskon 50% cloud VPS

[Musik]

Dapatkan hanya di Domestika

[Musik]

[Music]

[Musik]

Lagi-lagi nih

Sebab lagu, sebab lagu

[Musik]

Orang pun datang dan akan kembali

Iya, itu ya

Apa ayo

Bukan

Tamiya itu ya bukan

Bukan

Tadinya gue kira itu Dasion Kuro bukan

Itu Dragon Ball

Bukan Dasion Kuro

Itu jadul sekali

Dragon Ball

Yang bikin Tamiya meninggal ya, baru meninggal ya

Yang Kuro jadi naik lagi ya

Masa?

Tapi ada komunitasnya loh

Ada

Kan kalau Tamiya itu kan ada anime yang baru kan

Kalau Yung Kuro kan jamannya kita

Jamannya

Jamannya yang lebih muda ada lagi kan

Ada anime yang baru lagi kan

Harusnya ada ya, itu kan Evergreen

Lihat transkrip lengkap (2047 segmen lagi)

Bukan, ada Tamiya juga

Bukan, Tamiya juga

Tapi beda film, eh beda anime

Halo-halo semuanya

Kita jadi tebak-tebakan umur ya

Gimana kabarnya teman-teman di Youtube sama di LinkedIn

Dengan sehat malam hari ini

Sehat-sehatnya semua

Aman-aman ya

Timnass lagi main loh, yang under 20

Ah Timnass lagi main, oh iya benar

Kan benar kan

Selasa malam, waktunya Timnass main

Pertanikan internasional jatuhannya Selasa Rabu, gimana lagi

Iya, sering bertabrakan

Semoga menang

Kita sering yoga sih, setahun paling cuma berapa kali

Iya, ada alasannya loh itu kenapa Selasa Rabu

Karena mereka sabtu minggu main

Ya, weekend kan tiga

Iya

Ah gelap banget, apanya gelap?

Masa depan

Siapa yang gelap?

Masa depan

Indonesia, Indonesia gelap

Maset ya Adi Wirawan, halo-halo

Ivan pake baju gelap, Eka pake baju gelap, saya pake baju terang

Indonesia

Bagus juga pake baju nih

Bisa ke hidden sama

Nggak kelihatan ya

Iya, kayak nggak pake baju gitu

Tinggal

Apa aja yang gelap, boleh info dong

Kalau teman-teman yang nonton ada kejanggalan

Baik itu sound ataupun visual, boleh info ya

Gelapnya apa nih?

Oke maksudnya backlight deh

Nah seriusnya backlight, soalnya lampunya kan di belakang loh

Lampunya di belakang jadi apa

Nah dari depan tuh kayak

Kurang terang gitu

Masa sih, emang sengaja itu efek, mau diterangin gitu

Nah ini terang

Mendingan gini

Ini mah over contrast, over brightness

Makanya mendingan tadi kan

Nggak tahu deh yang gue butuh visual

Gini ya

Sense visualnya nggak bagus

Ini satu-satunya

Mau di info ya, Mas Setia dia atau teman-teman yang lain

Kalau ada kejanggalan dengan visual dan juga audio kita

Kemarin itu sempat ada yang komen

Kasih masukan suara kita itu

Ya audio nya itu nggak apa ya, nggak standar levelnya

Jadi kadang ada yang terlalu besar, ada yang kecil

Iya karena kan kita live

Karena kita kan sunyai keputian ya

Enggak, iya karena live kan

Distimulate nggak ada ya

Nggak ada kayaknya

Ada, ada, distimulate itu ada

Cuma saya tuh kalau misalnya diajarin

Di setting nya itu, di input volume nya itu dibikin 75%

Distimulate juga 75%

Tapi kan persen masing-masing tergantung sama

Masing-masing antar satu speaker sama speaker lain

Tergantung kita ngomongnya keras atau nggak

Dan mic nya juga

Ya input outputnya gimana

Sama, beda-beda

Mic nya seberapa senti dari ya

Nah itu

Ya iya kan, nah intinya adalah

Harusnya stream nya ada setting buat normalize

Output pas udah di mix kan

Tapi kan nggak di mix karena live

Ya kan tetep aja audio output nya satu

Maksudnya dibeli pelayarnya, stream yard nya kan

Iya sih, iya sih

Harus dari stream yard nya ya

Kalau normal nya kalau rekaman

Itu kita normalize di audio editor itu kan bisa ya

Ya hasil audio nya bisa

Di hubung ini live jadi kita nggak bisa kontrol

Di stream yard kan berarti ada suatu entah apa

Funksionalitas yang menggabungin input dari kita semua ini kan

Iya

Nah itu

Kalau podcastnya Om Dedy yang di

Close the door itu gimana caranya

Apa karena offline mereka masuk ke

Nah itu kan langsung, onsite

Itu kan live juga mereka

Oh kalau onsite mah enak

Satu mixer lah dicolok mixer aja semua

Rekaman ya?

Enggak, nggak online

Itu rekaman satu

Kedua di tempat yang sama

Nggak, bukan online seperti ini

Di tempat yang sama mereka mic nya

Dicolok atau dikoneksikan ke satu mixer

Yang ketiga

Barang nya itu mahal semua

Beda, barang nya itu kualitas semua

Khusus professional podcaster

Iya professional

Tapi nggak sih yang paling deciding sih

Apa semua orangnya di satu tempat

Itu yang

Iya itu yang paling berpengaruh

Mixer yang kecil pun kayak bearinger

Yang ala-ala itu ya masih bisa lah

Intinya di normalize di satu tempat

Baru di stream

Betul

Kalau rekaman aja itu masih bisa di akalin

Tapi kalau udah live udah

Kita menyerahkan kepada yang punya platform

Dan hal ini stream ya

Nah ngomongin platform

Ya kalau teman-teman mau bikin platform

Mau bikin service

Teman-teman bisa cobain service nya Domenecia

Pengen nunjuk ke kaos nya

Mas Risa Domenecia

Domenecia

Ya jadi kita masih dapat kesempatan

Bekerja sama kolaborasi dengan Domenecia

Dan Domenecia memberikan diskon 50%

Untuk pembelian baru untuk cloud CPS Turbo

Ya

Itu berarti VM ya

Virtual Machine

Server lah ya

Server virtual

VPS

Jadi kalau ada project yang ada docker nya gitu

Bisa langsung ditaro disitu ya

Bisa deploy disitu

Kan yang paling murah

Setelah di promo jadi 80 ribu itu 1 giga

Nah itu project itu source code

Berapa project bisa dimuatin

Lumayan ya

Kalau mau self hosting

5 US Dollar ya

5 US Dollar

Lumayan

Lumayan untuk apa

Yang kena tarif ya

Perang harga kan ini ya

Ada politik-politiknya Amerika Serikat kan

Apakah berpengaruh kepada

Penyedia jasa cloud ya

Penyedia jasa komputasi awan

Apa enggak, enggak saya enggak tahu ya

Kayaknya beberapa kali saya sempat dapet email

Ada perubahan harga, perubahan harga

Tapi enggak tahu service mana yang

Streamyard ini yang perubahan harganya

Extreme

Nah ini parah sih

Streamyard parah

Jadi mungkin bisa jadi solusi juga

Buat teman-teman yang mau cari

Apa

Service hosting atau

VPS

Makin lama, makin hal-hal

Necessity, makin mahal

Iya

Kalau itu inflasi

Contohnya Google

Google Storage

Google One itu naik

Harganya

Beras juga naik

Harganya

Iya

Itu yang saya berpikirkan

Kemarin itu sempat ada kan

Google

Kalau pakai account student

Atau universitas kampus

Itu kan bisa dapat

Gratis

Gemini

Sama dapat gratis storage kan

Selama

Tahun setengah atau berapa gitu ya

Pokoknya selama jangka waktu tertentu

Nah yang saya penasaran

Adalah kalau saya

Pakai, maksudnya saya beli

Dan dapat gratis itu satu setengah

Tahun

Abis itu setelah

Storage-nya saya isi dengan

Foto-foto dengan

File dan lain-lain di backup disana

Terus abis itu gratisnya

Selesai

Terus mau dipindahin ke mana itu

Apa

File-file itu

Berarti harus bayar dong, maksa kita untuk bayar ya

Menjebak

Menjebak kita untuk bayar

Kalau sudah habis maksudnya storage-nya

Iya, eh bukan

Mungkin ada grace periodnya

Kan kita

Tidak ada nih, satu setengah tahun gratis

Terus abis itu kan kita masukin

File-nya kan, terus abis itu

Gratisnya hilang kan

Storage-nya kan mengecil

Iya

Sebenarnya itunya enggak ini

File-nya enggak hilang

Cuma enggak bisa nambah

Oh enggak bisa nambah

Iya

Tapi kalau it only, berarti bisa nambah ya

Enak juga

Yang enggak terlalu kejam lah ya

Yang enggak terlalu kejam lah ya

Ya mungkin grace period lah

Disimpenin berapa tahun

Berapa bulan, berapa tahun

Kalau bisa dihapus

Tapi sekarang ya, kalau polisi sekarang

Jangan terlalu dependensi

Sama Google

Sama Apple

Nah

Ngomong-ngomong soal dependensi

Hari ini kita topiknya

Dependensi injection

Ini dulu

Orang-orang pada nungguin

Pake kan, bingung kan

Jadi kalau teman-teman tertarik ya

Mau cobain VPS-nya Dominicia

Saya dapat, kemarin dapat akses

Bayar sendiri lagi

Padahal mau dibayarin

Mau dibayarin

Malah saya bayar sendiri loh

Kenapa enggak tanya dulu

Jadi bisa pake promo code

Ngobrolin VPSDN

Ngobrolin Virtual Private Server

Dominicia ya

Biar

Dominicia

Pihak Dominicia tahu bahwa

Teman-teman nyobain gara-gara dengerin

Ngobrolin web ya

Emang dapat discount juga

Buat kerjasamanya

Oke, ngomongin dependensi

Ketergantungan

Baru-baru malam ini

Untuk web hosting

Web hosting ada

Tapi sebelumnya

Edisi sebelumnya

Masih berapa ya

Ngobrolin DN ya

Kalau nggak salah ya

Di episode berapa ya

Yang kita mulai berubah

Ngobrolin web DN

Ngobrolin web DN

Nggak tahu, cobain aja

Promo code-nya

Ngobrolin web DN

Silahkan dicoba, Mas Fiko

Untuk share hosting ya

Share hostingnya juga udah modern ya

Ternyata ya, bisa pake binary aja

Dimasukin udah bisa jalan

Jadi bisa segala

Platform atau bahasa

Oke

Malam hari ini kita

Akan diskusi tentang

Salah satu

Topik yang

Basis ya

Ini dulu siapa sih yang nyaranin

Di GitHub kita?

Saya

Oh bagus dia ada yang ngerti satu orang

Gua nggak ngerti

Baru kelar kerja

Tiba-tiba

Didakan langsung tanya Jemenay

Apa itu dependensi injection

Nggak ngerti sih sebenarnya

Jadi waktu cerita latar belakangnya itu

Waktu lagi

Sesi

Live coding

Di Senen Malem

Terus lagi bikin unit testing

Tiba-tiba

Saya masukin, misalkan vats-nya kan

Saya mau

Testing tapi

Mau di-mock, tapi mok-nya manual

Mokingnya manual, nggak pake library

Akhirnya

Vats-nya itu saya jadikan

Parameter di satu fungsi

Oh

Itu vats falsy

Bukan

Ya, nanti dicontohin deh

Jadi dimasukin ke

Parameter, tujuannya adalah

Ketika di script testing

Itu

Saya bisa masukin mock vats

Saya bikin sendiri lah tuh mock vats-nya

Kalau di real code-nya

Saya bisa pake vats yang biasa

Nah itu adalah contoh

Dependensi injection

Setelah dipikir-pikir

Ini dependensi injection nggak ya

Akhirnya cari-cari, oh ternyata itu

Jadi dari situ

Sebenarnya saya yakin

Teman-teman juga mungkin

Pernah menggunakan

Trick seperti ini, tapi

Nggak tahu istilahnya aja

Begitu

Jadi kita mulai dari

Ini ya, dari

Definisi umumnya ya

Definisi umum

Loh, mana?

Sharescan dulu

Nah ini baru gelap ya

Nah

Sudah kelihatan?

Sudah

Oke, jadi

Dependensi injection itu adalah

Teknik pemograman

Yang

Bagaimana caranya

Supaya sebuah objek

Atau sebuah fungsi

Yang dibutuhkan, yang digunakan

Di dalam fungsi atau di objek

Tersebut

Diinjek, dimasukin

Disertakan

Ke dalam fungsi atau

Ke klust tersebut

Ini kayaknya masih

Masih ngawang ya

Tadi, bentar

Aim to separate

Atas tujuannya

Seperate the concern

Seperation of concern

Seperation of concern

Seperation of concern

Pada saat

Constructing objek ini

Membuat objek dan menggunakan

Dependensi injection

Kayaknya cuma untuk OOP deh

Enggak sih

Nah tadi gue tanya Jimenai itu

Ternyata

Itu kayak terpisah dari OOP

Sama functional

Justru

Kayaknya kaitannya lebih kuat ke functional

Karena ada higher order function

Ini lebih kayak mirip ya

Funksional gak sih

Itu tadi yang misalnya testing

Kan itu function yang emang dipisah-pisah

Buat mock testing

Ada function nya sendiri, itu dipas sebagai

Argumen

Iya functional, karena

Kayak higher order function lah

Kurang lebih kan, mirip-mirip ya

Oke, kita run through dulu aja ya

Kalau di static type language

Itu kita bisa

Pakai interface, jadi kita

Definisikan

Parameternya itu

Ada interface apa

Pasti

Pernah dong

Parameter ada interfacenya

Pernah dong, kita definisikan type nya adalah

Interface ini

Ini umum kan ya

Lanjut lagi ya

Kelebihannya

Keuntungannya

Bisa tadi ya

Decrease coupling

Interaction of concern

Antara kelas dengan dependency

Terus juga

Aplikasinya bisa lebih

Reusable, testable

Dan maintainable

Flexibility

Sama reduce boilerplate code

Dan terakhir

Injection allow concurrent development

Kalau ini saya gak tau ya, cuma ini

Contoh-contoh aja

Jadi kalau mau lihat diagramnya

Mas Riza

Diagram yang pertama

Bisa jelasin banget

Coba di zoom

Gimana zoomnya

Orang zoom ya

Nah

Jadi kalau dari diagram ini

Ada service

Ada enum

Enum lah ya

Itu scope nya

Enumerator untuk type datanya

Ada service

Terus turun

Ada container provider

Turun dikit

Ini java banget ya

Terlalu rumit ya

Ada contoh kodenya sebenernya

Di bawah

Nih, tapi ini java ya

Ini OOP ya

Jadi ini tanpa dependency injection

Kita bikin

Sebuah client

Ada service

Sebagai

Service sebagai apa ya

Variable lah gitu ya

Itu variable nya baru dimunculin

Kalau lagi initialize in the constructor

Jadi kalau misalnya kita manggil new client gitu

Maksudnya terus dalam kurung

Entah gimana lah di passing si service nya

Dari yang memanggil client

Dari yang meng-instantiate

Suatu client object itu berarti ya

Betul

Dengan injection

Dimasukin sebagai

Constructor sebagai parameter

Atau argument

Sehingga kita tidak perlu

Memanggil new service

Service nya bisa lain-lain kan

Tergantung yang mana

Bukan, service nya bisa lain-lain, bisa di-inject

Diisi dengan apa kan

Yang manggil new client itu

Berarti yang menentukan

Service nya apa kan

Kayak contoh mock fetch tadi

Kan itu berarti fetch ala-ala

Bukan fetch beneran ya udah si

Si yang menjalankan terima aja

Udah apa yang dikasih

Jadi yang manggil

Kalau saya mau kasih contoh

Kayaknya bisa juga gini

Jadi contohnya kita bikin

API

Sorry kita bikin

Code untuk bisa

Nge-update data kita

Di Git

Nah, Git

Service ya, Git service itu

Ada dua, bisa GitLab

Atau bisa GitHub

Kita cuma satu

Client nya satu

Tetapi berdasarkan setting

Yang dipakai dari UI kita

Oke, ternyata kalau repo A

Dia hostingnya di GitLab

Repo B di

GitHub, namun secara

Client wrapper nya kita

Ya cuma satu, satu aja yang kita panggil

Service nya

Bisa beda, bisa berganti-ganti

Sesuai sama yang kita

Setting, konfigur

Dan bisa dimesarkan injection

Jadi bisa konfigurasinya, oh

Kita lagi di repo B, ya berarti pakai

Service nya dari si GitHub

Nah supaya

Bisa si

Client kita tadi, class Client

Kita, mengerti

Dan bisa mengambil

Menanggil function yang sama

Maka, class service kita

Itu harus implement

Interface

Yang sama

Ya, ya betul

Jadi interface ya

Interface itu kan cuma kayak definition function

Misalnya fetch, push

Pull

Kayak blueprint ya

Kayak property nya atau method nya

Atau apalah yang bisa dipanggilkan

Di dalamnya

Jadi kalau misalnya Mas Riza balik ke

Kode tadi, jadi si

Client itu

Kan dia oke di definition oleh

Service GitHub

Tetapi kan this service ini kan

Satu, di dalam body nya dia kan

This service fetch, this service pull

Cuma pull nya

Mechanism nya harus pakai API yang mana

Ya, disembunyikan

Itu

Itu yang tentukan

Di luar client class itu kan

Si class client

Tau nya, gue hanya mau panggil pull

Nanti, si service ini lah

Yang menentukan

Apa namanya, logic

Ataupun

API endpoint yang mana, itu si service

Yang urusannya

Wait, kalau gitu

Bentar, masih contoh yang mirip

Ini, paralelnya, coba buka deh

Berarti, Vercell AI SDK

Itu termasuk

Pola dependency injection

Atau bukan

Jadi intinya

Kalau TLDR nya

Ini satu SDK

Berbasis TypeScript atau Java Strip

Untuk pakai berbagai LLM

Provider dan model, nah itu liat contohnya

Jadi, apa package nya namanya

AI, Generate Text

Nah, Generate Text itu kan

Ya kayak contoh Gitrapple

Event tadi, nah Generate Text itu kan

Bisa pakai Gemini, Gemini

Bisa pakai Flash 2.5 Pro

Bisa

Bisa pakai Google

Maksudnya, Google ada Gemini Flash, Gemini Pro

XAI

Ada macem-macem, nah itu kan

Wait, Generate Text

Ini kan pure functional ya, ini functional banget

Karena emang Java Strip SDK

Tapi kan, ini yang dipassing

Yang dimasukin

Model titik 2, XAI

Provider-nya dalam kurung

Drop 3 Beta

Coba klik yang

Bukan OpenAI

Tab OpenAI deh

Nah, pakai Generate Text

Oh iya, iya benar-benar

Ini ya

Bukan bagian parameter ini ya

Tapi si Generate Text itu

Ini nya

Di dalam

Perutnya si Generate Text

Dia cuma manggil model, panggil apa

Itu, panggil function yang sama

Pasti panggil function yang sama

Iya

Cuma ini ya udah

Bikin semacam raper

Sebentar

Berarti, bedanya

Dependency Injection

Sama adapter pattern

Apa? Ini kayaknya adapter

Nggak tau ya, ini asal nebak aja ya

Sebetulnya, gue belum terlalu paham

Dependency Injection apa

Cuma kalau pakai

Contohnya event tadi

Ya ini harusnya Dependency Injection

Kalau contoh event tadi

Emang betul Dependency Injection

Kalau gomopolitically correct

Ya adapter itu bagian dari

Dependency Injection

Bisa jadi

Karena Dependency Injection itu kan

Paradigm, bukan

Teknik

Kalau adapter berarti

Piece, apa?

Kayak pieces-nya ya

Kalau adapter

Itu pattern ya

Polanya ya

Nah kita liat yang ini

Kayaknya lebih

Lebih jelas dari

Smashing magazine

Kalau smashing ya pasti diterangin

Dalam perspektif web dev

Ini tuh waktu nulis

Sekarang udah berapa ya?

Tahun berapa? 2020

5 tahun yang lalu

5 tahun ya

Bukannya dia baru nulis 28 menit

Yang lalu

Ya ya

28 menit read

Konsep Dependency Injection

Intinya

Sangat simple menurut anak 18 tahun

18 tahun ya ampun

Theoretical concept of inversion of control

Dependency inversion of the solid principle

Dan lain-lain ya, banyak digunakan

Di tempat itu, oke

Ya

Dia bilang lagi simple, lagi simple ya

Oke, kita contohnya aja

Ini JavaScript ya

Ini JavaScript

Tanpa Dependency Injection

Mirip kayak tadi kan sebenernya ya

Jadi kita punya

Something gitu di luar sana

Namanya engine katakanlah, terus kita punya

Mobil, kelas mobil

Suatu mobil bisa menerima

Macam-macam jenis mesin kan

Tergantung yang bikin kita mau membuat mobil

Yang create new car object

Nah, kalau ya sama sih

Contohnya sama ini ya, kurang lebih ya

Jadi ketika yang tanpa

Dependency Injection, konstruktornya itu

Yang memanggil, yang menginisiasi

Engine, initiate new engine gitu ya

Sedangkan

Dengan Dependency Injection

Karena engine nya dimasukin sebagai parameter

Dia gak perlu new-new lagi

Langsung disini aja, didefinisikan bahwa

Dia sekarang pakai engine ini

Sesuai sama ketika kita menggunakan

Atau ketika kita

Menginisialisasi si car ini

Mau pakai engine yang mana, ya kan

Oh, berarti bentar

Syarat disebut Dependency Injection

Adalah yang dimasukin, yang dipassing

Sebagai argument

Sudah harus berupa object ya

Gak boleh berupa kelas yang

Diinstantiate lagi, gak boleh bikinnya

Di dalam sini kan

Harus jadi

Mereka langsung bisa dipakai

Atau dipanggil

Harus terima sebagai machine, bukan

Machine itu seperti apa, terus bikin lagi

Machine baru, itu kan kalau contoh atas

Kayak gitu tuh, cuma dikasih tau

Machine itu seperti apa ini kan

Nah, terus dia bikin sendiri

Nah, itu contoh yang bukan

Dependency Injection, tapi kalau contoh yang

Kedua, yang dibawah, udah beneran

Machine nya jadi, langsung

Dipakai

Machine object

Ya, begitulah

Nah, bedanya apa

Kalau

Yang pertama adalah

Kita inisiasi

Engine di dalam

Object car

Sedangkan yang kedua

Engine nya kita passing

Sebagai parameter

Sudah berupa

Object engine

Ya, sudah berupa

Object engine

Dependency Injection, ada istilah

Singleton dan Factory

Wah, saya baru tahu juga itu

Factory kayak functional programming ya jadinya

Factory

Enggak ya, OOP ya

Ada di rektoring guru kan

Factory

Factory method

Factory method, betul-betul

Betul-betul

Yang mana ya

Creational ya kalau salah ya, Factory method

Bener kan

Ini ya maksudnya ya

Jadi pakai satu

Factory

Method, sorry, satu Factory class

Untuk menginisiasi

Bermacam-macam

Child class

Nanti hasil child class nya itu

Bisa dipakai

Di servisnya

Di servis ya

Pake interface juga mirip-mirip ya

Truck, ship itu

Masalahnya di dunia Javascript

Maksudnya dunia yang lebih deket sama Javascript

Ada juga nih Factory pattern

Coba buka link yang di private

Itu emang

Apa, jadinya

Kalau di OOP kan

Kayak bikin object baru

Dengan suatu karakteristik

Itu kan harus pakai new kan

New something lah

Nah kalau ini Factory function, ini create user

Jadi bukan

Manggil new user

Dalam kurung blablabla, tapi create user

Pertama kali kita mau ini nih di artikelnya

Can see dots

Tapi ya mungkin ini juga kayak apa ya

Kayak flexi

Kayak fungsi biasa sebenarnya

Maksudnya, pattern Factory itu

Bisa diterjemahkan

Kayak di dunia yang

Kayak di refactoring Guru tadi

Yang kayak gitu tadi lah

OOP banget

Kalau ini kan

Di dunia Javascript diterjemahkan

Dengan mindset yang dengan perspektif

Atau workflow yang functional

Nah itu kan function kan user one

Sama dengan create user

Tapi kalau misalnya mau pakai clock kan

User one sama dengan new

User dalam kurung

Objectnya ini

Ya kalau singleton benar

Singleton itu objeknya dibuat sekali

Terus dipakai rame-rame

Gak pakai new, new nya cuma sekali ya

Kalau objek, kalau Factory itu objek

Dibuat, dibuat baru terus ya

Ya betul sih, ini masih memenuhi

Apa kriteria factory

Yang objeknya bikin baru

Teruskan itu

Ya lanjut

Real world example

Nah ini ada contoh

Oh itu cuma penjelasan kode

Contoh kode atas

Intinya udah ngerti kan ya

Temen-temen ya, bedanya itu

Yang satu diinjek atau engga

Tadi kalian yang pertanya mas Riza

Apa bedanya dependency injection

Dengan adapter pattern

Yes

Saya nanya

Sama

Abang chat GPT

Oh chat GPT

Mau di share

Boleh

Biar ngerti sama-sama kita

Share screen

Coba

Cara share

Sambil share screen kita

Cek score dulu

Masih 0-0

Oke

Saya nanya dependency injection

Sama

Adapter pattern

Cuma dia kasih

Masih kurang gede ya

Orang-orang

Dia jawabnya dalam

Python, jadi saya minta

Ke javascript biar gampang di ngerti

Oke, kalo

Dependency injection itu kan contohnya gini

Kita ada classnya

Kita ada notifier

Dan

Ada

Bisa pakai email service

Tapi juga bisa pakai

SMS

Nanti kalo misalnya, tapi

Ininya satu kan

Notifier

Dan di dalamnya ada email service

Suatu saat kita mau

SMS service

Atau mungkin mau push service ke

Kafka

Contohnya

Tujuannya

Supaya

Ya masing-masing service ini punya

Jadi urusannya

Urusan SMTP ya ke email service

SMS ya beda lagi gatewaynya

Mau push service ke Kafka yang lain

Ya beda lagi gatewaynya

Apanya

Pola pikirnya, jadi itulah maksudnya

Dicouple itu, tujuannya

Ini dependency injection ya

Iya

Itu

Rapper sebenarnya

Memrap sebuah income incompatible

Object untuk supaya

Jadi compatible

Jadi contohnya ada legacy class

Old printer

Terus kita ada printer adapter

Kayak polyfill dong ya

Nah

Gak juga, beda polyfill

Polifill itu kan

Kayak if

Kondisional, kalo itu gak ada

Dibikinin

Iya, kan biar compatible

Bisa jadi ya

Yang kayak misalkan

Nanti mau ke Shanghai kan

Udah bawa colokan yang mana nih

Yang kepala 3 apa kepala 2

Udah ada adapter kan, ujung-ujungnya listrik kan

Oh iya iya iya

Bener gak, itu adapter kan

Bener bener, iya sih itu adapter

Nah print receive

Kita ada adapted printer

Jadi dari class ini

Dia

Menginisiasi

Old printer tadi

Dibungkus yang tadi yang tidak compatible

Dibiarin aja

Legacy ya

Tapi kita bisa panggil

Di tempat kita yang baru

Nah

Anggap legacy ini adalah

Bukan

Kita punya source code-nya lagi

Kita gak punya source code-nya

Mungkin dia window.apa gitu

Yang sudah dari old code

Gak punya source-nya lagi

Dia hanya tinggal bisa manggil hasilnya

Tapi kita mau panggil di tempat kita yang baru

Kita bungkus aja

Ini sedikit sama

Cuma beda tujuan

Beda tujuan ya

Ini summary-nya

Fokusnya

Siapa yang create dependency-nya

Kalau si adapter

Gimana caranya

Bikin compatible gitu ya

Coba tanyain versi AISDK deh

Maksudnya kasih contoh code-nya

Sama jelasin singkat aja

Coba

Mana sih tadi contoh

Contohnya di private

Nah

Udah itu aja

Itu halaman pertama kok

Nah copy aja

Apakah ini termasuk

Dependency injection ya

Is this dependency injection

Or adapter pattern

Or not

Perlu dijelasin deh

Kasih satu lagi deh

Kasih satu lagi modelnya yang lain

Modelnya yang OpenAI

Atau Anthropic

Jadi ada dua ini

Apa ini? Expert?

Gak dijelasin

Ada itunya

rules-nya

Gak dijelasin dia bisa ngerti sendiri ya

Kenapa kita menganggap itu

Dependency injection

Terus

Ya dia ngerti

Ternyata

Mantap

Pinter ya

Ini pro atau gratis?

Gratis

Pro gratis

Ada promptingnya ya

Berarti sistem instruksinya

Yang

Ya saya pasang ini

Sistem instruksinya kan

Pasang MSC GPT

Bisa yang gratis emang

Bisa

Cuma rajin-rajinnya

Sama kok

Gemini sama

Gemini yang run n ya

Gemini.google.com sama chat GPT

Itu fungsinya mirip-mirip

To adapter kan

Coba liat katas-katas

Katas

The code uses dependency injection

And relies on

Adapter pattern

Katas-katas yang itu

Yang table

Yang table

Nah yang gue tunjukin tadi kan

Expert verdict

Nah itu

XAI and Google is

Abstract difference

Ini adalah adapter yang

XAI sama Google itu adapter

Tapi generate text nya

Dependency injection

Berarti versi AISDK nya

Maksudnya si AI package

Dependency nya

Oh iya

Generate text nya iya

Adaptor nya

Dalam package terpisah

Kalau kita perhatiin tadi kodenya

Walaupun dua-duanya buatan

Versi juga ya

Kelihatan nya ada unofficial sih

Makanya emang dipisah

Maksudnya kenapa itu dipublish

Sebagai package terpisah yaudah

Itu salah satu jawabannya

Jadi dua-dua

Ini nya si model nya itu adapter

Si generate text nya

Dependency injection

Yes

Oke

Dan oh dan orang

Tadi kalau kita liat

Tep-tep nya

Paling kanan kan ada custom

Ada antropik, ada Google, ada XAI

Ada custom emang itu dibuka

Siapapun

Bihak lain bisa mempublish

Adapter

Itu istilahnya bukan adapter sih

Maksudnya bisa mempublish package

Yang berfungsi sebagai adapter berarti

Tapi kalau untuk yang si dependency injection

Itu cara kerja si

AI package nya yang punya generate text

Punya apalah generate image dan lain-lain

Yes

Interesting

Ini kalau

Yang saya

Waktu itu

Mempertanyakan pada saat itu kan

Awalnya gak gini

Jadi ini codenya

Ini fungsi untuk

Ngirimin data ke gemini

Terus dapat respon

Standar lah ya

Jadi pada saat awal

Ini saya gak pakai ini

Mesej saja

Sedangkan

Pada saat

Di dalam saya manggilnya

Request

Request.os

Atau fetch dan lain-lain ya

Tapi pada saat

Saya mau bikin testing

Mana testing

Kan mau di mocking

Gimana cara mocking nya

Kalau gak pakai library

Yang saya lakukan adalah

Memalsu

Meniru

Meniru ya

Artinya 2 gitu

Kalau ngecek apa? Mocking ya

Iya artinya 2

Ya kayak bahasa Indonesia

Ada tahu sama tahu

Iya

Jadi

Akhirnya

Saya bikin variable baru

Atau parameter baru

Untuk menerima sebuah

Funksi

Atau objek atau apapun ini

Supaya bisa saya tipu

Jadi gak, dia gak akan

Connect ke gemini API

Supaya gak

Rate limit kan

Jadi saya bikin aja disini

Fungsi

Fungsi apa

Modul mocking

Dengan ada

Fungsi namanya pos

Saya lakukan sama seperti yang tadi

Di main tadi

Disini

Nah itu

Di test nya dia pakai mocking kan

HttpClient.Post

Jadi HttpClient nya bisa kita pakai apa aja

Kalau di JavaScript ya bisa pakai

Fetch, bisa pakai Axios

Fetch, Axios

Bisa pakai XML, Http

Bisa gak ya

Bedanya kalau LXL ini kan

Nggak ada tipe data ya disini ya

HttpClient itu enaknya

Disitu

Tapi kalau kalian sudah menggunakan TypeScript

Atau menggunakan

PHP kan

Masih bisa lose ya

Kalau C#

Atau yang strict

Language yang strict data type ya

Jadi kan kalau sudah ada data type

Disitu

Di HttpClient itu

Harus didefinisikan data type nya

Yang dua tipe

Data ini

Bisa compatible

Jadi kayak wrapper

Atau interface

Interface ya sebutannya

Interface

Biasanya pakai A, I depannya

I besar

Fungsional ya, jadi ini fungsional

Tadi kan kita contohnya kelas

Kalau ini yang lebih ke fungsion

Tadi pada saatnya saya menggunakan mock

Rec kan

Pada saat di kode benerannya

Saya kasih default parameternya adalah

Rec

Kenapa?

Kode yang sebelum ini gimana?

Bisa dimundurin

Bukan

Kan ada commit yang sebelumnya nggak ada

Oh iya

Bisa sih

Jadi kan pada saat

Manggil kan pakai mock rec

Kalau yang di aslinya

Yang benerannya

Saya pakai ini aja

Sama

Tapi ini rec, ini adalah

Dependensi benerannya

Ya, kalau kita

Mau pakai bisa rec.

Post ya

Jadi rec ini ada

Fungsi namanya post

Jadi ini disertakan

Ke dalam parameter

Sebuah fungsi, fungsinya yang ini

Mau lihat ininya

Mau lihat

Commitnya

Bingung

Gak

Gak

Oh

Ada ENV nya nggak?

Ada ENV nya nggak disini

Ada ENV nya

Ada example

Kau udah ada

Mas Liza

Mas Liza sempet panik

Mas Liza sempet panik

Oke, eh kok kesini?

Ntar, ntar, ntar, ngelihat commit ya

Commitnya sebelum

Sebelumnya ini

Pakai, mana dia?

Ini, langsung message aja

Jadi didalamnya langsung rec

Sama dengan rec request new

Rec request blablabla

Sampai rec.post

Kayak gini, kurang lebih ya

Ini, ini, ya gini

Rec.post

Begitu

Sudah

Di refactor

Gantinya adalah

Saya tambahkan 1 parameter

HttpClient

Jadi, tidak lagi rec.post

Tapi HttpClient apapun

Kalau nanti sandanya

Di masa depan saya mau ganti, nggak mau pake rec

Mau pake yang lain, ya tinggal

Ganti bagian ini aja

Rec nya diganti, udah

Sama dependency

Di apa?

Library nya diganti, di install

NPM install something yang lain

Gitu lah, kira-kira

Pola kayak gini

Kalau di webdev

Salah satu yang paling umum, logger kali ya

Pada umumnya kan

Kita logger cuma instantiate

Sekali kan, misalnya pakai Pino

Atau semacamnya

New logger nya sekali

Tapi, maksudnya di selalu

Ke function lain, atau ke halaman

Halaman lain

Logger nya itu udah dipas sebagai objek

Oh, logger nya mau apa aja

Bisa ya, mau pakai

Jadi di dalam misalnya

Error atau warning, cuma

Logger, langsung dipanggil aja

Logger dalam kurung apa

Kalau

Lebih, ini lagi

Karena konsep dependency injection

Udah lama banget kan

Contohnya driver aja

Driver USB

Driver printer

Itu, misalnya gini

Kita ada command menuju printer

Printer nya bisa

Epson, bisa Canon, bisa yang lain-lain

Tapi, si driver itu kan

Ada driver bawaannya

Untuk bisa bicara

Ke operating system

Yang generic ya

Operating system taunya print

Hanya print command

Print command itu

Dia mengirimkan datanya sesuai dengan

Universal cara mereka

Mengirim data, nanti si driver lah

Menenjemahkan menjadi

Bahasa di printer nya mereka

Karena masing-masing printer punya

Standard masing-masing

Bisa monitor

Keyboard, mouse

Itu interface nya sama ya

Betul

Semaja ada universal serial bus

Atau USB, semua interface nya sama

Tapi belakangnya

Cara berkomunikasi nya bisa berbeda-beda

Ngomong-ngomong soal gitu, maksudnya

MCP itu juga sebenernya mengikuti

Itu juga ya, tapi bukan dependensi

Model context protocol

Supaya punya

Si AI kan dulu kan

Kalau si

Sejarahnya sedikit

AI yang pertama kali bisa

Functional calling

Open AI

Bisa functional calling

Jadi kita bisa tanya

What is the weather today?

Kalau yang belum tahu function calling itu istilah lainnya

Tool calling

Sama aja istilah yang sama

Kalau sekarang jaman ya

Agent

Kalau tahun lalu

Cepet banget ya

Kalau tahun lalu kan function calling ya

Kita tanya sekali

What is the weather in Bekasi?

Ada function khusus

Get weather itu ya kan

Ada prosesnya sendiri dia

Membaca variable

Misalnya

Key, weather service

Terus ada objeknya yang kita tanyakan

Mata uang

Nilai tukar

Currency ya

Lalu kan

Karena masing-masing AI itu

Jemenai

Ikut-ikutan, antropik, ikut-ikutan

Punya standar masing-masing

Jadi function calling itu

Jadi susah

Baru si antropik

Introduce

Model context protocol

Dimana

Meseragamkan

Si

AI ini cara berkomunikasi

Sebenernya itu kayak

Standard sih ya

Standard cara berkomunikasi untuk

Ke service yang lain

Sehingga si service-service yang lain

Kayak Figma

Atau Github

Atau apapun lah ya

Bisa membuat

Function-function-function yang mereka siapin

Terus dikasih

Itu toolsnya di expose kan

Berarti function-functionnya itu

Di expose ke

MCP service itu

Betul, jadilah sebuah MCP service

Dimana service itu

Bisa ada ini loh

Service nya Github itu

AI itu bisa manggil A, B, C

B, E, F, G, F

Jadi waktu kita sambungkan MCP server

Kita ke si

AI kita yang

Kita pakai AI client

AI client yang kita pakai

Dia bisa connect tuh

Ke Github, dia baca oh ini service yang ada

Terus balik dan dia bisa

Oke kalau mau fetch

Bati manggil

Function fetch yang disana

Lalu kalau misalnya mau create PR

Bati panggil create PR disana

Argumennya apa

Nanti dia isi argumennya

Bisa create PR

Sehingga terjadi yang namanya

Kalau itu di chaining

Prosesnya di chaining-chaining-chaining

Jadilah yang namanya agent

Yaitu kan berarti si

AI client kita

Di konteks ini kan berarti AI coding assistant

Kan dia internally juga sudah

Punya tools kan dia bisa

Membaca isi file project

Kita ya bisa baca

Dan bisa menulis kan bisa edit

Bisa ubah bisa jalanin

Terminal command berarti kan

Misalnya kita bikin perintah

Apalah benerin kode ini lalu

Langsung buatin pull request nya

Nah dia kan berarti punya tools internal

Dia jalanin tools internal

Yang emang udah available dia tahu

Maksudnya si

LLM-nya berarti tahu kan

Oh berarti harus edit file ini-ini-ini

Harus dibetulin, harus diubah kodenya

Jadi ini-ini, terus bisa jalanin

Terminal command kan

Git add file itu

Git commit

Sekian, terus dia bisa

Bikin summary-nya

Nah terus kalau dia udah di-connect

Ke MCP server kayak yang

Ivan jelasin tadi berarti kan

Si AI client-nya tahu bahwa

Terus tools lain nih selain tools internal

Yang dia punya kan berarti

Bisa bikin pull request dan lain-lain

Berarti yang

Di expose adalah

List of tools

Terus apa

Yang tools itu lakukan sama

Kemampuan untuk memanggil menjalankan

Tools itu ya

Dari si AI client yang connect ke

MCP server

Iya, kurang lebih kayak gitu sih

Betul

Kenapa nggak

Dia nggak pake RSCPA aja

Pake JSON gitu

Kenapa harus bikin protokol baru

Nggak tahu

Sulit kali ya

Karena masing-masing provider punya

Apa, cara manggil tools-nya lain-lain

Mungkin ya, agak ribet

Nggak tahu kenapanya

Kapan-kapan kita connect

Dan siapalah Yohan atau Esther

Yang ngerti beginian

Kita seling tanya maka nggak ada yang tahu

Maksudnya kalau udah kenapanya ya

Kan kita paham

Itu kan ada level of understanding

Kita pertama harus tahu what itu apa

Terus kayak

How does it work, cara kerjanya

Kita ngertilah tipis-tipis yang kayak tadi

Udah kita bisa pakai

Tapi kalau kayak why gitu

Kan itu ada 2 alternatif

Kenapa nggak ini, kenapa ini, kelebihan apa

Kan butuh

Mahaman yang lebih mendalam lagi

Iya

Wah, abu lucu ketemu

Eka ya

Mas sempetnya apa, kenapa

Siapa disini aja

Sibuk ya, sibuk

Eka masih

Terus loh

Nah, ini

Pada pakai

Semacam apa

AI yang di terminal nggak sih

Ivan kayaknya pakai ini ya

Pakai warp ya

Terminal warp itu mereka mau

Pivot kan ya

Ke arah AI agentik ya

AI terminal apa

AI CLI

Tapi ya kalau mau pakai sebagai terminal

Relatif biasa nggak terlalu itu

Nggak terlalu pakai, jadi saya pakai

Si warp ini

Murni hanya terminal biasa

Saya sukanya kenapa

Biarah

Nggak sih

Saya suka warp itu cuma satu

Karena

Text-nya bisa diselek ya

Enak banget

Enak banget UX-nya

Enak banget

That's it

Comment-nya jadi text box

Jadi bisa dipindah-pindah, bisa diselek

Terus gampang bisa copy command, copy output

Wah, enak banget UX-nya

Saya nggak pakai warp

Gara-gara

Mau pakai terminal kok harus login

Nggak mau ah

Ini bisa risiko

Ketergantungan juga sih

Balik ke konteks dependensi tadi

Tapi ya udahlah

Tiba-tiba

Free tiernya dihapus

Ya udah pindah ke

Yang lain, oh my CSH

Plus Gemini CLI

Kulanya

Saya pakai tools

Saya tidak setia tools

Jadi dependensinya itu

Tidak terlalu tinggi terhadap tools

Oh, harus pakai dependensi injection

Saya setia

Setia harga

Kalau free, lanjut

Iya

Warp sampai sekarang masih free

Kalau misalnya bayar, gue nggak mau sih subscribe

Maksudnya kalau free-nya dihapus ya

Oh ya, ada dua alasan

Kenapa saya tidak menggunakan warp

Pertama karena login

Yang kedua karena nggak support TMAX

Karena saya pengguna TMAX, jadi nggak bisa

Apa sih bedanya sih

Hampir sekarang nggak ngerti

TMAX, bedanya

Iya

TMAX itu kayak

Terminal-dalam terminal

Terminal-dalam terminal

Contohnya

Kalau dulu

Pernah ngalamin

Kita mau deploy

Aplikasi SSH ke server

Terus kan itu

Running process kan, nggak di background

Kalau kita mau keluar dari

Server SSH gimana

Kalau kita disconnect kan server-nya mati

Karena kan process-nya running

Pernah nggak

Jalanin dalam screen

Screen, ya itu

TMAX itu adalah screen yang

Modern

Oh gitu, berarti TMAX itu

Screen yang mau jalan

Iya

Saya masih pengguna

Screen all the way

Kayak image magic itu lho

Command line magic itu

Buat nge-cropping gambar kan

Command-nya ribet ya

Dulu harus

Googling image magic

Kalau cropped di kiri, cropped di kanan

Proportional

Atau kita mau cropped dengan aspek

Rasio tertentu dari tengah

Kan cape itu command-nya

Sekarang ketik pakai natural language

Crop 400x300

Width-nya 100%

Dari tengah

Udah dikasih command image magic-nya

Yang gitu-gitulah

Pokoknya sekarang jadi nggak perlu

Ngapalin command line

Command lagi

Iya, pakai bahasa manusia

Bisa ya

Enak ya

Demo TMAX

Ini TMAX kan

Kalau mau

Ke screen sebelumnya

Previous gitu

Bisa kesini

Previous, next

Kalau mau split

Mau ganti posisi

Bisa, mau split kiri ke kanan

Bisa, kalau disini pakai Vim

Vim di kiri, di kanan

Tes misalkan

Enak kan

Work tab juga sudah bisa

Bisa pakai tab, bisa pakai split juga

Bisa kan tiba-tiba

Ketutup, terus buka lagi

Masih ada

Balik lagi

Mau fokus

Zoom

Kalau mau balik lagi tinggal ke kanan

Jadi lebih

Lebih seru

Jadi terminal di dalam terminal

Kita bisa buka terminal di

Layar ini, nggak perlu pakai tab

Kalau pakai tab ya bisa

Tapi

Tergantung orang

Kembali lagi

Apalagi kalau pakai Vim

Lebih cocok kan

Kalau pengguna Vim lebih cocok

Sama aja

Kayak pengguna VS Code

Pake terminalnya di VS Code

Atau terminal tersendiri

Ada yang

Pake terminal sendiri, suka pakai

Terminal sendiri sudah terbiasa kan

Ada yang

Bahkan mau

Apa generate project baru pun

Buka VS Code dulu, buka terminal

Laravel generate something

Artisan generate something, abis itu dia

Code titik disitu

Baru kebuka lagi VS Code nya yang baru

Ada, kan yang kayak gitu juga ada

Tapi generate nya ini folder beda

Folder baru

Iya, misalkan pakai kursor

Jadi

Mana kursornya

Anggaplah ya

Ini ya

Terminal

Terus saya bikin

Folder baru

New project

Terus cd

New project

Terus abis itu npm init

Terus abis itu

Baru kursor

Titik

Buka baru lagi, ada yang kayak gitu

Karena dia udah hidupnya

Di VS Code

Jadi terminalnya pun terminal VS Code semua

Pakainya

Anyway

Masih-masih orang aja

Pulau gaduh

Soundboard dong

Apa soundboard nya

Soundboard nya

Ya wakwaw lah

Satu lagi bentar, warp yang underrated

Itu comment historinya

Ada semua

Jadi kalau tadi itu bahas kayak apa

Laravel create project

Atau apapun ya

Oh historinya, iya

Kita sering bikin

Kita pernah bikin

Pnpm create, astro

Sama ada flag-flag nya itu

Flag nya, template nya apa, typespeed nya

Strik atau enggak, ya ada lain-lain

Atau Laravel atau apapun

Itu udah ada semua, jadi cuma ketik

Pnpm create, langsung

Keluar ke atas, panah-panah aja

Maksudnya dibikin

Di folder nya lain, yaudah ganti aja folder nya

Di VS juga kayak gitu kan

Oh ya

Iya

VS Shell atau ZSH

Kayaknya udah begitu deh yang sekarang

Sebelumnya pakai ZSH

ZSH tuh belum

Nggak tau, nggak muncul

Nggak kan gini kan, contohnya misalkan

Saya biasa pakai mix phx

phx.new

gitu kan, terus panah atas

panah atas, panah atas, gitu kan

Ini udah default

phish

Atau

npm create

Gitu kan

Sama kan

Sama

Kalau apa

Komen di suatu project nih

Kita udah di holder project

Npm atau pnpm

Atau apalah package manager yang dipakai

Spasi, tab, itu udah

Baca package JSON kita

Komennya apa aja

Oh, iya iya iya, ngerti-ngerti

Nggak perlu npm run lagi ya

Ya, apa

Tetep diketik, tapi kayak

Kan misalnya kadang ada project yang

Kadang ada yang misalnya

Komennya prod, kadang ada yang komennya build

Itu autocompletenya

Udah otomatis baca

Dari package JSON kita

Terus kalau git checkout

Gco lah, pakai

Singkatan Gco

Tinggal tab, daftar branch

Yang ada disitu, langsung muncul

Nggak usah ntik

Jadi kayak salesnya warp

Yang dibayar kaga

Pakai warpnya juga gratisan

Kayaknya kita udah melenceng kemana-mana

Ini kayaknya kita perlu

Bahas tentang

Kita perlu bahas tentang automation tools

Atau tools buat developer

Terminal, editor

Apa lagi ya, banyak ya

Voting aja lah biar rakyat menentukan

Kita kan demokratis

Iya, kita mau bahas apa

Buat minggu depan

Stack, stack atau tools

Stack dan tools apa ya

Bukan, stack yang kita pakai itu ngapain

Stack dan tools

Oke

Bahas apa nih

Stack dan tools sehari-hari ya

Stack dan tools sehari-hari ya

Tapi kalau ini serunya

Yang widget, yang nonton kudu banyak

Biar ada bahan ya

Biar maksudnya pada

Ngetik juga pakai apa

Kalau kita bertiga pamer stack

Selain garing, cepet turun

Stack dan tools

Yang digunakan

Sehari-hari

Oke

Waduh cilaka halftime

0-1 kita

Menang

Iya bilang cilakaman 0-1

Iya kalah

Oke

Topik buat minggu depan

Ada ide, ada ide

Kita ngambil apa minggu depan, minggu depan tanggal

Kita harus rekaman juga loh

Iya harus rekaman

Iya nanti dipikir nanti

Minggu depan

Tanggal 5 Agustus

Masih available kan

Masih

Masih

Defennya bagus Vietnam, kirain lagi bahas

Defensive CSS

Kalau dilihat dari stats

Emang iya sih kita posesinya

Lebih tinggi, posesinya

Lebih tinggi, otomatis posesinya lebih tinggi ya

Terus kayaknya shots on targetnya lebih banyak

Tau-tau kalah, nolsa

Dokumentasi

Dokumentasi boleh?

Belum

Dokumentasi

Kita voting nih ya

Bikin voting dulu ya

Jangan terlalu

Ditator ya, ditatornya sekali-sekali

Aja

Kemarin udah diktator, sekarang kita demokrasi

Demokrasi

Poling

Topik

Minggu depan

Alat

Dokumentasi

Ini kayaknya udah berapa kali nih

Kalah melulu

Terus dokumentasi gak laku

Apa lagi ya

Ini ada apa sih, lucu

Fanmade game pake react dan note

Fanmade game pake react dan note

Fanmade game pake react dan note

Oh iya

Ada yang nge-post

Mas

Reifu

Game Yu-Gi-Oh

Game multiplayer

Dan tidak harus pake .net

Maksudnya

Kita coba liat ya

C#

Oh maksudnya

Kita gak perlu install .net gitu ya

Offline

Ini siapa yang bikin

Yu-Gi-Oh master

Siapa ini Yu-Gi-Oh master

Bukan orang Indonesia pasti ya

Pasti, mungkin ya

Sama apa nih

Beda framework LitoJS

Oh

Kalau beda framework itu

Jadi ada

Iya

Ada, ya maksudnya kenal

Di twitter sama yang bikin

Penasaran dia kenapa alasannya

Bikin framework gitu

Cuman kan harus ngajakin orangnya

Nah itu harus

Ya

Ini agak sulit

Kita pakai

Apa

CSS unit

Atau mau beda framework

Tan start

Tan stack

Star

Udah ya

Yang start

Yang ten stack udah

Ten stack universe ya

Ten stack universe

Ten stack universe kita udah pernah

Kalau web framework

Ten stack start

Nah ini

Beda framework

Ten stack start

Kalau saya tidak berhasil

Meyakinkan Mas Indah untuk gabung ya

Oh ya

Kalau berhasil kita bahas yang

Lito tadi ya

Kenasaran saya kenapa

Beliau mau bikin framework sendiri

Tapi seru kan

Iya maksudnya

Ada framework buatan orang Indonesia

Iya ini kayaknya yang

Dia bikin dari

Basenya itu deh

Alicia kayaknya

Kayaknya ya

Kita lihat saja

Oh bikin ORM sendiri

Tapi masih coming soon

Wah seru

Siapa tau bisa dispill sedikit

Kalau bersedia

Jadi pimpang kamu

Kita lihat BUN

Listen

BUN

Oh enggak

Kira ini pakai Alicia enggak ya

Berarti ya

Ada JS Lito

Ini kayak dari light gitu kali ya

Light atau Lito

Maksudnya lightweight mungkin

Nah ini desaran

Container CSS dan if else

Semuanya fitur-fitur CSS baru

Oh iya

Sudah

View transition udah bagus belum sih

Sudah bisa

View transition yang level 1

Yang same page udah masuk

Interop jadi cerah lah masa depannya

Kalo yang level 2

Cross document

Masih baru chrome doang

Yang lain belum

Tapi sudah bisa chrome nya udah bisa

Bisa

Oh maulah itu kita belajar itu

Container CSS

Bentar pertanyaannya apa tadi

Maksudnya prakteknya

Cara penggunaannya

Tapi didemokan gitu

Nggak cuma teorinya doang

Kan kayaknya dulu container CSS

Sudah pernah dibahas sekilas ya

Ini ngomongin container apa

Ngomongin transition sih

View transition sih

Sorry

Sebelumnya bahas

Nggak tadi

Nggak tadi Usul bahas

Fitur CSS baru tahun ini

Terus abis itu

Ikut tanya soal view transition

Terus ya udah abis itu

Di bahas view transition

Tapi terserah sih

Nah biar tambah bingung

Ini ada topik nyempil nih

Testing dengan playwright

Kayaknya selalu

Didefer terus dari tahun lalu

Kita udah lama nggak bahas

BHVR stack itu apa

BHVR

Gak tau sisanya

Virtual reality

View

View

Remix

Remix

Jadi gimana tadi yang nyempil

Playwright

Habis ini ya

Wah 50-50

Yah imbang nih

50-50

Satu lagi dong

Eh

Jadi tiebreaker

Tiebreaker

Loh lempar coin

Demo biar

Kebayang masak UI

Tidak display demo

Masa UI nggak display demo

Demo biar kebayang

Masa UI nggak display demo

Oh iya

Masa UI nggak display demo

Kalau AI kalimatnya nggak jelas

Nanti hasilnya juga ngeko

Itu bahaya

Iya kayak container

Terus apa view transition

Terus juga udah bisa

If else gitu kan sebenarnya

Banyak ya, tapi kan kita selama ini

Kan ngeliat-liat contoh demo

Sama teorinya kan

Kalau ada

Kita belum punya sih ya

Kayak website khusus buat demo

Mendemokan semua

Apa namanya

Fitur-fitur terbaru

Dari CSS atau Javascript

Atau browser dan lain-lain ya

Nanti kita undang mas itu gimana

Yang

Nerdedev

Diundang lagi

Diundang lagi

Udah susah

Sekarang

Udah nggak tahu emailnya

Nggak tahu emailnya

Ya ditunggu

Ditunggu aja

Paling beberapa saat lagi

Dia di rekrut sama siapa

Pasti jadi CSS Evangelist lagi

Kali di rekrut Microsoft misalnya

Atau Shopify atau apa

Kenapa dia nggak masuk ke Microsoft ya

Microsoft juga abis lay off kemarin kan

Iya

Belum dia kerja di mana-mana ya

Nerdedev ya

Nggak tahu

Belum ada info lagi sih

Nggak go public kali ya

Bisa jadi konsultan atau apa

Yang kapasitasnya tapi individu

Nggak masuk big company

Udah

Pollingnya

70% menang

Framework

Senang ya beda-beda frameworknya

Karena seru

Pokoknya

Kita beda framework antara dua ya

Frameworknya ya

Kalau bisa lito kita bahas lito

Kalau nggak kita bahas 10 stack

Oke

Cukup-cukup

Oh iya

Yang di Jakarta

Dan sekitarnya hari Sabtu

Jangan lupa datang nonton Ivan

Kita rame-rame mendukung Ivan

Sama Warad ya

Oh Warad datang ya

Warad datang

Di bandara O-I

O-I

Nanti Ivan mau demo

O-I mau demo E-I

A-I

O-I demo A-I

Keren ya

Jadi tag lagi

O-I demo A-I

Oh itu jadi judul aja

Judul stack pertama gitu ya

O-I demo I

What we make so sweet

Oke

Oke

Cukup ya

Kalau gitu kita ketemu lagi minggu depan

Biar lebih konsen ya

Mendukung Indonesia

Mudah-mudahan Indonesia bisa mengejar ketertinggalan

Jadi kita udah dulu

Terima kasih buat semuanya

Kita ketemu lagi minggu depan

Dengan topik yang berbeda

Udah itu dia

Udah bukan penyanyi kecil lagi

Messi

Itu yang

Penontonnya gak ada yang tahu semua

Yakin gue

Yang 90 belum lahir

Gue masih

Masih kebayang lagunya gitu

Ciluk gue

Ivan langsung disconnect dia

Gue gak tahu

Gue sebelum banget

Annoying makinnya

Nah dulu ya

Ada-ada yang ngomong

Sekarang kan kalo gak suka tinggal ganti aja ya

Youtube channel gak suka

Atau Netflix atau apa tinggal ganti

Belum gak bisa

Belum misalnya RCTI nayangin acara

Lagu anak-anak yang lagunya gak suka

Yang gak ada yang lain

Oke

Sampai ketemu

Minggu depan bye

Bye

Yang kalian melihat untuk membandingkan kembali dengan lainnya?

Jika Anda mencari tahu

Mengenai layanan web hosting terbaik

Kami pastikan Anda berada di tempat yang tepat

Dengan Dominesia

Dapatkan pengalaman

Menggunakan layanan hosting yang lebih baik

Dengan SSD berperforma tinggi

Dalam infrastruktur cloud yang telah dioptimalkan

Untuk kebutuhan personal maupun bisnis

Teknologi ini

Memungkinkan Anda memperoleh layanan

Yang lebih stabil serta proteksi dari korupsi data

Hosting Dominesia

Juga telah mendukung Node.js

Python, Ruby, Go, PHP

Java, serta binary Linux

Lebih dari 200.000 pelanggan

Telah mempercayakan layanan hosting

Di Dominesia

Kepercayaan yang kami jaga

Dengan garansi uptime 99.9%

Serta garansi uang kembali 100%

Buat website Anda lebih mendingin

Segera berat

Deskripsi asli dari YouTube

πŸ—£οΈπŸ•ΈοΈ Selasa malam waktunya #ngobrolinWEB! Malam ini waktunya ngulik fundamental membahas konsep Dependency Injection. Ayo bergabung bersama Ivan dan Eka di sesi malam nanti. πŸ”” Yuk mari ramaikan! Dimulai pukul 20:00WIB ya... 🏷 Gunakan kode NGOBROLINWEBDN dan dapatkan DISKON 10% Untuk Pembelian Web Hosting DomaiNesia: Beli Web Hosting DomaiNesia disini: https://my.domainesia.com/ref.php?u=25754 🎁 DISKON 50% Cloud VPS Turbo dengan Kode Promo: NGOBROLINVPSDN Beli Web Hosting DomaiNesia dis Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .