-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
executable file
·655 lines (395 loc) · 25.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
<!DOCTYPE html>
<html class="no-js">
<head lang="en-us">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
<title>Coding Automaton</title>
<meta name="generator" content="Hugo 0.38.2" />
<meta name="description" content="Coding made simple and automatic.">
<link rel="canonical" href="http://jessezhuang.github.io/">
<meta name="author" content="Jesse Zhuang">
<meta property="og:url" content="http://jessezhuang.github.io/">
<meta property="og:title" content="Coding Automaton">
<meta property="og:image" content="http://jessezhuang.github.io/images/logo.jpg">
<meta name="apple-mobile-web-app-title" content="Coding Automaton">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<link rel="shortcut icon" type="image/x-icon" href="http://jessezhuang.github.io/images/automata.ico">
<link rel="icon" type="image/x-icon" href="http://jessezhuang.github.io/images/automata.ico">
<style>
@font-face {
font-family: 'Icon';
src: url('http://jessezhuang.github.io/fonts/icon.eot?52m981');
src: url('http://jessezhuang.github.io/fonts/icon.eot?#iefix52m981')
format('embedded-opentype'),
url('http://jessezhuang.github.io/fonts/icon.woff?52m981')
format('woff'),
url('http://jessezhuang.github.io/fonts/icon.ttf?52m981')
format('truetype'),
url('http://jessezhuang.github.io/fonts/icon.svg?52m981#icon')
format('svg');
font-weight: normal;
font-style: normal;
}
</style>
<link rel="stylesheet" href="http://jessezhuang.github.io/stylesheets/application.css">
<link rel="stylesheet" href="http://jessezhuang.github.io/stylesheets/palettes.css">
<link rel="stylesheet" href="http://jessezhuang.github.io/stylesheets/materialize.zz.css">
<link rel="stylesheet" href="http://jessezhuang.github.io/stylesheets/highlight/monokai-sublime.css">
<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Ubuntu:400,700|Ubuntu%2bMono">
<style>
body, input {
font-family: 'Ubuntu', Helvetica, Arial, sans-serif;
}
pre, code {
font-family: 'Ubuntu Mono', 'Courier New', 'Courier', monospace;
}
</style>
<script src="http://jessezhuang.github.io/javascripts/modernizr.js"></script>
<link href="http://jessezhuang.github.io/index.xml" rel="alternate" type="application/rss+xml" title="Coding Automaton" />
<link href="http://jessezhuang.github.io/index.xml" rel="feed" type="application/rss+xml" title="Coding Automaton" />
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css">
</head>
<body class="palette-primary-deep-orange palette-accent-light-blue">
<div class="backdrop">
<div class="backdrop-paper"></div>
</div>
<input class="toggle" type="checkbox" id="toggle-drawer">
<input class="toggle" type="checkbox" id="toggle-search">
<label class="toggle-button overlay" for="toggle-drawer"></label>
<header class="header">
<nav aria-label="Header">
<div class="bar default">
<div class="button button-menu" role="button" aria-label="Menu">
<label class="toggle-button icon icon-menu" for="toggle-drawer">
<span></span>
</label>
</div>
<div class="stretch">
<div class="title">
Coding Automaton
</div>
</div>
<div class="button button-twitter" role="button" aria-label="LinkeIn">
<a href="http://jessezhuang.github.io/index.xml" title="RSS feed" target="_blank"><i class="fa fa-rss toggle-button icon" style="font-size:26px"></i></a>
</div>
<div class="button button-twitter" role="button" aria-label="Twitter">
<a href="https://twitter.com/zhzexi" title="@zhzexi on Twitter" target="_blank" class="toggle-button icon icon-twitter"></a>
</div>
<div class="button button-github" role="button" aria-label="GitHub">
<a href="https://github.com/jessezhuang" title="@jessezhuang on GitHub" target="_blank" class="toggle-button icon icon-github"></a>
</div>
<div class="button button-twitter" role="button" aria-label="LinkeIn">
<a href="https://linkedin.com/in/zexizhuang" title="@zexizhuang on LinkedIn" target="_blank"><i class="fa fa-linkedin toggle-button icon" style="font-size:26px"></i></a>
</div>
</div>
<div class="bar search">
<div class="button button-close" role="button" aria-label="Close">
<label class="toggle-button icon icon-back" for="toggle-search"></label>
</div>
<div class="stretch">
<div class="field">
<input class="query" type="text" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck>
</div>
</div>
<div class="button button-reset" role="button" aria-label="Search">
<button class="toggle-button icon icon-close" id="reset-search"></button>
</div>
</div>
</nav>
</header>
<main class="main">
<div class="drawer">
<nav aria-label="Navigation">
<a href="http://jessezhuang.github.io/" class="project">
<div class="banner">
<div class="logo">
<img src="http://jessezhuang.github.io/images/logo.jpg">
</div>
<div class="name">
<strong>Coding Automaton </strong>
<br>
Coding made simple and automatic.
</div>
</div>
</a>
<div class="scrollable">
<div class="wrapper">
<ul class="repo">
<li class="repo-download">
<a href="https://github.com/JesseZhuang/hugo-material-blog/archive/master.zip" target="_blank" title="Download" data-action="download">
<i class="icon icon-download"></i> Download
</a>
</li>
<li class="repo-stars">
<a href="https://github.com/JesseZhuang/hugo-material-blog/stargazers" target="_blank" title="Stargazers" data-action="star">
<i class="icon icon-star"></i> Stars
<span class="count">–</span>
</a>
</li>
</ul>
<hr>
<div class="toc">
<ul>
<li>
<a title="About Me" href="http://jessezhuang.github.io/page/about-me">
About Me
</a>
</li>
<li>
<a title="RSS feed" href="http://jessezhuang.github.io/index.xml">
RSS feed
</a>
</li>
<li>
<a class="current" title="Homepage" href="http://jessezhuang.github.io/">
Homepage
</a>
</li>
</ul>
<hr>
<span class="section">Categories</span>
<span class="tags">
<a href="http://jessezhuang.github.io/categories/algorithm"
title="algorithm">
algorithm<sup>2</sup></a>
<a href="http://jessezhuang.github.io/categories/cheatsheet"
title="cheatsheet">
cheatsheet<sup>5</sup></a>
<a href="http://jessezhuang.github.io/categories/faq"
title="faq">
faq<sup>1</sup></a>
<a href="http://jessezhuang.github.io/categories/programming-language"
title="programming-language">
programming-language<sup>1</sup></a>
<a href="http://jessezhuang.github.io/categories/tutorial"
title="tutorial">
tutorial<sup>8</sup></a>
</span>
<hr>
<span class="section">Tags</span>
<span class="tags">
<a href="http://jessezhuang.github.io/tags/blog">[blog]</a>
<a href="http://jessezhuang.github.io/tags/database">[database]</a>
<a href="http://jessezhuang.github.io/tags/devops">[devops]</a>
<a href="http://jessezhuang.github.io/tags/docker">[docker]</a>
<a href="http://jessezhuang.github.io/tags/git">[git]</a>
<a href="http://jessezhuang.github.io/tags/golang">[golang]</a>
<a href="http://jessezhuang.github.io/tags/hugo">[hugo]</a>
<a href="http://jessezhuang.github.io/tags/internet">[internet]</a>
<a href="http://jessezhuang.github.io/tags/java">[java]</a>
<a href="http://jessezhuang.github.io/tags/linux">[linux]</a>
<a href="http://jessezhuang.github.io/tags/mac">[mac]</a>
<a href="http://jessezhuang.github.io/tags/mongodb">[mongodb]</a>
<a href="http://jessezhuang.github.io/tags/nosql">[nosql]</a>
<a href="http://jessezhuang.github.io/tags/python">[python]</a>
<a href="http://jessezhuang.github.io/tags/string">[string]</a>
<a href="http://jessezhuang.github.io/tags/ubuntu">[ubuntu]</a>
<a href="http://jessezhuang.github.io/tags/vim">[vim]</a>
</span>
<hr>
<span class="section">The author</span>
<ul>
<li>
<a href="https://twitter.com/zhzexi" target="_blank" title="@zhzexi on Twitter">
@zhzexi on Twitter
</a>
</li>
<li>
<a href="https://github.com/jessezhuang" target="_blank" title="@jessezhuang on GitHub">
@jessezhuang on GitHub
</a>
</li>
<li>
<a href="https://www.linkedin.com/in/zexizhuang" target="_blank" title="@zexizhuang on LinkedIn">
@zexizhuang on LinkedIn
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
</div>
<article class="article">
<div class="wrapper">
<a href="http://jessezhuang.github.io/article/docker-cheatsheet/"><h1>Docker Cheatsheet</h1></a></span>
<p>Container vs Image Image is immutable, container is a box running starting from an image.
docker ps -as # list all containers with sizes docker images # list all images docker run [options] <image> # best to use image id or image:tag # -p hostPort:containerPort expose port, -P publish all exposed ports. 8888 for jupyter notebook # -t terminal pseudo-TTY # -i Keep STDIN open even if not attached # -v /host/dir:/<container-path> # –name Assign a name to the container docker start -ai <container> # can user container id or name # -a Attach STDOUT/STDERR and forward signals # -i Attach container’s STDIN jupyter notebook –ip 0.</p>
<hr>
<a href="http://jessezhuang.github.io/article/internet-faq/"><h1>Internet FAQ</h1></a></span>
<p>Internet Protocol (IP) IPV4 vs IPv6 IPV4 uses 32 bits, 4 8 bit numbers, 2^32 distinct IP addresses. Example 202.2.1.10.
IPV6 uses 128 bits, 8 16 bit numbers, 2^128 distinct IP addresses. Actual number is slightly smaller since multiple ranges are reserved for special use or completely excluded from use. Example 3ffe:1900:4545:3:200:f8ff:fe21:67cf.
Refs:
webopedia article IPV6 wikipedia</p>
<hr>
<a href="http://jessezhuang.github.io/article/mac_cheatsheet/"><h1>Mac Cheatsheet</h1></a></span>
<p>Keboard Shortcuts Switching tabs:
Safari, [shift]+ctrl+tab, cmd+number, shift+cmd+left/right. Chrome, [shift]+ctrl+tab, cmd+number, alt+cmd+left/right. macvim, shift+cmd+{/}. Editing:
Delete to end of line, ctrl+k, same as on command line Delete to beginning of line, cmd+shift+left, then delete</p>
<hr>
<a href="http://jessezhuang.github.io/article/algorithm-string-kmp/"><h1>Algorithm Question Substring Search KMP</h1></a></span>
<p>Question LeetCode has this question Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Tags: Two Pointers, String.
Let’s denote haystack length N, needle length M, character table size R (256 for extended ASCII).
Java’s String class method indexOf() uses brute force algorithm O(MN).
Examples:
haystacsflksdjflkshhaystackneeneeneedle needle naslkfjskjlhhhh needle Method 1 2D DFA KMP Knuth Morris Pratt O(N) time complexity.</p>
<hr>
<a href="http://jessezhuang.github.io/article/algorithm-sorting-summary/"><h1>Sorting Algorithm Summary</h1></a></span>
<p>The following table summarizes common characteristics of popular sorting algorithms, not including string sort algorithms (I may add those later here or write another separate post).
algorithm In Place? Stable? parallel? worst average best remarks selection y n n N2/2 N2/2 N2/2 N exchanges insertion y y n N2/2 N2/4 N use for small N or partially ordered shell y n n ?</p>
<hr>
<a href="http://jessezhuang.github.io/article/git-cheatsheet/"><h1>Git Cheatsheet</h1></a></span>
<img src="http://media.w3guy.com/wp-content/uploads/2015/02/git.jpg">
<p>Basic Snapshotting git-mv - Move or rename a file, a directory, or a symlink
git mv [-v] [-f] [-n] [-k] <source> <destination> rename
git mv [-v] [-f] [-n] [-k] <source> … <destination directory> move into existing directory
git mv <source> <destination> # rename a directory Branch Related git branch [options] <branchname>
git branch # show all branches with current marked with * git branch -vv # show all local and tracked remote branches git checkout dev git branch jesse # creates branch named "jesse" off from "dev" branch git checkout -b jesse # creates and switch to branch "jesse" Merge git merge [options] [<commit>.</p>
<hr>
<a href="http://jessezhuang.github.io/article/virtualbox-tips/"><h1>Virtualbox Tips for Ubuntu Guest in Windows Host</h1></a></span>
<p>For Ubuntu tips, see <a href="http://jessezhuang.github.io/">http://jessezhuang.github.io/</a> article/ubuntu/.
How to Get Shared Folder Write Access When used as a virtual machine guest (Ubuntu 14.04LTS in Windows 10 host with Oracle VirtualBox), to get access to shared folder, run the following command in shell, replace username with your ubuntu username.</p>
<h1 id="replace-username-with-your-actual-ubuntu-username-sudo-usermod-a-g-vboxsf-username-after-that-reboot-the-vm-and-you-should-have-write-access-to-the-shared-folder">replace username with your actual ubuntu username $ sudo usermod -a -G vboxsf username After that, reboot the VM and you should have write access to the shared folder.</h1>
</p>
<hr>
<a href="http://jessezhuang.github.io/article/vim-cheatsheet/"><h1>Vim Cheatsheet</h1></a></span>
<p>For Ubuntu Linux,
Terms:
C-x stands for ctrl-x.
Generally, use :help <cmd>" for quick ref, e.g.:help undo`.
Configuration Configuration file default ~/.vimrc. Can use source <another file> and put the actual vimrc in cloud like dropbox.</p>
<h1 id="to-reload-an-edited-vimrc-so-myvimrc-file-operations-to-rename-a-file-e-or-explorer-te-or-texplorer-to-open-explorer-in-new-tab-then-bd-to-close-the-new-tab-r-rename-at-bottom-bp-go-back-previous-buffer-save-the-current-session-including-buffers-tabs-and-settings-mksession-vimsessions-session1">to reload an edited vimrc :so $MYVIMRC File operations # to rename a file :E or :Explorer :Te or :Texplorer to open explorer in new tab then :bd to close the new tab R # rename at bottom :bp # go back previous buffer # save the current session including buffers, tabs, and settings :mksession ~/vimSessions/session1.</h1>
</p>
<hr>
<a href="http://jessezhuang.github.io/article/vim-ubuntu-install/"><h1>How to Install Latest Version Vim in Ubuntu 14.04 LTS</h1></a></span>
<p>Ubuntu comes with Vim-Tiny First of all, Ubuntu 14.04 LTS comes with Vim.Tiny with the version 2:7.4.052-1ubuntu3 which is Vim 7.4.052, already fairly new. Unfortunately I was looking specifically for markdown editing and syntax highlighting and I found that starting from 7.4.480 vim can pick up *.md files as markdown files by default. So I wanted to find a newer version of Vim to install.
Install Vim with PPA I have tried to install Vim with debian packages listed on Vim.</p>
<hr>
<a href="http://jessezhuang.github.io/article/mongodb-app-engineer/"><h1>Mongodb Tutorial 6 - Application Engineering</h1></a></span>
<p>Durability of Writes Write Concern How to make sure the writes persistent? Assume application talking to a database server in the scheme below.
The settings of two parameters affect the write concern:
w(wait for acknowledgement) j(journal) effect comment 1 false fast, small window of vulnerability default setting 1 true slow, no vulnerability can be done inside driver at collection, database, or client level 0 - unacknowledged write do not recommend 2 - wait for 2 nodes in replica set to acknowledge write w can be 0-3 for a set with 3 nodes majority - wait for majority to acknowledge, avoid rollback on failover - tag values - set tags on nodes - If the journal has been written to disk and the server crashes, on recovery the server can look in the journal and recreate all the writes that were not yet persisted to the pages.</p>
<hr>
<a href="http://jessezhuang.github.io/article/mongodb-intro/"><h1>Mongodb Tutorial 1 - Introduction</h1></a></span>
<p>To run mongo commands from the source of a JavaScript file,
cat source.js | mongo # or mongo < source.js # or just mongo source.js To import/export data,
$ mongoimport -d <database> -c <collection> -f <file> $ mongoimport -d <dababase> -c <collection> < file.json $ mongoexport -d <dababase> -c <collection> –out file.json $ mongorestore -d <database> -c <collection> file.bson # by default writes BSON file to dump/ in current directory $ mongodump -d <database> -c <collection [–out <path>] What is MongoDB?</p>
<hr>
<a href="http://jessezhuang.github.io/article/mongodb-aggregation-framework/"><h1>MongoDB Tutorial 5 - Aggregation Framework</h1></a></span>
<p>The aggregation framework has its roots in SQL’s world of groupby clause.
Introduction Example used: imagine a SQL table of products.
name category manufacture price ipad tablet Apple 499 nexus s cellphone Samsung 350 To get number of products from each manufacture with SQL,
select manufacture, count(*) from products group by manufacture; with mongodb,
> use agg > db.</p>
<hr>
<a href="http://jessezhuang.github.io/article/ubuntu/"><h1>Ubuntu Tips and Tricks</h1></a></span>
<p>Ubuntu version is 14.04 LTS running as a guest OS in Oracle VirtualBox 5. For VirtualBox related issues, see <a href="http://jessezhuang.github.io/">http://jessezhuang.github.io/</a> article/virtualbox-tips/.
Performance Monitoring top from command line System Monitor application installed by default. Screen Capture Application Screenshot installed by default. Can take screenshot of whole screen, current window, or selected area. Similar to “Snipping Tool” in Windows. To run this tool from the shell, use gnome-screeshot -i for interactive window specified with mouse, gnome-screenshot -help for other options.</p>
<hr>
<a href="http://jessezhuang.github.io/article/linux-cheatsheet/"><h1>Linux Cheatsheets</h1></a></span>
<img src="http://jessezhuang.github.io/img/linus-penguin.jpg">
<p>Linux Commands Cheatsheet Files Related ls - list directory contents SYNOPSIS ls [OPTION]… [FILE]… -a, –all do not ignore entries starting with . examples effects ls -la list all file/directories including hidden in long list form ls -ld list directory only in list form du - estimate file space usage SYNOPSIS du [OPTION]… [FILE]… -c, –total produce a grand total -h, –human-readable print sizes in human readable format (e.</p>
<hr>
<a href="http://jessezhuang.github.io/article/mongodb-performance/"><h1>MongoDB Tutorial 4 - Performance</h1></a></span>
<img src="http://blog.technotesdesk.com/wp-content/uploads/2015/01/mongodb_logo.jpg">
<p>Storage engine Storage engine sits between mongodb server and the file storage. Use db.serverStatus().storageEngine; to check.
WiredTiger for many applications, this is faster - document level concurrency, lock free implementation. optimistic concurrency model which assumes two writes not gonna be on same document. if on same, one write unwound and try again. - compression of data and indexes. WiredTiger manages memory. - append only, no in place updates
MMAP V1 Uses mmap system call undercovers.</p>
<hr>
<a href="http://jessezhuang.github.io/article/java-reflection-test/"><h1>Using Java's Reflection for Testing</h1></a></span>
<img src="http://jessezhuang.github.io/img/java-reflection.png">
<p>Writing Boilerplate Test Code is Boring Repeatedly writing boilerplate for loops for testing is not fun. We can use Java reflection API (java.lang.reflect package) to maximize code reuse and help testing.
Frameworks like JUnit uses reflection for testing. I will introduce a single method today on how reflection can be used for testing.
The code examples below are available at my github repository.
Get an Instance of Class Being Tested First we will declare a message to print out if all tests passed.</p>
<hr>
<a href="http://jessezhuang.github.io/article/tutorial-hugoblog/"><h1>A Tutorial for using Hugo and Github Pages as a Blog Site</h1></a></span>
<p>Hugo, a Static Site Generator Hugo is one of the static site generators. Currently it is ranked 4th by StaticGen. Of the top competitors, Hugo is the only one written in a compiled language (Go), which builds the site much faster. So I decided to give it a spin.
Most of them were written in JavaScript. Jekyll was the good old player in this field, which was used in Obama’s campaigns to raise $250M.</p>
<hr>
<nav class="data button">
<a style="font-size:20px" href="http://jessezhuang.github.io/article/">More...</a>
</nav>
<aside class="copyright" role="note">
© 2018 Zexi Zhuang –
built with
<a href="https://www.gohugo.io" target="_blank">Hugo</a>
using a customized
<a href="https://github.com/JesseZhuang/hugo-material-blog" target="_blank">
Material
</a> theme.
</aside>
<footer class="footer">
<nav class="pagination" aria-label="Footer">
<div class="previous">
</div>
<div class="next">
<a href="http://jessezhuang.github.io/" title="Coding Automaton">
<span class="direction">
Next
</span>
<div class="page">
<div class="stretch">
<div class="title">
Coding Automaton
</div>
</div>
<div class="button button-next" role="button" aria-label="Next">
<i class="icon icon-forward"></i>
</div>
</div>
</a>
</div>
</nav>
</footer>
</div>
</article>
<div class="results" role="status" aria-live="polite">
<div class="scrollable">
<div class="wrapper">
<div class="meta"></div>
<div class="list"></div>
</div>
</div>
</div>
</main>
<script>
var base_url = 'http:\/\/jessezhuang.github.io\/';
var repo_id = 'JesseZhuang\/hugo-material-blog';
</script>
<script src="http://jessezhuang.github.io/javascripts/application.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/highlight.min.js"></script>
<script>
(function(i,s,o,g,r,a,m){
i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||
[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;
m.parentNode.insertBefore(a,m)
})(window, document,
'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-79594714-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
var buttons = document.querySelectorAll('a');
Array.prototype.map.call(buttons, function(item) {
if (item.host != document.location.host) {
item.addEventListener('click', function() {
var action = item.getAttribute('data-action') || 'follow';
ga('send', 'event', 'outbound', action, item.href);
});
}
});
var query = document.querySelector('.query');
query.addEventListener('blur', function() {
if (this.value) {
var path = document.location.pathname;
ga('send', 'pageview', path + '?q=' + this.value);
}
});
</script>
<script>hljs.initHighlightingOnLoad();</script>
</body>
</html>