diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/404.html b/404.html new file mode 100644 index 0000000..b93cda6 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + 404: Page not found | Lewis's Blog
Home 404: Page not found
404: Page not found
Cancel

404: Page not found

Sorry, we've misplaced that URL or it's pointing to something that doesn't exist.

Head back Home to try finding it again, or search for it on the Archives page.

diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..a6349e8 --- /dev/null +++ b/about/index.html @@ -0,0 +1 @@ + About | Lewis's Blog
Home About
About
Cancel

About

Lewis Lee   |   Male   |   Bachelor of Software Engineer
Email: oppolewis@gmail.com

Profile

13+ years of mobile software development expertise, shaping diverse products from photo & video social media to online healthcare and K12 education. Proven ability to manage projects serving millions of users, spanning native (Android & iOS), web, hybrid, and React Native technologies. Adept at delivering high-quality code, architecting scalable solutions, and optimizing performance.

Employment History

Compass (2021 - now)

  • Compass App
    • About: Compass Real Estate combines best-in-class technology with exceptional real estate agents to make your search for homes smart and seamless.

    • My Responsibility:
      • TODO
    • Technology Stack:
      • Jetpack
      • Compose
      • Swift
      • SwiftUI
  • Glide App
    • About: A modern platform for residential real estate transactions.

    • My Responsibility:
      • TODO
    • Technology Stack:
      • Jetpack
      • JSBridge
      • SwiftUI
      • TCA (The Composable Architecture for SwiftUI)

HIPA (2020 - 2021)

  • HIPA App (Low code Platform)
    • About: A professional and powerful collaborative office software. It features dashboards, automation, data management, presentation views, real-time collaboration, permission management, and more. It brings you a simple and efficient way to work.

    • My Responsibility:
      • Led the App team, ensuring successful project execution and timely delivery.
      • Developed core features to enhance user experience and software functionality.
    • Technology Stack:
      • React Native
      • Swift UI
      • Kotlin
      • Java
  • HIPA website (Shutdown)
    • About: A low-code platform similar to Airtable.

    • My Responsibility:
      • Senior developer of the front end team, contributing to the development and enhancement of the platform’s user interface and functionality
    • Technology Stack:
      • React
      • Redux
      • Next.js
      • tailwind

ThoughtWorks (2017 - 2020)

  • Starbucks China App (Retail Store)
    • About: The official Starbucks China App. The perfect way to enjoy your favorite coffee, your way.

    • My Responsibility:
      • Architect of the modular framework of the Android app
      • Led the development process improvement, streamlining workflows and enhancing overall efficiency for the Android development team.
    • Technology Stack:
      • Dagger
      • Jetpack
      • Android build system
      • Gradle
      • Kotlin
      • Java
  • WeLink App (Enterprise Mobile Collaboration Platform)
    • About: WeLink is a “WeChat” mobile office software used by Huawei employees. It integrates multiple complex function modules including IM, mail system, audio and video conferencing system, and OA system.

    • My Responsibility:
      • Architected and implemented the core Android Plug-in framework
      • Led the migration of core business modules from the legacy system to the newly developed plug-in framework, ensuring a smooth transition and efficient system operation.
      • Designed and implemented a performance monitoring system to track and optimize application performance within WeLink.
    • Technology Stack:
      • Binder (Inter-process communication)
      • Jetpack (Android libraries)
      • Process Management
      • Resource Manager
      • Android build system
      • Gradle (Build system)
      • Java
      • Kotlin

Startup Project (2013 - 2017)

  • Roomis App (Educational Management Platform)
    • About: Roomis is a set of educational information solutions. It provides electronic class cards, electronic class schedules, video surveillance, campus public broadcasting, campus VOIP, and other functions for middle and primary schools. It also provides corporate and university clients with conference room reservation management and attendance check-in.

    • My Responsibility:
      • Led the Android development team for Roomis, a comprehensive platform that streamlines operations and enhances security for K-12 schools.
      • Developed functionalities for features like electronic class schedules, video surveillance, and attendance check-in, improving efficiency and data management for educational institutions.
    • Technology Stack:
      • Dagger
      • RxJava
      • Java
      • VLC
  • TAGG (Social Style Sharing Platform)
    • About: TAGG is a cool app for people around the world to share style, fashion & life.

    • My Responsibility:
      • Led the Android development team, spearheading project development and ensuring successful feature implementation.
      • Developed core functionalities, focusing on a robust picture filter function.
    • Technology Stack:
      • GPUImage
      • FFmpeg
      • Java
  • QuYiYuan (Healthcare App)
    • About: The “quyiyuan” App, a brand of Fun Medical Network, is a product designed to improve the patient experience and improve the service model of medical institutions, covering the whole process of appointment registration, report inquiry, payment, hospitalization management, etc.

    • My Responsibility:
      • Developed native plugins for the Hybrid app, enabling seamless access to native device features like the camera and file system, enhancing user functionality and experience.
      • Implemented a hot update function, facilitating seamless app updates without users needing to download new versions from the app store, ensuring continuous improvement and user satisfaction.
    • Technology Stack:
      • Android Studio
      • Ionic
      • Angular
      • Java
  • DouDou Social (Dating App)
    • About: DouDou Social is a multi-person voice interactive dating platform. It features a unique 8-female-1-male scene-based social mode, allowing users to experience multiple roles as guests, hosts, and audience members.

    • My Responsibility:
      • Implemented stage animations to enhance the visual appeal and engagement of the platform.
      • Developed a people filter effect to improve user interactions and streamline the user experience.
    • Technology Stack:
      • FFmpeg
      • Java
  • BizConf Video Pro (Enterprise Conferencing App)
    • About: BizConf Video is an enterprise-grade video conferencing service based on SaaS (Software as a Service). It provides a one-stop audio and video interaction platform for users, offering the following key features.

    • My Responsibility:
      • Led the Android development team, ensuring successful project delivery and meeting client requirements.
      • Developed core functionalities to enhance user experience and platform performance.
    • Technology Stack:
      • Apache MINA
      • Java

OPPO (2010 - 2013)

  • Android Developer & Project Manager
    • Developed custom ROM enhancements for performance and stability using Java & C++
    • Architected and delivered core system apps like Launcher, Theme Store, and Contacts, including personalization features and performance optimizations
    • Led cross-functional teams to successfully deliver 2 complex projects within demanding timelines, leveraging Agile methodologies and strong communication skills

Technical Expertise

  • Mobile Development:
    • Android (Kotlin, Java, Android Studio)
    • iOS (SwiftUI, Swift, Objective-C, Xcode)
    • React Native (Redux, Visual Studio Code)
    • Ionic
    • Angular
  • Web Development:
    • React (JavaScript, JSX, Hooks)
    • Redux
    • TypeScript
    • tailwind
  • Back-End Development:
    • Python (Django, Flask)
    • Java (Bootstrap)

Education

2006 - 2010 Software Engineering, Northwestern Polytechnical University

diff --git a/app.js b/app.js new file mode 100644 index 0000000..b2ab751 --- /dev/null +++ b/app.js @@ -0,0 +1 @@ +/* Registering Service Worker */ if('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js'); }; diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..624b4c2 --- /dev/null +++ b/archives/index.html @@ -0,0 +1 @@ + Archives | Lewis's Blog
Home Archives
Archives
Cancel
diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..c67ea1d --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,9 @@ +/*! + * The styles for Jekyll theme Chirpy + * + * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy) + * © 2019 Cotes Chung + * MIT Licensed + */#search-results a,h5,h4,h3,h2,h1{color:var(--heading-color);font-weight:400;font-family:'Lato', 'Microsoft Yahei', sans-serif}#core-wrapper h5,#core-wrapper h4,#core-wrapper h3,#core-wrapper h2{margin-top:2.5rem;margin-bottom:1.25rem}#core-wrapper h5:focus,#core-wrapper h4:focus,#core-wrapper h3:focus,#core-wrapper h2:focus{outline:none}h5 .anchor,h4 .anchor,h3 .anchor,h2 .anchor{font-size:80%}@media (hover: hover){h5 .anchor,h4 .anchor,h3 .anchor,h2 .anchor{visibility:hidden;opacity:0;transition:opacity 0.25s ease-in, visibility 0s ease-in 0.25s}h5:hover .anchor,h4:hover .anchor,h3:hover .anchor,h2:hover .anchor{visibility:visible;opacity:1;transition:opacity 0.25s ease-in, visibility 0s ease-in 0s}}.post-tag:hover,.tag:hover{background:var(--tag-hover);transition:background 0.35s ease-in-out}.table-wrapper>table tbody tr td,.table-wrapper>table thead th{padding:0.4rem 1rem;font-size:95%;white-space:nowrap}#page-category a:hover,#page-tag a:hover,.license-wrapper>a:hover,#post-list .post-preview a:hover,#search-results a:hover,#topbar #breadcrumb a:hover,.post-content a:not(.img-link):hover,.post-meta a:hover,.post a:hover code,#access-lastmod a:hover,footer a:hover{color:#d2603a !important;border-bottom:1px solid #d2603a;text-decoration:none}#search-results a,#search-hints .post-tag,a{color:var(--link-color)}.post-tail-wrapper .post-meta a:not(:hover),.post-content a:not(.img-link){border-bottom:1px solid var(--link-underline-color)}#sidebar .sidebar-bottom .mode-toggle>i,#sidebar .sidebar-bottom a,#sidebar .nav-item:not(.active)>a,#sidebar .site-title a{transition:color 0.35s ease-in-out}#sidebar .sidebar-bottom .icon-border,.post a.img-link,i.far,i.fas,.code-header{user-select:none}#page-category ul>li>a,#page-tag ul>li>a,#core-wrapper .categories a:not(:hover),#core-wrapper #tags a:not(:hover),#core-wrapper #archives a:not(:hover),#search-results a,#access-lastmod a{border-bottom:none}.share-wrapper .share-icons>i,#search-cancel,.code-header button{cursor:pointer}#related-posts em,#post-list .post-preview .post-meta em,.post-meta em{font-style:normal}.post-content a.img-link+em,img[data-src]+em{display:block;text-align:center;font-style:normal;font-size:80%;padding:0;color:#6d6c6c}#sidebar .sidebar-bottom .mode-toggle,#sidebar a{color:rgba(117,117,117,0.9);user-select:none}@media (prefers-color-scheme: light){html:not([data-mode]),html [data-mode=light]{--highlight-bg-color: #f7f7f7;--highlighter-rouge-color: #2f2f2f;--highlight-lineno-color: #c2c6cc;--inline-code-bg: #f3f3f3;--code-header-text-color: #a3a3b1;--code-header-muted-color: #ebebeb;--code-header-icon-color: #d1d1d1;--clipboard-checked-color: #43c743}html:not([data-mode]) .highlight .hll,html [data-mode=light] .highlight .hll{background-color:#ffffcc}html:not([data-mode]) .highlight .c,html [data-mode=light] .highlight .c{color:#999988;font-style:italic}html:not([data-mode]) .highlight .err,html [data-mode=light] .highlight .err{color:#a61717;background-color:#e3d2d2}html:not([data-mode]) .highlight .k,html [data-mode=light] .highlight .k{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .o,html [data-mode=light] .highlight .o{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .cm,html [data-mode=light] .highlight .cm{color:#999988;font-style:italic}html:not([data-mode]) .highlight .cp,html [data-mode=light] .highlight .cp{color:#999999;font-weight:bold;font-style:italic}html:not([data-mode]) .highlight .c1,html [data-mode=light] .highlight .c1{color:#999988;font-style:italic}html:not([data-mode]) .highlight .cs,html [data-mode=light] .highlight .cs{color:#999999;font-weight:bold;font-style:italic}html:not([data-mode]) .highlight .gd,html [data-mode=light] .highlight .gd{color:#d01040;background-color:#ffdddd}html:not([data-mode]) .highlight .ge,html [data-mode=light] .highlight .ge{color:#000000;font-style:italic}html:not([data-mode]) .highlight .gr,html [data-mode=light] .highlight .gr{color:#aa0000}html:not([data-mode]) .highlight .gh,html [data-mode=light] .highlight .gh{color:#999999}html:not([data-mode]) .highlight .gi,html [data-mode=light] .highlight .gi{color:#008080;background-color:#ddffdd}html:not([data-mode]) .highlight .go,html [data-mode=light] .highlight .go{color:#888888}html:not([data-mode]) .highlight .gp,html [data-mode=light] .highlight .gp{color:#555555}html:not([data-mode]) .highlight .gs,html [data-mode=light] .highlight .gs{font-weight:bold}html:not([data-mode]) .highlight .gu,html [data-mode=light] .highlight .gu{color:#aaaaaa}html:not([data-mode]) .highlight .gt,html [data-mode=light] .highlight .gt{color:#aa0000}html:not([data-mode]) .highlight .kc,html [data-mode=light] .highlight .kc{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kd,html [data-mode=light] .highlight .kd{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kn,html [data-mode=light] .highlight .kn{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kp,html [data-mode=light] .highlight .kp{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kr,html [data-mode=light] .highlight .kr{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .kt,html [data-mode=light] .highlight .kt{color:#445588;font-weight:bold}html:not([data-mode]) .highlight .m,html [data-mode=light] .highlight .m{color:#009999}html:not([data-mode]) .highlight .s,html [data-mode=light] .highlight .s{color:#d01040}html:not([data-mode]) .highlight .na,html [data-mode=light] .highlight .na{color:#008080}html:not([data-mode]) .highlight .nb,html [data-mode=light] .highlight .nb{color:#0086b3}html:not([data-mode]) .highlight .nc,html [data-mode=light] .highlight .nc{color:#445588;font-weight:bold}html:not([data-mode]) .highlight .no,html [data-mode=light] .highlight .no{color:#008080}html:not([data-mode]) .highlight .nd,html [data-mode=light] .highlight .nd{color:#3c5d5d;font-weight:bold}html:not([data-mode]) .highlight .ni,html [data-mode=light] .highlight .ni{color:#800080}html:not([data-mode]) .highlight .ne,html [data-mode=light] .highlight .ne{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nf,html [data-mode=light] .highlight .nf{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nl,html [data-mode=light] .highlight .nl{color:#990000;font-weight:bold}html:not([data-mode]) .highlight .nn,html [data-mode=light] .highlight .nn{color:#555555}html:not([data-mode]) .highlight .nt,html [data-mode=light] .highlight .nt{color:#000080}html:not([data-mode]) .highlight .nv,html [data-mode=light] .highlight .nv{color:#008080}html:not([data-mode]) .highlight .ow,html [data-mode=light] .highlight .ow{color:#000000;font-weight:bold}html:not([data-mode]) .highlight .w,html [data-mode=light] .highlight .w{color:#bbbbbb}html:not([data-mode]) .highlight .mf,html [data-mode=light] .highlight .mf{color:#009999}html:not([data-mode]) .highlight .mh,html [data-mode=light] .highlight .mh{color:#009999}html:not([data-mode]) .highlight .mi,html [data-mode=light] .highlight .mi{color:#009999}html:not([data-mode]) .highlight .mo,html [data-mode=light] .highlight .mo{color:#009999}html:not([data-mode]) .highlight .sb,html [data-mode=light] .highlight .sb{color:#d01040}html:not([data-mode]) .highlight .sc,html [data-mode=light] .highlight .sc{color:#d01040}html:not([data-mode]) .highlight .sd,html [data-mode=light] .highlight .sd{color:#d01040}html:not([data-mode]) .highlight .s2,html [data-mode=light] .highlight .s2{color:#d01040}html:not([data-mode]) .highlight .se,html [data-mode=light] .highlight .se{color:#d01040}html:not([data-mode]) .highlight .sh,html [data-mode=light] .highlight .sh{color:#d01040}html:not([data-mode]) .highlight .si,html [data-mode=light] .highlight .si{color:#d01040}html:not([data-mode]) .highlight .sx,html [data-mode=light] .highlight .sx{color:#d01040}html:not([data-mode]) .highlight .sr,html [data-mode=light] .highlight .sr{color:#009926}html:not([data-mode]) .highlight .s1,html [data-mode=light] .highlight .s1{color:#d01040}html:not([data-mode]) .highlight .ss,html [data-mode=light] .highlight .ss{color:#990073}html:not([data-mode]) .highlight .bp,html [data-mode=light] .highlight .bp{color:#999999}html:not([data-mode]) .highlight .vc,html [data-mode=light] .highlight .vc{color:#008080}html:not([data-mode]) .highlight .vg,html [data-mode=light] .highlight .vg{color:#008080}html:not([data-mode]) .highlight .vi,html [data-mode=light] .highlight .vi{color:#008080}html:not([data-mode]) .highlight .il,html [data-mode=light] .highlight .il{color:#009999}html:not([data-mode]) [class^=prompt-],html [data-mode=light] [class^=prompt-]{--inline-code-bg: #fbfafa;--highlighter-rouge-color: rgb(82 82 82)}html[data-mode=dark]{--highlight-bg-color: #252525;--highlighter-rouge-color: #de6b18;--highlight-lineno-color: #6c6c6d;--inline-code-bg: #272822;--code-header-text-color: #6a6a6a;--code-header-muted-color: rgb(60 60 60);--code-header-icon-color: rgb(86 86 86);--clipboard-checked-color: #2bcc2b;--filepath-text-color: #bdbdbd}html[data-mode=dark] .highlight pre{background-color:var(--highlight-bg-color)}html[data-mode=dark] .highlight .hll{background-color:var(--highlight-bg-color)}html[data-mode=dark] .highlight .c{color:#75715e}html[data-mode=dark] .highlight .err{color:#960050;background-color:#1e0010}html[data-mode=dark] .highlight .k{color:#66d9ef}html[data-mode=dark] .highlight .l{color:#ae81ff}html[data-mode=dark] .highlight .n{color:#f8f8f2}html[data-mode=dark] .highlight .o{color:#f92672}html[data-mode=dark] .highlight .p{color:#f8f8f2}html[data-mode=dark] .highlight .cm{color:#75715e}html[data-mode=dark] .highlight .cp{color:#75715e}html[data-mode=dark] .highlight .c1{color:#75715e}html[data-mode=dark] .highlight .cs{color:#75715e}html[data-mode=dark] .highlight .ge{color:inherit;font-style:italic}html[data-mode=dark] .highlight .gs{font-weight:bold}html[data-mode=dark] .highlight .kc{color:#66d9ef}html[data-mode=dark] .highlight .kd{color:#66d9ef}html[data-mode=dark] .highlight .kn{color:#f92672}html[data-mode=dark] .highlight .kp{color:#66d9ef}html[data-mode=dark] .highlight .kr{color:#66d9ef}html[data-mode=dark] .highlight .kt{color:#66d9ef}html[data-mode=dark] .highlight .ld{color:#e6db74}html[data-mode=dark] .highlight .m{color:#ae81ff}html[data-mode=dark] .highlight .s{color:#e6db74}html[data-mode=dark] .highlight .na{color:#a6e22e}html[data-mode=dark] .highlight .nb{color:#f8f8f2}html[data-mode=dark] .highlight .nc{color:#a6e22e}html[data-mode=dark] .highlight .no{color:#66d9ef}html[data-mode=dark] .highlight .nd{color:#a6e22e}html[data-mode=dark] .highlight .ni{color:#f8f8f2}html[data-mode=dark] .highlight .ne{color:#a6e22e}html[data-mode=dark] .highlight .nf{color:#a6e22e}html[data-mode=dark] .highlight .nl{color:#f8f8f2}html[data-mode=dark] .highlight .nn{color:#f8f8f2}html[data-mode=dark] .highlight .nx{color:#a6e22e}html[data-mode=dark] .highlight .py{color:#f8f8f2}html[data-mode=dark] .highlight .nt{color:#f92672}html[data-mode=dark] .highlight .nv{color:#f8f8f2}html[data-mode=dark] .highlight .ow{color:#f92672}html[data-mode=dark] .highlight .w{color:#f8f8f2}html[data-mode=dark] .highlight .mf{color:#ae81ff}html[data-mode=dark] .highlight .mh{color:#ae81ff}html[data-mode=dark] .highlight .mi{color:#ae81ff}html[data-mode=dark] .highlight .mo{color:#ae81ff}html[data-mode=dark] .highlight .sb{color:#e6db74}html[data-mode=dark] .highlight .sc{color:#e6db74}html[data-mode=dark] .highlight .sd{color:#e6db74}html[data-mode=dark] .highlight .s2{color:#e6db74}html[data-mode=dark] .highlight .se{color:#ae81ff}html[data-mode=dark] .highlight .sh{color:#e6db74}html[data-mode=dark] .highlight .si{color:#e6db74}html[data-mode=dark] .highlight .sx{color:#e6db74}html[data-mode=dark] .highlight .sr{color:#e6db74}html[data-mode=dark] .highlight .s1{color:#e6db74}html[data-mode=dark] .highlight .ss{color:#e6db74}html[data-mode=dark] .highlight .bp{color:#f8f8f2}html[data-mode=dark] .highlight .vc{color:#f8f8f2}html[data-mode=dark] .highlight .vg{color:#f8f8f2}html[data-mode=dark] .highlight .vi{color:#f8f8f2}html[data-mode=dark] .highlight .il{color:#ae81ff}html[data-mode=dark] .highlight .gu{color:#75715e}html[data-mode=dark] .highlight .gd{color:#f92672;background-color:#561c08}html[data-mode=dark] .highlight .gi{color:#a6e22e;background-color:#0b5858}html[data-mode=dark] .highlight .gp{color:#818c96}html[data-mode=dark] pre{color:#bfbfbf}}@media (prefers-color-scheme: dark){html:not([data-mode]),html[data-mode=dark]{--highlight-bg-color: #252525;--highlighter-rouge-color: #de6b18;--highlight-lineno-color: #6c6c6d;--inline-code-bg: #272822;--code-header-text-color: #6a6a6a;--code-header-muted-color: rgb(60 60 60);--code-header-icon-color: rgb(86 86 86);--clipboard-checked-color: #2bcc2b;--filepath-text-color: #bdbdbd}html:not([data-mode]) .highlight pre,html[data-mode=dark] .highlight pre{background-color:var(--highlight-bg-color)}html:not([data-mode]) .highlight .hll,html[data-mode=dark] .highlight .hll{background-color:var(--highlight-bg-color)}html:not([data-mode]) .highlight .c,html[data-mode=dark] .highlight .c{color:#75715e}html:not([data-mode]) .highlight .err,html[data-mode=dark] .highlight .err{color:#960050;background-color:#1e0010}html:not([data-mode]) .highlight .k,html[data-mode=dark] .highlight .k{color:#66d9ef}html:not([data-mode]) .highlight .l,html[data-mode=dark] .highlight .l{color:#ae81ff}html:not([data-mode]) .highlight .n,html[data-mode=dark] .highlight .n{color:#f8f8f2}html:not([data-mode]) .highlight .o,html[data-mode=dark] .highlight .o{color:#f92672}html:not([data-mode]) .highlight .p,html[data-mode=dark] .highlight .p{color:#f8f8f2}html:not([data-mode]) .highlight .cm,html[data-mode=dark] .highlight .cm{color:#75715e}html:not([data-mode]) .highlight .cp,html[data-mode=dark] .highlight .cp{color:#75715e}html:not([data-mode]) .highlight .c1,html[data-mode=dark] .highlight .c1{color:#75715e}html:not([data-mode]) .highlight .cs,html[data-mode=dark] .highlight .cs{color:#75715e}html:not([data-mode]) .highlight .ge,html[data-mode=dark] .highlight .ge{color:inherit;font-style:italic}html:not([data-mode]) .highlight .gs,html[data-mode=dark] .highlight .gs{font-weight:bold}html:not([data-mode]) .highlight .kc,html[data-mode=dark] .highlight .kc{color:#66d9ef}html:not([data-mode]) .highlight .kd,html[data-mode=dark] .highlight .kd{color:#66d9ef}html:not([data-mode]) .highlight .kn,html[data-mode=dark] .highlight .kn{color:#f92672}html:not([data-mode]) .highlight .kp,html[data-mode=dark] .highlight .kp{color:#66d9ef}html:not([data-mode]) .highlight .kr,html[data-mode=dark] .highlight .kr{color:#66d9ef}html:not([data-mode]) .highlight .kt,html[data-mode=dark] .highlight .kt{color:#66d9ef}html:not([data-mode]) .highlight .ld,html[data-mode=dark] .highlight .ld{color:#e6db74}html:not([data-mode]) .highlight .m,html[data-mode=dark] .highlight .m{color:#ae81ff}html:not([data-mode]) .highlight .s,html[data-mode=dark] .highlight .s{color:#e6db74}html:not([data-mode]) .highlight .na,html[data-mode=dark] .highlight .na{color:#a6e22e}html:not([data-mode]) .highlight .nb,html[data-mode=dark] .highlight .nb{color:#f8f8f2}html:not([data-mode]) .highlight .nc,html[data-mode=dark] .highlight .nc{color:#a6e22e}html:not([data-mode]) .highlight .no,html[data-mode=dark] .highlight .no{color:#66d9ef}html:not([data-mode]) .highlight .nd,html[data-mode=dark] .highlight .nd{color:#a6e22e}html:not([data-mode]) .highlight .ni,html[data-mode=dark] .highlight .ni{color:#f8f8f2}html:not([data-mode]) .highlight .ne,html[data-mode=dark] .highlight .ne{color:#a6e22e}html:not([data-mode]) .highlight .nf,html[data-mode=dark] .highlight .nf{color:#a6e22e}html:not([data-mode]) .highlight .nl,html[data-mode=dark] .highlight .nl{color:#f8f8f2}html:not([data-mode]) .highlight .nn,html[data-mode=dark] .highlight .nn{color:#f8f8f2}html:not([data-mode]) .highlight .nx,html[data-mode=dark] .highlight .nx{color:#a6e22e}html:not([data-mode]) .highlight .py,html[data-mode=dark] .highlight .py{color:#f8f8f2}html:not([data-mode]) .highlight .nt,html[data-mode=dark] .highlight .nt{color:#f92672}html:not([data-mode]) .highlight .nv,html[data-mode=dark] .highlight .nv{color:#f8f8f2}html:not([data-mode]) .highlight .ow,html[data-mode=dark] .highlight .ow{color:#f92672}html:not([data-mode]) .highlight .w,html[data-mode=dark] .highlight .w{color:#f8f8f2}html:not([data-mode]) .highlight .mf,html[data-mode=dark] .highlight .mf{color:#ae81ff}html:not([data-mode]) .highlight .mh,html[data-mode=dark] .highlight .mh{color:#ae81ff}html:not([data-mode]) .highlight .mi,html[data-mode=dark] .highlight .mi{color:#ae81ff}html:not([data-mode]) .highlight .mo,html[data-mode=dark] .highlight .mo{color:#ae81ff}html:not([data-mode]) .highlight .sb,html[data-mode=dark] .highlight .sb{color:#e6db74}html:not([data-mode]) .highlight .sc,html[data-mode=dark] .highlight .sc{color:#e6db74}html:not([data-mode]) .highlight .sd,html[data-mode=dark] .highlight .sd{color:#e6db74}html:not([data-mode]) .highlight .s2,html[data-mode=dark] .highlight .s2{color:#e6db74}html:not([data-mode]) .highlight .se,html[data-mode=dark] .highlight .se{color:#ae81ff}html:not([data-mode]) .highlight .sh,html[data-mode=dark] .highlight .sh{color:#e6db74}html:not([data-mode]) .highlight .si,html[data-mode=dark] .highlight .si{color:#e6db74}html:not([data-mode]) .highlight .sx,html[data-mode=dark] .highlight .sx{color:#e6db74}html:not([data-mode]) .highlight .sr,html[data-mode=dark] .highlight .sr{color:#e6db74}html:not([data-mode]) .highlight .s1,html[data-mode=dark] .highlight .s1{color:#e6db74}html:not([data-mode]) .highlight .ss,html[data-mode=dark] .highlight .ss{color:#e6db74}html:not([data-mode]) .highlight .bp,html[data-mode=dark] .highlight .bp{color:#f8f8f2}html:not([data-mode]) .highlight .vc,html[data-mode=dark] .highlight .vc{color:#f8f8f2}html:not([data-mode]) .highlight .vg,html[data-mode=dark] .highlight .vg{color:#f8f8f2}html:not([data-mode]) .highlight .vi,html[data-mode=dark] .highlight .vi{color:#f8f8f2}html:not([data-mode]) .highlight .il,html[data-mode=dark] .highlight .il{color:#ae81ff}html:not([data-mode]) .highlight .gu,html[data-mode=dark] .highlight .gu{color:#75715e}html:not([data-mode]) .highlight .gd,html[data-mode=dark] .highlight .gd{color:#f92672;background-color:#561c08}html:not([data-mode]) .highlight .gi,html[data-mode=dark] .highlight .gi{color:#a6e22e;background-color:#0b5858}html:not([data-mode]) .highlight .gp,html[data-mode=dark] .highlight .gp{color:#818c96}html:not([data-mode]) pre,html[data-mode=dark] pre{color:#bfbfbf}html[data-mode=light]{--highlight-bg-color: #f7f7f7;--highlighter-rouge-color: #2f2f2f;--highlight-lineno-color: #c2c6cc;--inline-code-bg: #f3f3f3;--code-header-text-color: #a3a3b1;--code-header-muted-color: #ebebeb;--code-header-icon-color: #d1d1d1;--clipboard-checked-color: #43c743}html[data-mode=light] .highlight .hll{background-color:#ffffcc}html[data-mode=light] .highlight .c{color:#999988;font-style:italic}html[data-mode=light] .highlight .err{color:#a61717;background-color:#e3d2d2}html[data-mode=light] .highlight .k{color:#000000;font-weight:bold}html[data-mode=light] .highlight .o{color:#000000;font-weight:bold}html[data-mode=light] .highlight .cm{color:#999988;font-style:italic}html[data-mode=light] .highlight .cp{color:#999999;font-weight:bold;font-style:italic}html[data-mode=light] .highlight .c1{color:#999988;font-style:italic}html[data-mode=light] .highlight .cs{color:#999999;font-weight:bold;font-style:italic}html[data-mode=light] .highlight .gd{color:#d01040;background-color:#ffdddd}html[data-mode=light] .highlight .ge{color:#000000;font-style:italic}html[data-mode=light] .highlight .gr{color:#aa0000}html[data-mode=light] .highlight .gh{color:#999999}html[data-mode=light] .highlight .gi{color:#008080;background-color:#ddffdd}html[data-mode=light] .highlight .go{color:#888888}html[data-mode=light] .highlight .gp{color:#555555}html[data-mode=light] .highlight .gs{font-weight:bold}html[data-mode=light] .highlight .gu{color:#aaaaaa}html[data-mode=light] .highlight .gt{color:#aa0000}html[data-mode=light] .highlight .kc{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kd{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kn{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kp{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kr{color:#000000;font-weight:bold}html[data-mode=light] .highlight .kt{color:#445588;font-weight:bold}html[data-mode=light] .highlight .m{color:#009999}html[data-mode=light] .highlight .s{color:#d01040}html[data-mode=light] .highlight .na{color:#008080}html[data-mode=light] .highlight .nb{color:#0086b3}html[data-mode=light] .highlight .nc{color:#445588;font-weight:bold}html[data-mode=light] .highlight .no{color:#008080}html[data-mode=light] .highlight .nd{color:#3c5d5d;font-weight:bold}html[data-mode=light] .highlight .ni{color:#800080}html[data-mode=light] .highlight .ne{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nf{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nl{color:#990000;font-weight:bold}html[data-mode=light] .highlight .nn{color:#555555}html[data-mode=light] .highlight .nt{color:#000080}html[data-mode=light] .highlight .nv{color:#008080}html[data-mode=light] .highlight .ow{color:#000000;font-weight:bold}html[data-mode=light] .highlight .w{color:#bbbbbb}html[data-mode=light] .highlight .mf{color:#009999}html[data-mode=light] .highlight .mh{color:#009999}html[data-mode=light] .highlight .mi{color:#009999}html[data-mode=light] .highlight .mo{color:#009999}html[data-mode=light] .highlight .sb{color:#d01040}html[data-mode=light] .highlight .sc{color:#d01040}html[data-mode=light] .highlight .sd{color:#d01040}html[data-mode=light] .highlight .s2{color:#d01040}html[data-mode=light] .highlight .se{color:#d01040}html[data-mode=light] .highlight .sh{color:#d01040}html[data-mode=light] .highlight .si{color:#d01040}html[data-mode=light] .highlight .sx{color:#d01040}html[data-mode=light] .highlight .sr{color:#009926}html[data-mode=light] .highlight .s1{color:#d01040}html[data-mode=light] .highlight .ss{color:#990073}html[data-mode=light] .highlight .bp{color:#999999}html[data-mode=light] .highlight .vc{color:#008080}html[data-mode=light] .highlight .vg{color:#008080}html[data-mode=light] .highlight .vi{color:#008080}html[data-mode=light] .highlight .il{color:#009999}html[data-mode=light] [class^=prompt-]{--inline-code-bg: #fbfafa;--highlighter-rouge-color: rgb(82 82 82)}}figure.highlight,.highlight,.highlighter-rouge{background:var(--highlight-bg-color)}.highlight,.highlighter-rouge{border-radius:6px}td.rouge-code{padding-left:1rem;padding-right:1.5rem}.highlighter-rouge{color:var(--highlighter-rouge-color);margin-top:0.5rem;margin-bottom:1.2em}.highlight{overflow:auto;padding-top:0.5rem;padding-bottom:1rem}.highlight pre{margin-bottom:0;font-size:.85rem;line-height:1.4rem;word-wrap:normal}.highlight table td pre{overflow:visible;word-break:normal}.highlight .lineno{padding-right:0.5rem;min-width:2.2rem;text-align:right;color:var(--highlight-lineno-color);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.highlight .gp{user-select:none}code{-webkit-hyphens:none;-ms-hyphens:none;-moz-hyphens:none;hyphens:none}code.highlighter-rouge{font-size:.85rem;padding:3px 5px;border-radius:4px;background-color:var(--inline-code-bg)}code.filepath{background-color:inherit;color:var(--filepath-text-color);font-weight:600;padding:0}a>code.highlighter-rouge{padding-bottom:0;color:inherit}a:hover>code.highlighter-rouge{border-bottom:none}blockquote code{color:inherit}.highlight>code{color:transparent}td.rouge-code a{color:inherit !important;border-bottom:none !important;pointer-events:none}div[class^='highlighter-rouge'] pre.lineno,div.language-plaintext.highlighter-rouge pre.lineno,div.language-console.highlighter-rouge pre.lineno,div.language-terminal.highlighter-rouge pre.lineno,div.nolineno pre.lineno{display:none}div[class^='highlighter-rouge'] td.rouge-code,div.language-plaintext.highlighter-rouge td.rouge-code,div.language-console.highlighter-rouge td.rouge-code,div.language-terminal.highlighter-rouge td.rouge-code,div.nolineno td.rouge-code{padding-left:1.5rem}.code-header{border-top-left-radius:6px;border-top-right-radius:6px;display:flex;justify-content:space-between;align-items:center;height:2.25rem}.code-header::before{content:"";display:inline-block;margin-left:1rem;width:.75rem;height:.75rem;border-radius:50%;background-color:var(--code-header-muted-color);box-shadow:1.25rem 0 0 var(--code-header-muted-color),2.5rem 0 0 var(--code-header-muted-color)}.code-header span i{font-size:1rem;margin-right:0.4rem;color:var(--code-header-icon-color)}.code-header span i.small{font-size:70%}[file] .code-header span>i{position:relative;top:1px}.code-header span::after{content:attr(data-label-text);font-size:0.85rem;font-weight:600;color:var(--code-header-text-color)}.code-header button{border:1px solid transparent;border-radius:6px;height:2.25rem;width:2.25rem;padding:0;background-color:inherit}.code-header button i{color:var(--code-header-icon-color)}.code-header button[timeout]:hover{border-color:var(--clipboard-checked-color)}.code-header button[timeout] i{color:var(--clipboard-checked-color)}.code-header button:not([timeout]):hover{background-color:rgba(128,128,128,0.37)}.code-header button:not([timeout]):hover i{color:white}.code-header button:focus{outline:none}@media all and (max-width: 576px){.post-content>div[class^='language-']{margin-left:-1.25rem;margin-right:-1.25rem;border-radius:0}.post-content>div[class^='language-'] .highlight{padding-left:0.25rem}.post-content>div[class^='language-'] .code-header{border-radius:0;padding-left:0.4rem;padding-right:0.5rem}}html{font-size:16px}@media (prefers-color-scheme: light){html:not([data-mode]),html [data-mode=light]{--body-bg: #fafafa;--mask-bg: #c1c3c5;--main-wrapper-bg: white;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: gray;--heading-color: black;--blockquote-border-color: #eee;--blockquote-text-color: #9a9a9a;--link-color: #2a408e;--link-underline-color: #dee2e6;--button-bg: #fff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--btn-box-shadow: #eaeaea;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--sidebar-bg: #eeeeee;--sidebar-muted-color: #a2a19f;--sidebar-active-color: #424242;--nav-cursor-color: #757575;--sidebar-btn-bg: white;--topbar-text-color: rgb(78, 78, 78);--topbar-wrapper-bg: white;--search-wrapper-bg: rgb(245 245 245 / 50%);--search-wrapper-border-color: rgb(245 245 245);--search-tag-bg: #f8f9fa;--search-icon-color: #c2c6cc;--input-focus-border-color: var(--btn-border-color);--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--btn-paginator-border-color: var(--sidebar-bg);--btn-text-color: #676666;--pin-bg: #f5f5f5;--pin-color: #999fa4;--btn-share-hover-color: var(--link-color);--card-border-color: #f1f1f1;--card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);--label-color: #616161;--relate-post-date: rgba(30, 55, 70, 0.4);--footnote-target-bg: lightcyan;--tag-bg: rgba(0, 0, 0, 0.075);--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222, 226, 230);--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgba(0, 0, 0, 0.075);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff}html:not([data-mode]) [class^=prompt-],html [data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}html[data-mode=dark]{--body-bg: var(--main-wrapper-bg);--mask-bg: rgb(68, 69, 70);--main-wrapper-bg: rgb(27, 27, 30);--main-border-color: rgb(44, 45, 45);--text-color: rgb(175, 176, 177);--text-muted-color: rgb(107, 116, 124);--heading-color: #cccccc;--blockquote-border-color: rgb(66, 66, 66);--blockquote-text-color: rgb(117, 117, 117);--link-color: rgb(138, 180, 248);--link-underline-color: rgb(82, 108, 150);--button-bg: rgb(39, 40, 43);--btn-border-color: rgb(63, 65, 68);--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: var(--btn-border-color);--btn-box-shadow: var(--main-wrapper-bg);--card-header-bg: rgb(51, 50, 50);--label-color: rgb(108, 117, 125);--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);--sidebar-muted-color: #6d6c6b;--sidebar-active-color: rgb(255 255 255 / 80%);--nav-cursor-color: rgb(183, 182, 182);--sidebar-btn-bg: rgb(117 116 116 / 20%);--topbar-text-color: var(--text-color);--topbar-wrapper-bg: rgb(39, 40, 43);--search-wrapper-bg: rgb(34, 34, 39);--search-wrapper-border-color: rgb(34, 34, 39);--search-icon-color: rgb(100, 102, 105);--input-focus-border-color: rgb(112, 114, 115);--post-list-text-color: rgb(175, 176, 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: rgb(64, 65, 66);--btn-paginator-border-color: var(--btn-border-color);--btn-text-color: var(--text-color);--pin-bg: rgb(34 35 37);--pin-color: inherit;--toc-highlight: rgb(116, 178, 243);--tag-bg: rgb(41, 40, 40);--tag-hover: rgb(43, 56, 62);--tb-odd-bg: rgba(42, 47, 53, 0.52);--tb-even-bg: rgb(31, 31, 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63, 81, 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--relate-post-date: var(--text-muted-color);--card-bg: rgb(39, 40, 43);--card-border-color: rgb(53, 53, 60);--card-box-shadow: var(--main-wrapper-bg);--preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgba(77, 187, 95, 0.2);--prompt-tip-icon-color: rgb(5 223 5 / 68%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 95%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59, 79, 88);--tag-shadow: rgb(32, 33, 33);--search-tag-bg: var(--tag-bg);--dash-color: rgb(63, 65, 68);--categories-border: rgb(64, 66, 69);--categories-hover-bg: rgb(73, 75, 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150, 152, 156);--timeline-color: rgb(63, 65, 68);--timeline-year-dot-color: var(--timeline-color);color-scheme:dark}html[data-mode=dark] .post img[data-src]{filter:brightness(95%)}html[data-mode=dark] hr{border-color:var(--main-border-color)}html[data-mode=dark] nav[data-toggle=toc] .nav-link.active,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:focus,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:hover,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:focus,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:hover{color:var(--toc-highlight) !important;border-left-color:var(--toc-highlight) !important}html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, #1a1a1e, #27272d, #27272d, #27272d, #1a1a1e)}html[data-mode=dark] #disqus_thread{color-scheme:none}}@media (prefers-color-scheme: dark){html:not([data-mode]),html[data-mode=dark]{--body-bg: var(--main-wrapper-bg);--mask-bg: rgb(68, 69, 70);--main-wrapper-bg: rgb(27, 27, 30);--main-border-color: rgb(44, 45, 45);--text-color: rgb(175, 176, 177);--text-muted-color: rgb(107, 116, 124);--heading-color: #cccccc;--blockquote-border-color: rgb(66, 66, 66);--blockquote-text-color: rgb(117, 117, 117);--link-color: rgb(138, 180, 248);--link-underline-color: rgb(82, 108, 150);--button-bg: rgb(39, 40, 43);--btn-border-color: rgb(63, 65, 68);--btn-backtotop-color: var(--text-color);--btn-backtotop-border-color: var(--btn-border-color);--btn-box-shadow: var(--main-wrapper-bg);--card-header-bg: rgb(51, 50, 50);--label-color: rgb(108, 117, 125);--checkbox-color: rgb(118 120 121);--checkbox-checked-color: var(--link-color);--sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);--sidebar-muted-color: #6d6c6b;--sidebar-active-color: rgb(255 255 255 / 80%);--nav-cursor-color: rgb(183, 182, 182);--sidebar-btn-bg: rgb(117 116 116 / 20%);--topbar-text-color: var(--text-color);--topbar-wrapper-bg: rgb(39, 40, 43);--search-wrapper-bg: rgb(34, 34, 39);--search-wrapper-border-color: rgb(34, 34, 39);--search-icon-color: rgb(100, 102, 105);--input-focus-border-color: rgb(112, 114, 115);--post-list-text-color: rgb(175, 176, 177);--btn-patinator-text-color: var(--text-color);--btn-paginator-hover-color: rgb(64, 65, 66);--btn-paginator-border-color: var(--btn-border-color);--btn-text-color: var(--text-color);--pin-bg: rgb(34 35 37);--pin-color: inherit;--toc-highlight: rgb(116, 178, 243);--tag-bg: rgb(41, 40, 40);--tag-hover: rgb(43, 56, 62);--tb-odd-bg: rgba(42, 47, 53, 0.52);--tb-even-bg: rgb(31, 31, 34);--tb-border-color: var(--tb-odd-bg);--footnote-target-bg: rgb(63, 81, 181);--btn-share-color: #6c757d;--btn-share-hover-color: #bfc1ca;--relate-post-date: var(--text-muted-color);--card-bg: rgb(39, 40, 43);--card-border-color: rgb(53, 53, 60);--card-box-shadow: var(--main-wrapper-bg);--preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);--kbd-wrap-color: #6a6a6a;--kbd-text-color: #d3d3d3;--kbd-bg-color: #242424;--prompt-text-color: rgb(216 212 212 / 75%);--prompt-tip-bg: rgba(77, 187, 95, 0.2);--prompt-tip-icon-color: rgb(5 223 5 / 68%);--prompt-info-bg: rgb(7 59 104 / 80%);--prompt-info-icon-color: #0075d1;--prompt-warning-bg: rgb(90 69 3 / 95%);--prompt-warning-icon-color: rgb(255 165 0 / 80%);--prompt-danger-bg: rgb(86 28 8 / 80%);--prompt-danger-icon-color: #cd0202;--tag-border: rgb(59, 79, 88);--tag-shadow: rgb(32, 33, 33);--search-tag-bg: var(--tag-bg);--dash-color: rgb(63, 65, 68);--categories-border: rgb(64, 66, 69);--categories-hover-bg: rgb(73, 75, 76);--categories-icon-hover-color: white;--timeline-node-bg: rgb(150, 152, 156);--timeline-color: rgb(63, 65, 68);--timeline-year-dot-color: var(--timeline-color);color-scheme:dark}html:not([data-mode]) .post img[data-src],html[data-mode=dark] .post img[data-src]{filter:brightness(95%)}html:not([data-mode]) hr,html[data-mode=dark] hr{border-color:var(--main-border-color)}html:not([data-mode]) nav[data-toggle=toc] .nav-link.active,html:not([data-mode]) nav[data-toggle=toc] .nav-link.active:focus,html:not([data-mode]) nav[data-toggle=toc] .nav-link.active:hover,html:not([data-mode]) nav[data-toggle=toc] .nav>li>a:focus,html:not([data-mode]) nav[data-toggle=toc] .nav>li>a:hover,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:focus,html[data-mode=dark] nav[data-toggle=toc] .nav-link.active:hover,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:focus,html[data-mode=dark] nav[data-toggle=toc] .nav>li>a:hover{color:var(--toc-highlight) !important;border-left-color:var(--toc-highlight) !important}html:not([data-mode]) .categories.card,html:not([data-mode]) .list-group-item,html[data-mode=dark] .categories.card,html[data-mode=dark] .list-group-item{background-color:var(--card-bg)}html:not([data-mode]) .categories .card-header,html[data-mode=dark] .categories .card-header{background-color:var(--card-header-bg)}html:not([data-mode]) .categories .list-group-item,html[data-mode=dark] .categories .list-group-item{border-left:none;border-right:none;padding-left:2rem;border-color:var(--categories-border)}html:not([data-mode]) .categories .list-group-item:last-child,html[data-mode=dark] .categories .list-group-item:last-child{border-bottom-color:var(--card-bg)}html:not([data-mode]) #archives li:nth-child(odd),html[data-mode=dark] #archives li:nth-child(odd){background-image:linear-gradient(to left, #1a1a1e, #27272d, #27272d, #27272d, #1a1a1e)}html:not([data-mode]) #disqus_thread,html[data-mode=dark] #disqus_thread{color-scheme:none}html[data-mode=light]{--body-bg: #fafafa;--mask-bg: #c1c3c5;--main-wrapper-bg: white;--main-border-color: #f3f3f3;--text-color: #34343c;--text-muted-color: gray;--heading-color: black;--blockquote-border-color: #eee;--blockquote-text-color: #9a9a9a;--link-color: #2a408e;--link-underline-color: #dee2e6;--button-bg: #fff;--btn-border-color: #e9ecef;--btn-backtotop-color: #686868;--btn-backtotop-border-color: #f1f1f1;--btn-box-shadow: #eaeaea;--checkbox-color: #c5c5c5;--checkbox-checked-color: #07a8f7;--sidebar-bg: #eeeeee;--sidebar-muted-color: #a2a19f;--sidebar-active-color: #424242;--nav-cursor-color: #757575;--sidebar-btn-bg: white;--topbar-text-color: rgb(78, 78, 78);--topbar-wrapper-bg: white;--search-wrapper-bg: rgb(245 245 245 / 50%);--search-wrapper-border-color: rgb(245 245 245);--search-tag-bg: #f8f9fa;--search-icon-color: #c2c6cc;--input-focus-border-color: var(--btn-border-color);--post-list-text-color: dimgray;--btn-patinator-text-color: #555555;--btn-paginator-hover-color: var(--sidebar-bg);--btn-paginator-border-color: var(--sidebar-bg);--btn-text-color: #676666;--pin-bg: #f5f5f5;--pin-color: #999fa4;--btn-share-hover-color: var(--link-color);--card-border-color: #f1f1f1;--card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);--label-color: #616161;--relate-post-date: rgba(30, 55, 70, 0.4);--footnote-target-bg: lightcyan;--tag-bg: rgba(0, 0, 0, 0.075);--tag-border: #dee2e6;--tag-shadow: var(--btn-border-color);--tag-hover: rgb(222, 226, 230);--tb-odd-bg: #fbfcfd;--tb-border-color: #eaeaea;--dash-color: silver;--preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);--kbd-wrap-color: #bdbdbd;--kbd-text-color: var(--text-color);--kbd-bg-color: white;--prompt-text-color: rgb(46 46 46 / 77%);--prompt-tip-bg: rgb(123 247 144 / 20%);--prompt-tip-icon-color: #03b303;--prompt-info-bg: #e1f5fe;--prompt-info-icon-color: #0070cb;--prompt-warning-bg: rgb(255 243 205);--prompt-warning-icon-color: #ef9c03;--prompt-danger-bg: rgb(248 215 218 / 56%);--prompt-danger-icon-color: #df3c30;--categories-hover-bg: var(--btn-border-color);--categories-icon-hover-color: darkslategray;--timeline-color: rgba(0, 0, 0, 0.075);--timeline-node-bg: #c2c6cc;--timeline-year-dot-color: #ffffff}html[data-mode=light] [class^=prompt-]{--link-underline-color: rgb(219 216 216)}}body{line-height:1.75rem;background:var(--body-bg);color:var(--text-color);-webkit-font-smoothing:antialiased;font-family:'Source Sans Pro', 'Microsoft Yahei', sans-serif}h1{font-size:1.9rem}h2{font-size:1.5rem}h3{font-size:1.2rem}h4{font-size:1.15rem}h5{font-size:1.1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:1rem}img{max-width:100%;height:auto}blockquote{border-left:5px solid var(--blockquote-border-color);padding-left:1rem;color:var(--blockquote-text-color)}blockquote[class^="prompt-"]{display:flex;border-left:0;border-radius:6px;padding:0.75rem 1.2rem;color:var(--prompt-text-color)}blockquote[class^="prompt-"]::before{margin-right:1rem;font-family:"Font Awesome 5 Free";text-align:center;width:1.25rem}blockquote[class^="prompt-"] p:last-child{margin-bottom:0rem}blockquote.prompt-tip{background-color:var(--prompt-tip-bg)}blockquote.prompt-tip::before{content:"";color:var(--prompt-tip-icon-color);font-weight:400}blockquote.prompt-info{background-color:var(--prompt-info-bg)}blockquote.prompt-info::before{content:"";color:var(--prompt-info-icon-color);font-weight:900}blockquote.prompt-warning{background-color:var(--prompt-warning-bg)}blockquote.prompt-warning::before{content:"";color:var(--prompt-warning-icon-color);font-weight:900}blockquote.prompt-danger{background-color:var(--prompt-danger-bg)}blockquote.prompt-danger::before{content:"";color:var(--prompt-danger-icon-color);font-weight:900}kbd{font-family:inherit;display:inline-block;vertical-align:middle;line-height:1.3rem;min-width:1.75rem;text-align:center;margin:0 0.3rem;padding-top:0.1rem;color:var(--kbd-text-color);background-color:var(--kbd-bg-color);border-radius:0.25rem;border:solid 1px var(--kbd-wrap-color);box-shadow:inset 0 -2px 0 var(--kbd-wrap-color)}footer{position:absolute;bottom:0;padding:0 1rem;height:5rem;font-size:0.8rem}footer>div.d-flex{line-height:1.2rem;width:95%;max-width:1045px;border-top:1px solid var(--main-border-color);margin-bottom:1rem}footer>div.d-flex>div{width:350px}footer a:link{text-decoration:none}footer a:hover{text-decoration:none}footer .footer-right{text-align:right}@keyframes fade-in{from{opacity:0}to{opacity:1}}img[data-src]{margin:0.5rem 0}img[data-src][data-loaded=true]{animation:fade-in linear 0.5s}img.left[data-src]{float:left;margin:0.75rem 1rem 1rem 0}img.right[data-src]{float:right;margin:0.75rem 0 1rem 1rem}img.shadow[data-src]{filter:drop-shadow(2px 4px 6px rgba(0,0,0,0.08));box-shadow:none !important}.access{top:2rem;transition:top 0.2s ease-in-out;margin-right:1.5rem;margin-top:3rem;margin-bottom:4rem}.access:only-child{position:-webkit-sticky;position:sticky}.access>div{padding-left:1rem;border-left:1px solid var(--main-border-color)}.access>div:not(:last-child){margin-bottom:4rem}.access .post-content{font-size:0.9rem}#panel-wrapper .panel-heading{color:var(--label-color);font-size:inherit;font-weight:600}#panel-wrapper .post-tag{display:inline-block;line-height:1rem;font-size:0.85rem;background:none;border:1px solid var(--btn-border-color);border-radius:0.8rem;padding:0.3rem 0.5rem;margin:0 0.35rem 0.5rem 0}#panel-wrapper .post-tag:hover{background-color:#2a408e;border-color:#2a408e;color:#fff;transition:none}[data-topbar-visible=true] #panel-wrapper>div{top:6rem}#access-lastmod li{height:1.8rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;list-style:none}#access-lastmod a{color:inherit}.footnotes>ol{padding-left:2rem;margin-top:0.5rem}.footnotes>ol>li:not(:last-child){margin-bottom:0.3rem}.footnotes>ol>li>p{margin-left:0.25em;margin-top:0;margin-bottom:0}.footnotes>ol>li:target:not([scroll-focus]),.footnotes>ol>li[scroll-focus=true]>p{background-color:var(--footnote-target-bg);width:fit-content;-webkit-transition:background-color 1.5s ease-in-out;transition:background-color 1.5s ease-in-out}a.footnote{margin-left:1px;margin-right:1px;padding-left:2px;padding-right:2px;border-bottom-style:none !important;-webkit-transition:background-color 1.5s ease-in-out;transition:background-color 1.5s ease-in-out}sup:target:not([scroll-focus]),sup[scroll-focus=true]>a.footnote{background-color:var(--footnote-target-bg)}a.reversefootnote{font-size:0.6rem;line-height:1;position:relative;bottom:0.25em;margin-left:0.25em;border-bottom-style:none !important}.table-wrapper{overflow-x:auto;margin-bottom:1.5rem}.table-wrapper>table{min-width:100%;overflow-x:auto;border-spacing:0}.table-wrapper>table thead{border-bottom:solid 2px rgba(210,215,217,0.75)}.table-wrapper>table tbody tr{border-bottom:1px solid var(--tb-border-color)}.table-wrapper>table tbody tr:nth-child(2n){background-color:var(--tb-even-bg)}.table-wrapper>table tbody tr:nth-child(2n + 1){background-color:var(--tb-odd-bg)}.post h1{margin-top:3rem;margin-bottom:1.5rem}.post a.popup{cursor:zoom-in}.post a.popup>img[data-src]:not(.normal):not(.left):not(.right){position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.pageviews .fa-spinner{font-size:80%}.post-meta{font-size:0.85rem;word-spacing:1px}.post-meta a:not(:last-child){margin-right:2px}.post-content{font-size:1.08rem;line-height:1.8;margin-top:2rem;overflow-wrap:break-word;word-wrap:break-word}.post-content ul .task-list-item[hide-bullet]{list-style-type:none}.post-content ul .task-list-item[hide-bullet]>i{margin:0 0.4rem 0.2rem -1.4rem;vertical-align:middle;color:var(--checkbox-color)}.post-content ul .task-list-item[hide-bullet]>i.checked{color:var(--checkbox-checked-color)}.post-content ul input[type=checkbox]{margin:0 0.5rem 0.2rem -1.3rem;vertical-align:middle}.post-content>ol,.post-content>ul{padding-left:2rem}.post-content>ol li ol,.post-content>ol li ul,.post-content>ul li ol,.post-content>ul li ul{padding-left:2rem;margin-top:0.3rem}.post-content>ol li{padding-left:0.25em}.post-content dl>dd{margin-left:1rem}.post-tag{display:inline-block;min-width:2rem;text-align:center;background:var(--tag-bg);border-radius:0.3rem;padding:0 0.4rem;color:inherit;line-height:1.3rem}.post-tag:not(:last-child){margin-right:0.2rem}.post-tag:hover{border-bottom:none;text-decoration:none;color:#d2603a}.btn-lang{border:1px solid !important;padding:1px 3px;border-radius:3px;color:var(--link-color)}.btn-lang:focus{box-shadow:none}.loaded{display:block !important}.d-flex.loaded{display:flex !important}.unloaded{display:none !important}.visible{visibility:visible !important}.hidden{visibility:hidden !important}.flex-grow-1{-ms-flex-positive:1 !important;flex-grow:1 !important}.btn-box-shadow{box-shadow:0 0 8px 0 var(--btn-box-shadow) !important}.no-text-decoration{text-decoration:none}.tooltip-inner{font-size:0.7rem;max-width:220px;text-align:left}.disabled{color:#cec4c4;pointer-events:auto;cursor:not-allowed}.hide-border-bottom{border-bottom:none !important}.input-focus{box-shadow:none;border-color:var(--input-focus-border-color) !important;background:center !important;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out}figure .mfp-title{text-align:center;padding-right:0;margin-top:0.5rem}.mermaid{text-align:center}#sidebar{padding-left:0;padding-right:0;position:fixed;top:0;left:0;height:100%;overflow-y:auto;width:260px;z-index:99;background:var(--sidebar-bg);-ms-overflow-style:none;scrollbar-width:none}#sidebar::-webkit-scrollbar{display:none}#sidebar a:hover{text-decoration:none;color:var(--sidebar-active-color) !important}#sidebar #avatar>a{display:block;width:6rem;height:6rem;border-radius:50%;border:2px solid rgba(222,222,222,0.7);overflow:hidden;transform:translateZ(0);-webkit-transition:border-color 0.35s ease-in-out;-moz-transition:border-color 0.35s ease-in-out;transition:border-color 0.35s ease-in-out}#sidebar #avatar>a:hover{border-color:white}#sidebar #avatar img{width:100%;height:100%;-webkit-transition:transform 0.5s;-moz-transition:transform 0.5s;transition:transform 0.5s}#sidebar #avatar img:hover{-ms-transform:scale(1.2);-moz-transform:scale(1.2);-webkit-transform:scale(1.2);transform:scale(1.2)}#sidebar .site-title a{font-weight:900;font-size:1.5rem;letter-spacing:0.5px;color:#868585}#sidebar .site-subtitle{font-size:95%;color:var(--sidebar-muted-color);line-height:1.2rem;word-spacing:1px;margin:0.5rem 1.5rem 0.5rem 1.5rem;min-height:3rem;user-select:none}#sidebar .nav-link{border-radius:0;font-size:0.95rem;font-weight:600;letter-spacing:1px;display:table-cell;vertical-align:middle}#sidebar .nav-item{text-align:center;display:table;height:3rem}#sidebar .nav-item.active .nav-link{color:var(--sidebar-active-color)}#sidebar ul{height:15rem;margin-bottom:2rem;padding-left:0}#sidebar ul li{width:100%}#sidebar ul li:last-child a{position:relative;left:1px;width:100%}#sidebar ul li:last-child::after{display:table;visibility:hidden;content:"";position:relative;right:1px;width:2px;height:1.6rem;border-radius:1px;background-color:var(--nav-cursor-color);pointer-events:none}#sidebar ul>li.active:nth-child(1)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(1):hover~li:last-child::after{top:-11.3rem;visibility:visible}#sidebar ul>li.active:nth-child(2)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(2):hover~li:last-child::after{top:-8.3rem;visibility:visible}#sidebar ul>li.active:nth-child(3)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(3):hover~li:last-child::after{top:-5.3rem;visibility:visible}#sidebar ul>li.active:nth-child(4)~li:last-child::after,#sidebar ul>li.nav-item:nth-child(4):hover~li:last-child::after{top:-2.3rem;visibility:visible}#sidebar ul>li.active:nth-child(5):last-child::after,#sidebar ul>li.nav-item:nth-child(5):last-child:hover::after{top:.7rem;visibility:visible}#sidebar .sidebar-bottom{margin-bottom:2.1rem;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}#sidebar .sidebar-bottom .mode-toggle,#sidebar .sidebar-bottom a{width:2.4rem;text-align:center}#sidebar .sidebar-bottom i{font-size:1.2rem;line-height:1.75rem}#sidebar .sidebar-bottom .mode-toggle{padding:0;border:0;margin-bottom:1px;background-color:transparent}#sidebar .sidebar-bottom .mode-toggle:hover>i{color:var(--sidebar-active-color)}#sidebar .sidebar-bottom .icon-border{background-color:var(--sidebar-muted-color);content:"";width:3px;height:3px;border-radius:50%}@media (hover: hover){#sidebar ul>li:last-child::after{-webkit-transition:top 0.5s ease;-moz-transition:top 0.5s ease;-o-transition:top 0.5s ease;transition:top 0.5s ease}}.profile-wrapper{margin-top:2rem;width:100%}#search-result-wrapper{display:none;height:100%;overflow:auto}#search-result-wrapper .post-content{margin-top:2rem}#topbar-wrapper{height:3rem;position:fixed;top:0;left:260px;right:0;transition:top 0.2s ease-in-out;z-index:50;border-bottom:1px solid rgba(0,0,0,0.07);background-color:var(--topbar-wrapper-bg)}[data-topbar-visible=false] #topbar-wrapper{top:-3rem}#topbar i{color:#999}#topbar #breadcrumb{font-size:1rem;color:gray;padding-left:0.5rem}#topbar #breadcrumb span:not(:last-child)::after{content:"›";padding:0 0.3rem}#sidebar-trigger,#search-trigger{display:none}#search-wrapper{display:flex;width:85%;border-radius:1rem;border:1px solid var(--search-wrapper-border-color);background:var(--search-wrapper-bg);padding:0 0.5rem}#search-wrapper i{z-index:2;font-size:0.9rem;color:var(--search-icon-color)}#search-cancel{color:var(--link-color);margin-left:1rem;display:none}#search-input{background:center;border:0;border-radius:0;padding:0.18rem 0.3rem;color:var(--text-color);height:auto}#search-input:focus{box-shadow:none;background:center}#search-input.form-control:focus::-webkit-input-placeholder{opacity:0.6}#search-input.form-control:focus::-moz-placeholder{opacity:0.6}#search-input.form-control:focus:-ms-input-placeholder{opacity:0.6}#search-input.form-control:focus::placeholder{opacity:0.6}#search-hints{padding:0 1rem}#search-hints h4{margin-bottom:1.5rem}#search-hints .post-tag{display:inline-block;line-height:1rem;font-size:1rem;background:var(--search-tag-bg);border:none;padding:0.5rem;margin:0 1.25rem 1rem 0}#search-hints .post-tag::before{content:"#";color:var(--text-muted-color);padding-right:0.2rem}#search-results{padding-bottom:6rem}#search-results a{font-size:1.4rem;line-height:2.5rem}#search-results>div{width:100%}#search-results>div:not(:last-child){margin-bottom:1rem}#search-results>div i{color:#818182;margin-right:0.15rem;font-size:80%}#search-results>div>p{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}#topbar-title{display:none;font-size:1.1rem;font-weight:600;font-family:sans-serif;color:var(--topbar-text-color);text-align:center;width:70%;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap}#core-wrapper{min-height:calc(100vh - 3rem - 5rem - 35rem) !important}#mask{display:none;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;width:100%;z-index:1}[sidebar-display] #mask{display:block !important}#main-wrapper{background-color:var(--main-wrapper-bg);position:relative;min-height:100vh;padding-bottom:5rem;padding-left:0;padding-right:0}#main .row:first-child>div:nth-child(1),#main .row:first-child>div:nth-child(2){margin-top:3rem}#main .row:first-child>div:first-child{min-height:calc(100vh - 3rem - 5rem - 35rem)}#main div.row:first-of-type:last-of-type{margin-bottom:4rem}#topbar-wrapper.row,#main>.row,#search-result-wrapper>.row{margin-left:0;margin-right:0}#back-to-top{display:none;z-index:1;cursor:pointer;position:fixed;background:var(--button-bg);color:var(--btn-backtotop-color);padding:0;width:2.7em;height:2.7em;border-radius:50%;border:1px solid var(--btn-backtotop-border-color);transition:transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out}#back-to-top i{line-height:2.7em;position:relative;bottom:2px}#back-to-top:hover{transform:translate3d(0, -5px, 0);-webkit-transform:translate3d(0, -5px, 0)}@media all and (max-width: 576px){footer{height:6rem}footer>div.d-flex{width:100%;padding:1.5rem 0;margin-bottom:0.3rem;flex-wrap:wrap;-ms-flex-pack:distribute !important;justify-content:space-around !important}footer .footer-left,footer .footer-right{text-align:center}#main>div.row:first-child>div:first-child{min-height:calc(100vh - 3rem - 6rem)}#core-wrapper{min-height:calc(100vh - 3rem - 6rem - 35rem) !important}#core-wrapper h1{margin-top:2.2rem;font-size:1.75rem}#core-wrapper .post-content>blockquote[class^=prompt-]{margin-left:-1.25rem;margin-right:-1.25rem;border-radius:0}#avatar>a{width:5rem;height:5rem}.site-subtitle{margin-left:1.8rem;margin-right:1.8rem}#main-wrapper{padding-bottom:6rem}}@media all and (max-width: 849px){html,body{overflow-x:hidden}[sidebar-display] #sidebar{transform:translateX(0)}[sidebar-display] #topbar-wrapper,[sidebar-display] #main-wrapper{transform:translateX(260px)}#sidebar{-webkit-transition:transform 0.4s ease;transition:transform 0.4s ease;transform:translateX(-260px);-webkit-transform:translateX(-260px)}#sidebar .cursor{-webkit-transition:none;-moz-transition:none;transition:none}#main-wrapper{-webkit-transition:transform 0.4s ease;transition:transform 0.4s ease;padding-top:3rem}#search-result-wrapper{width:100%}#breadcrumb,#search-wrapper{display:none}#topbar-wrapper{-webkit-transition:transform 0.4s ease, top 0.2s ease;transition:transform 0.4s ease, top 0.2s ease;left:0}#main>div.row:first-child>div:nth-child(1),#main>div.row:first-child>div:nth-child(2){margin-top:0}#topbar-title,#sidebar-trigger,#search-trigger{display:block}#search-wrapper.loaded~a{margin-right:1rem}#search-input{margin-left:0;width:95%}#search-result-wrapper .post-content{letter-spacing:0}#tags{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}h1.dynamic-title{display:none}h1.dynamic-title~.post-content{margin-top:3rem}}@media all and (max-width: 849px) and (orientation: portrait){[data-topbar-visible=false] #topbar-wrapper{top:0}}@media all and (min-width: 577px) and (max-width: 1199px){footer>.d-flex>div{width:312px}}@media all and (min-width: 850px){html{overflow-y:scroll}#main-wrapper{margin-left:260px}.profile-wrapper{margin-top:3rem}#search-wrapper{width:22%;min-width:150px}#search-hints{display:none}#search-result-wrapper{margin-top:3rem}div.post-content .table-wrapper>table{min-width:70%}#back-to-top{bottom:5.5rem;right:1.2rem}#topbar-title{text-align:left}footer>div.d-flex{width:92%}}@media all and (min-width: 992px) and (max-width: 1199px){#main .col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 96%;flex:0 0 96%;max-width:96%}}@media all and (min-width: 850px) and (max-width: 1199px){#sidebar{width:210px}#sidebar .site-subtitle{margin-left:1rem;margin-right:1rem}#sidebar .sidebar-bottom a,#sidebar .sidebar-bottom span{width:2rem}#sidebar .sidebar-bottom .icon-border{left:-3px}#topbar-wrapper{left:210px}#search-results>div{max-width:700px}.site-title{font-size:1.3rem;margin-left:0 !important}.site-subtitle{margin-left:1rem;margin-right:1rem;font-size:90%}#main-wrapper{margin-left:210px}#breadcrumb{width:65%;overflow:hidden;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap}}@media all and (max-width: 1199px){#panel-wrapper{display:none}#topbar{padding:0}#main>div.row{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}}@media all and (min-width: 1200px){#main>div.row>div.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%;padding-left:3%}#topbar{padding:0;max-width:1070px}#panel-wrapper{max-width:300px}#back-to-top{bottom:6.5rem;right:4.3rem}#search-input{-webkit-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}#search-results>div{width:46%}#search-results>div:nth-child(odd){margin-right:1.5rem}#search-results>div:nth-child(even){margin-left:1.5rem}#search-results>div:last-child:nth-child(odd){position:relative;right:24.3%}.post-content{font-size:1.03rem}footer>div.d-felx{width:85%}}@media all and (min-width: 1400px){#main>div.row{padding-left:calc((100% - 1150px) / 2)}#main>div.row>div.col-xl-8{max-width:850px}#search-result-wrapper{padding-right:2rem}#search-result-wrapper>div{max-width:1110px}}@media all and (min-width: 1400px) and (max-width: 1650px){#topbar{padding-right:2rem}}@media all and (min-width: 1650px){#breadcrumb{padding-left:0}#main>div.row>div.col-xl-8{padding-left:0}#main>div.row>div.col-xl-8>div:first-child{padding-left:0.55rem !important;padding-right:1.9rem !important}#main-wrapper{margin-left:350px}#panel-wrapper{margin-left:calc((100% - 1150px) / 10)}#topbar-wrapper{left:350px}#topbar{max-width:1150px}#search-wrapper{margin-right:3%}#sidebar{width:350px}#sidebar .profile-wrapper{margin-top:4rem;margin-bottom:1rem}#sidebar .profile-wrapper.text-center{text-align:left !important}#sidebar .profile-wrapper .site-subtitle,#sidebar .profile-wrapper .site-title,#sidebar .profile-wrapper #avatar{margin-left:4.5rem}#sidebar .profile-wrapper #avatar>a{width:6.2rem;height:6.2rem}#sidebar .profile-wrapper #avatar>a.mx-auto{margin-left:0 !important}#sidebar .profile-wrapper .site-title a{font-size:1.7rem;letter-spacing:1px}#sidebar .profile-wrapper .site-subtitle{word-spacing:0;margin-top:0.3rem}#sidebar ul{padding-left:2.5rem}#sidebar ul>li:last-child>a{position:static}#sidebar ul .nav-item{text-align:left}#sidebar ul .nav-item .nav-link>span{letter-spacing:2px}#sidebar ul .nav-item .nav-link>i.unloaded{display:inline-block !important}#sidebar .sidebar-bottom{padding-left:3.5rem;width:100%}#sidebar .sidebar-bottom.justify-content-center{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}#sidebar .sidebar-bottom>span,#sidebar .sidebar-bottom>button.mode-toggle,#sidebar .sidebar-bottom>a{margin-left:.15rem;margin-right:.15rem;height:2rem;margin-bottom:0.5rem}#sidebar .sidebar-bottom i{background-color:var(--sidebar-btn-bg);font-size:1rem;width:2rem;height:2rem;border-radius:50%;position:relative}#sidebar .sidebar-bottom i::before{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}#sidebar .sidebar-bottom .icon-border{top:0.9rem}footer>div.d-flex{width:92%;max-width:1140px}#search-result-wrapper>div{max-width:1150px}}@media all and (min-width: 1700px){#topbar-wrapper{padding-right:calc(100% - 350px - (1920px - 350px))}#topbar{max-width:calc(1150px + 20px)}#main>div.row{padding-left:calc((100% - 1150px - 2%) / 2)}#panel-wrapper{margin-left:3%}footer{padding-left:0;padding-right:calc(100% - 350px - 1180px)}#back-to-top{right:calc(100% - 1920px + 15rem)}}@media (min-width: 1920px){#main>div.row{padding-left:190px}#search-result-wrapper{padding-right:calc(100% - 350px - 1180px)}#panel-wrapper{margin-left:41px}}.pagination{color:var(--btn-patinator-text-color);font-family:'Lato', sans-serif}.pagination a:hover{text-decoration:none}.pagination .page-item .page-link{color:inherit;width:2.5rem;height:2.5rem;padding:0;display:-webkit-box;-webkit-box-pack:center;-webkit-box-align:center;border-radius:50%;border:1px solid var(--btn-paginator-border-color);background-color:var(--button-bg)}.pagination .page-item .page-link:hover{background-color:var(--btn-paginator-hover-color)}.pagination .page-item.active .page-link{background-color:var(--btn-paginator-hover-color);color:var(--btn-text-color)}.pagination .page-item.disabled{cursor:not-allowed}.pagination .page-item.disabled .page-link{color:rgba(108,117,125,0.57);border-color:var(--btn-paginator-border-color);background-color:var(--button-bg)}.pagination .page-item:first-child .page-link,.pagination .page-item:last-child .page-link{border-radius:50%}#post-list{margin-top:1rem;padding-right:0.5rem}#post-list .post-preview{padding-top:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--main-border-color)}#post-list .post-preview h1{font-size:1.4rem;margin:0}#post-list .post-preview .post-meta i{font-size:0.73rem}#post-list .post-preview .post-meta i:not(:first-child){margin-left:1.2rem}#post-list .post-preview .post-content{margin-top:0.6rem;margin-bottom:0.6rem;color:var(--post-list-text-color)}#post-list .post-preview .post-content>p{margin:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#post-list .post-preview .pin>i{transform:rotate(45deg);padding-left:3px;color:var(--pin-color)}#post-list .post-preview .pin>span{display:none}@media all and (max-width: 830px){.pagination{justify-content:space-evenly}.pagination .page-item:not(:first-child):not(:last-child){display:none}}@media all and (min-width: 831px){#post-list{margin-top:1.5rem}#post-list .post-preview .post-meta .pin{background:var(--pin-bg);border-radius:5px;line-height:1.4rem;height:1.3rem;margin-top:3px;padding-left:1px;padding-right:6px}#post-list .post-preview .post-meta .pin>span{display:inline}.pagination{font-size:0.85rem}.pagination .page-item:not(:last-child){margin-right:0.7rem}.pagination .page-item .page-link{width:2rem;height:2rem}.pagination .page-index{display:none}}@media all and (max-width: 1200px){#post-list{padding-right:0}}#related-posts .card h3,h1+.post-meta em a,h1+.post-meta em,footer a{color:var(--text-color)}h1+.post-meta span+span::before{content:"\2022";padding-left:.25rem;padding-right:.25rem}img.preview-img{margin-top:3.75rem;margin-bottom:0;border-radius:6px}img.preview-img.bg[data-loaded=true]{background:var(--preview-img-bg)}.post-tail-wrapper{margin-top:6rem;border-bottom:1px double var(--main-border-color);font-size:0.85rem}.post-tags{line-height:2rem}.post-navigation{padding-top:3rem;padding-bottom:4rem}.post-navigation .btn{width:50%;position:relative;border-color:var(--btn-border-color);color:var(--link-color)}.post-navigation .btn:hover{background:#2a408e;color:#fff;border-color:#2a408e}.post-navigation .btn.disabled{width:50%;position:relative;border-color:var(--btn-border-color);pointer-events:auto;cursor:not-allowed;background:none;color:gray}.post-navigation .btn.disabled:hover{border-color:none}.post-navigation .btn.btn-outline-primary.disabled:focus{box-shadow:none}.post-navigation .btn::before{color:var(--text-muted-color);font-size:0.65rem;text-transform:uppercase;content:attr(prompt)}.post-navigation .btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0;left:0.5px}.post-navigation .btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0;right:0.5px}.post-navigation p{font-size:1.1rem;line-height:1.5rem;margin-top:0.3rem;white-space:normal}@keyframes fade-up{from{opacity:0;position:relative;top:2rem}to{opacity:1;position:relative;top:0}}#toc-wrapper{border-left:1px solid rgba(158,158,158,0.17);position:-webkit-sticky;position:sticky;top:4rem;transition:top 0.2s ease-in-out;animation:fade-up 0.8s}#toc li a{font-size:0.8rem}#toc li a.nav-link:not(.active){color:inherit}nav[data-toggle=toc] .nav .nav>li>a.active{font-weight:600 !important}#related-posts>h3{color:var(--label-color);font-size:1.1rem;font-weight:600}#related-posts .card{border-color:var(--card-border-color);background-color:var(--card-bg);box-shadow:0 0 5px 0 var(--card-box-shadow);-webkit-transition:all 0.3s ease-in-out;-moz-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}#related-posts .card:hover{-webkit-transform:translate3d(0, -3px, 0);transform:translate3d(0, -3px, 0);box-shadow:0 10px 15px -4px rgba(0,0,0,0.15)}#related-posts .timeago{color:var(--relate-post-date)}#related-posts p{font-size:0.9rem;margin-bottom:0.5rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#related-posts a:hover{text-decoration:none}#related-posts ul{list-style-type:none;padding-inline-start:1.5rem}#related-posts ul>li::before{background:#c2c9d4;width:5px;height:5px;border-radius:1px;display:block;content:"";position:relative;top:1rem;right:1rem}#tail-wrapper{min-height:2rem}#tail-wrapper>div:last-of-type{margin-bottom:2rem}#tail-wrapper #disqus_thread{min-height:8.5rem}.post-tail-bottom a{color:inherit}.share-wrapper .share-icons>i:hover,.share-wrapper .share-icons a:hover>i{color:var(--btn-share-hover-color) !important}.share-wrapper{vertical-align:middle;user-select:none}.share-wrapper .share-icons{font-size:1.2rem}.share-wrapper .share-icons a:not(:last-child){margin-right:0.25rem}.share-wrapper .share-icons a:hover{text-decoration:none}.share-wrapper .share-icons>i{position:relative;bottom:1px}.share-wrapper .share-icons .fab.fa-twitter{color:var(--btn-share-color, #1da1f2)}.share-wrapper .share-icons .fab.fa-facebook-square{color:var(--btn-share-color, #425f9c)}.share-wrapper .share-icons .fab.fa-telegram{color:var(--btn-share-color, #279fd9)}.share-wrapper .share-icons .fab.fa-weibo{color:var(--btn-share-color, #e5142b)}.share-wrapper .fas.fa-link{color:var(--btn-share-color, #ababab)}.share-label{color:inherit;font-size:inherit;font-weight:400}.share-label::after{content:":"}.license-wrapper{line-height:1.2rem}.license-wrapper>a{color:var(--text-color)}.license-wrapper span:last-child{font-size:0.85rem}@media all and (max-width: 576px){.preview-img[data-src]{margin-top:2.2rem}.post-tail-bottom{-ms-flex-wrap:wrap-reverse !important;flex-wrap:wrap-reverse !important}.post-tail-bottom>div:first-child{width:100%;margin-top:1rem}}@media all and (max-width: 768px){.post-content>p>img{max-width:calc(100% + 1rem)}}@media all and (max-width: 849px){.post-navigation{padding-left:0;padding-right:0;margin-left:-0.5rem;margin-right:-0.5rem}.preview-img[data-src]{max-width:100vw;border-radius:0}}.tag{border-radius:0.7em;padding:6px 8px 7px;margin-right:0.8rem;line-height:3rem;letter-spacing:0;border:1px solid var(--tag-border) !important;box-shadow:0 0 3px 0 var(--tag-shadow)}.tag span{margin-left:0.6em;font-size:0.7em;font-family:'Oswald', sans-serif}#archives ul li:first-child::before,#archives ul li::after{content:"";width:4px;left:75px;display:inline-block;float:left;position:relative;background-color:var(--timeline-color)}#archives{letter-spacing:0.03rem}#archives span.lead{font-size:1.5rem;position:relative;left:8px}#archives span.lead::after{content:"";display:block;position:relative;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;width:12px;height:12px;top:-26px;left:63px;border:3px solid;background-color:var(--timeline-year-dot-color);border-color:var(--timeline-node-bg);box-shadow:0 0 2px 0 #c2c6cc;z-index:1}#archives span.lead:not(:first-child){position:relative;left:4px}#archives span.lead:not(:first-child)::after{left:67px}#archives ul li{font-size:1.1rem;line-height:3rem}#archives ul li div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#archives ul li div a{margin-left:2.5rem;position:relative;top:0.1rem}#archives ul li:nth-child(odd){background-color:var(--main-wrapper-bg, #fff);background-image:linear-gradient(to left, #fff, #fbfbfb, #fbfbfb, #fbfbfb, #fff)}#archives ul li::after{height:2.8rem;top:-1.3rem}#archives ul li:first-child::before{height:3.06rem;top:-1.61rem}#archives ul:not(:last-child)>li:last-child::after{height:3.4rem}#archives ul:last-child>li:last-child::after{display:none}#archives .date{white-space:nowrap;display:inline-block}#archives .date.month{width:1.4rem;text-align:center}#archives .date.month~a::before{content:"";display:inline-block;position:relative;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;width:8px;height:8px;float:left;top:1.35rem;left:69px;background-color:var(--timeline-node-bg);box-shadow:0 0 3px 0 #c2c6cc;z-index:1}#archives .date.day{font-size:85%;font-family:'Lato', sans-serif;text-align:center;margin-right:-2px;width:1.2rem;position:relative;left:-0.15rem}@media all and (max-width: 576px){#archives{margin-top:-1rem}#archives ul{letter-spacing:0}}.categories i{color:gray}.categories{margin-bottom:2rem}.categories .card-header{padding-right:12px}.categories i{font-size:86%}.categories .list-group-item{border-left:none;border-right:none;padding-left:2rem}.categories .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.category-trigger{width:1.7rem;height:1.7rem;border-radius:50%;text-align:center;color:#6c757d !important}.category-trigger:hover i{color:var(--categories-icon-hover-color)}.category-trigger i{position:relative;height:0.7rem;width:1rem;transition:transform 300ms ease}@media (hover: hover){.category-trigger:hover{background-color:var(--categories-hover-bg)}}.rotate{-ms-transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.dash{margin:0 0.5rem 0.6rem 0.5rem;border-bottom:2px dotted var(--dash-color)}#page-category ul>li,#page-tag ul>li{line-height:1.5rem;padding:0.6rem 0}#page-category ul>li::before,#page-tag ul>li::before{background:#999;width:5px;height:5px;border-radius:50%;display:block;content:"";position:relative;top:0.6rem;margin-right:0.5rem}#page-category ul>li>a,#page-tag ul>li>a{font-size:1.1rem}#page-category ul>li>span:last-child,#page-tag ul>li>span:last-child{white-space:nowrap}#page-tag h1>i{font-size:1.2rem}#page-category h1>i{font-size:1.25rem}#page-category a:hover,#page-tag a:hover,#access-lastmod a:hover{margin-bottom:-1px}@media all and (max-width: 576px){#page-category ul>li::before,#page-tag ul>li::before{margin:0 0.5rem}#page-category ul>li>a,#page-tag ul>li>a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}} + +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/assets/css/style.css.map b/assets/css/style.css.map new file mode 100644 index 0000000..4bf4bb3 --- /dev/null +++ b/assets/css/style.css.map @@ -0,0 +1,44 @@ +{ + "version": 3, + "file": "style.css", + "sources": [ + "style.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/jekyll-theme-chirpy.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/colors/light-typography.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/colors/dark-typography.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/addon/module.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/addon/variables.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/variables-hook.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/addon/syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/colors/light-syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/colors/dark-syntax.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/addon/commons.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/home.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/post.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/tags.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/archives.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/categories.scss", + "vendor/bundle/ruby/2.7.0/gems/jekyll-theme-chirpy-5.1.0/_sass/layout/category-tag.scss" + ], + "sourcesContent": [ + "/*\n If the number of TAB files has changed, the following variable is required.\n And it must be defined before `@import`.\n*/\n$tab-count: 5; // plus 1 for home tab\n\n@import \"jekyll-theme-chirpy\";\n\n/* append your custom style below */\n", + "/*!\n * The styles for Jekyll theme Chirpy\n *\n * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy)\n * © 2019 Cotes Chung\n * MIT Licensed\n */\n\n@import\n \"colors/light-typography\",\n \"colors/dark-typography\",\n\n \"addon/module\",\n \"addon/variables\",\n \"variables-hook\",\n \"addon/syntax\",\n \"addon/commons\",\n\n \"layout/home\",\n \"layout/post\",\n \"layout/tags\",\n \"layout/archives\",\n \"layout/categories\",\n \"layout/category-tag\";\n", + "/*\n * The syntax light mode typography colors\n */\n\n@mixin light-scheme {\n /* Framework color */\n --body-bg: #fafafa;\n --mask-bg: #c1c3c5;\n --main-wrapper-bg: white;\n --main-border-color: #f3f3f3;\n\n /* Common color */\n --text-color: #34343c;\n --text-muted-color: gray;\n --heading-color: black;\n --blockquote-border-color: #eee;\n --blockquote-text-color: #9a9a9a;\n --link-color: #2a408e;\n --link-underline-color: #dee2e6;\n --button-bg: #fff;\n --btn-border-color: #e9ecef;\n --btn-backtotop-color: #686868;\n --btn-backtotop-border-color: #f1f1f1;\n --btn-box-shadow: #eaeaea;\n --checkbox-color: #c5c5c5;\n --checkbox-checked-color: #07a8f7;\n\n /* Sidebar */\n --sidebar-bg: #eeeeee;\n --sidebar-muted-color: #a2a19f;\n --sidebar-active-color: #424242;\n --nav-cursor-color: #757575;\n --sidebar-btn-bg: white;\n\n /* Topbar */\n --topbar-text-color: rgb(78, 78, 78);\n --topbar-wrapper-bg: white;\n --search-wrapper-bg: rgb(245 245 245 / 50%);\n --search-wrapper-border-color: rgb(245 245 245);\n --search-tag-bg: #f8f9fa;\n --search-icon-color: #c2c6cc;\n --input-focus-border-color: var(--btn-border-color);\n\n /* Home page */\n --post-list-text-color: dimgray;\n --btn-patinator-text-color: #555555;\n --btn-paginator-hover-color: var(--sidebar-bg);\n --btn-paginator-border-color: var(--sidebar-bg);\n --btn-text-color: #676666;\n --pin-bg: #f5f5f5;\n --pin-color: #999fa4;\n\n /* Posts */\n --btn-share-hover-color: var(--link-color);\n --card-border-color: #f1f1f1;\n --card-box-shadow: rgba(234, 234, 234, 0.7686274509803922);\n --label-color: #616161;\n --relate-post-date: rgba(30, 55, 70, 0.4);\n --footnote-target-bg: lightcyan;\n --tag-bg: rgba(0, 0, 0, 0.075);\n --tag-border: #dee2e6;\n --tag-shadow: var(--btn-border-color);\n --tag-hover: rgb(222, 226, 230);\n --tb-odd-bg: #fbfcfd;\n --tb-border-color: #eaeaea;\n --dash-color: silver;\n --preview-img-bg: radial-gradient(circle, rgb(255 255 255) 0%, rgb(249 249 249) 100%);\n --kbd-wrap-color: #bdbdbd;\n --kbd-text-color: var(--text-color);\n --kbd-bg-color: white;\n --prompt-text-color: rgb(46 46 46 / 77%);\n --prompt-tip-bg: rgb(123 247 144 / 20%);\n --prompt-tip-icon-color: #03b303;\n --prompt-info-bg: #e1f5fe;\n --prompt-info-icon-color: #0070cb;\n --prompt-warning-bg: rgb(255 243 205);\n --prompt-warning-icon-color: #ef9c03;\n --prompt-danger-bg: rgb(248 215 218 / 56%);\n --prompt-danger-icon-color: #df3c30;\n\n [class^=prompt-] {\n --link-underline-color: rgb(219 216 216);\n }\n\n /* Categories */\n --categories-hover-bg: var(--btn-border-color);\n --categories-icon-hover-color: darkslategray;\n\n /* Archive */\n --timeline-color: rgba(0, 0, 0, 0.075);\n --timeline-node-bg: #c2c6cc;\n --timeline-year-dot-color: #ffffff;\n\n} /* light-scheme */\n", + "/*\n * The main dark mode styles\n */\n\n@mixin dark-scheme {\n /* Framework color */\n --body-bg: var(--main-wrapper-bg);\n --mask-bg: rgb(68, 69, 70);\n --main-wrapper-bg: rgb(27, 27, 30);\n --main-border-color: rgb(44, 45, 45);\n\n /* Common color */\n --text-color: rgb(175, 176, 177);\n --text-muted-color: rgb(107, 116, 124);\n --heading-color: #cccccc;\n --blockquote-border-color: rgb(66, 66, 66);\n --blockquote-text-color: rgb(117, 117, 117);\n --link-color: rgb(138, 180, 248);\n --link-underline-color: rgb(82, 108, 150);\n --button-bg: rgb(39, 40, 43);\n --btn-border-color: rgb(63, 65, 68);\n --btn-backtotop-color: var(--text-color);\n --btn-backtotop-border-color: var(--btn-border-color);\n --btn-box-shadow: var(--main-wrapper-bg);\n --card-header-bg: rgb(51, 50, 50);\n --label-color: rgb(108, 117, 125);\n --checkbox-color: rgb(118 120 121);\n --checkbox-checked-color: var(--link-color);\n\n /* Sidebar */\n --sidebar-bg: radial-gradient(circle, #242424 0%, #1d1f27 100%);\n --sidebar-muted-color: #6d6c6b;\n --sidebar-active-color: rgb(255 255 255 / 80%);\n --nav-cursor-color: rgb(183, 182, 182);\n --sidebar-btn-bg: rgb(117 116 116 / 20%);\n\n /* Topbar */\n --topbar-text-color: var(--text-color);\n --topbar-wrapper-bg: rgb(39, 40, 43);\n --search-wrapper-bg: rgb(34, 34, 39);\n --search-wrapper-border-color: rgb(34, 34, 39);\n --search-icon-color: rgb(100, 102, 105);\n --input-focus-border-color: rgb(112, 114, 115);\n\n /* Home page */\n --post-list-text-color: rgb(175, 176, 177);\n --btn-patinator-text-color: var(--text-color);\n --btn-paginator-hover-color: rgb(64, 65, 66);\n --btn-paginator-border-color: var(--btn-border-color);\n --btn-text-color: var(--text-color);\n --pin-bg: rgb(34 35 37);\n --pin-color: inherit;\n\n /* Posts */\n --toc-highlight: rgb(116, 178, 243);\n --tag-bg: rgb(41, 40, 40);\n --tag-hover: rgb(43, 56, 62);\n --tb-odd-bg: rgba(42, 47, 53, 0.52); /* odd rows of the posts' table */\n --tb-even-bg: rgb(31, 31, 34); /* even rows of the posts' table */\n --tb-border-color: var(--tb-odd-bg);\n --footnote-target-bg: rgb(63, 81, 181);\n --btn-share-color: #6c757d;\n --btn-share-hover-color: #bfc1ca;\n --relate-post-date: var(--text-muted-color);\n --card-bg: rgb(39, 40, 43);\n --card-border-color: rgb(53, 53, 60);\n --card-box-shadow: var(--main-wrapper-bg);\n --preview-img-bg: radial-gradient(circle, rgb(22 22 24) 0%, rgb(32 32 32) 100%);\n --kbd-wrap-color: #6a6a6a;\n --kbd-text-color: #d3d3d3;\n --kbd-bg-color: #242424;\n --prompt-text-color: rgb(216 212 212 / 75%);\n --prompt-tip-bg: rgba(77, 187, 95, 0.2);\n --prompt-tip-icon-color: rgb(5 223 5 / 68%);\n --prompt-info-bg: rgb(7 59 104 / 80%);\n --prompt-info-icon-color: #0075d1;\n --prompt-warning-bg: rgb(90 69 3 / 95%);\n --prompt-warning-icon-color: rgb(255 165 0 / 80%);\n --prompt-danger-bg: rgb(86 28 8 / 80%);\n --prompt-danger-icon-color: #cd0202;\n\n /* tags */\n --tag-border: rgb(59, 79, 88);\n --tag-shadow: rgb(32, 33, 33);\n --search-tag-bg: var(--tag-bg);\n --dash-color: rgb(63, 65, 68);\n\n /* categories */\n --categories-border: rgb(64, 66, 69);\n --categories-hover-bg: rgb(73, 75, 76);\n --categories-icon-hover-color: white;\n\n /* archives */\n --timeline-node-bg: rgb(150, 152, 156);\n --timeline-color: rgb(63, 65, 68);\n --timeline-year-dot-color: var(--timeline-color);\n\n .post img[data-src] {\n filter: brightness(95%);\n }\n\n hr {\n border-color: var(--main-border-color);\n }\n\n /* posts' toc, override BS */\n nav[data-toggle=toc] .nav-link.active,\n nav[data-toggle=toc] .nav-link.active:focus,\n nav[data-toggle=toc] .nav-link.active:hover,\n nav[data-toggle=toc] .nav > li > a:focus,\n nav[data-toggle=toc] .nav > li > a:hover {\n color: var(--toc-highlight) !important;\n border-left-color: var(--toc-highlight) !important;\n }\n\n /* categories */\n .categories.card,\n .list-group-item {\n background-color: var(--card-bg);\n }\n\n .categories {\n .card-header {\n background-color: var(--card-header-bg);\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n border-color: var(--categories-border);\n\n &:last-child {\n border-bottom-color: var(--card-bg);\n }\n }\n }\n\n #archives li:nth-child(odd) {\n background-image:\n linear-gradient(\n to left,\n rgb(26, 26, 30),\n rgb(39, 39, 45),\n rgb(39, 39, 45),\n rgb(39, 39, 45),\n rgb(26, 26, 30)\n );\n }\n\n color-scheme: dark;\n\n #disqus_thread {\n color-scheme: none;\n }\n\n} /* dark-scheme */\n", + "/*\n* Mainly scss modules, only imported to `assets/css/main.scss`\n*/\n\n/* ---------- scss placeholder --------- */\n\n%heading {\n color: var(--heading-color);\n font-weight: 400;\n font-family: 'Lato', 'Microsoft Yahei', sans-serif;\n}\n\n%section {\n #core-wrapper & {\n margin-top: 2.5rem;\n margin-bottom: 1.25rem;\n\n &:focus {\n outline: none; /* avoid outline in Safari */\n }\n }\n}\n\n%anchor {\n .anchor {\n font-size: 80%;\n }\n\n @media (hover: hover) {\n .anchor {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0.25s;\n }\n\n &:hover {\n .anchor {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.25s ease-in, visibility 0s ease-in 0s;\n }\n }\n }\n}\n\n%tag-hover {\n background: var(--tag-hover);\n transition: background 0.35s ease-in-out;\n}\n\n%table-cell {\n padding: 0.4rem 1rem;\n font-size: 95%;\n white-space: nowrap;\n}\n\n%link-hover {\n color: #d2603a !important;\n border-bottom: 1px solid #d2603a;\n text-decoration: none;\n}\n\n%link-color {\n color: var(--link-color);\n}\n\n%link-underline {\n border-bottom: 1px solid var(--link-underline-color);\n}\n\n%clickable-transition {\n transition: color 0.35s ease-in-out;\n}\n\n%no-cursor {\n user-select: none;\n}\n\n%no-bottom-border {\n border-bottom: none;\n}\n\n%cursor-pointer {\n cursor: pointer;\n}\n\n%normal-font-style {\n font-style: normal;\n}\n\n%img-caption {\n + em {\n display: block;\n text-align: center;\n font-style: normal;\n font-size: 80%;\n padding: 0;\n color: #6d6c6c;\n }\n}\n\n%sidebar-links {\n color: rgba(117, 117, 117, 0.9);\n user-select: none;\n}\n\n/* ---------- scss mixin --------- */\n\n@mixin no-text-decoration {\n text-decoration: none;\n}\n\n@mixin ml-mr($value) {\n margin-left: $value;\n margin-right: $value;\n}\n\n@mixin pl-pr($val) {\n padding-left: $val;\n padding-right: $val;\n}\n\n@mixin input-placeholder {\n opacity: 0.6;\n}\n\n@mixin label($font-size: 1rem, $font-weight: 600, $color: var(--label-color)) {\n color: $color;\n font-size: $font-size;\n font-weight: $font-weight;\n}\n\n@mixin align-center {\n position: relative;\n left: 50%;\n -webkit-transform: translateX(-50%);\n -ms-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n\n@mixin prompt($type, $fw-icon, $icon-weight: 900) {\n &.prompt-#{$type} {\n background-color: var(--prompt-#{$type}-bg);\n\n &::before {\n content: $fw-icon;\n color: var(--prompt-#{$type}-icon-color);\n font-weight: $icon-weight;\n }\n }\n}\n", + "/*\n * The SCSS variables\n */\n\n/* sidebar */\n\n$sidebar-width: 260px !default; /* the basic width */\n$sidebar-width-small: 210px !default; /* screen width: >= 850px, <= 1199px (iPad landscape) */\n$sidebar-width-large: 350px !default; /* screen width: >= 1650px */\n\n/* tabs of sidebar */\n\n$tab-count: 5 !default; /* backward compatible (version <= 4.0.2) */\n$tab-height: 3rem !default;\n$tab-cursor-height: 1.6rem !default;\n\n$cursor-width: 2px !default; /* the cursor width of the selected tab */\n\n/* other framework sizes */\n\n$topbar-height: 3rem !default;\n\n$footer-height: 5rem !default;\n$footer-height-mobile: 6rem !default; /* screen width: <= 576px */\n\n$main-content-max-width: 1150px !default;\n\n$panel-max-width: 300px !default;\n\n$bottom-min-height: 35rem !default;\n\n/* syntax highlight */\n\n$code-font-size: 0.85rem !default;\n", + "/*\n Appending custom SCSS variables will override the default ones in `_sass/addon/variables.scsss`\n*/\n", + "/*\n* The syntax highlight.\n*/\n\n@import \"colors/light-syntax\";\n@import \"colors/dark-syntax\";\n\nhtml {\n @media (prefers-color-scheme: light) {\n &:not([data-mode]),\n [data-mode=light] {\n @include light-syntax;\n }\n\n &[data-mode=dark] {\n @include dark-syntax;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n &:not([data-mode]),\n &[data-mode=dark] {\n @include dark-syntax;\n }\n\n &[data-mode=light] {\n @include light-syntax;\n }\n }\n}\n\n/* -- Codes Snippet -- */\n\n$code-radius: 6px;\n\n%code-snippet-bg {\n background: var(--highlight-bg-color);\n}\n\n%code-snippet-radius {\n border-radius: $code-radius;\n}\n\n%code-snippet-padding {\n padding-left: 1rem;\n padding-right: 1.5rem;\n}\n\n.highlighter-rouge {\n @extend %code-snippet-bg;\n @extend %code-snippet-radius;\n\n color: var(--highlighter-rouge-color);\n margin-top: 0.5rem;\n margin-bottom: 1.2em; /* Override BS Inline-code style */\n}\n\n.highlight {\n @extend %code-snippet-radius;\n @extend %code-snippet-bg;\n\n @at-root figure#{&} {\n @extend %code-snippet-bg;\n }\n\n overflow: auto;\n padding-top: 0.5rem;\n padding-bottom: 1rem;\n\n pre {\n margin-bottom: 0;\n font-size: $code-font-size;\n line-height: 1.4rem;\n word-wrap: normal; /* Fixed Safari overflow-x */\n }\n\n table {\n td pre {\n overflow: visible; /* Fixed iOS safari overflow-x */\n word-break: normal; /* Fixed iOS safari linenos code break */\n }\n }\n\n .lineno {\n padding-right: 0.5rem;\n min-width: 2.2rem;\n text-align: right;\n color: var(--highlight-lineno-color);\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n user-select: none;\n }\n\n /* set the dollar sign to non-selectable */\n .gp {\n user-select: none;\n }\n\n} /* .highlight */\n\ncode {\n -webkit-hyphens: none;\n -ms-hyphens: none;\n -moz-hyphens: none;\n hyphens: none;\n\n &.highlighter-rouge {\n font-size: $code-font-size;\n padding: 3px 5px;\n border-radius: 4px;\n background-color: var(--inline-code-bg);\n }\n\n &.filepath {\n background-color: inherit;\n color: var(--filepath-text-color);\n font-weight: 600;\n padding: 0;\n }\n\n a > &.highlighter-rouge {\n padding-bottom: 0; /* show link's underlinke */\n color: inherit;\n }\n\n a:hover > &.highlighter-rouge {\n border-bottom: none;\n }\n\n blockquote & {\n color: inherit;\n }\n\n .highlight > & {\n color: transparent;\n }\n}\n\ntd.rouge-code {\n @extend %code-snippet-padding;\n\n /*\n Prevent some browser extends from\n changing the URL string of code block.\n */\n a {\n color: inherit !important;\n border-bottom: none !important;\n pointer-events: none;\n }\n\n}\n\n/* Hide line numbers for default, console, and terminal code snippets */\ndiv {\n &[class^='highlighter-rouge'],\n &.language-plaintext.highlighter-rouge,\n &.language-console.highlighter-rouge,\n &.language-terminal.highlighter-rouge,\n &.nolineno {\n pre.lineno {\n display: none;\n }\n\n td.rouge-code {\n padding-left: 1.5rem;\n }\n }\n}\n\n.code-header {\n @extend %no-cursor;\n\n $code-header-height: 2.25rem;\n\n border-top-left-radius: $code-radius;\n border-top-right-radius: $code-radius;\n display: flex;\n justify-content: space-between;\n align-items: center;\n height: $code-header-height;\n\n &::before {\n $dot-size: 0.75rem;\n $dot-margin: 0.5rem;\n\n content: \"\";\n display: inline-block;\n margin-left: 1rem;\n width: $dot-size;\n height: $dot-size;\n border-radius: 50%;\n background-color: var(--code-header-muted-color);\n box-shadow:\n ($dot-size + $dot-margin) 0 0 var(--code-header-muted-color),\n ($dot-size + $dot-margin) * 2 0 0 var(--code-header-muted-color);\n }\n\n /* the label block */\n span {\n /* label icon */\n i {\n font-size: 1rem;\n margin-right: 0.4rem;\n color: var(--code-header-icon-color);\n\n &.small {\n font-size: 70%;\n }\n }\n\n @at-root [file] #{&} > i {\n position: relative;\n top: 1px; /* center the file icon */\n }\n\n /* label text */\n &::after {\n content: attr(data-label-text);\n font-size: 0.85rem;\n font-weight: 600;\n color: var(--code-header-text-color);\n }\n }\n\n /* clipboard */\n button {\n @extend %cursor-pointer;\n\n border: 1px solid transparent;\n border-radius: $code-radius;\n height: $code-header-height;\n width: $code-header-height;\n padding: 0;\n background-color: inherit;\n\n i {\n color: var(--code-header-icon-color);\n }\n\n &[timeout] {\n &:hover {\n border-color: var(--clipboard-checked-color);\n }\n\n i {\n color: var(--clipboard-checked-color);\n }\n }\n\n &:not([timeout]):hover {\n background-color: rgba(128, 128, 128, 0.37);\n\n i {\n color: white;\n }\n }\n\n &:focus {\n outline: none;\n }\n\n }\n\n}\n\n@media all and (max-width: 576px) {\n .post-content {\n > div[class^='language-'] {\n @include ml-mr(-1.25rem);\n\n border-radius: 0;\n\n .highlight {\n padding-left: 0.25rem;\n }\n\n .code-header {\n border-radius: 0;\n padding-left: 0.4rem;\n padding-right: 0.5rem;\n }\n }\n }\n}\n", + "/*\n * The syntax light mode code snippet colors.\n */\n\n@mixin light-syntax {\n /* see: */\n .highlight .hll { background-color: #ffffcc; }\n .highlight .c { color: #999988; font-style: italic; } /* Comment */\n .highlight .err { color: #a61717; background-color: #e3d2d2; } /* Error */\n .highlight .k { color: #000000; font-weight: bold; } /* Keyword */\n .highlight .o { color: #000000; font-weight: bold; } /* Operator */\n .highlight .cm { color: #999988; font-style: italic; } /* Comment.Multiline */\n .highlight .cp { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Preproc */\n .highlight .c1 { color: #999988; font-style: italic; } /* Comment.Single */\n .highlight .cs { color: #999999; font-weight: bold; font-style: italic; } /* Comment.Special */\n .highlight .gd { color: #d01040; background-color: #ffdddd; } /* Generic.Deleted */\n .highlight .ge { color: #000000; font-style: italic; } /* Generic.Emph */\n .highlight .gr { color: #aa0000; } /* Generic.Error */\n .highlight .gh { color: #999999; } /* Generic.Heading */\n .highlight .gi { color: #008080; background-color: #ddffdd; } /* Generic.Inserted */\n .highlight .go { color: #888888; } /* Generic.Output */\n .highlight .gp { color: #555555; } /* Generic.Prompt */\n .highlight .gs { font-weight: bold; } /* Generic.Strong */\n .highlight .gu { color: #aaaaaa; } /* Generic.Subheading */\n .highlight .gt { color: #aa0000; } /* Generic.Traceback */\n .highlight .kc { color: #000000; font-weight: bold; } /* Keyword.Constant */\n .highlight .kd { color: #000000; font-weight: bold; } /* Keyword.Declaration */\n .highlight .kn { color: #000000; font-weight: bold; } /* Keyword.Namespace */\n .highlight .kp { color: #000000; font-weight: bold; } /* Keyword.Pseudo */\n .highlight .kr { color: #000000; font-weight: bold; } /* Keyword.Reserved */\n .highlight .kt { color: #445588; font-weight: bold; } /* Keyword.Type */\n .highlight .m { color: #009999; } /* Literal.Number */\n .highlight .s { color: #d01040; } /* Literal.String */\n .highlight .na { color: #008080; } /* Name.Attribute */\n .highlight .nb { color: #0086b3; } /* Name.Builtin */\n .highlight .nc { color: #445588; font-weight: bold; } /* Name.Class */\n .highlight .no { color: #008080; } /* Name.Constant */\n .highlight .nd { color: #3c5d5d; font-weight: bold; } /* Name.Decorator */\n .highlight .ni { color: #800080; } /* Name.Entity */\n .highlight .ne { color: #990000; font-weight: bold; } /* Name.Exception */\n .highlight .nf { color: #990000; font-weight: bold; } /* Name.Function */\n .highlight .nl { color: #990000; font-weight: bold; } /* Name.Label */\n .highlight .nn { color: #555555; } /* Name.Namespace */\n .highlight .nt { color: #000080; } /* Name.Tag */\n .highlight .nv { color: #008080; } /* Name.Variable */\n .highlight .ow { color: #000000; font-weight: bold; } /* Operator.Word */\n .highlight .w { color: #bbbbbb; } /* Text.Whitespace */\n .highlight .mf { color: #009999; } /* Literal.Number.Float */\n .highlight .mh { color: #009999; } /* Literal.Number.Hex */\n .highlight .mi { color: #009999; } /* Literal.Number.Integer */\n .highlight .mo { color: #009999; } /* Literal.Number.Oct */\n .highlight .sb { color: #d01040; } /* Literal.String.Backtick */\n .highlight .sc { color: #d01040; } /* Literal.String.Char */\n .highlight .sd { color: #d01040; } /* Literal.String.Doc */\n .highlight .s2 { color: #d01040; } /* Literal.String.Double */\n .highlight .se { color: #d01040; } /* Literal.String.Escape */\n .highlight .sh { color: #d01040; } /* Literal.String.Heredoc */\n .highlight .si { color: #d01040; } /* Literal.String.Interpol */\n .highlight .sx { color: #d01040; } /* Literal.String.Other */\n .highlight .sr { color: #009926; } /* Literal.String.Regex */\n .highlight .s1 { color: #d01040; } /* Literal.String.Single */\n .highlight .ss { color: #990073; } /* Literal.String.Symbol */\n .highlight .bp { color: #999999; } /* Name.Builtin.Pseudo */\n .highlight .vc { color: #008080; } /* Name.Variable.Class */\n .highlight .vg { color: #008080; } /* Name.Variable.Global */\n .highlight .vi { color: #008080; } /* Name.Variable.Instance */\n .highlight .il { color: #009999; } /* Literal.Number.Integer.Long */\n\n /* --- custom light colors --- */\n --highlight-bg-color: #f7f7f7;\n --highlighter-rouge-color: #2f2f2f;\n --highlight-lineno-color: #c2c6cc;\n --inline-code-bg: #f3f3f3;\n --code-header-text-color: #a3a3b1;\n --code-header-muted-color: #ebebeb;\n --code-header-icon-color: #d1d1d1;\n --clipboard-checked-color: #43c743;\n\n [class^=prompt-] {\n --inline-code-bg: #fbfafa;\n --highlighter-rouge-color: rgb(82 82 82);\n }\n\n} /* light-syntax */\n", + "/*\n * The syntax dark mode styles.\n */\n\n@mixin dark-syntax {\n /* syntax highlight colors from https://raw.githubusercontent.com/jwarby/pygments-css/master/monokai.css */\n .highlight pre { background-color: var(--highlight-bg-color); }\n .highlight .hll { background-color: var(--highlight-bg-color); }\n .highlight .c { color: #75715e; } /* Comment */\n .highlight .err { color: #960050; background-color: #1e0010; } /* Error */\n .highlight .k { color: #66d9ef; } /* Keyword */\n .highlight .l { color: #ae81ff; } /* Literal */\n .highlight .n { color: #f8f8f2; } /* Name */\n .highlight .o { color: #f92672; } /* Operator */\n .highlight .p { color: #f8f8f2; } /* Punctuation */\n .highlight .cm { color: #75715e; } /* Comment.Multiline */\n .highlight .cp { color: #75715e; } /* Comment.Preproc */\n .highlight .c1 { color: #75715e; } /* Comment.Single */\n .highlight .cs { color: #75715e; } /* Comment.Special */\n .highlight .ge { color: inherit; font-style: italic; } /* Generic.Emph */\n .highlight .gs { font-weight: bold; } /* Generic.Strong */\n .highlight .kc { color: #66d9ef; } /* Keyword.Constant */\n .highlight .kd { color: #66d9ef; } /* Keyword.Declaration */\n .highlight .kn { color: #f92672; } /* Keyword.Namespace */\n .highlight .kp { color: #66d9ef; } /* Keyword.Pseudo */\n .highlight .kr { color: #66d9ef; } /* Keyword.Reserved */\n .highlight .kt { color: #66d9ef; } /* Keyword.Type */\n .highlight .ld { color: #e6db74; } /* Literal.Date */\n .highlight .m { color: #ae81ff; } /* Literal.Number */\n .highlight .s { color: #e6db74; } /* Literal.String */\n .highlight .na { color: #a6e22e; } /* Name.Attribute */\n .highlight .nb { color: #f8f8f2; } /* Name.Builtin */\n .highlight .nc { color: #a6e22e; } /* Name.Class */\n .highlight .no { color: #66d9ef; } /* Name.Constant */\n .highlight .nd { color: #a6e22e; } /* Name.Decorator */\n .highlight .ni { color: #f8f8f2; } /* Name.Entity */\n .highlight .ne { color: #a6e22e; } /* Name.Exception */\n .highlight .nf { color: #a6e22e; } /* Name.Function */\n .highlight .nl { color: #f8f8f2; } /* Name.Label */\n .highlight .nn { color: #f8f8f2; } /* Name.Namespace */\n .highlight .nx { color: #a6e22e; } /* Name.Other */\n .highlight .py { color: #f8f8f2; } /* Name.Property */\n .highlight .nt { color: #f92672; } /* Name.Tag */\n .highlight .nv { color: #f8f8f2; } /* Name.Variable */\n .highlight .ow { color: #f92672; } /* Operator.Word */\n .highlight .w { color: #f8f8f2; } /* Text.Whitespace */\n .highlight .mf { color: #ae81ff; } /* Literal.Number.Float */\n .highlight .mh { color: #ae81ff; } /* Literal.Number.Hex */\n .highlight .mi { color: #ae81ff; } /* Literal.Number.Integer */\n .highlight .mo { color: #ae81ff; } /* Literal.Number.Oct */\n .highlight .sb { color: #e6db74; } /* Literal.String.Backtick */\n .highlight .sc { color: #e6db74; } /* Literal.String.Char */\n .highlight .sd { color: #e6db74; } /* Literal.String.Doc */\n .highlight .s2 { color: #e6db74; } /* Literal.String.Double */\n .highlight .se { color: #ae81ff; } /* Literal.String.Escape */\n .highlight .sh { color: #e6db74; } /* Literal.String.Heredoc */\n .highlight .si { color: #e6db74; } /* Literal.String.Interpol */\n .highlight .sx { color: #e6db74; } /* Literal.String.Other */\n .highlight .sr { color: #e6db74; } /* Literal.String.Regex */\n .highlight .s1 { color: #e6db74; } /* Literal.String.Single */\n .highlight .ss { color: #e6db74; } /* Literal.String.Symbol */\n .highlight .bp { color: #f8f8f2; } /* Name.Builtin.Pseudo */\n .highlight .vc { color: #f8f8f2; } /* Name.Variable.Class */\n .highlight .vg { color: #f8f8f2; } /* Name.Variable.Global */\n .highlight .vi { color: #f8f8f2; } /* Name.Variable.Instance */\n .highlight .il { color: #ae81ff; } /* Literal.Number.Integer.Long */\n .highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */\n .highlight .gd { color: #f92672; background-color: #561c08; } /* Generic.Deleted & Diff Deleted */\n .highlight .gi { color: #a6e22e; background-color: #0b5858; } /* Generic.Inserted & Diff Inserted */\n\n /* ----- custom styles ------ */\n\n --highlight-bg-color: #252525;\n --highlighter-rouge-color: #de6b18;\n --highlight-lineno-color: #6c6c6d;\n --inline-code-bg: #272822;\n --code-header-text-color: #6a6a6a;\n --code-header-muted-color: rgb(60 60 60);\n --code-header-icon-color: rgb(86 86 86);\n --clipboard-checked-color: #2bcc2b;\n --filepath-text-color: #bdbdbd;\n\n .highlight {\n .gp { color: #818c96; }\n }\n\n pre { color: #bfbfbf; } /* override Bootstrap */\n}\n", + "/*\n The common styles\n*/\n\nhtml {\n @media (prefers-color-scheme: light) {\n &:not([data-mode]),\n [data-mode=light] {\n @include light-scheme;\n }\n\n &[data-mode=dark] {\n @include dark-scheme;\n }\n }\n\n @media (prefers-color-scheme: dark) {\n &:not([data-mode]),\n &[data-mode=dark] {\n @include dark-scheme;\n }\n\n &[data-mode=light] {\n @include light-scheme;\n }\n }\n\n font-size: 16px;\n}\n\nbody {\n line-height: 1.75rem;\n background: var(--body-bg);\n color: var(--text-color);\n -webkit-font-smoothing: antialiased;\n font-family: 'Source Sans Pro', 'Microsoft Yahei', sans-serif;\n}\n\n/* --- Typography --- */\n\nh1 {\n @extend %heading;\n\n font-size: 1.9rem;\n}\n\nh2 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.5rem;\n}\n\nh3 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.2rem;\n}\n\nh4 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.15rem;\n}\n\nh5 {\n @extend %heading;\n @extend %section;\n @extend %anchor;\n\n font-size: 1.1rem;\n}\n\nol,\nul {\n ol,\n ul {\n margin-bottom: 1rem;\n }\n}\n\na {\n @extend %link-color;\n}\n\nimg {\n max-width: 100%;\n height: auto;\n}\n\nblockquote {\n border-left: 5px solid var(--blockquote-border-color);\n padding-left: 1rem;\n color: var(--blockquote-text-color);\n\n &[class^=\"prompt-\"] {\n display: flex;\n border-left: 0;\n border-radius: 6px;\n padding: 0.75rem 1.2rem;\n color: var(--prompt-text-color);\n\n &::before {\n margin-right: 1rem;\n font-family: \"Font Awesome 5 Free\";\n text-align: center;\n width: 1.25rem;\n }\n\n p:last-child {\n margin-bottom: 0rem;\n }\n }\n\n @include prompt(\"tip\", \"\\f0eb\", 400);\n\n @include prompt(\"info\", \"\\f06a\");\n\n @include prompt(\"warning\", \"\\f06a\");\n\n @include prompt(\"danger\", \"\\f071\");\n}\n\nkbd {\n font-family: inherit;\n display: inline-block;\n vertical-align: middle;\n line-height: 1.3rem;\n min-width: 1.75rem;\n text-align: center;\n margin: 0 0.3rem;\n padding-top: 0.1rem;\n color: var(--kbd-text-color);\n background-color: var(--kbd-bg-color);\n border-radius: 0.25rem;\n border: solid 1px var(--kbd-wrap-color);\n box-shadow: inset 0 -2px 0 var(--kbd-wrap-color);\n}\n\nfooter {\n position: absolute;\n bottom: 0;\n padding: 0 1rem;\n height: $footer-height;\n font-size: 0.8rem;\n\n > div.d-flex {\n line-height: 1.2rem;\n width: 95%;\n max-width: 1045px;\n border-top: 1px solid var(--main-border-color);\n margin-bottom: 1rem;\n\n > div {\n width: 350px;\n }\n }\n\n a {\n @extend %text-color;\n\n &:link {\n @include no-text-decoration;\n }\n\n &:hover {\n @extend %link-hover;\n\n @include no-text-decoration;\n }\n }\n\n .footer-right {\n text-align: right;\n }\n}\n\ni { /* fontawesome icons */\n &.far,\n &.fas {\n @extend %no-cursor;\n }\n}\n\n@keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\nimg[data-src] {\n margin: 0.5rem 0;\n\n &[data-loaded=true] {\n animation: fade-in linear 0.5s;\n }\n\n &.left {\n float: left;\n margin: 0.75rem 1rem 1rem 0;\n }\n\n &.right {\n float: right;\n margin: 0.75rem 0 1rem 1rem;\n }\n\n &.shadow {\n filter: drop-shadow(2px 4px 6px rgba(0, 0, 0, 0.08));\n box-shadow: none !important; /* cover the Bootstrap 4.6.1 styles */\n }\n\n @extend %img-caption;\n}\n\n/* --- Panels --- */\n\n.access {\n top: 2rem;\n transition: top 0.2s ease-in-out;\n margin-right: 1.5rem;\n margin-top: 3rem;\n margin-bottom: 4rem;\n\n &:only-child {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n }\n\n > div {\n padding-left: 1rem;\n border-left: 1px solid var(--main-border-color);\n\n &:not(:last-child) {\n margin-bottom: 4rem;\n }\n }\n\n .post-content {\n font-size: 0.9rem;\n }\n\n}\n\n#panel-wrapper {\n /* the headings */\n .panel-heading {\n @include label(inherit);\n }\n\n .post-tag {\n display: inline-block;\n line-height: 1rem;\n font-size: 0.85rem;\n background: none;\n border: 1px solid var(--btn-border-color);\n border-radius: 0.8rem;\n padding: 0.3rem 0.5rem;\n margin: 0 0.35rem 0.5rem 0;\n\n &:hover {\n background-color: #2a408e;\n border-color: #2a408e;\n color: #fff;\n transition: none;\n }\n }\n\n [data-topbar-visible=true] & > div {\n top: 6rem;\n }\n}\n\n#access-lastmod {\n li {\n height: 1.8rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n list-style: none;\n }\n\n a {\n &:hover {\n @extend %link-hover;\n }\n\n @extend %no-bottom-border;\n\n color: inherit;\n }\n\n}\n\n.footnotes > ol {\n padding-left: 2rem;\n margin-top: 0.5rem;\n\n > li {\n &:not(:last-child) {\n margin-bottom: 0.3rem;\n }\n\n > p {\n margin-left: 0.25em;\n margin-top: 0;\n margin-bottom: 0;\n }\n\n /* [scroll-focus] added by `smooth-scroll.js` */\n &:target:not([scroll-focus]),\n &[scroll-focus=true] > p {\n background-color: var(--footnote-target-bg);\n width: fit-content;\n -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */\n transition: background-color 1.5s ease-in-out;\n }\n }\n}\n\n.footnote {\n @at-root a#{&} {\n @include ml-mr(1px);\n @include pl-pr(2px);\n\n border-bottom-style: none !important;\n -webkit-transition: background-color 1.5s ease-in-out; /* Safari prior 6.1 */\n transition: background-color 1.5s ease-in-out;\n }\n\n /* [scroll-focus] added by `smooth-scroll.js` */\n @at-root sup:target:not([scroll-focus]),\n sup[scroll-focus=true] > a#{&} {\n background-color: var(--footnote-target-bg);\n }\n}\n\n.reversefootnote {\n @at-root a#{&} {\n font-size: 0.6rem;\n line-height: 1;\n position: relative;\n bottom: 0.25em;\n margin-left: 0.25em;\n border-bottom-style: none !important;\n }\n}\n\n/* --- Begin of Markdown table style --- */\n\n/* it will be created by Liquid */\n.table-wrapper {\n overflow-x: auto;\n margin-bottom: 1.5rem;\n\n > table {\n min-width: 100%;\n overflow-x: auto;\n border-spacing: 0;\n\n thead {\n border-bottom: solid 2px rgba(210, 215, 217, 0.75);\n\n th {\n @extend %table-cell;\n }\n }\n\n tbody {\n tr {\n border-bottom: 1px solid var(--tb-border-color);\n\n &:nth-child(2n) {\n background-color: var(--tb-even-bg);\n }\n\n &:nth-child(2n + 1) {\n background-color: var(--tb-odd-bg);\n }\n\n td {\n @extend %table-cell;\n }\n }\n } /* tbody */\n }/* table */\n}\n\n/* --- post --- */\n\n.post {\n h1 {\n margin-top: 3rem;\n margin-bottom: 1.5rem;\n }\n\n a {\n &.img-link {\n @extend %no-cursor;\n }\n\n /* created by `_includes/img-extra.html` */\n &.popup {\n cursor: zoom-in;\n\n > img[data-src]:not(.normal):not(.left):not(.right) {\n @include align-center;\n }\n }\n\n &:hover {\n code {\n @extend %link-hover;\n }\n }\n } /* a */\n\n}\n\n.pageviews .fa-spinner {\n font-size: 80%;\n}\n\n.post-meta {\n font-size: 0.85rem;\n word-spacing: 1px;\n\n a {\n &:not(:last-child) {\n margin-right: 2px;\n }\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n em {\n @extend %normal-font-style;\n }\n}\n\n.post-content {\n font-size: 1.08rem;\n line-height: 1.8;\n margin-top: 2rem;\n overflow-wrap: break-word;\n word-wrap: break-word;\n\n a {\n &:not(.img-link) {\n @extend %link-underline;\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n &.img-link {\n @extend %img-caption;\n }\n\n }\n\n ul {\n /* attribute 'hide-bullet' was added by liquid */\n .task-list-item[hide-bullet] {\n list-style-type: none;\n\n > i { /* checkbox icon */\n margin: 0 0.4rem 0.2rem -1.4rem;\n vertical-align: middle;\n color: var(--checkbox-color);\n\n &.checked {\n color: var(--checkbox-checked-color);\n }\n }\n\n }\n\n input[type=checkbox] {\n margin: 0 0.5rem 0.2rem -1.3rem;\n vertical-align: middle;\n }\n\n } /* ul */\n\n > ol,\n > ul {\n padding-left: 2rem;\n\n li {\n ol,\n ul { /* sub list */\n padding-left: 2rem;\n margin-top: 0.3rem;\n }\n }\n\n }\n\n > ol {\n li {\n padding-left: 0.25em;\n }\n }\n\n dl > dd {\n margin-left: 1rem;\n }\n\n} /* .post-content */\n\n.tag:hover {\n @extend %tag-hover;\n}\n\n.post-tag {\n display: inline-block;\n min-width: 2rem;\n text-align: center;\n background: var(--tag-bg);\n border-radius: 0.3rem;\n padding: 0 0.4rem;\n color: inherit;\n line-height: 1.3rem;\n\n &:not(:last-child) {\n margin-right: 0.2rem;\n }\n\n &:hover {\n @extend %tag-hover;\n\n border-bottom: none;\n text-decoration: none;\n color: #d2603a;\n }\n}\n\n/* --- buttons --- */\n.btn-lang {\n border: 1px solid !important;\n padding: 1px 3px;\n border-radius: 3px;\n color: var(--link-color);\n\n &:focus {\n box-shadow: none;\n }\n}\n\n/* --- Effects classes --- */\n\n.loaded {\n display: block !important;\n\n @at-root .d-flex#{&} {\n display: flex !important;\n }\n}\n\n.unloaded {\n display: none !important;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.hidden {\n visibility: hidden !important;\n}\n\n.flex-grow-1 {\n -ms-flex-positive: 1 !important;\n flex-grow: 1 !important;\n}\n\n.btn-box-shadow {\n box-shadow: 0 0 8px 0 var(--btn-box-shadow) !important;\n}\n\n.no-text-decoration {\n @include no-text-decoration;\n}\n\n.tooltip-inner { /* Overrided BS4 Tooltip */\n font-size: 0.7rem;\n max-width: 220px;\n text-align: left;\n}\n\n.disabled {\n color: rgb(206, 196, 196);\n pointer-events: auto;\n cursor: not-allowed;\n}\n\n.hide-border-bottom {\n border-bottom: none !important;\n}\n\n.input-focus {\n box-shadow: none;\n border-color: var(--input-focus-border-color) !important;\n background: center !important;\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n\n/* --- Overriding --- */\n\n/* magnific-popup */\nfigure .mfp-title {\n text-align: center;\n padding-right: 0;\n margin-top: 0.5rem;\n}\n\n/* mermaid */\n.mermaid {\n text-align: center;\n}\n\n/* --- sidebar layout --- */\n\n$sidebar-display: \"sidebar-display\";\n\n#sidebar {\n @include pl-pr(0);\n\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n overflow-y: auto;\n width: $sidebar-width;\n z-index: 99;\n background: var(--sidebar-bg);\n\n /* Hide scrollbar for Chrome, Safari and Opera */\n &::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for IE, Edge and Firefox */\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n\n a {\n @extend %sidebar-links;\n\n &:hover {\n @include no-text-decoration;\n\n color: var(--sidebar-active-color) !important;\n }\n }\n\n #avatar {\n > a {\n display: block;\n width: 6rem;\n height: 6rem;\n border-radius: 50%;\n border: 2px solid rgba(222, 222, 222, 0.7);\n overflow: hidden;\n transform: translateZ(0); /* fixed the zoom in Safari */\n -webkit-transition: border-color 0.35s ease-in-out;\n -moz-transition: border-color 0.35s ease-in-out;\n transition: border-color 0.35s ease-in-out;\n\n &:hover {\n border-color: white;\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n -webkit-transition: transform 0.5s;\n -moz-transition: transform 0.5s;\n transition: transform 0.5s;\n\n &:hover {\n -ms-transform: scale(1.2);\n -moz-transform: scale(1.2);\n -webkit-transform: scale(1.2);\n transform: scale(1.2);\n }\n }\n } /* #avatar */\n\n .site-title {\n a {\n @extend %clickable-transition;\n\n font-weight: 900;\n font-size: 1.5rem;\n letter-spacing: 0.5px;\n color: rgba(134, 133, 133, 99%);\n }\n }\n\n .site-subtitle {\n font-size: 95%;\n color: var(--sidebar-muted-color);\n line-height: 1.2rem;\n word-spacing: 1px;\n margin: 0.5rem 1.5rem 0.5rem 1.5rem;\n min-height: 3rem; /* avoid vertical shifting in multi-line words */\n user-select: none;\n }\n\n .nav-link {\n border-radius: 0;\n font-size: 0.95rem;\n font-weight: 600;\n letter-spacing: 1px;\n display: table-cell;\n vertical-align: middle;\n }\n\n .nav-item {\n text-align: center;\n display: table;\n height: $tab-height;\n\n &.active {\n .nav-link {\n color: var(--sidebar-active-color);\n }\n }\n\n &:not(.active) > a {\n @extend %clickable-transition;\n }\n }\n\n ul {\n height: $tab-height * $tab-count;\n margin-bottom: 2rem;\n padding-left: 0;\n\n li {\n width: 100%;\n\n &:last-child {\n a {\n position: relative;\n left: $cursor-width / 2;\n width: 100%;\n }\n\n &::after { /* the cursor */\n display: table;\n visibility: hidden;\n content: \"\";\n position: relative;\n right: 1px;\n width: $cursor-width;\n height: $tab-cursor-height;\n border-radius: 1px;\n background-color: var(--nav-cursor-color);\n pointer-events: none;\n }\n }\n } /* li */\n\n @mixin fix-cursor($top) {\n top: $top;\n visibility: visible;\n }\n\n @for $i from 1 through $tab-count {\n $offset: $tab-count - $i;\n $top: -$offset * $tab-height + ($tab-height - $tab-cursor-height) / 2;\n\n @if $i < $tab-count {\n > li.active:nth-child(#{$i}),\n > li.nav-item:nth-child(#{$i}):hover {\n ~ li:last-child::after {\n @include fix-cursor($top);\n }\n }\n } @else {\n > li.active:nth-child(#{$i}):last-child::after,\n > li.nav-item:nth-child(#{$i}):last-child:hover::after {\n @include fix-cursor($top);\n }\n }\n\n } /* @for */\n\n } /* ul */\n\n .sidebar-bottom {\n margin-bottom: 2.1rem;\n\n @include ml-mr(auto);\n @include pl-pr(1rem);\n\n %icon {\n width: 2.4rem;\n text-align: center;\n }\n\n a {\n @extend %icon;\n @extend %clickable-transition;\n }\n\n i {\n font-size: 1.2rem;\n line-height: 1.75rem;\n }\n\n .mode-toggle {\n padding: 0;\n border: 0;\n margin-bottom: 1px;\n background-color: transparent;\n\n @extend %icon;\n @extend %sidebar-links;\n\n > i {\n @extend %clickable-transition;\n }\n\n &:hover > i {\n color: var(--sidebar-active-color);\n }\n }\n\n .icon-border {\n @extend %no-cursor;\n\n background-color: var(--sidebar-muted-color);\n content: \"\";\n width: 3px;\n height: 3px;\n border-radius: 50%;\n }\n\n } /* .sidebar-bottom */\n\n} /* #sidebar */\n\n@media (hover: hover) {\n #sidebar ul > li:last-child::after {\n -webkit-transition: top 0.5s ease;\n -moz-transition: top 0.5s ease;\n -o-transition: top 0.5s ease;\n transition: top 0.5s ease;\n }\n}\n\n.profile-wrapper {\n margin-top: 2rem;\n width: 100%;\n}\n\n#search-result-wrapper {\n display: none;\n height: 100%;\n overflow: auto;\n\n .post-content {\n margin-top: 2rem;\n }\n}\n\n/* --- top-bar --- */\n\n#topbar-wrapper {\n height: $topbar-height;\n position: fixed;\n top: 0;\n left: $sidebar-width; /* same as sidebar width */\n right: 0;\n transition: top 0.2s ease-in-out;\n z-index: 50;\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n background-color: var(--topbar-wrapper-bg);\n\n [data-topbar-visible=false] & {\n top: -$topbar-height; /* same as topbar height. */\n }\n}\n\n#topbar {\n i { /* icons */\n color: #999;\n }\n\n #breadcrumb {\n font-size: 1rem;\n color: gray;\n padding-left: 0.5rem;\n\n a:hover {\n @extend %link-hover;\n }\n\n span {\n &:not(:last-child) {\n &::after {\n content: \"›\";\n padding: 0 0.3rem;\n }\n }\n }\n }\n} /* #topbar */\n\n#sidebar-trigger,\n#search-trigger {\n display: none;\n}\n\n#search-wrapper {\n display: flex;\n width: 85%;\n border-radius: 1rem;\n border: 1px solid var(--search-wrapper-border-color);\n background: var(--search-wrapper-bg);\n padding: 0 0.5rem;\n\n i {\n z-index: 2;\n font-size: 0.9rem;\n color: var(--search-icon-color);\n }\n}\n\n#search-cancel { /* 'Cancel' link */\n color: var(--link-color);\n margin-left: 1rem;\n display: none;\n\n @extend %cursor-pointer;\n}\n\n#search-input {\n background: center;\n border: 0;\n border-radius: 0;\n padding: 0.18rem 0.3rem;\n color: var(--text-color);\n height: auto;\n\n &:focus {\n box-shadow: none;\n background: center;\n\n &.form-control {\n &::-webkit-input-placeholder { @include input-placeholder; }\n &::-moz-placeholder { @include input-placeholder; }\n &:-ms-input-placeholder { @include input-placeholder; }\n &::placeholder { @include input-placeholder; }\n }\n }\n}\n\n#search-hints {\n padding: 0 1rem;\n\n h4 {\n margin-bottom: 1.5rem;\n }\n\n .post-tag {\n display: inline-block;\n line-height: 1rem;\n font-size: 1rem;\n background: var(--search-tag-bg);\n border: none;\n padding: 0.5rem;\n margin: 0 1.25rem 1rem 0;\n\n &::before {\n content: \"#\";\n color: var(--text-muted-color);\n padding-right: 0.2rem;\n }\n\n @extend %link-color;\n }\n}\n\n#search-results {\n padding-bottom: 6rem;\n\n a {\n &:hover {\n @extend %link-hover;\n }\n\n @extend %link-color;\n @extend %no-bottom-border;\n @extend %heading;\n\n font-size: 1.4rem;\n line-height: 2.5rem;\n }\n\n > div {\n width: 100%;\n\n &:not(:last-child) {\n margin-bottom: 1rem;\n }\n\n i { /* icons */\n color: #818182;\n margin-right: 0.15rem;\n font-size: 80%;\n }\n\n > p {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n }\n} /* #search-results */\n\n#topbar-title {\n display: none;\n font-size: 1.1rem;\n font-weight: 600;\n font-family: sans-serif;\n color: var(--topbar-text-color);\n text-align: center;\n width: 70%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n}\n\n#core-wrapper {\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height}) !important;\n\n .categories,\n #tags,\n #archives {\n a:not(:hover) {\n @extend %no-bottom-border;\n }\n }\n}\n\n#mask {\n display: none;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100%;\n width: 100%;\n z-index: 1;\n\n @at-root [#{$sidebar-display}] & {\n display: block !important;\n }\n}\n\n/* --- main wrapper --- */\n\n#main-wrapper {\n background-color: var(--main-wrapper-bg);\n position: relative;\n min-height: 100vh;\n padding-bottom: $footer-height;\n\n @include pl-pr(0);\n}\n\n#main {\n .row:first-child {\n > div {\n &:nth-child(1),\n &:nth-child(2) {\n margin-top: $topbar-height; /* same as the height of topbar */\n }\n\n &:first-child {\n /* 3rem for topbar, 6rem for footer */\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height});\n }\n }\n }\n\n div.row:first-of-type:last-of-type { /* alone */\n margin-bottom: 4rem;\n }\n}\n\n#topbar-wrapper.row,\n#main > .row,\n#search-result-wrapper > .row {\n @include ml-mr(0);\n}\n\n/* --- button back-to-top --- */\n\n#back-to-top {\n $size: 2.7em;\n\n display: none;\n z-index: 1;\n cursor: pointer;\n position: fixed;\n background: var(--button-bg);\n color: var(--btn-backtotop-color);\n padding: 0;\n width: $size;\n height: $size;\n border-radius: 50%;\n border: 1px solid var(--btn-backtotop-border-color);\n transition: transform 0.2s ease-out;\n -webkit-transition: transform 0.2s ease-out;\n\n i {\n line-height: $size;\n position: relative;\n bottom: 2px;\n }\n}\n\n#back-to-top:hover {\n transform: translate3d(0, -5px, 0);\n -webkit-transform: translate3d(0, -5px, 0);\n}\n\n/*\n Responsive Design:\n\n {sidebar, content, panel} >= 1120px screen width\n {sidebar, content} >= 850px screen width\n {content} <= 849px screen width\n\n*/\n\n@media all and (max-width: 576px) {\n\n $footer-height: $footer-height-mobile; /* overwrite */\n\n footer {\n height: $footer-height;\n\n > div.d-flex {\n width: 100%;\n padding: 1.5rem 0;\n margin-bottom: 0.3rem;\n flex-wrap: wrap;\n -ms-flex-pack: distribute !important;\n justify-content: space-around !important;\n }\n\n .footer-left,\n .footer-right {\n text-align: center;\n }\n }\n\n #main > div.row:first-child > div:first-child {\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height});\n }\n\n #core-wrapper {\n min-height: calc(100vh - #{$topbar-height} - #{$footer-height} - #{$bottom-min-height}) !important;\n\n h1 {\n margin-top: 2.2rem;\n font-size: 1.75rem;\n }\n\n .post-content {\n > blockquote[class^=prompt-] {\n @include ml-mr(-1.25rem);\n border-radius: 0;\n }\n }\n\n }\n\n #avatar > a {\n width: 5rem;\n height: 5rem;\n }\n\n .site-subtitle {\n @include ml-mr(1.8rem);\n }\n\n #main-wrapper {\n padding-bottom: $footer-height;\n }\n\n}\n\n/* hide sidebar and panel */\n@media all and (max-width: 849px) {\n @mixin slide($append: null) {\n $basic: transform 0.4s ease;\n @if $append {\n -webkit-transition: $basic, $append;\n transition: $basic, $append;\n } @else {\n -webkit-transition: $basic;\n transition: $basic;\n }\n }\n\n html,\n body {\n overflow-x: hidden;\n }\n\n [#{$sidebar-display}] {\n #sidebar {\n transform: translateX(0);\n }\n\n #topbar-wrapper,\n #main-wrapper {\n transform: translateX(#{$sidebar-width});\n }\n }\n\n #sidebar {\n @include slide;\n\n transform: translateX(-#{$sidebar-width}); /* hide */\n -webkit-transform: translateX(-#{$sidebar-width});\n\n .cursor {\n -webkit-transition: none;\n -moz-transition: none;\n transition: none;\n }\n }\n\n #main-wrapper {\n @include slide;\n\n padding-top: $topbar-height;\n }\n\n #search-result-wrapper {\n width: 100%;\n }\n\n #breadcrumb,\n #search-wrapper {\n display: none;\n }\n\n #topbar-wrapper {\n @include slide(top 0.2s ease);\n\n left: 0;\n }\n\n #main > div.row:first-child > div:nth-child(1),\n #main > div.row:first-child > div:nth-child(2) {\n margin-top: 0;\n }\n\n #topbar-title,\n #sidebar-trigger,\n #search-trigger {\n display: block;\n }\n\n #search-wrapper {\n &.loaded ~ a {\n margin-right: 1rem;\n }\n }\n\n #search-input {\n margin-left: 0;\n width: 95%;\n }\n\n #search-result-wrapper .post-content {\n letter-spacing: 0;\n }\n\n #tags {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n\n h1.dynamic-title {\n display: none;\n\n ~ .post-content {\n margin-top: 3rem;\n }\n }\n\n} /* max-width: 849px */\n\n@media all and (max-width: 849px) and (orientation: portrait) {\n [data-topbar-visible=false] #topbar-wrapper {\n top: 0;\n }\n}\n\n/* Phone & Pad */\n@media all and (min-width: 577px) and (max-width: 1199px) {\n footer > .d-flex > div {\n width: 312px;\n }\n}\n\n/* Sidebar is visible */\n@media all and (min-width: 850px) {\n /* Solved jumping scrollbar */\n html {\n overflow-y: scroll;\n }\n\n #main-wrapper {\n margin-left: $sidebar-width;\n }\n\n .profile-wrapper {\n margin-top: 3rem;\n }\n\n #search-wrapper {\n width: 22%;\n min-width: 150px;\n }\n\n #search-hints {\n display: none;\n }\n\n #search-result-wrapper {\n margin-top: 3rem;\n }\n\n div.post-content .table-wrapper > table {\n min-width: 70%;\n }\n\n /* button 'back-to-Top' position */\n #back-to-top {\n bottom: 5.5rem;\n right: 1.2rem;\n }\n\n #topbar-title {\n text-align: left;\n }\n\n footer > div.d-flex {\n width: 92%;\n }\n\n}\n\n/* Pad horizontal */\n@media all and (min-width: 992px) and (max-width: 1199px) {\n #main .col-lg-11 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 96%;\n flex: 0 0 96%;\n max-width: 96%;\n }\n}\n\n/* Compact icons in sidebar & panel hidden */\n@media all and (min-width: 850px) and (max-width: 1199px) {\n #sidebar {\n width: $sidebar-width-small;\n\n .site-subtitle {\n margin-left: 1rem;\n margin-right: 1rem;\n }\n\n .sidebar-bottom {\n a,\n span {\n width: 2rem;\n }\n\n .icon-border {\n left: -3px;\n }\n }\n }\n\n #topbar-wrapper {\n left: 210px;\n }\n\n #search-results > div {\n max-width: 700px;\n }\n\n .site-title {\n font-size: 1.3rem;\n margin-left: 0 !important;\n }\n\n .site-subtitle {\n @include ml-mr(1rem);\n\n font-size: 90%;\n }\n\n #main-wrapper {\n margin-left: 210px;\n }\n\n #breadcrumb {\n width: 65%;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n }\n\n}\n\n/* panel hidden */\n@media all and (max-width: 1199px) {\n #panel-wrapper {\n display: none;\n }\n\n #topbar {\n padding: 0;\n }\n\n #main > div.row {\n -webkit-box-pack: center !important;\n -ms-flex-pack: center !important;\n justify-content: center !important;\n }\n}\n\n/* --- desktop mode, both sidebar and panel are visible --- */\n\n@media all and (min-width: 1200px) {\n #main > div.row > div.col-xl-8 {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n padding-left: 3%;\n }\n\n #topbar {\n padding: 0;\n max-width: 1070px;\n }\n\n #panel-wrapper {\n max-width: $panel-max-width;\n }\n\n #back-to-top {\n bottom: 6.5rem;\n right: 4.3rem;\n }\n\n #search-input {\n -webkit-transition: all 0.3s ease-in-out;\n transition: all 0.3s ease-in-out;\n }\n\n #search-results > div {\n width: 46%;\n\n &:nth-child(odd) {\n margin-right: 1.5rem;\n }\n\n &:nth-child(even) {\n margin-left: 1.5rem;\n }\n\n &:last-child:nth-child(odd) {\n position: relative;\n right: 24.3%;\n }\n }\n\n .post-content {\n font-size: 1.03rem;\n }\n\n footer > div.d-felx {\n width: 85%;\n }\n\n}\n\n@media all and (min-width: 1400px) {\n #main > div.row {\n padding-left: calc((100% - #{$main-content-max-width}) / 2);\n\n > div.col-xl-8 {\n max-width: 850px;\n }\n }\n\n #search-result-wrapper {\n padding-right: 2rem;\n\n > div {\n max-width: 1110px;\n }\n }\n\n}\n\n@media all and (min-width: 1400px) and (max-width: 1650px) {\n #topbar {\n padding-right: 2rem;\n }\n}\n\n@media all and (min-width: 1650px) {\n #breadcrumb {\n padding-left: 0;\n }\n\n #main > div.row > div.col-xl-8 {\n padding-left: 0;\n\n > div:first-child {\n padding-left: 0.55rem !important;\n padding-right: 1.9rem !important;\n }\n }\n\n #main-wrapper {\n margin-left: $sidebar-width-large;\n }\n\n #panel-wrapper {\n margin-left: calc((100% - #{$main-content-max-width}) / 10);\n }\n\n #topbar-wrapper {\n left: $sidebar-width-large;\n }\n\n #topbar {\n max-width: #{$main-content-max-width};\n }\n\n #search-wrapper {\n margin-right: 3%;\n }\n\n #sidebar {\n width: $sidebar-width-large;\n\n .profile-wrapper {\n margin-top: 4rem;\n margin-bottom: 1rem;\n\n &.text-center {\n text-align: left !important;\n }\n\n %profile-ml {\n margin-left: 4.5rem;\n }\n\n #avatar {\n @extend %profile-ml;\n\n > a {\n width: 6.2rem;\n height: 6.2rem;\n\n &.mx-auto {\n margin-left: 0 !important;\n }\n }\n }\n\n .site-title {\n @extend %profile-ml;\n\n a {\n font-size: 1.7rem;\n letter-spacing: 1px;\n }\n }\n\n .site-subtitle {\n @extend %profile-ml;\n\n word-spacing: 0;\n margin-top: 0.3rem;\n }\n\n } /* .profile-wrapper (min-width: 1650px) */\n\n ul {\n padding-left: 2.5rem;\n\n > li:last-child {\n > a {\n position: static;\n }\n }\n\n .nav-item {\n text-align: left;\n\n .nav-link {\n > span {\n letter-spacing: 2px;\n }\n\n > i {\n &.unloaded {\n display: inline-block !important;\n }\n }\n }\n\n }\n }\n\n .sidebar-bottom {\n padding-left: 3.5rem;\n width: 100%;\n\n $icon-block-size: 2rem;\n\n &.justify-content-center {\n -webkit-box-pack: start !important;\n -ms-flex-pack: start !important;\n justify-content: flex-start !important;\n }\n\n > span,\n > button.mode-toggle,\n > a {\n @include ml-mr(0.15rem);\n\n height: $icon-block-size;\n margin-bottom: 0.5rem; /* wrap line */\n }\n\n i {\n background-color: var(--sidebar-btn-bg);\n font-size: 1rem;\n width: $icon-block-size;\n height: $icon-block-size;\n border-radius: 50%;\n position: relative;\n\n &::before {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n .icon-border {\n top: 0.9rem;\n }\n\n } /* .sidebar-bottom */\n\n } /* #sidebar */\n\n footer > div.d-flex {\n width: 92%;\n max-width: 1140px;\n }\n\n #search-result-wrapper {\n > div {\n max-width: #{$main-content-max-width};\n }\n }\n\n} /* min-width: 1650px */\n\n@media all and (min-width: 1700px) {\n #topbar-wrapper {\n /* 100% - 350px - (1920px - 350px); */\n padding-right: calc(100% - #{$sidebar-width-large} - (1920px - #{$sidebar-width-large}));\n }\n\n #topbar {\n max-width: calc(#{$main-content-max-width} + 20px);\n }\n\n #main > div.row {\n padding-left: calc((100% - #{$main-content-max-width} - 2%) / 2);\n }\n\n #panel-wrapper {\n margin-left: 3%;\n }\n\n footer {\n padding-left: 0;\n padding-right: calc(100% - #{$sidebar-width-large} - 1180px);\n }\n\n #back-to-top {\n right: calc(100% - 1920px + 15rem);\n }\n\n}\n\n@media (min-width: 1920px) {\n #main > div.row {\n padding-left: 190px;\n }\n\n #search-result-wrapper {\n padding-right: calc(100% - #{$sidebar-width-large} - 1180px);\n }\n\n #panel-wrapper {\n margin-left: 41px;\n }\n}\n", + "/*\n Style for Homepage\n*/\n\n.pagination {\n color: var(--btn-patinator-text-color);\n font-family: 'Lato', sans-serif;\n\n a:hover {\n text-decoration: none;\n }\n\n .page-item {\n .page-link {\n color: inherit;\n width: 2.5rem;\n height: 2.5rem;\n padding: 0;\n display: -webkit-box;\n -webkit-box-pack: center;\n -webkit-box-align: center;\n border-radius: 50%;\n border: 1px solid var(--btn-paginator-border-color);\n background-color: var(--button-bg);\n\n &:hover {\n background-color: var(--btn-paginator-hover-color);\n }\n }\n\n &.active {\n .page-link {\n background-color: var(--btn-paginator-hover-color);\n color: var(--btn-text-color);\n }\n }\n\n &.disabled {\n cursor: not-allowed;\n\n .page-link {\n color: rgba(108, 117, 125, 0.57);\n border-color: var(--btn-paginator-border-color);\n background-color: var(--button-bg);\n }\n }\n\n &:first-child .page-link,\n &:last-child .page-link {\n border-radius: 50%;\n }\n } // .page-item\n\n} // .pagination\n\n#post-list {\n margin-top: 1rem;\n padding-right: 0.5rem;\n\n .post-preview {\n padding-top: 1.5rem;\n padding-bottom: 1rem;\n border-bottom: 1px solid var(--main-border-color);\n\n a:hover {\n @extend %link-hover;\n }\n\n h1 {\n font-size: 1.4rem;\n margin: 0;\n }\n\n .post-meta {\n i {\n font-size: 0.73rem;\n\n &:not(:first-child) {\n margin-left: 1.2rem;\n }\n }\n\n em {\n @extend %normal-font-style;\n }\n }\n\n .post-content {\n margin-top: 0.6rem;\n margin-bottom: 0.6rem;\n color: var(--post-list-text-color);\n\n > p {\n /* Make preview shorter on the homepage */\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n }\n\n .pin {\n > i {\n transform: rotate(45deg);\n padding-left: 3px;\n color: var(--pin-color);\n }\n\n > span {\n display: none;\n }\n }\n\n } // .post-preview\n} // #post-list\n\n/* Hide SideBar and TOC */\n@media all and (max-width: 830px) {\n .pagination {\n justify-content: space-evenly;\n\n .page-item {\n &:not(:first-child):not(:last-child) {\n display: none;\n }\n\n }\n\n }\n}\n\n/* Sidebar is visible */\n@media all and (min-width: 831px) {\n #post-list {\n margin-top: 1.5rem;\n\n .post-preview .post-meta {\n .pin {\n background: var(--pin-bg);\n border-radius: 5px;\n line-height: 1.4rem;\n height: 1.3rem;\n margin-top: 3px;\n padding-left: 1px;\n padding-right: 6px;\n\n > span {\n display: inline;\n }\n }\n }\n }\n\n .pagination {\n font-size: 0.85rem;\n\n .page-item {\n &:not(:last-child) {\n margin-right: 0.7rem;\n }\n\n .page-link {\n width: 2rem;\n height: 2rem;\n }\n\n }\n\n .page-index {\n display: none;\n }\n\n } // .pagination\n\n}\n\n/* Pannel hidden */\n@media all and (max-width: 1200px) {\n #post-list {\n padding-right: 0;\n }\n}\n", + "/*\n Post-specific style\n*/\n\n@mixin btn-sharing-color($light-color, $important: false) {\n @if $important {\n color: var(--btn-share-color, $light-color) !important;\n } @else {\n color: var(--btn-share-color, $light-color);\n }\n}\n\n@mixin btn-post-nav {\n width: 50%;\n position: relative;\n border-color: var(--btn-border-color);\n}\n\n@mixin dot($pl: 0.25rem, $pr: 0.25rem) {\n content: \"\\2022\";\n padding-left: $pl;\n padding-right: $pr;\n}\n\n%text-color {\n color: var(--text-color);\n}\n\nh1 + .post-meta {\n span + span::before {\n @include dot;\n }\n\n em {\n @extend %text-color;\n\n a {\n @extend %text-color;\n }\n }\n}\n\nimg.preview-img {\n margin-top: 3.75rem;\n margin-bottom: 0;\n border-radius: 6px;\n\n &.bg[data-loaded=true] {\n background: var(--preview-img-bg);\n }\n}\n\n.post-tail-wrapper {\n margin-top: 6rem;\n border-bottom: 1px double var(--main-border-color);\n font-size: 0.85rem;\n\n .post-meta a:not(:hover) {\n @extend %link-underline;\n }\n}\n\n.post-tags {\n line-height: 2rem;\n}\n\n.post-navigation {\n padding-top: 3rem;\n padding-bottom: 4rem;\n\n .btn {\n @include btn-post-nav;\n\n color: var(--link-color);\n\n &:hover {\n background: #2a408e;\n color: #fff;\n border-color: #2a408e;\n }\n\n &.disabled {\n @include btn-post-nav;\n\n pointer-events: auto;\n cursor: not-allowed;\n background: none;\n color: gray;\n\n &:hover {\n border-color: none;\n }\n }\n\n &.btn-outline-primary.disabled:focus {\n box-shadow: none;\n }\n\n &::before {\n color: var(--text-muted-color);\n font-size: 0.65rem;\n text-transform: uppercase;\n content: attr(prompt);\n }\n\n &:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n left: 0.5px;\n }\n\n &:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n right: 0.5px;\n }\n }\n\n p {\n font-size: 1.1rem;\n line-height: 1.5rem;\n margin-top: 0.3rem;\n white-space: normal;\n }\n\n} /* .post-navigation */\n\n@keyframes fade-up {\n from {\n opacity: 0;\n position: relative;\n top: 2rem;\n }\n to {\n opacity: 1;\n position: relative;\n top: 0;\n }\n}\n\n#toc-wrapper {\n border-left: 1px solid rgba(158, 158, 158, 0.17);\n position: -webkit-sticky;\n position: sticky;\n top: 4rem;\n transition: top 0.2s ease-in-out;\n animation: fade-up 0.8s;\n}\n\n#toc li a {\n font-size: 0.8rem;\n\n &.nav-link:not(.active) {\n color: inherit;\n }\n\n}\n\nnav[data-toggle=toc] {\n .nav {\n .nav > li > a.active {\n font-weight: 600 !important;\n }\n }\n}\n\n/* --- Related Posts --- */\n\n#related-posts {\n > h3 {\n @include label(1.1rem, 600);\n }\n\n em {\n @extend %normal-font-style;\n }\n\n .card {\n border-color: var(--card-border-color);\n background-color: var(--card-bg);\n box-shadow: 0 0 5px 0 var(--card-box-shadow);\n -webkit-transition: all 0.3s ease-in-out;\n -moz-transition: all 0.3s ease-in-out;\n transition: all 0.3s ease-in-out;\n\n h3 {\n @extend %text-color;\n }\n\n &:hover {\n -webkit-transform: translate3d(0, -3px, 0);\n transform: translate3d(0, -3px, 0);\n box-shadow: 0 10px 15px -4px rgba(0, 0, 0, 0.15);\n }\n }\n\n .timeago {\n color: var(--relate-post-date);\n }\n\n p {\n font-size: 0.9rem;\n margin-bottom: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n }\n\n a:hover {\n text-decoration: none;\n }\n\n ul {\n list-style-type: none;\n padding-inline-start: 1.5rem;\n\n > li::before {\n background: #c2c9d4;\n width: 5px;\n height: 5px;\n border-radius: 1px;\n display: block;\n content: \"\";\n position: relative;\n top: 1rem;\n right: 1rem;\n }\n }\n}\n\n#tail-wrapper {\n min-height: 2rem;\n\n > div:last-of-type {\n margin-bottom: 2rem;\n }\n\n #disqus_thread {\n min-height: 8.5rem;\n }\n\n}\n\n.post-tail-bottom a {\n color: inherit;\n}\n\n%btn-share-hovor {\n color: var(--btn-share-hover-color) !important;\n}\n\n.share-wrapper {\n vertical-align: middle;\n user-select: none;\n\n .share-icons {\n font-size: 1.2rem;\n\n a {\n &:not(:last-child) {\n margin-right: 0.25rem;\n }\n\n &:hover {\n text-decoration: none;\n\n > i {\n @extend %btn-share-hovor;\n }\n }\n }\n\n > i {\n position: relative;\n bottom: 1px;\n\n @extend %cursor-pointer;\n\n &:hover {\n @extend %btn-share-hovor;\n }\n }\n\n .fab {\n &.fa-twitter {\n @include btn-sharing-color(rgba(29, 161, 242, 1));\n }\n\n &.fa-facebook-square {\n @include btn-sharing-color(rgb(66, 95, 156));\n }\n\n &.fa-telegram {\n @include btn-sharing-color(rgb(39, 159, 217));\n }\n\n &.fa-weibo {\n @include btn-sharing-color(rgb(229, 20, 43));\n }\n }\n\n } /* .share-icons */\n\n .fas.fa-link {\n @include btn-sharing-color(rgb(171, 171, 171));\n }\n\n} /* .share-wrapper */\n\n.share-label {\n @include label(inherit, 400, inherit);\n\n &::after {\n content: \":\";\n }\n}\n\n.license-wrapper {\n line-height: 1.2rem;\n\n > a {\n color: var(--text-color);\n\n &:hover {\n @extend %link-hover;\n }\n }\n\n span:last-child {\n font-size: 0.85rem;\n }\n\n} /* .license-wrapper */\n\n@media all and (max-width: 576px) {\n .preview-img[data-src] {\n margin-top: 2.2rem;\n }\n\n .post-tail-bottom {\n -ms-flex-wrap: wrap-reverse !important;\n flex-wrap: wrap-reverse !important;\n\n > div:first-child {\n width: 100%;\n margin-top: 1rem;\n }\n }\n}\n\n@media all and (max-width: 768px) {\n .post-content > p > img {\n max-width: calc(100% + 1rem);\n }\n}\n\n/* Hide SideBar and TOC */\n@media all and (max-width: 849px) {\n .post-navigation {\n padding-left: 0;\n padding-right: 0;\n margin-left: -0.5rem;\n margin-right: -0.5rem;\n }\n\n .preview-img[data-src] {\n max-width: 100vw;\n border-radius: 0;\n }\n}\n", + "/*\n Styles for Tab Tags\n*/\n\n.tag {\n border-radius: 0.7em;\n padding: 6px 8px 7px;\n margin-right: 0.8rem;\n line-height: 3rem;\n letter-spacing: 0;\n border: 1px solid var(--tag-border) !important;\n box-shadow: 0 0 3px 0 var(--tag-shadow);\n\n span {\n margin-left: 0.6em;\n font-size: 0.7em;\n font-family: 'Oswald', sans-serif;\n }\n}\n", + "/*\n Style for Archives\n*/\n\n%date-timeline {\n content: \"\";\n width: 4px;\n left: 75px;\n display: inline-block;\n float: left;\n position: relative;\n background-color: var(--timeline-color);\n}\n\n#archives {\n letter-spacing: 0.03rem;\n\n span.lead {\n font-size: 1.5rem;\n position: relative;\n left: 8px;\n\n &::after { /* Year dot */\n content: \"\";\n display: block;\n position: relative;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n width: 12px;\n height: 12px;\n top: -26px;\n left: 63px;\n border: 3px solid;\n background-color: var(--timeline-year-dot-color);\n border-color: var(--timeline-node-bg);\n box-shadow: 0 0 2px 0 #c2c6cc;\n z-index: 1;\n }\n\n &:not(:first-child) {\n position: relative;\n left: 4px;\n\n &::after {\n left: 67px;\n }\n }\n\n } // #archives span.lead\n\n ul {\n li {\n font-size: 1.1rem;\n line-height: 3rem;\n\n div {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n a {\n /* post title in Archvies */\n margin-left: 2.5rem;\n position: relative;\n top: 0.1rem;\n }\n }\n\n &:nth-child(odd) {\n background-color: var(--main-wrapper-bg, #fff);\n background-image: linear-gradient(to left, #fff, #fbfbfb, #fbfbfb, #fbfbfb, #fff);\n }\n\n &::after {\n @extend %date-timeline;\n\n height: 2.8rem;\n top: -1.3rem;\n }\n\n &:first-child::before {\n @extend %date-timeline;\n\n height: 3.06rem;\n top: -1.61rem;\n }\n }\n\n &:not(:last-child) > li:last-child::after {\n height: 3.4rem;\n }\n\n &:last-child > li:last-child::after {\n display: none;\n }\n } // #archives ul\n\n .date {\n white-space: nowrap;\n display: inline-block;\n\n &.month {\n width: 1.4rem;\n text-align: center;\n\n ~ a::before {\n /* A dot for Month and Day */\n content: \"\";\n display: inline-block;\n position: relative;\n -webkit-border-radius: 50%;\n -moz-border-radius: 50%;\n border-radius: 50%;\n width: 8px;\n height: 8px;\n float: left;\n top: 1.35rem;\n left: 69px;\n background-color: var(--timeline-node-bg);\n box-shadow: 0 0 3px 0 #c2c6cc;\n z-index: 1;\n }\n }\n\n &.day {\n font-size: 85%;\n font-family: 'Lato', sans-serif;\n text-align: center;\n margin-right: -2px;\n width: 1.2rem;\n position: relative;\n left: -0.15rem;\n }\n } // #archives .date\n\n} // #archives\n\n@media all and (max-width: 576px) {\n #archives {\n margin-top: -1rem;\n\n ul {\n letter-spacing: 0;\n }\n }\n}\n", + "/*\n Style for Tab Categories\n*/\n\n%category-icon-color {\n color: gray;\n}\n\n.categories {\n margin-bottom: 2rem;\n\n .card-header {\n padding-right: 12px;\n }\n\n i {\n @extend %category-icon-color;\n\n font-size: 86%; // fontawesome icons\n }\n\n .list-group-item {\n border-left: none;\n border-right: none;\n padding-left: 2rem;\n\n &:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n }\n\n} // .categories\n\n.category-trigger {\n width: 1.7rem;\n height: 1.7rem;\n border-radius: 50%;\n text-align: center;\n color: #6c757d !important;\n\n &:hover {\n i {\n color: var(--categories-icon-hover-color);\n }\n }\n\n i {\n position: relative;\n height: 0.7rem;\n width: 1rem;\n transition: transform 300ms ease;\n }\n}\n\n@media (hover: hover) { // only works on desktop\n .category-trigger:hover {\n background-color: var(--categories-hover-bg);\n }\n}\n\n.rotate {\n -ms-transform: rotate(-90deg); /* IE 9 */\n -webkit-transform: rotate(-90deg); /* Safari 3-8 */\n transform: rotate(-90deg);\n}\n", + "/*\n Style for page Category and Tag\n*/\n\n.dash {\n margin: 0 0.5rem 0.6rem 0.5rem;\n border-bottom: 2px dotted var(--dash-color);\n}\n\n#page-category,\n#page-tag {\n ul > li {\n line-height: 1.5rem;\n padding: 0.6rem 0;\n\n &::before { // dot\n background: #999;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n display: block;\n content: \"\";\n position: relative;\n top: 0.6rem;\n margin-right: 0.5rem;\n }\n\n > a { /* post's title */\n @extend %no-bottom-border;\n\n font-size: 1.1rem;\n }\n\n > span:last-child {\n white-space: nowrap;\n } /* post's date */\n }\n}\n\n#page-tag h1 > i { // tag icon\n font-size: 1.2rem;\n}\n\n#page-category h1 > i {\n font-size: 1.25rem;\n}\n\n#page-category,\n#page-tag,\n#access-lastmod {\n a:hover {\n @extend %link-hover;\n\n margin-bottom: -1px; // Avoid jumping\n }\n}\n\n@media all and (max-width: 576px) {\n #page-category,\n #page-tag {\n ul > li {\n &::before {\n margin: 0 0.5rem;\n }\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n }\n}\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/assets/img/avatar.png b/assets/img/avatar.png new file mode 100644 index 0000000..1baab78 Binary files /dev/null and b/assets/img/avatar.png differ diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png new file mode 100644 index 0000000..621bb99 Binary files /dev/null and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png new file mode 100644 index 0000000..0fcb846 Binary files /dev/null and b/assets/img/favicons/android-chrome-512x512.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png new file mode 100644 index 0000000..e7160a1 Binary files /dev/null and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml new file mode 100644 index 0000000..54217f7 --- /dev/null +++ b/assets/img/favicons/browserconfig.xml @@ -0,0 +1 @@ + #da532c diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png new file mode 100644 index 0000000..6d3f1a2 Binary files /dev/null and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png new file mode 100644 index 0000000..4c4e740 Binary files /dev/null and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico new file mode 100644 index 0000000..bdc6634 Binary files /dev/null and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png new file mode 100644 index 0000000..391f367 Binary files /dev/null and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest new file mode 100644 index 0000000..1cc791c --- /dev/null +++ b/assets/img/favicons/site.webmanifest @@ -0,0 +1 @@ +{ "name": "Lewis's Blog", "short_name": "Lewis's Blog", "description": "A minimal, responsive, and powerful Jekyll theme for presenting professional writing.", "icons": [ { "src": "/assets/img/favicons/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/assets/img/favicons/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }], "start_url": "/index.html", "theme_color": "#2a1e6b", "background_color": "#ffffff", "display": "fullscreen" } diff --git a/assets/img/posts/android-emulator/config_proxy.png b/assets/img/posts/android-emulator/config_proxy.png new file mode 100644 index 0000000..65e1788 Binary files /dev/null and b/assets/img/posts/android-emulator/config_proxy.png differ diff --git a/assets/img/posts/android-emulator/wifi_detail.png b/assets/img/posts/android-emulator/wifi_detail.png new file mode 100644 index 0000000..aa08c4b Binary files /dev/null and b/assets/img/posts/android-emulator/wifi_detail.png differ diff --git a/assets/img/posts/double/double-precision-float-format.png b/assets/img/posts/double/double-precision-float-format.png new file mode 100644 index 0000000..c748534 Binary files /dev/null and b/assets/img/posts/double/double-precision-float-format.png differ diff --git a/assets/img/posts/double/double-to-string.png b/assets/img/posts/double/double-to-string.png new file mode 100644 index 0000000..e0cf437 Binary files /dev/null and b/assets/img/posts/double/double-to-string.png differ diff --git a/assets/img/posts/double/string-double-convert.png b/assets/img/posts/double/string-double-convert.png new file mode 100644 index 0000000..2fc6642 Binary files /dev/null and b/assets/img/posts/double/string-double-convert.png differ diff --git a/assets/index.html b/assets/index.html new file mode 100644 index 0000000..2d7922d --- /dev/null +++ b/assets/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/assets/js/data/search.json b/assets/js/data/search.json new file mode 100644 index 0000000..3f6dd56 --- /dev/null +++ b/assets/js/data/search.json @@ -0,0 +1 @@ +[ { "title": "Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It", "url": "/posts/Unveiling-Coroutines-1/", "categories": "Tech", "tags": "Android, Coroutine", "date": "2024-04-17 04:12:00 +0000", "snippet": "IntroductionThe world of asynchronous programming thrives on concurrency, and coroutines have emerged as powerful tools to manage concurrent tasks efficiently. But within the realm of coroutines, there lies a distinction: stackful and stackless. This blog post will delve into these concepts and explore how Kotlin leverages stackless coroutines for asynchronous mastery.Stackful Coroutines: A Familiar FriendImagine a function call. It utilizes a portion of the program’s memory stack to store information about its execution, local variables, and the return address. Stackful coroutines operate similarly. Each coroutine possesses its own stack space, just like a regular function. Suspension and Resumption: When a stackful coroutine needs to pause its execution (yield control), it saves its current state (local variables, program counter) on its dedicated stack. When resumed, it retrieves the state from the stack and continues execution. Advantages: Simpler Implementation: The stack-based approach mirrors function calls, making stackful coroutines easier to understand and debug. Control Granularity: Developers have more control over the coroutine’s stack allocation and memory usage. Disadvantages: Stack Overflow Woes: Each coroutine’s dedicated stack space can lead to stack overflow errors if too many coroutines are created. Context Switching Overhead: Switching between coroutines involves saving and restoring the state on the stack, which can be inefficient for a high number of coroutines. Stackless Coroutines: A Lightweight AlternativeStackless coroutines break free from the constraints of dedicated stacks. Here’s what sets them apart: No Stack, No Problem: Unlike their stackful counterparts, stackless coroutines don’t have their own stack space. Instead, a separate “coroutine scheduler” manages their state. This scheduler allocates memory for coroutine data and handles context switching. Suspension and Resumption Redefined: When a stackless coroutine yields control, the scheduler saves its state (registers, program counter) in a lightweight data structure. The scheduler then switches to another coroutine. When the first coroutine resumes, its state is restored from the data structure, and it picks up where it left off. Advantages: Lightweight Champion: The lack of dedicated stacks makes stackless coroutines lightweight, enabling a vast number of concurrent coroutines without stack overflow concerns. Context Switching Efficiency: Switching between coroutines involves manipulating a data structure managed by the scheduler, potentially faster than stack-based operations. Disadvantages: Complexity Curve: Understanding and debugging stackless coroutines can be trickier due to the absence of a dedicated stack for each coroutine. Less Control at the Helm: Developers have less control over the coroutine’s memory usage and scheduling behavior compared to stackful coroutines. Choosing the Right Coroutine for the JobThe choice between stackful and stackless coroutines depends on your project’s requirements: For simpler applications with a limited number of coroutines, stackful coroutines might be suitable due to their straightforward implementation. For applications demanding a high volume of concurrent tasks and peak performance, stackless coroutines, like those employed by Kotlin, become the clear choice due to their scalability and efficiency.Kotlin Coroutines: Embracing the Stackless PowerKotlin, a modern language known for its developer-friendly features, takes the stackless coroutines approach. Here’s why: Memory Efficiency: Kotlin coroutines rely on a coroutine scheduler for state management, eliminating the need for individual stacks and promoting efficient memory usage. Performance Champion: The stackless design allows for faster context switching between coroutines, contributing to overall application performance. Simplified Asynchronous Programming: Kotlin provides a well-designed coroutine API that streamlines asynchronous programming compared to manual thread management.By understanding the concepts of stackful and stackless coroutines, you can make informed decisions when building asynchronous applications. Kotlin’s stackless coroutine implementation empowers developers to write clean, concurrent, and performant code. So, the next time you delve into asynchronous programming, consider the power of stackless coroutines and how Kotlin makes asynchronous development a breeze!" }, { "title": "Mastering Kotlin Coroutines in Android Development", "url": "/posts/master-kotlin-coroutine/", "categories": "Tech", "tags": "Android", "date": "2024-04-16 07:19:00 +0000", "snippet": "In the ever-evolving world of Android development, building responsive and efficient apps is paramount. Traditional threading approaches often lead to complex code and potential pitfalls. Enter Kotlin coroutines, a powerful tool that simplifies asynchronous programming, making your Android apps smoother and more maintainable.This blog post delves into the world of Kotlin coroutines, guiding you through their core concepts, practical usage in Android development, and best practices for leveraging their potential.What are Kotlin Coroutines?Kotlin coroutines are lightweight threads that offer a structured approach to handling asynchronous tasks without the complexity of traditional threading. Unlike threads, coroutines are suspended and resumed, allowing them to be more efficient and less resource-intensive. This suspension capability empowers them to “pause” execution while waiting for something to happen (e.g., network call completion) without blocking the main thread.Key Concepts: Coroutine Builders: These functions like launch and async help you create and launch coroutines. Coroutine Context: This defines the environment in which a coroutine executes, specifying details like dispatcher (thread pool) and exception handling. Coroutine Scope: A structured way to manage the lifecycle of coroutines, ensuring proper cancellation upon completion or error. Popular scopes include lifecycleScope in Activities/Fragments and viewModelScope in ViewModels. Suspending Functions: Functions marked with the suspend keyword can pause execution and be resumed later. Network calls and disk I/O operations are often implemented as suspending functions.Benefits of Using Coroutines: Improved Performance: Coroutines avoid blocking the main thread, preventing UI freezes during asynchronous tasks. Simplified Code: The structured approach of coroutines leads to cleaner and more readable code compared to traditional threading. Error Handling: Coroutines provide mechanisms for handling exceptions and propagating them within the coroutine hierarchy. Cancellation: You can gracefully cancel coroutines when they are no longer needed, preventing wasted resources.Putting Coroutines into Action:Here’s a simple example demonstrating how to fetch data from an API using coroutines:fun fetchData() { viewModelScope.launch { // Launch a coroutine in the viewModelScope val data = try { val response = URL("[https://api.example.com/data](https://api.example.com/data)").readText() // Parse the response and return the data parseData(response) } catch (e: Exception) { // Handle network or parsing errors null } // Update UI with the fetched data updateData(data) }}In this example, the fetchData function launches a coroutine within the viewModelScope. The coroutine fetches data from an API using a suspending function (readText). If successful, the data is parsed and used to update the UI. Any errors during the process are handled gracefully.Best Practices: Use structured concurrency: Leverage coroutine scopes to manage the lifecycle of coroutines effectively. Handle exceptions: Implement proper error handling mechanisms to prevent crashes and maintain app stability. Cancel unnecessary coroutines: When a coroutine is no longer needed, cancel it to avoid resource leaks. Use Dispatchers wisely: Choose the appropriate dispatcher (thread pool) based on the nature of the coroutine’s task (e.g., I/O for network calls, Default for CPU-bound tasks).Conclusion:Kotlin coroutines empower you to write asynchronous code in a structured and efficient manner, leading to smoother and more responsive Android applications. By understanding the core concepts, practical usage examples, and best practices, you’ll be well on your way to mastering this powerful tool in your Android development journey." }, { "title": "Summary for 2023", "url": "/posts/Summary-Of-2023/", "categories": "Summary", "tags": "My", "date": "2023-12-29 08:47:00 +0000", "snippet": "Improvements: Enhanced proficiency in English communication skills. Prioritized quality time with my family, especially with my young daughter.Key Lessons Learned: Acknowledged the importance of prioritizing self-care for both physical and mental well-being. Cultivated patience in relationships, particularly with my spouse and parents. Developed resilience against external negativity and opinions. Embraced challenges in additional work opportunities. Maintained focus on personal and professional goals. Fostered confidence in my chosen path and adopted a more positive mindset. Practiced tuning out mental noise and finding inner peace. Embraced the concept of accepting things beyond our control.Hopes for 2024: Apply the lessons learned in 2023. Increase earnings through personal efforts. Plan and enjoy family travels. Attain a native speaker level of English proficiency." }, { "title": "Do it Anyway — Mother Teresa", "url": "/posts/Do-it-Anyway/", "categories": "North Star", "tags": "Poem", "date": "2023-05-17 07:28:00 +0000", "snippet": "People are often unreasonable, illogical, and self-centered.Forgive them anyway.If you are kind,people may accuse you of selfish ulterior motives.Be kind anyway.If you are successful,you will win some false friends and some true enemies.Succeed anyway.If you are honest and frank,people may cheat you.Be honest and frank anyway.What you spend years building,someone could destroy overnight.Build anyway.If you find serenity and happiness,they may be jealous.Be happy anyway.The good you do today,people will often forget tomorrow.Do good anyway.Give the world the best you have,and it may never be enough.Give the best you’ve got anyway.You see,in the final analysis it is between you and God;it was never between you and them anyway." }, { "title": "步步高企业文化", "url": "/posts/BBK-core-values/", "categories": "North Star", "tags": "Core Values", "date": "2022-08-01 02:15:00 +0000", "snippet": "什么是企业文化?是指企业经营实践过程中,逐步形成的为全体员工所认同、遵守,带有本企业特色的价值观念。企业文化是无形的制度,是共同的语言,是共同的想法,是一致的行为方式。一、愿景 愿景是一种意愿的表达“它定义了我们渴望成为什么,达到什么境界,创造出什么”是公司为之奋斗的心愿和远景。我们公司的愿景:成为更健康、更长久的企业。利润(赚钱)是生存的必要条件,是实现更健康、更长久的手段。利润就像人体的氧气、食物和水一样 —— 没有他们,就没有生命。创造利润(赚钱)是公司的责任,一个不赚钱的公司是不能长久的。但是,赚钱不是我们的最终目的的,它是实现愿景的过程。这就像氧气、食物和水一样 —— 这些东西不可或缺,但它们不是生命的目的。所以,我们需要创造利润,但我们更需要追求更广泛、更有意义的理想 —— 成为更健康、更长久的世界一流企业。尽管在某些事情上我们可能可以获得短期利益(表面上看起来似乎暂时“对公司有利”),但如果因此而影响到公司长远的安全和健康,这种事情我们决不能做。追求愿景意味着我们必须要脚踏实地,做对的事情,不是本分的事情坚决不做;同时要求我们在永恒保存核心价值的基础上,积极改变除此之外的任何东西,以获得追求进步的驱动力。我们在创建基业长青的事业,这是我们的诺言,是不言自明的真理。50年后,100年后,甚至更长的时间后,当人们审视步步高公司时,仍然会说:“这是一个基业长青的伟大公司…….”二、使命 使命是公司根本的、崇高的责任和义务,是公司存在的基本原因,它定义了不变的“我们为什么存在” 。我们公司的使命: 对消费者,提供品质优良的产品和服务。 对员工,营造和谐、相互尊重的工作氛围。 对商业伙伴,提供公平合理、对等互利的合作平台。 对股东,使其投入的股本有高于社会平均收益的回报。   我们的首要责任是对所有购买和使用我们产品的消费者负责。我们的产品品质和服务品质必须要满足消费者的需求,并且高于对竞争对手的满意度。我们必须不断致力于降低产品的成本,从而让更多的消费者能购买和使用我们的产品。我们必须不断缩短产品订单的交货期,以最快的速度满足消费者的需要。我们致力于在产品和服务方面给顾客带来超凡的消费体验,让消费者感受到产品的精美和高品质、服务的完善和细心。 我们的第二个责任是对在公司所有岗位工作的全体同仁负责。我们要为员工提高学习和锻炼的机会,帮助员工提高基本素质、业务能力和综合素质。我们要为既合适又合格的员工提供晋升的机会,在考核一个人时以道德品质和价值观念为基本依据。我们提供的工资必须公平而适当,管理者必须公平公正,员工的工作环境必须整洁安全。我们尊重和珍视每位员工的价值,我们相信,员工应该和公司共同成长,这是我们的责任和骄傲。 我们的第三个责任是对我们的供应商、经销商及其他所有商业伙伴负责。我们做生意追求的是“商道”而非“商术”,我们首先要考虑合作伙伴的应有利润。在此基础上再追求自己的合理利润,给每一位商业伙伴提供公平互利的合作平台。我们选择和评价商业伙伴时,关注的是品质、价格和服务,以及诚信合作的一贯性,而不需考虑关系的亲疏及其他社会因素。我们希望和我们的合作伙伴共同成长。 我们的第四个责任是对股东负责。我们必须赚取合理的相当利润,才能研发新项目、制造新产品、实践新构想、制订新规划、支付合适的工资。我们尽到这一切责任后,股东们应该得到公平合理的回报。公司健康、长久的发展离不开投资者(股东)的信任和支持,我们必须给予投资者(股东)坚信的信心和公平的报偿。这是公司得以存在的基础,也是我们诚信文化的体现。 三、核心价值观 核心价值观是公司的精神和持久的原则——是一套不需要外部调整的永恒指导原则,它对于公司内部的人拥有的价值和意义。它定义了不变的“我们代表什么” 。我们核心价值观的中心是“本分” ,它是我们价值观的灵魂,它决定了其他所有的观念和处事的原则。本分做到之后,其他的核心价值观都会被涵盖进去。我们核心价值观的基础是“消费者导向” ,消费者的需求(含显在和潜在的需求)是所有企业活动的原始起点。本分: 做对的事情(有所为有所不为),把事情做对; 专注于自己所从事的工作,把结果放到第一位; 隔离外力,在平常的心态下,把握住我们应该做的合理方向; 本份规范了与人合作的态度——我不赚人便宜; 本分是当出现问题时,首先求责于己的态度。 压力和诱惑往往会使我们平常清静的心态受到震荡,而这种改变的结果大多将使我们偏离正确的方向。本分则是在决策和行动时,我们能够首先将这种外在的作用力先行抛开,在平常的心态下,把握住我们应该做的合理的方向,而不是首先被外在的作用力所牵引,以致作出错误的选择。我们宁愿自己吃点小亏,也不会去赚别人的便宜,这样做生意往往才能够取得双赢,也才能长久。我们在做生意时追求的是“商道”而非“商术”。 “商道”要求我们首先要考虑合作伙伴的应有利益,在此基础上再追求自己的合理利润,而绝非为了赚钱不择手段、损人利己。出现问题时,我们不需要任何借口和理由,我们应该首先求责于己,反省自己做错了什么,应该如何去改善。如何做到本分: 本分是付出代价的坚持; 本分是充分考虑对方的立场,己所不欲勿施于人; 本分是兢兢业业,做自己该做的事; 本分是不骄不躁,克己尽职; 本分是诚实守信,说到做到; 本分是不占小便宜;本分和诚信的不同:本分和诚信的不同是在于诚信是双方面的,有约定的,而本分是不需要约定的,是自己主动知道要这样去做的。本分比诚信要高一个境界,它体现的是我们灵魂深处的东西。本分涵盖了其他几项核心价值观(诚信、团队、品质、消费者导向),而诚信是本分一个方面的体现。诚信: 百德诚为先,百事信为本; 不轻易的承诺,如果承诺了就一定要做到; 诚,即诚实、无欺,内诚于心; 信,即守承诺、讲信用,说到做到,外信于人,即使遭遇挫折、付出代价也要坚守; 诚信是一种责任、准则和资源。我们要在自己的内心深处架起一杆道德天平,诚者不伪,无论外部环境怎样变化,都要忠实于内心的道德法则,真诚为人,不自欺,不欺人,这样才是内诚于心。我们忠实于自己做出的每一个承诺,言必行,行必果,即使要为此付出艰难的努力、巨大的代价,也要恪守“说到就要做到”的准则,这样才能外信于人。诚信不仅是一种品行,更是一种责任,不仅是一种道义,更是一种资源。我们把产品推向社会的过程。我们卖给顾客的不仅是商品,更是用心铸造的庄严承诺。我们用心设计品质、制造产品,用心沟通伙伴、服务顾客,用心锤炼品牌、树立形象。我们约束自己,诚笃于胸;我们言出必行,行出必果。团队: 主动配合支持他人; 实现优势的整合,追求共赢; 没有团队的成功,就没有个人的成功; 相互信任,坦诚沟通,将个人融入团队,以共同愿景为最高目标。 尊重每一位员工的价值,我们相信,员工和公司共同成长,这是我们的责任和骄傲。 我们每个人的成功,都必须建立在团队成功的基础上。步步高的任何人,无论是要个人的能力价值得到发挥,还是要物质利益得到提高,前提都必须是步步高整个团队要取得成功。而一个成功的团队又会带给我们很多有形和无形的资产,会让我们终生受益。团队中难免会有分歧,重要的是不能让分歧影响团队目标的达成。这就需要我们时刻用团队目标和共同愿景来审视自我,自觉将个人融入团队,相互信任,坦诚沟通,这样我们就能够撇弃偏见,协同工作,达成我们的共同目标。步步高珍重和珍视每一位员工的价值。我们鼓励员工在工作中不断提升自我,并努力激发员工的潜能。因为我们相信,员工应该和公司共同成长,这是我们的责任和骄傲。品质: 没有品质一切都是负数; 以品质取得信任,以品牌提升价值; 品质是做出来的,不是检验出来的; 品质就是生命; 品质是精益求精的一种追求,是必须要满足顾客的需求并且高于对竞争对手的满意度; 品质是设计出来的,是全员关心和环环相扣的一个系统工程; 不断提升产品品质,这不仅是我们的价值,更是我们的尊严。 顾客需求的是全面的品质,包括产品的精美度、人性化、可靠性和性价比。我们不仅要满足顾客需求,更要比竞争对手做得更多更好,让消费者更满意。品质是精益求精的一种追求,是一种要不断靠近、一种发自内心的真诚的向往和渴望。品质是设计出来的,我们会主动贴近市场,努力发掘所有可能为顾客带来愉悦感受的潜在机会,并将之转化为设计语言。我们在设计产品时,以追求产品的人性化、精美度和零缺陷为出发点,旨在产品推出时具有震撼力,能够给顾客带来超凡的消费体验,消费者能够感受到产品的精美与高品质。这就是我们一贯坚持的开发“英雄产品”的思路。我们有这样的共识:步步高公司与“步步高”品牌同生共荣,而步步高的品质又是步步高人价值与尊严的起点。我们深知,品质是企业生存之更本,没有品质就没有一切,我们对品质的追求永无止境。品质方针: 不懈进取,步步登高,为用户提供令其完全满意的产品和服务,我们的步步高品牌,必须是高品质的象征。假设大家工作时99.9%地投入,那么:每小时将有1.6万件邮件在邮寄途中丢失;每小时会有2.2万张支票被存入错误的银行账户;每天将有50个新生儿因身份被搞混,而被交给错误的父母;医院里每星期会有500例错误手术;药剂师每年将给2万个病人开错药;你的心脏每年会停止跳动3.2万次。所以:品质就是生命!消费者导向: 消费者是检验我们工作的唯一标准; 步步高不仅注重消费者需求,也注重消费者购买后的评价。 从消费者的角度来设计产品、提高服务,避免做貌似消费者喜欢的东西; 通过科学、严谨的市场调查,充分地研究消费者的需求,消费者的需求是所有企业活动的原始起点; 在公司内部的日常工作中,要坚持内部客户导向的原则。 我们公司的所有经营活动必须要首先从消费者的角度来看,这是消费者需要的吗,消费者会喜欢吗,然后再从这个角度来开发产品、提供服务——这就是消费者导向。我们要坚决避免做貌似消费者喜欢的东西。市场上必定存在这样的需求:它是消费者所需要的、我们能够做出优势,并且能比竞争对手更好的满足消费者。我们要去寻找、挖掘和发现这种需求,巧妙的将产品在功能和技术上的创新优势转化为消费者的利益,在满足消费者需求和发挥我们自身特色上保持良好的平衡。在公司内部,有我们个自的内部顾客 。我们工作时首先要弄清楚,自己的直接客户是谁,他喜欢我所做的工作吗,我所到的结果正是他需要的吗。我们工作的目的不是为了完成任务,而是为了创造卓越的结果,使顾客更满意。内部客户导向是消费者导向在公司内部日常工作中的表现。———— 这叫彻底消费者导向!   作者:思弦君 链接:https://xueqiu.com/2740739644/172093568 来源:雪球 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 " }, { "title": "段永平 2011 年浙江大学毕业演讲", "url": "/posts/Duan-ZheJiang-University/", "categories": "North Star", "tags": "Core Values", "date": "2022-08-01 01:51:00 +0000", "snippet": " 很荣幸受到邀请,能有机会代表五十万校友跟新毕业的校友说两句。我一直在想,两三分钟我要讲点什么,能够让在场同学在二三十年后还能记得住,并且有所得益。不知道大家现在心情如何,我依然还记得自己在毕业时候那种兴奋、茫然、激动、困惑、不安、满怀希望、又有点不知所措的复杂心情。二十八年过去了,虽然这种感觉偶尔还会出现,但是在经历了这段人生之路后,会有些感悟。今天,主要以我自己的经历,跟大家分享三点,关于毕业之后,做个什么样的人。 第一,做个胸无“大”志的人。首先要强调的是,这里的“大”是好大喜功的大。所谓胸无“大”志,指的是脚踏实地的做事态度。我们要胸无“大”志地去做自己喜欢的事情,同时,还要努力去喜欢自己在做的事情。我觉得,只有在做自己喜欢的事情的时候,才能激发自己最大的潜力,所以每个人首先要花很大精力去寻找自己喜欢的事情。同时,我也要强调后面一点,喜欢自己在做的事情。大学刚毕业就马上找到自己喜欢的事情,是可遇不可求的。很多时候,当我们投入到自己的工作中后,会慢慢找到很多乐趣,在努力的过程中,会渐渐发现自己喜欢做什么。所以,努力喜欢自己做的事情很重要。胸无“大”志,需要大家慢慢体会。第二, 做个有所不为的人。我们有句话叫做“有所为,有所不为”。我们常常注意到要“有所为”,但我要强调的是“有所不为”。我很早就听说过,要做对的事情,然后把事情做对。在经历了这些年,经历很多次的头破血流之后,我才真正开始明白这句话是什么意思。所谓做对的事情,就是知道是错的事情决不要做,知道做错了马上要改。这个说起来容易,做起来困难。知道做错了马上改,不管多大的代价,到最后往往是最小的代价。我看到很多人明知是错,犯了错之后抱着侥幸的心态,浪费很多年之后最后要付出更大的代价。希望大家不要碰到这样的情况。很多人问我,为什么我们公司在消费电子领域这么多年之后一直存在,我们就是守诚信、平常心、坚守本分。本分就是有所不为的意思。把事情做对,本身是个学习的过程,这个过程当中是要犯很多错误的。有种说法“不怕犯错误”,我们做对的事情时,要避免犯错,但把事情做对的过程中会犯很多错误,这个大家要理解。还有个说法“永不放弃”,就是要坚持对的事情,如果是错的事情,要立即回头。第三,做个正直的人。无论能否做到以上两点,但最基本的是要做个正直的人。我不知道做个正直的人,会有什么回报,但至少让人一生坦然。我就讲这三点,大学毕业是我们进入社会大学的起点,我们要学习的东西是无穷无尽的。最后,衷心祝愿每一位同学都能找到属于自己的精彩人生。   作者:思弦君 链接:https://xueqiu.com/2740739644/172834396 来源:雪球 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 " }, { "title": "是非,毁誉,得失", "url": "/posts/POEM-Right-And-Wrong/", "categories": "Self-improvement", "tags": "Poem", "date": "2022-07-19 07:42:00 +0000", "snippet": "[湖南] 岳麓书院上联: 是非审之于己,毁誉听之于人,得失安之于数,陟岳麓峰头,朗月清风,太极悠然可会下联:君亲恩何以酬,民物命何以立,圣贤道何以传,登赫曦台上,衡云湘水,斯文定有攸归" }, { "title": "竹石", "url": "/posts/POEM-Bamboo-In-The-Stone/", "categories": "Self-improvement", "tags": "Poem", "date": "2022-06-30 02:04:00 +0000", "snippet": "[清] 郑燮咬定青山不放松立根原在破岩中千磨万击还坚劲任尔东西南北风" }, { "title": "定风波", "url": "/posts/POEM-Still-the-Turbulence/", "categories": "Self-improvement", "tags": "Poem", "date": "2022-06-30 01:36:00 +0000", "snippet": "[宋] 苏轼 三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。料峭春风吹酒醒,微冷,山头斜照却相迎。回首向来萧瑟处,归去,也无风雨也无晴。" }, { "title": "君子", "url": "/posts/POEM-Gentleman/", "categories": "Self-improvement", "tags": "Poem", "date": "2022-05-24 02:25:00 +0000", "snippet": "[中庸]君子素其位而行,不愿乎其外。素富贵,行乎富贵;素贫贱,行乎贫贱;素夷狄,行乎夷狄;素患难,行乎患难。君子无入而不自得焉。在上位,不陵下;在下位,不援上。正己而不求于人,则无怨。上不怨天,下不尤人。故君子居易以俟命,小人行险以徼幸。 子曰:“射有似乎君子,失诸正鹄,反求诸其身。”" }, { "title": "Android Studio 手动关联源码", "url": "/posts/android-studio-link-source/", "categories": "Tech", "tags": "Android", "date": "2022-05-16 09:53:00 +0000", "snippet": "备注如果只是方便在 Android Studio 中查看 Android Framework 的源码,那么最好的方法还是直接通过 Android Studio 的 Android SDK 页面下载。本文描述的问题和解决方案是在网络出问题的情况下遇到的,正常开发过程应该不会有类似的问题,仅做记录和参考。问题可能是网络出了问题,当通过 Android Studio 下载 API Level 31 的源码时,总是提示失败,到 SDK 配置的页面, 在勾选 Show Package Details 的情况下,也没看到 API Level 31 的 source 下载选项,误以为是不是 google 没有提供这个版本的源码,但是项目的 Compile SDK Level 正好配置的 31,在这种情况下,如果想看 Android framework 的源码,只能通过修改 Compile SDK Level 和 手动关联源码的方式来解决。项目上还有其他协同开发的同事,冒然修改 Compile SDK 不是很合适。那就剩手动关联源码的解决方案了。方案要手动关联源码,首先需要知道 Android Studio 的源码关联机制是怎么工作的,这个有很多资料可查,不在本文详述。解决步骤: 找到存储源码和对应 SDK 版本关联关系的配置文件 手动添加下载的源码和 SDK 的关联关系配置文件在 Android Studio 上,关联关系存储在如下位置:~/Library/Application Support/Google/AndroidStudio{version}/options/jdk.table.xml比如我本地环境的配置文件存储在:~/Library/Application Support/Google/AndroidStudio2021.1/options/jdk.table.xml添加配置如果相关 SDK 的配置节点已经存在,则只需检查 &lt;sourcePath&gt; 节点是否存在,如果不存在,则添加对应的路径&lt;jdk version="2"&gt; &lt;name value="Android API 31 Platform" /&gt; &lt;type value="Android SDK" /&gt; &lt;version value="version 11.0.11" /&gt; &lt;homePath value="$USER_HOME$/Library/Android/sdk" /&gt; &lt;roots&gt; &lt;annotationsPath&gt; &lt;root type="composite"&gt; &lt;root url="jar://$USER_HOME$/Library/Android/sdk/platforms/android-31/data/annotations.zip!/" type="simple" /&gt; &lt;/root&gt; &lt;/annotationsPath&gt; &lt;classPath&gt; &lt;root type="composite"&gt; &lt;root url="jar://$USER_HOME$/Library/Android/sdk/platforms/android-31/android.jar!/" type="simple" /&gt; &lt;root url="file://$USER_HOME$/Library/Android/sdk/platforms/android-31/data/res" type="simple" /&gt; &lt;/root&gt; &lt;/classPath&gt; &lt;javadocPath&gt; &lt;root type="composite" /&gt; &lt;/javadocPath&gt; &lt;sourcePath&gt; &lt;root type="composite"&gt; &lt;root url="file://$USER_HOME$/Library/Android/sdk/sources/android-31" type="simple" /&gt; &lt;/root&gt; &lt;/sourcePath&gt; &lt;/roots&gt; &lt;additional jdk="Android Studio default JDK" sdk="android-31" /&gt;&lt;/jdk&gt;重启 Android Studio" }, { "title": "Kotlin double 精度问题", "url": "/posts/double-precision-issue/", "categories": "Tech", "tags": "Android", "date": "2022-05-01 06:18:00 +0000", "snippet": "问题在项目上有同事写了一段代码,主要功能是将用户输入的纯数字字符串按照美国货币格式展示,比如输入 “1234” -&gt; “1,234”。他的实现方法是先将字符串转换成 double ,再通过 NumberFormat 将其格式化为货币格式。在字符串长度小于16时,能正常工作,但是当字符串长度大于等于16时就会出现异常,比如用户输入的字符串是 “9999999999999999” (16 个 9),期望展示的结果是 “9,999,999,999,999,999”,实际结果是 “10,000,000,000,000,000”。开始大家认为是输入的数字过大,超过了 double 所能表示的数据范围,数据溢出导致结果出错。这个问题超出了我的知识边界,所以一开始我也没想清楚为什么?但是心里产生了一个疑问:如果真是数据溢出了,那么 double 能够处理的数据范围是多少?带着这个问题,我在网上查阅了相关资料,大体弄明白了这个问题的原因。double 的存储原理下面这张图清晰的描述了双精度浮点数的存储原理double 的数据范围根据存储原理,11 位指数位能够表示的数据范围是 10^-308^ 和 10^308^ 之间的数字,具有完整的 15-17 位十进制数字精度。整数的精度限制53 位有效数字精度提供 15 到 17 位有效十进制数字精度 (2^53^ ≈ 1.11 × 10^16^) 可以精确表示从 -2^53^ 到 2^53^(-9,007,199,254,740,992 到 9,007,199,254,740,992)的整数 2^53^ 和 2^54^ 之间的整数 = 18,014,398,509,481,984 舍入为 2 的倍数(偶数) 2^54^ 到 2^55^ 之间的整数 = 36,028,797,018,963,968 舍入为 4 的倍数 double 与 string 的转换按照 IEEE 754 标准,如果将一个至多 15 位有效数字的十进制字符串,转换为 double 表示,然后再转换为十进制字符串,则最终结果与原始的字符串匹配。但是对于超过 15 位的字符串,只能够保证,将一个至少 17 位的 double 转换为十进制字符串,然后再转换为 double 表示时,最终结果必须与原始数字匹配。参考内容Double-precision floating-point format浮点数的二进制表示" }, { "title": "Android 模拟器不能使用电脑的代理网络", "url": "/posts/android-emulator-network-issue-copy/", "categories": "Tech", "tags": "Android", "date": "2022-04-28 13:24:00 +0000", "snippet": "问题做 Android 开发经常需要和模拟器打交道,在特定的业务场景下,需要模拟器能够使用电脑的 VPN 网络,不做一些特别的配置,模拟器是不能使用电脑 VPN 网络的。要解决模拟器的网络问题,需要弄清楚下面三个问题: 模拟器网络工作原理 网络代理的工作原理 如何让模拟器使用电脑的网络代理这三个问题都能在 Google 给的 模拟器网络搭建 找到答案模拟器网络工作原理官方文档在开始简略的介绍了模拟器的网络工作原理,总结下面几条 模拟器具备独立的网络系统,与开发机和其他模拟器的网络系统隔离 模拟器无法直接通过网络访问开发机或其他模拟器 模拟器运行独立的 router 系统,管理的 IP 地址段为 10.0.2/24 模拟器地址空间已经按照规则预先分配 IP地址 描述 10.0.2.1 网关 10.0.2.2 主机环回地址的别名,即对应开发机的 localhost 10.0.2.3 模拟器的第一 DNS 服务器地址 127.0.0.1 模拟器的环回地址,不对应开发机的 127.0.0.1 代理的工作原理网络代理和现实生活中的代理,概念一致,即作为客户端和服务端的中间人,代理客户端所有的请求,从服务端拿到资源后,再返回给客户端。客户端和服务端不直接联系。 具体的原理可以参考 Proxy server如何让模拟器能够使用电脑的代理如果能够给模拟器设置一个代理服务器,同时这个代理服务器又把所有请求转发给开发机的代理服务器,似乎就能解决问题。这个方案实施,需要满足两个条件 模拟器可以设置全局网络代理 模拟器的代理服务器可以转发请求给开发机的代理服务器第一个条件很简单,因为模拟器本身就支持设置全局代理。第二个条件要怎么实现呢? 在模拟器网络工作原理这一节,我们知道,模拟器的网络是独立于开发机的网络的,有一套独立的路由体系。但是这种独立并非完全没有联系,在预制的 IP 地址中,我们可以知道 10.0.2.2 这个地址就对应了开发机的 localhost,也即开发机的 127.0.0.1 这个 IP。所以只要我们把代理服务运行的IP(10.0.2.2) 和 端口(比如: 7890) 设置到模拟器的全局代理上,就可以让模拟器使用开发机的代理。参考内容LocalhostLoopackProxy ServerVPN" }, { "title": "开始", "url": "/posts/get-started/", "categories": "Thought", "tags": "My", "date": "2022-04-27 15:02:00 +0000", "snippet": "想了很久,决定通过博客来记录自己的成长历程,2017年 已经用 github pages 搭建了自己的博客系统,但是一直未真正开始写。最近反复思考之后,觉得博客对于未来自己要做的事情蛮重要的,所以重新开始了,希望自己能够一直坚持下来,也相信自己能够坚持下来。亡羊补牢,为时未晚!" } ] diff --git a/assets/js/data/swcache.js b/assets/js/data/swcache.js new file mode 100644 index 0000000..c86354e --- /dev/null +++ b/assets/js/data/swcache.js @@ -0,0 +1 @@ +const resource = [ /* --- CSS --- */ '/assets/css/style.css', /* --- PWA --- */ '/app.js', '/sw.js', /* --- HTML --- */ '/index.html', '/404.html', '/categories/', '/tags/', '/archives/', '/about/', /* --- Favicons & compressed JS --- */ '/assets/img/favicons/android-chrome-192x192.png', '/assets/img/favicons/android-chrome-512x512.png', '/assets/img/favicons/apple-touch-icon.png', '/assets/img/favicons/favicon-16x16.png', '/assets/img/favicons/favicon-32x32.png', '/assets/img/favicons/favicon.ico', '/assets/img/favicons/mstile-150x150.png', '/assets/js/dist/categories.min.js', '/assets/js/dist/commons.min.js', '/assets/js/dist/home.min.js', '/assets/js/dist/misc.min.js', '/assets/js/dist/page.min.js', '/assets/js/dist/post.min.js', '/assets/js/dist/pvreport.min.js' ]; /* The request url with below domain will be cached */ const allowedDomains = [ 'freedomlewis.github.io', 'fonts.gstatic.com', 'fonts.googleapis.com', 'cdn.jsdelivr.net', 'polyfill.io' ]; /* Requests that include the following path will be banned */ const denyUrls = [ ]; diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js new file mode 100644 index 0000000..c369f68 --- /dev/null +++ b/assets/js/dist/categories.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * © 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const e=$('meta[name="prefer-datetime-locale"]'),o=0o,attrTimestamp:()=>t,attrDateFormat:()=>a,getTimestamp:e=>Number(e.attr(t)),getDateFormat:e=>e.attr(a)}}();$(function(){$(".mode-toggle").click(e=>{const o=$(e.target);let t=o.prop("tagName")==="button".toUpperCase()?o:o.parent();t.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),o="data-topbar-visible",t=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>e.attr(o,!1),showTopbar:()=>e.attr(o,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>t,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const e=$("#sidebar-trigger"),o=$("#search-trigger"),t=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),r.addClass("unloaded"),o.addClass("unloaded"),l.addClass("d-flex"),t.addClass("loaded")},off(){t.removeClass("loaded"),l.removeClass("d-flex"),e.removeClass("unloaded"),r.removeClass("unloaded"),o.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),e=!0)},off(){e&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),i.val(""),e=!1)},isVisible(){return e}}}();function f(){return t.hasClass("loaded")}o.click(function(){p.on(),u.on(),i.focus()}),t.click(function(){p.off(),u.off()}),i.focus(function(){l.addClass("input-focus")}),i.focusout(function(){l.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let o=!1;const t=$("body");return{toggle(){!1===o?t.attr(e,""):t.removeAttr(e),o=!o}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const o=$("#search-input"),t=ScrollHelper.getTopbarHeight();let e,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(function(){var e=$(this).scrollTop();if(!(Math.abs(a-e)<=t)){if(e>a)ScrollHelper.hideTopbar(),o.is(":focus")&&o.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=e}}(),e=!1)},250)}),$(function(){var o="div.post>h1:first-of-type";const t=$(o),n=$("#topbar-title");if(0!==t.length&&!t.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let a=t.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),t.offset().top<$(window).scrollTop()&&n.text(a);let e=new IntersectionObserver(e=>{var o,t;r?(o=$(window).scrollTop(),t=l{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const e=$('meta[name="prefer-datetime-locale"]'),o=0o,attrTimestamp:()=>t,attrDateFormat:()=>a,getTimestamp:e=>Number(e.attr(t)),getDateFormat:e=>e.attr(a)}}();$(function(){$(".mode-toggle").click(e=>{const o=$(e.target);let t=o.prop("tagName")==="button".toUpperCase()?o:o.parent();t.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),o="data-topbar-visible",t=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>e.attr(o,!1),showTopbar:()=>e.attr(o,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>t,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const e=$("#sidebar-trigger"),o=$("#search-trigger"),t=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),c=$("#search-input"),i=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),r.addClass("unloaded"),o.addClass("unloaded"),l.addClass("d-flex"),t.addClass("loaded")},off(){t.removeClass("loaded"),l.removeClass("d-flex"),e.removeClass("unloaded"),r.removeClass("unloaded"),o.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),e=!0)},off(){e&&(s.empty(),i.hasClass("unloaded")&&i.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),c.val(""),e=!1)},isVisible(){return e}}}();function f(){return t.hasClass("loaded")}o.click(function(){p.on(),u.on(),c.focus()}),t.click(function(){p.off(),u.off()}),c.focus(function(){l.addClass("input-focus")}),c.focusout(function(){l.removeClass("input-focus")}),c.on("input",()=>{""===c.val()?f()?i.removeClass("unloaded"):u.off():(u.on(),f()&&i.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let o=!1;const t=$("body");return{toggle(){!1===o?t.attr(e,""):t.removeAttr(e),o=!o}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const o=$("#search-input"),t=ScrollHelper.getTopbarHeight();let e,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(function(){var e=$(this).scrollTop();if(!(Math.abs(a-e)<=t)){if(e>a)ScrollHelper.hideTopbar(),o.is(":focus")&&o.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=e}}(),e=!1)},250)}),$(function(){var o="div.post>h1:first-of-type";const t=$(o),n=$("#topbar-title");if(0!==t.length&&!t.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let a=t.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),t.offset().top<$(window).scrollTop()&&n.text(a);let e=new IntersectionObserver(e=>{var o,t;r?(o=$(window).scrollTop(),t=l{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const t=$('meta[name="prefer-datetime-locale"]'),e=0e,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:t=>Number(t.attr(o)),getDateFormat:t=>t.attr(a)}}();$(function(){$(".mode-toggle").click(t=>{const e=$(t.target);let o=e.prop("tagName")==="button".toUpperCase()?e:e.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const t=$("body"),e="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>t.attr(e,!1),showTopbar:()=>t.attr(e,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const t=$("#sidebar-trigger"),e=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),s=$("#search-input"),c=$("#search-hints"),d=function(){let t=0;return{block(){t=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(t)},getOffset(){return t}}}(),p={on(){t.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),t.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let t=!1;return{on(){t||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),t=!0)},off(){t&&(i.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),s.val(""),t=!1)},isVisible(){return t}}}();function f(){return o.hasClass("loaded")}e.click(function(){p.on(),u.on(),s.focus()}),o.click(function(){p.off(),u.off()}),s.focus(function(){l.addClass("input-focus")}),s.focusout(function(){l.removeClass("input-focus")}),s.on("input",()=>{""===s.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var t=function(){const t="sidebar-display";let e=!1;const o=$("body");return{toggle(){!1===e?o.attr(t,""):o.removeAttr(t),e=!e}}}();$("#sidebar-trigger").click(t.toggle),$("#mask").click(t.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),o=ScrollHelper.getTopbarHeight();let t,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var t=screen.orientation.type;"landscape-primary"!==t&&"landscape-secondary"!==t||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{t=t||!0}),setInterval(()=>{t&&(function(){var t=$(this).scrollTop();if(!(Math.abs(a-t)<=o)){if(t>a)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(t+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=t}}(),t=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const o=$(e),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let a=o.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let t=new IntersectionObserver(t=>{var e,o;r?(e=$(window).scrollTop(),o=lt.toUpperCase())),$(this).text()!==t&&$(this).text(t)}else--o}),0===o&&void 0!==e&&clearInterval(e),o}dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_relativeTime),dayjs.extend(window.dayjs_plugin_localizedFormat),0!==o&&(t.each(function(){var t,e=$(this).attr("data-toggle");void 0!==e&&"tooltip"===e&&(t=$(this).attr("data-tooltip-df"),e=LocaleHelper.getTimestamp($(this)),t=dayjs.unix(e).format(t),$(this).attr("data-original-title",t),$(this).removeAttr("data-tooltip-df"))}),r()&&(e=setInterval(r,6e4)))}); \ No newline at end of file diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js new file mode 100644 index 0000000..c4cb36d --- /dev/null +++ b/assets/js/dist/misc.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * © 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const e=$('meta[name="prefer-datetime-locale"]'),t=0t,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:e=>Number(e.attr(o)),getDateFormat:e=>e.attr(a)}}();$(function(){$(".mode-toggle").click(e=>{const t=$(e.target);let o=t.prop("tagName")==="button".toUpperCase()?t:t.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const e=$("body"),t="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>e.attr(t,!1),showTopbar:()=>e.attr(t,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const e=$("#sidebar-trigger"),t=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),s=$("#search-results"),i=$("#search-input"),c=$("#search-hints"),d=function(){let e=0;return{block(){e=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(e)},getOffset(){return e}}}(),p={on(){e.addClass("unloaded"),r.addClass("unloaded"),t.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),e.removeClass("unloaded"),r.removeClass("unloaded"),t.removeClass("unloaded")}},u=function(){let e=!1;return{on(){e||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),e=!0)},off(){e&&(s.empty(),c.hasClass("unloaded")&&c.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),i.val(""),e=!1)},isVisible(){return e}}}();function f(){return o.hasClass("loaded")}t.click(function(){p.on(),u.on(),i.focus()}),o.click(function(){p.off(),u.off()}),i.focus(function(){l.addClass("input-focus")}),i.focusout(function(){l.removeClass("input-focus")}),i.on("input",()=>{""===i.val()?f()?c.removeClass("unloaded"):u.off():(u.on(),f()&&c.addClass("unloaded"))})}),$(function(){var e=function(){const e="sidebar-display";let t=!1;const o=$("body");return{toggle(){!1===t?o.attr(e,""):o.removeAttr(e),t=!t}}}();$("#sidebar-trigger").click(e.toggle),$("#mask").click(e.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const t=$("#search-input"),o=ScrollHelper.getTopbarHeight();let e,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var e=screen.orientation.type;"landscape-primary"!==e&&"landscape-secondary"!==e||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{e=e||!0}),setInterval(()=>{e&&(function(){var e=$(this).scrollTop();if(!(Math.abs(a-e)<=o)){if(e>a)ScrollHelper.hideTopbar(),t.is(":focus")&&t.blur();else if(e+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=e}}(),e=!1)},250)}),$(function(){var t="div.post>h1:first-of-type";const o=$(t),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const s=n.text().trim();let a=o.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let e=new IntersectionObserver(e=>{var t,o;r?(t=$(window).scrollTop(),o=l{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const t=$('meta[name="prefer-datetime-locale"]'),e=0e,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:t=>Number(t.attr(o)),getDateFormat:t=>t.attr(a)}}();$(function(){$(".mode-toggle").click(t=>{const e=$(t.target);let o=e.prop("tagName")==="button".toUpperCase()?e:e.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const t=$("body"),e="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>t.attr(e,!1),showTopbar:()=>t.attr(e,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const t=$("#sidebar-trigger"),e=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),c=$("#search-input"),s=$("#search-hints"),d=function(){let t=0;return{block(){t=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(t)},getOffset(){return t}}}(),p={on(){t.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),t.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let t=!1;return{on(){t||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),t=!0)},off(){t&&(i.empty(),s.hasClass("unloaded")&&s.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),c.val(""),t=!1)},isVisible(){return t}}}();function h(){return o.hasClass("loaded")}e.click(function(){p.on(),u.on(),c.focus()}),o.click(function(){p.off(),u.off()}),c.focus(function(){l.addClass("input-focus")}),c.focusout(function(){l.removeClass("input-focus")}),c.on("input",()=>{""===c.val()?h()?s.removeClass("unloaded"):u.off():(u.on(),h()&&s.addClass("unloaded"))})}),$(function(){var t=function(){const t="sidebar-display";let e=!1;const o=$("body");return{toggle(){!1===e?o.attr(t,""):o.removeAttr(t),e=!e}}}();$("#sidebar-trigger").click(t.toggle),$("#mask").click(t.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),o=ScrollHelper.getTopbarHeight();let t,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var t=screen.orientation.type;"landscape-primary"!==t&&"landscape-secondary"!==t||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{t=t||!0}),setInterval(()=>{t&&(function(){var t=$(this).scrollTop();if(!(Math.abs(a-t)<=o)){if(t>a)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(t+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=t}}(),t=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const o=$(e),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let a=o.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let t=new IntersectionObserver(t=>{var e,o;r?(e=$(window).scrollTop(),o=l'),$("input[type=checkbox]:not([checked])").before('')}),$(function(){var t="#main > div.row:first-child > div:first-child";if(!($(t+" img").length<=0)){var e=document.querySelectorAll(t+" img[data-src]");const o=lozad(e);o.observe(),$(t+` p > img[data-src],${t} img[data-src].preview-img`).each(function(){let t=$(this).next();var e="EM"===t.prop("tagName")?t.text():"",o=$(this).attr("data-src");$(this).wrap(``)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(t+" a").has("img").addClass("img-link")}}),$(function(){var t=".code-header>button";const e="timeout",r="data-title-succeed",l="data-original-title";function n(t){if($(t)[0].hasAttribute(e)){t=$(t).attr(e);if(Number(t)>Date.now())return 1}}function i(t){$(t).attr(e,Date.now()+2e3)}function c(t){$(t).removeAttr(e)}const o=new ClipboardJS(t,{target(t){let e=t.parentNode.nextElementSibling;return e.querySelector("code .rouge-code")}});$(t).tooltip({trigger:"hover",placement:"left"});const a=function(t){let e=$(t).children();return e.attr("class")}(t);o.on("success",t=>{t.clearSelection();const e=t.trigger;var o;n(e)||(function(t){let e=$(t),o=e.children();o.attr("class","fas fa-check")}(e),o=e,t=$(o).attr(r),$(o).attr(l,t).tooltip("show"),i(e),setTimeout(()=>{var t;t=e,$(t).tooltip("hide").removeAttr(l),function(t){let e=$(t),o=e.children();o.attr("class",a)}(e),c(e)},2e3))}),$("#copy-link").click(t=>{let e=$(t.target);if(!n(e)){t=window.location.href;const o=$("");$("body").append(o),o.val(t).select(),document.execCommand("copy"),o.remove();const a=e.attr(l);t=e.attr(r);e.attr(l,t).tooltip("show"),i(e),setTimeout(()=>{e.attr(l,a),c(e)},2e3)}})}),$(function(){const t=$("#topbar-title"),c="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(r){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){const i=decodeURI(this.hash);let e=RegExp(/^#fnref:/).test(i),o=!e&&RegExp(/^#fn:/).test(i);var l=i.includes(":")?i.replace(/\:/g,"\\:"):i;let a=$(l);var n=t.is(":visible"),l=$(window).width()<$(window).height();if(void 0!==a){r.preventDefault(),history.pushState&&history.pushState(null,null,i);r=$(window).scrollTop();let t=a.offset().top-=8;t(a.focus(),$(`[${c}=true]`).length&&$(`[${c}=true]`).attr(c,!1),$(":target").length&&$(":target").attr(c,!1),(o||e)&&a.attr(c,!0),a.is(":focus")?!1:(a.attr("tabindex","-1"),a.focus(),void(ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()))))}}})}); \ No newline at end of file diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js new file mode 100644 index 0000000..97f33a1 --- /dev/null +++ b/assets/js/dist/post.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * © 2019 Cotes Chung + * MIT Licensed + */ +$(function(){$(window).scroll(()=>{50<$(this).scrollTop()&&"none"===$("#sidebar-trigger").css("display")?$("#back-to-top").fadeIn():$("#back-to-top").fadeOut()}),$("#back-to-top").click(()=>($("body,html").animate({scrollTop:0},800),!1))});const LocaleHelper=function(){const t=$('meta[name="prefer-datetime-locale"]'),e=0e,attrTimestamp:()=>o,attrDateFormat:()=>a,getTimestamp:t=>Number(t.attr(o)),getDateFormat:t=>t.attr(a)}}();$(function(){$(".mode-toggle").click(t=>{const e=$(t.target);let o=e.prop("tagName")==="button".toUpperCase()?e:e.parent();o.blur(),flipMode()})});const ScrollHelper=function(){const t=$("body"),e="data-topbar-visible",o=$("#topbar-wrapper").outerHeight();let a=0,r=!1,l=!1;return{hideTopbar:()=>t.attr(e,!1),showTopbar:()=>t.attr(e,!0),addScrollUpTask:()=>{a+=1,r=r||!0},popScrollUpTask:()=>--a,hasScrollUpTask:()=>0!0===r,unlockTopbar:()=>r=!1,getTopbarHeight:()=>o,orientationLocked:()=>!0===l,lockOrientation:()=>l=!0,unLockOrientation:()=>l=!1}}();$(function(){const t=$("#sidebar-trigger"),e=$("#search-trigger"),o=$("#search-cancel"),a=$("#main"),r=$("#topbar-title"),l=$("#search-wrapper"),n=$("#search-result-wrapper"),i=$("#search-results"),c=$("#search-input"),s=$("#search-hints"),d=function(){let t=0;return{block(){t=window.scrollY,$("html,body").scrollTop(0)},release(){$("html,body").scrollTop(t)},getOffset(){return t}}}(),p={on(){t.addClass("unloaded"),r.addClass("unloaded"),e.addClass("unloaded"),l.addClass("d-flex"),o.addClass("loaded")},off(){o.removeClass("loaded"),l.removeClass("d-flex"),t.removeClass("unloaded"),r.removeClass("unloaded"),e.removeClass("unloaded")}},u=function(){let t=!1;return{on(){t||(d.block(),n.removeClass("unloaded"),a.addClass("unloaded"),t=!0)},off(){t&&(i.empty(),s.hasClass("unloaded")&&s.removeClass("unloaded"),n.addClass("unloaded"),a.removeClass("unloaded"),d.release(),c.val(""),t=!1)},isVisible(){return t}}}();function f(){return o.hasClass("loaded")}e.click(function(){p.on(),u.on(),c.focus()}),o.click(function(){p.off(),u.off()}),c.focus(function(){l.addClass("input-focus")}),c.focusout(function(){l.removeClass("input-focus")}),c.on("input",()=>{""===c.val()?f()?s.removeClass("unloaded"):u.off():(u.on(),f()&&s.addClass("unloaded"))})}),$(function(){var t=function(){const t="sidebar-display";let e=!1;const o=$("body");return{toggle(){!1===e?o.attr(t,""):o.removeAttr(t),e=!e}}}();$("#sidebar-trigger").click(t.toggle),$("#mask").click(t.toggle)}),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){const e=$("#search-input"),o=ScrollHelper.getTopbarHeight();let t,a=0;function r(){0!==$(window).scrollTop()&&(ScrollHelper.lockOrientation(),ScrollHelper.hideTopbar())}screen.orientation?screen.orientation.onchange=()=>{var t=screen.orientation.type;"landscape-primary"!==t&&"landscape-secondary"!==t||r()}:$(window).on("orientationchange",()=>{$(window).width()<$(window).height()&&r()}),$(window).scroll(()=>{t=t||!0}),setInterval(()=>{t&&(function(){var t=$(this).scrollTop();if(!(Math.abs(a-t)<=o)){if(t>a)ScrollHelper.hideTopbar(),e.is(":focus")&&e.blur();else if(t+$(window).height()<$(document).height()){if(ScrollHelper.hasScrollUpTask())return;ScrollHelper.topbarLocked()?ScrollHelper.unlockTopbar():ScrollHelper.orientationLocked()?ScrollHelper.unLockOrientation():ScrollHelper.showTopbar()}a=t}}(),t=!1)},250)}),$(function(){var e="div.post>h1:first-of-type";const o=$(e),n=$("#topbar-title");if(0!==o.length&&!o.hasClass("dynamic-title")&&!n.is(":hidden")){const i=n.text().trim();let a=o.text().trim(),r=!1,l=0;($("#page-category").length||$("#page-tag").length)&&/\s/.test(a)&&(a=a.replace(/[0-9]/g,"").trim()),o.offset().top<$(window).scrollTop()&&n.text(a);let t=new IntersectionObserver(t=>{var e,o;r?(e=$(window).scrollTop(),o=l img[data-src],${t} img[data-src].preview-img`).each(function(){let t=$(this).next();var e="EM"===t.prop("tagName")?t.text():"",o=$(this).attr("data-src");$(this).wrap(``)}),$(".popup").magnificPopup({type:"image",closeOnContentClick:!0,showCloseBtn:!1,zoom:{enabled:!0,duration:300,easing:"ease-in-out"}}),$(t+" a").has("img").addClass("img-link")}}),$(function(){const a=LocaleHelper.attrTimestamp(),t=$(".timeago");let o=t.length,e=void 0;function r(){return t.each(function(){if(void 0!==$(this).attr(a)){let t=function(t){const e=dayjs(),o=dayjs.unix(LocaleHelper.getTimestamp(t));return 10t.toUpperCase())),$(this).text()!==t&&$(this).text(t)}else--o}),0===o&&void 0!==e&&clearInterval(e),o}dayjs.locale(LocaleHelper.locale()),dayjs.extend(window.dayjs_plugin_relativeTime),dayjs.extend(window.dayjs_plugin_localizedFormat),0!==o&&(t.each(function(){var t,e=$(this).attr("data-toggle");void 0!==e&&"tooltip"===e&&(t=$(this).attr("data-tooltip-df"),e=LocaleHelper.getTimestamp($(this)),t=dayjs.unix(e).format(t),$(this).attr("data-original-title",t),$(this).removeAttr("data-tooltip-df"))}),r()&&(e=setInterval(r,6e4)))}),$(function(){$("input[type=checkbox]").addClass("unloaded"),$("input[type=checkbox][checked]").before(''),$("input[type=checkbox]:not([checked])").before('')}),$(function(){var t=".code-header>button";const e="timeout",r="data-title-succeed",l="data-original-title";function n(t){if($(t)[0].hasAttribute(e)){t=$(t).attr(e);if(Number(t)>Date.now())return 1}}function i(t){$(t).attr(e,Date.now()+2e3)}function c(t){$(t).removeAttr(e)}const o=new ClipboardJS(t,{target(t){let e=t.parentNode.nextElementSibling;return e.querySelector("code .rouge-code")}});$(t).tooltip({trigger:"hover",placement:"left"});const a=function(t){let e=$(t).children();return e.attr("class")}(t);o.on("success",t=>{t.clearSelection();const e=t.trigger;var o;n(e)||(function(t){let e=$(t),o=e.children();o.attr("class","fas fa-check")}(e),o=e,t=$(o).attr(r),$(o).attr(l,t).tooltip("show"),i(e),setTimeout(()=>{var t;t=e,$(t).tooltip("hide").removeAttr(l),function(t){let e=$(t),o=e.children();o.attr("class",a)}(e),c(e)},2e3))}),$("#copy-link").click(t=>{let e=$(t.target);if(!n(e)){t=window.location.href;const o=$("");$("body").append(o),o.val(t).select(),document.execCommand("copy"),o.remove();const a=e.attr(l);t=e.attr(r);e.attr(l,t).tooltip("show"),i(e),setTimeout(()=>{e.attr(l,a),c(e)},2e3)}})}),$(function(){const t=$("#topbar-title"),c="scroll-focus";$("a[href*='#']").not("[href='#']").not("[href='#0']").click(function(r){if(this.pathname.replace(/^\//,"")===location.pathname.replace(/^\//,"")&&location.hostname===this.hostname){const i=decodeURI(this.hash);let e=RegExp(/^#fnref:/).test(i),o=!e&&RegExp(/^#fn:/).test(i);var l=i.includes(":")?i.replace(/\:/g,"\\:"):i;let a=$(l);var n=t.is(":visible"),l=$(window).width()<$(window).height();if(void 0!==a){r.preventDefault(),history.pushState&&history.pushState(null,null,i);r=$(window).scrollTop();let t=a.offset().top-=8;t(a.focus(),$(`[${c}=true]`).length&&$(`[${c}=true]`).attr(c,!1),$(":target").length&&$(":target").attr(c,!1),(o||e)&&a.attr(c,!0),a.is(":focus")?!1:(a.attr("tabindex","-1"),a.focus(),void(ScrollHelper.hasScrollUpTask()&&ScrollHelper.popScrollUpTask()))))}}})}); \ No newline at end of file diff --git a/assets/js/dist/pvreport.min.js b/assets/js/dist/pvreport.min.js new file mode 100644 index 0000000..2a8aca1 --- /dev/null +++ b/assets/js/dist/pvreport.min.js @@ -0,0 +1,6 @@ +/*! + * Chirpy v5.1.0 (https://github.com/cotes2020/jekyll-theme-chirpy/) + * © 2019 Cotes Chung + * MIT Licensed + */ +const getInitStatus=function(){let t=!1;return()=>{var e=t;return t=t||!0,e}}(),PvOpts=function(){function t(e){return $(e).attr("content")}function e(e){e=t(e);return void 0!==e&&!1!==e}return{getProxyMeta(){return t("meta[name=pv-proxy-endpoint]")},getLocalMeta(){return t("meta[name=pv-cache-path]")},hasProxyMeta(){return e("meta[name=pv-proxy-endpoint]")},hasLocalMeta(){return e("meta[name=pv-cache-path]")}}}(),PvStorage=function(){const a={KEY_PV:"pv",KEY_PV_SRC:"pv_src",KEY_CREATION:"pv_created_date"},t={LOCAL:"same-origin",PROXY:"cors"};function r(e){return localStorage.getItem(e)}function o(e,t){localStorage.setItem(e,t)}function n(e,t){o(a.KEY_PV,e),o(a.KEY_PV_SRC,t),o(a.KEY_CREATION,(new Date).toJSON())}return{keysCount(){return Object.keys(a).length},hasCache(){return null!==localStorage.getItem(a.KEY_PV)},getCache(){return JSON.parse(localStorage.getItem(a.KEY_PV))},saveLocalCache(e){n(e,t.LOCAL)},saveProxyCache(e){n(e,t.PROXY)},isExpired(){let e=new Date(r(a.KEY_CREATION));return e.setHours(e.getHours()+1),Date.now()>=e.getTime()},isFromLocal(){return r(a.KEY_PV_SRC)===t.LOCAL},isFromProxy(){return r(a.KEY_PV_SRC)===t.PROXY},newerThan(e){return PvStorage.getCache().totalsForAllResults["ga:pageviews"]>e.totalsForAllResults["ga:pageviews"]},inspectKeys(){if(localStorage.length===PvStorage.keysCount())for(let e=0;er&&countUp(r,o,a.attr("id"))):a.text((new Intl.NumberFormat).format(o))}function displayPageviews(e){if(void 0!==e){let t=getInitStatus();const a=e.rows;0<$("#post-list").length?$(".post-preview").each(function(){var e=$(this).find("a").attr("href");tacklePV(a,e,$(this).find(".pageviews"),t)}):0<$(".post").length&&(e=window.location.pathname,tacklePV(a,e,$("#pv"),t))}}function fetchProxyPageviews(){PvOpts.hasProxyMeta()&&$.ajax({type:"GET",url:PvOpts.getProxyMeta(),dataType:"jsonp",jsonpCallback:"displayPageviews",success:e=>{PvStorage.saveProxyCache(JSON.stringify(e))},error:(e,t,a)=>{console.log("Failed to load pageviews from proxy server: "+a)}})}function fetchLocalPageviews(t=!1){return fetch(PvOpts.getLocalMeta()).then(e=>e.json()).then(e=>{t&&PvStorage.isFromProxy()&&PvStorage.newerThan(e)||(displayPageviews(e),PvStorage.saveLocalCache(JSON.stringify(e)))})}$(function(){$(".pageviews").length<=0||(PvStorage.inspectKeys(),PvStorage.hasCache()?(displayPageviews(PvStorage.getCache()),PvStorage.isExpired()?PvOpts.hasLocalMeta()?fetchLocalPageviews(!0).then(fetchProxyPageviews):fetchProxyPageviews():PvStorage.isFromLocal()&&fetchProxyPageviews()):PvOpts.hasLocalMeta()?fetchLocalPageviews().then(fetchProxyPageviews):fetchProxyPageviews())}); \ No newline at end of file diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..c4c83e9 --- /dev/null +++ b/categories/index.html @@ -0,0 +1 @@ + Categories | Lewis's Blog
Home Categories
Categories
Cancel
diff --git a/categories/north-star/index.html b/categories/north-star/index.html new file mode 100644 index 0000000..aefcf29 --- /dev/null +++ b/categories/north-star/index.html @@ -0,0 +1 @@ + North Star | Lewis's Blog
Home Categories North Star
Category
Cancel
diff --git a/categories/self-improvement/index.html b/categories/self-improvement/index.html new file mode 100644 index 0000000..bbabf97 --- /dev/null +++ b/categories/self-improvement/index.html @@ -0,0 +1 @@ + Self-improvement | Lewis's Blog
Home Categories Self-improvement
Category
Cancel

Self-improvement 4

diff --git a/categories/summary/index.html b/categories/summary/index.html new file mode 100644 index 0000000..e3391ab --- /dev/null +++ b/categories/summary/index.html @@ -0,0 +1 @@ + Summary | Lewis's Blog
Home Categories Summary
Category
Cancel
diff --git a/categories/tech/index.html b/categories/tech/index.html new file mode 100644 index 0000000..0c3e4d8 --- /dev/null +++ b/categories/tech/index.html @@ -0,0 +1 @@ + Tech | Lewis's Blog
Home Categories Tech
Category
Cancel
diff --git a/categories/thought/index.html b/categories/thought/index.html new file mode 100644 index 0000000..7c3a23e --- /dev/null +++ b/categories/thought/index.html @@ -0,0 +1 @@ + Thought | Lewis's Blog
Home Categories Thought
Category
Cancel
diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..78a6958 --- /dev/null +++ b/feed.xml @@ -0,0 +1 @@ + https://freedomlewis.github.io/Lewis's BlogA minimal, responsive, and powerful Jekyll theme for presenting professional writing. 2024-04-17T04:30:32+00:00 Lewis Lee https://freedomlewis.github.io/ Jekyll © 2024 Lewis Lee /assets/img/favicons/favicon.ico /assets/img/favicons/favicon-96x96.png Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It2024-04-17T04:12:00+00:00 2024-04-17T04:12:00+00:00 https://freedomlewis.github.io/posts/Unveiling-Coroutines-1/ Lewis Lee Introduction The world of asynchronous programming thrives on concurrency, and coroutines have emerged as powerful tools to manage concurrent tasks efficiently. But within the realm of coroutines, there lies a distinction: stackful and stackless. This blog post will delve into these concepts and explore how Kotlin leverages stackless coroutines for asynchronous mastery. Stackful Coroutines: A... Mastering Kotlin Coroutines in Android Development2024-04-16T07:19:00+00:00 2024-04-16T07:19:00+00:00 https://freedomlewis.github.io/posts/master-kotlin-coroutine/ Lewis Lee In the ever-evolving world of Android development, building responsive and efficient apps is paramount. Traditional threading approaches often lead to complex code and potential pitfalls. Enter Kotlin coroutines, a powerful tool that simplifies asynchronous programming, making your Android apps smoother and more maintainable. This blog post delves into the world of Kotlin coroutines, guiding y... Summary for 20232023-12-29T08:47:00+00:00 2024-04-16T07:58:03+00:00 https://freedomlewis.github.io/posts/Summary-Of-2023/ Lewis Lee Improvements: Enhanced proficiency in English communication skills. Prioritized quality time with my family, especially with my young daughter. Key Lessons Learned: Acknowledged the importance of prioritizing self-care for both physical and mental well-being. Cultivated patience in relationships, particularly with my spouse and parents. Developed resilience against external nega... Do it Anyway — Mother Teresa2023-05-17T07:28:00+00:00 2024-04-16T07:50:35+00:00 https://freedomlewis.github.io/posts/Do-it-Anyway/ Lewis Lee People are often unreasonable, illogical, and self-centered. Forgive them anyway. If you are kind, people may accuse you of selfish ulterior motives. Be kind anyway. If you are successful, you will win some false friends and some true enemies. Succeed anyway. If you are honest and frank, people may cheat you. Be honest and frank anyway. What you spend years building, someone could destroy o... 步步高企业文化2022-08-01T02:15:00+00:00 2024-04-16T07:50:35+00:00 https://freedomlewis.github.io/posts/BBK-core-values/ Lewis Lee 什么是企业文化? 是指企业经营实践过程中,逐步形成的为全体员工所认同、遵守,带有本企业特色的价值观念。企业文化是无形的制度,是共同的语言,是共同的想法,是一致的行为方式。 一、愿景 愿景是一种意愿的表达“它定义了我们渴望成为什么,达到什么境界,创造出什么”是公司为之奋斗的心愿和远景。 我们公司的愿景:成为更健康、更长久的企业。 利润(赚钱)是生存的必要条件,是实现更健康、更长久的手段。利润就像人体的氧气、食物和水一样 —— 没有他们,就没有生命。创造利润(赚钱)是公司的责任,一个不赚钱的公司是不能长久的。 但是,赚钱不是我们的最终目的的,它是实现愿景的过程。这就像氧气、食物和水一样 —— 这些东西不可或缺,但它们不是生命的目的。 所以,我们需要创造利润,但我们更需要追求更广泛、更有意义的理想 —— 成为更健康、更长久的世界一流企业。尽管在某些事情上我们可能可以获... diff --git a/google00d8d3d181b1bfee.html b/google00d8d3d181b1bfee.html new file mode 100644 index 0000000..f0e98a7 --- /dev/null +++ b/google00d8d3d181b1bfee.html @@ -0,0 +1 @@ +google-site-verification: google00d8d3d181b1bfee.html \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..ed15c48 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + Lewis's Blog
Home
Lewis's Blog
Cancel

Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It

Introduction The world of asynchronous programming thrives on concurrency, and coroutines have emerged as powerful tools to manage concurrent tasks efficiently. But within the realm of coroutines,...

Mastering Kotlin Coroutines in Android Development

In the ever-evolving world of Android development, building responsive and efficient apps is paramount. Traditional threading approaches often lead to complex code and potential pitfalls. Enter Kot...

Summary for 2023

Improvements: Enhanced proficiency in English communication skills. Prioritized quality time with my family, especially with my young daughter. Key Lessons Learned: Acknowledged the imp...

Do it Anyway — Mother Teresa

People are often unreasonable, illogical, and self-centered. Forgive them anyway. If you are kind, people may accuse you of selfish ulterior motives. Be kind anyway. If you are successful, you wi...

步步高企业文化

什么是企业文化? 是指企业经营实践过程中,逐步形成的为全体员工所认同、遵守,带有本企业特色的价值观念。企业文化是无形的制度,是共同的语言,是共同的想法,是一致的行为方式。 一、愿景 愿景是一种意愿的表达“它定义了我们渴望成为什么,达到什么境界,创造出什么”是公司为之奋斗的心愿和远景。 我们公司的愿景:成为更健康、更长久的企业。 利润(赚钱)是生存的必要条件,是实现更健康、更...

段永平 2011 年浙江大学毕业演讲

很荣幸受到邀请,能有机会代表五十万校友跟新毕业的校友说两句。我一直在想,两三分钟我要讲点什么,能够让在场同学在二三十年后还能记得住,并且有所得益。不知道大家现在心情如何,我依然还记得自己在毕业时候那种兴奋、茫然、激动、困惑、不安、满怀希望、又有点不知所措的复杂心情。二十八年过去了,虽然这种感觉偶尔还会出现,但是在经历了这段人生之路后,会有些感悟。今天,主要以我自己的经历,跟大家分享三点...

是非,毁誉,得失

[湖南] 岳麓书院 上联: 是非审之于己,毁誉听之于人,得失安之于数,陟岳麓峰头,朗月清风,太极悠然可会 下联: 君亲恩何以酬,民物命何以立,圣贤道何以传,登赫曦台上,衡云湘水,斯文定有攸归

竹石

[清] 郑燮 咬定青山不放松 立根原在破岩中 千磨万击还坚劲 任尔东西南北风

定风波

[宋] 苏轼 三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。 莫听穿林打叶声,何妨吟啸且徐行。 竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。 料峭春风吹酒醒,微冷,山头斜照却相迎。 回首向来萧瑟处,归去,也无风雨也无晴。

君子

[中庸] 君子素其位而行,不愿乎其外。 素富贵,行乎富贵; 素贫贱,行乎贫贱; 素夷狄,行乎夷狄; 素患难,行乎患难。 君子无入而不自得焉。 在上位,不陵下; 在下位,不援上。 正己而不求于人,则无怨。 上不怨天,下不尤人。 故君子居易以俟命,小人行险以徼幸。 子曰:“射有似乎君子,失诸正鹄,反求诸其身。”

diff --git a/norobots/index.html b/norobots/index.html new file mode 100644 index 0000000..2d7922d --- /dev/null +++ b/norobots/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/page2/index.html b/page2/index.html new file mode 100644 index 0000000..46ac02c --- /dev/null +++ b/page2/index.html @@ -0,0 +1 @@ + Lewis's Blog
Home
Lewis's Blog
Cancel

Android Studio 手动关联源码

备注 如果只是方便在 Android Studio 中查看 Android Framework 的源码,那么最好的方法还是直接通过 Android Studio 的 Android SDK 页面下载。本文描述的问题和解决方案是在网络出问题的情况下遇到的,正常开发过程应该不会有类似的问题,仅做记录和参考。 问题 可能是网络出了问题,当通过 Android Studio 下载 API Leve...

Kotlin double 精度问题

问题 在项目上有同事写了一段代码,主要功能是将用户输入的纯数字字符串按照美国货币格式展示,比如输入 “1234” -&gt; “1,234”。他的实现方法是先将字符串转换成 double ,再通过 NumberFormat 将其格式化为货币格式。在字符串长度小于16时,能正常工作,但是当字符串长度大于等于16时就会出现异常,比如用户输入的字符串是 “9999999999999999” (1...

Android 模拟器不能使用电脑的代理网络

问题 做 Android 开发经常需要和模拟器打交道,在特定的业务场景下,需要模拟器能够使用电脑的 VPN 网络,不做一些特别的配置,模拟器是不能使用电脑 VPN 网络的。要解决模拟器的网络问题,需要弄清楚下面三个问题: 模拟器网络工作原理 网络代理的工作原理 如何让模拟器使用电脑的网络代理 这三个问题都能在 Google 给的 模拟器网络搭建 找到答案 模拟器网络工作...

开始

想了很久,决定通过博客来记录自己的成长历程,2017年 已经用 github pages 搭建了自己的博客系统,但是一直未真正开始写。最近反复思考之后,觉得博客对于未来自己要做的事情蛮重要的,所以重新开始了,希望自己能够一直坚持下来,也相信自己能够坚持下来。亡羊补牢,为时未晚!

diff --git a/posts/BBK-core-values/index.html b/posts/BBK-core-values/index.html new file mode 100644 index 0000000..1c3a652 --- /dev/null +++ b/posts/BBK-core-values/index.html @@ -0,0 +1 @@ + 步步高企业文化 | Lewis's Blog
Home 步步高企业文化
Post
Cancel

步步高企业文化

什么是企业文化?

是指企业经营实践过程中,逐步形成的为全体员工所认同、遵守,带有本企业特色的价值观念。企业文化是无形的制度,是共同的语言,是共同的想法,是一致的行为方式。

一、愿景

愿景是一种意愿的表达“它定义了我们渴望成为什么,达到什么境界,创造出什么”是公司为之奋斗的心愿和远景。

我们公司的愿景:成为更健康、更长久的企业。

利润(赚钱)是生存的必要条件,是实现更健康、更长久的手段。利润就像人体的氧气、食物和水一样 —— 没有他们,就没有生命。创造利润(赚钱)是公司的责任,一个不赚钱的公司是不能长久的。

但是,赚钱不是我们的最终目的的,它是实现愿景的过程。这就像氧气、食物和水一样 —— 这些东西不可或缺,但它们不是生命的目的。

所以,我们需要创造利润,但我们更需要追求更广泛、更有意义的理想 —— 成为更健康、更长久的世界一流企业。尽管在某些事情上我们可能可以获得短期利益(表面上看起来似乎暂时“对公司有利”),但如果因此而影响到公司长远的安全和健康,这种事情我们决不能做。

追求愿景意味着我们必须要脚踏实地,做对的事情,不是本分的事情坚决不做;同时要求我们在永恒保存核心价值的基础上,积极改变除此之外的任何东西,以获得追求进步的驱动力。

我们在创建基业长青的事业,这是我们的诺言,是不言自明的真理。50年后,100年后,甚至更长的时间后,当人们审视步步高公司时,仍然会说:“这是一个基业长青的伟大公司…….”

二、使命

使命是公司根本的、崇高的责任和义务,是公司存在的基本原因,它定义了不变的“我们为什么存在” 。

我们公司的使命:

  • 对消费者,提供品质优良的产品和服务。

  • 对员工,营造和谐、相互尊重的工作氛围。

  • 对商业伙伴,提供公平合理、对等互利的合作平台。

  • 对股东,使其投入的股本有高于社会平均收益的回报。

 

  1. 我们的首要责任是对所有购买和使用我们产品的消费者负责。我们的产品品质和服务品质必须要满足消费者的需求,并且高于对竞争对手的满意度。我们必须不断致力于降低产品的成本,从而让更多的消费者能购买和使用我们的产品。我们必须不断缩短产品订单的交货期,以最快的速度满足消费者的需要。我们致力于在产品和服务方面给顾客带来超凡的消费体验,让消费者感受到产品的精美和高品质、服务的完善和细心。

  2. 我们的第二个责任是对在公司所有岗位工作的全体同仁负责。我们要为员工提高学习和锻炼的机会,帮助员工提高基本素质、业务能力和综合素质。我们要为既合适又合格的员工提供晋升的机会,在考核一个人时以道德品质和价值观念为基本依据。我们提供的工资必须公平而适当,管理者必须公平公正,员工的工作环境必须整洁安全。我们尊重和珍视每位员工的价值,我们相信,员工应该和公司共同成长,这是我们的责任和骄傲。

  3. 我们的第三个责任是对我们的供应商、经销商及其他所有商业伙伴负责。我们做生意追求的是“商道”而非“商术”,我们首先要考虑合作伙伴的应有利润。在此基础上再追求自己的合理利润,给每一位商业伙伴提供公平互利的合作平台。我们选择和评价商业伙伴时,关注的是品质、价格和服务,以及诚信合作的一贯性,而不需考虑关系的亲疏及其他社会因素。我们希望和我们的合作伙伴共同成长。

  4. 我们的第四个责任是对股东负责。我们必须赚取合理的相当利润,才能研发新项目、制造新产品、实践新构想、制订新规划、支付合适的工资。我们尽到这一切责任后,股东们应该得到公平合理的回报。公司健康、长久的发展离不开投资者(股东)的信任和支持,我们必须给予投资者(股东)坚信的信心和公平的报偿。这是公司得以存在的基础,也是我们诚信文化的体现。

三、核心价值观

核心价值观是公司的精神和持久的原则——是一套不需要外部调整的永恒指导原则,它对于公司内部的人拥有的价值和意义。它定义了不变的“我们代表什么” 。

我们核心价值观的中心是“本分” ,它是我们价值观的灵魂,它决定了其他所有的观念和处事的原则。本分做到之后,其他的核心价值观都会被涵盖进去。我们核心价值观的基础是“消费者导向” ,消费者的需求(含显在和潜在的需求)是所有企业活动的原始起点。

本分

  • 做对的事情(有所为有所不为),把事情做对;

  • 专注于自己所从事的工作,把结果放到第一位;

  • 隔离外力,在平常的心态下,把握住我们应该做的合理方向;

  • 本份规范了与人合作的态度——我不赚人便宜;

  • 本分是当出现问题时,首先求责于己的态度。

压力和诱惑往往会使我们平常清静的心态受到震荡,而这种改变的结果大多将使我们偏离正确的方向。本分则是在决策和行动时,我们能够首先将这种外在的作用力先行抛开,在平常的心态下,把握住我们应该做的合理的方向,而不是首先被外在的作用力所牵引,以致作出错误的选择。

我们宁愿自己吃点小亏,也不会去赚别人的便宜,这样做生意往往才能够取得双赢,也才能长久。我们在做生意时追求的是“商道”而非“商术”。 “商道”要求我们首先要考虑合作伙伴的应有利益,在此基础上再追求自己的合理利润,而绝非为了赚钱不择手段、损人利己。

出现问题时,我们不需要任何借口和理由,我们应该首先求责于己,反省自己做错了什么,应该如何去改善。

如何做到本分:

  • 本分是付出代价的坚持;
  • 本分是充分考虑对方的立场,己所不欲勿施于人;
  • 本分是兢兢业业,做自己该做的事;
  • 本分是不骄不躁,克己尽职;
  • 本分是诚实守信,说到做到;
  • 本分是不占小便宜;

本分和诚信的不同:

本分和诚信的不同是在于诚信是双方面的,有约定的,而本分是不需要约定的,是自己主动知道要这样去做的。本分比诚信要高一个境界,它体现的是我们灵魂深处的东西。本分涵盖了其他几项核心价值观(诚信、团队、品质、消费者导向),而诚信是本分一个方面的体现。

诚信

  • 百德诚为先,百事信为本;
  • 不轻易的承诺,如果承诺了就一定要做到;
  • 诚,即诚实、无欺,内诚于心;
  • 信,即守承诺、讲信用,说到做到,外信于人,即使遭遇挫折、付出代价也要坚守;
  • 诚信是一种责任、准则和资源。

我们要在自己的内心深处架起一杆道德天平,诚者不伪,无论外部环境怎样变化,都要忠实于内心的道德法则,真诚为人,不自欺,不欺人,这样才是内诚于心。

我们忠实于自己做出的每一个承诺,言必行,行必果,即使要为此付出艰难的努力、巨大的代价,也要恪守“说到就要做到”的准则,这样才能外信于人。

诚信不仅是一种品行,更是一种责任,不仅是一种道义,更是一种资源。我们把产品推向社会的过程。我们卖给顾客的不仅是商品,更是用心铸造的庄严承诺。我们用心设计品质、制造产品,用心沟通伙伴、服务顾客,用心锤炼品牌、树立形象。我们约束自己,诚笃于胸;我们言出必行,行出必果。

团队

  • 主动配合支持他人;

  • 实现优势的整合,追求共赢;

  • 没有团队的成功,就没有个人的成功;

  • 相互信任,坦诚沟通,将个人融入团队,以共同愿景为最高目标。

  • 尊重每一位员工的价值,我们相信,员工和公司共同成长,这是我们的责任和骄傲。

我们每个人的成功,都必须建立在团队成功的基础上。步步高的任何人,无论是要个人的能力价值得到发挥,还是要物质利益得到提高,前提都必须是步步高整个团队要取得成功。而一个成功的团队又会带给我们很多有形和无形的资产,会让我们终生受益。

团队中难免会有分歧,重要的是不能让分歧影响团队目标的达成。这就需要我们时刻用团队目标和共同愿景来审视自我,自觉将个人融入团队,相互信任,坦诚沟通,这样我们就能够撇弃偏见,协同工作,达成我们的共同目标。

步步高珍重和珍视每一位员工的价值。我们鼓励员工在工作中不断提升自我,并努力激发员工的潜能。因为我们相信,员工应该和公司共同成长,这是我们的责任和骄傲。

品质

  • 没有品质一切都是负数;

  • 以品质取得信任,以品牌提升价值;

  • 品质是做出来的,不是检验出来的;

  • 品质就是生命;

  • 品质是精益求精的一种追求,是必须要满足顾客的需求并且高于对竞争对手的满意度;

  • 品质是设计出来的,是全员关心和环环相扣的一个系统工程;

  • 不断提升产品品质,这不仅是我们的价值,更是我们的尊严。

顾客需求的是全面的品质,包括产品的精美度、人性化、可靠性和性价比。我们不仅要满足顾客需求,更要比竞争对手做得更多更好,让消费者更满意。品质是精益求精的一种追求,是一种要不断靠近、一种发自内心的真诚的向往和渴望。

品质是设计出来的,我们会主动贴近市场,努力发掘所有可能为顾客带来愉悦感受的潜在机会,并将之转化为设计语言。我们在设计产品时,以追求产品的人性化、精美度和零缺陷为出发点,旨在产品推出时具有震撼力,能够给顾客带来超凡的消费体验,消费者能够感受到产品的精美与高品质。这就是我们一贯坚持的开发“英雄产品”的思路。

我们有这样的共识:步步高公司与“步步高”品牌同生共荣,而步步高的品质又是步步高人价值与尊严的起点。我们深知,品质是企业生存之更本,没有品质就没有一切,我们对品质的追求永无止境。

品质方针

  • 不懈进取,步步登高,为用户提供令其完全满意的产品和服务,我们的步步高品牌,必须是高品质的象征。

假设大家工作时99.9%地投入,那么:

每小时将有1.6万件邮件在邮寄途中丢失; 每小时会有2.2万张支票被存入错误的银行账户; 每天将有50个新生儿因身份被搞混,而被交给错误的父母; 医院里每星期会有500例错误手术; 药剂师每年将给2万个病人开错药; 你的心脏每年会停止跳动3.2万次。 所以:品质就是生命!

消费者导向

  • 消费者是检验我们工作的唯一标准;

  • 步步高不仅注重消费者需求,也注重消费者购买后的评价。

  • 从消费者的角度来设计产品、提高服务,避免做貌似消费者喜欢的东西;

  • 通过科学、严谨的市场调查,充分地研究消费者的需求,消费者的需求是所有企业活动的原始起点;

  • 在公司内部的日常工作中,要坚持内部客户导向的原则。

我们公司的所有经营活动必须要首先从消费者的角度来看,这是消费者需要的吗,消费者会喜欢吗,然后再从这个角度来开发产品、提供服务——这就是消费者导向。我们要坚决避免做貌似消费者喜欢的东西。

市场上必定存在这样的需求:它是消费者所需要的、我们能够做出优势,并且能比竞争对手更好的满足消费者。我们要去寻找、挖掘和发现这种需求,巧妙的将产品在功能和技术上的创新优势转化为消费者的利益,在满足消费者需求和发挥我们自身特色上保持良好的平衡。

在公司内部,有我们个自的内部顾客 。我们工作时首先要弄清楚,自己的直接客户是谁,他喜欢我所做的工作吗,我所到的结果正是他需要的吗。我们工作的目的不是为了完成任务,而是为了创造卓越的结果,使顾客更满意。内部客户导向是消费者导向在公司内部日常工作中的表现。

———— 这叫彻底消费者导向!

     

作者:思弦君 链接:https://xueqiu.com/2740739644/172093568 来源:雪球 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/Do-it-Anyway/index.html b/posts/Do-it-Anyway/index.html new file mode 100644 index 0000000..f1919ae --- /dev/null +++ b/posts/Do-it-Anyway/index.html @@ -0,0 +1 @@ + Do it Anyway — Mother Teresa | Lewis's Blog
Home Do it Anyway — Mother Teresa
Post
Cancel

Do it Anyway — Mother Teresa

People are often unreasonable, illogical, and self-centered.
Forgive them anyway.

If you are kind,
people may accuse you of selfish ulterior motives.
Be kind anyway.

If you are successful,
you will win some false friends and some true enemies.
Succeed anyway.

If you are honest and frank,
people may cheat you.
Be honest and frank anyway.

What you spend years building,
someone could destroy overnight.
Build anyway.

If you find serenity and happiness,
they may be jealous.
Be happy anyway.

The good you do today,
people will often forget tomorrow.
Do good anyway.

Give the world the best you have,
and it may never be enough.
Give the best you’ve got anyway.

You see,
in the final analysis it is between you and God;
it was never between you and them anyway.

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/Duan-ZheJiang-University/index.html b/posts/Duan-ZheJiang-University/index.html new file mode 100644 index 0000000..c633f00 --- /dev/null +++ b/posts/Duan-ZheJiang-University/index.html @@ -0,0 +1 @@ + 段永平 2011 年浙江大学毕业演讲 | Lewis's Blog
Home 段永平 2011 年浙江大学毕业演讲
Post
Cancel

段永平 2011 年浙江大学毕业演讲

很荣幸受到邀请,能有机会代表五十万校友跟新毕业的校友说两句。我一直在想,两三分钟我要讲点什么,能够让在场同学在二三十年后还能记得住,并且有所得益。不知道大家现在心情如何,我依然还记得自己在毕业时候那种兴奋、茫然、激动、困惑、不安、满怀希望、又有点不知所措的复杂心情。二十八年过去了,虽然这种感觉偶尔还会出现,但是在经历了这段人生之路后,会有些感悟。今天,主要以我自己的经历,跟大家分享三点,关于毕业之后,做个什么样的人。

 

第一,做个胸无“大”志的人。

首先要强调的是,这里的“大”是好大喜功的大。所谓胸无“大”志,指的是脚踏实地的做事态度。我们要胸无“大”志地去做自己喜欢的事情,同时,还要努力去喜欢自己在做的事情。我觉得,只有在做自己喜欢的事情的时候,才能激发自己最大的潜力,所以每个人首先要花很大精力去寻找自己喜欢的事情。同时,我也要强调后面一点,喜欢自己在做的事情。大学刚毕业就马上找到自己喜欢的事情,是可遇不可求的。很多时候,当我们投入到自己的工作中后,会慢慢找到很多乐趣,在努力的过程中,会渐渐发现自己喜欢做什么。所以,努力喜欢自己做的事情很重要。胸无“大”志,需要大家慢慢体会。

第二, 做个有所不为的人。

我们有句话叫做“有所为,有所不为”。我们常常注意到要“有所为”,但我要强调的是“有所不为”。我很早就听说过,要做对的事情,然后把事情做对。在经历了这些年,经历很多次的头破血流之后,我才真正开始明白这句话是什么意思。所谓做对的事情,就是知道是错的事情决不要做,知道做错了马上要改。这个说起来容易,做起来困难。知道做错了马上改,不管多大的代价,到最后往往是最小的代价。我看到很多人明知是错,犯了错之后抱着侥幸的心态,浪费很多年之后最后要付出更大的代价。希望大家不要碰到这样的情况。很多人问我,为什么我们公司在消费电子领域这么多年之后一直存在,我们就是守诚信、平常心、坚守本分。本分就是有所不为的意思。把事情做对,本身是个学习的过程,这个过程当中是要犯很多错误的。有种说法“不怕犯错误”,我们做对的事情时,要避免犯错,但把事情做对的过程中会犯很多错误,这个大家要理解。还有个说法“永不放弃”,就是要坚持对的事情,如果是错的事情,要立即回头。

第三,做个正直的人。

无论能否做到以上两点,但最基本的是要做个正直的人。我不知道做个正直的人,会有什么回报,但至少让人一生坦然。

我就讲这三点,大学毕业是我们进入社会大学的起点,我们要学习的东西是无穷无尽的。最后,衷心祝愿每一位同学都能找到属于自己的精彩人生。

     

作者:思弦君 链接:https://xueqiu.com/2740739644/172834396 来源:雪球 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/POEM-Bamboo-In-The-Stone/index.html b/posts/POEM-Bamboo-In-The-Stone/index.html new file mode 100644 index 0000000..4db1896 --- /dev/null +++ b/posts/POEM-Bamboo-In-The-Stone/index.html @@ -0,0 +1 @@ + 竹石 | Lewis's Blog
Home 竹石
Post
Cancel

竹石

[清] 郑燮

咬定青山不放松

立根原在破岩中

千磨万击还坚劲

任尔东西南北风

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/POEM-Gentleman/index.html b/posts/POEM-Gentleman/index.html new file mode 100644 index 0000000..8618789 --- /dev/null +++ b/posts/POEM-Gentleman/index.html @@ -0,0 +1 @@ + 君子 | Lewis's Blog
Home 君子
Post
Cancel

君子

[中庸]

君子素其位而行,不愿乎其外。
素富贵,行乎富贵;
素贫贱,行乎贫贱;
素夷狄,行乎夷狄;
素患难,行乎患难。
君子无入而不自得焉。

在上位,不陵下;
在下位,不援上。
正己而不求于人,则无怨。
上不怨天,下不尤人。
故君子居易以俟命,小人行险以徼幸。
子曰:“射有似乎君子,失诸正鹄,反求诸其身。”

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/POEM-Right-And-Wrong/index.html b/posts/POEM-Right-And-Wrong/index.html new file mode 100644 index 0000000..338c3c1 --- /dev/null +++ b/posts/POEM-Right-And-Wrong/index.html @@ -0,0 +1 @@ + 是非,毁誉,得失 | Lewis's Blog
Home 是非,毁誉,得失
Post
Cancel

是非,毁誉,得失

[湖南] 岳麓书院

上联:
是非审之于己,毁誉听之于人,得失安之于数,陟岳麓峰头,朗月清风,太极悠然可会

下联: 君亲恩何以酬,民物命何以立,圣贤道何以传,登赫曦台上,衡云湘水,斯文定有攸归

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/POEM-Still-the-Turbulence/index.html b/posts/POEM-Still-the-Turbulence/index.html new file mode 100644 index 0000000..63bad48 --- /dev/null +++ b/posts/POEM-Still-the-Turbulence/index.html @@ -0,0 +1 @@ + 定风波 | Lewis's Blog
Home 定风波
Post
Cancel

定风波

[宋] 苏轼

三月七日,沙湖道中遇雨。雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。

莫听穿林打叶声,何妨吟啸且徐行。

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。

料峭春风吹酒醒,微冷,山头斜照却相迎。

回首向来萧瑟处,归去,也无风雨也无晴。

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/Summary-Of-2023/index.html b/posts/Summary-Of-2023/index.html new file mode 100644 index 0000000..82ba095 --- /dev/null +++ b/posts/Summary-Of-2023/index.html @@ -0,0 +1 @@ + Summary for 2023 | Lewis's Blog
Home Summary for 2023
Post
Cancel

Summary for 2023

Improvements:

  1. Enhanced proficiency in English communication skills.
  2. Prioritized quality time with my family, especially with my young daughter.

Key Lessons Learned:

  1. Acknowledged the importance of prioritizing self-care for both physical and mental well-being.
  2. Cultivated patience in relationships, particularly with my spouse and parents.
  3. Developed resilience against external negativity and opinions.
  4. Embraced challenges in additional work opportunities.
  5. Maintained focus on personal and professional goals.
  6. Fostered confidence in my chosen path and adopted a more positive mindset.
  7. Practiced tuning out mental noise and finding inner peace.
  8. Embraced the concept of accepting things beyond our control.

Hopes for 2024:

  1. Apply the lessons learned in 2023.
  2. Increase earnings through personal efforts.
  3. Plan and enjoy family travels.
  4. Attain a native speaker level of English proficiency.
This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/Unveiling-Coroutines-1/index.html b/posts/Unveiling-Coroutines-1/index.html new file mode 100644 index 0000000..ddb389d --- /dev/null +++ b/posts/Unveiling-Coroutines-1/index.html @@ -0,0 +1 @@ + Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It | Lewis's Blog
Home Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It
Post
Cancel

Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It

Introduction

The world of asynchronous programming thrives on concurrency, and coroutines have emerged as powerful tools to manage concurrent tasks efficiently. But within the realm of coroutines, there lies a distinction: stackful and stackless. This blog post will delve into these concepts and explore how Kotlin leverages stackless coroutines for asynchronous mastery.

Stackful Coroutines: A Familiar Friend

Imagine a function call. It utilizes a portion of the program’s memory stack to store information about its execution, local variables, and the return address. Stackful coroutines operate similarly. Each coroutine possesses its own stack space, just like a regular function.

  • Suspension and Resumption: When a stackful coroutine needs to pause its execution (yield control), it saves its current state (local variables, program counter) on its dedicated stack. When resumed, it retrieves the state from the stack and continues execution.

  • Advantages:

    • Simpler Implementation: The stack-based approach mirrors function calls, making stackful coroutines easier to understand and debug.
    • Control Granularity: Developers have more control over the coroutine’s stack allocation and memory usage.
  • Disadvantages:

    • Stack Overflow Woes: Each coroutine’s dedicated stack space can lead to stack overflow errors if too many coroutines are created.
    • Context Switching Overhead: Switching between coroutines involves saving and restoring the state on the stack, which can be inefficient for a high number of coroutines.

Stackless Coroutines: A Lightweight Alternative

Stackless coroutines break free from the constraints of dedicated stacks. Here’s what sets them apart:

  • No Stack, No Problem: Unlike their stackful counterparts, stackless coroutines don’t have their own stack space. Instead, a separate “coroutine scheduler” manages their state. This scheduler allocates memory for coroutine data and handles context switching.

  • Suspension and Resumption Redefined: When a stackless coroutine yields control, the scheduler saves its state (registers, program counter) in a lightweight data structure. The scheduler then switches to another coroutine. When the first coroutine resumes, its state is restored from the data structure, and it picks up where it left off.

  • Advantages:

    • Lightweight Champion: The lack of dedicated stacks makes stackless coroutines lightweight, enabling a vast number of concurrent coroutines without stack overflow concerns.
    • Context Switching Efficiency: Switching between coroutines involves manipulating a data structure managed by the scheduler, potentially faster than stack-based operations.
  • Disadvantages:

    • Complexity Curve: Understanding and debugging stackless coroutines can be trickier due to the absence of a dedicated stack for each coroutine.
    • Less Control at the Helm: Developers have less control over the coroutine’s memory usage and scheduling behavior compared to stackful coroutines.

Choosing the Right Coroutine for the Job

The choice between stackful and stackless coroutines depends on your project’s requirements:

  • For simpler applications with a limited number of coroutines, stackful coroutines might be suitable due to their straightforward implementation.
  • For applications demanding a high volume of concurrent tasks and peak performance, stackless coroutines, like those employed by Kotlin, become the clear choice due to their scalability and efficiency.

Kotlin Coroutines: Embracing the Stackless Power

Kotlin, a modern language known for its developer-friendly features, takes the stackless coroutines approach. Here’s why:

  • Memory Efficiency: Kotlin coroutines rely on a coroutine scheduler for state management, eliminating the need for individual stacks and promoting efficient memory usage.
  • Performance Champion: The stackless design allows for faster context switching between coroutines, contributing to overall application performance.
  • Simplified Asynchronous Programming: Kotlin provides a well-designed coroutine API that streamlines asynchronous programming compared to manual thread management.

By understanding the concepts of stackful and stackless coroutines, you can make informed decisions when building asynchronous applications. Kotlin’s stackless coroutine implementation empowers developers to write clean, concurrent, and performant code. So, the next time you delve into asynchronous programming, consider the power of stackless coroutines and how Kotlin makes asynchronous development a breeze!

This post is licensed under CC BY 4.0 by the author.

Mastering Kotlin Coroutines in Android Development

-

diff --git a/posts/android-emulator-network-issue-copy/index.html b/posts/android-emulator-network-issue-copy/index.html new file mode 100644 index 0000000..19283e5 --- /dev/null +++ b/posts/android-emulator-network-issue-copy/index.html @@ -0,0 +1 @@ + Android 模拟器不能使用电脑的代理网络 | Lewis's Blog
Home Android 模拟器不能使用电脑的代理网络
Post
Cancel

Android 模拟器不能使用电脑的代理网络

问题

做 Android 开发经常需要和模拟器打交道,在特定的业务场景下,需要模拟器能够使用电脑的 VPN 网络,不做一些特别的配置,模拟器是不能使用电脑 VPN 网络的。要解决模拟器的网络问题,需要弄清楚下面三个问题:

  • 模拟器网络工作原理
  • 网络代理的工作原理
  • 如何让模拟器使用电脑的网络代理

这三个问题都能在 Google 给的 模拟器网络搭建 找到答案

模拟器网络工作原理

官方文档在开始简略的介绍了模拟器的网络工作原理,总结下面几条

  • 模拟器具备独立的网络系统,与开发机和其他模拟器的网络系统隔离
  • 模拟器无法直接通过网络访问开发机或其他模拟器
  • 模拟器运行独立的 router 系统,管理的 IP 地址段为 10.0.2/24
  • 模拟器地址空间已经按照规则预先分配

    IP地址描述
    10.0.2.1网关
    10.0.2.2主机环回地址的别名,即对应开发机的 localhost
    10.0.2.3模拟器的第一 DNS 服务器地址
    127.0.0.1模拟器的环回地址,不对应开发机的 127.0.0.1

代理的工作原理

网络代理和现实生活中的代理,概念一致,即作为客户端和服务端的中间人,代理客户端所有的请求,从服务端拿到资源后,再返回给客户端。客户端和服务端不直接联系。 具体的原理可以参考 Proxy server

如何让模拟器能够使用电脑的代理

如果能够给模拟器设置一个代理服务器,同时这个代理服务器又把所有请求转发给开发机的代理服务器,似乎就能解决问题。这个方案实施,需要满足两个条件

  • 模拟器可以设置全局网络代理
  • 模拟器的代理服务器可以转发请求给开发机的代理服务器

第一个条件很简单,因为模拟器本身就支持设置全局代理。第二个条件要怎么实现呢?
在模拟器网络工作原理这一节,我们知道,模拟器的网络是独立于开发机的网络的,有一套独立的路由体系。但是这种独立并非完全没有联系,在预制的 IP 地址中,我们可以知道 10.0.2.2 这个地址就对应了开发机的 localhost,也即开发机的 127.0.0.1 这个 IP。所以只要我们把代理服务运行的IP(10.0.2.2) 和 端口(比如: 7890) 设置到模拟器的全局代理上,就可以让模拟器使用开发机的代理。

wifi-detail
config-proxy

参考内容

Localhost
Loopack
Proxy Server
VPN

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/android-studio-link-source/index.html b/posts/android-studio-link-source/index.html new file mode 100644 index 0000000..182d3b4 --- /dev/null +++ b/posts/android-studio-link-source/index.html @@ -0,0 +1,57 @@ + Android Studio 手动关联源码 | Lewis's Blog
Home Android Studio 手动关联源码
Post
Cancel

Android Studio 手动关联源码

备注

如果只是方便在 Android Studio 中查看 Android Framework 的源码,那么最好的方法还是直接通过 Android StudioAndroid SDK 页面下载。本文描述的问题和解决方案是在网络出问题的情况下遇到的,正常开发过程应该不会有类似的问题,仅做记录和参考。

问题

可能是网络出了问题,当通过 Android Studio 下载 API Level 31 的源码时,总是提示失败,到 SDK 配置的页面, 在勾选 Show Package Details 的情况下,也没看到 API Level 31 的 source 下载选项,误以为是不是 google 没有提供这个版本的源码,但是项目的 Compile SDK Level 正好配置的 31,在这种情况下,如果想看 Android framework 的源码,只能通过修改 Compile SDK Level 和 手动关联源码的方式来解决。项目上还有其他协同开发的同事,冒然修改 Compile SDK 不是很合适。那就剩手动关联源码的解决方案了。

方案

要手动关联源码,首先需要知道 Android Studio 的源码关联机制是怎么工作的,这个有很多资料可查,不在本文详述。
解决步骤:

  • 找到存储源码和对应 SDK 版本关联关系的配置文件
  • 手动添加下载的源码和 SDK 的关联关系

配置文件

Android Studio 上,关联关系存储在如下位置:
~/Library/Application Support/Google/AndroidStudio{version}/options/jdk.table.xml
比如我本地环境的配置文件存储在:~/Library/Application Support/Google/AndroidStudio2021.1/options/jdk.table.xml

添加配置

如果相关 SDK 的配置节点已经存在,则只需检查 <sourcePath> 节点是否存在,如果不存在,则添加对应的路径

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
+
<jdk version="2">
+  <name value="Android API 31 Platform" />
+  <type value="Android SDK" />
+  <version value="version 11.0.11" />
+  <homePath value="$USER_HOME$/Library/Android/sdk" />
+  <roots>
+    <annotationsPath>
+      <root type="composite">
+        <root url="jar://$USER_HOME$/Library/Android/sdk/platforms/android-31/data/annotations.zip!/" type="simple" />
+      </root>
+    </annotationsPath>
+    <classPath>
+      <root type="composite">
+        <root url="jar://$USER_HOME$/Library/Android/sdk/platforms/android-31/android.jar!/" type="simple" />
+        <root url="file://$USER_HOME$/Library/Android/sdk/platforms/android-31/data/res" type="simple" />
+      </root>
+    </classPath>
+    <javadocPath>
+      <root type="composite" />
+    </javadocPath>
+    <sourcePath>
+      <root type="composite">
+        <root url="file://$USER_HOME$/Library/Android/sdk/sources/android-31" type="simple" />
+      </root>
+    </sourcePath>
+  </roots>
+  <additional jdk="Android Studio default JDK" sdk="android-31" />
+</jdk>
+

重启 Android Studio

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/double-precision-issue/index.html b/posts/double-precision-issue/index.html new file mode 100644 index 0000000..4b330a0 --- /dev/null +++ b/posts/double-precision-issue/index.html @@ -0,0 +1 @@ + Kotlin double 精度问题 | Lewis's Blog
Home Kotlin double 精度问题
Post
Cancel

Kotlin double 精度问题

问题

在项目上有同事写了一段代码,主要功能是将用户输入的纯数字字符串按照美国货币格式展示,比如输入 “1234” -> “1,234”。他的实现方法是先将字符串转换成 double ,再通过 NumberFormat 将其格式化为货币格式。在字符串长度小于16时,能正常工作,但是当字符串长度大于等于16时就会出现异常,比如用户输入的字符串是 “9999999999999999” (16 个 9),期望展示的结果是 “9,999,999,999,999,999”,实际结果是 “10,000,000,000,000,000”。 开始大家认为是输入的数字过大,超过了 double 所能表示的数据范围,数据溢出导致结果出错。这个问题超出了我的知识边界,所以一开始我也没想清楚为什么?但是心里产生了一个疑问:如果真是数据溢出了,那么 double 能够处理的数据范围是多少?带着这个问题,我在网上查阅了相关资料,大体弄明白了这个问题的原因。

double 的存储原理

下面这张图清晰的描述了双精度浮点数的存储原理

double-float-format

double 的数据范围

根据存储原理,11 位指数位能够表示的数据范围是 10^-308^ 和 10^308^ 之间的数字,具有完整的 15-17 位十进制数字精度。

整数的精度限制

53 位有效数字精度提供 15 到 17 位有效十进制数字精度 (2^53^ ≈ 1.11 × 10^16^)

  • 可以精确表示从 -2^53^ 到 2^53^(-9,007,199,254,740,992 到 9,007,199,254,740,992)的整数

  • 2^53^ 和 2^54^ 之间的整数 = 18,014,398,509,481,984 舍入为 2 的倍数(偶数)

  • 2^54^ 到 2^55^ 之间的整数 = 36,028,797,018,963,968 舍入为 4 的倍数

double 与 string 的转换

按照 IEEE 754 标准,如果将一个至多 15 位有效数字的十进制字符串,转换为 double 表示,然后再转换为十进制字符串,则最终结果与原始的字符串匹配。

string-to-double

但是对于超过 15 位的字符串,只能够保证,将一个至少 17 位的 double 转换为十进制字符串,然后再转换为 double 表示时,最终结果必须与原始数字匹配。

double-to-string

参考内容

Double-precision floating-point format
浮点数的二进制表示

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/get-started/index.html b/posts/get-started/index.html new file mode 100644 index 0000000..36f5e0a --- /dev/null +++ b/posts/get-started/index.html @@ -0,0 +1 @@ + 开始 | Lewis's Blog
Home 开始
Post
Cancel

开始

想了很久,决定通过博客来记录自己的成长历程,2017年 已经用 github pages 搭建了自己的博客系统,但是一直未真正开始写。最近反复思考之后,觉得博客对于未来自己要做的事情蛮重要的,所以重新开始了,希望自己能够一直坚持下来,也相信自己能够坚持下来。亡羊补牢,为时未晚!

This post is licensed under CC BY 4.0 by the author.
diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..2d7922d --- /dev/null +++ b/posts/index.html @@ -0,0 +1,11 @@ + + + + Redirecting… + + + + +

Redirecting…

+ Click here if you are not redirected. + diff --git a/posts/master-kotlin-coroutine/index.html b/posts/master-kotlin-coroutine/index.html new file mode 100644 index 0000000..9a5b7eb --- /dev/null +++ b/posts/master-kotlin-coroutine/index.html @@ -0,0 +1,29 @@ + Mastering Kotlin Coroutines in Android Development | Lewis's Blog
Home Mastering Kotlin Coroutines in Android Development
Post
Cancel

Mastering Kotlin Coroutines in Android Development

In the ever-evolving world of Android development, building responsive and efficient apps is paramount. Traditional threading approaches often lead to complex code and potential pitfalls. Enter Kotlin coroutines, a powerful tool that simplifies asynchronous programming, making your Android apps smoother and more maintainable.

This blog post delves into the world of Kotlin coroutines, guiding you through their core concepts, practical usage in Android development, and best practices for leveraging their potential.

What are Kotlin Coroutines?

Kotlin coroutines are lightweight threads that offer a structured approach to handling asynchronous tasks without the complexity of traditional threading. Unlike threads, coroutines are suspended and resumed, allowing them to be more efficient and less resource-intensive. This suspension capability empowers them to “pause” execution while waiting for something to happen (e.g., network call completion) without blocking the main thread.

Key Concepts:

  • Coroutine Builders: These functions like launch and async help you create and launch coroutines.
  • Coroutine Context: This defines the environment in which a coroutine executes, specifying details like dispatcher (thread pool) and exception handling.
  • Coroutine Scope: A structured way to manage the lifecycle of coroutines, ensuring proper cancellation upon completion or error. Popular scopes include lifecycleScope in Activities/Fragments and viewModelScope in ViewModels.
  • Suspending Functions: Functions marked with the suspend keyword can pause execution and be resumed later. Network calls and disk I/O operations are often implemented as suspending functions.

Benefits of Using Coroutines:

  • Improved Performance: Coroutines avoid blocking the main thread, preventing UI freezes during asynchronous tasks.
  • Simplified Code: The structured approach of coroutines leads to cleaner and more readable code compared to traditional threading.
  • Error Handling: Coroutines provide mechanisms for handling exceptions and propagating them within the coroutine hierarchy.
  • Cancellation: You can gracefully cancel coroutines when they are no longer needed, preventing wasted resources.

Putting Coroutines into Action:

Here’s a simple example demonstrating how to fetch data from an API using coroutines:

1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+
fun fetchData() {
+  viewModelScope.launch { // Launch a coroutine in the viewModelScope
+    val data = try {
+      val response = URL("[https://api.example.com/data](https://api.example.com/data)").readText()
+      // Parse the response and return the data
+      parseData(response)
+    } catch (e: Exception) {
+      // Handle network or parsing errors
+      null
+    }
+    // Update UI with the fetched data
+    updateData(data)
+  }
+}
+

In this example, the fetchData function launches a coroutine within the viewModelScope. The coroutine fetches data from an API using a suspending function (readText). If successful, the data is parsed and used to update the UI. Any errors during the process are handled gracefully.

Best Practices:

  • Use structured concurrency: Leverage coroutine scopes to manage the lifecycle of coroutines effectively.
  • Handle exceptions: Implement proper error handling mechanisms to prevent crashes and maintain app stability.
  • Cancel unnecessary coroutines: When a coroutine is no longer needed, cancel it to avoid resource leaks.
  • Use Dispatchers wisely: Choose the appropriate dispatcher (thread pool) based on the nature of the coroutine’s task (e.g., I/O for network calls, Default for CPU-bound tasks).

Conclusion:

Kotlin coroutines empower you to write asynchronous code in a structured and efficient manner, leading to smoother and more responsive Android applications. By understanding the core concepts, practical usage examples, and best practices, you’ll be well on your way to mastering this powerful tool in your Android development journey.

This post is licensed under CC BY 4.0 by the author.

Summary for 2023

Unveiling Coroutines - Stackful vs. Stackless and How Kotlin Does It

diff --git a/redirects.json b/redirects.json new file mode 100644 index 0000000..98dd9eb --- /dev/null +++ b/redirects.json @@ -0,0 +1 @@ +{"/norobots/":"https://freedomlewis.github.io/404.html","/assets/":"https://freedomlewis.github.io/404.html","/posts/":"https://freedomlewis.github.io/404.html"} \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..e05dc1c --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,115 @@ + + + +https://freedomlewis.github.io/posts/get-started/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/android-emulator-network-issue-copy/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/double-precision-issue/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/android-studio-link-source/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/POEM-Gentleman/ +2024-04-16T07:58:03+00:00 + + +https://freedomlewis.github.io/posts/POEM-Still-the-Turbulence/ +2024-04-16T07:58:03+00:00 + + +https://freedomlewis.github.io/posts/POEM-Bamboo-In-The-Stone/ +2024-04-16T07:58:03+00:00 + + +https://freedomlewis.github.io/posts/POEM-Right-And-Wrong/ +2024-04-16T07:58:03+00:00 + + +https://freedomlewis.github.io/posts/Duan-ZheJiang-University/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/BBK-core-values/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/Do-it-Anyway/ +2024-04-16T07:50:35+00:00 + + +https://freedomlewis.github.io/posts/Summary-Of-2023/ +2024-04-16T07:58:03+00:00 + + +https://freedomlewis.github.io/posts/master-kotlin-coroutine/ +2024-04-16T07:19:00+00:00 + + +https://freedomlewis.github.io/posts/Unveiling-Coroutines-1/ +2024-04-17T04:12:00+00:00 + + +https://freedomlewis.github.io/categories/ +2024-04-17T04:30:32+00:00 + + +https://freedomlewis.github.io/tags/ +2024-04-17T04:30:32+00:00 + + +https://freedomlewis.github.io/archives/ +2024-04-17T04:30:32+00:00 + + +https://freedomlewis.github.io/about/ +2024-04-17T04:30:32+00:00 + + +https://freedomlewis.github.io/ + + +https://freedomlewis.github.io/tags/my/ + + +https://freedomlewis.github.io/tags/android/ + + +https://freedomlewis.github.io/tags/poem/ + + +https://freedomlewis.github.io/tags/core-values/ + + +https://freedomlewis.github.io/tags/coroutine/ + + +https://freedomlewis.github.io/categories/thought/ + + +https://freedomlewis.github.io/categories/tech/ + + +https://freedomlewis.github.io/categories/self-improvement/ + + +https://freedomlewis.github.io/categories/north-star/ + + +https://freedomlewis.github.io/categories/summary/ + + +https://freedomlewis.github.io/page2/ + + +https://freedomlewis.github.io/google00d8d3d181b1bfee.html +2024-04-17T04:30:17+00:00 + + diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..5314e1d --- /dev/null +++ b/sw.js @@ -0,0 +1 @@ +self.importScripts('/assets/js/data/swcache.js'); const cacheName = 'chirpy-20240417.0430'; function verifyDomain(url) { for (const domain of allowedDomains) { const regex = RegExp(`^http(s)?:\/\/${domain}\/`); if (regex.test(url)) { return true; } } return false; } function isExcluded(url) { for (const item of denyUrls) { if (url === item) { return true; } } return false; } self.addEventListener('install', e => { self.skipWaiting(); e.waitUntil( caches.open(cacheName).then(cache => { return cache.addAll(resource); }) ); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request) .then(response => { if (response) { return response; } return fetch(event.request) .then(response => { const url = event.request.url; if (event.request.method !== 'GET' || !verifyDomain(url) || isExcluded(url)) { return response; } /* see: */ let responseToCache = response.clone(); caches.open(cacheName) .then(cache => { /* console.log('[sw] Caching new resource: ' + event.request.url); */ cache.put(event.request, responseToCache); }); return response; }); }) ); }); self.addEventListener('activate', e => { e.waitUntil( caches.keys().then(keyList => { return Promise.all( keyList.map(key => { if(key !== cacheName) { return caches.delete(key); } }) ); }) ); }); diff --git a/tags/android/index.html b/tags/android/index.html new file mode 100644 index 0000000..0bea2c3 --- /dev/null +++ b/tags/android/index.html @@ -0,0 +1 @@ + Android | Lewis's Blog
Home Tags Android
Tag
Cancel
diff --git a/tags/core-values/index.html b/tags/core-values/index.html new file mode 100644 index 0000000..0cfae52 --- /dev/null +++ b/tags/core-values/index.html @@ -0,0 +1 @@ + Core Values | Lewis's Blog
Home Tags Core Values
Tag
Cancel
diff --git a/tags/coroutine/index.html b/tags/coroutine/index.html new file mode 100644 index 0000000..e34ba8d --- /dev/null +++ b/tags/coroutine/index.html @@ -0,0 +1 @@ + Coroutine | Lewis's Blog
Home Tags Coroutine
Tag
Cancel
diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..19401b6 --- /dev/null +++ b/tags/index.html @@ -0,0 +1 @@ + Tags | Lewis's Blog
Home Tags
Tags
Cancel
diff --git a/tags/my/index.html b/tags/my/index.html new file mode 100644 index 0000000..f5be0dc --- /dev/null +++ b/tags/my/index.html @@ -0,0 +1 @@ + My | Lewis's Blog
Home Tags My
Tag
Cancel
diff --git a/tags/poem/index.html b/tags/poem/index.html new file mode 100644 index 0000000..bb4b0e3 --- /dev/null +++ b/tags/poem/index.html @@ -0,0 +1 @@ + Poem | Lewis's Blog
Home Tags Poem
Tag
Cancel