-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
28 lines (28 loc) · 77 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/banner.png"/><link rel="stylesheet" href="/_next/static/css/a658933eb39a7f11.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1612cb544ddaf6a5.js"/><script src="/_next/static/chunks/fd9d1056-fcd5aeaa3f47f520.js" async=""></script><script src="/_next/static/chunks/7023-5d1ac04095f52423.js" async=""></script><script src="/_next/static/chunks/main-app-860bec2a8d2ccd9f.js" async=""></script><script src="/_next/static/chunks/8056-71da28e5fc15486a.js" async=""></script><script src="/_next/static/chunks/4673-365adf3970fb9263.js" async=""></script><script src="/_next/static/chunks/app/%5Blang%5D/page-e7dcf0efa13acaec.js" async=""></script><script src="/_next/static/chunks/app/not-found-ed38a9c75e67bc67.js" async=""></script><script src="/_next/static/chunks/9c4e2130-111ac8d09ac54ee5.js" async=""></script><script src="/_next/static/chunks/53c13509-b2f8a141e1a83563.js" async=""></script><script src="/_next/static/chunks/app/%5Blang%5D/layout-39193ac69a8f7b4d.js" async=""></script><script src="/_next/static/chunks/app/%5Blang%5D/not-found-f84ea0ba03d441d7.js" async=""></script><link rel="shortcut icon" href="/images/favicon.png"/><meta name="theme-name" content="nextplate"/><meta name="msapplication-TileColor" content="#000000"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>Tan Shuai (tanshuai)
</title><link rel="alternate" hrefLang="en" href="https://tanshuai.com/en"/><link rel="alternate" hrefLang="zh-hant" href="https://tanshuai.com/zh-hant"/><link rel="alternate" hrefLang="zh" href="https://tanshuai.com/zh"/><link rel="alternate" hrefLang="ja" href="https://tanshuai.com/ja"/><link rel="alternate" hrefLang="de" href="https://tanshuai.com/de"/><link rel="alternate" hrefLang="fr" href="https://tanshuai.com/fr"/><link rel="alternate" hrefLang="ru" href="https://tanshuai.com/ru"/><link rel="alternate" hrefLang="es" href="https://tanshuai.com/es"/><link rel="alternate" hrefLang="ko" href="https://tanshuai.com/ko"/><link rel="alternate" hrefLang="th" href="https://tanshuai.com/th"/><link rel="alternate" hrefLang="vi" href="https://tanshuai.com/vi"/><link rel="alternate" hrefLang="ar" href="https://tanshuai.com/ar"/><link rel="alternate" hrefLang="pt" href="https://tanshuai.com/pt"/><link rel="alternate" hrefLang="it" href="https://tanshuai.com/it"/><link rel="alternate" hrefLang="nl" href="https://tanshuai.com/nl"/><link rel="alternate" hrefLang="sv" href="https://tanshuai.com/sv"/><link rel="alternate" hrefLang="no" href="https://tanshuai.com/no"/><link rel="alternate" hrefLang="da" href="https://tanshuai.com/da"/><link rel="alternate" hrefLang="fi" href="https://tanshuai.com/fi"/><link rel="alternate" hrefLang="tr" href="https://tanshuai.com/tr"/><link rel="alternate" hrefLang="he" href="https://tanshuai.com/he"/><meta name="description" content="Tan Shuai (tanshuai)
"/><meta name="author" content="Tan Shuai"/><meta property="og:title" content="Tan Shuai (tanshuai)
"/><meta property="og:description" content="Tan Shuai (tanshuai)
"/><meta property="og:type" content="website"/><meta property="og:url" content="https://tanshuai.com/en/"/><meta name="twitter:title" content="Tan Shuai (tanshuai)
"/><meta name="twitter:description" content="Tan Shuai (tanshuai)
"/><meta property="og:image" content="https://tanshuai.com/images/og-image.png"/><meta name="twitter:image" content="https://tanshuai.com/images/og-image.png"/><meta name="twitter:card" content="summary_large_image"/><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-WMJS92P7');</script><script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Tan Shuai",
"url": "https://tanshuai.com/en"
}</script><link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;600&family=Signika:wght@500;700&display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WMJS92P7" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){c.add('dark')}else{c.add('light')}}else if(e){c.add(e|| '')}else{c.add('light')}}catch(e){}}()</script><header class="header z-30 sticky top-0"><nav class="navbar container"><div class="order-0"><a href="/" class="navbar-brand inline-block">Tan Shuai</a></div><input id="nav-toggle" type="checkbox" class="hidden"/><label for="nav-toggle" class="order-3 cursor-pointer flex items-center lg:hidden text-dark dark:text-white lg:order-1"><svg id="show-button" class="h-6 fill-current block" viewBox="0 0 20 20"><title>Menu Open</title><path d="M0 3h20v2H0V3z m0 6h20v2H0V9z m0 6h20v2H0V0z"></path></svg><svg id="hide-button" class="h-6 fill-current hidden" viewBox="0 0 20 20"><title>Menu Close</title><polygon points="11 9 22 9 22 11 11 11 11 22 9 22 9 11 -2 11 -2 9 9 9 9 -2 11 -2" transform="rotate(45 10 10)"></polygon></svg></label><ul id="nav-menu" class="navbar-nav order-3 hidden w-full pb-6 lg:order-1 lg:flex lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8"><li class="nav-item"><a href="/" class="nav-link block false">Home</a></li><li class="nav-item"><a href="/blog/" class="nav-link block false">Blog</a></li><li class="nav-item nav-dropdown group relative"><span class="nav-link inline-flex items-center ">More<svg class="h-4 w-4 fill-current" viewBox="0 0 20 20"><path d="M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z"></path></svg></span><ul class="nav-dropdown-list hidden group-hover:block lg:invisible lg:absolute lg:block lg:opacity-0 lg:group-hover:visible lg:group-hover:opacity-100"><li class="nav-dropdown-item"><a href="/categories/" class="nav-dropdown-link block false">Categories</a></li><li class="nav-dropdown-item"><a href="/tags/" class="nav-dropdown-link block false">Tags</a></li></ul></li><li class="nav-item"><a href="/about/" class="nav-link block false">About</a></li></ul><div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0"><button class="border-border text-dark hover:text-primary dark:border-darkmode-border mr-5 inline-block border-r pr-5 text-xl dark:text-white dark:hover:text-darkmode-primary" aria-label="search" data-search-trigger="true"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M456.69 421.39 362.6 327.3a173.81 173.81 0 0 0 34.84-104.58C397.44 126.38 319.06 48 222.72 48S48 126.38 48 222.72s78.38 174.72 174.72 174.72A173.81 173.81 0 0 0 327.3 362.6l94.09 94.09a25 25 0 0 0 35.3-35.3zM97.92 222.72a124.8 124.8 0 1 1 124.8 124.8 124.95 124.95 0 0 1-124.8-124.8z"></path></svg></button><div class="mr-3 bg-theme-light dark:bg-darkmode-theme-light dark:text-darkmode-dark rounded"><div class="dropdown-selection cursor-pointer px-2 py-2 text-md text-center w-20 select-none whitespace-nowrap">English</div><ul style="max-height:calc(100vh - 120px)" class="invisible dropdown-menu absolute z-100 bg-theme-light whitespace-nowrap text-dark dark:bg-darkmode-theme-light dark:text-darkmode-dark overflow-y-auto"><li class="dropdown-item"><a href="/" hrefLang="en" class="block rounded px-2 py-2 text-center w-20 text-sm">English</a></li><li class="dropdown-item"><a href="/zh-hant/" hrefLang="zh-hant" class="block rounded px-2 py-2 text-center w-20 text-sm">繁體中文</a></li><li class="dropdown-item"><a href="/zh/" hrefLang="zh" class="block rounded px-2 py-2 text-center w-20 text-sm">简体中文</a></li><li class="dropdown-item"><a href="/ja/" hrefLang="ja" class="block rounded px-2 py-2 text-center w-20 text-sm">日本語</a></li><li class="dropdown-item"><a href="/de/" hrefLang="de" class="block rounded px-2 py-2 text-center w-20 text-sm">Deutsch</a></li><li class="dropdown-item"><a href="/fr/" hrefLang="fr" class="block rounded px-2 py-2 text-center w-20 text-sm">Français</a></li><li class="dropdown-item"><a href="/ru/" hrefLang="ru" class="block rounded px-2 py-2 text-center w-20 text-sm">Русский</a></li><li class="dropdown-item"><a href="/es/" hrefLang="es" class="block rounded px-2 py-2 text-center w-20 text-sm">Español</a></li><li class="dropdown-item"><a href="/ko/" hrefLang="ko" class="block rounded px-2 py-2 text-center w-20 text-sm">한국어</a></li><li class="dropdown-item"><a href="/th/" hrefLang="th" class="block rounded px-2 py-2 text-center w-20 text-sm">ภาษาไทย</a></li><li class="dropdown-item"><a href="/vi/" hrefLang="vi" class="block rounded px-2 py-2 text-center w-20 text-sm">Tiếng Việt</a></li><li class="dropdown-item"><a href="/ar/" hrefLang="ar" class="block rounded px-2 py-2 text-center w-20 text-sm">عربي</a></li><li class="dropdown-item"><a href="/pt/" hrefLang="pt" class="block rounded px-2 py-2 text-center w-20 text-sm">Português</a></li><li class="dropdown-item"><a href="/it/" hrefLang="it" class="block rounded px-2 py-2 text-center w-20 text-sm">Italiano</a></li><li class="dropdown-item"><a href="/nl/" hrefLang="nl" class="block rounded px-2 py-2 text-center w-20 text-sm">Nederlands</a></li><li class="dropdown-item"><a href="/sv/" hrefLang="sv" class="block rounded px-2 py-2 text-center w-20 text-sm">Svenska</a></li><li class="dropdown-item"><a href="/no/" hrefLang="no" class="block rounded px-2 py-2 text-center w-20 text-sm">Norsk</a></li><li class="dropdown-item"><a href="/da/" hrefLang="da" class="block rounded px-2 py-2 text-center w-20 text-sm">Dansk</a></li><li class="dropdown-item"><a href="/fi/" hrefLang="fi" class="block rounded px-2 py-2 text-center w-20 text-sm">Suomi</a></li><li class="dropdown-item"><a href="/tr/" hrefLang="tr" class="block rounded px-2 py-2 text-center w-20 text-sm">Türkçe</a></li><li class="dropdown-item"><a href="/he/" hrefLang="he" class="block rounded px-2 py-2 text-center w-20 text-sm">עברית</a></li></ul></div></div></nav></header><div id="searchModal" class="search-modal"><div id="searchModalOverlay" class="search-modal-overlay"></div><div class="search-wrapper"><div class="search-wrapper-header"><label for="searchInput" class="absolute left-7 top-[calc(50%-7px)]"><span class="sr-only">search icon</span><svg viewBox="0 0 512 512" height="18" width="18" class="-mt-0.5"><path fill="currentcolor" d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8.0 45.3s-32.8 12.5-45.3.0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9.0 208S93.1.0 208 0 416 93.1 416 208zM208 352a144 144 0 100-288 144 144 0 100 288z"></path></svg></label><input id="searchInput" placeholder="Search..." class="search-wrapper-header-input" type="input" autofocus="" autoComplete="off" name="search" value=""/></div><div class="search-wrapper-body"><div class="py-8 text-center">Type something to search...</div></div><div class="search-wrapper-footer"><span class="flex items-center"><kbd><svg width="14" height="14" fill="currentcolor" viewBox="0 0 16 16"><path d="M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 011.506.0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 01-.753-1.659z"></path></svg></kbd><kbd><svg width="14" height="14" fill="currentcolor" viewBox="0 0 16 16"><path d="M3.204 5h9.592L8 10.481 3.204 5zm-.753.659 4.796 5.48a1 1 0 001.506.0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 00-.753 1.659z"></path></svg></kbd>to navigate</span><span class="flex items-center"><kbd><svg width="12" height="12" fill="currentcolor" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M14.5 1.5a.5.5.0 01.5.5v4.8a2.5 2.5.0 01-2.5 2.5H2.707l3.347 3.346a.5.5.0 01-.708.708l-4.2-4.2a.5.5.0 010-.708l4-4a.5.5.0 11.708.708L2.707 8.3H12.5A1.5 1.5.0 0014 6.8V2a.5.5.0 01.5-.5z"></path></svg></kbd>to select</span><span><kbd>ESC</kbd> to close</span></div></div></div><main><section class="section pt-14"><div class="container"><div class="row justify-center"><div class="lg:col-7 md:col-9 mb-8 text-center"><h1 class="mb-4 text-h3 lg:text-h1">Tan Shuai's World of Innovation and Excellence</h1><p class="mb-8">Welcome to Tan Shuai's website, a hub for cutting-edge technology, business insights, and explorations of a wonderful life and travel. Dive into the latest advancements in artificial intelligence, blockchain, semiconductor, and more. Enjoy a unique blend of perspectives from both China and the United States, offering comprehensive insights into global developments. Join me on a journey through innovative tech, strategic business ideas, and the joys of life and travel.</p><a href="http://www.tanshuai.com/blog" class="btn btn-primary" target="_blank" rel="noopener">Explore Now</a></div><div class="col-12"><img class="mx-auto" width="800" height="420" alt="banner image" src="/images/banner.png"/></div></div></div><div class="section-sm pb-0"><div class="container"><div class="row"><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/ultra-low-cost-ddr3-ddr4-lpddr3-lpddr4-memory-test-system/">Ultra Low-Cost DDR3, DDR4, LP-DDR3 & LP-DDR4 Memory Test System</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/semiconductors/">Semiconductors</a></li><li class="mr-4 inline-block">01 Jun, 2024</li></ul><p class="mb-6">If you're like me, always on the lookout for cost-effective solutions without compromising on quality, you're going to love what I have to share today. In our fast-paced tech world, ensuring that our
</p><a href="/blog/ultra-low-cost-ddr3-ddr4-lpddr3-lpddr4-memory-test-system/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/full-custom-asic-design-secrets-bitcoin-cryptocurrency-mining/">Full Custom ASIC Design Secrets for Bitcoin and Cryptocurrency Mining</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/semiconductors/">Semiconductors<!-- -->, </a><a href="/categories/bitcoin/">Bitcoin<!-- -->, </a><a href="/categories/cryptocurrency/">Cryptocurrency<!-- -->, </a><a href="/categories/blockchain/">Blockchain</a></li><li class="mr-4 inline-block">30 May, 2022</li><li class="inline-block">30 Dec, 2023</li></ul><p class="mb-6">Tan [email protected]
In the competitive world of cryptocurrency mining, power efficiency, hashrate perform
</p><a href="/blog/full-custom-asic-design-secrets-bitcoin-cryptocurrency-mining/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/convert-markdown-academic-paper-pdf-macos/">Quickly Convert Markdown to Academic-Style Paper PDF on macOS</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">03 Mar, 2022</li></ul><p class="mb-6">In this guide, I'll walk you through how I convert Markdown documents to academic-style paper PDFs on macOS using Pandoc and BasicTeX. This method is quick and straightforward, perfect for when you n
</p><a href="/blog/convert-markdown-academic-paper-pdf-macos/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/check-voltage-current-on-macos-for-power-adapter/">Check Voltage & Current on MacOS for Power Adapter</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/macos/">MacOS</a></li><li class="mr-4 inline-block">14 Feb, 2022</li></ul><p class="mb-6">When you are using a MacBook, you may want to check the voltage and current of the power adapter. Here is a simple way to check the voltage and current of the power adapter on MacOS.
Open Terminal.a
</p><a href="/blog/check-voltage-current-on-macos-for-power-adapter/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/migrate-a-github-lfs-git-large-file-storage-repository-to-aws-codecommit/">Migrate a GitHub LFS (Git Large File Storage) repository to AWS CodeCommit</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">09 Feb, 2022</li></ul><p class="mb-6">I recently migrated one of my GitHub repositories, which uses Git Large File Storage (LFS), over to AWS CodeCommit. I thought I'd share the process with you in case you’re looking to do something sim
</p><a href="/blog/migrate-a-github-lfs-git-large-file-storage-repository-to-aws-codecommit/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/aws-codecommit-the-githubs-large-file-storage-git-lfs-free-alternative/">AWS CodeCommit: The GitHub Large File Storage (Git LFS) Free Alternative</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">09 Feb, 2022</li></ul><p class="mb-6">AWS CodeCommit offers a robust alternative to GitHub's Large File Storage (Git LFS) service, providing an efficient solution for managing large files in your Git repositories.
Why You Should Reco
</p><a href="/blog/aws-codecommit-the-githubs-large-file-storage-git-lfs-free-alternative/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/usr-bin-sudo-must-be-owned-by-uid-0-and-have-the-setuid-bit-set-on-ubuntu-20-04/">/usr/bin/sudo must be owned by uid 0 and have the setuid bit set on Ubuntu 20.04</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/linux/">Linux</a></li><li class="mr-4 inline-block">08 Oct, 2021</li></ul><p class="mb-6">If you encounter the error message "/usr/bin/sudo must be owned by uid 0 and have the setuid bit set" on Ubuntu 20.04, follow these steps to resolve the issue.During the boot process, press the</p><a href="/blog/usr-bin-sudo-must-be-owned-by-uid-0-and-have-the-setuid-bit-set-on-ubuntu-20-04/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/reset-restore-all-subdirectories-of-git/">Reset/Restore All subdirectories of Git</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">22 Sep, 2021</li></ul><p class="mb-6">Managing a Git repository effectively often requires resetting or restoring subdirectories to maintain a clean and functional codebase. This guide provides a concise, step-by-step approach to reset o
</p><a href="/blog/reset-restore-all-subdirectories-of-git/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/electron-build-tools-error-error-failed-to-run-choco-install-pywin32-yes/">Electron Build Tools `ERROR Error: Failed to run "choco install pywin32 --yes"`</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">08 Sep, 2021</li></ul><p class="mb-6">When working with Electron Build Tools, you might encounter an error related to the installation of pywin32 via Chocolatey. This can be frustrating, especially when it's a required dependency for you
</p><a href="/blog/electron-build-tools-error-error-failed-to-run-choco-install-pywin32-yes/" class="btn btn-outline-primary btn-sm">Read More</a></div></div><div class="mb-14 md:col-6 lg:col-4"><div class="bg-body dark:bg-darkmode-body"><h4 class="mb-3"><a href="/blog/get-current-commit-id-of-git-and-update-to-package-json/">Get current commit id of Git and update to package.json</a></h4><ul class="mb-4"><li class="mr-4 inline-block"><a href="/authors/tan-shuai/"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z"></path></svg>Tan Shuai</a></li><li class="mr-4 inline-block"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" class="-mt-1 mr-2 inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z"></path></svg><a href="/categories/software-development/">Software Development</a></li><li class="mr-4 inline-block">21 Aug, 2021</li></ul><p class="mb-6">When developing a Node.js project, you may want to keep track of the current commit ID of your Git repository. This information can be useful for debugging, versioning, or deployment purposes. One wa
</p><a href="/blog/get-current-commit-id-of-git-and-update-to-package-json/" class="btn btn-outline-primary btn-sm">Read More</a></div></div></div></div></div></section></main><footer class="bg-theme-light dark:bg-darkmode-theme-light"><div class="container"><div class="row items-center py-10"><div class="mb-8 text-center lg:col-3 lg:mb-0 lg:text-left"><a href="/" class="navbar-brand inline-block">Tan Shuai</a></div><div class="mb-8 text-center lg:col-6 lg:mb-0"><ul></ul></div><div class="mb-8 text-center lg:col-3 lg:mb-0 lg:mt-0 lg:text-right"><ul class="social-icons"><li><a aria-label="github" href="https://www.github.com/tanshuai" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">github</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="inline-block" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a></li><li><a aria-label="linkedin" href="https://www.linkedin.com/in/tanshuai" target="_blank" rel="noopener noreferrer nofollow"><span class="sr-only">linkedin</span><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" class="inline-block" 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></li></ul></div></div></div><div class="border-t border-border py-7 dark:border-darkmode-border"><div class="container text-center text-light dark:text-darkmode-light"><p>©2001-2024 tanshuai.com</p></div></div></footer><script src="/_next/static/chunks/webpack-1612cb544ddaf6a5.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a658933eb39a7f11.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[5751,[],\"\"]\n4:I[5806,[\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"6495\",\"static/chunks/app/%5Blang%5D/page-e7dcf0efa13acaec.js\"],\"default\"]\n5:I[9199,[\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"6495\",\"static/chunks/app/%5Blang%5D/page-e7dcf0efa13acaec.js\"],\"default\"]\n11:I[9275,[],\"\"]\n12:I[1343,[],\"\"]\n13:I[8709,[\"9160\",\"static/chunks/app/not-found-ed38a9c75e67bc67.js\"],\"default\"]\n15:I[6130,[],\"\"]\n16:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a658933eb39a7f11.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L2\",null,{\"buildId\":\"u_TUygW4rf5LoZARqFNTX\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/en/\",\"initialTree\":[\"\",{\"children\":[[\"lang\",\"en\",\"d\"],{\"children\":[\"__PAGE__?{\\\"lang\\\":\\\"en\\\"}\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[[\"lang\",\"en\",\"d\"],{\"children\":[\"__PAGE__\",{},[[\"$L3\",[[\"$\",\"$L4\",null,{\"lang\":\"en\"}],[\"$\",\"section\",null,{\"className\":\"section pt-14\",\"children\":[[\"$\",\"div\",null,{\"className\":\"container\",\"children\":[\"$\",\"div\",null,{\"className\":\"row justify-center\",\"children\":[[\"$\",\"div\",null,{\"className\":\"lg:col-7 md:col-9 mb-8 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"mb-4 text-h3 lg:text-h1\",\"dangerouslySetInnerHTML\":{\"__html\":\"Tan Shuai\u0026#39;s World of Innovation and Excellence\"}}],[\"$\",\"p\",null,{\"className\":\"mb-8\",\"dangerouslySetInnerHTML\":{\"__html\":\"Welcome to Tan Shuai\u0026#39;s website, a hub for cutting-edge technology, business insights, and explorations of a wonderful life and travel. Dive into the latest advancements in artificial intelligence, blockchain, semiconductor, and more. Enjoy a unique blend of perspectives from both China and the United States, offering comprehensive insights into global developments. Join me on a journey through innovative tech, strategic business ideas, and the joys of life and travel.\"}}],[\"$\",\"a\",null,{\"href\":\"http://www.tanshuai.com/blog\",\"className\":\"btn btn-primary\",\"target\":\"_blank\",\"rel\":\"noopener\",\"children\":\"Explore Now\"}]]}],[\"$\",\"div\",null,{\"className\":\"col-12\",\"children\":[\"$\",\"$L5\",null,{\"src\":\"/images/banner.png\",\"className\":\"mx-auto\",\"width\":\"800\",\"height\":\"420\",\"alt\":\"banner image\"}]}]]}]}],[\"$\",\"div\",null,{\"className\":\"section-sm pb-0\",\"children\":[\"$\",\"div\",null,{\"className\":\"container\",\"children\":[\"$\",\"div\",null,{\"className\":\"row\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$L6\"}],[\"$\",\"div\",\"1\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$L7\"}],[\"$\",\"div\",\"2\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$L8\"}],[\"$\",\"div\",\"3\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$L9\"}],[\"$\",\"div\",\"4\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$La\"}],[\"$\",\"div\",\"5\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$Lb\"}],[\"$\",\"div\",\"6\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$Lc\"}],[\"$\",\"div\",\"7\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$Ld\"}],[\"$\",\"div\",\"8\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$Le\"}],[\"$\",\"div\",\"9\",{\"className\":\"mb-14 md:col-6 lg:col-4\",\"children\":\"$Lf\"}]]}]}]}],\"\"]}]]],null],null]},[\"$L10\",null],null]},[[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L13\",null,{}],\"notFoundStyles\":[],\"styles\":null}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$L14\"],\"globalErrorComponent\":\"$15\",\"missingSlots\":\"$W16\"}]]\n"])</script><script>self.__next_f.push([1,"17:I[8958,[\"5706\",\"static/chunks/9c4e2130-111ac8d09ac54ee5.js\",\"7240\",\"static/chunks/53c13509-b2f8a141e1a83563.js\",\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"1084\",\"static/chunks/app/%5Blang%5D/layout-39193ac69a8f7b4d.js\"],\"default\"]\n18:I[7743,[\"5706\",\"static/chunks/9c4e2130-111ac8d09ac54ee5.js\",\"7240\",\"static/chunks/53c13509-b2f8a141e1a83563.js\",\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"1084\",\"static/chunks/app/%5Blang%5D/layout-39193ac69a8f7b4d.js\"],\"default\"]\n19:I[787,[\"5706\",\"static/chunks/9c4e2130-111ac8d09ac54ee5.js\",\"7240\",\"static/chunks/53c13509-b2f8a141e1a83563.js\",\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"1084\",\"static/chunks/app/%5Blang%5D/layout-39193ac69a8f7b4d.js\"],\"default\"]\n1b:I[7410,[\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"3097\",\"static/chunks/app/%5Blang%5D/not-found-f84ea0ba03d441d7.js\"],\"default\"]\n1c:I[5045,[\"5706\",\"static/chunks/9c4e2130-111ac8d09ac54ee5.js\",\"7240\",\"static/chunks/53c13509-b2f8a141e1a83563.js\",\"8056\",\"static/chunks/8056-71da28e5fc15486a.js\",\"4673\",\"static/chunks/4673-365adf3970fb9263.js\",\"1084\",\"static/chunks/app/%5Blang%5D/layout-39193ac69a8f7b4d.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/ultra-low-cost-ddr3-ddr4-lpddr3-lpddr4-memory-test-system/\",\"children\":\"Ultra Low-Cost DDR3, DDR4, LP-DDR3 \u0026 LP-DDR4 Memory Test System\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/semiconductors/\",\"children\":[\"Semiconductors\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"01 Jun, 2024\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"If you're like me, always on the lookout for cost-effective solutions without compromising on quality, you're going to love what I have to share today. In our fast-paced tech world, ensuring that our\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/ultra-low-cost-ddr3-ddr4-lpddr3-lpddr4-memory-test-system/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/full-custom-asic-design-secrets-bitcoin-cryptocurrency-mining/\",\"children\":\"Full Custom ASIC Design Secrets for Bitcoin and Cryptocurrency Mining\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/semiconductors/\",\"children\":[\"Semiconductors\",\", \"]}],[\"$\",\"a\",null,{\"href\":\"/categories/bitcoin/\",\"children\":[\"Bitcoin\",\", \"]}],[\"$\",\"a\",null,{\"href\":\"/categories/cryptocurrency/\",\"children\":[\"Cryptocurrency\",\", \"]}],[\"$\",\"a\",null,{\"href\":\"/categories/blockchain/\",\"children\":[\"Blockchain\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"30 May, 2022\"}],[\"$\",\"li\",null,{\"className\":\"inline-block\",\"children\":\"30 Dec, 2023\"}]]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"Tan [email protected]\\nIn the competitive world of cryptocurrency mining, power efficiency, hashrate perform\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/full-custom-asic-design-secrets-bitcoin-cryptocurrency-mining/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"8:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/convert-markdown-academic-paper-pdf-macos/\",\"children\":\"Quickly Convert Markdown to Academic-Style Paper PDF on macOS\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"03 Mar, 2022\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"In this guide, I'll walk you through how I convert Markdown documents to academic-style paper PDFs on macOS using Pandoc and BasicTeX. This method is quick and straightforward, perfect for when you n\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/convert-markdown-academic-paper-pdf-macos/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"9:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/check-voltage-current-on-macos-for-power-adapter/\",\"children\":\"Check Voltage \u0026 Current on MacOS for Power Adapter\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/macos/\",\"children\":[\"MacOS\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"14 Feb, 2022\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"When you are using a MacBook, you may want to check the voltage and current of the power adapter. Here is a simple way to check the voltage and current of the power adapter on MacOS.\\nOpen Terminal.a\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/check-voltage-current-on-macos-for-power-adapter/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"a:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/migrate-a-github-lfs-git-large-file-storage-repository-to-aws-codecommit/\",\"children\":\"Migrate a GitHub LFS (Git Large File Storage) repository to AWS CodeCommit\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"09 Feb, 2022\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"I recently migrated one of my GitHub repositories, which uses Git Large File Storage (LFS), over to AWS CodeCommit. I thought I'd share the process with you in case you’re looking to do something sim\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/migrate-a-github-lfs-git-large-file-storage-repository-to-aws-codecommit/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/aws-codecommit-the-githubs-large-file-storage-git-lfs-free-alternative/\",\"children\":\"AWS CodeCommit: The GitHub Large File Storage (Git LFS) Free Alternative\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"09 Feb, 2022\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"AWS CodeCommit offers a robust alternative to GitHub's Large File Storage (Git LFS) service, providing an efficient solution for managing large files in your Git repositories.\\nWhy You Should Reco\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/aws-codecommit-the-githubs-large-file-storage-git-lfs-free-alternative/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/usr-bin-sudo-must-be-owned-by-uid-0-and-have-the-setuid-bit-set-on-ubuntu-20-04/\",\"children\":\"/usr/bin/sudo must be owned by uid 0 and have the setuid bit set on Ubuntu 20.04\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/linux/\",\"children\":[\"Linux\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"08 Oct, 2021\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"If you encounter the error message \\\"/usr/bin/sudo must be owned by uid 0 and have the setuid bit set\\\" on Ubuntu 20.04, follow these steps to resolve the issue.During the boot process, press the\"}],[\"$\",\"a\",null,{\"href\":\"/blog/usr-bin-sudo-must-be-owned-by-uid-0-and-have-the-setuid-bit-set-on-ubuntu-20-04/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"d:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/reset-restore-all-subdirectories-of-git/\",\"children\":\"Reset/Restore All subdirectories of Git\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"22 Sep, 2021\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"Managing a Git repository effectively often requires resetting or restoring subdirectories to maintain a clean and functional codebase. This guide provides a concise, step-by-step approach to reset o\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/reset-restore-all-subdirectories-of-git/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"e:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/electron-build-tools-error-error-failed-to-run-choco-install-pywin32-yes/\",\"children\":\"Electron Build Tools `ERROR Error: Failed to run \\\"choco install pywin32 --yes\\\"`\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"08 Sep, 2021\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"When working with Electron Build Tools, you might encounter an error related to the installation of pywin32 via Chocolatey. This can be frustrating, especially when it's a required dependency for you\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/electron-build-tools-error-error-failed-to-run-choco-install-pywin32-yes/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"f:[\"$\",\"div\",null,{\"className\":\"bg-body dark:bg-darkmode-body\",\"children\":[\"$undefined\",[\"$\",\"h4\",null,{\"className\":\"mb-3\",\"children\":[\"$\",\"a\",null,{\"href\":\"/blog/get-current-commit-id-of-git-and-update-to-package-json/\",\"children\":\"Get current commit id of Git and update to package.json\"}]}],[\"$\",\"ul\",null,{\"className\":\"mb-4\",\"children\":[[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[\"$\",\"a\",null,{\"href\":\"/authors/tan-shuai/\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 496 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M248 104c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96zm0 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm0-240C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-49.7 0-95.1-18.3-130.1-48.4 14.9-23 40.4-38.6 69.6-39.5 20.8 6.4 40.6 9.6 60.5 9.6s39.7-3.1 60.5-9.6c29.2 1 54.7 16.5 69.6 39.5-35 30.1-80.4 48.4-130.1 48.4zm162.7-84.1c-24.4-31.4-62.1-51.9-105.1-51.9-10.2 0-26 9.6-57.6 9.6-31.5 0-47.4-9.6-57.6-9.6-42.9 0-80.6 20.5-105.1 51.9C61.9 339.2 48 299.2 48 256c0-110.3 89.7-200 200-200s200 89.7 200 200c0 43.2-13.9 83.2-37.3 115.9z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],\"Tan Shuai\"]}]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":[[\"$\",\"svg\",null,{\"stroke\":\"currentColor\",\"fill\":\"currentColor\",\"strokeWidth\":\"0\",\"viewBox\":\"0 0 512 512\",\"className\":\"-mt-1 mr-2 inline-block\",\"children\":[\"$undefined\",[[\"$\",\"path\",\"0\",{\"d\":\"M464 128H272l-54.63-54.63c-6-6-14.14-9.37-22.63-9.37H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm0 272H48V112h140.12l54.63 54.63c6 6 14.14 9.37 22.63 9.37H464v224z\",\"children\":[]}]]],\"style\":{\"color\":\"$undefined\"},\"height\":\"1em\",\"width\":\"1em\",\"xmlns\":\"http://www.w3.org/2000/svg\"}],[[\"$\",\"a\",null,{\"href\":\"/categories/software-development/\",\"children\":[\"Software Development\",false]}]]]}],[\"$\",\"li\",null,{\"className\":\"mr-4 inline-block\",\"children\":\"21 Aug, 2021\"}],\"$undefined\"]}],[\"$\",\"p\",null,{\"className\":\"mb-6\",\"children\":\"When developing a Node.js project, you may want to keep track of the current commit ID of your Git repository. This information can be useful for debugging, versioning, or deployment purposes. One wa\\n\"}],[\"$\",\"a\",null,{\"href\":\"/blog/get-current-commit-id-of-git-and-update-to-package-json/\",\"className\":\"btn btn-outline-primary btn-sm\",\"children\":\"Read More\"}]]}]\n"])</script><script>self.__next_f.push([1,"1a:[\"lang\",\"en\",\"d\"]\n1f:{\"name\":\"Home\",\"url\":\"/\"}\n20:{\"name\":\"Blog\",\"url\":\"/blog\"}\n23:{\"name\":\"Categories\",\"url\":\"/categories\"}\n24:{\"name\":\"Tags\",\"url\":\"/tags\"}\n22:[\"$23\",\"$24\"]\n21:{\"name\":\"More\",\"url\":\"\",\"hasChildren\":true,\"children\":\"$22\"}\n25:{\"name\":\"About\",\"url\":\"/about\"}\n1e:[\"$1f\",\"$20\",\"$21\",\"$25\"]\n26:[]\n27:{\"full_name\":\"Full Name\",\"full_name_placeholder\":\"Enter your full name\",\"mail\":\"Working Mail\",\"mail_placeholder\":\"[email protected]\",\"message\":\"Anything else?\",\"message_placeholder\":\"Message goes here...\",\"submit\":\"Submit\",\"read_more\":\"Read More\",\"categories\":\"Categories\",\"tags\":\"Tags\",\"share\":\"Share\",\"related_post\":\"Related Post\",\"page_not_found\":\"Page not found\",\"page_not_found_content\":\"The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.\",\"back_to_home\":\"back to home\"}\n1d:{\"main\":\"$1e\",\"footer\":\"$26\",\"default\":\"$27\",\"full_name\":\"Full Name\",\"full_name_placeholder\":\"Enter your full name\",\"mail\":\"Working Mail\",\"mail_placeholder\":\"[email protected]\",\"message\":\"Anything else?\",\"message_placeholder\":\"Message goes here...\",\"submit\":\"Submit\",\"read_more\":\"Read More\",\"categories\":\"Categories\",\"tags\":\"Tags\",\"share\":\"Share\",\"related_post\":\"Related Post\",\"page_not_found\":\"Page not found\",\"page_not_found_content\":\"The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.\",\"back_to_home\":\"back to home\"}\n"])</script><script>self.__next_f.push([1,"10:[\"$\",\"html\",null,{\"suppressHydrationWarning\":true,\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=5\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\\n j=d.createElement(s),dl=l!='dataLayer'?'\u0026l='+l:'';j.async=true;j.src=\\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\\n })(window,document,'script','dataLayer','GTM-WMJS92P7');\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\n \\\"@context\\\": \\\"https://schema.org\\\",\\n \\\"@type\\\": \\\"WebSite\\\",\\n \\\"name\\\": \\\"Tan Shuai\\\",\\n \\\"url\\\": \\\"https://tanshuai.com/en\\\"\\n}\"}}],[\"$\",\"link\",null,{\"rel\":\"shortcut icon\",\"href\":\"/images/favicon.png\"}],[\"$\",\"meta\",null,{\"name\":\"theme-name\",\"content\":\"nextplate\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: light)\",\"content\":\"#fff\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: dark)\",\"content\":\"#000\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Heebo:wght@400;600\u0026family=Signika:wght@500;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"noscript\",null,{\"children\":[\"$\",\"iframe\",null,{\"src\":\"https://www.googletagmanager.com/ns.html?id=GTM-WMJS92P7\",\"height\":\"0\",\"width\":\"0\",\"style\":{\"display\":\"none\",\"visibility\":\"hidden\"}}]}],null,[\"$\",\"$L17\",null,{\"children\":[[\"$\",\"$L18\",null,{\"lang\":\"en\",\"menu\":{\"main\":[{\"name\":\"Home\",\"url\":\"/\"},{\"name\":\"Blog\",\"url\":\"/blog\"},{\"name\":\"More\",\"url\":\"\",\"hasChildren\":true,\"children\":[{\"name\":\"Categories\",\"url\":\"/categories\"},{\"name\":\"Tags\",\"url\":\"/tags\"}]},{\"name\":\"About\",\"url\":\"/about\"}],\"footer\":[],\"default\":{\"full_name\":\"Full Name\",\"full_name_placeholder\":\"Enter your full name\",\"mail\":\"Working Mail\",\"mail_placeholder\":\"[email protected]\",\"message\":\"Anything else?\",\"message_placeholder\":\"Message goes here...\",\"submit\":\"Submit\",\"read_more\":\"Read More\",\"categories\":\"Categories\",\"tags\":\"Tags\",\"share\":\"Share\",\"related_post\":\"Related Post\",\"page_not_found\":\"Page not found\",\"page_not_found_content\":\"The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.\",\"back_to_home\":\"back to home\"},\"full_name\":\"Full Name\",\"full_name_placeholder\":\"Enter your full name\",\"mail\":\"Working Mail\",\"mail_placeholder\":\"[email protected]\",\"message\":\"Anything else?\",\"message_placeholder\":\"Message goes here...\",\"submit\":\"Submit\",\"read_more\":\"Read More\",\"categories\":\"Categories\",\"tags\":\"Tags\",\"share\":\"Share\",\"related_post\":\"Related Post\",\"page_not_found\":\"Page not found\",\"page_not_found_content\":\"The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.\",\"back_to_home\":\"back to home\"}}],[\"$\",\"$L19\",null,{\"lang\":\"en\"}],[\"$\",\"main\",null,{\"children\":[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"$1a\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L1b\",null,{}],\"notFoundStyles\":[],\"styles\":null}]}],[\"$\",\"$L1c\",null,{\"lang\":\"en\",\"menu\":\"$1d\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}]]\n3:null\n"])</script></body></html>