-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
20 lines (20 loc) · 48 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html><html lang="en,zh-CN,default"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#222"><meta name="generator" content="Hexo 4.2.1"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png"><link rel="mask-icon" href="/images/logo-logo.svg" color="#222"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext"><link rel="stylesheet" href="//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css"><link rel="stylesheet" href="//cdn.jsdelivr.net/fancybox/2.1.5/jquery.fancybox.min.css"><link rel="stylesheet" href="//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-minimal.css"><script src="//cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js"></script><script id="hexo-configurations">var NexT=window.NexT||{},CONFIG={hostname:"nature1995.club",root:"/",scheme:"Gemini",version:"7.8.0",exturl:!1,sidebar:{position:"left",display:"post",padding:18,offset:12,onmobile:!1},copycode:{enable:!0,show_result:!1,style:"mac"},back2top:{enable:!0,sidebar:!0,scrollpercent:!0},bookmark:{enable:!1,color:"#222",save:"auto"},fancybox:!0,mediumzoom:!1,lazyload:!0,pangu:!1,comments:{style:"tabs",active:null,storage:!0,lazyload:!0,nav:null},algolia:{hits:{per_page:10},labels:{input_placeholder:"Search for Posts",hits_empty:"We didn't find any results for the search: ${query}",hits_stats:"${hits} results found in ${time} ms"}},localsearch:{enable:!0,trigger:"auto",top_n_per_article:1,unescape:!1,preload:!1},motion:{enable:!0,async:!0,transition:{post_block:"fadeIn",post_header:"slideDownIn",post_body:"slideDownIn",coll_header:"slideLeftIn",sidebar:"slideUpIn"}},path:"search.xml"}</script><meta name="description" content="自然代码"><meta property="og:type" content="website"><meta property="og:title" content="然小狼の博客"><meta property="og:url" content="https://nature1995.club/index.html"><meta property="og:site_name" content="然小狼の博客"><meta property="og:description" content="自然代码"><meta property="og:locale" content="en_US"><meta property="article:author" content="Ziran Gong"><meta property="article:tag" content="然小狼"><meta property="article:tag" content="ranxiaolang"><meta property="article:tag" content="然小狼の博客"><meta property="article:tag" content="龚子然"><meta name="twitter:card" content="summary"><link rel="canonical" href="https://nature1995.club/"><script id="page-configurations">CONFIG.page={sidebar:"",isHome:!0,isPost:!1,lang:"en"}</script><title>然小狼の博客</title><noscript><style>.sidebar-inner,.use-motion .brand,.use-motion .collection-header,.use-motion .comments,.use-motion .menu-item,.use-motion .pagination,.use-motion .post-block,.use-motion .post-body,.use-motion .post-header{opacity:initial}.use-motion .site-subtitle,.use-motion .site-title{opacity:initial;top:initial}.use-motion .logo-line-before i{left:initial}.use-motion .logo-line-after i{right:initial}</style></noscript><link rel="alternate" href="/atom.xml" title="然小狼の博客" type="application/atom+xml">
<link rel="stylesheet" href="/css/prism.css" type="text/css"></head><body itemscope itemtype="http://schema.org/WebPage"><div class="container use-motion"><div class="headband"></div><header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="header-inner"><div class="site-brand-container"><div class="site-nav-toggle"><div class="toggle" aria-label="Toggle navigation bar"><span class="toggle-line toggle-line-first"></span> <span class="toggle-line toggle-line-middle"></span> <span class="toggle-line toggle-line-last"></span></div></div><div class="site-meta"><a href="/" class="brand" rel="start"><span class="logo-line-before"><i></i></span><h1 class="site-title">然小狼の博客</h1><span class="logo-line-after"><i></i></span></a><p class="site-subtitle" itemprop="description">回到最初の梦想</p></div><div class="site-nav-right"><div class="toggle popup-trigger"><i class="fa fa-search fa-fw fa-lg"></i></div></div></div><nav class="site-nav"><ul id="menu" class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>Home</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>About</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>Tags</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>Categories</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives</a></li><li class="menu-item menu-item-search"><a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>Search</a></li></ul></nav><div class="search-pop-overlay"><div class="popup search-popup"><div class="search-header"><span class="search-icon"><i class="fa fa-search"></i></span><div class="search-input-container"><input autocomplete="off" autocapitalize="off" placeholder="Searching..." spellcheck="false" type="search" class="search-input"></div><span class="popup-btn-close"><i class="fa fa-times-circle"></i></span></div><div id="search-result"><div id="no-result"><i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i></div></div></div></div></div></header><div class="reading-progress-bar"></div><a href="https://github.com/nature1995" class="github-corner" title="Follow me on GitHub" aria-label="Follow me on GitHub" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin:130px 106px" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><main class="main"><div class="main-inner"><div class="content-wrap"><div class="content index posts-expand"><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/08/17/%E5%9F%BA%E4%BA%8EDjango%E5%92%8CTencentOS%20tiny%E7%9A%84IoT%E6%99%BA%E8%83%BD%E7%81%AF%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/08/17/%E5%9F%BA%E4%BA%8EDjango%E5%92%8CTencentOS%20tiny%E7%9A%84IoT%E6%99%BA%E8%83%BD%E7%81%AF%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/" class="post-title-link" itemprop="url">基于Django和TencentOS tiny的IoT智能灯系统设计</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-08-17 08:32:00" itemprop="dateCreated datePublished" datetime="2019-08-17T08:32:00+08:00">2019-08-17</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/IOT/" itemprop="url" rel="index"><span itemprop="name">IOT</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>1 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><p>如今,工业,农业,生活里面的很多设备已经接入物联网,这些设备通过同一的平台进行管理。但是,每家厂商都自己接入自己的物联网设备,造成了设备与平台的割裂。所以打通设备与云平台成为非常重要的一环。而腾讯云物联网开发平台正是为次孕育而生,为整个行业推出一套解决方案。本文主要依据开发文档,一步步实现基于Django web控制智能灯软硬件系统。<br>本设计包括3部分组成,用户可以通过web界面进与IoT设备进行简单操作。包括Django web平台,腾讯云平台,IoT设备,其系统架构图如下:</p><div class="post-button"><a class="btn" href="/2019/08/17/%E5%9F%BA%E4%BA%8EDjango%E5%92%8CTencentOS%20tiny%E7%9A%84IoT%E6%99%BA%E8%83%BD%E7%81%AF%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2020/02/25/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E2%80%94%E2%80%94JWT%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2020/02/25/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E2%80%94%E2%80%94JWT%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81/" class="post-title-link" itemprop="url">前后端分离——JWT用户认证</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2020-02-25 10:30:00" itemprop="dateCreated datePublished" datetime="2020-02-25T10:30:00+08:00">2020-02-25</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Django/" itemprop="url" rel="index"><span itemprop="name">Django</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>4 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><p>在前后端分离开发时为什么需要用户认证呢?原因是由于 HTTP 协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个 request 请求时它就把刚刚的资料忘了。于是我们的程序就不知道谁是谁,就要再验证一次。所以为了保证系统安全,我们就需要验证用户否处于登录状态。</p><div class="post-button"><a class="btn" href="/2020/02/25/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E2%80%94%E2%80%94JWT%E7%94%A8%E6%88%B7%E8%AE%A4%E8%AF%81/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2020/02/24/django%E4%BB%8E%E8%AF%B7%E6%B1%82%E5%88%B0%E5%93%8D%E5%BA%94%E5%85%A8%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2020/02/24/django%E4%BB%8E%E8%AF%B7%E6%B1%82%E5%88%B0%E5%93%8D%E5%BA%94%E5%85%A8%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/" class="post-title-link" itemprop="url">django从请求到响应全过程详解</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2020-02-24 19:21:00" itemprop="dateCreated datePublished" datetime="2020-02-24T19:21:00+08:00">2020-02-24</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Django/" itemprop="url" rel="index"><span itemprop="name">Django</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>7 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><h2 id="django启动"><a href="#django启动" class="headerlink" title="django启动"></a>django启动</h2><p>我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行’runserver’的操作,而ruserver是使用django自带的的web server,主要用于开发和调试中,而在正式的环境中,一般会使用nginx+uwsgi模式。<br>无论是哪种方式,当启动一个项目,都会做2件事:</p><ul><li>创建一个WSGIServer类的实例,接受用户的请求。</li><li>当一个用户的http请求到达的时,为用户指定一个WSGIHandler,用于处理用户请求与响应,这个Handler是处理整个request的核心。<div class="post-button"><a class="btn" href="/2020/02/24/django%E4%BB%8E%E8%AF%B7%E6%B1%82%E5%88%B0%E5%93%8D%E5%BA%94%E5%85%A8%E8%BF%87%E7%A8%8B%E8%AF%A6%E8%A7%A3/#more" rel="contents">Read more »</a></div></li></ul></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2020/01/30/%E5%A6%82%E4%BD%95%E5%BA%A6%E9%87%8F%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91%E7%9A%84%E4%BB%B7%E5%80%BC%E4%BA%A7%E5%87%BA/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2020/01/30/%E5%A6%82%E4%BD%95%E5%BA%A6%E9%87%8F%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91%E7%9A%84%E4%BB%B7%E5%80%BC%E4%BA%A7%E5%87%BA/" class="post-title-link" itemprop="url">如何度量测试开发的价值产出</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2020-01-30 10:21:00" itemprop="dateCreated datePublished" datetime="2020-01-30T10:21:00+08:00">2020-01-30</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91/" itemprop="url" rel="index"><span itemprop="name">测试开发</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>3 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><p>每到年底的时候,不管是个人还是团队,总是避免不了要对这一年的工作成果进行总结和汇报。而对于测试开发岗位来说,通常会面临一个共性的问题:做了这么多事情,究竟产出了多大的业务价值?</p><p>在很长一段时间内,我对这个问题也是非常困惑。困惑的原因倒不是觉得工作内容没有价值,而是对于测试开发类的工作,通常没有明确的业务需求方,对于工作成果度量也没有统一的方式。</p><p>为什么测试开发岗位会面临这个问题呢?</p><div class="post-button"><a class="btn" href="/2020/01/30/%E5%A6%82%E4%BD%95%E5%BA%A6%E9%87%8F%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91%E7%9A%84%E4%BB%B7%E5%80%BC%E4%BA%A7%E5%87%BA/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/10/21/Git%E5%91%BD%E4%BB%A4%E5%B0%8F%E7%BB%93/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/10/21/Git%E5%91%BD%E4%BB%A4%E5%B0%8F%E7%BB%93/" class="post-title-link" itemprop="url">Git命令小结</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-10-21 08:32:00" itemprop="dateCreated datePublished" datetime="2019-10-21T08:32:00+08:00">2019-10-21</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%99%E7%A8%8B/" itemprop="url" rel="index"><span itemprop="name">教程</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>1 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><h3 id="一、设置账户名和账户邮箱"><a href="#一、设置账户名和账户邮箱" class="headerlink" title="一、设置账户名和账户邮箱"></a>一、设置账户名和账户邮箱</h3><figure class="highlight routeros"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git<span class="built_in"> config </span>--global user.name <span class="string">"name"</span></span><br><span class="line">git<span class="built_in"> config </span>--global user.email <span class="string">"name@gmail.com</span></span><br><span class="line"><span class="string">git config --global http.proxy http://example.com:port</span></span><br></pre></td></tr></table></figure><div class="post-button"><a class="btn" href="/2019/10/21/Git%E5%91%BD%E4%BB%A4%E5%B0%8F%E7%BB%93/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/07/06/Mac%20iTerm%202%20+%20oh-my-zsh%20+%20agnoster%E6%95%99%E7%A8%8B%EF%BC%88%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BB%88%E7%AB%AF%E7%A5%9E%E5%99%A8%EF%BC%89/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/07/06/Mac%20iTerm%202%20+%20oh-my-zsh%20+%20agnoster%E6%95%99%E7%A8%8B%EF%BC%88%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BB%88%E7%AB%AF%E7%A5%9E%E5%99%A8%EF%BC%89/" class="post-title-link" itemprop="url">Mac iTerm 2 + oh-my-zsh + agnoster教程(好用的终端神器)</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-07-06 18:10:00" itemprop="dateCreated datePublished" datetime="2019-07-06T18:10:00+08:00">2019-07-06</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%99%E7%A8%8B/" itemprop="url" rel="index"><span itemprop="name">教程</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>1 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><h2 id="Mac-Appium详细安装教程"><a href="#Mac-Appium详细安装教程" class="headerlink" title="Mac Appium详细安装教程"></a>Mac Appium详细安装教程</h2><p>一个好看的终端,先上效果图。</p><div class="post-button"><a class="btn" href="/2019/07/06/Mac%20iTerm%202%20+%20oh-my-zsh%20+%20agnoster%E6%95%99%E7%A8%8B%EF%BC%88%E5%A5%BD%E7%94%A8%E7%9A%84%E7%BB%88%E7%AB%AF%E7%A5%9E%E5%99%A8%EF%BC%89/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/07/06/Mac%20Appium%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/07/06/Mac%20Appium%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/" class="post-title-link" itemprop="url">Mac Appium详细安装教程</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-07-06 15:10:00" itemprop="dateCreated datePublished" datetime="2019-07-06T15:10:00+08:00">2019-07-06</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%99%E7%A8%8B/" itemprop="url" rel="index"><span itemprop="name">教程</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>3 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><h2 id="Mac-Appium详细安装教程"><a href="#Mac-Appium详细安装教程" class="headerlink" title="Mac Appium详细安装教程"></a>Mac Appium详细安装教程</h2><h3 id="1-直接安装:"><a href="#1-直接安装:" class="headerlink" title="1. 直接安装:"></a>1. 直接安装:</h3><p>Appium官网下载:<a href="https://bitbucket.org/appium/appium.app/downloads/" target="_blank" rel="noopener">https://bitbucket.org/appium/appium.app/downloads/</a></p><p>这里mac系统升级到 Sierra后,无法安装不被认可的软件,必须恢复“任何来源”,运行命令 sudo spctl –master-disable,成功后如图所示:</p><div class="post-button"><a class="btn" href="/2019/07/06/Mac%20Appium%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/02/24/Google-API%E6%9E%84%E5%BB%BAWeb%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%BD%AC%E6%96%87%E5%AD%97%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/02/24/Google-API%E6%9E%84%E5%BB%BAWeb%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%BD%AC%E6%96%87%E5%AD%97%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90/" class="post-title-link" itemprop="url">Google-API构建Web实时语音转文字情感分析</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-02-24 15:10:00" itemprop="dateCreated datePublished" datetime="2019-02-24T15:10:00+08:00">2019-02-24</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/AI/" itemprop="url" rel="index"><span itemprop="name">AI</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>6 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><p>本教程中,我们将使用Google API中语音转文字以及自然语言分析功能,这是一个非常强大的人工智能平台,可以用来记录语音并将其转换为文本,并对文本进行实时情感分析。(Google API可能需要科学上网,但可以在文末选择国内的腾讯AI、百度AI平台进行替换)</p><img data-src="https://i.loli.net/2019/03/05/5c7d4d4beb7f1.jpg" width="400" height="400"><p>首先罗列这个app的功能</p><ul><li><input checked disabled type="checkbox"> 创建Flask Web服务器</li><li><input checked disabled type="checkbox"> 构建前端和后端</li><li><input checked disabled type="checkbox"> 通过语音录入或者键盘输入的方式保存笔记</li><li><input checked disabled type="checkbox"> 实时语音转文本</li><li><input checked disabled type="checkbox"> 实时情绪识别</li><li><input checked disabled type="checkbox"> 同时进行实时语音,文本,情感识别。</li><li><input checked disabled type="checkbox"> 在任何云服务器上面上运行Angry-Ducks语音转文字情感分析助手</li></ul><p>完整项目地址:<a href="https://github.com/angryducks/angry-ducks" target="_blank" rel="noopener">https://github.com/angryducks/angry-ducks</a><br>Youtube: <a href="https://www.youtube.com/watch?v=lHrlYdO8gLY" target="_blank" rel="noopener">https://www.youtube.com/watch?v=lHrlYdO8gLY</a><br>B站:<a href="https://www.bilibili.com/video/av44429125" target="_blank" rel="noopener">https://www.bilibili.com/video/av44429125</a></p><div class="post-button"><a class="btn" href="/2019/02/24/Google-API%E6%9E%84%E5%BB%BAWeb%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E8%BD%AC%E6%96%87%E5%AD%97%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2019/01/16/5G%E5%AE%89%E5%85%A8%E6%80%A7%E8%A7%84%E8%8C%83%E4%B8%8E%E5%8D%8F%E8%AE%AE%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%85%A8%E9%9D%A2%E5%88%86%E6%9E%90/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2019/01/16/5G%E5%AE%89%E5%85%A8%E6%80%A7%E8%A7%84%E8%8C%83%E4%B8%8E%E5%8D%8F%E8%AE%AE%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%85%A8%E9%9D%A2%E5%88%86%E6%9E%90/" class="post-title-link" itemprop="url">5G安全性规范与协议漏洞的全面分析</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2019-01-16 15:25:00" itemprop="dateCreated datePublished" datetime="2019-01-16T15:25:00+08:00">2019-01-16</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/5G/" itemprop="url" rel="index"><span itemprop="name">5G</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>9 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><p>本文对当前的5G协议安全规范进行了全面分析。作为本次研究的一部分,我们列举了协议存在的漏洞,并将其带入实际场景,分析潜在的安全威胁。</p><h2 id="一、概述"><a href="#一、概述" class="headerlink" title="一、概述"></a>一、概述</h2><p>第三代合作计划(3GPP)在2018年3月,发布了第15版移动通信系统规范,为第五代移动通信(5G)奠定了基础。5G网络的目标是提供无处不在的高速、低延迟网络连接,以更好的应用于高清视频和物联网的场景,同时服务于大规模通信以及实时控制的需求。因此,最新一代移动通信的设计原则是支持更高承载量、支持更高数据速率、减少延迟、支持大规模设备连接,从而实现触觉互联网(Tactile Internet)、增强现实(AR)、虚拟现实(VR)以及智慧车辆互联。</p><p>与此前的2G、3G和4G(LTE)一样,安全性对于5G通信网络和服务至关重要,因为目前,移动系统正在为全世界数十亿人提供连接。此外,蜂窝通信网络是当前新型关键基础设施的连接基石,包括智能电网、第一响应单元(First Responder Units)和先进的军事自组织网络。5G的出现将诞生新的网络和应用,包括用于辅助驾驶或自动驾驶的下一代车载网络,以及智慧城市和智慧社区。</p><p>传统的2G网络存在着一些安全弱点,最严重的一个问题就是网络和用户设备(UE)之间缺乏相互认证。正因如此,从3G开始,安全性便始终成为了移动通信的关键设计考虑要素之一。LTE实现了强大的加密和完整性保护算法,支持基于对称密钥的相互认证系统,该系统安全的存储在通用用户识别模块(USIM)或SIM中,以及运营商的归属用户服务器(HSS)上。然而,近年来的安全研究又发现了LTE协议固有的一系列漏洞。例如,大量的预身份验证消息以明文形式发送,并且该消息可以被利用发起拒绝服务(DoS)攻击,并从用户设备(UE)处获得移动用户的位置信息。</p><div class="post-button"><a class="btn" href="/2019/01/16/5G%E5%AE%89%E5%85%A8%E6%80%A7%E8%A7%84%E8%8C%83%E4%B8%8E%E5%8D%8F%E8%AE%AE%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%85%A8%E9%9D%A2%E5%88%86%E6%9E%90/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><article itemscope itemtype="http://schema.org/Article" class="post-block" lang="en"><link itemprop="mainEntityOfPage" href="https://nature1995.club/2018/12/12/%E6%A0%91%E8%8E%93%E6%B4%BERaspberry%20Pi%203%E6%90%AD%E5%BB%BAPLEX%E5%A4%9A%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/header.png"><meta itemprop="name" content="Ziran Gong"><meta itemprop="description" content="自然代码"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="然小狼の博客"></span><header class="post-header"><h2 class="post-title" itemprop="name headline"><a href="/2018/12/12/%E6%A0%91%E8%8E%93%E6%B4%BERaspberry%20Pi%203%E6%90%AD%E5%BB%BAPLEX%E5%A4%9A%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/" class="post-title-link" itemprop="url">树莓派Raspberry Pi 3搭建PLEX多媒体服务器</a></h2><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">Posted on</span> <time title="Created: 2018-12-12 16:32:00" itemprop="dateCreated datePublished" datetime="2018-12-12T16:32:00+08:00">2018-12-12</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-folder"></i> </span><span class="post-meta-item-text">In</span> <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/%E6%95%99%E7%A8%8B/" itemprop="url" rel="index"><span itemprop="name">教程</span></a> </span></span><span class="post-meta-item" title="Reading time"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">Reading time ≈</span> <span>1 mins.</span></span></div></header><div class="post-body" itemprop="articleBody"><h2 id="先看效果图"><a href="#先看效果图" class="headerlink" title="先看效果图"></a>先看效果图</h2><p>支持账户远程访问和本地访问,断电重启自动恢复功能。</p><p><img data-src="https://i.loli.net/2018/12/13/5c119b2c3f236.png" alt="效果图"></p><h2 id="教程"><a href="#教程" class="headerlink" title="教程"></a>教程</h2><h3 id="一、在树莓派下安装PLEX媒体服务器"><a href="#一、在树莓派下安装PLEX媒体服务器" class="headerlink" title="一、在树莓派下安装PLEX媒体服务器"></a>一、在树莓派下安装PLEX媒体服务器</h3><p>1.在终端,将你的树莓派更新至最新</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">sudo apt update</span><br><span class="line">sudo apt upgrade</span><br><span class="line">sudo apt dist-upgrade</span><br></pre></td></tr></table></figure><div class="post-button"><a class="btn" href="/2018/12/12/%E6%A0%91%E8%8E%93%E6%B4%BERaspberry%20Pi%203%E6%90%AD%E5%BB%BAPLEX%E5%A4%9A%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#more" rel="contents">Read more »</a></div></div><footer class="post-footer"><div class="post-eof"></div></footer></article><nav class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><a class="extend next" rel="next" href="/page/2/"><i class="fa fa-angle-right" aria-label="Next page"></i></a></nav></div><script>window.addEventListener('tabs:register', () => {
let { activeClass } = CONFIG.comments;
if (CONFIG.comments.storage) {
activeClass = localStorage.getItem('comments_active') || activeClass;
}
if (activeClass) {
let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
if (activeTab) {
activeTab.click();
}
}
});
if (CONFIG.comments.storage) {
window.addEventListener('tabs:click', event => {
if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
let commentClass = event.target.classList[1];
localStorage.setItem('comments_active', commentClass);
});
}</script></div><div class="toggle sidebar-toggle"><span class="toggle-line toggle-line-first"></span> <span class="toggle-line toggle-line-middle"></span> <span class="toggle-line toggle-line-last"></span></div><aside class="sidebar"><div class="sidebar-inner"><ul class="sidebar-nav motion-element"><li class="sidebar-nav-toc">Table of Contents</li><li class="sidebar-nav-overview">Overview</li></ul><div class="post-toc-wrap sidebar-panel"></div><div class="site-overview-wrap sidebar-panel"><div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person"><img class="site-author-image" itemprop="image" alt="Ziran Gong" src="/images/header.png"><p class="site-author-name" itemprop="name">Ziran Gong</p><div class="site-description" itemprop="description">自然代码</div></div><div class="site-state-wrap motion-element"><nav class="site-state"><div class="site-state-item site-state-posts"><a href="/archives/"><span class="site-state-item-count">29</span> <span class="site-state-item-name">posts</span></a></div><div class="site-state-item site-state-categories"><a href="/categories/"><span class="site-state-item-count">11</span> <span class="site-state-item-name">categories</span></a></div><div class="site-state-item site-state-tags"><a href="/tags/"><span class="site-state-item-count">27</span> <span class="site-state-item-name">tags</span></a></div></nav></div><div class="links-of-author motion-element"><span class="links-of-author-item"><a href="https://github.com/nature1995" title="GitHub → https://github.com/nature1995" rel="noopener" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a> </span><span class="links-of-author-item"><a href="https://www.weibo.com/gzryoulang" title="Weibo → https://www.weibo.com/gzryoulang" rel="noopener" target="_blank"><i class="fab fa-weibo fa-fw"></i>Weibo</a> </span><span class="links-of-author-item"><a href="mailto:gzr2008@vip.qq.com" title="E-Mail → mailto:gzr2008@vip.qq.com" rel="noopener" target="_blank"><i class="fa fa-envelope fa-fw"></i>E-Mail</a> </span><span class="links-of-author-item"><a href="http://www.ranxiaolang.com" title="Ranxiaolang → http://www.ranxiaolang.com" rel="noopener" target="_blank"><i class="fas fa-link fa-fw"></i>Ranxiaolang</a> </span><span class="links-of-author-item"><a href="http://www.ranxiaolang.com/resume-cn" title="Resume-CN → http://www.ranxiaolang.com/resume-cn" rel="noopener" target="_blank"><i class="far fa-file fa-fw"></i>Resume-CN</a> </span><span class="links-of-author-item"><a href="http://www.ranxiaolang.com/resume" title="Resume-EN → http://www.ranxiaolang.com/resume" rel="noopener" target="_blank"><i class="fas fa-file fa-fw"></i>Resume-EN</a></span></div></div><div class="back-to-top motion-element"><i class="fa fa-arrow-up"></i> <span>0%</span></div>·<script type="text/javascript" charset="utf-8" src="/js/tagcloud.js"></script><script type="text/javascript" charset="utf-8" src="/js/tagcanvas.js"></script><div class="widget-wrap"><h3 class="widget-title">Tag Cloud</h3><div id="myCanvasContainer" class="widget tagcloud"><canvas width="250" height="250" id="resCanvas"><ul class="tag-list" itemprop="keywords"><li class="tag-list-item"><a class="tag-list-link" href="/tags/5G%E5%AE%89%E5%85%A8/" rel="tag">5G安全</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/5G%E6%A0%B8%E5%BF%83%E7%BD%91/" rel="tag">5G核心网</a><span class="tag-list-count">2</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Anaconda/" rel="tag">Anaconda</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Appium/" rel="tag">Appium</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Centos/" rel="tag">Centos</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Django/" rel="tag">Django</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Git/" rel="tag">Git</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Gitment/" rel="tag">Gitment</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Google/" rel="tag">Google</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/HTTP/" rel="tag">HTTP</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Hardware/" rel="tag">Hardware</a><span class="tag-list-count">2</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/JWT/" rel="tag">JWT</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Jupyter/" rel="tag">Jupyter</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Keras/" rel="tag">Keras</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Mac/" rel="tag">Mac</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Raspberry-Pi/" rel="tag">Raspberry Pi</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/STM32/" rel="tag">STM32</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Sentiment-analysis/" rel="tag">Sentiment analysis</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Shell/" rel="tag">Shell</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Software/" rel="tag">Software</a><span class="tag-list-count">2</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Speech-to-Text/" rel="tag">Speech to Text</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Virtualization/" rel="tag">Virtualization</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E4%BA%91API/" rel="tag">云API</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91/" rel="tag">测试开发</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E6%B8%B8%E8%AE%B0/" rel="tag">游记</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E7%89%A9%E8%81%94%E7%BD%91/" rel="tag">物联网</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E9%9A%8F%E7%AC%94/" rel="tag">随笔</a><span class="tag-list-count">2</span></li></ul></canvas></div></div></div></aside><div id="sidebar-dimmer"></div></div></main><footer class="footer"><div class="footer-inner"><div class="copyright">© 2018 – <span itemprop="copyrightYear">2021</span> <span class="with-love"><i class="fa fa-heart"></i> </span><span class="author" itemprop="copyrightHolder">Ziran Gong</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-chart-area"></i> </span><span title="Symbols count total">66k</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="fa fa-coffee"></i> </span><span title="Reading time total">1:01</span></div><div class="addthis_inline_share_toolbox"><script src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5bea71780d5c8eab" async></script></div><div class="busuanzi-count"><script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><span class="post-meta-item" id="busuanzi_container_site_uv" style="display:none"><span class="post-meta-item-icon"><i class="fa fa-user"></i> </span><span class="site-uv" title="Total Visitors"><span id="busuanzi_value_site_uv"></span> </span></span><span class="post-meta-divider">|</span> <span class="post-meta-item" id="busuanzi_container_site_pv" style="display:none"><span class="post-meta-item-icon"><i class="fa fa-eye"></i> </span><span class="site-pv" title="Total Views"><span id="busuanzi_value_site_pv"></span></span></span></div></div></footer></div><script src="/lib/anime.min.js"></script><script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script><script src="//cdn.jsdelivr.net/fancybox/2.1.5/jquery.fancybox.pack.js"></script><script src="//cdnjs.cloudflare.com/ajax/libs/lozad.js/1.14.0/lozad.min.js"></script><script src="//cdn.jsdelivr.net/velocity/1.2.3/velocity.min.js"></script><script src="//cdn.jsdelivr.net/velocity/1.2.3/velocity.ui.min.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/schemes/pisces.js"></script><script src="/js/next-boot.js"></script><script>!function(){var o,n,e=document.getElementsByTagName("link");if(0<e.length)for(i=0;i<e.length;i++)"canonical"==e[i].rel.toLowerCase()&&e[i].href&&(o=e[i].href);n=o?o.split(":")[0]:window.location.protocol.split(":")[0],o||(o=window.location.href),function(){var e=o,i=document.referrer;if(!/([http|https]:\/\/[a-zA-Z0-9\_\.]+\.baidu\.com)/gi.test(e)){var t="https"===String(n).toLowerCase()?"https://sp0.baidu.com/9_Q4simg2RQJ8t7jm9iCKT-xh_/s.gif":"//api.share.baidu.com/s.gif";i?(t+="?r="+encodeURIComponent(document.referrer),e&&(t+="&l="+e)):e&&(t+="?l="+e),(new Image).src=t}}(window)}()</script><script src="/js/local-search.js"></script><script src="//code.tidio.co/yirfgdhdnzpsrtwwscfst74tvyraufvp.js"></script><div class="moon-menu"><div class="moon-menu-items"><div class="moon-menu-item" onclick="back2bottom()"><i class="fas fa-chevron-down"></i></div><div class="moon-menu-item" onclick="back2top()"><i class="fas fa-chevron-up"></i></div></div><div class="moon-menu-button"><svg class="moon-menu-bg"><circle class="moon-menu-cricle" cx="50%" cy="50%" r="44%"></circle><circle class="moon-menu-border" cx="50%" cy="50%" r="48%"></circle></svg><div class="moon-menu-content"><div class="moon-menu-icon"><i class="fas fa-ellipsis-v"></i></div><div class="moon-menu-text"></div></div></div></div><script src="/js/injector.js"></script><script src="/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"pluginRootPath":"live2dw/","pluginJsPath":"lib/","pluginModelPath":"assets/","tagMode":false,"log":false,"model":{"jsonPath":"/live2dw/assets/miku.model.json"},"display":{"position":"right","width":75,"height":150},"mobile":{"show":true}});</script></body></html>