EP 44

Ngobrolin URL - Ngobrolin WEB ep45

Bagikan:

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb ⏳ Mesin waktu: - 00:00 intro - 05:00 start url - 10:00 pentingnya url - 14:00 maximum char url - 15:00 beda URL & URI - 17:00 pihak ketiga URL& URN - 23:00 keamanan - 28:00 URL API - 30:00 beda location & URL(windows.location) - 37:00 live code - 40:00 url object - 44:00 deepdive location Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Transkrip Bantu Koreksi

0:14Loh kok sudah live, ya pra-pra kaget.

0:18Loh bar mo, bar mo.

0:19Kan, bingung kan.

0:23Biar beda, biar beda.

0:24Halo, halo, halo semuanya, selamat malam.

0:28Selamat malam.

0:29Selamat hari selasa, karena selasa malam waktunya kita.

0:33Waktunya ngobrolin web.

0:36Gimana kabarnya teman-teman, mudah-mudahan sehat semua ya.

0:39Sehat-sehat selalu.

0:42Sehat-sehat selalu.

0:43Seperti biasa.

0:45Kita sudah bukan pandemi lagi kan ya?

0:47Endemi.

0:49Eh, apa nggak tahulah.

0:51Sudah tidak pandemi, tapi kabar-kabar terakhir mengenai apa?

0:59Cuaca, bukan cuaca ya.

1:00Apa, yang oksigen-oksigen itu di Jakarta terutama ya, seperti kabut ya.

1:08Bukan oksigen kali, apa tuh?

1:11Udara.

1:13Partikel.

1:14Partikel.

1:15Iya, partikel udara yang membahayakan buat pernafasan.

1:19Iya, itulah pokoknya.

1:21Jadi kayak kabut gitu ya.

1:23Tapi sebenarnya itu bukan kabut, polusi.

1:25Lebih tepatnya ya.

1:28- Itu ada yang aturannya. - PM 2.5 index.

1:32Ini maksudnya apa kita nggak ngerti.

1:34Ini indexnya.

Lihat transkrip lengkap

1:35Itu ukuran informasi, konsentrasi, partikulat.

1:40Tunggu, apa ini?

1:41Ya, jenis polusi lah.

1:46Ya, mudah-mudahan teman-teman sehat-sehat terus, jaga kesehatan.

1:50Kita kejarnya index, index Core Web Vital Lighthouse 100.

1:56Iya, oke, jadi malam hari ini masih bersama kita bertiga, ada Eka, ada Ivan, dan saya Riza.

2:03Ngobrol-ngobrol.

2:05Iya, ngobrol-ngobrol seputar web karena kita adalah Google Developer Expert di area web.

2:11Di area konsentrasinya web, jadi web teknologis.

2:15Kalau Ivan itu performance ya.

2:18Betul.

2:20Kalau saya sama Eka, Capabilities.

2:22Beberapa kali kita udah bahas tentang Capabilities, terutama waktu bahas tentang project Fugu.

2:28Performance juga beberapa kali juga.

2:31Malam ini sedikit berbeda karena kita ingin kembali ke dasar, ingin kembali ke fundamental.

2:37Kita bahas yang fundamental, salah satu yang fundamental di web adalah tentang URL.

2:42- URL. - Penyeleng URL apa?

2:44- Universal, universal. - Iya, di chat lah ya.

2:48Ada yang ngulis di komen, jangan gitu-gitu sendiri.

2:52Ada URI, ada URL.

2:55Nah itu bedanya apa ya? Kita bahas bareng-bareng.

2:58URI dan URL.

3:00Iya, kita juga mungkin kayak apa ya, kita tahu fungsinya apa.

3:05Tapi mungkin penamaannya, istilahnya itu banyak yang kita belum familiar kali ya.

3:09Termasuk saya juga.

3:11Kalau dulu malah beneran nggak tahu sih, dan pertama kali ketemu kat istilah URI, itu new WordPress.

3:18Kalau di setting-setting itu pasti ada URI gitu kan.

3:21Lupa deh, di settingnya pasti ada deh.

3:23Beneran pertama kali banget ketemu URI something-something.

3:28- Lupa. - Tiba gitu.

3:31Nah, terus soal fundamental ini, kedepannya sih kita kayak berharap bakal rutin ya.

3:37Maksudnya walaupun kita selang-seling juga dengan misalnya API terbaru,

3:43kadang bahas framework atau library, atau mungkin event-event terkait web.

3:49Tapi semoga kedepannya ya minimal sebulan sekalilah kita bisa bahas yang fundamental banget.

3:55Yang mendasar, balik ke asalnya.

3:59Iya, jangan bahas yang hype-hype terus.

4:02Kita bahas yang fundamental, karena yang bisa bertahan adalah yang fundamentalnya.

4:06Framework bisa datang dan pergi, library bisa datang dan pergi.

4:11- Tapi fundamental... - URL dari tahun 1990 sampai sekarang masih dipakai kan?

4:16Betul, betul, betul.

4:18Kita udah sempat bahas yang fundamental juga di JavaScript tentang loop-loop itu.

4:25- Event loop sih. - Event loop.

4:28Event loop.

4:30Terus ada beberapa lah ya.

4:33Terus sekarang kita mulai ingin setidaknya sebulan sekali bahas fundamental.

4:40Ini adalah mungkin bukan yang pertama ya.

4:44Mungkin yang kesekian gitu.

4:46Tapi kita mau bahas malam ini adalah tentang URL.

4:49Awalnya kirain typo, URI itu.

4:52Iya, ini sama L itu hampir sama ya.

4:55Guru besarnya itu kayak L ya.

4:58Kirain lupa mencet shift ya. Lupa mencet shift, nge-tick L.

5:03- Asal bisa lolos buat press tapi nggak mungkin banget. - Betul.

5:07Nah, jadi pertanyaannya URL itu apa?

5:11Nah, ini ada sedikit penjelasan dari...

5:14Welcome to the jungle.

5:16- Namanya... - Ini...

5:18Iya, domainnya lucu ya.

5:20Nah, ada URL, ada domain.

5:22Nah, kita lihat di sini ada gambarnya kan, ada ilustrasinya.

5:25Jadi URL itu ada terdiri dari beberapa komponen.

5:30Yang pertama adalah skima.

5:32Kalau sekarang mungkin semua teman-teman udah familiar dengan HTTPS.

5:37Kalau dulu ada HTTPS, mungkin dulu ada FTP.

5:42Kita bisa FTP dari browser kan.

5:45- Walaupun hanya untuk baca misalnya. - Sampai sekarang pun bisa.

5:48Masih ya.

5:49Ada banyak, skima itu ada banyak FTP, SMTP.

5:52- Terus kemudian... - Protokol ya sebenarnya? Benar nggak sih?

5:55Protokol.

5:57Tapi kalau buat alamat web kan, skimanya cuma bisa HTTPS.

6:03Protokolnya bisa macam-macam.

6:05Iya, bisa SSH juga.

6:08Bisa banyak, cuman yang bisa dibuka di web browser ya mungkin hanya beberapa.

6:14Kayak SSH ya, kayaknya nggak bisa ya.

6:16Nggak bisa.

6:17- FTP bisa? - Nah, FTP bisa.

6:20Nah, setelah skima, terus kemudian ada titik 2.

6:23Itu titik 2 termasuk skima nggak?

6:25- Tidak ya? - Tidak.

6:28Itu separatornya.

6:30Itu udah default bawaan dari spesifikasi nanti kita bakal lihat.

6:34Nanti ada ya.

6:35Ya, titik 2 slash slash, kemudian ada host.

6:39Host ini domain kali ya.

6:41- Mungkin bisa dipecah lagi ya. - Ya, sebelum host itu...

6:44Host sebelum itu bisa ada sebenarnya kayak itu user info.

6:47- Kalau misalnya... - Itu tuh di atasnya.

6:50Di URL Syntax itu bisa user info.

6:53Oh ya, kalau kita pakai FTP ya.

6:57FTP atau basic out.

7:00- Atau HTTPS? - Basic out.

7:02Basic out, ya basic out.

7:03Kalau misalkan kita mau akses admin site yang tidak ada login page-nya, kita bisa pakai ini kan.

7:10- Salah satu atau dua server ya. - Oh iya, kalau tergantung servernya ya.

7:13- Itu yang dari server kan? - Tergantung servernya.

7:15- Ya, apakah Apache atau nginx. - Ya, kalau pakai basic out dan...

7:20Authentication pakai basic out dan itu datanya disimpan di HTPathWD.

7:27- Bahasa Indonesia aja ya, HTPathWD. - HTPathWD.

7:29- HTPathWD. - HTPathWD.

7:31Ya, ada juga HTAccess kalau zaman dulu main-main sama Apache itu ada HTAccess ya.

7:37- Dot, dot HTAccess. - Iya, dot HTAccess.

7:39- Tidak sengaja kaplos. - Tapi itu plain text ya.

7:42Ya, hati-hati. Dan habis itu baru masuk ke host.

7:48Host ini biasanya kalau kita develop itu localhost atau 127.0.0.1.

7:55- Atau domain kalau di... - Atau .local.

7:58- .local. - Atau IP address.

8:02Ya, IP address komputer yang mau diakseskan.

8:06- Domain juga bisa. - IP address rumah apa ya?

8:12- Huh? - IP address...

8:14- 192.168.0.0.1. - Bukan, 127.0.1.

8:17127.0.0.1.

8:19Ya, itu localhost.

8:21Terus diikuti dengan port, port ini juga...

8:24- Optional juga. - Optional.

8:26Kalau defaultnya itu 80 untuk HTTP dan 443 untuk HTTPS.

8:33Terus kalau kita nggak pakai port, ya kalau HTTPS berarti dia langsung 443.

8:40Kalau HTTP dia 80.

8:42- Kemudian... - Boleh nggak HTTP tapi pakai 443?

8:45- Coba. Nggak tahu. - Boleh.

8:48- Boleh aja. - Boleh di portnya tapi kan?

8:50- Iya. - Tapi nggak ada SSL-nya.

8:52Yes.

8:54Kemudian baru ada path, ya.

8:57Kemudian ada path, path ini bisa dari /n/jobs/apa gitu kan.

9:03Setelah itu dengan separator tanda tanya baru ada namanya query params ya.

9:09Query parameter.

9:11Ada yang kubuk search query, search query parameter.

9:15Nah, ini ada breakdown yang lebih bagus di link satunya nanti aja.

9:19Terus ada fragmentnya berarti.

9:22- Fragment itu hash. - Fragment itu hash anchor.

9:27Anchor atau pakai tagar, tanda tagar.

9:31Ini juga cukup familiar, cukup sering digunakan dulu awal-awal ketika kita bermain-main dengan single page application.

9:38Lama dulu sebelum se-keren sekarang kita pakai hash.

9:43Routingnya pakai itu.

9:45Routingnya pakai hash.

9:47Oke. Dan sampai sekarang pun itu si fragment bisa dipakai apa?

9:53By default kalau kita punya element dengan ID tertentu.

9:57Misalnya kita punya element ID-nya foo gitu.

10:01Nah, terus itu otomatis tanpa pakai routing library tambahan apapun.

10:07Kalau kita pakai hash foo itu browser akan otomatis langsung ke bagian itu, ke element itu.

10:16Terus biasanya ditambah smooth scroll.

10:19Ya, boleh. Kita juga javascript pakai web API scroll into view ya.

10:24Scroll into view.

10:26Ada banyak API menarik ya. Ada view transition yang lagi hot ya.

10:32Jadi multi-page application juga sudah seperti itu ya.

10:37Keren, keren.

10:38Sebetulnya tanpa javascript tambahan apapun,

10:41kalau kita nge-link ke encore dan ada matching ID-nya itu otomatis bakal langsung scroll ke situ.

10:48Walaupun tanpa tambahan.

10:51Oke. Nah, mungkin tadi ada yang sedikit terlewat tentang alasan.

10:58Kenapa kita perlu tahu tentang API ini?

11:01API URL ini.

11:04Bukan API ya. URL maksudnya.

11:08Oh, tapi nanti dibahas tentang API yang javascript punya ya.

11:13Ini masih penjelasan tentang URL-nya sendiri ya.

11:20Tapi perlu juga, maksudnya kenapa kita perlu tahu ini host-nya apa atau path-nya apa.

11:27Yang paling simpel, misalnya kalau kita ngikutin tutorial,

11:30atau kita perlu bantuan, kita tanya di stack overflow atau semacamnya,

11:35kalau kita tanya ke teman kerja sendiri atau siapa lah, ke komunitas discord dan lain-lain,

11:41kalau kita nggak bisa, kita nggak tahu host-name-nya apa, path-nya apa,

11:46kita kan nggak bisa berkomunikasi dengan jelas ya.

11:49Kita nanya-nanya nggak jelas, nggak bakal dapet bantuan yang relevan.

11:54Atau kalau misalnya kita baca artikel,

11:56kalau kita nggak tahu path-nya apa, yang dimaksud path itu apa, query parameter apa ya,

12:02yang kita tahu URL-nya aja gitu ya.

12:06URL-nya atau link-nya, nah link itu apa kan nggak jelas.

12:11Dan biasanya query parameter ini juga bisa digunakan,

12:20kalau kita pakai form dengan tipenya get, dia akan menambahkan query parameter kan.

12:24Bukan otomatis pas di-submit masuk ke URL itu lagi dengan query parameter isian form itu tadi.

12:32Dan query parameter ini tanpa perlu menggunakan framework atau library JavaScript apapun.

12:40Jadi vanilla pun udah bisa melakukan ini.

12:44Dan formatnya itu key value store, ini key-nya, ini value-nya.

12:48-Boleh nggak lebih dari satu? -Boleh nggak lebih dari satu?

12:55Query sama dengan developer, no, query sama dengan ek, boleh nggak?

13:04-Poleh, jadinya array. -Boleh aja.

13:07Yes, jadinya array.

13:09Jadinya nanti query string, kalau kita ambil query string query, jadinya hasilnya array.

13:16Dan bahkan, ini kan key value pair nih, contoh yang di sini query sama dengan developer.

13:22Dan page sama dengan satu, jaman dulu banget.

13:25Jadi originally key-nya doang juga nggak apa-apa. Sampai sekarang juga nggak apa-apa sih.

13:30-Jadi kosong aja ya? -Iya, kosongan pun boleh.

13:34Ada penyelasannya tuh di link satunya.

13:37-Boleh nggak di query string ada slash? -Boleh nggak sih, belum pernah nyoba.

13:43-Di encode nggak sih, dia otomatis ke itu encode. -Oh iya, kita bisa bahas encode juga.

13:49Kayaknya nggak boleh ya?

13:51-Boleh, karena sudah ada tana tanya. Setelah tana tanya, apapun bukan path lagi.

13:59-Apapun ya, apapun. -Iya, jadi delimiternya itu tana tanya.

14:04Kalau sudah tana tanya, ke belakang itu slash itu udah nggak dianggap path lagi.

14:08-Berarti, oh iya sering deh, kan pasti kalau redirect tuh.

14:14Biasanya kalau route yang protected, terus kan redirect dulu ke login.

14:21Biasanya redirect-nya ada semacam query parameter redirect after.

14:26Jadi setelah berhasil login, kalau di redirect balik ke path yang tadi mau diakseskan,

14:31itu biasanya ada slash-nya kan.

14:33-Iya. -Ada pertanyaan, ada maksimum karakternya nggak?

14:38-Ada. -Ada, pasti ada.

14:41-Kalau domain, 63 maksimal, nggak tahu kenapa apa lah. Kayaknya dulu pernah.

14:45-Kalau url, ada maksimum url. Itu ada, makanya nggak bisa JWT kepenyaman.

14:52-Kalau 28 bit atau byte?

14:56-Kalau di Chrome, 283 karakter. Kalau di Firefox, 65 ribu karakter.

15:04Kalau di Safari, 80 ribu karakter.

15:07-Itu berarti nggak standar ya? -Beda-beda.

15:10-Nggak ada standar, maksudnya terserah browser.

15:13Kirain maksudnya ada memory limit-nya yang standar gitu.

15:17-Makanya kadang kalau bawa JWT di query string, hati-hati.

15:23-Kadang bisa kelupanya, kan? Bisa terangkit.

15:26-Jangan seluruh user data dimasukin JWT.

15:30-Itu tadi url. -Ini ada yang ketinggalan tadi.

15:32Ada yang ketinggalan nih. Ada subdomain juga. -Ini sebenarnya sama sih.

15:36-Gak, itu kan masuk hostname. Hostname terdiri dari subdomain, domain name,

15:43sama tld-nya, top level domain-nya.

15:48-Kalau URI apa? -Itu ada jawabannya di link satunya.

15:55Ternyata URI itu... -Resource Identifier.

16:00-Kepanjangannya. URI itu adalah term yang paling luas ternyata.

16:05Paling generic. Paragraf ketiga itu.

16:08Any character string that identifies a resource.

16:12Jadi itu kayaknya superset-nya.

16:17Terus salah satu subset dari URI adalah url.

16:21Uri adalah URI yang mengidentifikasikan resource berdasarkan lokasi.

16:28Makanya ada l-nya kan. Uniform Resource Locator.

16:32-Urn? -Urn? Gak tahu.

16:35-Urn. -Paling pertama ya? Paling pertama banget.

16:39-Dia uniform resource locator. Kalo l kan locator.

16:44Kalo n urn urn uniform resource name.

16:50Ini buka link-nya. Lebih enak penjelasannya.

17:00Eh bentar, bentar. Salah.

17:03Ini dia.

17:09Jadi URI itu paling atas, term paling atas. Dibawahnya ada url dan urn.

17:17Itu dia. Turun, turun, turun. Stop. Ini dia.

17:23URI, url, dan urn.

17:27-Berut tahu ada. -Urn. Biasanya urn.

17:32Urn-nya apa? Gitu. Nah kita bahas.

17:35Jadi kita sudah bahas yang url kan. Kalo urn itu gini.

17:42Kalo identifier itu sama kayak tadi.

17:45Jadi depannya schema yang gak peduli.

17:48User, password, host, port, path, query string, fragment.

17:52Sama gitu ya. Terus ada schema di depan.

17:56Makanya kalo misalnya kalo urn-nya apa?

18:06Kalo urn itu mau identified dengan lokasi yang kita tuju.

18:12Kalo urn itu contohnya kayak tadi telnet, ssapah, itu termasuk di urn.

18:21Dan schema itu bisa apa aja ya.

18:26Gak mesti HTTPS, HTTPS. Bisa bikin.

18:31Custom schema bisa kayak kita mau bikin telegram kan ada.

18:37Contohnya tel, mail2, ada kan?

18:41Tel, mail2 itu URI.

18:45Dan setelah diadopsi, terserah browser mau behavior-nya gimana ya?

18:50Karena kan misalnya kalo kita mail2, itu otomatis ngebuka default mail application di OS.

18:56WhatsApp apa ya? WhatsApp kalo gak salah, WhatsApp.2 ya?

19:01No, no, WhatsApp.2.

19:04Itu akan membuka aplikasi WhatsApp.

19:07Sedangkan kalo urn, biasanya dipakai kalo untuk single sign-on.

19:17Kebanyakan. Jadi resource namenya kemana.

19:21Jadi nanti XML-nya blablabla, urn nanti jenis, jenis entity-nya apa?

19:26Panjang tuh. Urn, example, animal, da-da-da.

19:31Jadi nanti, gue harus buka VSCode.

19:36Anyway, bisa panjang tuh nanti untuk entity namenya.

19:40Nah itu dijelasin pake urn.

19:44Itu yang mem-parsing siapa, misalnya itu ditaruh di mana?

19:48Di XML, biasanya untuk single sign-on untuk ke Active Directory.

19:57Jadi pake, mumpung buka VSCode dan ada project-nya nih, gue lupa.

20:04Gw sih langsung minta, liatin di sensor dulu.

20:08Gak boleh buka sih, jadi gue cuma bilangin aja namanya IDP Metadata.

20:16Jadi namanya Entity Descriptor.

20:19Nanti ada u, entity ID-nya apa?

20:23Terus dia urn, oasis, names, tc.

20:28Samel, nah itu deh, pake untuk single sign-on, pake samel 20 metadata.

20:40Jadi biasanya pake gini nih.

20:45Samel metadata.

20:51Urn, titik 2, oasis, titik 2, names.

20:59Jadi sebenarnya ini nama separatif pake tanda titik 2.

21:07Makanya namanya urn.

21:11Sedangkan kalau url ngacu ke fokasi.

21:16- Yes. - Nice, baru tau. Temen-temen di chat ada yang pernah pake urn?

21:21Atau coba di-share pengalamannya?

21:25- Urn. - Urn.

21:27- Gue bacanya urn, sebenarnya bacanya urn sih. - URN.

21:30- Kalau urn kan bukan url. - URN. Url.

21:38Dan kalau temen-temen mau lihat spesifikasi aslinya, ini dia.

21:44Kalau mau baca, silahkan. Yang bikin apa?

21:49- Pak Ser Tim Berners-Lee. - Tim Berners-Lee yang dulu bikin browser pertama kali ya.

21:56Eh, kok browser sih? WWW ya?

21:58- Web Developer. - Web Developer. The Real Web Developer.

22:04Jadi dia yang membangun jaringan.

22:09Secara harfiah yang mau bangun platform web.

22:13- Dan dia yang bikin sendiri. - Nah, karena ini spesifikasi teknis.

22:16Berarti bisa kita undang dong kesini yang ngobrolin web ya.

22:19- Oh, boleh, boleh. - Minta aja dulu nanti.

22:24- Iya, diterima atau enggaknya belakangan yang penting ngundang. - Iya, itu ada penjelasannya uri, url, urn.

22:32Ada yang sering pakai email tuh?

22:39Katanya, ini kata damar bahaya. Bisa scraping.

22:45Bahaya scraping email.

22:48Di website ada mel2-nya kan gampang banget kan pakai regex kan langsung dapet tuh.

22:55Untuk dapet, ya itu kembali ke...

22:58Oh, scraping alamat emailnya ya.

23:01Kalau memang udah ditaruh publik, ada alamat email ditaruh publik, ya berniat untuk ditunjungi kan.

23:08Oh, kan sempetnya ternyata mel2 misalnya titik 2, Eka, remove this text please at example.com.

23:18Jadi apa, kalau pakai buat scraping, text-nya jadi apa, itu kan alamatnya bukan itu sebetulnya.

23:27- Masih banyak yang pakai kan ya? - Itu akal-akalan.

23:31Iya, akal-akalan nontir. Tapi misalnya kalau kita, kita yang prof level lah, production level banget,

23:40ya mungkin bisa pakai kapcah buat refill.

23:44Di YouTube pakai itu kan? Jadi kalau misalnya YouTube channel, ada above, terus ada alamat emailnya,

23:50kan ada itu security check-nya, refill email address, kita kayak nge-click button dulu, ada JavaScript check-nya,

23:59baru dimunculin alamat emailnya.

24:03- Jadi target spam. - Itu kayaknya berlekuat alamat email string apapun ya,

24:09bukan cuma protokol mel2 aja.

24:13Betul, semuanya bisa di, selama publik ya, udah harus menerima resiko di spam.

24:24Ya itu, atau kita protect, kita protect pakai cara lain ya, sama kayak memprotect resource apapun yang...

24:31- Kan sudah ada spam assassin. - Oh iya, iya.

24:37- Semua email sekarang... - Masih hidup nggak sih? Masih hidup nggak sih project itu spam assassin?

24:42- Wah nggak tahu deh. - Apa itu? Belum pernah pakai.

24:44Sekarang kayaknya pakai Gmail pakai itu kayaknya udah built-in ya, jadi nggak perlu pakai.

24:48- Itu project-nya apa, C? Spam assassin. - Oh.

24:52Iya, pernah dengar, pernah dengar.

24:55Nah, berikutnya, ini yang mungkin sebagai orang juga belum familiar dengan API ini,

25:08jadi si web itu punya JavaScript API untuk menguruskan semua urusan tentang URL.

25:16Jadi kalau misalkan, ya misalkan teman-teman dulu kalau misalkan, wah mau cara manual nih,

25:24mau parsing, misalkan parsing...

25:27- Query parameter. - Query parameter.

25:30- Wah diparsing, apa, cari... - Kurang ming.

25:34Split, split tanda tanya, terus split sama dengan, wah.

25:39Eh, bukan sama dengan. Seprit ini dulu dong, tandadan.

25:43- Seprit tanda tanya dulu. - Oh iya tanda tanya dulu dan...

25:47...habis itu sama dengan, iya kan?

25:50Atau mau construct URL, dia tambahin domain-nya, terus slash sendiri pakai concat string,

25:58terus parameter-nya tambahin lagi sendiri, itu cara dulu.

26:04- Cara manual, sangat manual. - Pusing sendiri.

26:07Atau pakai regex, lebih pusing lagi ya.

26:12Atau...

26:14Oh iya.

26:20Ya.

26:37Ya, jadi API yang sudah built-in di browser.

26:42Betul. Jadi kalau misalkan kita mau berurusan dengan URL,

26:47baik itu mau parsing atau mau bikin URL baru yang valid, gitu ya.

26:52Biasanya kan kita mau bikin apa, mau arahkan seseorang dari halaman satu ke halaman lain kan pakai URL.

26:59Biasanya kita pakai string aja. Dan itu belum tentu valid kan.

27:03Mungkin ada error-kah atau apa, mungkin tiba-tiba HTTP-nya kurang H, gitu kan.

27:09Jadi nggak valid dan akhirnya jadi broken kan link-nya.

27:15Nah, kita bisa manfaatkan si API ini untuk memastikan bahwa HTTP-nya itu udah valid.

27:21Dan kita juga bisa baca. Misalkan ini, kita masukkan sebuah URL.

27:25Misalkan contohnya kita bikin form lah ya.

27:28Masukkan alamat website kamu, gitu kan. Dia masukkin tuh.

27:33Mungkin dia masukkinnya beda-beda. Ada yang pakai HTTPS, ada yang nggak pakai,

27:38ada yang pakai www, ada yang nggak pakai, ada yang pakai /tandatanya, pakai macem-macem lah ya.

27:44Terus kita mau ngambil. Mau ngambilnya hanya sebagai hianya aja.

27:48Misalkan host-nya atau pathname-nya atau query-nya dan lain-lain.

27:52Nah, itu kita bisa gunakan seperti ini.

27:56Biasanya mau get current URL.

28:01Nah, itu udah API lain lagi.

28:04Jadi sebetulnya URL API ini terdiri dari dua interface.

28:09Yaitu URL sendiri, sama yang kedua nanti kita bakal lihat URL Search Param.

28:17Nah, kalau si URL API ini, coba ada interface-nya di Table of Content deh.

28:27Mana Table-nya? Nggak kelihatan. Oh, ini.

28:30Nggak tahu.

28:31Kalau di layer besar sih bisa.

28:34Oh ya, nah, nah, nah. Bawah, bawah, bawah.

28:37URL dan URL Search Param.

28:40Nah, dua-duanya ini interface-nya ada bisa dipakai buat constructor, ya.

28:47Yaitu bisa new URL.

28:49Nah, new URL itu argumennya bisa berupa string.

28:53Yang tadi kan kita lihat contohnya string-nya.

28:56Bisa, sebetulnya bisa objek apapun sih.

28:59Objek apapun yang bisa di stringify.

29:02Contoh gampangnya ada location object.

29:06Nah, kalau kita pengen get current location, ini agak-agak menipu juga sih.

29:11Jadi URL interface itu untuk memanipulasi atau untuk bekerja dengan URL apapun.

29:19Sedangkan ini terpisah.

29:22Kepisah dari URL API, ada juga interface lainnya namanya location.

29:27Location itu untuk current location.

29:30- Nyambungnya gimana? - Windows location.

29:33Karena top-level context kalau di browser, di DOM kan Windows ya.

29:39Windows itu brand.

29:42Windows.location.

29:44Nah, kalau kita pengen dapetin URL dari lokasi saat ini, kita pakai constructor URL tadi.

29:51New URL dalam kurung argumennya, window.location.

29:56Coba aja buka console, apa? Ketik di console log, di DevTools.

30:04Console, new, new URL.

30:09URL dalam kurung window.location.

30:14- Gini? - Enter.

30:22Ya, kita dapat origin-nya.

30:26Origin-nya mana aku, origin-nya di bawah.

30:29- Origin, host, hostname. - Developer.mozilla.org.

30:34- Nggak ada hash. - Pathnya sudah dapat semua.

30:37Path name-nya dapat, yang ini.

30:40- Servesparamnya. - Protokolnya, servesparamnya nggak ada.

30:44- Karena kita nggak pakai serves. - Kita nggak pakai servesparameter.

30:49Atau query string, ya. Query string masuk servesparam.

30:52Window.location-nya sendiri bentuknya string.

30:57Kalau kita ketik window.location, ternyata itu bukan URL object.

31:03Itu bukan URL object, tapi location object.

31:06Dan itu terpisah. Ada interface-nya sendiri.

31:10Dulu tuh, aku sebelum paham, sebelum sepenuhnya paham bahwa ini beda interface,

31:16kayak suka ketukar-tukar karena beberapa property-nya tuh ada yang mirip.

31:21Ya kan sama-sama, misalnya ada origin-nya lah.

31:24Sama-sama ada hostname-nya, jadi ada property yang sama.

31:28Mungkin ada metode, ya sama-sama bisa di-stringify, ya.

31:31Jadi ada beberapa metode yang sama.

31:33Tapi sebenarnya itu beda kasus.

31:35Jadi agak nyebelin, kalau misalnya kita nggak sadar bahwa itu dua interface yang berbeda,

31:42bisa, nanti kita bisa salah.

31:46Misalnya coba mengakses property yang cuma ada di location, tapi nggak ada di URL.

31:53Atau sebeliknya.

31:56Jadi itu sebetulnya buat apa?

32:02Bisa ya.

32:05Oh, itu bisa terlepas ke atas.

32:13Jadi kita nggak perlu, ya kayak tadi manual, kita potong satu-satu, terus naik ke atas ke mana.

32:21Itu dengan cara ini aja, kita udah bisa langsung ke root dari si URL-nya.

32:28Ini berarti, ini berarti path-nya beda.

32:33Path-name-nya naik 1, ya.

32:36Eh, naik 2, ya.

32:38Naik 2.

32:41Kok bisa naik 2, sih?

32:43Iya.

32:44Kita sekarang...

32:45Apa URL ini nggak dianggap sebagai path, gitu?

32:47Oh, karena lo...

32:48Coba titiknya 1, atau coba nggak pakai slash?

32:51Ya, coba aja.

32:52Karena nggak pakai trailing slash, kan.

32:55Oh, iya.

32:56Coba nggak pakai...

32:57Ini 1.

32:58Bukan, bukan.

33:00Karena di location itu dia nggak trailing slash.

33:03Ya, benar.

33:04Benar.

33:05Tidak benar.

33:06Titik slash itu benar.

33:07URL itu dianggap dokumen apa?

33:10URL itu dianggap...

33:15Bukan, apa.

33:16Tidak, dianggap directory.

33:18Coba URL di paling atas, di address lo, tambahin ini.

33:22Tambahin, trailing slash.

33:23Oh, tambahin ending slash.

33:27Oh, dia nggak bisa.

33:28Berarti di window.location-nya aja tambahin slash.

33:32Trailing slash.

33:34Oh, nggak bisa window.location itu kan...

33:37Nggak bisa lah, window.location kan bukan string.

33:39Nggak apa-apa, coba.

33:40.href.

33:41.href.

33:42.href.

33:43.href.

33:44Tambah.

33:45Gini?

33:50Iya.

33:51Ininya 2, 1?

33:52Terserah.

33:532, ya?

33:542 aja, biar bisa dikomper sama yang tadi.

33:57Nah.

33:58Oh iya, betul.

34:00Baru benar.

34:01Ini kayak dianggap dokumen sama dia ya.

34:03Jadi kayak URL.html gitu lah ya.

34:06Betul.

34:07Sama satu node nih.

34:09Turun.

34:10Constructor.

34:11Dibawah tadi.

34:13Terus, terus, terus.

34:15Common Mistake.

34:17Banyak banget.

34:18Oh, ada ya?

34:19Ya.

34:20Static Method.

34:21Stop, stop.

34:22Eh, di atasnya, atas tadi.

34:24Eh.

34:25Stop.

34:26Nah, stop, sedikit ke bawah.

34:28Dibawah, stop.

34:30Constructor ini punya throw error ya.

34:34Jadi harus di try catch.

34:36Oh iya, kalau nggak di catch, terus kita ngapain-ngapain random.

34:41Terus ada kesalahan.

34:42Oh, dia berhenti deh.

34:44JavaScriptnya stop.

34:46Itu Common Mistake.

34:48Sering banget gue nemuin itu.

34:50Jaman dulu.

34:52Apa sih yang bikin kita?

34:54Siapa sih yang bikin ini?

34:56Taunya?

34:58Siapa?

35:00Gue sendiri.

35:02Sudah biasa.

35:04Sudah sering terjadi.

35:06Itu ada meme-nya nggak sih?

35:08Kayak Scooby Doo itu loh.

35:10Kan biasanya penjahatnya, apanya, nyamar jadi hantu,

35:12pas dibuka, ternyata orangan.

35:14Nah, itu kayaknya ada meme-nya,

35:16pas dibuka, ternyata kita sendiri.

35:18Nah, ini ada pertanyaan dari Lamar.

35:22"Pakai API URL ini, apa bisa atur CSS

35:26agar bisa styling anchor tanpa JavaScript?"

35:30Pengennya kayak...

35:32Kayaknya belum bisa dicampur ya.

35:34Eh, bisa aja.

35:36Kalau kita tahu exact URL-nya,

35:38tapi nggak usah pakai sudo yang...

35:40apa, titik 2, 2 kali gitu.

35:42Jadi gimana tuh?

35:44Kayaknya bisa, coba.

35:46Ya, coba aja.

35:48Coba.

35:50Coba, coba.

35:52Live code kita, live code.

35:54Let's go, let's go.

35:56Coba ya, gimana caranya sih?

35:58Cresen ya?

36:00Cresen.

36:02Live code.

36:04Live code kita.

36:06Misalnya kita pengen...

36:10Sudah?

36:12Sudah, sudah menjual?

36:14Sudah, sudah.

36:16Kita pengen...

36:18Yang link-nya ini ya.

36:20"Uniform Resource Locator"

36:24Oke.

36:26Loh, nggak kelihatan kodenya.

36:28Iya.

36:30Ini cuma share...

36:32Share full screen ya?

36:34Share window ya?

36:36Ya, share window.

36:38Atau share...

36:40Entire screen.

36:42Tapi hati-hati,

36:44entire screen ya.

36:46Nggak ada apa-apa di sini sih.

36:48Matiin dulu kerja, nggak ada NDA-nya.

36:50NDA-nya.

36:52Matiin dulu ya.

36:54Kalau nggak, share window aja.

36:56Jadi bolak-balik, tapi...

36:58Share window.

37:00Aman.

37:02Sudah share belum?

37:04Sudah, sudah.

37:06Kita pengen share sih link yang ini nih.

37:08Tambah.

37:10Coba deh.

37:12Coba kayak gini dulu ya.

37:14"Semua Angkor kan pasti ada rev-nya."

37:18"Color Gigi."

37:20"Color Hot Pink."

37:22Ah, nggak berubah.

37:24Nggak bisa berarti.

37:28Bentar-bentar.

37:30Nggak mau nyerah gitu.

37:32Bisa dong.

37:34Oh, important.

37:36Iya.

37:38Ini kan spesificity-nya lebih tinggi.

37:40Oh, keren.

37:42Tapi kelihatan nggak? Sekarang di DevTools kita bisa lihat spesificity-nya selektor ini.

37:48Iya, barusan dikasih tau sama Mbak Jesseline.

37:52Di salah satu update DevTools.

37:54Oh, kita tahu nih kenapa kalah spesificity-nya kalah.

38:02Peralitasnya ya.

38:06Gue paling suka kalau ngasih CSS itu pakai important sama position absolute.

38:12Atau diulang selektornya.

38:16Tapi hati-hati ya.

38:18Kalau important itu kan priority ya.

38:20Jadi kalau semuanya important ya nggak ada priority jadinya ya.

38:24Jadi berantem lagi ya.

38:26Tergantung spesificity-nya lagi.

38:28Spesificity.

38:30Kalau spesificity-nya sama tergantung urutan. Yang menang yang bawah.

38:36Ya udah itu kalau semuanya important nanti temen kerja kita nggak override style kita di bawahnya important.

38:42Kita kalah, tak pusing edit lagi bawahnya udah gitu aja terus.

38:46Coba kasih itu hrefnya.

38:48Hrefnya yang khusus Uniform Resource Locator aja.

38:54Ini yang pink ya.

38:56Coba. / Ya. Glossary URL.

39:00Ya nggak bisa loh.

39:02Nggak bisa. / Nggak bisa bentar.

39:04Coba kalau pakai ini. / Nggak bisa sama dengan.

39:06Bisa.

39:08Bisa.

39:10Aisik.

39:12Background yang ini.

39:14Keren.

39:16Buta warna.

39:18Important.

39:20Font size.

39:22Font size nggak bisa ya kalau inline.

39:24Ya gitu deh.

39:26Ya jawabannya bisa berarti.

39:28Ya mantap.

39:30Sudah terjawab ya.

39:32Ya seru nih ya menjawab pertanyaan dengan lab quote.

39:36Oke lanjut.

39:38Ada lagi yang menarik?

39:40ToString.

39:42Ya ini biasa ya kalau misalkan temen-temen.

39:44Jadi kan URL itu bisa.

39:46New URL-nya kan merutan objek ya.

39:50Objek URL ya.

39:52Nah URL objek.

39:54Ya URL objek seperti tadi.

39:56URL objek ini.

39:58Sama dengan objek biasa nggak?

40:02Ya kan objek khusus.

40:06Ada property khususnya, ada method khususnya.

40:08Misalkan saya mau gini.

40:10Kita bisa akses property-nya.

40:12Bisa kan. / Bisa.

40:14Cuma itu dia kayak.

40:16Itu property khusus URL objek.

40:18Kayak tipenya lah ya.

40:20Untuk nambah Inquiry String.

40:22Bisa kayak tadi URL.searchparams.

40:26Dimana gini?

40:28Ya URL.

40:30Ketika aja URL.searchparams itu.

40:32Ada autocomplete.

40:34Dot.

40:36Eh.

40:38Dot apa?

40:40append.

40:42Bisa nggak sih? / Oh ya append.

40:44Bisa bisa.

40:46Key value.

40:48Di objek-objek.

40:50Message sama dengan.

40:52Gak pakai sama dengan.

40:54Message.

40:56Koma.

40:58Oh key value. / Hello world.

41:00Hello world. / Hello world.

41:02Hello world.

41:04Ini ya.

41:06Ya sekarang URL.

41:08Buka URL.

41:10URL.toString.

41:12ToString.

41:14Eh. / ToString.

41:16Ya.

41:18Itu juga ada mesejnya.

41:20Automatiskan. / Asiknya ya.

41:22Ya.

41:24Nah sebaliknya coba.

41:26Apa?

41:28Coba buka deh URL.

41:30Dikasih query parameter sembarang.

41:32Bisa juga kalau mau

41:34menghapus.

41:36Susahkan kalian to the sign.

41:38Nampilin sesuatu.

41:40URL.searchparams.delete.msg.

41:42Hmm.

41:44Gini?

41:46Terus?

41:48Nah ini ada

41:50ada kopasannya.

41:52Sampai punya kopasan. Karena sering

41:54pakai ini.

41:56Oke from entries.

41:58Ini buat? / Diknis sih.

42:00Tapi capek. / Oh.

42:02Dapat ini ya. / Ya buat ambil, buat nge-access itunya.

42:04Enaknya satu baris doang.

42:06Gak usah kusing-kusing. Splat-split.

42:08Splat-split sama sini. Terus

42:10nge-access array.

42:12Hmm.

42:14Sama itu buka apa?

42:16Siapa yang selama ini melakukan itu secara

42:18manual.

42:20Saya. / Tapi nggak apa-apa. Tapi makin lama

42:22makin ribet.

42:24Iya. / Betul-betul.

42:26Harus didalam try-catch.

42:28Yes.

42:30Sebetulnya yang

42:32bisa throw error ini kan

42:34kalau URLnya salah. / URLnya seperti apa?

42:36Kalau misalkan ya URLnya salah.

42:38Gimana caranya kita bikin URLnya salah. / Coba aja.

42:40Coba aja URLnya kosong argumennya.

42:42Ini aja? / Iya.

42:44Iya.

42:46Nah ini ya.

42:48Atau string. Sekarang string

42:50sembarang. New URL.

42:52Titi-titi bisa.

42:54Test.

42:56Oh bisa. / Jadi

42:58kalau misalkan kita mau bikin kayak gini kan

43:00const redirect

43:02sama dengan new URL

43:04sembarang.

43:06Maka dia error kan.

43:08Ketika kita redirect.

43:10Biasanya nggak ketahuan. Karena URLnya

43:12mungkin variable.

43:14Nol undefined. Object-object.

43:16Iya.

43:18Iya. Terus begitu

43:22form-nya di-submit.

43:24Kok nggak redirect?

43:26Tiba-tiba lihat di console ada error.

43:28Iya.

43:30Langsung nge-break semua. Jadi harus

43:32dipakai try-catch.

43:34Jangan lupa.

43:36Oke.

43:38Sambil buka itu coba

43:40dokumentasi mdn yang location.

43:42Biar kita bisa... / Location sebentar.

43:44Ya.

43:46Yang location ini.

43:48Jadi tadi kan untuk

43:54URL. Nah kalau location

43:56ya ini. Represents

43:58the location of the object

44:00is linked to.

44:02Jadi intinya current sih.

44:04Current location.

44:06Dan ternyata bisa di-document.

44:08Bisa di-window location.

44:10Nah ini sebagian property-nya

44:12sama kayak URL.

44:14Cuma ada yang lain juga.

44:16Jadi kayak origin

44:18ref-nya sama kan.

44:20Oh. Bagus ya.

44:22Tapi nggak keliatan ini. Apa...

44:26Kuliatan.

44:28Keliatan ya.

44:30Warnanya agak... / Keliatan.

44:32Emang sengaja yang

44:34lagi nggak di-highlight.

44:36Di abu-abu muda.

44:38Kontrasnya juga. / Yes. Ini location

44:40anatomy. Ini mirip juga sama

44:42URL tadi ya.

44:44Iya kan soalnya

44:46location itu pointing ke URL

44:48yang saat ini lagi

44:50dipakai. Cuma method-nya ya nggak

44:52semua ada.

44:54Di sini ada beberapa

44:58instance properties. Ada

45:00ref. Tadi juga di

45:02URL juga ada ref.

45:04Ada protocol, ada host, ada hostname, sama ya.

45:06Ada port, pathname,

45:08search.

45:10Nah yang membedakan apa?

45:12Yang paling utama sih... / Kapan kita harus

45:14menggunakan location? Kapan menggunakan

45:16URL? API-nya?

45:18Nggak. Location itu

45:20dia interface, tapi dia nggak punya

45:22constructor. Jadi kalau tadi kan kita bisa

45:24sembarang tuh menu URL

45:26dalam purung, masukin argument,

45:28blablabla. Atau bahkan yang belum kita

45:30lihat detail ini kan URL search

45:32params. Kita belum lihat MDN-nya ya.

45:34Tapi itu juga bisa new URL

45:36search params dalam

45:38kurung tadi apa? Argumen.

45:40Nah, tapi kita nggak bisa

45:42new location. Karena itu cuma

45:44bisa window.location ya udah

45:46itu pointing ke halamannya ya.

45:48Sedang kita access.

45:50Ya, ya, ya. Ngerti, ngerti, ngerti.

45:52Ivan, ada yang mau ditambahin tadi?

45:54Iya, maksudnya kalau

45:56kayak untuk window

45:58location object yang ada di window itu

46:00itu langsung berhubungan

46:02sama si location

46:04ya si browser.

46:06API-nya untuk menguntung.

46:08Jadi kalau misalnya window.location.

46:10reload.

46:12Contohnya, itu kan... / Oke.

46:14Ada metodnya juga. Nah, itu kan metod itu

46:16cuma ada buat location. Nggak bisa

46:18kita new URL. Misalnya tadi kita bikin

46:20URL object, pakai constructor,

46:22terus new URL, reload

46:24yang nggak terjadi apa-apa. Karena

46:26nggak berurusan sama lokasi yang ada

46:28di browser. / Sepertinya location ini

46:30juga implement

46:32URL interface.

46:34Under the hood itu... / Dan location ini itu

46:36kelas baru.

46:38Bukan kelas, eh

46:40location ini kelas bukan interface.

46:42Oh, sorry.

46:44Is interface. / Ini

46:46location ini interface atau kelas?

46:48Interface. / Interface. URL baru kelas.

46:50Cuma nggak dekonstruktor, nggak dekonstruktor

46:52aja.

46:54Oke.

46:56Dia langsung, langsung manggil gini.

46:58Kayak static. / Bisa replace.

47:00Jadi kita bisa memanipulasi

47:02ya, ini routing lah. Sebenarnya ini

47:04client-side routing itu urusannya

47:06sama location. Bukan sama

47:08bukan secara langsung sama

47:10URL object.

47:12Kalau bfcache itu di mana ya?

47:14Apa?

47:16Sudah pernah pakai bfcache.

47:18Back-forward cache. / Oh,

47:20back-forward cache.

47:22Belum pernah pakai. / Kayaknya berhubung

47:24juga sama URL dan location.

47:26Cuma gua belum pernah, belum pernah coba.

47:28Itu kayaknya fitur browser. / Ada di application.

47:30Iya ada di application.

47:32Ada di application, kan?

47:34Ini bisa window dot

47:36location

47:38dot

47:40replace. / Coba penasaran back-forward

47:42cache. / Iya bisa replace

47:44pakai full.com atau

47:46replace

47:48web.dev lah.

47:50Ya, web.dev.

47:52Atau

47:54nggak pakai HTTPS bisa?

47:56Pakai, ya. Pakai kayaknya deh.

47:58Harus ya? / Nanti jadinya Pat.

48:00Ya coba aja.

48:02Tuh, dia nge-refresh langsung ya.

48:04Tapi page not found karena

48:06dia nambahin di / terakhir ya.

48:08Dianggap Pat.

48:10Sekarang coba pakai

48:12HTTPS.

48:14Tadah!

48:16Tadah!

48:18Iya, jadi kita kalau mau

48:20redirect secara

48:22programatically, nggak pakai

48:24URL, eh, sorry.

48:26Nggak pakai anchor.

48:28Kita bisa gunakan dot replace, bisa pakai reload

48:30juga kalau mau refresh. Teman-teman harusnya

48:32udah tahu ya window dot location dot reload ya.

48:34Apalagi kalau jaman dulu ya.

48:36Belum reload time, tiap 5 detik

48:38reload. / Maksudnya

48:40yang serangannya cross-side.

48:42Cross-side itu. / XSS.

48:44XSS. / Iya.

48:46Di comment box, ditambahin location dot

48:48replace, dan dialihkan

48:50ke spam side yang

48:52domainnya mirip. / UO sama ya.

48:54Kan begitu orang visit langsung

48:56ke replace.

48:58Pindah ke tempat lain.

49:00Bisa. / Bisa, bisa.

49:02Bisa, tapi ya itu berarti

49:04kita harus diserang dulu, sampai

49:06ada yang bisa, atau

49:08mungkin extension ya. Bahaya

49:10kalau ada extension yang ada

49:12vulnerability-nya, extension

49:14kan bisa langsung access dong kan.

49:16Atau apapun itu,

49:18maksudnya nggak cuma extension sih, apapun

49:20yang bisa ngejalanin client-side

49:22JavaScript di halaman kita.

49:24Nah, itu ya.

49:26Cuma kalau misalnya

49:28ada issue security

49:30yang bisa ngejalanin JavaScript

49:32di client-side T-browser

49:34kita, itu mah kayaknya udah

49:36emang udah either way

49:38udah tamat.

49:40Maksudnya bakal bermasalah banget.

49:42Cookies bisa dibaca.

49:44Jadi ya udah, kayaknya segala macem

49:46masalah. / Selesai.

49:48Udah pasti. / Udah selesai hidup dulu.

49:50Iya.

49:52Jadi kalau misalkan teman-teman

49:54nih, apa, mau

49:56coba-coba, iseng ah,

49:58coba-coba, baik itu location

50:00ataupun URL, bisa tuh

50:02projeknya bikin

50:04apa namanya, bikin

50:06routing library sederhana.

50:08Pakai API, apa

50:10URL web API ini.

50:12Buat latihan, buat latihan.

50:14Buat tugas akhir.

50:16Buat tugas akhir.

50:18Tugas akhir, routing

50:20library. Seru juga sih itu.

50:22Membuat sendiri routing library.

50:24Itu, apa,

50:26rumusan masalahnya apa itu?

50:28Ya, yang super

50:32cepat deh.

50:34Terus, kodanya

50:36cuma 9 kilobytes.

50:383 baris.

50:403 baris.

50:423 baris tapi mini fight sebetulnya.

50:449 kilobytes mini fight sih.

50:46Oke.

50:54Bah, siapa lagi kita?

50:56Terakhir. / Itu URL

50:58search apa?

51:00Oh ya tadi ya, URL search param ya.

51:02Iya bener-bener. Tadi kita belum coba.

51:04URLs.

51:06Jadi kan, sebenarnya URL API

51:08ada 2 tadi kan terdiri dari

51:10URL sama

51:12URL search params.

51:14Domain yang ini, domain

51:16apa? Puni code.

51:18Puni code domain. / Oh ya.

51:22Apa itu puni code? / Karakter domain.

51:24Nanti ya, abis ini.

51:26Nanti ya, abis ini ya.

51:28Oke, ini search param tadi

51:30cara pakainya hampir sama. / Cepat aja.

51:32Ini untuk query parameter.

51:34Jadi kalau apa? Singkatnya

51:36ini PLDR-nya semua.

51:38Kalau kita pengen memanipulasi

51:40lokasi URL di browser

51:42saat ini, pakainya tadi kan

51:44location interface.

51:46Kalau mau kerja

51:48dengan URL, tadi URL

51:50interface. Kalau khusus

51:52query parameter, pakai

51:54URL search params.

51:56Nah, jenis objek dengan

51:58interface URL search params ini

52:00juga sebetulnya bagian dari

52:02objek URL tadi.

52:04Apa? Property search params ya.

52:06Ini.

52:10Hasilnya adalah 14.

52:14Ini biasanya

52:16itu isinya

52:18objek key value pair. / Isinya apa?

52:20Oh, key value.

52:22Oh, yang tadi, tanda tanya tadi ya?

52:24Iya. / Iya.

52:26Setelah tanda tanya. / Setelah tanda

52:28tanya. Jadi kalau misalkan ini

52:30tadi kita pakai di sini ya.

52:32MSG gitu. Pakai tanda tanya enggak?

52:34Enggak ya. / Enggak usah. / Objek.

52:36Kayaknya biasanya objek deh. Lupa-lupa

52:38ingat. Coba-coba.

52:40Test. Gitu.

52:42Size 1.

52:44Coba

52:46sekarang itu dikopas aja, new URL

52:48search params, blablabla.

52:50.toostring.

52:56Jadi kalau kita mau

52:58generate gitu ya.

53:00Mau generate

53:02search parameter yang

53:04dalam jumlah banyak, misalkan

53:06status. / Status, sukses.

53:08Oke.

53:10Terus apa lagi?

53:12Active

53:14dengan

53:161.

53:18Nah, enak kan?

53:20Enak ya.

53:22Jadi nggak perlu, kita cukup bikin

53:24objek aja.

53:26Objeknya di append-apend-apend ditambah-tambahin.

53:28Nanti habis itu tinggal kita

53:30masukkan ke

53:32constructor ini.

53:34Kita manggil kita ini

53:36instantiate ya.

53:38Trus jadi string.

53:40Habis itu udah bisa ditempelkan

53:42ke URL yang

53:44tadi kita pakai, new URL tadi.

53:46Bisa ditambahkan ini.

53:48Kalau kita belum tahu

53:50caranya pakai URL search

53:52parameter ini lumayan pusing kan,

53:54objeknya dijadikan array,

53:56atau diiterate,

53:58diiterate dibikin, terus

54:00buat

54:02satu persatu key value-nya

54:04dimasukin key,

54:06pakai string literal, key sama dengan

54:08value, terus

54:10di-join lagi pakai tanda

54:12dan, pakai tanda

54:14ampersan, capek.

54:16Kalau ini satu baris selar.

54:20Apa nih, test value-nya

54:22ada special character

54:24di URL,

54:26special character. Maksudnya apa?

54:28Test value-nya ada special character

54:30di URL search parameter.

54:32Special character itu apa?

54:36Oh, pakai

54:38test

54:40dulu.

54:42Bukan, special character mungkin

54:44itu, apa namanya?

54:46Ya, contohnya

54:48add dollar

54:50hash.

54:52Ya, bisa.

54:54Nah, ini jadi

54:56di-encode ya?

54:58Oh iya, special character

55:00gini ya.

55:02Tinggal pakai

55:04di-code qri component ya,

55:06kalau kita mau nge-access.

55:08Minus, plus, underscore, slash,

55:10backslash, bintang.

55:12Ini jadi apa?

55:14Tanda tanya jadi apa?

55:16Tanda tanya.

55:18Jadi

55:20di-encode semuanya ya?

55:22Kalau minus enggak ya, berarti ya?

55:26Underscore juga enggak?

55:28Enggak.

55:30Cara nge-decode-nya gimana?

55:32Kalau ini cara nge-decode-nya?

55:34Decode qri component.

55:36Yes.

55:38Decode qri component.

55:40Ini new lagi?

55:42Pakai new?

55:44Langsung aja?

55:46Langsung.

55:48Oh iya, string apapun argumennya.

55:50Yes.

55:52Ini ya.

55:54Hmm.

55:56Seru, seru, seru.

56:00Oke.

56:04Eka yang cewek, apa sih?

56:06Iya, bukan Ivan yang cewek.

56:10Iya, bukan Ivan.

56:14Oke. Tadi mau bahas apa?

56:16Domain apa tadi?

56:18Domain name.

56:20Domain name, yang mana?

56:22Jadi kan, kan kita udah liat nih,

56:24kalau path sama query string.

56:26Path sama query string kan

56:30tadi karakternya ya boleh apa aja,

56:32suka-suka, tapi bakal di-convert

56:34encode jadi

56:36uri component, jadi karakter

56:38khusus tuh, kayak tadi tanda tanya

56:40jadi %3f atau semacamnya.

56:42Tapi khusus domain name

56:44ada restriction-nya.

56:46Punya restriction-nya.

56:48Puni code, yes.

56:50Jadi bisa kalau...

56:52Bisa, tapi kayak di-convert to

56:54jadi encode ya?

56:56Bukan karakter aneh-aneh,

56:58yang benar adalah karakter yang

57:00di luar ASCII.

57:02Contohnya...

57:04Contohnya ya

57:06Chinese character, Japanese character,

57:08atau...

57:10Tahu kan ya, kalau German keyboard,

57:12atau Spanish keyboard,

57:14itu kan memang ada...

57:16Ada titik-titik di tempat aneh.

57:18Ya, namanya puni code.

57:20Puni code.

57:22Jadi bisa...

57:24Bisa dirubah dari...

57:28Itu.

57:30Dari browser ya? Berarti browser yang implement kan?

57:32XN blablabla.

57:34Kalau ada penanda ASCII,

57:36XN dash-dash,

57:38saya suka pakai...

57:40Puni code encoder.

57:42Puni coder.

57:44Itu contohnya bisa pakai.

57:46Oh, ada itu-nya.

57:48Ada tools-nya.

57:50Puni coder.com.

57:52Itu tadi yang dari emoji,

57:54yang dari Wikipedia.

57:56Coba.

57:58Itu ada yang...

58:00Puni code, for example, XN dash-dash EE.

58:02Yang ini di-copy ya?

58:04Ya, ya copy.

58:06A-A.

58:08Terus, .com contohnya.

58:10Kan misalnya mungkin beli itu .com.

58:12.ws?

58:14Kebalik, kebalik, kebalik dari sebelah.

58:16Ya, .ws.

58:18Oh, convert to text ya?

58:20Nanti, I love WS.

58:22Oh, jadi bisa di...

58:24Domainnya bisa dibeli beneran.

58:26Iya, iya, iya.

58:28Tapi langsung di-convert kan? Gak kelihatan kan?

58:30Oh, iya.

58:32Jadi, maksudnya user kita,

58:34orang yang mau akses,

58:36bisa nge-tick pakai karakter non-asci.

58:38Misalnya pakai emoji tadi.

58:40Begitu di-enter,

58:42sama domain tuh kayak di-convert ya.

58:44Berarti jadi XN.

58:46Sama yes and no.

58:48Karena gini, contohnya.

58:50Di Cloudflare, ataupun di tools yang mana pun,

58:52kadang mereka gak terima puni code.

58:54Atau PHP kita,

58:56error kalau terimanya

58:58non-asci karakter untuk URL.

59:00Jadi kita,

59:02instead of pakai

59:04puni code di address bar,

59:06kita pakai XN

59:08des des des des

59:10bla bla bla itu yang sudah di-encode itu.

59:12Oh, berarti kita harus

59:14handle sendiri ya?

59:16Iya, kita handle sendiri.

59:18Contohnya di...

59:20Gua belum pernah coba, contohnya

59:22di WordPress ini, contohnya.

59:24Sorry.

59:28Lebih tepatnya,

59:30di RPC atau di settingnya

59:32di Nginx,

59:34virtual host-nya.

59:36Mau pakai yang mana? Yang sudah di-encode apa non-encode?

59:38Gua gak tahu.

59:42Ntar coba sendiri deh teman-teman, kasih tahu.

59:44Virtual host-nya pakai yang

59:46encoded,

59:48atau puni code?

59:50Untuk virtual host-nya.

59:52Jadi, kalau mau buka

59:54situsnya, hasilnya apa?

59:56Kasih tahu ya.

59:58Wah, lucu sekali ya.

1:00:00Nah, berarti ini layer-nya banyak ya.

1:00:02Di tingkat registrar,

1:00:04tempat kita mendaftarkan domain,

1:00:06berarti belum tentu boleh tuh. Tadi di Wikipedia pun

1:00:08ada tulisannya kan, apa?

1:00:10Cuma bisa di top-level domain, bla bla bla,

1:00:12di cloudflare misalnya gak...

1:00:14di layanannya sendiri,

1:00:16cloudflare misalnya belum tentu

1:00:18support. Nah, terus

1:00:20kita harus handle

1:00:22busing juga ya.

1:00:24Ya, tinggal dicari.

1:00:26Bisa dicari,

1:00:28kalau mau ke

1:00:30domain provider,

1:00:32sesaja yang bisa.

1:00:34Karena gini, tergantung

1:00:36specialized juga kan.

1:00:38Special, apa namanya,

1:00:40karakternya ada di bahasa apa?

1:00:42Kalau misalnya kita

1:00:44.us.

1:00:46Ini itu international

1:00:48domain names, IDNs.

1:00:50Oh iya, kira-kira ini Indonesia ya.

1:00:52Ya, itu TLD yang support,

1:00:54itu cuma ada

1:00:56availability,

1:00:58untuk emoji domain.

1:01:00Untuk emoji domain.

1:01:02Ada yang spanish karakter,

1:01:06dia, misalnya

1:01:08hanya di domain yang spain,

1:01:10contohnya.

1:01:12Atau yang russian, russian itu karakter apa?

1:01:14Devorak ya? Eh, bukan Devorak.

1:01:16Russian karakter itu apa istilahnya?

1:01:18Ya.

1:01:20Russian karakter itu?

1:01:22Trilic.

1:01:24Trilic doang.

1:01:26Trilic karakter hanya bisa di support

1:01:28di .ru, contohnya.

1:01:30Kita nggak bisa daftarin di .us.

1:01:32Berarti kan masing-masing

1:01:34TLD

1:01:36registrar kan

1:01:38itu terserah mereka kan.

1:01:40Misalnya kalau

1:01:42yang Jerman, ya otomatis dia kan

1:01:44customer base nya dari Jerman

1:01:46dan mungkin pakai karakter bahasa mereka,

1:01:48mereka support.

1:01:50Kalau misalnya malas emoji nggak support,

1:01:52suka-suka mereka berarti ya.

1:01:54Mereka yang mutusin untuk men-support

1:01:56kombinasi karakter.

1:01:58Berarti ketauan kok kalau mau beli bisa atau nggak.

1:02:00Pasti direject.

1:02:04Nah itu ada warning dari icon.

1:02:06Kenapa?

1:02:10Kalau domain.id, bisa

1:02:12ini nggak bahasa se-kerta?

1:02:14Gak tahu, coba aja.

1:02:18Gak seisen gitu lah.

1:02:20Buat apa? Malah lebih susah.

1:02:22Orang kita mau buat mudah kan,

1:02:24buat emoji, ini malah bahasa

1:02:26se-kerta.

1:02:28Masalahnya nggak ada keyboard set

1:02:30yang support se-kerta.

1:02:32Kalau Jerman, Spanis mau ada.

1:02:34Iya, kalau misalnya

1:02:36keyboardnya

1:02:38ini

1:02:40Chinese, masa

1:02:42kalau dia mau type

1:02:44ASCII, dia harus ganti keyboard dulu kan.

1:02:46Lebih susah kan sebenarnya.

1:02:48Jadi belum direkomendasikan

1:02:50secara umum ya?

1:02:52Bukan, tergantung target market.

1:02:54Kan kalau misalnya

1:02:58di China,

1:03:00mereka semua keyboardnya itu

1:03:02by default, pingin.

1:03:04Ya kan?

1:03:06Kalau mereka mau

1:03:08kunjungi google.com,

1:03:10kan mereka harus ganti keyboard ceritanya.

1:03:16Oh, ini bisa buat ini nih,

1:03:18pemendek URL, menuju

1:03:20kesini, pasti udah ada yang

1:03:22beli ini.

1:03:24Wuh, .fm.

1:03:26Cuman ada .2

1:03:28nya, tapi udah

1:03:30tidak berlaku.

1:03:32Jadi mainan, mainannya di domain nih.

1:03:36.2/

1:03:42ngobrolin web.

1:03:44Gitu kan, kan keren.

1:03:46Tapi sayangnya udah gak ada.

1:03:50Nah, ini

1:03:54ada yang out nih, ngomong-ngomong soal

1:03:56keyboard, pernah liat ke Eka pakai speed keyboard?

1:03:58Wuih.

1:04:00Oh iya, pakai speed keyboard?

1:04:02Yoi, cuma lagi gak di bawah sekarang.

1:04:04Custom, custom.

1:04:06Oh, custom.

1:04:08Jadi satu

1:04:10keyboard, satu calculator, bukan?

1:04:12Yaa.

1:04:14Biar dunamis.

1:04:16Biar sakit punggung, penyakit developor.

1:04:18Kira kasir apa pakai calculator

1:04:20doang, yang nampet

1:04:22doang gitu.

1:04:24Tapi dia cepet banget tuh, ngetiknya.

1:04:26Ada, ada yang pakekan gamer,

1:04:28pakenya itu. Cuma

1:04:30buat arrow doang.

1:04:32Oh, berarti kalau,

1:04:34kalau split keyboard, berarti

1:04:36ini ya, sangat disiplin

1:04:38ngetik sepuluh jari ya.

1:04:40Karena gak bisa lari-lari kan, susah ya.

1:04:42Spasinya dimana? Kiri apa kanan Eka?

1:04:46Di kaki.

1:04:48Di kaki.

1:04:50Oh di kaki split.

1:04:52Kayak gas gitu.

1:04:54Gas mobil.

1:04:56Enak kan?

1:04:58Ada tuh, yang pakai gitu juga

1:05:00ada. Jadi, control misalkan.

1:05:02Kontrol pakai kaki

1:05:04kiri. Jadi dia gak perlu pencet

1:05:06kontrol, kontrol C ya udah, kaki kiri dan

1:05:08huruf C.

1:05:10Ada lagi, itu namanya pakai

1:05:12dia namanya password keyboard.

1:05:14Jadi

1:05:16karakternya itu sudah kayak disusun

1:05:18password-nya kita, panjang gitu.

1:05:20Jadi kalau mau type password

1:05:22tinggal tik-tik-tik-tik-tik-tik-tik aja gitu.

1:05:24Berarti semua orang yang lihat keyboard ini

1:05:26tahu passwordnya dia dong?

1:05:28Ya kan keyboardnya di rumah.

1:05:30Jangan usah dilihat.

1:05:32Gak ada keycapnya ya.

1:05:34Keycapnya polosnya.

1:05:36Bisa di program lah.

1:05:38Jadi kalau passwordnya

1:05:40berubah, masa ganti keyboard.

1:05:42Beli lagi.

1:05:44Jadi reset dari keyboardnya aja lah.

1:05:48Ada-ada aja.

1:05:52Baiklah, kalau begitu kita sudah

1:05:54ngelantar kemana-mana gara-gara Andri.

1:05:56Jadi gak bahas url coba.

1:06:00Bahasnya emoji.

1:06:02Tapi

1:06:04lumayan ya, seru ya.

1:06:06Cukup ya.

1:06:08Jadi kalau temen-temen

1:06:10besok-besok punya

1:06:12project yang

1:06:14butuh manipulasi url atau

1:06:16perlu mengambil beberapa hal dari

1:06:18query parameter, silahkan gunakan web API-nya.

1:06:20Gak usah pakai

1:06:22split-split string lagi ya.

1:06:24Karena rentan usaha handan,

1:06:28panjang. Timestampnya

1:06:30jadi aneh tapi seru kata Audi.

1:06:32Gak apa-apa.

1:06:34Kita suka yang aneh.

1:06:36Kayaknya loncat-loncat kali pembahasannya.

1:06:40Jadi timestampnya aneh.

1:06:42Bisa jadi.

1:06:44Oke, ada lagi-ada lagi.

1:06:46Kalau gak ada

1:06:48temen-temen yang punya

1:06:50topik, boleh

1:06:52ke bit.ly/ngobrolinweb

1:06:54Kita sudah lama

1:06:56tidak lihat, mari kita lihat.

1:06:58bit.ly/ngobrolinweb

1:07:02Panjang juga ya.

1:07:04Pakai tanda itu tadi.

1:07:08Tanda emoji.

1:07:10Bahas CSS untuk

1:07:14foldable device.

1:07:16Ada yang sudah pakai foldable device belum?

1:07:18Handphone yang bisa

1:07:20di...

1:07:22Mantap.

1:07:24Ada yang sudah disurut develop

1:07:26foldable device belum?

1:07:30Foldable device.

1:07:32Ini kan foldable device, kan gak bilang

1:07:34foldable handphone.

1:07:36Tapi gak bisa

1:07:38CSS juga disitu.

1:07:40Bisa buka web.

1:07:42Saya pakai

1:07:46foldable handphone, tapi

1:07:48masih feature phone.

1:07:50Yang dulu, yang jaman dulu bisa bukanya

1:07:52pakai satu tangan loh. Keren.

1:07:54Sony Walkman.

1:07:56Lu punya Sony Walkman.

1:07:58HP, mereknya Sony Walkman.

1:08:00HP, oh iya, iya.

1:08:02Dulu ada, dulu ada.

1:08:04Dulu pakai Java, jadi belum

1:08:06gak ada browser-nya sih.

1:08:08Tapi udah berwarna.

1:08:10Tapi menarik sih kita bahas

1:08:12foldable device.

1:08:14Kita tandai dulu

1:08:16foldable device.

1:08:18Gemstack, wah ini ngomongin framework-nya.

1:08:20Gemstack-nya kita pernah gak sih?

1:08:22Belum, gemstack belum.

1:08:24Sempet bahas sedikit waktu kita

1:08:26mencari metode rendering

1:08:28sampai kita bahas, tapi

1:08:30tidak mendalam.

1:08:32Kalau technology edge, sudah.

1:08:34Web assembly,

1:08:36coming soon.

1:08:38Stackoverflow, 2022.

1:08:40Ini 2023 kita sekarang.

1:08:42Kayaknya udah ada juga, kan.

1:08:44Data base.

1:08:46Micro front-end juga

1:08:48coming soon.

1:08:50Coming so soon.

1:08:52Semoga coming soon.

1:08:54Semoga coming soon.

1:08:56Itu lucu tuh, HTML6,

1:08:58CSS4.

1:09:00Oh, mungkin kita bahasin

1:09:02yang di-propos-propos ya.

1:09:04Yang ada proposal-nya, tapi belum masuk

1:09:06ke ini. Mungkin menarik ya.

1:09:08Bisa menarik ini.

1:09:10Ya, tapi kalau proposal kan misalnya targetnya

1:09:122-3 tahun ke depan. Gimana?

1:09:1410 atau 20 tahun ke depan.

1:09:16Kayaknya kita semua udah saling bisa

1:09:18beca pikiran atau gimana, udah gak perlu.

1:09:20Gak perlu HTML

1:09:22atau JavaScript lagi.

1:09:24Atau semua udah AI. Kita yang kayak di film apa

1:09:26tuh yang cuma diem doang, gitu.

1:09:28Otak kita pun

1:09:30mikirnya udah di-outsource ke AI

1:09:32kali misalnya.

1:09:34Seru, seru, seru.

1:09:36Oke, kalau gitu.

1:09:38Oke, kalau gitu

1:09:40sudahan dulu malam ini.

1:09:42Kita sudah kehabisan topik.

1:09:44Masihnya topik pembahasan tentang URL.

1:09:46Ya, jadi

1:09:48tunggu aja episode berikutnya.

1:09:50Kita akan bahas tentang apa.

1:09:52Ya, ditunggu juga.

1:09:54Mungkin kita akan bahas

1:09:56salah satu topik yang

1:09:58sudah teman-teman sarankan.

1:10:00Kalau masih ada

1:10:02yang mau disarankan, silahkan ke

1:10:04bit.ly/moblinweb

1:10:06Sekian dari kita untuk malam ini.

1:10:08Selamat malam, selamat istirahat. Sampai jumpa

1:10:10minggu depan. Dadah.

1:10:12Goodnight, bye.

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

Bedah Web - Ngobrolin WEB
EP 166

12 Mei 2026

Bedah Web - Ngobrolin WEB

Berhubung banyak yang submit, malam ini kita akan kembali membedah beberapa situs. Penasaran gimana pendapat para pakar ...

Zona Waktu - Ngobrolin WEB
EP 165

5 Mei 2026

Zona Waktu - Ngobrolin WEB

Salah satu topik yang sebagian besar dari kita banyak tergocek nih. Pernah tergocek dengan urusan timezone, dan daylight...

Vite+ - Ngobrolin WEB
EP 164

27 Apr 2026

Vite+ - Ngobrolin WEB

🕸️ Selasa malam waktunya #ngobrolinweb! Malam ini mari kita bedah vite+ sebuah produk baru dari void0, perusahaan yang...

Komentar