PageSourceSearch

https://p36348.github.io/archive/

html p36348.github.io collected 2026-10-03 09:43:54 UTC 16,106 bytes, 581 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="关于程序与设计、黑客与画家 | 黄玄,Web & Mobile Lover,Software Engineer,UX Designer | 这里是 @Hux黄玄 的个人博客,与你一起发现更大的世界。">
10    <meta name="keywords"  content="P36348, @P36348, 博客, 个人网站, 互联网, Web, JavaScript, iOS, Swift">
11    <meta name="theme-color" content="#000000">
12    
13    <!-- Open Graph -->
14    <meta property="og:title" content="Archive - P36348的博客 | P36348's Blog">
15    
16    <meta property="og:type" content="website">
17    <meta property="og:description" content="keep hungry keep foolish">
18    
19    <meta property="og:image" content="https://p36348.github.io//img/avatar-hux-ny.jpg">
20    <meta property="og:url" content="https://p36348.github.io//archive/">
21    <meta property="og:site_name" content="P36348的博客 | P36348's Blog">
22    
23    <title>Archive - P36348的博客 | P36348's Blog</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="https://p36348.github.io//archive/">
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="/">P36348's Blog</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                    <li>
103                        <a href="/portfolio/">Portfolio</a>
104                    </li>
105                    
106                    
107                    
108                    
109                    
110                    
111                    
112                    
113                </ul>
114            </div>
115        </div>
116        <!-- /.navbar-collapse -->
117    </div>
118    <!-- /.container -->
119</nav>
120<script>
121    // Drop Bootstarp low-performance Navbar
122    // Use customize navbar with high-quality material design animation
123    // in high-perf jank-free CSS3 implementation
124    var $body   = document.body;
125    var $toggle = document.querySelector('.navbar-toggle');
126    var $navbar = document.querySelector('#huxblog_navbar');
127    var $collapse = document.querySelector('.navbar-collapse');
128
129    var __HuxNav__ = {
130        close: function(){
131            $navbar.className = " ";
132            // wait until animation end.
133            setTimeout(function(){
134                // prevent frequently toggle
135                if($navbar.className.indexOf('in') < 0) {
136                    $collapse.style.height = "0px"
137                }
138            },400)
139        },
140        open: function(){
141            $collapse.style.height = "auto"
142            $navbar.className += " in";
143        }
144    }
145
146    // Bind Event
147    $toggle.addEventListener('click', function(e){
148        if ($navbar.className.indexOf('in') > 0) {
149            __HuxNav__.close()
150        }else{
151            __HuxNav__.open()
152        }
153    })
154
155    /**
156     * Since Fastclick is used to delegate 'touchstart' globally
157     * to hack 300ms delay in iOS by performing a fake 'click',
158     * Using 'e.stopPropagation' to stop 'touchstart' event from 
159     * $toggle/$collapse will break global delegation.
160     * 
161     * Instead, we use a 'e.target' filter to prevent handler
162     * added to document close HuxNav.  
163     *
164     * Also, we use 'click' instead of 'touchstart' as compromise
165     */
166    document.addEventListener('click', function(e){
167        if(e.target == $toggle) return;
168        if(e.target.className == 'icon-bar') return;
169        __HuxNav__.close();
170    })
171</script>
171
172
173
174    <!-- 
175Credits: this page shamelessly borrowed a lot from:
176https://github.com/kitian616/jekyll-TeXt-theme
177-->
178<!-- Page Header -->
179
180
181
182
183
184
185
186<header class="intro-header" style="background-image: url('/img/tag-bg.jpg')">
187  <div class="container">
188    <div class="row">
189      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
190        
191        <div class="site-heading" id="tag-heading">
192        
193          <h1>Archive</h1>
194          <span class="subheading">keep hungry keep foolish</span>
195        </div>
196      </div>
197    </div>
198  </div>
199</header>
200
201
202<!-- Main Content -->
203<div class="container">
204	<div class="row">
205		<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
206			<!-- Tags (as filter) -->
207			<div id='tag_cloud' class="tags tags-sup js-tags">
208				<a class="tag-button--all" data-encode="">
209					Show All
210					<sup>6</sup>
211				</a>
212
213				
214        
215				
216				</a>
217				
218				<a data-sort="0000"
219					data-encode="Swift"
220					class="tag-button"
221					title="Swift" rel="6">
222					Swift
223					<sup>6</sup>
224				</a>
225				
226				<a data-sort="0000"
227					data-encode="iOS"
228					class="tag-button"
229					title="iOS" rel="6">
230					iOS
231					<sup>6</sup>
232				</a>
233				
234				<a data-sort="0002"
235					data-encode="RxSwift"
236					class="tag-button"
237					title="RxSwift" rel="4">
238					RxSwift
239					<sup>4</sup>
240				</a>
241				
242				<a data-sort="0004"
243					data-encode="%E5%93%8D%E5%BA%94%E5%BC%8F%E7%BC%96%E7%A8%8B"
244					class="tag-button"
245					title="响应式编程" rel="2">
246					响应式编程
247					<sup>2</sup>
248				</a>
249				
250				<a data-sort="0005"
251					data-encode="%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96"
252					class="tag-button"
253					title="数据持久化" rel="1">
254					数据持久化
255					<sup>1</sup>
256				</a>
257				
258				<a data-sort="0005"
259					data-encode="GCD"
260					class="tag-button"
261					title="GCD" rel="1">
262					GCD
263					<sup>1</sup>
264				</a>
265				
266				<a data-sort="0005"
267					data-encode="Generic"
268					class="tag-button"
269					title="Generic" rel="1">
270					Generic
271					<sup>1</sup>
272				</a>
273				
274				<a data-sort="0005"
275					data-encode="MVVM"
276					class="tag-button"
277					title="MVVM" rel="1">
278					MVVM
279					<sup>1</sup>
280				</a>
281				
282				<a data-sort="0005"
283					data-encode="Objective-C"
284					class="tag-button"
285					title="Objective-C" rel="1">
286					Objective-C
287					<sup>1</sup>
288				</a>
289				
290				<a data-sort="0005"
291					data-encode="Reactive+Programing"
292					class="tag-button"
293					title="Reactive Programing" rel="1">
294					Reactive Programing
295					<sup>1</sup>
296				</a>
297				
298				<a data-sort="0005"
299					data-encode="ReactiveX"
300					class="tag-button"
301					title="ReactiveX" rel="1">
302					ReactiveX
303					<sup>1</sup>
304				</a>
305				
306				<a data-sort="0005"
307					data-encode="Realm"
308					class="tag-button"
309					title="Realm" rel="1">
310					Realm
311					<sup>1</sup>
312				</a>
313				
314				<a data-sort="0005"
315					data-encode="RxCocoa"
316					class="tag-button"
317					title="RxCocoa" rel="1">
318					RxCocoa
319					<sup>1</sup>
320				</a>
321				
322				<a data-sort="0005"
323					data-encode="UIKit"
324					class="tag-button"
325					title="UIKit" rel="1">
326					UIKit
327					<sup>1</sup>
328				</a>
329				
330				<a data-sort="0005"
331					data-encode="UserDefault"
332					class="tag-button"
333					title="UserDefault" rel="1">
334					UserDefault
335					<sup>1</sup>
336				</a>
337				
338				<a data-sort="0005"
339					data-encode="database"
340					class="tag-button"
341					title="database" rel="1">
342					database
343					<sup>1</sup>
344				
345			</div>
346
347            <!-- Article List -->
348			<div class="mini-post-list js-result d-none"><section>
349				<span class="fa listing-seperator">
350					<span class="tag-text">2019</span>
351				</span><div class="post-preview item" data-tags="iOS,Objective-C,Swift,RxSwift,GCD">
352				    <a href="/2019/03/26/iOS-utils/">
353				        <h2 class="post-title">
354                            iOS碎片化知识点汇总(持续更新)
355				        </h2>
356				        
357				    </a>
358					<hr>
359				</div>
360			<div class="post-preview item" data-tags="iOS,RxSwift,RxCocoa,UIKit,Swift,%E5%93%8D%E5%BA%94%E5%BC%8F%E7%BC%96%E7%A8%8B">
361				    <a href="/2019/02/19/rxcocoa-uikit-proxy/">
362				        <h2 class="post-title">
363                            RxCocoa中对UIKit的Delegate的处理
364				        </h2>
365				        
366				        <h3 class="post-subtitle">
367				            记一次RxSwift/RxCocoa源码阅读
368				        </h3>
369				        
370				    </a>
371					<hr>
372				</div>
373			</section><section>
374				<span class="fa listing-seperator">
375					<span class="tag-text">2018</span>
376				</span><div class="post-preview item" data-tags="iOS,Swift,Generic,UserDefault,%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96">
377				    <a href="/2018/12/13/genericity-userdefault/">
378				        <h2 class="post-title">
379                            Swift泛型应用, UserDefault
380				        </h2>
381				        
382				    </a>
383					<hr>
384				</div>
385			<div class="post-preview item" data-tags="iOS,Swift,database,Realm">
386				    <a href="/2018/12/04/realm/">
387				        <h2 class="post-title">
388                            iOS数据持久化解决方案Realm(待完成)
389				        </h2>
390				        
391				    </a>
392					<hr>
393				</div>
394			<div class="post-preview item" data-tags="iOS,RxSwift,Swift,ReactiveX,%E5%93%8D%E5%BA%94%E5%BC%8F%E7%BC%96%E7%A8%8B,MVVM">
395				    <a href="/2018/12/01/rxswift-in-mvvm/">
396				        <h2 class="post-title">
397                            RxSwift应用MVVM
398				        </h2>
399				        
400				        <h3 class="post-subtitle">
401				             工作期间项目中RxSwift的应用
402				        </h3>
403				        
404				    </a>
405					<hr>
406				</div>
407			<div class="post-preview item" data-tags="iOS,RxSwift,Swift,Reactive+Programing">
408				    <a href="/2018/11/27/rxswift-async-programing/">
409				        <h2 class="post-title">
410                            RxSwift, 异步操作组合处理
411				        </h2>
412				        
413				        <h3 class="post-subtitle">
414				            工作期间项目中RxSwift的应用
415				        </h3>
416				        
417				    </a>
418					<hr>
419				</div>
420			
421		</div>
422	</div>
423</div>
424
425
426    <!-- Footer -->
427<footer>
428    <div class="container">
429        <div class="row">
430            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
431                <!-- SNS Link -->
432                
433
434
435<ul class="list-inline text-center">
436
437
438  
439  
440  
441  
442  
443  
444  <li>
445    <a target="_blank" href="https://github.com/P36348">
446      <span class="fa-stack fa-lg">
447        <i class="fa fa-circle fa-stack-2x"></i>
448        <i class="fa fa-github fa-stack-1x fa-inverse"></i>
449      </span>
450    </a>
451  </li>
452  
453  
454</ul>
455
456                <p class="copyright text-muted">
457                    Copyright &copy; P36348's Blog 2019
458                    <br>
459                    Powered by <a href="http://huangxuan.me">Hux Blog</a> |
460                    <iframe
461                        style="margin-left: 2px; margin-bottom:-5px;"
462                        frameborder="0" scrolling="0" width="100px" height="20px"
463                        src="https://ghbtns.com/github-btn.html?user=huxpro&repo=huxpro.github.io&type=star&count=true" >
464                    </iframe>
465                </p>
466            </div>
467        </div>
468    </div>
469</footer>
470
471<!-- jQuery -->
472<script src="/js/jquery.min.js "></script>
472
473
474<!-- Bootstrap Core JavaScript -->
475<!-- Currently, only navbar scroll-down effect at desktop still depends on this -->
476<script src="/js/bootstrap.min.js "></script>
476
477
478<!-- Custom Theme JavaScript -->
479<script src="/js/hux-blog.min.js "></script>
479
480
481<!-- Service Worker -->
482
483<script src="/js/snackbar.js "></script>
vendor: 1 bytes, line 483
483
484<script src="/js/sw-registration.js "></script>
484
485
486
487<!-- async load function -->
488<script>
489    function async(u, c) {
490      var d = document, t = 'script',
491          o = d.createElement(t),
492          s = d.getElementsByTagName(t)[0];
493      o.src = u;
494      if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
495      s.parentNode.insertBefore(o, s);
496    }
497</script>
497
498
499<!--
500     Because of the native support for backtick-style fenced code blocks
501     right within the Markdown is landed in Github Pages,
502     From V1.6, There is no need for Highlight.js,
503     so Huxblog drops it officially.
504
505     - https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0
506     - https://help.github.com/articles/creating-and-highlighting-code-blocks/
507     - https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers
508-->
509<!--
510    
510<script>
511        async("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function(){
512            hljs.initHighlightingOnLoad();
513        })
514    </script>
514
515    <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet">
516-->
517
518
519
520
521<!-- jquery.tagcloud.js -->
522<script>
523    async('/js/jquery.tagcloud.js',function(){
524        $.fn.tagcloud.defaults = {
525            //size: {start: 1, end: 1, unit: 'em'},
526            color: {start: '#bbbbee', end: '#2f93b4'},
527        };
528        $('#tag_cloud a').tagcloud();
529    })
530</script>
vendor: 1 bytes, line 530
530
531<script src='/js/archive.js '></script>
531
532
533
534<!--fastClick.js -->
535<script>
536    async("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function(){
537        var $nav = document.querySelector("nav");
538        if($nav) FastClick.attach($nav);
539    })
540</script>
540
541
542
543<!-- Google Analytics -->
544
545<script>
546    // dynamic User by Hux
547    var _gaId = 'UA-49627206-1';
548    var _gaDomain = 'auto';
549
550    // Originial
551    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
552    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
553    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
554    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
555
556    ga('create', _gaId, _gaDomain);
557    ga('send', 'pageview');
558</script>
558
559
560
561
562<!-- Baidu Tongji -->
563
564
565
566<!-- Side Catalog -->
567
568
569
570<!-- Multi-Lingual -->
571
572
573
574
575<!-- Image to hack wechat -->
576<img src="/img/icon_wechat.png" width="0" height="0" />
577<!-- Migrate from head to bottom, no longer block render and still work -->
578
579</body>
580
581</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.