<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Xiaohan&#39;s Blog</title>
    <link>https://yunbo.li/</link>
    <description>Recent content on Xiaohan&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Wed, 30 Oct 2019 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://yunbo.li/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About Me</title>
      <link>https://yunbo.li/about/</link>
      <pubDate>Wed, 30 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://yunbo.li/about/</guid>
      <description>&lt;p&gt;胖子/伪极客/代码饲养员/曾经爱跑步/业余吃货。&lt;/p&gt;&#xA;&lt;p&gt;追求极致，注重细节，充满好奇心，在努力成为极客的路上狂奔。&lt;/p&gt;</description>
    </item>
    <item>
      <title>模拟实现Promise(下)</title>
      <link>https://yunbo.li/posts/homemade-promise-part2/</link>
      <pubDate>Sun, 10 Feb 2019 21:01:24 +0800</pubDate>
      <guid>https://yunbo.li/posts/homemade-promise-part2/</guid>
      <description>&lt;p&gt;上篇文章中我们实现了一个具有基础功能的&lt;code&gt;MyPromise&lt;/code&gt;，除了内部使用的&lt;code&gt;_resolve&lt;/code&gt;和&lt;code&gt;_reject&lt;/code&gt;外，我们只实现了&lt;code&gt;Promise.prototype.then&lt;/code&gt;，那么这篇文章中，我们来实现更多 API。&lt;/p&gt;</description>
    </item>
    <item>
      <title>模拟实现Promise(上)</title>
      <link>https://yunbo.li/posts/homemade-promise-part1/</link>
      <pubDate>Sun, 16 Dec 2018 19:29:01 +0800</pubDate>
      <guid>https://yunbo.li/posts/homemade-promise-part1/</guid>
      <description>&lt;p&gt;JavaScript 中的异步问题一直都让人苦恼，直到有了 Promise。Promise 是一种对未来值的封装，是一种许诺，类似于“我承诺将来会给你一个值”。用了这么久 Promise，对基本 API 的使用已经很熟练了，每次用的时候都感觉 Promise 就像魔法一般神奇。那么 Promise 是如何实现这种魔法的呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>浏览器缓存机制</title>
      <link>https://yunbo.li/posts/cache-experiment/</link>
      <pubDate>Sun, 06 May 2018 17:21:30 +0800</pubDate>
      <guid>https://yunbo.li/posts/cache-experiment/</guid>
      <description>&lt;h3 id=&#34;基本流程&#34;&gt;基本流程&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;加载资源时，首先根据上次资源响应 Header 中的&lt;code&gt;Expires&lt;/code&gt;和&lt;code&gt;Cache-Control&lt;/code&gt;判断是否命中强缓存，如果命中则直接从缓存中取，不会发送资源请求到服务器&lt;/li&gt;&#xA;&lt;li&gt;如果没有命中强缓存，则服务端根据&lt;code&gt;Last-Modified/If-Modified-Since&lt;/code&gt;和&lt;code&gt;ETag/If-None-Match&lt;/code&gt;验证是否命中协商缓存，如果命中则返回 304 响应，不会返回资源数据&lt;/li&gt;&#xA;&lt;li&gt;如果没有命中协商缓存，则服务端返回资源数据&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;比较&#34;&gt;比较&lt;/h3&gt;&#xA;&lt;p&gt;相同点：不论是哪种缓存，都是从本地加载资源，服务端不会返回资源数据&lt;!-- raw HTML omitted --&gt;不同点：强缓存不会产生请求，协商缓存会产生请求&lt;/p&gt;</description>
    </item>
    <item>
      <title>宽松相等与逻辑比较</title>
      <link>https://yunbo.li/posts/loose-equality-and-comparison/</link>
      <pubDate>Tue, 03 Oct 2017 21:19:56 +0800</pubDate>
      <guid>https://yunbo.li/posts/loose-equality-and-comparison/</guid>
      <description>&lt;p&gt;首先来灵魂拷问一下，你知道下面这些表达式的结果吗？&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; [];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; [];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;[] &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; [];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面的所有表达式结果都为 true，怎么样，你答对了吗？&lt;/p&gt;&#xA;&lt;p&gt;如果你能准确又自信的说出所有结果的话，说明你已经对 JS 中的宽松相等和类型转换相当了解啦，这篇文章对你可能帮助不大。如果你对结果有一点含糊的话，不妨跟着我一起探索下其中的知识点吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>学习使用正则表达式</title>
      <link>https://yunbo.li/posts/regexp-in-js/</link>
      <pubDate>Mon, 18 Jul 2016 20:40:33 +0800</pubDate>
      <guid>https://yunbo.li/posts/regexp-in-js/</guid>
      <description>&lt;p&gt;正则表达式很早就有了解，有需要的时候，也能借助搜索引擎简单使用一下，但似乎从来没有比较系统的学习过，所以这段时间看了一些资料，记录一下正则表达式的一些概念、用法以及 JS 中的相关 API。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Javascript中实现继承的几种方式</title>
      <link>https://yunbo.li/posts/inheritance-in-js/</link>
      <pubDate>Tue, 15 Mar 2016 10:18:40 +0800</pubDate>
      <guid>https://yunbo.li/posts/inheritance-in-js/</guid>
      <description>&lt;p&gt;在ES6到来之前，JS中一直没有类的概念。而类本身又是一种非常符合人类思考方式的抽象模型，所以虽然JS不支持类，但依然可以使用功能强大的原型机制来模拟类的各种行为。经过多年实践总结，开发者们逐渐形成了一些利用原型链实现类和继承的方式，通过比较这些实现方式的优缺点，我们也能更好地理解原型链机制。正是因为这些实践经验，才孕育出了今天给我们带来无限便利的ES6中类的机制。接下来让我们分析一下各种实现方式的特点吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>加权平均成绩计算器</title>
      <link>https://yunbo.li/posts/weighted-average-score-calculator/</link>
      <pubDate>Tue, 14 Jul 2015 22:54:20 +0800</pubDate>
      <guid>https://yunbo.li/posts/weighted-average-score-calculator/</guid>
      <description>&lt;p&gt;大三刚刚结束，学院根据前三个学年的成绩发布了预排名表。在签字确认之前当然还是自己算算比较放心，所以写了这个小脚本用来计算自己上学以来的所有学科的加权平均分（不包括任选课）&lt;/p&gt;</description>
    </item>
    <item>
      <title>给妹子看的简易翻墙教程</title>
      <link>https://yunbo.li/posts/gfw-bypass-tutorial-for-someone/</link>
      <pubDate>Sat, 11 Jul 2015 15:53:01 +0800</pubDate>
      <guid>https://yunbo.li/posts/gfw-bypass-tutorial-for-someone/</guid>
      <description>&lt;p&gt;先简单介绍一下翻墙的原理。由于墙的存在，我们的电脑不能和某些网站建立连接，这些网站我们叫做“被 GFW 认证的网站”。于是，我们需要一台既可以和我们连接，又可以和“被 GFW 认证的网站”连接的服务器进行中转。所以所谓的翻墙就是通过中转服务器来访问网站。&lt;/p&gt;</description>
    </item>
    <item>
      <title>病中杂记</title>
      <link>https://yunbo.li/posts/catch-cold-and-headache-in-2015/</link>
      <pubDate>Sun, 14 Jun 2015 22:15:53 +0800</pubDate>
      <guid>https://yunbo.li/posts/catch-cold-and-headache-in-2015/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;孤独的人是可耻的 ——张楚&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;生病的人是痛苦的 ——我&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;不知道隔了多久，又得了我最擅长的感冒。这次感冒来势汹汹，让我很快进入了生病状态。当然我也没怂，当天我就从自习室撤出来了，从此一周再也没进去过。&lt;/p&gt;</description>
    </item>
    <item>
      <title>北邮教务系统评教脚本</title>
      <link>https://yunbo.li/posts/bupt-pingjiao/</link>
      <pubDate>Fri, 09 Jan 2015 09:38:17 +0800</pubDate>
      <guid>https://yunbo.li/posts/bupt-pingjiao/</guid>
      <description>&lt;p&gt;&lt;strong&gt;2015 年 01 月 09 日更新&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;由于教务系统的地址变更以及验证码的加入，Python 版的评教脚本已经失效，请使用 javascript 版&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;每个学期末都烦心事儿不断，评教这件小事儿还非得过来掺合掺合。扒着眼睛找那个巨小无比的选择按钮真实让人烦躁啊。作为死工科生，总得做点什么。于是就写了个评教脚本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hi! 2015!</title>
      <link>https://yunbo.li/posts/hello-2015/</link>
      <pubDate>Sun, 04 Jan 2015 17:38:09 +0800</pubDate>
      <guid>https://yunbo.li/posts/hello-2015/</guid>
      <description>&lt;p&gt;时间过得真快，转眼就到 2015 年了。回想起去年的这个时候，我已经住院了。在写这篇日志之前，我又看了看去年在这个时候写的日记，看完之后心里挺不是滋味儿的，当时确实是受了不少委屈。&lt;/p&gt;</description>
    </item>
    <item>
      <title>又是一个月，好久不见</title>
      <link>https://yunbo.li/posts/long-time-no-see-at-the-end-of-2014/</link>
      <pubDate>Fri, 05 Dec 2014 20:18:40 +0800</pubDate>
      <guid>https://yunbo.li/posts/long-time-no-see-at-the-end-of-2014/</guid>
      <description>&lt;p&gt;啊，又一个月没来了。一转眼又到了年末，想起去年这个时候，痛苦就要来了，我当然不想让它来。过得真快，一转眼一年又过去了。&lt;/p&gt;&#xA;&lt;p&gt;今年刚刚开始，我去车道沟“旅行”，当时心情压抑的不行，同时还有点庆幸，让我在宿舍跨了年。“旅行”期间想了好多事儿啊，当时一点一点地写在了为知笔记里面，而且当时还立志今年一定要好好练练文笔。一整年就快过去了，文笔依然差，写东西依然不勤快。&lt;/p&gt;</description>
    </item>
    <item>
      <title>当我再一次谈论起奋斗时，我在想些什么</title>
      <link>https://yunbo.li/posts/what-do-i-think-when-i-talk-about-fighting/</link>
      <pubDate>Tue, 04 Nov 2014 10:04:20 +0800</pubDate>
      <guid>https://yunbo.li/posts/what-do-i-think-when-i-talk-about-fighting/</guid>
      <description>&lt;p&gt;最近身边的人多多少少都有点不正常，有的忙着平时的作业、实验等等琐碎的学业，有的里里外外跑来跑去，忙着各种高大上的事业。总之，大家都忙。忙着忙着很多人就会想，我这么瞎折腾是图什么呢？这么做有什么意义吗？想到这儿，一部分人颓了，不折腾了，开始“享受”生活。另一部分人想到了奋斗，他们觉得这是一种向上的生活状态，于是咬咬牙继续拼。&lt;/p&gt;</description>
    </item>
    <item>
      <title>吸着雾霾去跑马</title>
      <link>https://yunbo.li/posts/2014-marathon/</link>
      <pubDate>Thu, 30 Oct 2014 10:14:06 +0800</pubDate>
      <guid>https://yunbo.li/posts/2014-marathon/</guid>
      <description>&lt;p&gt;欠了好久的文章，今天总算是得空给写了。话说今年是第二年参加北京马拉松，记得去年马拉松的时候，和宿舍两个人一起去参加，3 万人一起在马路上狂奔的感觉真心赞。&lt;/p&gt;</description>
    </item>
    <item>
      <title>北邮人BT“说谢谢”刷分</title>
      <link>https://yunbo.li/posts/byrbt-thanks-cheater/</link>
      <pubDate>Wed, 15 Oct 2014 09:36:37 +0800</pubDate>
      <guid>https://yunbo.li/posts/byrbt-thanks-cheater/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;&#xA;&lt;p&gt;今天上午刚刚搬家到新的博客，这个博客使用 Markdown 语法写作，靠 DropBox 同步文章，感觉还是有点儿意思呢。之前的 Octopress 博客&lt;a href=&#34;http://coding.yunbo.li&#34;&gt;http://coding.yunbo.li&lt;/a&gt;访问速度实在是太差，而且到现在为止我还是没学会怎么在上面发布文章，这时 Farbox 出现了，索性转了过来。btw，以前的负能量小站已经迁移到了&lt;a href=&#34;http://laodao.yunbo.li&#34;&gt;http://laodao.yunbo.li&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu下的LAMP和vsftpd配置</title>
      <link>https://yunbo.li/posts/lamp-and-vsftpd-setup/</link>
      <pubDate>Fri, 10 Oct 2014 09:31:08 +0800</pubDate>
      <guid>https://yunbo.li/posts/lamp-and-vsftpd-setup/</guid>
      <description>&lt;h2 id=&#34;写在前头&#34;&gt;写在前头&lt;/h2&gt;&#xA;&lt;p&gt;很难想象我竟然起了一个这么 ordinary 的 tilte，事实上标题里说的这个问题已经虐了我一个晚上，尤其是 vsftpd，当初在树莓派上配置过 vsftpd，隐约记得没有多长时间就配好了。结果隔了半年再次尝试 vsftpd 的时候，这货狠狠地抽了我一巴掌，死活配不对，尤其是用户那一块儿，简直烦死了。好不容易折腾好了，马克一下，防止下次被虐。&lt;/p&gt;</description>
    </item>
    <item>
      <title>记途中的一对情侣</title>
      <link>https://yunbo.li/posts/young-couple-in-2012/</link>
      <pubDate>Mon, 06 Oct 2014 21:31:35 +0800</pubDate>
      <guid>https://yunbo.li/posts/young-couple-in-2012/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;国庆假期回家，在自己的房间里翻出来高中时候的笔记本。翻了翻，发现了一些幼稚的文字。发上来留个纪念吧。下面这篇应该是 2012 年 3 月的。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;3 月中旬，我去外地考试，在回家的班车上看见了一对情侣，他们是那么朴素，自然，衣着也并不华丽。女生脸上有淡淡的高原红，她话不多，一举一动都带着几分害羞。男生显得高大，结实。&lt;/p&gt;</description>
    </item>
    <item>
      <title>唠叨，从这里开始</title>
      <link>https://yunbo.li/posts/a-new-start/</link>
      <pubDate>Wed, 10 Sep 2014 17:03:38 +0800</pubDate>
      <guid>https://yunbo.li/posts/a-new-start/</guid>
      <description>&lt;p&gt;最近一周接触了很多 javascript 的东西，从最开始的基本 javascript 语法，到 jQuery，然后是 coffeescript，最后到了 node.js。昨晚看到了一个基于 nodej.s 的项目——hexo，当即被它漂亮的外观吸引。折腾到今天下午，终于算把博客搭建起来了。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
