-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharchive.html
More file actions
22 lines (22 loc) · 98 KB
/
Copy patharchive.html
File metadata and controls
22 lines (22 loc) · 98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Alan Tseng</title><meta name="robots" content="index,follow"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@alanhc316"/><meta name="twitter:creator" content="@alanhc316"/><meta property="og:title" content="Alan Tseng"/><meta property="og:type" content="alan tseng"/><meta property="og:site_name" content="Alan Tseng"/><meta name="apple-mobile-web-app-capable" content="yes"/><link rel="icon" href="/logo.png"/><link rel="alternate" type="application/rss+xml" href="/feed.xml"/><link rel="alternate" type="application/atom+xml" href="/atom.xml"/><link rel="manifest" href="/manifest.json"/><link rel="apple-touch-icon" href="icons/apple-icon-180.png"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1290-2796.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2796-1290.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1179-2556.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2556-1179.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"/><link rel="apple-touch-startup-image" href="icons/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"/><meta name="next-head-count" content="46"/><link rel="preload" href="/_next/static/css/d2be147804efa983.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d2be147804efa983.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-e3b91cdeb5006bcc.js" defer=""></script><script src="/_next/static/chunks/framework-47aaa835d1968214.js" defer=""></script><script src="/_next/static/chunks/main-9314b6cc36d10ccc.js" defer=""></script><script src="/_next/static/chunks/pages/_app-c21fe3272a266ff0.js" defer=""></script><script src="/_next/static/chunks/56beeb28-6355c50ccf795d7f.js" defer=""></script><script src="/_next/static/chunks/905-4c9ef0a6575b1584.js" defer=""></script><script src="/_next/static/chunks/69-3ad48d60bee8f15d.js" defer=""></script><script src="/_next/static/chunks/795-f8cf02f7e2b6fe8f.js" defer=""></script><script src="/_next/static/chunks/81-4d5dc0ef8fb26202.js" defer=""></script><script src="/_next/static/chunks/pages/archive-b6aa271f0f56e079.js" defer=""></script><script src="/_next/static/po6veTMgV-Nby5tLuQYTF/_buildManifest.js" defer=""></script><script src="/_next/static/po6veTMgV-Nby5tLuQYTF/_ssgManifest.js" defer=""></script></head><body><script id="chakra-script">!(function(){try{var a=function(c){var v="(prefers-color-scheme: dark)",h=window.matchMedia(v).matches?"dark":"light",r=c==="system"?h:c,o=document.documentElement,s=document.body,l="chakra-ui-light",d="chakra-ui-dark",i=r==="dark";return s.classList.add(i?d:l),s.classList.remove(i?l:d),o.style.colorScheme=r,o.dataset.theme=r,r},n=a,m="light",e="chakra-ui-color-mode",t=localStorage.getItem(e);t?a(t):localStorage.setItem(e,a(m))}catch(a){}})();</script><div id="__next"><style data-emotion="css-global 1b7scut">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-colors-linkedin-50:#E8F4F9;--chakra-colors-linkedin-100:#CFEDFB;--chakra-colors-linkedin-200:#9BDAF3;--chakra-colors-linkedin-300:#68C7EC;--chakra-colors-linkedin-400:#34B3E4;--chakra-colors-linkedin-500:#00A0DC;--chakra-colors-linkedin-600:#008CC9;--chakra-colors-linkedin-700:#0077B5;--chakra-colors-linkedin-800:#005E93;--chakra-colors-linkedin-900:#004471;--chakra-colors-facebook-50:#E8F4F9;--chakra-colors-facebook-100:#D9DEE9;--chakra-colors-facebook-200:#B7C2DA;--chakra-colors-facebook-300:#6482C0;--chakra-colors-facebook-400:#4267B2;--chakra-colors-facebook-500:#385898;--chakra-colors-facebook-600:#314E89;--chakra-colors-facebook-700:#29487D;--chakra-colors-facebook-800:#223B67;--chakra-colors-facebook-900:#1E355B;--chakra-colors-messenger-50:#D0E6FF;--chakra-colors-messenger-100:#B9DAFF;--chakra-colors-messenger-200:#A2CDFF;--chakra-colors-messenger-300:#7AB8FF;--chakra-colors-messenger-400:#2E90FF;--chakra-colors-messenger-500:#0078FF;--chakra-colors-messenger-600:#0063D1;--chakra-colors-messenger-700:#0052AC;--chakra-colors-messenger-800:#003C7E;--chakra-colors-messenger-900:#002C5C;--chakra-colors-whatsapp-50:#dffeec;--chakra-colors-whatsapp-100:#b9f5d0;--chakra-colors-whatsapp-200:#90edb3;--chakra-colors-whatsapp-300:#65e495;--chakra-colors-whatsapp-400:#3cdd78;--chakra-colors-whatsapp-500:#22c35e;--chakra-colors-whatsapp-600:#179848;--chakra-colors-whatsapp-700:#0c6c33;--chakra-colors-whatsapp-800:#01421c;--chakra-colors-whatsapp-900:#001803;--chakra-colors-twitter-50:#E5F4FD;--chakra-colors-twitter-100:#C8E9FB;--chakra-colors-twitter-200:#A8DCFA;--chakra-colors-twitter-300:#83CDF7;--chakra-colors-twitter-400:#57BBF5;--chakra-colors-twitter-500:#1DA1F2;--chakra-colors-twitter-600:#1A94DA;--chakra-colors-twitter-700:#1681BF;--chakra-colors-twitter-800:#136B9E;--chakra-colors-twitter-900:#0D4D71;--chakra-colors-telegram-50:#E3F2F9;--chakra-colors-telegram-100:#C5E4F3;--chakra-colors-telegram-200:#A2D4EC;--chakra-colors-telegram-300:#7AC1E4;--chakra-colors-telegram-400:#47A9DA;--chakra-colors-telegram-500:#0088CC;--chakra-colors-telegram-600:#007AB8;--chakra-colors-telegram-700:#006BA1;--chakra-colors-telegram-800:#005885;--chakra-colors-telegram-900:#003F5E;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner
){border-style:none;padding:0;}fieldset{padding:0.35em 0.75em 0.625em;}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline;}textarea{overflow:auto;}:where([type="checkbox"], [type="radio"]){box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none!important;}input[type="number"]{-moz-appearance:textfield;}input[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}input[type="search"]::-webkit-search-decoration{-webkit-appearance:none!important;}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}template{display:none;}[hidden]{display:none!important;}:where(
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre
){margin:0;}button{background:transparent;padding:0;}fieldset{margin:0;padding:0;}:where(ol, ul){margin:0;padding:0;}textarea{resize:vertical;}:where(button, [role="button"]){cursor:pointer;}button::-moz-focus-inner{border:0!important;}table{border-collapse:collapse;}:where(h1, h2, h3, h4, h5, h6){font-size:inherit;font-weight:inherit;}:where(button, input, optgroup, select, textarea){padding:0;line-height:inherit;color:inherit;}:where(img, svg, video, canvas, audio, iframe, embed, object){display:block;}:where(img, video){max-width:100%;height:auto;}[data-js-focus-visible] :focus:not([data-focus-visible-added]):not(
[data-focus-visible-disabled]
){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}</style><style data-emotion="css-global 1cgn62j">body{font-family:var(--chakra-fonts-body);color:var(--chakra-colors-chakra-body-text);background:var(--chakra-colors-chakra-body-bg);transition-property:background-color;transition-duration:var(--chakra-transition-duration-normal);line-height:var(--chakra-lineHeights-base);}*::-webkit-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::-moz-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*:-ms-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*,*::before,::after{border-color:var(--chakra-colors-chakra-border-color);}</style> <style data-emotion="css 11iqhmn">.css-11iqhmn{position:-webkit-sticky;position:sticky;top:0px;background:var(--chakra-colors-gray-100);-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);}</style><div class="css-11iqhmn"><style data-emotion="css 19pkskf">.css-19pkskf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:var(--chakra-sizes-16);-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}</style><div class="css-19pkskf"><style data-emotion="css n1aaeq">.css-n1aaeq{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;white-space:nowrap;vertical-align:middle;outline:2px solid transparent;outline-offset:2px;line-height:1.2;border-radius:var(--chakra-radii-md);font-weight:var(--chakra-fontWeights-semibold);transition-property:var(--chakra-transition-property-common);transition-duration:var(--chakra-transition-duration-normal);height:var(--chakra-sizes-10);min-width:var(--chakra-sizes-10);font-size:var(--chakra-fontSizes-md);-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);background:var(--chakra-colors-gray-100);color:var(--chakra-colors-gray-800);padding:0px;}.css-n1aaeq:focus-visible,.css-n1aaeq[data-focus-visible]{box-shadow:var(--chakra-shadows-outline);}.css-n1aaeq:disabled,.css-n1aaeq[disabled],.css-n1aaeq[aria-disabled=true],.css-n1aaeq[data-disabled]{opacity:0.4;cursor:not-allowed;box-shadow:var(--chakra-shadows-none);}.css-n1aaeq:hover,.css-n1aaeq[data-hover]{background:var(--chakra-colors-gray-200);}.css-n1aaeq:hover:disabled,.css-n1aaeq[data-hover]:disabled,.css-n1aaeq:hover[disabled],.css-n1aaeq[data-hover][disabled],.css-n1aaeq:hover[aria-disabled=true],.css-n1aaeq[data-hover][aria-disabled=true],.css-n1aaeq:hover[data-disabled],.css-n1aaeq[data-hover][data-disabled]{background:var(--chakra-colors-gray-100);}.css-n1aaeq:active,.css-n1aaeq[data-active]{background:var(--chakra-colors-gray-300);}@media screen and (min-width: 48em){.css-n1aaeq{display:none;}}</style><button type="button" class="chakra-button css-n1aaeq" aria-label="Open Menu"><style data-emotion="css onkibi">.css-onkibi{width:1em;height:1em;display:inline-block;line-height:1em;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;color:currentColor;vertical-align:middle;}</style><svg viewBox="0 0 24 24" focusable="false" class="chakra-icon css-onkibi" aria-hidden="true"><path fill="currentColor" d="M 3 5 A 1.0001 1.0001 0 1 0 3 7 L 21 7 A 1.0001 1.0001 0 1 0 21 5 L 3 5 z M 3 11 A 1.0001 1.0001 0 1 0 3 13 L 21 13 A 1.0001 1.0001 0 1 0 21 11 L 3 11 z M 3 17 A 1.0001 1.0001 0 1 0 3 19 L 21 19 A 1.0001 1.0001 0 1 0 21 17 L 3 17 z"></path></svg></button><style data-emotion="css pa7cn">.css-pa7cn{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:var(--chakra-space-8);}</style><div class="chakra-stack css-pa7cn"><style data-emotion="css 1dklj6k">.css-1dklj6k{font-family:var(--chakra-fonts-heading);font-weight:var(--chakra-fontWeights-bold);font-size:var(--chakra-fontSizes-3xl);line-height:1.33;}@media screen and (min-width: 48em){.css-1dklj6k{font-size:var(--chakra-fontSizes-4xl);line-height:1.2;}}</style><a class="chakra-heading css-1dklj6k" href="/">Alan Tseng</a></div><style data-emotion="css 1igwmid">.css-1igwmid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:0.5rem;}</style><div class="chakra-stack css-1igwmid"><style data-emotion="css 1y6oau7">.css-1y6oau7{display:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:var(--chakra-space-4);}@media screen and (min-width: 48em){.css-1y6oau7{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}</style><nav class="chakra-stack css-1y6oau7"><style data-emotion="css 3yj86i">.css-3yj86i{-webkit-padding-start:var(--chakra-space-2);padding-inline-start:var(--chakra-space-2);-webkit-padding-end:var(--chakra-space-2);padding-inline-end:var(--chakra-space-2);padding-top:var(--chakra-space-1);padding-bottom:var(--chakra-space-1);border-radius:var(--chakra-radii-md);}.css-3yj86i:hover,.css-3yj86i[data-hover]{-webkit-text-decoration:none;text-decoration:none;background:var(--chakra-colors-gray-200);}</style><a class="css-3yj86i" href="/about">About</a><a class="css-3yj86i" href="/projects">Projects</a><a class="css-3yj86i" href="/logA">LogA</a><a class="css-3yj86i" href="/about#contact">Contract</a></nav><style data-emotion="css ez23ye">.css-ez23ye{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;white-space:nowrap;vertical-align:middle;outline:2px solid transparent;outline-offset:2px;line-height:1.2;border-radius:var(--chakra-radii-md);font-weight:var(--chakra-fontWeights-semibold);transition-property:var(--chakra-transition-property-common);transition-duration:var(--chakra-transition-duration-normal);height:var(--chakra-sizes-10);min-width:var(--chakra-sizes-10);font-size:var(--chakra-fontSizes-md);-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);background:var(--chakra-colors-gray-100);color:var(--chakra-colors-gray-800);}.css-ez23ye:focus-visible,.css-ez23ye[data-focus-visible]{box-shadow:var(--chakra-shadows-outline);}.css-ez23ye:disabled,.css-ez23ye[disabled],.css-ez23ye[aria-disabled=true],.css-ez23ye[data-disabled]{opacity:0.4;cursor:not-allowed;box-shadow:var(--chakra-shadows-none);}.css-ez23ye:hover,.css-ez23ye[data-hover]{background:var(--chakra-colors-gray-200);}.css-ez23ye:hover:disabled,.css-ez23ye[data-hover]:disabled,.css-ez23ye:hover[disabled],.css-ez23ye[data-hover][disabled],.css-ez23ye:hover[aria-disabled=true],.css-ez23ye[data-hover][aria-disabled=true],.css-ez23ye:hover[data-disabled],.css-ez23ye[data-hover][data-disabled]{background:var(--chakra-colors-gray-100);}.css-ez23ye:active,.css-ez23ye[data-active]{background:var(--chakra-colors-gray-300);}</style><a class="chakra-button css-ez23ye" target="_blank" href="https://www.linkedin.com/in/alanhc316/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a><button type="button" class="chakra-button css-ez23ye">☾</button></div></div></div><style data-emotion="css 1gjnn2x">.css-1gjnn2x{width:100%;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);max-width:var(--chakra-sizes-7xl);padding:var(--chakra-space-5);}</style><div class="chakra-container ck-reset css-1gjnn2x"><style data-emotion="css k008qs">.css-k008qs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}</style><div class="ck-reset css-k008qs"><style data-emotion="css 1xpribl">.css-1xpribl{position:relative;display:block;}</style><div class="chakra-tabs css-1xpribl"><style data-emotion="css 1xhq01z">.css-1xhq01z{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;border-bottom:2px solid;border-color:inherit;}</style><div role="tablist" aria-orientation="horizontal" class="chakra-tabs__tablist css-1xhq01z"><style data-emotion="css spn4bz">.css-spn4bz{transition-property:var(--chakra-transition-property-common);transition-duration:var(--chakra-transition-duration-fast);transition-timing-function:var(--chakra-transition-easing-ease-out);cursor:pointer;-webkit-text-decoration:none;text-decoration:none;outline:2px solid transparent;outline-offset:2px;color:inherit;}.css-spn4bz:hover,.css-spn4bz[data-hover]{-webkit-text-decoration:underline;text-decoration:underline;}.css-spn4bz:focus-visible,.css-spn4bz[data-focus-visible]{box-shadow:var(--chakra-shadows-outline);}</style><a class="chakra-link css-spn4bz" href="/logA"><style data-emotion="css 52dxnr">.css-52dxnr{outline:2px solid transparent;outline-offset:2px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;transition-property:var(--chakra-transition-property-common);transition-duration:var(--chakra-transition-duration-normal);font-size:var(--chakra-fontSizes-md);padding-top:var(--chakra-space-2);padding-bottom:var(--chakra-space-2);-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);border-bottom:2px solid;border-color:var(--chakra-colors-transparent);margin-bottom:-2px;color:var(--tabs-color);background:var(--tabs-bg);}.css-52dxnr:focus-visible,.css-52dxnr[data-focus-visible]{z-index:1;box-shadow:var(--chakra-shadows-outline);}.css-52dxnr:disabled,.css-52dxnr[disabled],.css-52dxnr[aria-disabled=true],.css-52dxnr[data-disabled]{cursor:not-allowed;opacity:0.4;}.css-52dxnr:disabled:active,.css-52dxnr[disabled]:active,.css-52dxnr[aria-disabled=true]:active,.css-52dxnr[data-disabled]:active,.css-52dxnr:disabled[data-active],.css-52dxnr[disabled][data-active],.css-52dxnr[aria-disabled=true][data-active],.css-52dxnr[data-disabled][data-active]{background:none;}.css-52dxnr[aria-selected=true],.css-52dxnr[data-selected]{--tabs-color:var(--chakra-colors-blue-600);border-color:currentColor;}.chakra-ui-dark .css-52dxnr[aria-selected=true]:not([data-theme]),.chakra-ui-dark .css-52dxnr[data-selected]:not([data-theme]),[data-theme=dark] .css-52dxnr[aria-selected=true]:not([data-theme]),[data-theme=dark] .css-52dxnr[data-selected]:not([data-theme]),.css-52dxnr[aria-selected=true][data-theme=dark],.css-52dxnr[data-selected][data-theme=dark]{--tabs-color:var(--chakra-colors-blue-300);}.css-52dxnr:active,.css-52dxnr[data-active]{--tabs-bg:var(--chakra-colors-gray-200);}.chakra-ui-dark .css-52dxnr:active:not([data-theme]),.chakra-ui-dark .css-52dxnr[data-active]:not([data-theme]),[data-theme=dark] .css-52dxnr:active:not([data-theme]),[data-theme=dark] .css-52dxnr[data-active]:not([data-theme]),.css-52dxnr:active[data-theme=dark],.css-52dxnr[data-active][data-theme=dark]{--tabs-bg:var(--chakra-colors-whiteAlpha-300);}</style><button type="button" aria-disabled="false" id="tabs-:R36mbq6:--tab--1" role="tab" tabindex="-1" aria-selected="false" aria-controls="tabs-:R36mbq6:--tabpanel--1" class="chakra-tabs__tab css-52dxnr">Posts</button></a><a class="chakra-link css-spn4bz" href="/archive"><button type="button" aria-disabled="false" id="tabs-:R36mbq6:--tab--1" role="tab" tabindex="-1" aria-selected="false" aria-controls="tabs-:R36mbq6:--tabpanel--1" class="chakra-tabs__tab css-52dxnr">Archive</button></a><a class="chakra-link css-spn4bz" href="/tags"><button type="button" aria-disabled="false" id="tabs-:R36mbq6:--tab--1" role="tab" tabindex="-1" aria-selected="false" aria-controls="tabs-:R36mbq6:--tabpanel--1" class="chakra-tabs__tab css-52dxnr">Tags</button></a></div></div><style data-emotion="css 17xejub">.css-17xejub{-webkit-flex:1;-ms-flex:1;flex:1;justify-self:stretch;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;}</style><div class="css-17xejub"></div><style data-emotion="css b7tc3r">.css-b7tc3r{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;white-space:nowrap;vertical-align:middle;outline:2px solid transparent;outline-offset:2px;line-height:1.2;border-radius:var(--chakra-radii-md);font-weight:var(--chakra-fontWeights-semibold);transition-property:var(--chakra-transition-property-common);transition-duration:var(--chakra-transition-duration-normal);height:var(--chakra-sizes-10);min-width:var(--chakra-sizes-10);font-size:var(--chakra-fontSizes-md);-webkit-padding-start:var(--chakra-space-4);padding-inline-start:var(--chakra-space-4);-webkit-padding-end:var(--chakra-space-4);padding-inline-end:var(--chakra-space-4);background:var(--chakra-colors-gray-100);color:var(--chakra-colors-gray-800);margin-right:0px;}.css-b7tc3r:focus-visible,.css-b7tc3r[data-focus-visible]{box-shadow:var(--chakra-shadows-outline);}.css-b7tc3r:disabled,.css-b7tc3r[disabled],.css-b7tc3r[aria-disabled=true],.css-b7tc3r[data-disabled]{opacity:0.4;cursor:not-allowed;box-shadow:var(--chakra-shadows-none);}.css-b7tc3r:hover,.css-b7tc3r[data-hover]{background:var(--chakra-colors-gray-200);}.css-b7tc3r:hover:disabled,.css-b7tc3r[data-hover]:disabled,.css-b7tc3r:hover[disabled],.css-b7tc3r[data-hover][disabled],.css-b7tc3r:hover[aria-disabled=true],.css-b7tc3r[data-hover][aria-disabled=true],.css-b7tc3r:hover[data-disabled],.css-b7tc3r[data-hover][data-disabled]{background:var(--chakra-colors-gray-100);}.css-b7tc3r:active,.css-b7tc3r[data-active]{background:var(--chakra-colors-gray-300);}</style><button type="button" class="chakra-button css-b7tc3r">☾</button></div><style data-emotion="css pwgf3d">.css-pwgf3d{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;--stepper-accent-color:var(--chakra-colors-blue-500);--stepper-indicator-size:var(--chakra-sizes-10);--stepper-icon-size:var(--chakra-sizes-6);--stepper-title-font-size:var(--chakra-fontSizes-lg);--stepper-description-font-size:var(--chakra-fontSizes-md);gap:0px;}.css-pwgf3d[data-orientation=vertical]{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.css-pwgf3d[data-orientation=horizontal]{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.chakra-ui-dark .css-pwgf3d:not([data-theme]),[data-theme=dark] .css-pwgf3d:not([data-theme]),.css-pwgf3d[data-theme=dark]{--stepper-accent-color:var(--chakra-colors-blue-200);}</style><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-pwgf3d"><style data-emotion="css ylpnre">.css-ylpnre{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:var(--chakra-space-2);-webkit-flex:1;-ms-flex:1;flex:1;}.css-ylpnre[data-orientation=horizontal]{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-ylpnre:last-of-type:not([data-stretch]){-webkit-flex:initial;-ms-flex:initial;flex:initial;}</style><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><style data-emotion="css kq5oaw">.css-kq5oaw{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;border-radius:var(--chakra-radii-full);width:var(--stepper-indicator-size);height:var(--stepper-indicator-size);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-kq5oaw[data-status=active]{border-width:2px;border-color:var(--stepper-accent-color);}.css-kq5oaw[data-status=complete]{background:var(--stepper-accent-color);color:var(--chakra-colors-chakra-inverse-text);}.css-kq5oaw[data-status=incomplete]{border-width:2px;}</style><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2024</div><style data-emotion="css 6su6fj">.css-6su6fj{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}</style><div class="css-6su6fj"><style data-emotion="css 1t2dsn0">.css-1t2dsn0{font-size:var(--stepper-title-font-size);font-weight:var(--chakra-fontWeights-medium);}</style><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <style data-emotion="css xn1bh7">.css-xn1bh7{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:top;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;font-weight:var(--chakra-fontWeights-medium);line-height:1.2;outline:2px solid transparent;outline-offset:2px;--tag-color:var(--badge-color);--tag-bg:var(--badge-bg);--tag-shadow:var(--badge-shadow);color:var(--tag-color);background:var(--tag-bg);box-shadow:var(--tag-shadow);border-radius:var(--chakra-radii-md);min-height:var(--tag-min-height);min-width:var(--tag-min-width);font-size:var(--tag-font-size);-webkit-padding-inline-start:var(--tag-padding);padding-inline-start:var(--tag-padding-inline);-webkit-padding-inline-end:var(--tag-padding);padding-inline-end:var(--tag-padding-inline);--tag-min-height:var(--chakra-sizes-6);--tag-min-width:var(--chakra-sizes-6);--tag-font-size:var(--chakra-fontSizes-sm);--tag-padding-inline:var(--chakra-space-2);--badge-bg:var(--chakra-colors-gray-100);--badge-color:var(--chakra-colors-gray-800);margin-bottom:var(--chakra-space-5);}.css-xn1bh7:focus-visible,.css-xn1bh7[data-focus-visible]{--tag-shadow:var(--chakra-shadows-outline);}.chakra-ui-dark .css-xn1bh7:not([data-theme]),[data-theme=dark] .css-xn1bh7:not([data-theme]),.css-xn1bh7[data-theme=dark]{--badge-bg:rgba(226, 232, 240, 0.16);--badge-color:var(--chakra-colors-gray-200);}</style><span class="css-xn1bh7">52</span></h3><style data-emotion="css y9i95k">.css-y9i95k{font-size:var(--stepper-description-font-size);color:var(--chakra-colors-chakra-subtle-text);}</style><p data-status="incomplete" class="chakra-step__description css-y9i95k"><style data-emotion="css 1v9xzqa">.css-1v9xzqa{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;--stepper-accent-color:var(--chakra-colors-blue-500);--stepper-indicator-size:var(--chakra-sizes-8);--stepper-icon-size:var(--chakra-sizes-5);--stepper-title-font-size:var(--chakra-fontSizes-md);--stepper-description-font-size:var(--chakra-fontSizes-sm);gap:0px;}.css-1v9xzqa[data-orientation=vertical]{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.css-1v9xzqa[data-orientation=horizontal]{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.chakra-ui-dark .css-1v9xzqa:not([data-theme]),[data-theme=dark] .css-1v9xzqa:not([data-theme]),.css-1v9xzqa[data-theme=dark]{--stepper-accent-color:var(--chakra-colors-blue-200);}</style><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Oct</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->3<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><style data-emotion="css 8g8ihq">.css-8g8ihq{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:0.5rem;}</style><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/ubuntu%20wifi%E7%B6%B2%E5%8D%A1%E6%8A%93%E4%B8%8D%E5%88%B0">ubuntu wifi網卡抓不到</a><a class="css-0" href="/logA/posts/%E5%AE%89%E8%A3%9D%E5%BE%8C%E7%9B%B4%E6%8E%A5%E9%80%B2%E5%88%B0%20windows%E5%95%8F%E9%A1%8C">安裝後直接進到 windows問題</a><a class="css-0" href="/logA/posts/%E8%B6%85%E7%B0%A1%E5%96%AE!%E4%B8%80%E6%96%87%E7%90%86%E8%A7%A3%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%A7%81%E6%9C%89%E5%A4%A7%E5%9E%8B%E8%AA%9E%E8%A8%80%E6%A8%A1%E5%9E%8BLLM-Ollama%EF%BC%8BOpenWebUI%E7%AF%87">超簡單! 一文理解如何使用私有大型語言模型LLM - Ollama+Open WebUI篇</a></div></p></div><style data-emotion="css 4t6ey5">.css-4t6ey5{background:var(--chakra-colors-chakra-border-color);-webkit-flex:1;-ms-flex:1;flex:1;}.css-4t6ey5[data-status=complete]{background:var(--stepper-accent-color);}.css-4t6ey5[data-orientation=horizontal]{width:100%;height:2px;-webkit-margin-start:var(--chakra-space-2);margin-inline-start:var(--chakra-space-2);}.css-4t6ey5[data-orientation=vertical]{width:2px;position:absolute;height:100%;max-height:calc(100% - var(--stepper-indicator-size) - 8px);top:calc(var(--stepper-indicator-size) + 4px);left:calc(var(--stepper-indicator-size) / 2 - 1px);}</style><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Aug</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->1<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/%E6%9B%B4%E5%BF%AB%E7%9A%84%E5%BD%B1%E7%89%87%E5%AD%B8%E7%BF%92%E6%96%B9%E6%B3%95">更快的影片學習方法</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jul</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/fastapi-k8s">fastapi-k8s</a><a class="css-0" href="/logA/posts/20240704-inferencing-llm">inferencing-llm</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jun</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->3<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/python%E4%BD%BF%E7%94%A8pyinstaller%E8%A3%BD%E4%BD%9C%E6%A1%8C%E9%9D%A2%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F">python使用pyinstaller製作桌面應用程式</a><a class="css-0" href="/logA/posts/20240621-%E5%85%AC%E9%9B%B2%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98">20240621-公雲學習筆記</a><a class="css-0" href="/logA/posts/20240409-%E4%BD%A0%E8%A6%81%E5%A6%82%E4%BD%95%E8%A1%A1%E9%87%8F%E4%BD%A0%E7%9A%84%E4%BA%BA%E7%94%9F">20240409-你要如何衡量你的人生</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Apr</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/%E9%96%B1%E8%AE%80%E7%AD%86%E8%A8%98-%E5%BB%BA%E4%B8%AD2021%E6%A0%A1%E5%85%A7%E5%9F%B9%E8%A8%93%E7%B0%A1%E5%A0%B1">閱讀筆記</a><a class="css-0" href="/logA/posts/%E9%96%B1%E8%AE%80%E7%AD%86%E8%A8%98-%E5%BB%BA%E4%B8%AD2021%E6%9A%91%E5%81%87%E8%B3%87%E8%AE%80%E6%8A%95%E5%BD%B1%E7%89%87-%E8%AC%9D%E4%B8%80">閱讀筆記-建中 2021 暑假資讀投影片-謝一</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Mar</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->3<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20240324-learn-go">20240324-learn-go</a><a class="css-0" href="/logA/posts/20240321-interview-warmup">20240321-interview-warmup</a><a class="css-0" href="/logA/posts/20240303-save-password-python">20240303-save-password-python</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Feb</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->23<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/%E5%9C%8B%E5%A4%96%E5%B7%A5%E4%BD%9C">國外工作</a><a class="css-0" href="/logA/posts/20240227-warp-terminal">20240227-warp-terminal</a><a class="css-0" href="/logA/posts/20240227-huggingface-nlp">20240227-huggingface-nlp</a><a class="css-0" href="/logA/posts/20240227-Hash-Table-ood">20240227-Hash-Table-ood</a><a class="css-0" href="/logA/posts/20240227-File-Systems-ood">20240227-File-Systems-ood</a><a class="css-0" href="/logA/posts/20240226-minesweeper-ood">20240226-minesweeper-ood</a><a class="css-0" href="/logA/posts/20240226-Circular-array-ood">20240226-Circular-array-ood</a><a class="css-0" href="/logA/posts/20240222-text-network-analysis">20240222-content-analysis</a><a class="css-0" href="/logA/posts/20240221-othello-ood">20240221-othello-ood</a><a class="css-0" href="/logA/posts/20240219-chat-server-ood">20240219-chat-server-ood</a><a class="css-0" href="/logA/posts/20240217-parking-lot-ood">20240217-parking-lot-ood</a><a class="css-0" href="/logA/posts/20240217-online-book-reader-ood">20240217-online-book-reader-ood</a><a class="css-0" href="/logA/posts/20240217-jukebox-ood">20240217-jukebox-ood</a><a class="css-0" href="/logA/posts/20240217-jigsaw-ood">20240217-jigsaw-ood</a><a class="css-0" href="/logA/posts/20240217-call-center-ood">20240217-call-center-ood</a><a class="css-0" href="/logA/posts/20240216-levelsfyi-crawler">20240216-levelsfyi-crawler</a><a class="css-0" href="/logA/posts/20240215-Deck-of-cards-ood">20240205-Deck-of-cards</a><a class="css-0" href="/logA/posts/20240212-linkedin-private-api">20240212-linkedin-private-api</a><a class="css-0" href="/logA/posts/20240211-taiwan-job-insights">20240211-taiwan-job-insights</a><a class="css-0" href="/logA/posts/20240211-pastebin-design">20240211-pastebin-design</a><a class="css-0" href="/logA/posts/20240207-personal-finanicial-manager">20240207-personal-finanicial-manager</a><a class="css-0" href="/logA/posts/20240205-salesrank-design">20240205-salesrank-design</a><a class="css-0" href="/logA/posts/20240203-trading-bot">20240203-trading-bot</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jan</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->15<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/quotes">quotes</a><a class="css-0" href="/logA/posts/20240125-web-crawler-design">20240125-web_srawler_design</a><a class="css-0" href="/logA/posts/20240125-duplicate-url-design">20240125-duplicate-url-design</a><a class="css-0" href="/logA/posts/20240125-cache-design">20240125-cache-design</a><a class="css-0" href="/logA/posts/20240124-break-cloudflare-bot-prevention">20240124-break-cloudflare-bot-prevention</a><a class="css-0" href="/logA/posts/20240123-scalper">20240123-scalper</a><a class="css-0" href="/logA/posts/20240122-stock-data-design">20240122-stock-data</a><a class="css-0" href="/logA/posts/20240122-ntu-cool-video-download">20240122-ntu-cool-video-download</a><a class="css-0" href="/logA/posts/20240122-english-speaking">沒環境講英文?如何跟 ChatGPT 對話,快速加強口說</a><a class="css-0" href="/logA/posts/20240121-Web-Scraping-Instagram-with-Selenium">20240121-Web-Scraping-Instagram-with-Selenium</a><a class="css-0" href="/logA/posts/20240119-OSINT">20240119-OSINT</a><a class="css-0" href="/logA/posts/20240114-product-insight">20240114-product-insight</a><a class="css-0" href="/logA/posts/20240113-data-engineer-salary">20240113-data-pay</a><a class="css-0" href="/logA/posts/20240108-attention">20240108-attention</a><a class="css-0" href="/logA/posts/20240107-notion-website">20240107-notion-websire</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2023</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">73</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Dec</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->8<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20231222-chat">20231222-socket-io</a><a class="css-0" href="/logA/posts/20231217-ntu-matches">20231217-ntu-matches</a><a class="css-0" href="/logA/posts/20231217-google-gemini">20231217-google-gemini</a><a class="css-0" href="/logA/posts/20231213-pyspark">20231213-pyspark</a><a class="css-0" href="/logA/posts/20231210-convert-post-markdown">20231210-convert-post-markdown</a><a class="css-0" href="/logA/posts/20231209-docker-machine-learning">20231209-docker-machine-learning</a><a class="css-0" href="/logA/posts/20231209-AI-music-example">20231209-AI-music-example</a><a class="css-0" href="/logA/posts/20231202-twitter-bot">20231202-twitter-bot</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Nov</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->18<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20231130-Building-and-Evaluating-Advanced-RAG">20231130-Building-and-Evaluating-Advanced-RAG (未完)</a><a class="css-0" href="/logA/posts/20231129-Should%20You%20Use%20Open%20Source%20Large%20Language%20Models">Should You Use Open Source Large Language Models?</a><a class="css-0" href="/logA/posts/20231125-cloudflare-tunnel">20231125-cloudflare-tunnel</a><a class="css-0" href="/logA/posts/20231124-terraform-vercel">20231124-terraform-vercel</a><a class="css-0" href="/logA/posts/20231116-Vector-Databases-from-Embeddings-to-Applications">20231116-Vector-Databases-from-Embeddings-to-Applications</a><a class="css-0" href="/logA/posts/20231115-How-to-Build-An-MVP-Startup-School">20231115-How-to-Build-An-MVP-Startup-School</a><a class="css-0" href="/logA/posts/20231115-Building-Multi-Modal-Search-with-Vector-Databases">20211115-LIVEBuilding-Multi-Modal-Search-with-Vector-Databases</a><a class="css-0" href="/logA/posts/20231112-nextjs-upload-large-file">2021112-upload-large-file</a><a class="css-0" href="/logA/posts/learn-filebase">filebase</a><a class="css-0" href="/logA/posts/20231110-%E7%94%9F%E6%88%90%E5%BC%8FAI%E6%B7%BA%E8%AB%87%E5%9C%96%E5%83%8F%E7%94%9F%E6%88%90%E6%A8%A1%E5%9E%8B-Diffusion-Model-%E5%8E%9F%E7%90%86">20231110-生成式AI淺談圖像生成模型-Diffusion-Model-原理</a><a class="css-0" href="/logA/posts/20231110-80%E5%88%86%E9%90%98%E5%BF%AB%E9%80%9F%E4%BA%86%E8%A7%A3%E5%A4%A7%E5%9E%8B%E8%AA%9E%E8%A8%80%E6%A8%A1%E5%9E%8B-5-30%20%E6%9C%89%E5%92%92%E8%A1%93%E8%BF%B4%E6%88%B0%E9%9B%B7">80分鐘快速了解大型語言模型-5-30 有咒術迴戰雷</a><a class="css-0" href="/logA/posts/20231108-How-Diffusion-Models-Work">20231108-How-Diffusion-Models-Work</a><a class="css-0" href="/logA/posts/20231107-imgbb">20231107-imgbb</a><a class="css-0" href="/logA/posts/20231107-MUI-toolpad">20231107-MUI-toolpad</a><a class="css-0" href="/logA/posts/20231104-learn-cosmos">20231104-learn-cosmos</a><a class="css-0" href="/logA/posts/20231103-linklist">20231103-linklist</a><a class="css-0" href="/logA/posts/20231103-Finetuning-Large-Language-Models">20231103-Finetuning-Large-Language-Models</a><a class="css-0" href="/logA/posts/20231101-generative-ai-for-everyone">20231101-generative-ai-for-everyone</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Oct</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->8<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20231031-Andrew-Ng-Opportunities-in-AI-2023">Andrew-Ng-Opportunities-in-AI-2023</a><a class="css-0" href="/logA/posts/20231029-Building-Systems-with-the-ChatGPT-API">Building Systems with the ChatGPT API</a><a class="css-0" href="/logA/posts/20231028-mozilla-ai">20231028-mozilla-ai</a><a class="css-0" href="/logA/posts/20231026-ChatGPT-Prompt-Engineering-for-Developers">20231026-ChatGPT-Prompt-Engineering-for-Developers</a><a class="css-0" href="/logA/posts/20231023-learning-from-lin">20231023-learning</a><a class="css-0" href="/logA/posts/20231023-Pair-Programming-with-a-Large-Language-Model">20231023-Pair-Programming-with-a-Large-Language-Model</a><a class="css-0" href="/logA/posts/20231010-webauthn">20231010-webauthn</a><a class="css-0" href="/logA/posts/20231006-fastapi-streaming">20231006-fastapi-streaming</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Sep</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->9<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20230929-rn-qrcode">20230929-rn-qrcode</a><a class="css-0" href="/logA/posts/20230926-21-things-before-21">20230926-21-things-before-21</a><a class="css-0" href="/logA/posts/20230924-wagami">20230924-wagami</a><a class="css-0" href="/logA/posts/20230924-QR-Code">20230924-QR-Code</a><a class="css-0" href="/logA/posts/20230924-cmd-copy">20230924-cmd-copy</a><a class="css-0" href="/logA/posts/20230920-nx">20230920-nx</a><a class="css-0" href="/logA/posts/20230919-hardhat">hardhat</a><a class="css-0" href="/logA/posts/20230907-react-native">初探 react native</a><a class="css-0" href="/logA/posts/20230831-mdx">在部落格中使用mdx</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Aug</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->28<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20230831-mongodb-aggregate-multiple-group">在mongodb裡面將兩個group merge成一個結果</a><a class="css-0" href="/logA/posts/20230831-kbar">(未完)加入kbar讓搜尋更便利</a><a class="css-0" href="/logA/posts/20230830-nextjs-google-analytics">加入GA</a><a class="css-0" href="/logA/posts/20230829-peerjs">20230829-peerjs</a><a class="css-0" href="/logA/posts/20230829-orbit-chat">20230829-orbit-chat</a><a class="css-0" href="/logA/posts/20230829-chakra-ui">20230829-chakra-ui</a><a class="css-0" href="/logA/posts/20230828-libp2p">初探libp2p</a><a class="css-0" href="/logA/posts/20230828-ipfs">初探ipfs</a><a class="css-0" href="/logA/posts/20230827-vscode-animate-extension">安裝動漫vscode主題</a><a class="css-0" href="/logA/posts/20230827-orbitdb">初探orbitdb</a><a class="css-0" href="/logA/posts/20230827-notion-alternative">notion的替代品 - AFFiNE</a><a class="css-0" href="/logA/posts/20230827-next-pwa">加入PWA功能</a><a class="css-0" href="/logA/posts/20230827-chat-app">chat聊天界面初探</a><a class="css-0" href="/logA/posts/nextjs">nextjs 相關文章</a><a class="css-0" href="/logA/posts/nextjs-markdown">統整markdown的使用方法</a><a class="css-0" href="/logA/posts/20230826-next-seo">加入next-seo</a><a class="css-0" href="/logA/posts/20230826-import-alias">加入import別名讓import更好看</a><a class="css-0" href="/logA/posts/20230826-imgur">imgur上傳</a><a class="css-0" href="/logA/posts/20230825-rss">添加rss功能到nextjs部落格</a><a class="css-0" href="/logA/posts/20230824-chakra-darkmode">部落格暗黑模式</a><a class="css-0" href="/logA/posts/20230824-bigchain">初探bigchaindb</a><a class="css-0" href="/logA/posts/20230820-nexjs13">更新nextjs到13</a><a class="css-0" href="/logA/posts/20230819-mermaid-js">讓部落格可以顯示markdown的流程圖</a><a class="css-0" href="/logA/posts/20230818-markdown-section-link">實作markdown section link</a><a class="css-0" href="/logA/posts/20230817-next-sitemap">將部落格加入sitemap功能</a><a class="css-0" href="/logA/posts/20230816-nprogress">新增page loading的進度條</a><a class="css-0" href="/logA/posts/20230813-back-up-crawler">三種使用Python爬取網頁的方法</a><a class="css-0" href="/logA/posts/20230812-react-syntax-clipboard">使用react syntax highlighter及useClipboard強化程式碼區塊</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jan</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20230109-ipfs-upload">實作ipfs上傳的前端</a><a class="css-0" href="/logA/posts/20230108-solidity-nft">erc 1155 合約</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2022</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">9</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Dec</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->4<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20221231-k8s-notes">部署我的網站到k8s上</a><a class="css-0" href="/logA/posts/20221230-tezos-nft-tutorial">使用smartpy撰寫tezos的nft程式</a><a class="css-0" href="/logA/posts/20221228-solana-nft-tutorial">在solana上mint NFT</a><a class="css-0" href="/logA/posts/first-day">Hello World</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Aug</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20220811-monorepo-development">20220811-monorepo-development</a><a class="css-0" href="/logA/posts/20220811-LINE-Blockchain-Developer-Intern">20220811-LINE-Blockchain-Developer-Intern</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jul</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->1<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20220721-upgrade-nx-repo-to-react-18">Upgrade nx repo to react 18</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">May</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20220531-Decentral-Showroom-NTU-DApp-Term-project">Decentral Showroom — NTU DApp Term project</a><a class="css-0" href="/logA/posts/20220518-web3-%E4%B8%96%E7%95%8C%E8%A3%A1%E7%9A%84%E9%A9%97%E8%AD%89%E6%A9%9F%E5%88%B6-%E4%BB%A5Tezos%E7%82%BA%E4%BE%8B">web3 世界裡的驗證機制,以Tezos為例</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2021</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">5</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Oct</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->4<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20211028-%E8%99%9B%E6%93%AC%E4%BA%BA%E8%AA%B2%E5%A0%82%E7%AD%86%E8%A8%984-vroid">20211028-虛擬人課堂筆記4-vroid</a><a class="css-0" href="/logA/posts/20211027-%E8%99%9B%E6%93%AC%E4%BA%BA%E8%AA%B2%E5%A0%82%E7%AD%86%E8%A8%983-unity-facecapture">20211027-虛擬人課堂筆記3-unity-facecapture</a><a class="css-0" href="/logA/posts/20211018-%E8%99%9B%E6%93%AC%E4%BA%BA%E8%AA%B2%E5%A0%82%E7%AD%86%E8%A8%982">虛擬人課堂筆記2 —Mozilla Hub</a><a class="css-0" href="/logA/posts/20211011-%E8%99%9B%E6%93%AC%E4%BA%BA%E8%AA%B2%E5%A0%82%E7%AD%86%E8%A8%98-spark-ar">虛擬人課堂筆記 — SparkAR</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Aug</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->1<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20210820-%E9%96%8B%E7%99%BCmcu-up-%E9%8A%98%E5%82%B3%E9%87%91%E6%89%8B%E6%8C%873-0-%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B%E5%85%92">20210820-開發mcu-up-銘傳金手指3-0-的那些事兒</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2019</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">1</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jun</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->1<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20190614-CGfinal">20190614-CGfinal</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2018</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">19</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Apr</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20190409-uva409">20190409-uva409</a><a class="css-0" href="/logA/posts/20180405-uva630">20180405-uva630</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Mar</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->4<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20180317-uva10409">20180317-uva10409</a><a class="css-0" href="/logA/posts/20180314-uva105">20180314-uva105</a><a class="css-0" href="/logA/posts/20180312-uva10190">20180312-uva10190</a><a class="css-0" href="/logA/posts/20180309-uva141">20180309-uva141</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Feb</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->8<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20180228-hash-table">20180228-hash-table</a><a class="css-0" href="/logA/posts/20180222-uva401">20180222-uva401</a><a class="css-0" href="/logA/posts/20180212-uva10611">20180212-uva10611</a><a class="css-0" href="/logA/posts/20180210-NCTU-PCCA-winter-notes">20180210-NCTU-PCCA-winter-notes</a><a class="css-0" href="/logA/posts/20180209-uva406">20180209-uva406</a><a class="css-0" href="/logA/posts/20180209-linked-list">20180209-linked-list</a><a class="css-0" href="/logA/posts/20180206-uva10162">20180206-uva10162</a><a class="css-0" href="/logA/posts/20180205-uva10405">20180205-uva10405</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Jan</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->5<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20180131-uva11917">20180131-uva11917</a><a class="css-0" href="/logA/posts/20180128-uva10931">20180128-uva10931</a><a class="css-0" href="/logA/posts/20180124-gets-puts">20180124-gets-puts</a><a class="css-0" href="/logA/posts/20180123-int2str">20180123-int2str</a><a class="css-0" href="/logA/posts/20180119-hackmd">20180119-hackmd</a></div></p></div></div></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">2017</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"> <span class="css-xn1bh7">11</span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div aria-label="Progress" data-orientation="vertical" class="chakra-stepper css-1v9xzqa"><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Dec</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->6<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20171230-recursion">20171230-recursion</a><a class="css-0" href="/logA/posts/20171221-uva10190">20171221-uva10190</a><a class="css-0" href="/logA/posts/20171219-recursion">20171219-recursion</a><a class="css-0" href="/logA/posts/20171217-DP">20171217-DP</a><a class="css-0" href="/logA/posts/20171210-vector">20171210-vector</a><a class="css-0" href="/logA/posts/20171202-styleguide">20171202-styleguide</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Nov</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->3<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20171106-gcd">20171106-gcd</a><a class="css-0" href="/logA/posts/20171105-makerfair">20171105-makerfair</a><a class="css-0" href="/logA/posts/20171102-computer-virus">20171102-computer-virus</a></div></p></div><div role="separator" data-orientation="vertical" data-status="incomplete" class="chakra-step__separator css-4t6ey5"></div></div><div data-status="incomplete" data-orientation="vertical" class="chakra-step css-ylpnre"><div data-status="incomplete" class="chakra-step__indicator css-kq5oaw">Oct</div><div class="css-6su6fj"><h3 data-status="incomplete" class="chakra-step__title css-1t2dsn0"><span class="css-xn1bh7"> <!-- -->2<!-- --> </span></h3><p data-status="incomplete" class="chakra-step__description css-y9i95k"><div class="chakra-stack css-8g8ihq"><a class="css-0" href="/logA/posts/20171027-refactor">20171027-refactor</a><a class="css-0" href="/logA/posts/20171027-bnf">20171027-bnf</a></div></p></div></div></div></p></div></div></div><style data-emotion="css 1h8zsow">.css-1h8zsow{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:var(--chakra-space-10);}</style><div class="css-1h8zsow"><p>@alanhc</p></div></div><span></span><span id="__chakra_env" hidden=""></span></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"allPostsData":[{"title":2024,"ct":52,"month":[{"title":"October","posts":[{"id":"ubuntu wifi網卡抓不到","title":"ubuntu wifi網卡抓不到"},{"id":"安裝後直接進到 windows問題","title":"安裝後直接進到 windows問題"},{"id":"超簡單!一文理解如何使用私有大型語言模型LLM-Ollama+OpenWebUI篇","title":"超簡單! 一文理解如何使用私有大型語言模型LLM - Ollama+Open WebUI篇"}]},{"title":"August","posts":[{"id":"更快的影片學習方法","title":"更快的影片學習方法"}]},{"title":"July","posts":[{"id":"fastapi-k8s","title":"fastapi-k8s"},{"id":"20240704-inferencing-llm","title":"inferencing-llm"}]},{"title":"June","posts":[{"id":"python使用pyinstaller製作桌面應用程式","title":"python使用pyinstaller製作桌面應用程式"},{"id":"20240621-公雲學習筆記","title":"20240621-公雲學習筆記"},{"id":"20240409-你要如何衡量你的人生","title":"20240409-你要如何衡量你的人生"}]},{"title":"April","posts":[{"id":"閱讀筆記-建中2021校內培訓簡報","title":"閱讀筆記"},{"id":"閱讀筆記-建中2021暑假資讀投影片-謝一","title":"閱讀筆記-建中 2021 暑假資讀投影片-謝一"}]},{"title":"March","posts":[{"id":"20240324-learn-go","title":"20240324-learn-go"},{"id":"20240321-interview-warmup","title":"20240321-interview-warmup"},{"id":"20240303-save-password-python","title":"20240303-save-password-python"}]},{"title":"February","posts":[{"id":"國外工作","title":"國外工作"},{"id":"20240227-warp-terminal","title":"20240227-warp-terminal"},{"id":"20240227-huggingface-nlp","title":"20240227-huggingface-nlp"},{"id":"20240227-Hash-Table-ood","title":"20240227-Hash-Table-ood"},{"id":"20240227-File-Systems-ood","title":"20240227-File-Systems-ood"},{"id":"20240226-minesweeper-ood","title":"20240226-minesweeper-ood"},{"id":"20240226-Circular-array-ood","title":"20240226-Circular-array-ood"},{"id":"20240222-text-network-analysis","title":"20240222-content-analysis"},{"id":"20240221-othello-ood","title":"20240221-othello-ood"},{"id":"20240219-chat-server-ood","title":"20240219-chat-server-ood"},{"id":"20240217-parking-lot-ood","title":"20240217-parking-lot-ood"},{"id":"20240217-online-book-reader-ood","title":"20240217-online-book-reader-ood"},{"id":"20240217-jukebox-ood","title":"20240217-jukebox-ood"},{"id":"20240217-jigsaw-ood","title":"20240217-jigsaw-ood"},{"id":"20240217-call-center-ood","title":"20240217-call-center-ood"},{"id":"20240216-levelsfyi-crawler","title":"20240216-levelsfyi-crawler"},{"id":"20240215-Deck-of-cards-ood","title":"20240205-Deck-of-cards"},{"id":"20240212-linkedin-private-api","title":"20240212-linkedin-private-api"},{"id":"20240211-taiwan-job-insights","title":"20240211-taiwan-job-insights"},{"id":"20240211-pastebin-design","title":"20240211-pastebin-design"},{"id":"20240207-personal-finanicial-manager","title":"20240207-personal-finanicial-manager"},{"id":"20240205-salesrank-design","title":"20240205-salesrank-design"},{"id":"20240203-trading-bot","title":"20240203-trading-bot"}]},{"title":"January","posts":[{"id":"quotes","title":"quotes"},{"id":"20240125-web-crawler-design","title":"20240125-web_srawler_design"},{"id":"20240125-duplicate-url-design","title":"20240125-duplicate-url-design"},{"id":"20240125-cache-design","title":"20240125-cache-design"},{"id":"20240124-break-cloudflare-bot-prevention","title":"20240124-break-cloudflare-bot-prevention"},{"id":"20240123-scalper","title":"20240123-scalper"},{"id":"20240122-stock-data-design","title":"20240122-stock-data"},{"id":"20240122-ntu-cool-video-download","title":"20240122-ntu-cool-video-download"},{"id":"20240122-english-speaking","title":"沒環境講英文?如何跟 ChatGPT 對話,快速加強口說"},{"id":"20240121-Web-Scraping-Instagram-with-Selenium","title":"20240121-Web-Scraping-Instagram-with-Selenium"},{"id":"20240119-OSINT","title":"20240119-OSINT"},{"id":"20240114-product-insight","title":"20240114-product-insight"},{"id":"20240113-data-engineer-salary","title":"20240113-data-pay"},{"id":"20240108-attention","title":"20240108-attention"},{"id":"20240107-notion-website","title":"20240107-notion-websire"}]}]},{"title":2023,"ct":73,"month":[{"title":"December","posts":[{"id":"20231222-chat","title":"20231222-socket-io"},{"id":"20231217-ntu-matches","title":"20231217-ntu-matches"},{"id":"20231217-google-gemini","title":"20231217-google-gemini"},{"id":"20231213-pyspark","title":"20231213-pyspark"},{"id":"20231210-convert-post-markdown","title":"20231210-convert-post-markdown"},{"id":"20231209-docker-machine-learning","title":"20231209-docker-machine-learning"},{"id":"20231209-AI-music-example","title":"20231209-AI-music-example"},{"id":"20231202-twitter-bot","title":"20231202-twitter-bot"}]},{"title":"November","posts":[{"id":"20231130-Building-and-Evaluating-Advanced-RAG","title":"20231130-Building-and-Evaluating-Advanced-RAG (未完)"},{"id":"20231129-Should You Use Open Source Large Language Models","title":"Should You Use Open Source Large Language Models?"},{"id":"20231125-cloudflare-tunnel","title":"20231125-cloudflare-tunnel"},{"id":"20231124-terraform-vercel","title":"20231124-terraform-vercel"},{"id":"20231116-Vector-Databases-from-Embeddings-to-Applications","title":"20231116-Vector-Databases-from-Embeddings-to-Applications"},{"id":"20231115-How-to-Build-An-MVP-Startup-School","title":"20231115-How-to-Build-An-MVP-Startup-School"},{"id":"20231115-Building-Multi-Modal-Search-with-Vector-Databases","title":"20211115-LIVEBuilding-Multi-Modal-Search-with-Vector-Databases"},{"id":"20231112-nextjs-upload-large-file","title":"2021112-upload-large-file"},{"id":"learn-filebase","title":"filebase"},{"id":"20231110-生成式AI淺談圖像生成模型-Diffusion-Model-原理","title":"20231110-生成式AI淺談圖像生成模型-Diffusion-Model-原理"},{"id":"20231110-80分鐘快速了解大型語言模型-5-30 有咒術迴戰雷","title":"80分鐘快速了解大型語言模型-5-30 有咒術迴戰雷"},{"id":"20231108-How-Diffusion-Models-Work","title":"20231108-How-Diffusion-Models-Work"},{"id":"20231107-imgbb","title":"20231107-imgbb"},{"id":"20231107-MUI-toolpad","title":"20231107-MUI-toolpad"},{"id":"20231104-learn-cosmos","title":"20231104-learn-cosmos"},{"id":"20231103-linklist","title":"20231103-linklist"},{"id":"20231103-Finetuning-Large-Language-Models","title":"20231103-Finetuning-Large-Language-Models"},{"id":"20231101-generative-ai-for-everyone","title":"20231101-generative-ai-for-everyone"}]},{"title":"October","posts":[{"id":"20231031-Andrew-Ng-Opportunities-in-AI-2023","title":"Andrew-Ng-Opportunities-in-AI-2023"},{"id":"20231029-Building-Systems-with-the-ChatGPT-API","title":"Building Systems with the ChatGPT API"},{"id":"20231028-mozilla-ai","title":"20231028-mozilla-ai"},{"id":"20231026-ChatGPT-Prompt-Engineering-for-Developers","title":"20231026-ChatGPT-Prompt-Engineering-for-Developers"},{"id":"20231023-learning-from-lin","title":"20231023-learning"},{"id":"20231023-Pair-Programming-with-a-Large-Language-Model","title":"20231023-Pair-Programming-with-a-Large-Language-Model"},{"id":"20231010-webauthn","title":"20231010-webauthn"},{"id":"20231006-fastapi-streaming","title":"20231006-fastapi-streaming"}]},{"title":"September","posts":[{"id":"20230929-rn-qrcode","title":"20230929-rn-qrcode"},{"id":"20230926-21-things-before-21","title":"20230926-21-things-before-21"},{"id":"20230924-wagami","title":"20230924-wagami"},{"id":"20230924-QR-Code","title":"20230924-QR-Code"},{"id":"20230924-cmd-copy","title":"20230924-cmd-copy"},{"id":"20230920-nx","title":"20230920-nx"},{"id":"20230919-hardhat","title":"hardhat"},{"id":"20230907-react-native","title":"初探 react native"},{"id":"20230831-mdx","title":"在部落格中使用mdx"}]},{"title":"August","posts":[{"id":"20230831-mongodb-aggregate-multiple-group","title":"在mongodb裡面將兩個group merge成一個結果"},{"id":"20230831-kbar","title":"(未完)加入kbar讓搜尋更便利"},{"id":"20230830-nextjs-google-analytics","title":"加入GA"},{"id":"20230829-peerjs","title":"20230829-peerjs"},{"id":"20230829-orbit-chat","title":"20230829-orbit-chat"},{"id":"20230829-chakra-ui","title":"20230829-chakra-ui"},{"id":"20230828-libp2p","title":"初探libp2p"},{"id":"20230828-ipfs","title":"初探ipfs"},{"id":"20230827-vscode-animate-extension","title":"安裝動漫vscode主題"},{"id":"20230827-orbitdb","title":"初探orbitdb"},{"id":"20230827-notion-alternative","title":"notion的替代品 - AFFiNE"},{"id":"20230827-next-pwa","title":"加入PWA功能"},{"id":"20230827-chat-app","title":"chat聊天界面初探"},{"id":"nextjs","title":"nextjs 相關文章"},{"id":"nextjs-markdown","title":"統整markdown的使用方法"},{"id":"20230826-next-seo","title":"加入next-seo"},{"id":"20230826-import-alias","title":"加入import別名讓import更好看"},{"id":"20230826-imgur","title":"imgur上傳"},{"id":"20230825-rss","title":"添加rss功能到nextjs部落格"},{"id":"20230824-chakra-darkmode","title":"部落格暗黑模式"},{"id":"20230824-bigchain","title":"初探bigchaindb"},{"id":"20230820-nexjs13","title":"更新nextjs到13"},{"id":"20230819-mermaid-js","title":"讓部落格可以顯示markdown的流程圖"},{"id":"20230818-markdown-section-link","title":"實作markdown section link"},{"id":"20230817-next-sitemap","title":"將部落格加入sitemap功能"},{"id":"20230816-nprogress","title":"新增page loading的進度條"},{"id":"20230813-back-up-crawler","title":"三種使用Python爬取網頁的方法"},{"id":"20230812-react-syntax-clipboard","title":"使用react syntax highlighter及useClipboard強化程式碼區塊"}]},{"title":"January","posts":[{"id":"20230109-ipfs-upload","title":"實作ipfs上傳的前端"},{"id":"20230108-solidity-nft","title":"erc 1155 合約"}]}]},{"title":2022,"ct":9,"month":[{"title":"December","posts":[{"id":"20221231-k8s-notes","title":"部署我的網站到k8s上"},{"id":"20221230-tezos-nft-tutorial","title":"使用smartpy撰寫tezos的nft程式"},{"id":"20221228-solana-nft-tutorial","title":"在solana上mint NFT"},{"id":"first-day","title":"Hello World"}]},{"title":"August","posts":[{"id":"20220811-monorepo-development","title":"20220811-monorepo-development"},{"id":"20220811-LINE-Blockchain-Developer-Intern","title":"20220811-LINE-Blockchain-Developer-Intern"}]},{"title":"July","posts":[{"id":"20220721-upgrade-nx-repo-to-react-18","title":"Upgrade nx repo to react 18"}]},{"title":"May","posts":[{"id":"20220531-Decentral-Showroom-NTU-DApp-Term-project","title":"Decentral Showroom — NTU DApp Term project"},{"id":"20220518-web3-世界裡的驗證機制-以Tezos為例","title":"web3 世界裡的驗證機制,以Tezos為例"}]}]},{"title":2021,"ct":5,"month":[{"title":"October","posts":[{"id":"20211028-虛擬人課堂筆記4-vroid","title":"20211028-虛擬人課堂筆記4-vroid"},{"id":"20211027-虛擬人課堂筆記3-unity-facecapture","title":"20211027-虛擬人課堂筆記3-unity-facecapture"},{"id":"20211018-虛擬人課堂筆記2","title":"虛擬人課堂筆記2 —Mozilla Hub"},{"id":"20211011-虛擬人課堂筆記-spark-ar","title":"虛擬人課堂筆記 — SparkAR"}]},{"title":"August","posts":[{"id":"20210820-開發mcu-up-銘傳金手指3-0-的那些事兒","title":"20210820-開發mcu-up-銘傳金手指3-0-的那些事兒"}]}]},{"title":2019,"ct":1,"month":[{"title":"June","posts":[{"id":"20190614-CGfinal","title":"20190614-CGfinal"}]}]},{"title":2018,"ct":19,"month":[{"title":"April","posts":[{"id":"20190409-uva409","title":"20190409-uva409"},{"id":"20180405-uva630","title":"20180405-uva630"}]},{"title":"March","posts":[{"id":"20180317-uva10409","title":"20180317-uva10409"},{"id":"20180314-uva105","title":"20180314-uva105"},{"id":"20180312-uva10190","title":"20180312-uva10190"},{"id":"20180309-uva141","title":"20180309-uva141"}]},{"title":"February","posts":[{"id":"20180228-hash-table","title":"20180228-hash-table"},{"id":"20180222-uva401","title":"20180222-uva401"},{"id":"20180212-uva10611","title":"20180212-uva10611"},{"id":"20180210-NCTU-PCCA-winter-notes","title":"20180210-NCTU-PCCA-winter-notes"},{"id":"20180209-uva406","title":"20180209-uva406"},{"id":"20180209-linked-list","title":"20180209-linked-list"},{"id":"20180206-uva10162","title":"20180206-uva10162"},{"id":"20180205-uva10405","title":"20180205-uva10405"}]},{"title":"January","posts":[{"id":"20180131-uva11917","title":"20180131-uva11917"},{"id":"20180128-uva10931","title":"20180128-uva10931"},{"id":"20180124-gets-puts","title":"20180124-gets-puts"},{"id":"20180123-int2str","title":"20180123-int2str"},{"id":"20180119-hackmd","title":"20180119-hackmd"}]}]},{"title":2017,"ct":11,"month":[{"title":"December","posts":[{"id":"20171230-recursion","title":"20171230-recursion"},{"id":"20171221-uva10190","title":"20171221-uva10190"},{"id":"20171219-recursion","title":"20171219-recursion"},{"id":"20171217-DP","title":"20171217-DP"},{"id":"20171210-vector","title":"20171210-vector"},{"id":"20171202-styleguide","title":"20171202-styleguide"}]},{"title":"November","posts":[{"id":"20171106-gcd","title":"20171106-gcd"},{"id":"20171105-makerfair","title":"20171105-makerfair"},{"id":"20171102-computer-virus","title":"20171102-computer-virus"}]},{"title":"October","posts":[{"id":"20171027-refactor","title":"20171027-refactor"},{"id":"20171027-bnf","title":"20171027-bnf"}]}]}]},"__N_SSG":true},"page":"/archive","query":{},"buildId":"po6veTMgV-Nby5tLuQYTF","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html>