PageSourceSearch

https://imagineblog.vercel.app/about/

html imagineblog.vercel.app collected 2026-10-03 07:06:28 UTC 44,268 bytes, 675 lines download raw bytes

1<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>关于我 | IMAGINE</title><meta name="keywords" content="IMAGINE,Html,Css,JavaScript,Vue,React,NodeJs,Hexo,Butterfly"><meta name="author" content="Peng"><meta name="copyright" content="Peng"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="hello!本人 web 前端开发一枚。从事开发工作两年多,平时热衷于技术,偶尔也玩玩游戏。   🔊 基本信息职业 💻:web 前端坐标 📍:NanChang爱好 🌈:游戏、电子、音乐   🪐 我的友链信息1234- name: imagine&amp;#x27;s blog  link: http:&#x2F;&#x2F;www.imagineblog.host&#x2F;  avatar: https:&#x2F;&#x2F;z3.ax">
2<meta property="og:type" content="website">
3<meta property="og:title" content="关于我">
4<meta property="og:url" content="http://imagineblog.host/about/index.html">
5<meta property="og:site_name" content="IMAGINE">
6<meta property="og:description" content="hello!本人 web 前端开发一枚。从事开发工作两年多,平时热衷于技术,偶尔也玩玩游戏。   🔊 基本信息职业 💻:web 前端坐标 📍:NanChang爱好 🌈:游戏、电子、音乐   🪐 我的友链信息1234- name: imagine&amp;#x27;s blog  link: http:&#x2F;&#x2F;www.imagineblog.host&#x2F;  avatar: https:&#x2F;&#x2F;z3.ax">
7<meta property="og:locale" content="zh_CN">
8<meta property="og:image" content="http://imagineblog.host/img/banner/02.jpg">
9<meta property="article:published_time" content="2021-07-21T03:18:01.000Z">
10<meta property="article:modified_time" content="2022-08-31T08:04:19.377Z">
11<meta property="article:author" content="Peng">
12<meta property="article:tag" content="IMAGINE,Html,Css,JavaScript,Vue,React,NodeJs,Hexo,Butterfly">
13<meta name="twitter:card" content="summary">
14<meta name="twitter:image" content="http://imagineblog.host/img/banner/02.jpg"><link rel="shortcut icon" href="https://lovelijunyi.gitee.io/img/avatar.gif"><link rel="canonical" href="http://imagineblog.host/about/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//hm.baidu.com"/><link rel="preconnect" href="//fonts.googleapis.com" crossorigin=""/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="google-site-verification" content="oUu4V6mTgP_CWLbYPUuUK0dzxO1r5vMPXCM6QXwiOv8"/><meta name="baidu-site-verification" content="code-mOtCM04zOU"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css" media="print" onload="this.media='all'">
14<script>var _hmt = _hmt || [];
15(function() {
16  var hm = document.createElement("script");
17  hm.src = "https://hm.baidu.com/hm.js?6ede5b235a26f80d0b78937205b49f6f";
18  var s = document.getElementsByTagName("script")[0]; 
19  s.parentNode.insertBefore(hm, s);
20})();
21</script>
21<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Titillium+Web&amp;display=swap" media="print" onload="this.media='all'">
21<script>const GLOBAL_CONFIG = { 
22  root: '/',
23  algolia: undefined,
24  localSearch: {"path":"search.xml","languages":{"hits_empty":"找不到您查询的内容:${query}"}},
25  translate: undefined,
26  noticeOutdate: undefined,
27  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":200},
28  copy: {
29    success: '复制成功',
30    error: '复制错误',
31    noSupport: '浏览器不支持'
32  },
33  relativeDate: {
34    homepage: false,
35    post: false
36  },
37  runtime: '',
38  date_suffix: {
39    just: '刚刚',
40    min: '分钟前',
41    hour: '小时前',
42    day: '天前',
43    month: '个月前'
44  },
45  copyright: {"limitCount":50,"languages":{"author":"作者: Peng","link":"链接: ","source":"来源: IMAGINE","info":"著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。"}},
46  lightbox: 'mediumZoom',
47  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#00c4b6","bgDark":"#121212","position":"top-right"},
48  source: {
49    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
50    justifiedGallery: {
51      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
52      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
53    },
54    fancybox: {
55      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
56      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
57    }
58  },
59  isPhotoFigcaption: true,
60  islazyload: true,
61  isanchor: true
62}</script>
62<script id="config-diff">var GLOBAL_CONFIG_SITE = { 
63  isPost: false,
64  isHome: false,
65  isHighlightShrink: false,
66  isToc: false,
67  postUpdate: '2022-08-31 16:04:19'
68}</script>
68<noscript><style type="text/css">
69  #nav {
70    opacity: 1
71  }
72  .justified-gallery img {
73    opacity: 1
74  }
75
76  #recent-posts time,
77  #post-meta time {
78    display: inline !important
79  }
80</style></noscript>
80<script>(win=>{
81    win.saveToLocal = {
82      set: function setWithExpiry(key, value, ttl) {
83        if (ttl === 0) return
84        const now = new Date()
85        const expiryDay = ttl * 86400000
86        const item = {
87          value: value,
88          expiry: now.getTime() + expiryDay,
89        }
90        localStorage.setItem(key, JSON.stringify(item))
91      },
92
93      get: function getWithExpiry(key) {
94        const itemStr = localStorage.getItem(key)
95
96        if (!itemStr) {
97          return undefined
98        }
99        const item = JSON.parse(itemStr)
100        const now = new Date()
101
102        if (now.getTime() > item.expiry) {
103          localStorage.removeItem(key)
104          return undefined
105        }
106        return item.value
107      }
108    }
109  
110    win.getScript = url => new Promise((resolve, reject) => {
111      const script = document.createElement('script')
112      script.src = url
113      script.async = true
114      script.onerror = reject
115      script.onload = script.onreadystatechange = function() {
116        const loadState = this.readyState
117        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
118        script.onload = script.onreadystatechange = null
119        resolve()
120      }
121      document.head.appendChild(script)
122    })
123  
124      win.activateDarkMode = function () {
125        document.documentElement.setAttribute('data-theme', 'dark')
126        if (document.querySelector('meta[name="theme-color"]') !== null) {
127          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
128        }
129      }
130      win.activateLightMode = function () {
131        document.documentElement.setAttribute('data-theme', 'light')
132        if (document.querySelector('meta[name="theme-color"]') !== null) {
133          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
134        }
135      }
136      const t = saveToLocal.get('theme')
137    
138          const now = new Date()
139          const hour = now.getHours()
140          const isNight = hour <= 6 || hour >= 18
141          if (t === undefined) isNight ? activateDarkMode() : activateLightMode()
142          else if (t === 'light') activateLightMode()
143          else activateDarkMode()
144        
145      const asideStatus = saveToLocal.get('aside-status')
146      if (asideStatus !== undefined) {
147        if (asideStatus === 'hide') {
148          document.documentElement.classList.add('hide-aside')
149        } else {
150          document.documentElement.classList.remove('hide-aside')
151        }
152      }
153    
154    const fontSizeVal = saveToLocal.get('global-font-size')
155    if (fontSizeVal !== undefined) {
156      document.documentElement.style.setProperty('--global-font-size', fontSizeVal + 'px')
157    }
158    })(window)</script>
158<link rel="stylesheet" href="/css/custom.css"  media="defer" onload="this.media='all'"><link rel="stylesheet" href="//at.alicdn.com/t/font_2492407_3wz9sdgpeam.css"><style type="text/css">#toggle-sidebar {bottom: 80px;}</style><link rel="stylesheet" href="/css/macblack.css"><link rel="stylesheet" href="/css/veditor.css"><link rel="stylesheet" href="/css/close.css"><link rel="stylesheet" href="/css/iconColor.css"><link rel="stylesheet" href="/css/copyright.css"><link rel="stylesheet" href="/css/notice.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/HexoPlusPlus/HexoPlusPlus@latest/talk.css" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" media="defer" onload="this.media='all'">
158<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js"></script>
158<script src="https://cdn.jsdelivr.net/npm/[email protected]/map/js/china.js"></script>
158<script src="https://cdn.jsdelivr.net/gh/HexoPlusPlus/HexoPlusPlus@latest/talk_user.js"></script>
158<!-- hexo injector head_end start --><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/l-lin/font-awesome-animation/dist/font-awesome-animation.min.css" media="defer" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexo-butterfly-tag-plugins-plus@latest/lib/tag_plugins.min.css" media="defer" onload="this.media='all'">
158<script async src="https://cdn.jsdelivr.net/npm/hexo-butterfly-tag-plugins-plus@latest/lib/carousel-touch.min.js"></script>
158<!-- hexo injector head_end end --><meta name="generator" content="Hexo 5.4.0"><link rel="alternate" href="/atom.xml" title="IMAGINE" type="application/atom+xml">
159</head><body><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="author-avatar"><img class="avatar-img" data-lazy-src="/img/avatar.jpg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">37</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">20</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">14</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw iconfont icon-zhuye"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-mulu1"></i><span> 目录</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/archives/"><i class="fa-fw iconfont icon-guidang1"></i><span> 归档</span></a></li><li><a class="site-page" href="/tags/"><i class="fa-fw iconfont icon-biaoqian"></i><span> 标签</span></a></li><li><a class="site-page" href="/categories/"><i class="fa-fw iconfont icon-category"></i><span> 分类</span></a></li><li><a class="site-page" href="/collect/"><i class="fa-fw iconfont icon-shoucang"></i><span> 收藏</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-yule"></i><span> 清单</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/playlist/"><i class="fa-fw iconfont icon-gedan"></i><span> 歌单</span></a></li><li><a class="site-page" href="/books/"><i class="fa-fw iconfont icon-yuedumoshi"></i><span> 书单</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-caozuojiemiantubiao---_gongju"></i><span> 工具</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" target="_blank" rel="noopener" href="https://imgtu.com/"><i class="fa-fw iconfont  icon-cloud"></i><span> imgtu</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://www.leancloud.cn/"><i class="fa-fw iconfont  icon-pinglun"></i><span> LeanCloud</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://www.cloudflare.com/zh-cn/"><i class="fa-fw iconfont  icon-cloudcomputing"></i><span> Cloudflare</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://vercel.com/lp-imagine"><i class="fa-fw iconfont  icon-webx"></i><span> Vercel</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://cloud.mongodb.com/v2#/org/610751ff4218af3732524482/projects"><i class="fa-fw iconfont icon-mongdbwapian"></i><span> MongoDB</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-guanyu"></i><span> 关于</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/about/"><i class="fa-fw iconfont  icon-iconzhengli-"></i><span> 关于我</span></a></li><li><a class="site-page" href="/message/"><i class="fa-fw iconfont icon-liuyanmoban"></i><span> 留言板</span></a></li><li><a class="site-page" href="/talks/"><i class="fa-fw iconfont icon-fengche"></i><span> 说说</span></a></li><li><a class="site-page" href="/link/"><i class="fa-fw iconfont icon-youqinglianjie"></i><span> 友情链接</span></a></li><li><a class="site-page" href="/friends_link"><i class="fa-fw iconfont icon-pengyouquan"></i><span> 友链朋友圈</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://imagine-nav.vercel.app/"><i class="fa-fw iconfont icon-daohang1"></i><span> 导航站</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://imagine.imagineblog.workers.dev/hpp/admin/login"><i class="fa-fw iconfont icon-xiezuo"></i><span> 后台</span></a></li></ul></div></div></div></div><div class="page" id="body-wrap"><header class="not-home-page" id="page-header"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">IMAGINE</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw iconfont icon-zhuye"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-mulu1"></i><span> 目录</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/archives/"><i class="fa-fw iconfont icon-guidang1"></i><span> 归档</span></a></li><li><a class="site-page" href="/tags/"><i class="fa-fw iconfont icon-biaoqian"></i><span> 标签</span></a></li><li><a class="site-page" href="/categories/"><i class="fa-fw iconfont icon-category"></i><span> 分类</span></a></li><li><a class="site-page" href="/collect/"><i class="fa-fw iconfont icon-shoucang"></i><span> 收藏</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-yule"></i><span> 清单</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/playlist/"><i class="fa-fw iconfont icon-gedan"></i><span> 歌单</span></a></li><li><a class="site-page" href="/books/"><i class="fa-fw iconfont icon-yuedumoshi"></i><span> 书单</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-caozuojiemiantubiao---_gongju"></i><span> 工具</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" target="_blank" rel="noopener" href="https://imgtu.com/"><i class="fa-fw iconfont  icon-cloud"></i><span> imgtu</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://www.leancloud.cn/"><i class="fa-fw iconfont  icon-pinglun"></i><span> LeanCloud</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://www.cloudflare.com/zh-cn/"><i class="fa-fw iconfont  icon-cloudcomputing"></i><span> Cloudflare</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://vercel.com/lp-imagine"><i class="fa-fw iconfont  icon-webx"></i><span> Vercel</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://cloud.mongodb.com/v2#/org/610751ff4218af3732524482/projects"><i class="fa-fw iconfont icon-mongdbwapian"></i><span> MongoDB</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-guanyu"></i><span> 关于</span><i class="fas fa-chevron-down expand hide"></i></a><ul class="menus_item_child"><li><a class="site-page" href="/about/"><i class="fa-fw iconfont  icon-iconzhengli-"></i><span> 关于我</span></a></li><li><a class="site-page" href="/message/"><i class="fa-fw iconfont icon-liuyanmoban"></i><span> 留言板</span></a></li><li><a class="site-page" href="/talks/"><i class="fa-fw iconfont icon-fengche"></i><span> 说说</span></a></li><li><a class="site-page" href="/link/"><i class="fa-fw iconfont icon-youqinglianjie"></i><span> 友情链接</span></a></li><li><a class="site-page" href="/friends_link"><i class="fa-fw iconfont icon-pengyouquan"></i><span> 友链朋友圈</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://imagine-nav.vercel.app/"><i class="fa-fw iconfont icon-daohang1"></i><span> 导航站</span></a></li><li><a class="site-page" target="_blank" rel="noopener" href="https://imagine.imagineblog.workers.dev/hpp/admin/login"><i class="fa-fw iconfont icon-xiezuo"></i><span> 后台</span></a></li></ul></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="page-site-info"><h1 id="site-title">关于我</h1></div></header><main class="layout hide-aside" id="content-inner"><div id="page"><div id="article-container"><p><img src= "data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=" data-lazy-src="https://lovelijunyi.gitee.io/img/avatar.gif" alt="imagine"></p>
160<blockquote>
161<p>hello!本人 web 前端开发一枚。从事开发工作两年多,平时热衷于技术,偶尔也玩玩游戏。</p>
162</blockquote>
163<hr>
164<h2 id="🔊-基本信息">
164<a href="#🔊-基本信息" class="headerlink" title="🔊 基本信息"></a>🔊 基本信息</h2><div class="note primary no-icon modern"><h3 id="职业-💻:web-前端"><a href="#职业-💻:web-前端" class="headerlink" title="职业 💻:web 前端"></a><span style="color:#49b1f5">职业 💻</span>:web 前端</h3><h3 id="坐标-📍:NanChang"><a href="#坐标-📍:NanChang" class="headerlink" title="坐标 📍:NanChang"></a><span style="color:#49b1f5">坐标 📍</span>:NanChang</h3><h3 id="爱好-🌈:游戏、电子、音乐"><a href="#爱好-🌈:游戏、电子、音乐" class="headerlink" title="爱好 🌈:游戏、电子、音乐"></a><span style="color:#49b1f5">爱好 🌈</span>:游戏、电子、音乐</h3></div>
165
166<hr>
167<h2 id="🪐-我的友链信息"><a href="#🪐-我的友链信息" class="headerlink" title="🪐 我的友链信息"></a>🪐 我的友链信息</h2><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="bullet">-</span> <span class="attr">name:</span> <span class="string">imagine&#x27;s</span> <span class="string">blog</span></span><br><span class="line">  <span class="attr">link:</span> <span class="string">http://www.imagineblog.host/</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="string">https://z3.ax1x.com/2021/07/28/WTnECT.jpg</span></span><br><span class="line">  <span class="attr">descr:</span> <span class="string">imagine🍂的搬砖日志!</span></span><br></pre></td></tr></table></figure>
168<hr>
169<h2 id="🔨-技能"><a href="#🔨-技能" class="headerlink" title="🔨 技能"></a>🔨 技能</h2><div class="mermaid">pie
170title Analysis of skill proportion
171&quot;html&quot; : 80
172&quot;css&quot; : 50
173&quot;javascript&quot; : 50
174&quot;vue&quot; : 40
175&quot;react&quot;: 20
176&quot;nodeJS&quot;: 10</div>
177</div></div></main><footer id="footer"><div class="github-div"><div></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://hexo.io/" target="_blank" title="由 Hexo 强力驱动" data-pjax-state=""><span class="badge-subject">🌴Powered</span><span class="badge-value bg-blue">Hexo</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://imgtu.com/" target="_blank" title="本站图片使用路过图床" data-pjax-state=""><span class="badge-subject">🌈Drawing bed</span><span class="badge-value bg-brightgreen">imagtu</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://github.com/" target="_blank" title="静态网页托管于 GitHub Pages" data-pjax-state=""><span class="badge-subject">📖Pages</span><span class="badge-value bg-brightgreen">GitHub</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://www.jsdelivr.com/" target="_blank" title="jsDelivr 提供 CDN 加速服务" data-pjax-state=""><span class="badge-subject">🎈CDN</span><span class="badge-value bg-orange">jsDelivr</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://vercel.com/" target="_blank" title="vercel 提供 CDN 加速服务" data-pjax-state=""><span class="badge-subject">🎃Server</span><span class="badge-value bg-orange">vercel</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" title="本站点采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可" data-pjax-state=""><span class="badge-subject"><i class="fa fa-copyright"></i></span><span class="badge-value bg-gradient">BY-NC-SA 4.0</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://github.com/jerryc127/hexo-theme-butterfly" target="_blank" title="主题" data-pjax-state=""><span class="badge-subject">🎨Theme</span><span class="badge-value bg-blueviolet">Butterfly</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="https://beian.miit.gov.cn/" target="_blank" title="本站点已通过工信部ICP备案" data-pjax-state=""><span class="badge-subject">赣ICP备</span><span class="badge-value bg-gradient">2022000236号-1</span></a></div><div class="github-badge"><a style="color:#fff" rel="external nofollow noopener noreferrer" href="http://imagineblog.host" target="_blank" title="copyright" data-pjax-state=""><span class="badge-subject">📑copyright</span><span class="badge-value bg-gradient"><div class="copyright">&copy;2020 - 2022  <i id="heartbeat" class="fa fas fa-heartbeat"></i> Peng</div></span></a></div><div class="github-badge"><span class="badge-subject">安全运行</span><a style="text-decoration:none;color:#fff;padding: 4px 4px 4px 6px;border-top-right-radius: 4px;border-bottom-right-radius: 4px;min-width:180px;display: inline-block;" id="running-time" rel="external nofollow noopener noreferrer" href="" target="_blank" title="网站运行时间" data-pjax-state=""></a></div><div id="running-time">
177<script>//- setInterval(()=>{let create_time=Math.round(new Date('2020-02-18 00:00:00').getTime()/1000);let timestamp=Math.round((new Date().getTime()+8*60*60*1000)/1000);let second=timestamp-create_time;let time=new Array(0,0,0,0,0);if(second>=365*24*3600){time[0]=parseInt(second/(365*24*3600));second%=365*24*3600;}if(second>=24*3600){time[1]=parseInt(second/(24*3600));second%=24*3600;}if(second>=3600){time[2]=parseInt(second/3600);second%=3600;}if(second>=60){time[3]=parseInt(second/60);second%=60;}if(second>0){time[4]=second;}currentTimeHtml=time[0]+'年'+time[1]+'天'+time[2]+'时'+time[3]+'分'+time[4]+'秒';document.getElementById("running-time").innerHTML=currentTimeHtml;},1000);
178setInterval(()=>{
179  let create_time=Math.round(new Date('2020-01-03 00:00:00').getTime()/1000);
180  let timestamp=Math.round((new Date().getTime()+8*60*60*1000)/1000);
181  let second=timestamp-create_time;
182  let time=new Array(0,0,0,0,0);
183  if(second>=365*24*3600){
184    time[0]=parseInt(second/(365*24*3600));
185    second%=365*24*3600;
186  }
187  if(second>=24*3600){
188    time[1]=parseInt(second/(24*3600));
189    second%=24*3600;
190  }
191  if(second>=3600){
192    time[2]=parseInt(second/3600);second%=3600;
193  }
194  if(second>=60){
195    time[3]=parseInt(second/60);second%=60;
196  }
197  if(second>0){
198    time[4]=second;
199  }
200  currentTimeHtml=`<span style="color:#fff;"><span style="color:#000">${time[0]}</span> 年 <span style="color:#9253A8">${time[1]}</span> 天 <span style="color:#50ABF1">${time[2]}</span> 时<span style="color:#666">${time[3]}</span> 分<span style="color:red">${time[4]}</span> 秒</span>`;
201  document.getElementById("running-time").innerHTML=currentTimeHtml;
202},1000);
203
204
205</script>
205</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="font-plus" type="button" title="放大字体"><i class="fas fa-plus"></i></button><button id="font-minus" type="button" title="缩小字体"><i class="fas fa-minus"></i></button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button id="chat_btn" type="button" title="SMS"><i class="iconfont icon-sms"></i></button><button id="go-up" type="button" title="回到顶部"><i class="iconfont icon-backtop"></i></button></div></div><div id="local-search"><div class="search-dialog"><div class="search-dialog__title" id="local-search-title">本地搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div></div><hr/><div id="local-search-results"></div><span class="search-close-button"><i class="fas fa-times"></i></span></div><div id="search-mask"></div></div><div>
205<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
205<script src="/js/utils.js"></script>
205<script src="/js/main.js"></script>
205<script src="https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js"></script>
205<script src="https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js" type="module"></script>
205<script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script>
205<script src="https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js"></script>
205<script>function panguFn () {
206  if (typeof pangu === 'object') pangu.autoSpacingPage()
207  else {
208    getScript('https://cdn.jsdelivr.net/npm/pangu/dist/browser/pangu.min.js')
209      .then(() => {
210        pangu.autoSpacingPage()
211      })
212  }
213}
214
215function panguInit () {
216  if (true){
217    GLOBAL_CONFIG_SITE.isPost && panguFn()
218  } else {
219    panguFn()
220  }
221}
222
223document.addEventListener('DOMContentLoaded', panguInit)</script>
223<script src="/js/search/local-search.js"></script>
223<div class="js-pjax">
223<script>if (document.getElementsByClassName('mermaid').length) {
224  if (window.mermaidJsLoad) mermaid.init()
225  else {
226    getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(() => {
227      window.mermaidJsLoad = true
228      mermaid.initialize({
229        theme: 'default',
230      })
231      true && mermaid.init()
232    })
233  }
234}</script>
234<script>var gitcalendar = new Vue({
235  el: '#gitcalendar',
236  data: {
237    simplemode: false,
238    user: 'lp-Imagine',
239    fixed: 'fixed',
240    px: 'px',
241    x: '',
242    y: '',
243    span1: '',
244    span2: '',
245    month: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
246    monthchange: [],
247    oneyearbeforeday: '',
248    thisday: '',
249    amonthago: '',
250    aweekago: '',
251    weekdatacore: 0,
252    datacore: 0,
253    total: 0,
254    datadate: '',
255    data: [],
256    positionplusdata: [],
257    firstweek: [],
258    lastweek: [],
259    beforeweek: [],
260    thisweekdatacore: 0,
261    mounthbeforeday: 0,
262    mounthfirstindex: 0,
263    crispedges: 'crispedges',
264    thisdayindex: 0,
265    amonthagoindex: 0,
266    amonthagoweek: [],
267    firstdate: [],
268    first2date: [],
269    montharrbefore: [],
270    monthindex: 0,
271    color: ['rgb(145, 145, 145, 0.2)', '#c6ecc1', '#a0e2bb', '#81D8CF', '#70c5d3', '#60a2ce', '#507ac9', '#4356c5', '#423cc4', '#5b3abc', '#7138b6']
272  },
273  methods: {
274    selectStyle(data, event) {
275      document.querySelector('.angle-wrapper').style.display = 'block'
276      this.span1 = data.date;
277      this.span2 = data.count;
278      this.x = event.clientX - 100;
279      this.y = event.clientY - 60
280    },
281    outStyle() {
282      document.querySelector('.angle-wrapper').style.display = 'none'
283    },
284    thiscolor(x) {
285      if (x === 0) {
286        let i = parseInt(x / 2);
287        return this.color[0]
288      } else if (x < 2) {
289        return this.color[1]
290      } else if (x < 20) {
291        let i = parseInt(x / 2);
292        return this.color[i]
293      } else {
294        return this.color[9]
295      }
296    },
297  }
298});
299var apiurl = 'python-github-calendar-api-zfour.vercel.app' ? 'https://python-github-calendar-api-zfour.vercel.app/api?' : 'https://githubapi.ryanchristian.dev/user/'
300var githubapiurl = apiurl + gitcalendar.user;
301//canvas绘图
302function responsiveChart() {
303  let c = document.getElementById("gitcanvas");
304  if (c) {
305    let cmessage = document.getElementById("gitmessage");
306    let ctx = c.getContext("2d");
307    c.width = document.getElementById("gitcalendarcanvasbox").offsetWidth;
308    let linemaxwitdh = 0.96 * c.width / gitcalendar.data.length;
309    c.height = 9 * linemaxwitdh;
310    let lineminwitdh = 0.8 * linemaxwitdh;
311    let setposition = {
312      x: 0.02 * c.width,
313      y: 0.025 * c.width
314    };
315    for (let week in gitcalendar.data) {
316      weekdata = gitcalendar.data[week];
317      for (let day in weekdata) {
318        let dataitem = {
319          date: "",
320          count: "",
321          x: 0,
322          y: 0
323        };
324        gitcalendar.positionplusdata.push(dataitem);
325        ctx.fillStyle = gitcalendar.thiscolor(weekdata[day].count);
326        setposition.y = Math.round(setposition.y * 100) / 100;
327        dataitem.date = weekdata[day].date;
328        dataitem.count = weekdata[day].count;
329        dataitem.x = setposition.x;
330        dataitem.y = setposition.y;
331        ctx.fillRect(setposition.x, setposition.y, lineminwitdh, lineminwitdh);
332        setposition.y = setposition.y + linemaxwitdh
333      };
334      setposition.y = 0.025 * c.width;
335      setposition.x = setposition.x + linemaxwitdh
336    };
337    ctx.font = "600  Arial";
338    ctx.fillStyle = '#aaa';
339    ctx.fillText("日", 0, 1.9 * linemaxwitdh);
340    ctx.fillText("二", 0, 3.9 * linemaxwitdh);
341    ctx.fillText("四", 0, 5.9 * linemaxwitdh);
342    ctx.fillText("六", 0, 7.9 * linemaxwitdh);
343    let monthindexlist = c.width / 24;
344    for (let index in gitcalendar.monthchange) {
345      ctx.fillText(gitcalendar.monthchange[index], monthindexlist, 0.7 * linemaxwitdh);
346      monthindexlist = monthindexlist + c.width / 12
347    };
348    cmessage.onmousemove = function(event) {
349      document.querySelector('.angle-wrapper').style.display = 'none'
350    };
351    c.onmousemove = function(event) {
352      document.querySelector('.angle-wrapper').style.display = 'none'
353      getMousePos(c, event);
354    };
355
356    function getMousePos(canvas, event) {
357      var rect = canvas.getBoundingClientRect();
358      var x = event.clientX - rect.left * (canvas.width / rect.width);
359      var y = event.clientY - rect.top * (canvas.height / rect.height);
360      //console.log("x:"+x+",y:"+y);
361      for (let item of gitcalendar.positionplusdata) {
362        let lenthx = x - item.x;
363        let lenthy = y - item.y;
364        //console.log(lenthx,lenthy);
365        if (0 < lenthx && lenthx < lineminwitdh) {
366          if (0 < lenthy && lenthy < lineminwitdh) {
367            //console.log(item.date,item.count)
368            document.querySelector('.angle-wrapper').style.display = 'block'
369            gitcalendar.span1 = item.date;
370            gitcalendar.span2 = item.count;
371            gitcalendar.x = event.clientX - 100;
372            gitcalendar.y = event.clientY - 60
373          }
374        }
375        //if(0< x - item.x <lineminwitdh&&0< y - item.y <lineminwitdh){
376        //console.log(item.count,item.date);
377        //}
378      }
379    }
380  }
381}
382//数据统计算法
383function addlastmonth() {
384  if (gitcalendar.thisdayindex === 0) {
385    thisweekcore(52);
386    thisweekcore(51);
387    thisweekcore(50);
388    thisweekcore(49);
389    thisweekcore(48);
390    gitcalendar.thisweekdatacore += gitcalendar.firstdate[6].count;
391    gitcalendar.amonthago = gitcalendar.firstdate[6].date
392  } else {
393    thisweekcore(52);
394    thisweekcore(51);
395    thisweekcore(50);
396    thisweekcore(49);
397    thisweek2core();
398    gitcalendar.amonthago = gitcalendar.first2date[gitcalendar.thisdayindex - 1].date
399  }
400};
401
402function thisweek2core() {
403  for (let i = gitcalendar.thisdayindex - 1; i < gitcalendar.first2date.length; i++) {
404    gitcalendar.thisweekdatacore += gitcalendar.first2date[i].count
405  }
406};
407
408function thisweekcore(index) {
409  for (let item of gitcalendar.data[index]) {
410    gitcalendar.thisweekdatacore += item.count
411  }
412};
413
414function addlastweek() {
415  for (let item of gitcalendar.lastweek) {
416    gitcalendar.weekdatacore += item.count
417  }
418};
419
420function addbeforeweek() {
421  for (let i = gitcalendar.thisdayindex; i < gitcalendar.beforeweek.length; i++) {
422    gitcalendar.weekdatacore += gitcalendar.beforeweek[i].count
423  }
424};
425
426function addweek(data) {
427  if (gitcalendar.thisdayindex === 6) {
428    gitcalendar.aweekago = gitcalendar.lastweek[0].date;
429    addlastweek()
430  } else {
431    lastweek = data.contributions[51];
432    gitcalendar.aweekago = lastweek[gitcalendar.thisdayindex + 1].date;
433    addlastweek();
434    addbeforeweek()
435  }
436}
437
438fetch(githubapiurl)
439  .then(data => data.json())
440  .then(data => {
441    gitcalendar.data = data.contributions;
442    gitcalendar.total = data.total;
443    gitcalendar.first2date = gitcalendar.data[48];
444    gitcalendar.firstdate = gitcalendar.data[47];
445    gitcalendar.firstweek = data.contributions[0];
446    gitcalendar.lastweek = data.contributions[52];
447    gitcalendar.beforeweek = data.contributions[51];
448    gitcalendar.thisdayindex = gitcalendar.lastweek.length - 1;
449    gitcalendar.thisday = gitcalendar.lastweek[gitcalendar.thisdayindex].date;
450    gitcalendar.oneyearbeforeday = gitcalendar.firstweek[0].date;
451    gitcalendar.monthindex = gitcalendar.thisday.substring(5, 7) * 1;
452    gitcalendar.montharrbefore = gitcalendar.month.splice(gitcalendar.monthindex, 12 - gitcalendar.monthindex);
453    gitcalendar.monthchange = gitcalendar.montharrbefore.concat(gitcalendar.month);
454    addweek(data);
455    addlastmonth();
456    responsiveChart();
457  })
458  .catch(function(error) {
459    console.log(error);
460  });
461
462//手机版更换为svg绘制
463if (document.getElementById("gitcalendarcanvasbox") && document.getElementById("gitcalendarcanvasbox").offsetWidth < 500) {
464  gitcalendar.simplemode = false
465}
466
467//当改变窗口大小时重新绘制canvas
468window.onresize = function() {
469  if (gitcalendar.simplemode) responsiveChart()
470}
471
472//解决滚动滑轮时出现的标签显示
473window.onscroll = function() {
474  if (document.querySelector('.angle-wrapper')) {
475    document.querySelector('.angle-wrapper').style.display = 'none'
476  }
477};</script>
477</div>
477<script>window.addEventListener('load', () => {
478  const changeContent = (content) => {
479    if (content === '') return content
480
481    content = content.replace(/<img.*?src="(.*?)"?[^\>]+>/ig, '[图片]') // replace image link
482    content = content.replace(/<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[链接]') // replace url
483    content = content.replace(/<pre><code>.*?<\/pre>/gi, '[代码]') // replace code
484    content = content.replace(/<[^>]+>/g,"") // remove html tag
485
486    if (content.length > 150) {
487      content = content.substring(0,150) + '...'
488    }
489    return content
490  }
491
492  const getComment = () => {
493    const runTwikoo = () => {
494      twikoo.getRecentComments({
495        envId: 'https://twikoo-talks.vercel.app/',
496        region: '',
497        pageSize: 6,
498        includeReply: true
499      }).then(function (res) {
500        const twikooArray = res.map(e => {
501          return {
502            'content': changeContent(e.comment),
503            'avatar': e.avatar,
504            'nick': e.nick,
505            'url': e.url + '#' + e.id,
506            'date': new Date(e.created).toISOString()
507          }
508        })
509
510        saveToLocal.set('twikoo-newest-comments', JSON.stringify(twikooArray), 10/(60*24))
511        generateHtml(twikooArray)
512      }).catch(function (err) {
513        const $dom = document.querySelector('#card-newest-comments .aside-list')
514        $dom.innerHTML= "无法获取评论,请确认相关配置是否正确"
515      })
516    }
517
518    if (typeof twikoo === 'object') {
519      runTwikoo()
520    } else {
521      getScript('https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js').then(runTwikoo)
522    }
523  }
524
525  const generateHtml = array => {
526    let result = ''
527
528    if (array.length) {
529      for (let i = 0; i < array.length; i++) {
530        result += '<div class=\'aside-list-item\'>'
531
532        if (true) {
533          const name = 'data-lazy-src'
534          result += `<a href='${array[i].url}' class='thumbnail'><img ${name}='${array[i].avatar}' alt='${array[i].nick}'></a>`
535        }
536        
537        result += `<div class='content'>
538        <a class='comment' href='${array[i].url}'>${array[i].content}</a>
539        <div class='name'><span>${array[i].nick} / </span><time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div>
540        </div></div>`
541      }
542    } else {
543      result += '没有评论'
544    }
545
546    let $dom = document.querySelector('#card-newest-comments .aside-list')
547    $dom.innerHTML= result
548    window.lazyLoadInstance && window.lazyLoadInstance.update()
549    window.pjax && window.pjax.refresh($dom)
550  }
551
552  const newestCommentInit = () => {
553    if (document.querySelector('#card-newest-comments .aside-list')) {
554      const data = saveToLocal.get('twikoo-newest-comments')
555      if (data) {
556        generateHtml(JSON.parse(data))
557      } else {
558        getComment()
559      }
560    }
561  }
562
563  newestCommentInit()
564  document.addEventListener('pjax:complete', newestCommentInit)
565})</script>
565<script src="https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js"></script>
565<script src="/js/close.js"></script>
565<script defer data-pjax src="/js/maopao.js"></script>
565<script defer src="https://cdn.jsdelivr.net/gh/graingert/[email protected]/dist/wow.min.js"></script>
565<script defer data-pjax src="/js/wow-init.js"></script>
565<script src="https://myhkw.cn/api/player/1618646380121" id="myhk" key="1618646380121" m="1"></script>
565<script defer data-pjax src="https://cdn.jsdelivr.net/gh/xiabo2/CDN@latest/fishes.js"></script>
565<script src="/js/moments.js"></script>
565<canvas class="fireworks" mobile="false"></canvas>
565<script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js"></script>
565<script id="canvas_nest" defer="defer" color="67,173,127" opacity="0.7" zIndex="-1" count="99" mobile="false" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-nest.min.js"></script>
565<script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js"></script>
565<script>POWERMODE.colorful = true;
566POWERMODE.shake = false;
567POWERMODE.mobile = false;
568document.body.addEventListener('input', POWERMODE);
569</script>
569<script src="//code.tidio.co/bisrc3ghmylr0jd2ikrwcv8xp5i2nkwz.js" async="async"></script>
569<script>function onTidioChatApiReady() {
570  window.tidioChatApi.hide();
571  window.tidioChatApi.on("close", function() {
572    window.tidioChatApi.hide();
573  });
574}
575if (window.tidioChatApi) {
576  window.tidioChatApi.on("ready", onTidioChatApiReady);
577} else {
578  document.addEventListener("tidioChat-ready", onTidioChatApiReady);
579}
580
581var chatBtnFn = () => {
582  document.getElementById("chat_btn").addEventListener("click", function(){
583    window.tidioChatApi.show();
584    window.tidioChatApi.open();
585  });
586}
587chatBtnFn()
588</script>
588<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css" media="print" onload="this.media='all'">
588<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
588<script src="https://cdn.jsdelivr.net/gh/metowolf/[email protected]/dist/Meting.min.js"></script>
588<script src="https://cdn.jsdelivr.net/npm/pjax/pjax.min.js"></script>
588<script>let pjaxSelectors = [
589  'title',
590  '#config-diff',
591  '#body-wrap',
592  '#rightside-config-hide',
593  '#rightside-config-show',
594  '#web_bg',
595  '.js-pjax'
596]
597
598if (false) {
599  pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
600}
601
602var pjax = new Pjax({
603  elements: 'a:not([target="_blank"])',
604  selectors: pjaxSelectors,
605  cacheBust: false,
606  analytics: false,
607  scrollRestoration: false
608})
609
610document.addEventListener('pjax:complete', function () {
611  window.refreshFn()
612
613  document.querySelectorAll('script[data-pjax]').forEach(item => {
614    const newScript = document.createElement('script')
615    const content = item.text || item.textContent || item.innerHTML || ""
616    Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
617    newScript.appendChild(document.createTextNode(content))
618    item.parentNode.replaceChild(newScript, item)
619  })
620  //- document.querySelectorAll("script[data-pjax], .pjax-reload script").forEach((item) => {
621  //-   const newScript = document.createElement("script");
622  //-   const content = item.text || item.textContent || item.innerHTML || "";
623  //-   Array.from(item.attributes).forEach((attr) =>
624  //-   newScript.setAttribute(attr.name, attr.value));
625  //-   newScript.appendChild(document.createTextNode(content));
626  //-   item.parentNode.replaceChild(newScript, item);
627  //- });
628
629  GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update()
630
631  typeof chatBtnFn === 'function' && chatBtnFn()
632  typeof panguInit === 'function' && panguInit()
633
634  if (typeof gtag === 'function') {
635    gtag('config', '', {'page_path': window.location.pathname});
636  }
637
638  typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting()
639
640  // Analytics
641  if (false) {
642    MtaH5.pgv()
643  }
644
645  // prismjs
646  typeof Prism === 'object' && Prism.highlightAll()
647
648  typeof preloader === 'object' && preloader.endLoading()
649})
650
651
652document.addEventListener('pjax:send', function () {
653  typeof preloader === 'object' && preloader.initLoading()
654  
655  if (window.aplayers) {
656    for (let i = 0; i < window.aplayers.length; i++) {
657      if (!window.aplayers[i].options.fixed) {
658        window.aplayers[i].destroy()
659      }
660    }
661  }
662
663  typeof typed === 'object' && typed.destroy()
664
665  //reset readmode
666  const $bodyClassList = document.body.classList
667  $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode')
668
669})
670
671document.addEventListener('pjax:error', (e) => {
672  if (e.request.status === 404) {
673    pjax.loadUrl('/404.html')
674  }
675})</script>
675<script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
675</div><!-- hexo injector body_end start -->
675<script async src="//at.alicdn.com/t/font_2032782_8d5kxvn09md.js"></script>
675<!-- hexo injector body_end end --></body></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.