Lompat ke konten utama
EP 132

Bedah Situs

Ringkasan Episode

Bantu Koreksi

Episode ini merupakan sesi bedah situs yang pertama kali mendapatkan partisipasi dari penonton. Website yang dibedah adalah undangan pernikahan digital yang dibuat oleh Mas Grafis menggunakan Next.js 13 dengan Contentful sebagai headless CMS. Diskusi dimulai dengan pembahasan tentang pentingnya signed commit (GPG signing) untuk keamanan dan mencegah impersonasi di GitHub. Selanjutnya dilakukan analisis performa dan accessibility terhadap website tersebut. Beberapa masalah yang diidentifikasi meliputi auto-playing audio tanpa konsentrasi user, kontras warna yang kurang, navigasi carousel yang tidak ramah accessibility, serta bundle size yang cukup besar sekitar 4.1 MB terutama karena gambar. Episode juga membahas berbagai tools untuk mengecek accessibility seperti color contrast checker extension dan Chrome DevTools.

Poin-poin Utama

  • β€’Signed commit (GPG signing) penting untuk keamanan dan mencegah impersonasi - commit yang verified memiliki centang hijau di GitHub
  • β€’Website undangan pernikahan menggunakan Next.js 13 dengan Contentful sebagai headless CMS untuk konten yang dinamis
  • β€’Analisis performa menunjukkan bundle size sekitar 4,1 MB dengan gambar sebagai kontributor terbesar penggunaan bandwidth
  • β€’Masalah accessibility utama: auto-playing audio tanpa user consent dapat mengganggu dan tidak ramah untuk pengguna
  • β€’Kontras warna yang kurang pada beberapa elemen seperti tombol navigasi menyulitkan pengguna untuk melihat interface
  • β€’Navigasi carousel tidak mendukung keyboard navigation dan tidak memiliki focus management yang baik
  • β€’Tools yang direkomendasikan: Color Contrast Checker extension untuk Chrome dan fitur bawaan Chrome DevTools untuk analisis accessibility
  • β€’Tips penting: jangan commit file .env ke repository publik untuk keamanan credentials
  • β€’Web development memiliki entry barrier yang lebih rendah dibanding app development dalam hal kebutuhan hardware

[Music]

Dapatkan hanya di Domestika

[Music]

[Music]

Halo, selamat malam. Selamat malam.

Asik ya. Selasa malam waktunya

ngobrolin web. Ngobrolin web.

Kirain selasa malam waktunya Timnas.

Banyak yang usuh, gara-gara dibantai, gak apa-apa ya.

Kita hibur. Yang penting lolos.

Yang penting lolos. Iya. Beda kelas, beda kelas.

Ternyata nanti di Bapak Penyisihan ketemu lagi sama Jepang.

Nggak mungkin lah.

Dia kan di atas kan?

Biasanya di seber sih kayak yang Asia, apa?

Kayak gomor-gomor.

Gomor-gomor kan?

Iya, tapi kan kayaknya ada pot-potnya gitu loh.

Gak bakal ketemu satu grup lagi.

Iya, ketemunya sama yang lebih jago daripada Jepang.

Kalaupun masuknya ya.

Sekian kesinkan masuknya lagi dia, ya pasti langsung pulang.

Itu di Domestika.

Eh, send sponsor dulu dong.

Sorry ya.

Lupa, belum buka ini.

Belum buka topik.

Oke, episode malam ini masih disponsori oleh Domestika.

Ya, jadi kita kolaborasi dengan Domestika untuk beberapa episode kemarin dan beberapa episode mendatang.

Jadi kalau buat teman-teman yang mau beli hosting, hostingnya udah canggih loh.

Lihat transkrip lengkap (2216 segmen lagi)

Kalau jaman dulu kan hosting cuma bisa terbatas lah ya. Cuma bisa poll, cuma bisa php, ngas equal gitu kan.

Sekarang kayaknya hampir semua bahasa udah di dukun ya.

Not.js bisa, go lang.

Not.js bisa, go, bisa.

Rush juga bisa.

Jadi kalau mau nyobain boleh pakai promo code ngobrolinwebdn.

Dn itu dominisia.

Itu ada di bawah.

Nanti dapet diskon.

Diskon 10%.

Semua paket web hosting, diskonnya berlaku untuk seiklus 1 atau 2 tahun untuk pembelian pertama.

Jadi terima kasih banyak buat dominisia yang sudah mendukung acara kita ini.

Oke.

Malam hari ini kita akan kembali membedah situs.

Bedah situs.

Terakhir kan pancingan ya.

Situs pancingan.

Sekarang beneran.

Ternyata ada yang submit.

Dari mas IM Gdev.

Gdev itu apa ya?

Google Dev.

Google Developer.

Awalnya mau submit website yang dibuat kantor tapi takutnya nggak boleh.

Terus ada website yang dia buat untuk temannya juga ternyata nggak bisa diakses gara-gara.

Apa?

Domainnya nggak diperpanjang.

Padahal bisa dikasih source code-nya aja ya.

Source code-nya boleh nggak ya?

Nggak boleh kali ya.

Akhirnya disapit ulang.

Sapit ulang website undangan ya. Kayaknya ya website pernikahan tapi kode-nya 3 tahun yang lalu.

Ada ini juga nih.

Tapi kayaknya belinya salah ya.

Ada source code-nya juga nih.

Nanti kita bongkar-bongkala ya.

Loh.

Salah ya.

Oh ada ini-nya.

Nah ini dia.

Bacanya gimana nih?

Fendangan.

Fendangan.

Biar EG. Sekarang kan U itu jadi V.

Biar KPI metal.

Ini tampilannya.

Oh ada musiknya.

Nggak denger ya musiknya?

Langsung bunyi kan. Langsung autoplay.

Denger ya?

Dengar nggak?

Enggak kan? Karena nggak share tab ya.

Ini kita bisa tebak lagu apa.

Tapi harus di-share ulang ya bentar ya.

Ada tulisannya.

Share-nya harus pakai itu.

Share tab.

Gimana dia?

Nah ini ada suaranya kan.

Ini ada apa nih?

Begitu ke kanan atas itu loh.

Karena atas kan udah ada dulu nih.

Karena atas itu yang ada buat kemudahan tuh.

Oh ini.

Oh.

Keren juga.

Pakai apa ya? MP4 ya?

Atau MP3?

MP3.

Itu kan ada source code-nya.

MIDI.

Coba lagi. Penasaran.

Oke.

Mana media?

Apa nih? MP3.

Oh nggak kelihatan ya.

Nggak kelihatan ya.

Berarti present-nya diulang lagi.

Sekarang balik lagi ke full screen.

Cuma mau dengerin suara doang.

Nah.

Nih MP3.

Minang.

Tuh udah kelihatan udah ketahuan juga kan judulnya.

Dari judul.

Ternyata ini adat Minang.

Ini 3 tahun yang lalu.

Oh 2002. Dikitnya 2022.

Oh 2023.

Oke.

Namanya Grafis.

Iya itu nama orang ya.

Pasti developer.

Bukan desainer. Grafis.

Desain grafis.

Ntar ada yang ngasih nama anaknya.

Figma.

Oh Figma.

Oke.

Jadi malam ini kita akan

membedah situs ini.

Jadi ini adalah situs landing page kali ya.

Tadi ada

depannya itu.

Ini kita bisa masukin nama ya.

Nama dan keluarga.

Oh iya bisa.

Enggak ya tulis nama.

Tulis nama Eka.

Tulis nama keluarga bisa

ngobrolin web.

Oh iya.

Oh musiknya bisa di index lagi.

Ini gak copyright ya.

Ada itu.

Can help falling in love.

Apa lagi?

Oh cuma 2.

Cuma 2.

Oke.

Tadi udah dimasukin nama. Terus ada

keterangannya.

Ketika nya kapan.

Oh ini fontnya lucu juga ya. Menarik ya.

Ini sama ini fontnya sama.

Ini standar.

Ini gimana tadi?

Mobile.

Kalau mobile fotonya ilang.

Kasian. Yang kiri tuh pasti udah

capai-capai foto pre-wet kan.

Pasti itu fotonya lama

ribut.

Oh yang sebelah kiri ya.

Ya yang kiri.

Itu yang bunga.

Bunga itu bisa kembang pempis.

Pake jeep.

Itu bunganya gitu-gitu.

Iya kayak ada animasinya tuh.

Ini bukannya pakai CSS bisa ya?

Bisa lah.

Gak tau ini pakai apa coba.

Bukannya opacity.

Apa ini?

Kok gak ke select ya?

Deep ya. Di dalam deep berarti ya?

Di sini.

Background ya.

Ini opacity nya tuh jalan tuh.

Pake JS.

Di edit opacity nya berubah-ubah gitu.

Bukan pakai animate.

Bukan pakai animate. Pake JS ya.

Berarti image, background,

terus opacity nya yang dimainin pakai

JavaScript ya.

Oke.

Terus kalau kita pencet next itu

kita dikasih

2 acara karena ada

karnika dan resepsi.

Jadi di sini ada petanya.

Petanya gak bisa diklik kanan ya.

Kalau diklik buka modal.

Ya, buka modal.

Di Riau.

Wuh, bunyi lagi.

Butuh modal.

Terus kalau ingatkan

saya masuk ke Google Calendar.

Boleh calendar nya masih aja?

Jangan.

Ga ada yang rahasia juga sih.

Ternyata ketemu dengan

Presiden, ketemu dengan...

Tenggak.

Bayar tagihan,

bayar ini.

Isi tokan listrik ya.

Itu isi listrik.

Oke.

Ini...

Ini...

Indonesia langsung lupa

calendar event nya.

Kemungkinan besar menggunakan

nest.js. Bener gak?

Ya, iya.

Itu ada nest.config.js.

Next config itu isinya apa sih?

Iya, config buat nest.js.

Masih webpack.

Ya, masih ya.

Iya, belum...

Kalau sekarang udah...

Udah turbo pack atau masih

bisa milih?

Atau harus pakai...

Sekarang by default kayak si turbo pack.

Udah by default ya?

Iya. Udah bukan

experimental.

Ini yang menarik nih CSSnya.

Kalau misalnya

masih ada

field webpack di config

sih gak ditimpa.

Tetep pakai webpack.

Cuma kalau baru by default udah pakai

turbo pack.

Oke.

Wait sebentar.

Yang subnet kan

must

gdf nih.

Tapi yang punya projectnya

mas graphis.

Tapi fotonya sama.

Ini projectnya punya

gdf.

Tapi yang commit

mas graphis.

Eh, sama ya?

Orangnya sama.

Akunnya 2.

Oh ini...

Coba...

Coba lihat commit.

Ada 2 akun.

Dua akun, oke.

Ini ada 2. Orangnya sama, fotonya sama.

Itu sama-sama mas graphis itu.

Akan iya namanya graphis, tapi jadi

webdev kan.

Jalan-jalan punya adik namanya

webdev, jadi graphis designer.

Selamat malam.

Siapa nih?

Kizois.

Gak, gak pakai keyframe ternyata.

Pakai JavaScript.

Aldebaran.

Next config islin matiin

biar production gak gagal build.

Oh, biasanya

bikin gagal build gitu.

Kenapa? Kenapa

harus dimatiin? Karena ini ya

masih pakai

yang require-require gini ya.

Masih gadul ya.

Nggak apa-apa kalau JS sih.

Nggak ngaruh kan?

Gak tau.

Di dunia virtual kadang-kadang

ada masalah-masalah mistis.

Mau complain sedikit.

Kalau mereka

ke GitHub-nya,

buka di tab baru,

di tab baru.

Gak pergi ke

commit semuanya,

commit apa lagi ya.

Hal pertama yang saya comment

di sini adalah

commitnya kita menggunakan

conventional.

Sentang hijau.

Gak sign.

Kirain commit message-nya.

Oh, sign commit.

Itu penting sekali.

Sign commit.

Oh, yang kayak ini ya?

Yang kayak kemarin itu ya? Harus di

approve ya?

GPG key atau

SSH

juga bisa.

Bukannya itu automatis ya?

Gue malah nggak nyander.

Gimana cara setting-nya?

Ini baru gue mau kasih.

GitHub sign commit.

Gak mesti GitHub juga.

Semuanya bisa git.

Semua git.

Bukan semua lain.

Semua git.

Semua git hosting-nya.

Oh, pakai global. Pantesan.

Mau pakai patch juga bisa.

Harus designnya.

Kalau udah sekali

di...

Sekali enable.

Dan abis itu lupa.

Abis itu lupa.

Ini adalah

salah satu

requirement dasar.

Kalau misalnya di tempat saya gue kerja.

Semua pekerjaan harus

design.

Iya, iya, iya, iya.

Oke.

Mudah-mudahan mas

grafisnya datang ya.

Nonton gitu maksudnya.

Nah nonton ya itu. Coba di komen

say hi dong. Mana mas grafis, mana mas grafis?

Iya, boleh. Yang punya...

Ya pertama-tama kita ucapkan terima kasih banyak.

Udah berpartisipasi ya.

Jadi kalau teman-teman punya...

Akhirnya dapet pasien juga setelah

berapa... Berapa bulan kita

minta apa? Cari-cari situs yang

muda-muda. - Udah datang malah mas Danang Jufri.

Samburnya.

Nah mas Kay, saya tanya tuh

apa gunanya, apa fungsinya

dengan... - Oh iya, fungsinya

yang ini ya.

Shining Commit ya.

Ya pasti

pertama buat security.

Jadi kalau kalian mau

mencoba

coba bikin

repo-nya sendiri public.

Saya pakai

komputer yang belum pernah sign commit.

Coba bikin aja

gitconfig username sama gitconfig

email-nya orang yang

I don't know.

Kalau kalian tahu emailnya dan Abrahamov. - Impersonate gitu.

Ya, dan

dan pakai emailnya dan Abrahamov gitu

misalnya, post aja commit-nya.

Nanti yang... - Elon Musk @ email.com

Itu nanti yang muncul namanya

username-nya itu dan Abrahamov.

Nah,

kalau sudah muncul commit seperti itu kan bisa jadi

kayak, kalau di luar sana ya

kalau misalnya

somehow seorang

nge-post commit gitu, ngaku-ngaku sebagai

dan Abrahamov, dan Abrahamov bilang

"No, itu bukan saya. Semua

commit dari saya

saya pasti psycho." - Ada cintang

cintang ijunya? - Iya.

Coba aja buka. - Kayak twitter ya

ada cintang ijunya ya? - Iya.

Buka... - Cintang biru.

Coba github-nya siapa lagi tuh?

Github-nya mungkin...

Mas Riza mungkin jadi contoh.

Mas Riza belum cinta. - Bisa dibuka?

Ya, sama. - Emang bisa dibuka?

Eh, emang bisa kelihatan?

Dari mana kelihatannya?

Buka satu repo, yang ada

commit-nya Mas Riza.

Itu cintang hijau itu.

Itu cintang hijau itu.

- Oh, ini C.I.

C.I. ini kan? - Itu, itu G.P.G.

Sine. - C.I.

C.I. - Oh, sorry ya, sorry.

Ke... - C.I.

Ke ini, ke ini.

Ke... - Ke commit.

Verified.

Oh, verified.

- Cintang ijun verified. Klik aja, klik.

Klik verified ya.

Tuh, kelihatan.

C.I. was signed by

verified signature.

G.P.G. ID-nya itu.

And more about vigilant mode.

Vigilant mode? Apa nih vigilant mode?

Ya itulah mencegah

mencegah impersonate.

Siapa gitu.

Ngaku-ngaku Mas Riza

nge-push commit ke

Actifate, bikin PR.

Terus dia approve sama admin.

Hmm.

Ternyata nyolong semua

user. - Iya juga ya.

Karena kita

apa, config

username dan

username dan apa

ya, nama dan email

untuk ke

GitHub, itu nggak perlu password ya.

Jadi kita bisa pakai

nama siapa aja sebenarnya. Dan email

dari mana aja, nggak di-conform

juga kan emailnya ya.

Iya ya, benar juga.

Dah.

Sip.

Halo Wilbert.

Nah Wilbert ini juga ini ya.

Pasti pada kenal ya.

Dari GDG

Surabaya.

Itu pertama

tadi harus

di-sign. Cara sign-nya

adalah dengan config ya.

Config global ya.

G.P.G. sign. Ini langsung aja

jalan ini udah selesai gitu.

Harus, harus generate G.P.G.

juga. - Harus, harus di-generate dulu kan?

Ada step-nya di sini juga ada.

Oh ini, ini.

Iya.

Itu generate ya G.P.G. key

nanti dimasukin ke

GitHubnya. - Oh ini verified.

Dari tadi dilihat di sini aja ya harusnya ya.

Tapi generate

G.P.G. key-nya nggak ada di sini ya?

Oh ini ya. - Ada-ada nanti di bawah.

Di bawah kan ada. - Di bawah?

Ini? - Atas, atas, atas

dikit, atas dikit.

Oh generate G.P.G. key.

Generate your G.P.G. key.

Ini kita share dulu lah ya. - Bisa di GitHubnya juga.

Bisa di Rokal.

To you.

Dan bisa SSA side juga

bisa. Nggak perlu SSA G.P.G. key.

Kayak gini ya.

Hampir sama

seperti kita

set up untuk GitHub ya.

Push ya. - Push G.P.G.

Push SSA via SSA.

Kalau misalkan kita mau

apa?

Mau

git clone

kalau pakai SSA kan kita harus

itu dari setting dulu kan.

Kayak gitu ya, kurang lebih ya.

Oke, oke.

Sapa lagi?

Itu yang pertama.

Yang kedua?

Yang mau dibahas?

Ininya?

Coba lihat konfignya.

Apa? Next

atau Package?

Yesan.

Ya, coba lihat. Package-nya apa aja?

Package Yesan.

Dependency.

Ada Turbo Pack tuh?

Dia pakai Dev Turbo. Apa itu Dev Turbo di atas?

Hah?

Itu Dev Turbo. - Oh, yang pakai Turbo.

Jadi kan

masih pakai flag kan.

Iya, jadi Interchangeable dulu.

Masih transisi ya?

Masih dulu pas sebelum dipindah,

kalau pengen nyoba nih, tanpa harus

mengomit, tanpa harus bikin keputusan

dulu, pindah nih

dari WP ke Turbo Pack, coba aja jalan

pakai Turbo.

Ngecek yang jalan apa, yang error apa.

Kalau misalnya semua udah smooth,

ya bisa apa?

Kalau mau switch ke Turbo Pack,

tinggal switch aja.

Browser list

since 2015.

Nggak ketinggalan jauh itu ya, udah 10 tahun.

Browser list

since 2015.

Better di-update

pakai yang 2 major

browser terakhir, atau

non-ID, lebih

sederhana jadinya.

Oh, ini target

kompilasi ya, berarti ya?

Browser yang

2015

atau yang lebih baru ya.

Ini terlalu panjang sih.

Terlalu panjang.

Terlalu lampau.

Ilmu baru, betul.

Saya juga inget sih

setup-nya, tapi nggak inget

ternyata itu fungsinya buat verified itu.

Waktu itu kalau nggak salah, mau submit

sesuatu ke

repo, disaratkan

harus jalanin itu dulu.

Jadi setup-nya juga

karena terpaksa.

Gak boleh.

Kalau saya

harus dari kantor ya.

Jadi preacher soal itu.

Nah, cuma

gue malah

nggak aware soal ini.

Tapi, jadi kalau di

repo pribadi, yang project pribadi,

banyak yang nggak ada centangnya.

Cuma barusan ini barusan banget, jadi

kita cek

di repo

organisasi pribadi, tempat kerja,

centang semua kelihatannya di on-boarding

guide atau whatever, emang

suruh ngejelani comment itu, tapi

di save-nya ke .git

di project-project repo

kerja, jadi by default emang

setiap kapus udah centang.

Kan tadi ada pilihan yang pertama,

kalau nggak pakai flag global, kan

ke save-nya ke .git yang

di hiriku itu.

Per folder, misalnya

folder indoor, semua

project yang di dalam folder itu

pakai .git kerja.

Iya, ponnya

.git kan emang apa?

.git terdekat lah.

.git config.

Oke.

Sebelum lanjut, ini ada ini nih.

Komentar menarik nggak?

Disoise.

"Saya mau pindah ke app dev,

tapi sayang banget butuh spek PC

laptop yang agak tinggi masih

nabung biar eksperimen lagi soalnya baru lulus

SMA." Wah, baru lulus SMA udah

belajar ini ya. Maksudnya mau jadi

web dev.

Natif kali ya maksudnya.

Web dev, ya. "Saya mau pindah

ke app dev." Oh iya.

Kalau app dev memang

butuh

mesin yang lebih

kencang. Kalau web dev

selama masih bisa

berhasil aman.

Ya, bisa di cloud juga kan

bisa kayak pakai

semacam yang online

kayak code sandbox lah

atau dulu sebelum itu ada

IDX ya.

"Keyjoys pindah ke web dev." Nah, lebih

murah. Iya, mendingan web

biar ada. Entry,

better entry-nya lebih murah.

Lebih, ya, lebih

terjangkau.

Ya, lebih terjangkau. Ya, sepunyanya

apalah laptop yang udah ada,

kemungkinan besar ya bisa dipakai.

Nggak bisa jalanin next.js

nggak usah khawatir banyak. Vanilla bisa.

Aman ya.

Kalau next.js mungkin agak berat ya.

Nggak perlu

VS Code. Nggak perlu

VS Code. Nggak perlu pakai FIM.

Belajar FIM ya.

Ringan.

Kalau

kalau app dev mungkin

agak susah pakai FIM ya.

Karena harus

kompilasinya harus pencet tombol

play gitu kan.

Ya banyak lah ya.

Iya, IDX sekarang udah jadi Firebase Studio.

Ganti nama, ganti branding.

Atau di GitHub bisa

pakai Codespaces. GitHub Codespaces.

Tapi ada free tier-nya ya.

Jadi jangan melampaui

perangas aja.

Jangan udah tinggal lagi jalan.

Pastiin. Coupar nolos. Oh nggak.

Dia kalau 5 menit belum aktif, mati sendiri.

Oh dia auto shutdown.

Studen kan?

Ada akun

ada email studen nggak?

Kalau ada kan bisa dapat studen tag ya.

Kalau di GitHub. Oh iya yang kita bahas

kemarin itu.

Bukan, beda. Kalau kemarin itu Google.

Mas Tize juga.

Web dev ringan.

Bisa pakai VPS. Betul.

Bisa pakai VPS.

Coding pakai terminal ya. Kalau mobile

memang agak berat ya.

Jadi ya salah satu kelebihan

nya web dev juga.

Oke lanjut. Ini tadi

browser release-nya kalau bisa yang

lebih baru kali ya. Ngapain kita support

terlalu panjang ya?

2015 berarti

IANA

masih ya. Masih di support ya.

Intinya jadi banyak polyfill kan.

Atau compilingnya

juga jadi kayak ke JS.

JS.

Common JS.

Kalau web dev murah

apakah bisa coding pakai tablet?

Bisa. Pakai handphone juga bisa.

Asal sabar.

Asal sabar aja.

Saya pernah pakai, mencoba

menggunakan tablet.

Pakai termux loh. Codingnya pakai

VIN. Coba, wah ini.

Benar. Bisa.

Saya pernah beneran pakai ini loh.

Jadi kayak server down.

Saya harus ke server

pakai SSH.

Terus saya pakai VIN.

Pakai handphone.

Lagi di mall istri

dan anak lagi main saya. Benarin server

pakai VIN di handphone.

Benarin engine config saya.

Aduh.

Serem.

Disanalah fungsinya apa skillnya

VIN berguna ya.

Untuk SSH ke server.

Nggak bisa tuh buka VS Code.

Kecuali kalau udah install

VS Code server ya.

Di servernya. Mungkin masih bisa.

Oke. Kita lihat

dependensinya ya.

Oh itu pakai konten full tuh CMS-nya.

Konten full.

Itu.

Paling atas.

Oh iya.

Restack HTML

Renderer. Maksudnya ini kan

webnya kan

nggak dinamis kan ya.

Maksudnya

datanya kan nggak perlu berubah

sering-sering kan ya. Kenapa pakai

konten full? Nggak. Cuma kan

mungkin kliennya ya yang nggak input.

Maksudnya kayak blurbnya text-text

yang tentang apalah itu

tentang si apa?

Si klien yang mau

nikah ya mungkin punya admin atau apa

yang buat input.

Oh iya benar.

Konten full tuh enak loh.

Dia layanan headless CMS.

Pernah pakai soalnya.

Tapi ini nggak berbayar sih. Ini

murni pengalaman pribadi.

Maksudnya free tier-nya cukup

generous. Nah terus ya enak lah

user-friendly. Jadi kalau kita

build buat

yang harus datanya

sering-sering diupdate oleh

orang lain yang bukan kita,

bukan developer, itu enak banget.

Ya tinggal login ke

konten full, terus post type-nya juga

macem-macem. Nah itu

headless. Jadi kayak

konten full-nya udah nyediain

SDK untuk berbagai layanan

apa? Berbagai library

termasuk di React

atau JavaScript. Ya udah.

Itu manggil datanya tinggal pakai

si library yang udah

disediain.

Ya Mas, yudah

kita lagi apa?

Lagi membahas tentang

situs yang

disubmit oleh Mas

Grafis namanya.

Mas Grafis. Ada di

GitHub ininya. Diskusinya ada

di GitHub sini. Jadi silahkan

ini bentukannya

kalau mobile, tapi kalau

ini yang

versi full-nya seperti ini.

Tadi kalau baru

mulai masuk tuh ada

masukin nama, terus

ada kayak shock.

Terus ada apa? Oh ada lagi.

Itu navigasi. Ya navigasi.

Berarti ya.

Sama-sama

kalau arrow kiri-kanan.

Ya.

Konten

full, berarti

kontennya di

entry, dia nyediain kayak

back-office gitu ya buat

ngisi kontennya gitu ya?

Tapi itu hosted di konten full-nya.

Jadi nggak pake

infromosi, kita nggak harus mikir

itu hosted di mana.

Oke.

Ini semacam

Netflix, eh Netflix.

Netlify punya juga kan ya?

Netlify juga ada kan ya CMS-nya?

Oh kalau Netlify

bukan.

Agak sedikit beda Netlify itu.

Netlify itu

menarik sih, Netlify CMS.

Jadi Netlify nyediain kayak

front-end-nya, front-end

untuk admin ya, itu dihostingnya

di website, di aplikasi

kita sendiri sebenarnya kalau yang punya

Netlify ya, Netlify CMS.

Cuma dikasih interface, dikasih

front-end, terus setiap kita edit

atau bikin perubahan itu jadi

full request.

Nah maksudnya itu kenyanya Netlify.

Direct push, Strapi, oke.

Direkt. Nah iya.

Saya ingin lihat.

Sekarang itunya banyak ya.

Gatau punya CMS apa ya?

Pernah pakai dulu banget pas kayaknya

belum se...

Oh ini ya, kurang lebih kayak gini ya.

Ada

ada web suite-nya, gitu-gitu ya.

Iya.

Jadi ya tipe

data yang standar lah ya, kalau buat

front-end, misalnya bisa drop-down select,

bisa checkbox,

bisa date, bisa reach text,

itu semua kita bisa customize,

dan terus ya nanti tinggal

panggil aja.

Date bisa. Oh itu kayak

widget gitu ya, drag and drop gitu.

Kayaknya bisa, mungkin ya.

Gimana?

Kayak apa? Drag and drop gitu.

Date.

Content kan, bukan

bikin, bukan

no code platform kan. Ini kayak

no code platform bukan?

Bukan, ini buat CMS,

ini headless CMS.

Oh iya.

Oke, taxonomy, segala macemnya.

Cuma maksudnya

drag and drop itu dalam arti

si admin interface-nya itu loh,

misalnya selain title,

kan mungkin ada custom field

macem-macem, itu mau ditaruh atas atau

ditaruh bawah, kayak WordPress juga ada kan.

Nah, cuma

ini kayak lebih

more style aja.

Si...

Siapa tadi namanya?

Ada sisi admin-nya?

Ada sisi admin-nya, berarti ya?

Itu hosted

di Contentful, loginnya

lewat Contentful.

Kalau nggak salah ya, ini

sekitar 2-3 tahun lalu, pokoknya

terakhir gue pakai Contentful itu

agak lama.

Masih grafisnya

nggak ada sih yang bisa kita tanya-tanya.

Harusnya

kalau ada, bisa kita tanya.

Kita tanya-tanya, apa?

Contentful. Oh, Atlas CMS.

Ini kayaknya beda deh, yang platform ini

kayaknya beda deh.

Kayaknya ya.

Content Platform

Origin

Tradisional.

Oh, ini perbandingan ya.

Adanya di mana kelihatan di sini ya?

Wait, cuma gue nggak lupa sih

apa, punya docks Contentful

yang sesuai

yang dipakai di situ.

Mana ya? Gak tahu, ini ternyata

Contentful produknya udah banyak.

Ya, cuma kalau TLDR-nya

sih gitu, Atlas CMS, ya mirip

Strapi lah.

Oke.

Oke, kita lanjut ya.

Ini pakai Contentful untuk

isinya, untuk kontennya.

Terus,

wah, banyak yang nggak dikenal nih.

Loadable Component, apa ini?

Loadable.

Gak tahu.

Splite.js

Splite itu apa ya?

Kayak slideshow, atau apa ya?

Carousel. Carousel.

Carousel, betul. Carousel, ya.

Yeslin. Yeslin.

Yeslin, bukannya

mendingan taro di dev ya?

Dev dependency.

Ya, sama aja.

Next.js, presi 13.

Next.progress, ini progress bar ya, mungkin ya.

React.

React. React.

Pakai Kapcah.

Kapcahnya buat apa ya?

Buat ngirim komen, itu yang di slide

terakhir. Nah, paling

terakhir.

Oke.

Ini ada duitnya.

Dia ngirimin duit gitu?

Nah, tadi gue

ngecek, nggak bisa itu.

Itu kelihatan mungkin perukup konsep doang ya.

Maksudnya nggak ada integrasi

payment-nya.

Iya. Kirim tanda kasih.

Oh, dari sini ya.

Oh, ini product contentful

yang dipakai, ini yang

CMS ini namanya sekarang

Studio. Studio.

Oh, yang tadi.

Ini kayak

no-code platform, bukan ya?

Kayak kita bisa desain sendiri kayak Wix

gitu, bukan ya?

Tuh, dia bisa drag-and-drop itu.

Kayak gitu, tapi bukan

untuk web, apa?

Bukan untuk client-facing,

user-facing web app-nya.

Untuk CMS

experience-nya.

Untuk nginput datanya.

Oke.

Jadi data-nya nanti semuanya

jadi data-nya nanti sudah

dimarkup, tinggal dia kirimkan

HTML-nya, tinggal kita tampilkan aja

berarti ya?

Enggak. Ya, pasti panggil

jadi JavaScript Object biasa.

Desain gitu, bentuknya.

Ya kayak API ya,

panggil API ya.

Kalau nggak salah sih, udah type

juga, udah ada typing-nya.

Jadi misalnya apa, custom di sini,

custom entry-nya misalnya

data-data apa itu tadi kayak

lokasi-lokasi

akaknikah-nya, lokasi

resepsinya itu kan map point.

Ya, misalnya ada field-field-nya gitu

udah data yang dibalikin tuh

udah ada type-nya.

Nah, ini ada

komentar dari mas

Ahmad Muwafak nih.

Kayaknya lebih

ngerti ya. Loadable buat

lazyload-component, code-splitting

juga. Ini

ngomentarin content code?

Tadi loadable, bukan

loadable. Tadi packaging

kita nggak tahu itu. Oh,

loadable, ya ya. Loadable itu

buat lazyload-

component, oke.

Tapi bukannya Next sebenarnya

udah handle

itu ya? Itu semua udah bisa

di Next.js nggak sih? Maksudnya

use-casenya kenapa ya?

Yang nggak bisa di handle

Next.js sampe harus

pakai loadable.

Penasaran.

NPM.js

apa nih? Memory Load Pro.

Memory

Cache Pro.

Buat caching.

Modern, excellent, fast, well

tested, reliable caching module.

Itu kali buat lagunya

biar na di caching

di lokal.

Nggak, ini buat

nyimpen data ya.

Kayak

local storage ya.

Tapi ini buat caching ya.

Browser cache

berarti ya?

Browser cache ya.

Iya, di client, kan?

Dependency.

Sudah, pakai JSON aman.

Aman, pakai JSON oke.

Terus, apa lagi? Kita lihat

apa lagi?

Pakainya Windy ya.

Bukan pakai Tailwind ya.

Ketiba node

modules.

Windy bukannya based on Tailwind ya?

Belum pernah pakai sih.

Oh, nggak

ternyata Windy CSS

migrate from Tailwind.

Oh, baru tahu.

Next generation utility first CSS

framework.

Lihat yang bawah, the Windy CSS

setting. Oh, sun setting.

Ya.

Bukan musuh sih.

Dulu dibuat untuk kebacakan

Tailwind's performance issues.

Tapi sekarang udah. Ingat-ingat-ingat.

Windy itu yang pertama kali

menggunakan just in time.

Oh.

Abis itu, diikuti

oleh si Tailwind. Tailwind

sekarang udah just in time. Makanya sekarang Windy udah

sunset karena udah

di. My job here is

done. - Iya.

Untuk membuktikan bahwa ini bagus gitu.

- Berjalan ke musik gue sudah selesai.

- For new project, we recommend to consider

alternative like Uno CSS or Tailwind.

Dulu ingatnya gitu, sempet

apa, sempet

ada drama juga tuh sama

yang bikin Tailwind.

Biasalah.

- Skena web web itu nggak lupa

seri drama. - Iya.

.env.development

- Kenapa

.env?

- Kenapa begitu?

Kenapa

ditaro di situ?

- Nah, itu introduction-nya.

- Kenapa beneran ini?

- Jangan di-commit.

- Jangan di-commit.

Di-ignore dong, di-ignore.

Tulung.

- Cuma, bukannya sekarang

otomatis ya?

- Otomatis ya?

Pasti ada warning dari GitHub-nya.

Ada warning dari GitHub-nya.

- Bukan GitHub.

Dari Next.js kan

sebenarnya kan kita bisa pakai

environment variable.

Kenapa harus dipasang ke file?

- Iya.

Ini,

maaf ya, kita buka tadi.

Tapi udah dilihat juga

ini yang reponya. Ini content

full-nya, hati-hati ini kalau berbayar.

Soalnya...

- Ini orang yang submit,

untung mesti cuma bersyukur

ini kita anekanin bahwa project-nya

harus project kalian sendiri

dan kalian yang submit. Ya udah kan, mesti

ngomit-ngomit ada apa-apa

ini.

- Iya. Ini API

content full-nya kebuka ini.

Berhati-hati.

Takutnya nanti kena

kalau masih...

- Dimention dulu, Pak.

Dimention dulu

di diskusi.

Ini coba

di riset dari

konten file-nya.

- Iya sih.

Gini nggak bisa dihapus doang

kalian cara hapus.

- Iya nggak jadi konten full-nya

di riset.

- Di revoke. Terus

INV ini-nya dihapus,

bukan di bagian commit itu aja, tapi harus

historinya juga yang dari awal

pertama kali muncul

Git Ignore-nya apa?

Oh, Git Ignore-nya ini dari Next.js ya?

- Masa nggak ada

Ignoran INV ya?

- Iya.

Kalau misalnya

Next.js official starter

Git Ignore-nya nggak ada INV

itu agak bahaya sih, kasihan.

Maksudnya kan mungkin banyak orang yang baru belajar,

baru nyoba juga.

Ya.

Oke.

Oke. Mungkin

kita sekarang masuk

ke

kirain.inv

example, gitu kan.

- Kirain kosong.

- Iya.

Taunya beneran.

Maaf lah ya.

Kita nggak, tidak menyangka

beneran. Oke.

Apa lagi yang mau kita

inspek?

Ya, inspek sih.

Bagian performance nyata

atau kodanya.

Ini berarti masih pakai yang

lama ya? - Regis, kan?

2 tahun yang lalu.

- Riaq Dead Picker.

Padahal kan ada

Dead Picker dari bawaan

bawaan

browser.

- Oh, Riaq Dead Picker ya?

Dead Pickernya buat dimana ya?

- Atau, atau butuh-butuh apa?

- Lagian Dead Pickernya kayaknya nggak ada

keperluan. - Buat dimana?

- Mistake deh. - Ini?

- Nggak ada sih kayaknya.

- Dah kan kelihatan kalendernya? - Nggak ada.

- Nggak ada ya? Apa buat ini?

Buat, ini kan cuma

URL

doang kan ya?

Ada keperluan apa ya? - Iya, buat apa ya?

- Dead Picker ya?

Benar juga?

Nggak ada?

Bahkan nggak ada

keperluan Dead Picker sih.

- Ini audio player nih

yang di atas tuh

icons.

Riaq Select.

- Nggak ada select juga.

- Riaq Pop Up.

Pop Up yang tadi yang awal ya?

Ini, munculin yang ini kali ya?

Pop Up ya?

Mungkin kalau sekarang

udah ada dialog dan lain-lain ya?

- Betul.

- Ini

struktur

folder-nya.

Ini layout-nya.

Terus

komponen

Gallery Image Pop Up.

Pop Up-nya ini ya?

Yang tadi ya?

Pop X.

Iya.

Ini.

Buat nampilin

Pop Up yang pertama kali.

Terus

ini undangannya yang

Agenda,

Form,

Form Info sama Form

Guest, Guest Book,

sama ceritanya

Love Story.

Pastikan environment diignore.

Itu

bukannya udah wajib ya.

- Public Repo lagi?

- Iya.

Untung loh produksinya nggak diignore.

Sudah diignore ya untungnya.

Dari next.js-nya udah kasih git ignore kan ya biasanya ya.

Udah aman lah ya.

Pidisnya berarti

ada berapa pidis? Satu pidis doang

sebenarnya ini kan.

- Biar dibuka aja coba.

- Iya kan.

Tapi ini ada

kayak ada ini.

Ini ada gambar-gambarnya.

Ini gallery ya.

- Yang hijau. Apa tadi halaman tadi?

Ada halaman hijau yang ada

batangnya itu.

Ini?

Peta lokasi.

Oh ini tohap.

Navigasi.

- Hijau-nya terang,

tulisannya terang.

Ini lagi?

- Komentar-nya di Google Docs

kan cuma itu punya

accessibility sama usability

sih yang paling

kerasa.

Termasuk behavior slide-nya itu

keren.

- Biasanya apa?

- Apa?

Jadi gini, ini kan pakai

library external ya.

Trus apa? Coba

klik cursor.

Tapi kalau ini sih tadi

gue nyobanya, kantang liat kode ya

cuma pakai aja. Cuma buka

dari website-nya aja.

Apa? Di yang kanan itu.

Kanan yang putih.

Nah

kanan yang putih-putihnya itu

diklik, terus tahan,

terus geser dikit, tiba-tiba

apa? Jadi misalkan

use case-nya gini sih, misalkan kita

pengen ngopas alamatnya,

kan pasti cursor kita taruh kesitu

teks alamatnya, terus kita

berusaha nge-like.

Tapi malah

jadi kelihatannya dia

malah-malah ini ya?

Oh.

Tidak.

Kalau swipe di mobile,

swipe di touchscreen, baru

behavior swipe-nya dibikin

berser-slide kalau

user swipe. Tapi ini pakai

modalities apapun, pakai cursor

yang bukan

buat nge-swipe, itu

dia otomatis pindah

kartu.

Oh, ini targetnya

buat dibuka di mobile ya?

Iya.

Cuma itu kan ada desktop-nya juga.

Iya.

Benar-benar.

Semua yang terkait karusel-nya sih

ini usability-nya

agak

kurang. Jadi kayak

contoh lain misalnya gini nih,

yang

tapi nggak, gue belum sampai lihat kodenya

sih, coba dibuku tamu aja.

Nah, sekarang coba deh.

Bisa nggak? Kan pengen

lihat pesan dari orang lain,

coba. Ini kan

benar-benar minta.

Coba gimana caranya?

Gak bisa.

Iya, coba cari caranya sampe

bisa. Terus

tebakan kita selanjutnya kan kita slide

pakai mouse, kan?

Iya, betul-betul.

Bisa pakai

tab, tebakan selanjutnya

pakai tab, kita klik sekitar

situ, terus tab-tab-tab aja sampai ke fokus,

juga nggak bisa, nggak ada fokusnya.

Ternyata, lihat nggak? Ijo-iju

yang di kanan itu, bentik-bentik

ijo, itu bukan dekorasi,

itu step-card usaha.

Oh, ini

page-ing ya page-ingnya.

Cuma karena isunya banyak,

tadi kayak mleber gitu loh,

jadi bukan di bawah.

Ini ternyata

pesan-pesan orang-orang ya,

daftar pesan. Apa? Posisiunnya juga

jadi aneh, karena pesannya banyak.

Kalau pesannya cuma 3 atau 4, mungkin

agak bagus ya. Maksudnya di kanan atas,

semuanya jelas, nah ini makin banyak

jadi kayak acak-acakan kan, kedurung ke kiri,

karena steps-nya bukan di bawah.

Terus maksudnya modalitas navigasinya itu

slide nggak bisa,

click nggak bisa,

tab, tab untuk fokus,

maksudnya tab atau apapun yang pakai

assistive device ya, misalnya orang pakai

apa itu yang screen reader

atau alat-alat lain pun, nggak bisa.

Terus yang anak Pim kan

biasanya, ngelanjutin,

tadi tuh anak Pim kan nggak suka

mouse ya, semua pakai keyboard,

tab, tab aja, nah ini jelas nggak bisa

juga. Gak bisa juga tab-nya nggak jalan ya, nggak ada

tab, namanya tab index ya,

nggak dikasih tab index, jadi kalau kita

mau ngisi, harus klik mouse dulu.

Jadi sebetulnya sih mungkin

alternatif yang

paling ideal ya,

sekarang kan carusel atau

slider udah ada

JavaScript dan CSS

yang web API ya,

jadi paling ideal itu bikin sendiri.

Nah, kalau nggak

memungkinkan, nggak sempat dan

lain-lain, alasan lain, sebenernya

kayak ShadCN,

ShadCN tuh ada carusel, kalau

Radix UI, agak lupa

apa, ada carusel atau nggak,

intinya sih pakai

React UI Library yang

udah support accessibility

features, sekarang udah banyak

lho, jadi maksudnya paling ideal ya

bikin sendiri, jadi kita bisa

control semua

fungsionalitasnya, tapi kalau itu nggak

memungkinkan cari UI Library yang

udah ada support,

ya itu tadi segala macam

accessibility features,

jadi accessibility features itu

bukan cuma buat

apa,

bukan cuma buat

yang kayak apalah

screen reader atau defabilitas doang,

tapi ya beneran

literally sesuai namanya,

memastikan segala macam

user dengan berbagai cara

akses website itu mudah buat

akses kontennya.

Oh, kita kan waktu itu

udah tutorial sama Ivan ya

cara ngecek performance.

Iya, performance-nya nih

oke nih ya.

Ya kan,

karena pakenya

komputer hebat dan

dan

oh iya,

belum di, itu ya,

belum di throttle ya,

no throttling,

coba slow,

terus

yang di refresh ya, yang di performance-nya ya,

ini ya,

gitu ya.

Tapi ini kalau kita

nggak klik, dia masih

ngitung sebagai ini nggak?

Udah loading kan semuanya kan?

Iya.

Modern

Classic,

oh, apa nih?

Wow.

Masih ke-mutein lagi.

Mendingan ini di-mute aja ya.

Mute.

Nah itu salah satu juga

bisa opt-out dan itu.

Nah itu aksesibility dan usability.

Tapi itu stress banget.

Padi asli, itu asli

kaget sih tadi,

pas sebelum mulai live ini,

oh coba, mau udah situs nih

nge-check, tiba-tiba

tiba-tiba

lagu ini bunyi,

dan nggak tahu dari mana,

kalau emang user-nya

nge-click play dengan sengaja,

ya udah kan, udah expect.

Bayangin dong kalau lagi meeting atau apa,

tiba-tiba dikirimin

link ini undangan,

di-play, diliatin

sekeluangan.

LCP, INP,

dan CLS.

Ya

layout shift-nya nggak,

minimum lah ya, nggak ada ya.

Hampir bisa dibilang nggak ada ya.

Ya, karena

jenis website-nya juga ya.

Itu bentuk

live-nya tuh pakai CSS atau

image?

Ini image-nya udah pakai EI nih,

3 tahun yang lalu.

Itu, ada

gambar kartun yang gitu, versi kartunnya

itu, itu yang berubah

jadi kartun.

Image.

Thumbnail.

Nah, ini salah satunya,

kalau misalnya

image-nya PNG itu

berat, 76 kilo

kan, lumayan tuh.

76 kilobyte?

Iya.

Padahal kalau dia misalnya pakai

image yang

image yang

GPEG aja,

itu

ada animasinya ya?

Iya, ada animasinya.

Itu yang berubah jadi versi

kartun.

Jadi ghibli-ghibli.

Ya.

Sama itu versi load itu

harusnya nggak kan?

Nggak, ini ya, kayak kecilan

itu tulisan

kayak

Ini dia pakai

WP, udah pakai WP.

Upper case semua itu juga nggak bagus lho.

Gimana?

Upper case itu memplay wanita,

memplay pria, itu kan upper case.

Oh, ini tulisan ini?

Iya.

Kenapa?

Alasannya kenapa?

Ya, sudah upper case tapi

dibikin font-nya kecil dan tipis.

Itu nggak enak.

Ini upper case-nya pakai CSS

lagi ya?

Karena aslinya nggak.

Nggak masalah ya? Nggak ngaruh ya?

Nggak masalah, cuma secara

kembali ke accessibility

sih saya.

Nah, cuma itu seberapa ketat sih, kalau di luar

emang ada syarat

WCAG, cuma kalau ini kan

asumsinya berarti target market-nya

lokal ya, Indonesia.

Mungkin nggak harus seketat itu.

Cuma yang jelas sih

kalau buat...

Bukan soal aturan

yang ketat, tapi dengan

memberikan accessibility yang bagus,

bagi pembacanya

juga lebih enak sebenarnya lho.

Jadi kayak

kita itu memberikan konten yang

enak buat dibaca dan

dikonsumsi sebenarnya.

Bukan soal ikutin aturan.

Nggak, sebagai

kalau yang

secara ideal sih setuju. Cuma

kadang kayak gini kan webdev kita

harus bentuk-bentukan

sama pihak di luar kita.

Kayak kalau gue pribadi kadang pick our battle

gitu. Kayak misalnya kalau gini,

daripada tawar-menawar soal tulisan

memply one time, mending ngabisin tenaga

buat lobby si button yang

apa? Button hijau itu

yang lebih nggak kelihatan sama itu tuh

kanan atas lagu

muter-muter. Kalau itu sih

kalau ini bakal... Apa ya? Maksudnya daripada

cerewet banget banyak yang diminta,

gue bakal memfokuskan

tenaga ke nge-lobby

button warna,

warna button hijau, plus

behavior audio yang di kanan atas itu.

Coba deh survey, sekian

user, terutama yang nggak tech-savvy,

bakal tahu nggak cara

ngapain lagu yang tiba-tiba nyala.

Itu kan kalau ini bakal...

Dari tab browser kan ada

tanda microphone tuh.

User yang nggak tech-savvy,

tiba-tiba bunyi nih, bunyi-bunyi terus.

Nah, terus apa?

Sementara itu di atas,

di kanan atas nyempil,

ada icon lagu muter-muter dengan

kontras yang rendah, nggak langsung kelihatan

juga, dan itu nggak tahu

harus diklik baru buat

untuk ngelakuin lagunya.

Untung lagunya lagu slow ya,

kalau coba noise rock, yang trik.

Biasa yang nikah

anak metal kan.

Pada saat posisi play,

lagunya lagi dimatiin,

pun dia masih muter-muter.

Soal awalnya lagi

jalan gitu, padahal sebenarnya nggak.

Ya itu hal-hal kecil sih ya.

Muka ke

hit memory bisa kelihatan nggak?

Si button icon yang lagu muter-muter itu,

itu nggak bisa ditap juga,

harus pakai mouse.

Oh nggak bisa diklik

pakai mobile gitu?

Iya, harus pakai

pake tangan, pake

touch bisa, cuma nggak ada.

Nggak fokusable, nggak bisa difokus.

Fokusable.

Dimana? Network?

Perfomance.

Memory?

Memory.

Saya tadinya mau liat

sam apainya kayak

tuh, lumayan kan?

Maksudnya,

di hip snapshot-nya tadi,

hip snapshot-nya, kayak

animasi-animasi gitu sebenarnya bisa

kelihatan tuh nanti

berapa

kepakainya

memory di

browser untuk merender itu.

Ini size

bundlenya

dimana ya?

Itu di bawah, 4,1 megabyte.

4,1 megabyte.

Ya, image kelihatan ya.

Image kali ya.

Paling gede.

Click image,

click image di atas.

Nah, kelihatan kan tuh sekarang jadi

di bawah,

jadi 1 megabyte tuh,

1 megabyte

/ 1 megabyte.

Itu artinya image-nya 1 megabyte.

1 dari 4 ya?

Kalau ke JS-nya coba.

JS-nya 1,4.

5. / Nah, jadi cara bacanya ya,

kalau JS-nya tuh ada 17

request dari 98 request.

Ini yang kepakai, bandwidth yang

kepakai 1,1 kilobytes dari

46 kilobytes.

Dan 1,4 megabyte.

/ Ini khusus untuk JS ya? / Ya.

Kalau mau lihat font, contohnya

font-nya gede nggak?

Nggak, font-nya kecil.

/ Nggak, kecil.

CSS-nya? / CSS.

/ HTML-nya?

/ HTML-nya nggak gede kan?

154.

CSS juga nggak gede.

/ Ya, berarti gede-nya di?

/ Media.

/ Nah... / Media...

Iya, 700 kilobytes.

Wasm? Nggak ada ya Wasm.

/ Ada, ada.

Ada.

/ 500 kilobytes...

500 kilobytes ini apa?

/ Ini tuh call web vital.

Web worker.

Web worker-nya dia jalan.

/ Web worker.

/ Recapcha.

/ Recapcha berapa?

Kecil ya?

/ Karena Mas Riza ini,

coba disable cache, terus reload.

Kalau mau lihat.

Terus matiin lagunya.

Udah di...

Udah di mute.

Woh, nggak pake cache,

lumayan juga ya.

15 detik, 16.

Karena heavy di image juga ya.

Event,

image-nya nggak kelihatan

di sini ya. Cuman yang kelihatan kan

image ini doang ya.

/ Itu kayaknya image-nya di-load deh.

/ Iya, ikut ke-load juga semuanya.

Walaupun

walaupun belum muncul di viewport,

udah dipanggil laluan

semua image-nya.

/ Padahal capcha-nya nggak butuh-butuh di awal kan?

/ Iya, nggak lagi load ya.

Capcha-nya

di akhir bahkan.

/ Coba ke-image.

/ Udah di-load semua?

/ Satu dari lima.

Lima setengah.

Oh, tadi empat-empat sekian itu

ke-cache ya?

/ Iya.

Ada yang sebagian ke-cache.

/ Font, oh, nambah lagi nih.

/ Iya, ada yang di-load.

/ Ada yang di-load lagi?

/ Apa yang di-load? / GS-nya

dua setengah,

hampir tiga.

Dari tujuh.

Gede juga ya.

Oke.

S-nya nggak gede kan ya?

Oh, ini yang dari content-full ya?

Google Analytics.

/ Google Analytics, collect itu

Google Analytics. / Collect.

/ Iya, ini nih. / Itu yang dari

content-full ya? / Content-full.

/ S-nya ini ya?

/ APK.

Alright, alright.

Apa lagi yang menarik?

Yang perlu dibahas.

/ Tips-tips. Ini pakai

kalau pengen

nge-check. Tadi kan

kontras warna ya.

Color contrast. Sebetulnya

di Chrome DevTools,

di Chromium DevTools sepatnya

itu udah ada kontras checker,

tapi ada tapinya.

Tapi apa? Masih

kurang bagus. Jadi, apa?

Dalam satu element

yang bawaan DevTools nih. Dalam

satu element tuh harus diset color dan

background-nya. Dan elementnya

nggak boleh punya children. Kayak tadi

padahal proteknya tuh

kan filling-nya tuh

misalnya A.

Elementnya A. Belumnya kan ada

icon kan. Karena mau saya lihat kita

ada icon map. Nah,

jadi nggak bisa pakai

kontras checker

bawaannya DevTools. Coba deh.

Nah, di apa?

/ Ini ya. / Nah,

Inspect Element. / Yang mana?

Yang muda? / Iya, itu.

Terserah. / Ini.

Contras fiturnya gimana? Ini?

Bukan, computed.

Detect computed.

Scroll ke bawah, sampai

nemu color, property color.

/ Ini? / Color.

Diklik.

Nah, itu

harusnya kalau kita klik warnanya,

warna ijo itu.

Nah, harusnya

kontras rasio-nya ada,

tapi no contrast information

available. Kenapa? Karena

lihat elementnya deh, buka

element button-nya di atas.

Nah, itu

di buka.

Nah, kan ada SVG-nya.

Sekarang coba SVG-nya

ilangin.

Hapus aja.

Terus klik lagi button.

Terus kayak tadi.

Color.

Ini.

Gak bisa diklik. Ini?

Bisa, harusnya.

Nah, kontras rasio-nya muncul.

Agak ribet ya, agak capek kan?

Nah, terus yang kasiannya nih,

yang sangat disayangkan,

itu bug Chromium

udah 2 tahunan kali ya?

2 tahun.

Belum dibenerin juga, jadi kalau

mungkin temen-temen yang

bisa nulis, apa ya, C++

atau apalah, bisa kontribusi ke

source code Chromium, tolong

demi kemaslahatan bersama,

coba mungkin bisa nge-fix. Tapi

in the meantime, sementara itu, kita

bisa pakai ya macem-macem

sih extension yang buat

check aksesibilitas secara

keseluruhan tuh banyak. Cuma yang paling

simple dan enak, ini, pakai

ini.

Which is the color contrast checker.

Itu maksudnya,

itu dia nge-check-nya dari Domnode

dan langsung, apa, langsung

kelihatan, terutama kalau kita

kerja sama-sama misalnya

anak QA atau maksudnya pihak-pihak lain

yang bukan developer,

nggak usah jalanin macem-macem, udah langsung

klik aja extension-nya, langsung

kelihatan. Coba deh. Tapi sekarang dari

Figma sendiri, kalau dari designer ya

dari Figma itu, sudah kelihatan sih

color contrast-nya di Figma,

ada extension-extension,

jadi sebenarnya udah bisa pointy

"Ini nggak bener ya" gitu.

- Bagus sih kalau pakai Figma.

- Kalau sekarang kan

jamannya AI,

kita bisa screenshot terus

minta ke Gemini misalkan gitu.

Coba tolong dicek aksesibilitas apa.

- Ini akan too much effort ya.

- Iya sih.

- Iya too much effort. Kalau ini tinggal matiin aja

dev tools-nya, coba buka aja extension-nya

langsung kelihatan.

- Coba install dulu.

- Mana ini ya? Oh ini, ilang tuh.

Kalau di plus, ilang.

Nggak bisa install.

- Nggak responsive berarti.

- Nggak responsive.

Gimana sih?

- Chrome Web Store nggak responsive.

- Pake Kanari.

Chrome Kanari.

Udah nih, coba de-close ya.

- Coba aja.

Coba.

Ayo, kelihatan semua extension-nya.

Lihat aja.

- Ada fake filler.

- Buat ngisi form.

Gimana sih?

Gimana caranya? Klik kanan aja.

- Harusnya sih langsung.

- Buat ngisi form ini loh, ngisi form ini.

Gisi form tuh, ngisi form.

Fake filler.

Daripada gitu.

- Masuk ke extension-nya.

Masuk ke extension-nya tadi.

Terus dipin.

- Oh, dipin dulu.

Oh, harus dipin dulu.

Nggak bisa langsung dipake gitu.

- Iya, itu ya.

Diklik.

Diklik.

- Bentar dulu. Ini kan, diklik.

Udah.

Udah nih, kentang.

Harus refresh kali ya.

Refresh kali ya.

Refresh.

- Matiin lagunya lagi.

- Nggak.

Ah, baru. Harus refresh dulu.

Lagunya nyala terus dari tadi. Cuman udah di-mute.

Mute tab.

Ini, ini, mute.

- Iya, itu langsung kelihatan.

- Ini cara bacanya gimana?

- Iya, itu.

Pokoknya yang XX itu yang salah.

Yang salah berarti yang

warna ini harus diganti.

Sebaiknya diganti gitu.

Jangan pakai warna ini gitu ya.

Gimana?

- Oh, apa?

Itu dimerahin

yang bermasalah.

Di-highlight dimerahin.

Jadi kita tinggal screenshot atau tinggal

tunjukin.

- Oh, yang ini.

Yang perlu diganti

warna ininya.

Kalau kita lihat di sini kan warnanya.

- Pokoknya itu

kan yang untung adalah

nilai kontrasnya harus

cukup tinggi biar bisa kelihatan kan.

- Coba ganti.

Coba ganti.

- Atau

kalau memungkinkan

teksi dibuat lebih terang. Cuma ini

teksi kan udah putih. Udah nggak bisa terangin lagi.

- Ini text-nya kan

ini kan

background-nya ganti.

Eh, salah.

Ganti warna lebih gelap.

- Lebih terang misalnya.

Atau lebih gelap.

Yang penting kontrasnya.

- Contohnya kelihatan di bawah.

Yang 14 bol itu. Nah.

Nah.

Tapi belum triple A.

Nah. - Nah, triple A.

Berarti ini udah aman ya.

Tapi nggak geganti ya?

Gak geganti.

Harus manual ya.

Cuma yang jelas

kita dengan gampang

di sidebar di kiri

langsung kelihatan mana.

Jadi, yang penting kan, mana aja sih

yang kontrasnya kurang.

Itu langsung dijabari.

Terus

kombinasi

warna yang bermasalah.

Itu apa yang men-trigger.

Terus bisa langsung di-highlight.

Lebih ke itunya aja sih. Terus

simple aja pakainya.

Ini pun

nggak lulus ya. - Terganggu sekali.

- Kekcilannya. Terlalu kecil ya.

- Terlalu menutup

muka si

ceweknya.

- Iya. Memang

bikin web

gallery foto itu

sangat triki ya. Karena kan

warna-kewarnaan dari

image-nya kan nggak bisa kita atur kan.

- Iya.

Harus di-overlay atau dikasih

kotak sedikit.

Ya, pokoknya itu harus terang,

fotonya gelap, gitu kan.

Itu kan tergantung kontennya atau fotonya kan.

Iya.

Apple aja baru update,

langsung itu kan nggak bisa kebaca kan.

Lagi heboh.

Gara-gara glass.

Glass-glass kaca.

- Liquid glass.

- Liquid glass. Nggak kebaca tuh notifikasinya.

Gara-gara ada foto

wallpaper yang mungkin agak terang, agak cerah

gitu kan. Terus glass-nya juga

cerah, nggak kebaca.

Iya, iya. Ini

tools-nya yang

yang mesti banyak kita

belajar dari tools-nya ini ya. Sebenarnya

udah disediakan. Cuman kadang-kadang kita nggak

ada tools seperti ini.

- Jadi di atas kan ada tool level.

Jadi level-nya itu udah kayak

itu aja. Ayam gebrek lah.

Ada level pedesnya kan.

Jadi kalau A, A itu

paling minimum, dan itu kayak

dianggap

belum masuk conformance, semuanya

belum mengikuti aturan WCAG, jadi

bahkan nggak masuk ke itu.

Kalau AA itu yang kayak standard lah.

Jadi minimum acceptable-nya

tuh AA. Biasanya kalau

aturan-aturan ini tuh, regulasi

itu minimal AA. Tapi

kalau mau yang maksimal,

yang sangat-sangat

compliant, itu ada

AA. Terus ada itu kayaknya

filter buta warna atau apa lah.

Gak pernah pake sih. - Oh yang ini ya

buat orang yang mungkin

buta warna. - Parsial.

- Parsial.

- Macam-macam variasinya. Dan itu biasa dipake

kalau, terutama

kalau warna mengkomunikasikan

makna. Jadi kayak misalnya kalau aplikasi

saham atau keuangan atau apa itu

misalnya kan

diangkanya

ya kalau misalnya naik turun kan ada car.

- Kalau bulis itu kan ijo.

- Tapi maksudnya diangkanya pun

angkanya kan ga beda terus.

Kalau dia lagi naik tuh angkanya merah.

Jadi merah ijo bisa gonta ganti kan.

Sesuai itu kan gantinya cepet ya.

Nah itu kalau misalnya

ngide pake variasi

warna merah dan ijo yang kurang jelas

buat orang-orang

varian buta warna tertentu itu malah

kayak ga kelihatan sama sekali. Jadi

maksudnya perlu di tes pake

macem-macem variasi itu.

- Oke.

Ada lagi yang mau

dibahas?

-

YouTube pastikan jangan

commit and file.

- Oh itu udah tadi, udah ya.

Gimana Ivan?

- Kita bahas sedikit lagi sebelum

kita lanjut.

Kalau misalnya

ada yang bisa dirobah dengan

modern API

atau CSS,

apa sih yang bisa dirobah dari website ini?

- Iya

- Coba apa?

- Dialog.

- Dialog.

- Carousel

sudah ada.

- Carousel.

- Carousel.

Dialognya sudah ada.

- Apa lagi ya?

- Lazy load.

- Lazy load.

- Sudah native juga

kan?

- Lazy load.

- Next.js.

- Yang misalnya kita pake Next.js,

itu dead picker.

- Ya nggak apa-apa.

Orang dead pickernya aja nggak dipake.

Gak usah pake dead picker.

- Gihapus aja udah.

- Ya sama web API yang

simple sih, yang dari dulu ada, kayak misalnya

kiri-kanan gini, ya

dikasih aja keyboard

di event listener

biar bisa navigasi.

- Bisa next previous ya.

- Itu kan bukan fitur yang modern-modern banget ya.

Dari dulu ada.

- Oh ini tadi yang pake JavaScript

terang gelap-gelap ini.

- Oh iya, animasi.

- Animasi yang ini.

Eh mana tadi?

- Ini juga animasi muka ini bisa dibikin.

- Oh itu apa?

Apa?

Scrollable event ya?

- Scroll driven animation.

- Oh scroll driven animation.

Iya, daripada kiri-kanan mendingan ke bawah

gitu, di scroll.

- Itu mah kan nggak perlu scroll driven animation sih.

Kalau yang animasi ya,

ini animasi foto sama

tanem kanan yang

pake keyframe animate

biasa aja kan ini.

- Tapi ini foto ini juga nggak jalan otomatis,

harus di-click ya.

Jadi bukan animasi kan ini aja.

Iya.

- Jadi kita kirain.

- Oh iya misalnya.

- Beter bikin slide gallery sendiri.

- Yang jadi kaktun itu.

- Kalau misalnya daripada

ini yang galerinya ini,

daripada bikin jadi

background terus dibikin ada

depannya begitu, toh orang nggak bisa menikmati

fotonya ya kan.

- Itu galerinya kanan.

- Itu polos aja, sisanya ya

gallery yang bikin gallery foto

gitu ya bagus.

Itu galerinya dua.

- Oh itu yang ini

aslinya kalau satu raw begini ya.

Ini masih kelihatan.

- Iya bagus. Tadi gue bilang, makanya

kalau pesennya dikit,

kalau pas dia ngetest data, mungkin pesennya masih dikit.

Nah pas pesennya udah banyak,

udah bingung.

- Tapi ini juga rentan

ke-click background-nya.

- Vertical sih lebih bagus.

Eh salah.

- Ini pas banget sama

tiang ini.

Jadi nggak kelihatan.

- Dikira dekorasi pasti kan.

Dan itu nggak bisa di-slide, nggak bisa di-swipe,

nggak bisa di-swipe, dan nggak bisa di-slide,

dan nggak bisa di-tap atau arrow.

- Kalau fotonya agak gelap

gini, oke.

Gambarnya oke, ini masih masuk kan.

- Itu pun kayak dekorasi kan, maksudnya bisa aja kan.

- Iya bener-bener kayak dekorasi.

Terus udah gitu di-click,

malah masuknya ke foto

pop-up.

Jadi navigasinya

bisa lebih baik lah ya.

- Iya.

- Nah ini foto yang disini sama-disini sama

sebenarnya. - Sama.

- Ada juga kan tuh, sama.

- Sama itu gallery yang sama,

tapi kayak ada dua macam UI.

- Iya, iya, iya.

- Ya kalau gitu yang kiri mas

satu foto statik aja kan.

Harusnya foto yang emang ya kayak cover

image gitu lah. Jadi maksudnya kontrasnya

juga bisa lebih diatur, bisa ditimpap

di layer yang

gradient, opacity, separo,

atau berapa lah.

- Oke, ada lagi,

ada lagi?

- Udah sih.

- Sudah cukup?

Cukup ya? - Sudah.

- Wah, ini kayaknya

ada yang ini nih,

ada yang masuk lagi, bedasitas baru nih.

Nah,

buat bedasitas berikutnya ya.

Mas Yuda terima,

Mas Yudi, Yudi.

- Nvnya tolong diumpetin,

pastiin Nvnya nggak dulu.

- Ini nggak dikasih source code,

kayaknya takut.

Kasihnya website ya,

alamat webnya aja.

Oke, kalau ada

source code-nya boleh, tapi

coba dicek lagi, jangan sampai

kayak tadi.

Udah gitu iseng lagi mencet, kirain kosong,

taunya ada isinya.

Oke.

Cukup?

Oke, cukup sekian.

Buat malam ini,

terima kasih banyak buat semuanya,

terima kasih juga Mas Grafis,

yang sudah, apa,

untuk berpartisipasi

untuk di beda.

Mudah-mudahan,

dapat banyak pelajaran ya,

buat next-nya,

untuk bikin-bikin web seperti itu,

jadi lebih

baik lagi.

Oke.

Sekian dulu untuk malam ini. Sekali lagi

terima kasih buat

apa?

Sponsor kita, Dominesia.

Jangan lupa kalau teman-teman

mau bikin website kayak tadi,

bisa hosting-nya di Dominesia

pakai promo code "Kobrolinwebdn".

- Pakai Next.js juga bisa.

Pakai Next.js kan bisa.

Tapi agak ribet ya.

Agak ribet ya, harus di-compile dulu kan.

- Kalau statik bisa.

Kalau statik sih aman.

Tapi kalau yang pakai fungsionalitas

server-side ya, gitu agak ribet.

Harus pakai apa itu?

Yang open source, open next.

- Open next.

Oke.

Sekian dulu dari kita.

Minggu depan kita akan bahas tentang

database dengan

narasumber. Jadi ditunggu aja

narasumbernya siapa, kita tunggu aja

Minggu depannya.

Itu dulu.

Apa?

Itu lagu apa?

- Lagu...

Ada lagu sekitar berapa?

5 tahun lalu atau 6 tahun lalu itu?

Oh, all about that place.

Ada all about that place,

not right place.

- Oh, dipleset kan.

Oke deh.

Sekarang, you cannot unhear that.

You cannot unhear that.

Kalau lu dengerin,

lagu itu pasti gak bisa lagi.

- Lagu apa?

Lagu apa sih? Apache.

Ternyata itu apa?

Selama ini gue mikirnya apache.

Apache.

Kan lagu apache itu?

Emang nih ya lagu apache?

Apache.

Nah itu apache.

Nah selama ini gue mikirnya apache.

Kira itu

perintah ini.

Ubuntu.

APT.

Kira apache server itu loh.

Iya apache.

Gue malah kiranya awalnya apache helikopter.

Beda lagi.

[tertawa]

Pasti skl server ya Rafki ya?

[tertawa]

Skl server.

Skl server emang sering issue ya?

Enggak lah.

Skl server bagus kan?

Supportnya.

Semua skl server sama ya.

Asal pintar ngerawatin.

Maksudnya ada plus and plus.

Tapi harus pintar ngerawat.

Yang bikin gelus dada itu adalah

kalau misalnya kita

punya mutiplikasi.

Terus somehow

indeksnya gak matching.

Itu gak matching ulangnya.

Bagus asal ada duitnya.

Semua juga gitu.

Semua juga gitu.

Oke cukup ya.

Terima kasih semuanya.

Kita ketemu lagi minggu depan.

Selamat malam. Selamat istirahat. Bye bye.

Atau mungkin telah kesekian kali melihat

untuk membandingkan kembali dengan lainnya?

Jika Anda mencari tahu mengenai

layanan web hosting terbaik, kami

pastikan Anda berada di tempat yang tepat.

Dengan Domainesia 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 Domainesia juga

telah mendukung Node.js, Python,

Ruby, Go, PHP, Java,

serta binary Linux.

Lebih dari 200.000 pelanggan

telah mempercayakan layanan hosting

di Domainesia, kepercayaan yang kami

jaga dengan garansi uptime 99,9%

serta garansi uang kembali 100%.

Deskripsi asli dari YouTube

πŸ—£οΈπŸ•ΈοΈ Selasa malam waktunya #NgobrolinWEB! Malam ini kita membedah situs yang disubmit oleh salah satu penonton kita. Masih bersama Ivan dan Eka pastinya. Yuk mari ramaikan! 🏷 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 disin: https://www.domainesia.com/cloud-vps/?promo=ngo 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 .