PageSourceSearch

https://book-dun-three.vercel.app/programming

html book-dun-three.vercel.app collected 2026-10-03 06:17:49 UTC 41,188 bytes, 14 lines download raw bytes

1<!doctype html>
2<html data-n-head-ssr lang="en" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22en%22%7D%7D">
3  <head>
4    <title>Programming | Book</title><meta data-n-head="ssr" charset="utf-8"><meta data-n-head="ssr" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="ssr" data-hid="description" name="description" content="A technical blog by Shaun."><meta data-n-head="ssr" name="format-detection" content="telephone=no"><meta data-n-head="ssr" data-hid="charset" charset="utf-8"><meta data-n-head="ssr" data-hid="mobile-web-app-capable" name="mobile-web-app-capable" content="yes"><meta data-n-head="ssr" data-hid="apple-mobile-web-app-title" name="apple-mobile-web-app-title" content="book"><meta data-n-head="ssr" data-hid="og:type" name="og:type" property="og:type" content="website"><meta data-n-head="ssr" data-hid="og:title" name="og:title" property="og:title" content="book"><meta data-n-head="ssr" data-hid="og:site_name" name="og:site_name" property="og:site_name" content="book"><meta data-n-head="ssr" data-hid="og:description" name="og:description" property="og:description" content="A simplistic and boring site that I used to document all things technical that I find interesting and worth a note."><link data-n-head="ssr" rel="icon" type="image/x-icon" href="/favicon.ico"><link data-n-head="ssr" rel="preconnect" href="https://fonts.googleapis.com"><link data-n-head="ssr" rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link data-n-head="ssr" rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,300;0,400;0,600;0,700;1,400;1,600;1,700&display=swap"><link data-n-head="ssr" data-hid="shortcut-icon" rel="shortcut icon" href="/_nuxt/icons/icon_64x64.e3e9fb.png"><link data-n-head="ssr" data-hid="apple-touch-icon" rel="apple-touch-icon" href="/_nuxt/icons/icon_512x512.e3e9fb.png" sizes="512x512"><link data-n-head="ssr" rel="manifest" href="/_nuxt/manifest.7bbea874.json" data-hid="manifest"><link rel="preload" href="/_nuxt/e8ce3ae.js" as="script"><link rel="preload" href="/_nuxt/106e065.js" as="script"><link rel="preload" href="/_nuxt/355a4b6.js" as="script"><link rel="preload" href="/_nuxt/b8750ab.js" as="script"><link rel="preload" href="/_nuxt/0357bcf.js" as="script"><style data-vue-ssr-id="54b08540:0 934cd352:0 998d77aa:0 a57b151a:0 438e1f7c:0 0bd88a32:0 58ef2e4e:0 1b561910:0 df9f958c:0">/*! tailwindcss v2.2.15 | MIT License | https://tailwindcss.com*//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */*,::after,::before{box-sizing:border-box}html{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset{margin:0;padding:0}ol,ul{list-style:none;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}body{font-family:inherit;line-height:inherit}*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}
4input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::after,::before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}@media (min-width:1600px){.container{max-width:1600px}}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0}.top-4{top:1rem}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.right-60{right:15rem}.left-0{left:0}.-left-5{left:-1.25rem}.-left-full{left:-100%}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-auto{margin-top:auto;margin-bottom:auto}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mr-1{margin-right:.25rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-7{height:1.75rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-screen{max-height:100vh}.min-h-screen{min-height:100vh}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-28{width:7rem}.w-72{width:18rem}.w-80{width:20rem}.w-auto{width:auto}.w-3\/4{width:75%}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-full{max-width:100%}.max-w-screen-md{max-width:768px}.flex-1{flex:1 1 0%}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg}@-webkit-keyframes spin{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}@-webkit-keyframes ping{100%,75%{transform:scale(2);opacity:0}}@keyframes ping{100%,75%{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,100%{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,100%{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-4{gap:1rem}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.break-words{overflow-wrap:break-word}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}
4.rounded-tr-md{border-top-right-radius:.375rem}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b-2{border-bottom-width:2px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-l{border-left-width:1px}.border-solid{border-style:solid}.border-transparent{border-color:transparent}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity:1;border-color:rgba(251,191,36,var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.border-purple-400{--tw-border-opacity:1;border-color:rgba(167,139,250,var(--tw-border-opacity))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgba(37,99,235,var(--tw-border-opacity))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgba(167,139,250,var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgba(59,130,246,var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgba(75,85,99,var(--tw-bg-opacity))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgba(255,251,235,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgba(245,243,255,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.focus\:bg-blue-50:focus{--tw-bg-opacity:1;background-color:rgba(239,246,255,var(--tw-bg-opacity))}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-70{--tw-bg-opacity:0.7}.hover\:bg-opacity-10:hover{--tw-bg-opacity:0.1}.object-cover{-o-object-fit:cover;object-fit:cover}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.pt-1{padding-top:.25rem}.pt-12{padding-top:3rem}.pr-4{padding-right:1rem}.pb-5{padding-bottom:1.25rem}.pb-12{padding-bottom:3rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgba(59,130,246,var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.hover\:text-purple-600:hover{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.focus\:text-blue-500:focus{--tw-text-opacity:1;color:rgba(59,130,246,var(--tw-text-opacity))}.no-underline{text-decoration:none}*,::after,::before{--tw-shadow:0 0 #0000}.shadow{--tw-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-sha
4dow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.focus\:outline-white:focus{outline:2px dotted #fff;outline-offset:2px}*,::after,::before{--tw-ring-inset:var(--tw-empty, );/*!*//*!*/--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (min-width:768px){.md\:mb-12{margin-bottom:3rem}.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:border-b-2{border-bottom-width:2px}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width:1024px){.lg\:left-0{left:0}.lg\:flex{display:flex}.lg\:w-1\/4{width:25%}.lg\:flex-none{flex:none}.lg\:flex-row{flex-direction:row}.lg\:justify-end{justify-content:flex-end}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-20{padding-left:5rem;padding-right:5rem}}@media (min-width:1280px){.xl\:px-0{padding-left:0;padding-right:0}.xl\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}}@media (min-width:1600px){.\33xl\:block{display:block}.\33xl\:w-1\/5{width:20%}.\33xl\:max-w-screen-md{max-width:768px}}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;color:#c3cee3;background:#263238;font-family:Roboto Mono,monospace;font-size:1em;line-height:1.5em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#363636}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#363636}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#363636}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.2em;padding:.1em}pre[class*=language-]{overflow:auto;position:relative;margin:.5em 0;padding:1.25em 1em}.language-css>code,.language-sass>code,.language-scss>code{color:#fd9170}[class*=language-] .namespace{opacity:.7}.token.atrule{color:#c792ea}.token.attr-name{color:#ffcb6b}.token.attr-value,.token.attribute{color:#c3e88d}.token.boolean{color:#c792ea}.token.builtin{color:#ffcb6b}.token.cdata,.token.char{color:#80cbc4}.token.class{color:#ffcb6b}.token.class-name,.token.color{color:#f2ff00}.token.comment{color:#546e7a}.token.constant{color:#c792ea}.token.deleted{color:#f07178}.token.doctype{color:#546e7a}.token.entity{color:#f07178}.token.function{color:#c792ea}.token.hexcode{color:#f2ff00}.token.id,.token.important{color:#c792ea;font-weight:700}.token.inserted{color:#80cbc4}.token.keyword{color:#c792ea;font-style:italic}.token.number{color:#fd9170}.token.operator{color:#89ddff}.token.prolog{color:#546e7a}.token.property{color:#80cbc4}.token.pseudo-class,.token.pseudo-element{color:#c3e88d}.token.punctuation{color:#89ddff}.token.regex{color:#f2ff00}.token.selector{color:#f07178}.token.string{color:#c3e88d}.token.symbol{color:#c792ea}.token.tag,.token.unit{color:#f07178}.token.url{color:#fd9170}.token.variable{color:#f07178}.nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;opacity:1;transition:width .1s,opacity .4s;background-color:#000;z-index:999999}.nuxt-progress.nuxt-progress-notransition{transition:none}.nuxt-progress-failed{background-color:red}.nuxt-content{font-family:"Source Serif Pro",serif}.nuxt-content h1,.nuxt-content h2{position:relative;margin-bottom:1rem;cursor:pointer;font-size:1.5rem;line-height:2rem;font-weight:600}.nuxt-content h1:hover,.nuxt-content h2:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.nuxt-content h3{position:relative;margin-bottom:1rem;cursor:pointer;font-size:1.25rem;line-height:1.75rem;font-weight:600}.nuxt-content h3:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.nuxt-content h4{position:relative;margin-bottom:1rem;cursor:pointer;font-size:1.125rem;line-height:1.75rem;font-weight:600}.nuxt-content h4:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.nuxt-content h1:hover a,.nuxt-content h2:hover a,.nuxt-content h3:hover a{dis
4play:block}.nuxt-content h1 a,.nuxt-content h2 a,.nuxt-content h3 a{position:absolute;top:0;left:-1.25rem;display:none}.nuxt-content p,.nuxt-content>ol,.nuxt-content>ul{margin-bottom:2.5rem}.icon.icon-link{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0icmdiKDEwNywgMTE0LCAxMjgpIiBjbGFzcz0iYmkgYmktaGFzaCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNOC4zOSAxMi42NDhhMS4zMiAxLjMyIDAgMCAwLS4wMTUuMThjMCAuMzA1LjIxLjUwOC41LjUwOC4yNjYgMCAuNDkyLS4xNzIuNTU1LS40NzdsLjU1NC0yLjcwM2gxLjIwNGMuNDIxIDAgLjYxNy0uMjM0LjYxNy0uNTQ3IDAtLjMxMi0uMTg4LS41My0uNjE3LS41M2gtLjk4NWwuNTE2LTIuNTI0aDEuMjY1Yy40MyAwIC42MTgtLjIyNy42MTgtLjU0NyAwLS4zMTMtLjE4OC0uNTI0LS42MTgtLjUyNGgtMS4wNDZsLjQ3Ni0yLjMwNGExLjA2IDEuMDYgMCAwIDAgLjAxNi0uMTY0LjUxLjUxIDAgMCAwLS41MTYtLjUxNi41NC41NCAwIDAgMC0uNTM5LjQzbC0uNTIzIDIuNTU0SDcuNjE3bC40NzctMi4zMDRjLjAwOC0uMDQuMDE1LS4xMTguMDE1LS4xNjRhLjUxMi41MTIgMCAwIDAtLjUyMy0uNTE2LjUzOS41MzkgMCAwIDAtLjUzMS40M0w2LjUzIDUuNDg0SDUuNDE0Yy0uNDMgMC0uNjE3LjIyLS42MTcuNTMyIDAgLjMxMi4xODcuNTM5LjYxNy41MzloLjkwNmwtLjUxNSAyLjUyM0g0LjYwOWMtLjQyMSAwLS42MDkuMjE5LS42MDkuNTMxIDAgLjMxMy4xODguNTQ3LjYxLjU0N2guOTc2bC0uNTE2IDIuNDkyYy0uMDA4LjA0LS4wMTUuMTI1LS4wMTUuMTggMCAuMzA1LjIxLjUwOC41LjUwOC4yNjUgMCAuNDkyLS4xNzIuNTU0LS40NzdsLjU1NS0yLjcwM2gyLjI0MmwtLjUxNSAyLjQ5MnptLTEtNi4xMDloMi4yNjZsLS41MTUgMi41NjNINi44NTlsLjUzMi0yLjU2M3oiLz4KPC9zdmc+);display:inline-block;width:20px;height:20px;background-size:20px 20px}.nuxt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity));padding-left:.5rem;padding-right:.5rem;padding-top:.25rem;padding-bottom:.25rem;border-radius:.25rem;font-size:1rem;line-height:1.5rem}.nuxt-content kbd{--kbd-color-background:transparent;--kbd-color-border:hsla(0,0%,50.2%,0.8);--kbd-color-text:#0f1419;background-color:var(--kbd-color-background);color:var(--kbd-color-text);border-radius:.25rem;border:1px solid var(--kbd-color-border);box-shadow:0 2px 0 1px var(--kbd-color-border);cursor:default;font-family:var(--font-family-sans-serif);font-size:.75em;line-height:1;min-width:.75rem;display:inline-block;text-align:center;padding:2px 5px;position:relative;top:-1px}.nuxt-content kbd:hover{box-shadow:0 1px 0 .5px var(--kbd-color-border);top:1px}.nuxt-content-highlight .filename{position:absolute;top:1rem;right:.5rem;z-index:10;border-radius:.125rem;padding-left:.25rem;padding-right:.25rem;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.nuxt-content-highlight pre code{background-color:transparent;padding-left:0;padding-right:0}.nuxt-content a{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.nuxt-content a:hover{text-decoration:underline}.nuxt-content blockquote{margin-bottom:2.5rem;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem;border-left-width:2px;border-style:solid;--tw-border-opacity:1;border-color:rgba(167,139,250,var(--tw-border-opacity));padding-left:1rem;padding-right:1rem;cursor:default;--tw-bg-opacity:1;background-color:rgba(245,243,255,var(--tw-bg-opacity));padding-top:.75rem;padding-bottom:.75rem}.nuxt-content blockquote code{--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity))}.nuxt-content-highlight{position:relative;margin-bottom:2.5rem;max-width:100%;overflow-x:auto;font-size:1rem;line-height:1.5rem}.nuxt-content-highlight pre{border-radius:.375rem}.nuxt-content blockquote p{margin-top:0;margin-bottom:0}.nuxt-content ul{list-style-position:inside;list-style-type:disc;padding-left:1.5rem}.nuxt-content ol{list-style-position:inside;list-style-type:decimal;padding-left:1.5rem}.nuxt-content table{margin-bottom:2.5rem;width:100%}.nuxt-content thead{border-bottom-width:2px;--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity));text-align:left;--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.nuxt-content td,.nuxt-content th{padding:.375rem}.nuxt-content tbody tr{border-bottom-width:1px;border-style:solid;--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.nuxt-content .math-inline mjx-container svg{display:inline}.nuxt-content .math:not(.math-inline) mjx-container svg{display:block;margin:0 auto}.this{transition-property:left,right}.bi[data-v-42209b40]:hover{--tw-text-opacity:1;color:rgba(139,92,246,var(--tw-text-opacity))}.active[data-v-42209b40]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.active[data-v-42209b40]:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.active[data-v-42209b40]{--tw-bg-opacity:0.7;--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.main.nuxt-link-exact-active[data-v-42209b40]{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity));--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.this[data-v-4a92bd9e]:before{position:absolute;content:"";top:-24px;left:0;height:24px;width:100%;display:block;background:transparent linear-gradient(hsla(0,0%,100%,0),#f5f7f9) repeat scroll 0 0}.this:hover .xmtitle[data-v-1f2cec6a]{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.item:hover div[data-v-5faba0f6]:first-of-type{--tw-text-opacity:1;color:rgba(147,197,253,var(--tw-text-opacity))}</style><link rel="preload" href="/_nuxt/static/1717393200/programming/state.js" as="script"><link rel="preload" href="/_nuxt/static/1717393200/programming/payload.js" as="script"><link rel="preload" href="/_nuxt/static/1717393200/manifest.js" as="script">
5  </head>
6  <body>
7    <div data-server-rendered="true" id="__nuxt"><!----><div id="__layout"><div tabindex="0" class="relative lg:flex lg:flex-row" style="color:#0f1419"><div class="lg:flex lg:flex-row w-auto lg:justify-end fixed top-0 bg-gray-100 z-30 lg:left-0 lg:w-1/4 lg:flex-none -left-full"><div class="w-72"><div class="h-screen border-r border-solid border-gray-200 flex flex-col"><div class="flex flex-row px-5 py-3 xl:py-5 xl:px-0 w-auto justify-between border-solid border-b border-gray-200 items-center"><div class="flex flex-1"><div class="hidden md:block h-12 w-12 bg-green-100 rounded object-cover overflow-hidden mr-4"><img src="/_nuxt/img/icon-img.5af7735.jpeg" alt="site icon image"></div> <button aria-label="Toggle navigation bar" aria-expanded="false" type="button" class="block mr-3 md:hidden"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button> <div><div class="text-lg font-bold">Notes</div> <div class="hidden md:block text-xs text-gray-500">
8        My personal take to everything
9      </div></div></div> <button title="Search" class="mr-1 flex items-center text-gray-500 p-3 rounded-full hover:bg-gray-200"><div><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" class="bi bi-search"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"></path></svg></div></button></div> <div class="flex-1 overflow-auto px-5 lg:px-0"><div class="min-h-screen mt-8 pb-5"><div data-v-42209b40><a href="/" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center nuxt-link-active" data-v-42209b40><span data-v-42209b40>Introduction</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/random" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Random</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/minecraft" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Minecraft</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/programming" aria-current="page" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center nuxt-link-exact-active nuxt-link-active" data-v-42209b40><span data-v-42209b40>Programming</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/web-dev" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Web Development</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/blockchain" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Blockchain</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/debug-logs" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Debug Logs</span> <!----></a> <!----></div> <div data-v-42209b40><a href="/math" class="main px-4 h-10 text-gray-700 hover:bg-opacity-10 font-semibold relative flex hover:bg-blue-100 hover:text-blue-600 w-full justify-between items-center" data-v-42209b40><span data-v-42209b40>Math</span> <!----></a> <!----></div></div></div> <div class="this flex-0 px-5 py-4 relative" data-v-4a92bd9e><a href="https://www.gitbook.com" target="_blank" class="cursor-pointer hover:text-blue-500 flex bg-gray-200 rounded-sm px-5 py-3 items-center text-gray-400" data-v-4a92bd9e><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="currentColor" viewBox="0 0 1067 769" xmlns="http://www.w3.org/2000/svg" stroke="none" class="text-4xl block" data-v-4a92bd9e><g data-v-4a92bd9e><path d="M480.026 640.677c17.205 0 31.2 13.997 31.2 31.194s-13.995 31.193-31.2 31.193c-17.197 0-31.193-13.996-31.193-31.193 0-17.197 13.996-31.194 31.193-31.194m489.93-193.226c-17.203 0-31.2-13.998-31.2-31.195 0-17.204 13.997-31.2 31.2-31.2 17.198 0 31.194 13.996 31.194 31.2 0 17.197-13.996 31.195-31.193 31.195m0-127.804c-53.269 0-96.609 43.34-96.609 96.609 0 10.373 1.723 20.702 5.123 30.741L559.328 616.879c-18.132-26.128-47.521-41.617-79.302-41.617-36.821 0-70.391 21.065-86.63 54.003L106.68 478.109c-30.288-15.927-52.965-65.817-50.56-111.223 1.248-23.687 9.438-42.071 21.897-49.17 7.916-4.493 17.436-4.099 27.526 1.188l1.916 1.01c75.96 40.022 324.6 170.981 335.063 175.844 16.157 7.47 25.14 10.5 52.659-2.547l513.958-267.3c7.53-2.844 16.315-10.062 16.315-21.023 0-15.205-15.72-21.199-15.765-21.199-29.218-14.018-74.163-35.054-117.987-55.57C798.033 84.26 691.861 34.547 645.23 10.132c-40.253-21.072-72.655-3.311-78.432.282l-11.227 5.555C345.727 119.743 64.898 258.826 48.911 268.553 20.278 285.973 2.547 320.679.252 363.768c-3.586 68.304 31.261 139.506 81.069 165.634l303.172 156.354c6.83 47.306 47.55 82.725 95.532 82.725 52.78 0 95.808-42.54
96 96.603-95.14L910.541 492.38c16.93 13.233 37.92 20.486 59.416 20.486 53.268 0 96.61-43.341 96.61-96.61s-43.342-96.61-96.61-96.61" fill-rule="evenodd" data-v-4a92bd9e></path></g></svg> <div class="text-xs ml-4 font-medium" data-v-4a92bd9e>
10      Referred from <span class="font-bold" data-v-4a92bd9e>GitBook</span></div></a></div></div></div></div> <header class="md:hidden py-4 px-4 border-b border-solid border-gray-200 sticky top-0 left-0 bg-white flex items-center z-10"><button aria-label="Toggle navigation bar" aria-expanded="false" type="button" class="block mr-3"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button> <a href="/" title="Home" class="text-xl font-semibold block nuxt-link-active">Notes</a></header> <div class="mx-auto"><div class="flex-1 flex px-4 lg:px-20" data-v-1f2cec6a><div class="max-w-screen-md flex-1" data-v-1f2cec6a><div class="py-6 mb-6 md:py-12 border-b md:border-b-2 border-gray-200 border-solid md:mb-12" data-v-1f2cec6a><div class="text-3xl md:text-4xl font-semibold" data-v-1f2cec6a>Programming</div> <div class="text-lg md:text-xl mt-2 text-gray-500" data-v-1f2cec6a>
11        The only way to sparkle meaningful and invigorating communication with computers
12      </div></div> <div class="leading-7 font-medium" style="color:#3b454e" data-v-1f2cec6a><div class="max-w-full grid grid-cols-1 md:grid-cols-2 gap-4" data-v-1f2cec6a><a href="/programming/a-list-of-quines" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>What is a quine in programming?</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Understanding quines with a petit list of examples</div></a><a href="/programming/bloom-filter" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Bloom Filter</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A brief introduction on Bloom Filter</div></a><a href="/programming/console-log-alternatives" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>console.log Alternatives</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>There are more useful Console methods other than console.log</div></a><a href="/programming/covariant-and-contravariant-interface" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Covariant and Contravariant Interface</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A brief explanation on variance in programming with examples in C#</div></a><a href="/programming/customizing-swagger-page-aspnetcore-webapi" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Customizing Swagger Page in AspNetCore WebApi</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A walkthrough on adding description and examples to an endpoint in AspNetCore WebApi project</div></a><a href="/programming/data-validation-with-zod" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Data Validation with Zod</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A short list of data validations that Zod are capable to do</div></a><a href="/programming/debugging-with-git" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Debugging with Git</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Understand and apply these three Git debugging techniques to inspect the codebase for issues effectively</div></a><a href="/programming/dependency-injection-in-dotnet-wpf" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Dependency Injection in .NET 6 WPF</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A stepwise guide on setting up dependency injection in WPF project with Autofac</div></a><a href="/programming/generics-in-go" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Generics in Go</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>How is generics in Go looks like and the differences with others</div></a><a href="/programming/installing-arch-linux" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Installing Arch Linux</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A comprehensive guide to install Arch Linux from my personal experience</div></a><a href="/programming/installing-pyspark-on-windows" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Installing PySpark on Windows</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A comprehensive guide on setting up PySpark to work on Windows machine locally</div></a><a href="/programming/interop-with-julia" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Python Interop with Julia</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A mini guide to work with Python and its ecosystems with Julia</div></a><a href="/programming/introduction-to-prisma" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Introduction to Prisma</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A popular TypeScript ORM for Node.js</div></a><a href="/programming/jsonp-in-brief" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>JSONP in Brief</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Understand what is JSONP and how does it work on the browser.</div></a><a href="/programming/latex-cheetsheet" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>LaTeX Cheetsheet</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>The list of functions and samples on technical writing with LaTe
12X</div></a><a href="/programming/obfuscated-code" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Obfuscated code</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Explanation and step by step guide to obfuscating codes</div></a><a href="/programming/object-relationships" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Object Relationships</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Trying to comprehend the relationships of objects in terms of association, inheritance, aggregation and composition</div></a><a href="/programming/quack-iii-inverse-square-root" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>Quack III Inverse Square Root</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>A quick approximation algorithm for inverse square root</div></a><a href="/programming/rxjs-primer" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>RxJS Primer</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>The curated topics and concepts that are commonly used in RxJS</div></a><a href="/programming/typescript-utility-types" class="this border border-solid border-gray-300 p-4 shadow-md hover:border-blue-600 rounded" data-v-1f2cec6a><div class="xmtitle font-semibold" data-v-1f2cec6a>TypeScript Utility Types</div> <div class="text-sm text-gray-500" data-v-1f2cec6a>Quick runthrough on how utility types in TypeScript works</div></a></div></div></div></div></div> <div class="this duration-500 ease-in-out fixed top-0 h-full right-0 w-full z-40 bg-gray-500 bg-opacity-30 border-l border-solid border-gray-200" style="display:none"><div class="max-h-screen h-full overflow-auto p-5 w-3/4 lg:w-1/4 3xl:w-1/5 ml-auto bg-gray-100" data-v-5faba0f6><div class="rounded overflow-hidden" data-v-5faba0f6><input type="search" placeholder="Search by title or keyword" class="px-3 py-2 w-full focus:outline-white" data-v-5faba0f6></div> <div class="py-4" data-v-5faba0f6><div class="py-6 text-center text-gray-400 bg-white rounded" data-v-5faba0f6><span data-v-5faba0f6>No results found</span></div></div></div></div></div></div></div>
12<script defer src="/_nuxt/static/1717393200/programming/state.js"></script>
12<script src="/_nuxt/e8ce3ae.js" defer></script>
12<script src="/_nuxt/0357bcf.js" defer></script>
12<script src="/_nuxt/106e065.js" defer></script>
12<script src="/_nuxt/355a4b6.js" defer></script>
12<script src="/_nuxt/b8750ab.js" defer></script>
12
13  </body>
14</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.