PageSourceSearch

https://guosainpu.github.io/about/

html guosainpu.github.io collected 2026-10-03 09:15:50 UTC 18,841 bytes, 631 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5    <meta charset="utf-8">
6    <meta http-equiv="X-UA-Compatible" content="IE=edge">
7    <meta name="google-site-verification" content="xBT4GhYoi5qRD5tr338pgPM5OWHHIDR6mNg1a3euekI" />
8    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9    <meta name="description" content="">
10    <meta name="keywords"  content="">
11    <meta name="theme-color" content="#000000">
12    
13    <!-- Open Graph -->
14    <meta property="og:title" content="About - 一只草履虫">
15    
16    <meta property="og:type" content="website">
17    <meta property="og:description" content="">
18    
19    <meta property="og:image" content="/img/avatar-hux-ny.jpg">
20    <meta property="og:url" content="/about/">
21    <meta property="og:site_name" content="一只草履虫">
22    
23    <title>About - 一只草履虫</title>
24
25    <!-- Web App Manifest -->
26    <link rel="manifest" href="/pwa/manifest.json">
27
28    <!-- Favicon -->
29    <link rel="shortcut icon" href="/img/favicon.ico">
30    
31    <!-- Canonical URL -->
32    <link rel="canonical" href="/about/">
33
34    <!-- Bootstrap Core CSS -->
35    <link rel="stylesheet" href="/css/bootstrap.min.css">
36
37    <!-- Custom CSS -->
38    <link rel="stylesheet" href="/css/hux-blog.min.css">
39
40    <!-- Custom Fonts -->
41    <!-- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
42    <!-- Hux change font-awesome CDN to qiniu -->
43    <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css">
44
45
46    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
47    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
48    <!--[if lt IE 9]>
49        
49<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
49
50        
50<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
50
51    <![endif]-->
52
53    <!-- ga & ba script hoook -->
54    
54<script></script>
54
55</head>
56
57
58<!-- hack iOS CSS :active style -->
59<body ontouchstart="">
60
61    <!-- Navigation -->
62
63    <nav class="navbar navbar-default navbar-custom navbar-fixed-top">
64        
65        <div class="container-fluid">
66            <!-- Brand and toggle get grouped for better mobile display -->
67            <div class="navbar-header page-scroll">
68                <button type="button" class="navbar-toggle">
69                    <span class="sr-only">Toggle navigation</span>
70                    <span class="icon-bar"></span>
71                    <span class="icon-bar"></span>
72                    <span class="icon-bar"></span>
73                </button>
74                <a class="navbar-brand" href="/">一只草履虫</a>
75            </div>
76
77            <!-- Collect the nav links, forms, and other content for toggling -->
78            <div id="huxblog_navbar">
79                <div class="navbar-collapse">
80                    <ul class="nav navbar-nav navbar-right">
81                        <li>
82                            <a href="/">Home</a>
83                        </li>
84                        
85                        
86                        
87                        
88                        <li>
89                            <a href="/about/">About</a>
90                        </li>
91                        
92                        
93                        
94                        <li>
95                            <a href="/archive/">Archive</a>
96                        </li>
97                        
98                        
99                        
100                        
101                        
102                        
103                        
104                        
105                        
106                        
107                        
108                        
109                        
110                        
111                        
112                        
113                        
114                        
115                        <li class="search-icon">
116                            <a href="javascript:void(0)">
117                                <i class="fa fa-search"></i>
118                            </a>
119                        </li>
120                    </ul>
121                </div>
122            </div>
123            <!-- /.navbar-collapse -->
124        </div>
125        <!-- /.container -->
126    </nav>
127
128    
128<script>
129        // Drop Bootstarp low-performance Navbar
130        // Use customize navbar with high-quality material design animation
131        // in high-perf jank-free CSS3 implementation
132        var $body = document.body;
133        var $toggle = document.querySelector('.navbar-toggle');
134        var $navbar = document.querySelector('#huxblog_navbar');
135        var $collapse = document.querySelector('.navbar-collapse');
136
137        var __HuxNav__ = {
138            close: function () {
139                $navbar.className = " ";
140                // wait until animation end.
141                setTimeout(function () {
142                    // prevent frequently toggle
143                    if ($navbar.className.indexOf('in') < 0) {
144                        $collapse.style.height = "0px"
145                    }
146                }, 400)
147            },
148            open: function () {
149                $collapse.style.height = "auto"
150                $navbar.className += " in";
151            }
152        }
153
154        // Bind Event
155        $toggle.addEventListener('click', function (e) {
156            if ($navbar.className.indexOf('in') > 0) {
157                __HuxNav__.close()
158            } else {
159                __HuxNav__.open()
160            }
161        })
162
163        /**
164         * Since Fastclick is used to delegate 'touchstart' globally
165         * to hack 300ms delay in iOS by performing a fake 'click',
166         * Using 'e.stopPropagation' to stop 'touchstart' event from 
167         * $toggle/$collapse will break global delegation.
168         * 
169         * Instead, we use a 'e.target' filter to prevent handler
170         * added to document close HuxNav.  
171         *
172         * Also, we use 'click' instead of 'touchstart' as compromise
173         */
174        document.addEventListener('click', function (e) {
175            if (e.target == $toggle) return;
176            if (e.target.className == 'icon-bar') return;
177            __HuxNav__.close();
178        })
179    </script>
179
180    <!-- Search -->
181<div class="search-page">
182  <div class="search-icon-close-container">
183    <span class="search-icon-close">
184      <i class="fa fa-chevron-down"></i>
185    </span>
186  </div>
187  <div class="search-main container">
188    <div class="row">
189      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
190        <form></form>
191        <input type="text" id="search-input" placeholder="$ grep...">
192        </form>
193        <div id="search-results" class="mini-post-list"></div>
194      </div>
195    </div>
196  </div>
197</div>
198
199    <!-- Page Header -->
200
201
202
203
204
205
206
207<header class="intro-header" style="background-image: url('/img/home-bg.jpg')">
208  <div class="container">
209    <div class="row">
210      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
211        
212        <div class="site-heading" id="tag-heading">
213        
214          <h1>About</h1> <!-- 这里的Home是个硬编码。。。-->
215          <span class="subheading"></span>
216        </div>
217      </div>
218    </div>
219  </div>
220</header>
221
222
223<!-- Main Content -->
224<div class="container">
225	<div class="row">
226        
227
228<!-- USE SIDEBAR -->
229    <!-- PostList Container -->
230    		<div class="
231                col-lg-8 col-lg-offset-1
232                col-md-8 col-md-offset-1
233                col-sm-12
234                col-xs-12
235                postlist-container
236            ">
237    			<!-- Chinese Version -->
238<div class="zh post-container">
239    
240    
241<p><strong>Hi,我是郭赛,程序员基本功修行中…</strong><br />
242[email protected],<a href="https://github.com/guosainpu">github</a></p>
243
244<p><img src="https://tva1.sinaimg.cn/large/008i3skNly1gqh1d2z4oyj31b20u07a4.jpg" alt="SOHO" /></p>
245
246
247</div>
248
249    		</div>
250    <!-- Sidebar Container -->
251            <div class="
252                col-lg-3 col-lg-offset-0
253                col-md-3 col-md-offset-0
254                col-sm-12
255                col-xs-12
256                sidebar-container
257            ">
258                <!-- Featured Tags -->
259                
260
261
262<section>
263    
264    <h5><a href="/archive/">FEATURED TAGS</a></h5>
265    <div class="tags">
266        
267        
268        
269        
270        
271        
272                <a data-sort="0010" 
273                    href="/archive/?tag=%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80"
274                    title="计算机基础"
275                    rel="23">计算机基础</a>
276        
277                <a data-sort="0021" 
278                    href="/archive/?tag=%E4%BB%8E0%E5%88%B01%E6%9E%84%E5%BB%BA%E8%AE%A1%E7%AE%97%E6%9C%BA"
279                    title="从0到1构建计算机"
280                    rel="12">从0到1构建计算机</a>
281        
282                <a data-sort="0024" 
283                    href="/archive/?tag=iOS"
284                    title="iOS"
285                    rel="9">iOS</a>
286        
287                <a data-sort="0028" 
288                    href="/archive/?tag=objc"
289                    title="objc"
290                    rel="5">objc</a>
291        
292                <a data-sort="0029" 
293                    href="/archive/?tag=%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F"
294                    title="操作系统"
295                    rel="4">操作系统</a>
296        
297                <a data-sort="0030" 
298                    href="/archive/?tag=%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80"
299                    title="汇编语言"
300                    rel="3">汇编语言</a>
301        
302                <a data-sort="0030" 
303                    href="/archive/?tag=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A1%AC%E4%BB%B6%E4%BD%93%E7%B3%BB"
304                    title="计算机硬件体系"
305                    rel="3">计算机硬件体系</a>
306        
307                <a data-sort="0030" 
308                    href="/archive/?tag=OS%E5%86%85%E6%A0%B8"
309                    title="OS内核"
310                    rel="3">OS内核</a>
311        
312                <a data-sort="0031" 
313                    href="/archive/?tag=%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80"
314                    title="数学基础"
315                    rel="2">数学基础</a>
316    </div>
317</section>
318
319
320                <!-- Short About -->
321                <section class="visible-md visible-lg">
322<!--   <hr>
323  <h5><a href="/about/">ABOUT ME</a></h5>
324  <div class="short-about">
325    
326    <img src="/img/avatar-hux-ny.jpg" />
327    
328    
329    <p>For the next quantum leap<br>离开世界之前,一切都是过程</p>
330    
331    
332
333
334<ul class="list-inline">
335
336
337  
338  
339  
340  
341  
342  
343  
344</ul>
345  </div> -->
346</section>
347
348                <!-- Friends Blog -->
349                
350    		</div>
351        
352	</div>
353</div>
354
355
356
357    <!-- Footer -->
358<footer>
359
360</footer>
361
362<!-- jQuery -->
363<script src="/js/jquery.min.js "></script>
363
364
365<!-- Bootstrap Core JavaScript -->
366<!-- Currently, only navbar scroll-down effect at desktop still depends on this -->
367<script src="/js/bootstrap.min.js "></script>
367
368
369<!-- Custom Theme JavaScript -->
370<script src="/js/hux-blog.min.js "></script>
370
371
372<!-- Simple Jekyll Search -->
373<script src="/js/simple-jekyll-search.min.js"></script>
373
374
375<!-- Service Worker -->
376
377
378<!-- async load function -->
379<script>
380    function async(u, c) {
381        var d = document, t = 'script',
382            o = d.createElement(t),
383            s = d.getElementsByTagName(t)[0];
384        o.src = u;
385        if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
386        s.parentNode.insertBefore(o, s);
387    }
388</script>
388
389
390<!--
391     Because of the native support for backtick-style fenced code blocks
392     right within the Markdown is landed in Github Pages,
393     From V1.6, There is no need for Highlight.js,
394     so Huxblog drops it officially.
395
396     - https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0
397     - https://help.github.com/articles/creating-and-highlighting-code-blocks/
398     - https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers
399-->
400<!--
401    
401<script>
402        async("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function(){
403            hljs.initHighlightingOnLoad();
404        })
405    </script>
405
406    <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet">
407-->
408
409
410
411
412
413
414
415<!--fastClick.js -->
416<script>
417    async("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function () {
418        var $nav = document.querySelector("nav");
419        if ($nav) FastClick.attach($nav);
420    })
421</script>
421
422
423
424<!-- Google Analytics -->
425
426<script>
427    // dynamic User by Hux
428    var _gaId = 'UA-49627206-1';
429    var _gaDomain = 'huangxuan.me';
430
431    // Originial
432    (function (i, s, o, g, r, a, m) {
433        i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
434            (i[r].q = i[r].q || []).push(arguments)
435        }, i[r].l = 1 * new Date(); a = s.createElement(o),
436            m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
437    })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
438
439    ga('create', _gaId, _gaDomain);
440    ga('send', 'pageview');
441</script>
441
442
443
444
445<!-- Baidu Tongji -->
446
447
448
449<!-- Side Catalog -->
450
451<script type="text/javascript">
452    function generateCatalog(selector) {
453
454        // interop with multilangual 
455        if ('true' == 'true') {
456            _containerSelector = 'div.post-container.active'
457        } else {
458            _containerSelector = 'div.post-container'
459        }
460
461        // init
462        var P = $(_containerSelector), a, n, t, l, i, c;
463        a = P.find('h1,h2,h3,h4,h5,h6');
464
465        // clean
466        $(selector).html('')
467
468        // appending
469        a.each(function () {
470            n = $(this).prop('tagName').toLowerCase();
471            i = "#" + $(this).prop('id');
472            t = $(this).text();
473            c = $('<a href="' + i + '" rel="nofollow">' + t + '</a>');
474            l = $('<li class="' + n + '_nav"></li>').append(c);
475            $(selector).append(l);
476        });
477        return true;
478    }
479
480    generateCatalog(".catalog-body");
481
482    // toggle side catalog
483    $(".catalog-toggle").click((function (e) {
484        e.preventDefault();
485        $('.side-catalog').toggleClass("fold")
486    }))
487
488    /*
489     * Doc: https://github.com/davist11/jQuery-One-Page-Nav
490     * Fork by Hux to support padding
491     */
492    async("/js/jquery.nav.js", function () {
493        $('.catalog-body').onePageNav({
494            currentClass: "active",
495            changeHash: !1,
496            easing: "swing",
497            filter: "",
498            scrollSpeed: 700,
499            scrollOffset: 0,
500            scrollThreshold: .2,
501            begin: null,
502            end: null,
503            scrollChange: null,
504            padding: 80
505        });
506    });
507</script>
507
508
509
510
511<!-- Multi-Lingual -->
512
513<!-- Handle Language Change -->
514<script type="text/javascript">
515    // get nodes
516    var $zh = document.querySelector(".zh");
517    var $en = document.querySelector(".en");
518    var $select = document.querySelector("select");
519
520    // Changes at v1.8.1: include lang flag as a url query. This interop well with catalog hash anchors.
521    function getLang() { return new URLSearchParams(document.location.search).get("lang") }
522
523    function setLang(newLang) {
524        var params = new URLSearchParams(document.location.search)
525        params.set("lang", newLang)
526        document.location.search = params.toString()  // refresh.
527    }
528
529    // handle render
530    function _render() {
531        var lang = getLang()
532        // en
533        if (lang == "en") {
534            $select.selectedIndex = 1;
535            $en.style.display = "block";
536            $en.classList.add("active");
537            $zh.style.display = "none";
538            $zh.classList.remove("active");
539            // default to zh-cn
540        } else {
541            $select.selectedIndex = 0;
542            $zh.style.display = "block";
543            $zh.classList.add("active");
544            $en.style.display = "none";
545            $en.classList.remove("active");
546        }
547        // interop with catalog 
548        generateCatalog(".catalog-body");
549    }
550
551    // handle select change
552    function onLanChange(index) {
553        if (index == 0) {
554            lang = "zh"
555        } else {
556            lang = "en"
557        }
558        setLang(lang)
559    }
560
561    // init
562    _render();
563</script>
563
564
565
566<!-- Simple Jekyll Search -->
567<script>
568    // https://stackoverflow.com/questions/1912501/unescape-html-entities-in-javascript
569    function htmlDecode(input) {
570        var e = document.createElement('textarea');
571        e.innerHTML = input;
572        // handle case of empty input
573        return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
574    }
575
576    SimpleJekyllSearch({
577        searchInput: document.getElementById('search-input'),
578        resultsContainer: document.getElementById('search-results'),
579        json: '/search.json',
580        searchResultTemplate: '<div class="post-preview item"><a href="{url}"><h2 class="post-title">{title}</h2><h3 class="post-subtitle">{subtitle}</h3><hr></a></div>',
581        noResultsText: 'No results',
582        limit: 50,
583        fuzzy: false,
584        // a hack to get escaped subtitle unescaped. for some reason, 
585        // post.subtitle w/o escape filter nuke entire search.
586        templateMiddleware: function (prop, value, template) {
587            if (prop === 'subtitle' || prop === 'title') {
588                if (value.indexOf("code")) {
589                    return htmlDecode(value);
590                } else {
591                    return value;
592                }
593            }
594        }
595    });
596
597    $(document).ready(function () {
598        var $searchPage = $('.search-page');
599        var $searchOpen = $('.search-icon');
600        var $searchClose = $('.search-icon-close');
601        var $searchInput = $('#search-input');
602        var $body = $('body');
603
604        $searchOpen.on('click', function (e) {
605            e.preventDefault();
606            $searchPage.toggleClass('search-active');
607            var prevClasses = $body.attr('class') || '';
608            setTimeout(function () {
609                $body.addClass('no-scroll');
610            }, 400)
611
612            if ($searchPage.hasClass('search-active')) {
613                $searchClose.on('click', function (e) {
614                    e.preventDefault();
615                    $searchPage.removeClass('search-active');
616                    $body.attr('class', prevClasses);  // from closure 
617                });
618                $searchInput.focus();
619            }
620        });
621    });
622</script>
622
623
624
625<!-- Image to hack wechat -->
626<img src="/img/icon_wechat.png" width="0" height="0" />
627<!-- Migrate from head to bottom, no longer block render and still work -->
628
629</body>
630
631</html>

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