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"> 9 <meta name="description" content="æ¥ææ¢¦æ³çå¸é±¼"> 10 <meta name="keywords" content="å®åï¼ç®æ³"> 11 <meta name="theme-color" content="#000000"> 12 13 <title>Portfolio - 许ç¦çå客 | Xuq Blog</title> 14 15 <!-- Web App Manifest --> 16 <link rel="manifest" href="/pwa/manifest.json"> 17 18 <!-- Favicon --> 19 <link rel="shortcut icon" href="/img/favicon.ico"> 20 21 <!-- Canonical URL --> 22 <link rel="canonical" href="https://mikexuq.github.io/portfolio/"> 23 24 <!-- Bootstrap Core CSS --> 25 <link rel="stylesheet" href="/css/bootstrap.min.css"> 26 27 <!-- Custom CSS --> 28 <link rel="stylesheet" href="/css/hux-blog.min.css"> 29 30 <!-- Pygments Github CSS --> 31 <link rel="stylesheet" href="/css/syntax.css"> 32 33 <!-- Custom Fonts --> 34 <!-- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> --> 35 <!-- Hux change font-awesome CDN to qiniu --> 36 <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" type="text/css"> 37 38 39 <!-- Hux Delete, sad but pending in China 40 <link href='http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'> 41 <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/ 42 css'> 43 --> 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<nav class="navbar navbar-default navbar-custom navbar-fixed-top"> 63 <div class="container-fluid"> 64 <!-- Brand and toggle get grouped for better mobile display --> 65 <div class="navbar-header page-scroll"> 66 <button type="button" class="navbar-toggle"> 67 <span class="sr-only">Toggle navigation</span> 68 <span class="icon-bar"></span> 69 <span class="icon-bar"></span> 70 <span class="icon-bar"></span> 71 </button> 72 <a class="navbar-brand" href="/">Xuq Blog</a> 73 </div> 74 75 <!-- Collect the nav links, forms, and other content for toggling --> 76 <div id="huxblog_navbar"> 77 <div class="navbar-collapse"> 78 <ul class="nav navbar-nav navbar-right"> 79 <li> 80 <a href="/">Home</a> 81 </li> 82 83 <li> 84 <a href="/about/">About</a> 85 </li> 86 87 <li> 88 <a href="/portfolio/">Portfolio</a> 89 </li> 90 91 <li> 92 <a href="/tags/">Tags</a> 93 </li> 94 95 </ul> 96 </div> 97 </div> 98 <!-- /.navbar-collapse --> 99 </div> 100 <!-- /.container --> 101</nav>
102<script> 103 // Drop Bootstarp low-performance Navbar 104 // Use customize navbar with high-quality material design animation 105 // in high-perf jank-free CSS3 implementation 106 var $body = document.body; 107 var $toggle = document.querySelector('.navbar-toggle'); 108 var $navbar = document.querySelector('#huxblog_navbar'); 109 var $collapse = document.querySelector('.navbar-collapse'); 110 111 var __HuxNav__ = { 112 close: function(){ 113 $navbar.className = " "; 114 // wait until animation end. 115 setTimeout(function(){ 116 // prevent frequently toggle 117 if($navbar.className.indexOf('in') < 0) { 118 $collapse.style.height = "0px" 119 } 120 },400) 121 }, 122 open: function(){ 123 $collapse.style.height = "auto" 124 $navbar.className += " in"; 125 } 126 } 127 128 // Bind Event 129 $toggle.addEventListener('click', function(e){ 130 if ($navbar.className.indexOf('in') > 0) { 131 __HuxNav__.close() 132 }else{ 133 __HuxNav__.open() 134 } 135 }) 136 137 /** 138 * Since Fastclick is used to delegate 'touchstart' globally 139 * to hack 300ms delay in iOS by performing a fake 'click', 140 * Using 'e.stopPropagation' to stop 'touchstart' event from 141 * $toggle/$collapse will break global delegation. 142 * 143 * Instead, we use a 'e.target' filter to prevent handler 144 * added to document close HuxNav. 145 * 146 * Also, we use 'click' instead of 'touchstart' as compromise 147 */ 148 document.addEventListener('click', function(e){ 149 if(e.target == $toggle) return; 150 if(e.target.className == 'icon-bar') return; 151 __HuxNav__.close(); 152 }) 153</script>
153 154 155 156 <!DOCTYPE html> 157<html class="no-js"> 158 <head> 159 <meta charset="UTF-8" /> 160 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 161 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 162 <title>Xuq - Timeline</title> 163 <link rel="stylesheet" type="text/css" href="css/timeline.css" /> 164
164<script src="js/modernizr.custom.js"></script>
164 165 </head> 166 <body> 167 168 </body> 169</html> 170 171 172 <!-- Footer --> 173<footer> 174 <div class="container"> 175 <div class="row"> 176 <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 177 <ul class="list-inline text-center"> 178 179 180 <li> 181 <a href="https://twitter.com/none"> 182 <span class="fa-stack fa-lg"> 183 <i class="fa fa-circle fa-stack-2x"></i> 184 <i class="fa fa-twitter fa-stack-1x fa-inverse"></i> 185 </span> 186 </a> 187 </li> 188 189 190 <!-- add Weibo, Zhihu by Hux, add target = "_blank" to <a> by Hux --> 191 192 <li> 193 <a target="_blank" href="https://www.zhihu.com/people/none"> 194 <span class="fa-stack fa-lg"> 195 <i class="fa fa-circle fa-stack-2x"></i> 196 <i class="fa fa-stack-1x fa-inverse">ç¥</i> 197 </span> 198 </a> 199 </li> 200 201 202 <li> 203 <a target="_blank" href="http://weibo.com/none"> 204 <span class="fa-stack fa-lg"> 205 <i class="fa fa-circle fa-stack-2x"></i> 206 <i class="fa fa-weibo fa-stack-1x fa-inverse"></i> 207 </span> 208 </a> 209 </li> 210 211 212 213 214 215 <li> 216 <a target="_blank" href="https://github.com/MikeXuQ"> 217 <span class="fa-stack fa-lg"> 218 <i class="fa fa-circle fa-stack-2x"></i> 219 <i class="fa fa-github fa-stack-1x fa-inverse"></i> 220 </span> 221 </a> 222 </li> 223 224 225 </ul> 226 <p class="copyright text-muted"> 227 Copyright © Xuq Blog 2018 228 <br> 229 Theme by <a href="http://huangxuan.me">Hux</a> | 230 <iframe 231 style="margin-left: 2px; margin-bottom:-5px;" 232 frameborder="0" scrolling="0" width="100px" height="20px" 233 src="https://ghbtns.com/github-btn.html?user=huxpro&repo=huxpro.github.io&type=star&count=true" > 234 </iframe> 235 </p> 236 </div> 237 </div> 238 </div> 239</footer> 240 241<!-- jQuery -->
242<script src="/js/jquery.min.js "></script>
242 243 244<!-- Bootstrap Core JavaScript --> 245<!-- Currently, only navbar scroll-down effect at desktop still depends on this -->
246<script src="/js/bootstrap.min.js "></script>
246 247 248<!-- Custom Theme JavaScript -->
249<script src="/js/hux-blog.min.js "></script>
249 250 251<!-- Service Worker --> 252
253<script src="/js/snackbar.js "></script>
vendor: 1 bytes, line 253
253
254<script src="/js/sw-registration.js "></script>
254 255 256 257<!-- async load function -->
258<script> 259 function async(u, c) { 260 var d = document, t = 'script', 261 o = d.createElement(t), 262 s = d.getElementsByTagName(t)[0]; 263 o.src = u; 264 if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); } 265 s.parentNode.insertBefore(o, s); 266 } 267</script>
267 268 269<!-- 270 Because of the native support for backtick-style fenced code blocks 271 right within the Markdown is landed in Github Pages, 272 From V1.6, There is no need for Highlight.js, 273 so Huxblog drops it officially. 274 275 - https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0 276 - https://help.github.com/articles/creating-and-highlighting-code-blocks/ 277 - https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers 278--> 279<!-- 280
280<script> 281 async("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function(){ 282 hljs.initHighlightingOnLoad(); 283 }) 284 </script>
284 285 <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet"> 286--> 287 288 289<!-- jquery.tagcloud.js -->
290<script> 291 // only load tagcloud.js in tag.html 292 if($('#tag_cloud').length !== 0){ 293 async('/js/jquery.tagcloud.js',function(){ 294 $.fn.tagcloud.defaults = { 295 //size: {start: 1, end: 1, unit: 'em'}, 296 color: {start: '#bbbbee', end: '#0085a1'}, 297 }; 298 $('#tag_cloud a').tagcloud(); 299 }) 300 } 301</script>
301 302 303<!--fastClick.js -->
304<script> 305 async("//cdnjs.cloudflare.com/ajax/libs/fastclick/1.0.6/fastclick.min.js", function(){ 306 var $nav = document.querySelector("nav"); 307 if($nav) FastClick.attach($nav); 308 }) 309</script>
309 310 311 312<!-- Google Analytics --> 313
314<script> 315 // dynamic User by Hux 316 var _gaId = 'UA-49627206-1'; 317 var _gaDomain = 'huangxuan.me'; 318 319 // Originial 320 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 321 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 322 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 323 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 324 325 ga('create', _gaId, _gaDomain); 326 ga('send', 'pageview'); 327</script>
327 328 329 330 331<!-- Baidu Tongji --> 332 333 334 335<!-- Side Catalog --> 336 337 338 339<!-- Multi-Lingual --> 340 341 342 343 344<!-- Image to hack wechat --> 345<img src="/img/icon_wechat.png" width="0" height="0" /> 346<!-- Migrate from head to bottom, no longer block render and still work --> 347 348</body> 349 350</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.