<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>计算机的零碎 on Foam 的博客</title>
    <link>https://blog.foamzou.com/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E9%9B%B6%E7%A2%8E/</link>
    <description>Recent content in 计算机的零碎 on Foam 的博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 20 Dec 2021 14:13:36 +0800</lastBuildDate>
    <atom:link href="https://blog.foamzou.com/categories/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%E9%9B%B6%E7%A2%8E/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>实用 shell</title>
      <link>https://blog.foamzou.com/posts/shell-skill/</link>
      <pubDate>Mon, 20 Dec 2021 14:13:36 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/shell-skill/</guid>
      <description>&lt;h2 id=&#34;文本处理&#34;&gt;文本处理&lt;/h2&gt;
&lt;h3 id=&#34;清除每行头尾部的空白符&#34;&gt;清除每行头&amp;amp;尾部的空白符&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;awk &amp;#39;{$1=$1;print}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ref: &lt;a href=&#34;https://stackoverflow.com/questions/448005/whats-an-easy-way-to-read-random-line-from-a-file&#34;&gt;https://stackoverflow.com/questions/448005/whats-an-easy-way-to-read-random-line-from-a-file&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;在一个文本随机选取若干行&#34;&gt;在一个文本随机选取若干行&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;// macos 则先 brew install coreutils，然后用 gshuf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;shuf foo.txt | head -n 100
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat foo.txt | awk &amp;#39;BEGIN{srand();}{print rand()&amp;#34;\t&amp;#34;$0}&amp;#39; | sort -k1 -n | cut -f2- | head -n 100
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ref: &lt;a href=&#34;https://stackoverflow.com/questions/448005/whats-an-easy-way-to-read-random-line-from-a-file&#34;&gt;https://stackoverflow.com/questions/448005/whats-an-easy-way-to-read-random-line-from-a-file&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;截取每行的前几个字符&#34;&gt;截取每行的前几个字符&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cut -c 1-3 file // 前三个字符
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ref: &lt;a href=&#34;https://stackoverflow.com/questions/19869511/how-to-restrict-length-of-string-present-in-a-line-using-linux&#34;&gt;https://stackoverflow.com/questions/19869511/how-to-restrict-length-of-string-present-in-a-line-using-linux&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>用七牛云作图床并配置 SSL</title>
      <link>https://blog.foamzou.com/posts/image-hosted-service-qiniu/</link>
      <pubDate>Sun, 14 Nov 2021 17:31:58 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/image-hosted-service-qiniu/</guid>
      <description>&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;一年前我写过&lt;a href=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/&#34;&gt;《使用 CloudFlare/百度云加速做免费SSL》&lt;/a&gt;，里面提到了：因为 Chrome 的最新安全限制， https 站点无法正常加载 http 的图片和其他静态资源，这使得我不得不给我的图床加上 SSL。&lt;/p&gt;
&lt;p&gt;前几天发现我的博客里的图片无法被正常加载，观察控制台后发现 图床的 SSL 证书出问题了。到百度云加速控制台看，才发现上次申请的一年 SSL 证书已经到期了，并且需要付费才能继续申请证书。好吧，白嫖的快乐没有了。&lt;/p&gt;
&lt;p&gt;那就不用百度云加速了，SSL CDN 也用七牛云的吧。&lt;/p&gt;
&lt;h2 id=&#34;七牛云&#34;&gt;七牛云&lt;/h2&gt;
&lt;p&gt;前提：你需要有一个已备案的域名，否则只能使用七牛的临时测试域名，是有有效期的&lt;/p&gt;
&lt;h3 id=&#34;免费套餐&#34;&gt;免费套餐&lt;/h3&gt;
&lt;p&gt;从 2016 年白嫖七牛云存储至今，本文就当做给七牛打回广告吧。&lt;/p&gt;
&lt;p&gt;先说结论：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果你只用 http 访问文件，每个月不超过 10G 流量的话，那么用七牛云相当于白嫖，一分钱都不用花&lt;/li&gt;
&lt;li&gt;如果需要使用 https 则需要花费一些费用（0.28 元/GB），一般博客小站，每个月最多不超过 1 块钱吧。等过段时间，我有了一定数据再回来更新这个数值。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于个人用户来说，有 10G 的免费存储，每个月 10G 的流量已经非常足够了。具体的资费可以参看 &lt;a href=&#34;https://www.qiniu.com/prices/kodo&#34;&gt;官网价格&lt;/a&gt; 。PS. 从价格表会看到 外网流出流量 会被收费，这点不用担心，我专门查了下官方说明：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果使用了七牛测试域名或者融合 CDN 域名访问资源，是&lt;strong&gt;不会计算&lt;/strong&gt;外网流出流量的&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;也就是说，你绑定一个域名回源到七牛云的对象存储，每个月不超过 10G 则不收费。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/image-hosted-service-qiniu/1a6c9eaa-29ba-4825-83a1-3f84b1ab2af5.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;创建一个-bucket&#34;&gt;创建一个 bucket&lt;/h3&gt;
&lt;p&gt;在七牛云对象存储 &lt;a href=&#34;https://portal.qiniu.com/kodo/bucket&#34;&gt;管理后台&lt;/a&gt;，创建一个bucket:&lt;/p&gt;
&lt;p&gt;存储区域选国内的都行；访问控制设置为公开，毕竟我们要将其用作图床&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/image-hosted-service-qiniu/0709db48-91dc-4281-931a-8150a13ed532.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;绑定域名&#34;&gt;绑定域名&lt;/h3&gt;
&lt;p&gt;创建成功后，会提示你绑定一个域名。该域名将作为 CDN 域名，通过该域名访问你的文件时，会尝试在 CDN 节点找缓存；缓存未命中再回源到你上边创建的 bucket。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/image-hosted-service-qiniu/7dee1fc0-919a-4437-9418-7580674b6ad8.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;我们添加一个域名，该域名必须是经过备案的。&lt;/p&gt;
&lt;p&gt;通信协议：如果你不需要 HTTPS，那么选择 HTTP 就足够了&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用CloudFlare/百度云加速做免费SSL</title>
      <link>https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/</link>
      <pubDate>Wed, 30 Sep 2020 20:37:41 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/</guid>
      <description>&lt;p&gt;2021-11-14更新：百度云加速过期了，CDN 也直接用七牛云的吧。有兴趣的朋友可以看这篇文章《&lt;a href=&#34;https://blog.foamzou.com/posts/image-hosted-service-qiniu/&#34;&gt;用七牛云作图床并配置 SSL&lt;/a&gt;》&lt;/p&gt;
&lt;p&gt;2020-11-03更新：已将cdn部署到&lt;a href=&#34;https://su.baidu.com/&#34;&gt;百度云加速服务&lt;/a&gt;。国内使用Cloudflare确实不行，最近看到百度云加速有免费套餐，个人博客来说完全够用了。步骤不复杂，就不详细描述了。步骤大概为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要域名备案&lt;/li&gt;
&lt;li&gt;在百度云加速实名认证&lt;/li&gt;
&lt;li&gt;添加网站时，选择CNAME接入方式。（官方推荐的是NS方式，这样可以全称托管，但我目前只希望托管我的cdn域名）&lt;/li&gt;
&lt;li&gt;证书管理-证书申请可以免费申请ssl证书&lt;/li&gt;
&lt;li&gt;安全功能-HTTPS，选择半程加密。这样源站可以不支持SSL&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;以下为原文：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意一下，由于众所周知的原因，在国内访问CloudFlare会很慢，我只是用于个人博客的部分图片使用，所以容忍度会比较高。&lt;strong&gt;有高要求的同学，不建议在国内使用。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;对于经常科学上网，尤其是自己搭建科学上网的同学来说，CloudFlare一定再熟悉不过了。经常有同学将它套在国外机子上，用来加速流量。因为CF本身就是一个CDN服务，可以用于加速各种服务。&lt;/p&gt;
&lt;p&gt;今天我选择用它做我图床的cdn服务。&lt;/p&gt;
&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;起因是这样的，这两天发现我博客的背景图加载不出来了，查看网络请求后发现我的图床域名&lt;code&gt;https://cdn.foamzou.com/legacy&lt;/code&gt;被强制使用&lt;code&gt;https&lt;/code&gt;发起请求了。这是因为我的html页面是https的，chrome很不喜欢https页面包含了http请求，认为这很不安全。所以它强制在发起请求的时候在http header加了&lt;code&gt;upgrade-insecure-requests: 1&lt;/code&gt;。该头部会告知服务端，客户端支持将http升级为https。在接下来的http请求中，浏览器会将其替换为https再发起请求。(但我将&lt;code&gt;upgrade-insecure-requests: 1&lt;/code&gt;改为0，还是会替换为https，不确定是不是该头部的原因，也可能是chrome最近自升级加的特性。其它浏览器例如Safari就正常访问)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ok，已经确定是chrome新版本的特性，将混合内容（mixed content）的http改写为https了。在2019年10月份，google就通过博客发布了chrome关于内容安全的更新时间表：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- v79 [2019年12月发布到稳定渠道]：将mixed的脚本文件、iframe升级到https
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- v80 [2020年1月发布到试用渠道]：将mixed的音视频文件升级到https。虽然允许mixed的图片文件加载，但该站点会在地址栏被标记不安全
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- v81 [2020年2月发布到试用渠道]：将mixed的图片文件升级到https
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;按计划是2月份发布到early release渠道，估计也是前段时间才被更新到稳定渠道，然后自更新导致我的图片挂掉
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;问题来了，我的图床域名并不支持https，导致ssl握手失败，我的图裂开了！如果要支持的话，我需要在七牛支付一定的费用（https流量没有免费额度），而且需要配置一个ssl证书，可以购买（几千块一年，好贵），也可以上传自定义证书（也略麻烦）。&lt;/p&gt;
&lt;p&gt;突然想起我可以把CF套在域名上，CF有免费套餐，一般的需求足够了，ssl证书还不用自己配置。&lt;/p&gt;
&lt;h2 id=&#34;开干&#34;&gt;开干&lt;/h2&gt;
&lt;p&gt;说干就干，打开&lt;a href=&#34;https://dash.cloudflare.com/&#34;&gt;官网&lt;/a&gt;，没有账号的话注册一个。&lt;/p&gt;
&lt;h3 id=&#34;添加站点&#34;&gt;添加站点&lt;/h3&gt;
&lt;p&gt;注意，这里只能填写根域，不支持单独加速子域名。但我只想加速某个子域名怎么办？没事，后面步骤可以配置。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/image.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;添加站点&lt;/p&gt;
&lt;h3 id=&#34;选择套餐&#34;&gt;选择套餐&lt;/h3&gt;
&lt;p&gt;选择免费的就可以啦&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/image-1-1024x780.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;选择套餐&lt;/p&gt;
&lt;h3 id=&#34;修改代理状态&#34;&gt;修改代理状态&lt;/h3&gt;
&lt;p&gt;选择完套餐后，CF会将你域名的解析记录带出来，如下图&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/image-2-1024x501.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;dns记录&lt;/p&gt;
&lt;p&gt;在代理状态那列点击小图标可以切换状态。现在有两个状态可以切换，&lt;code&gt;已代理&lt;/code&gt;和&lt;code&gt;仅限DNS&lt;/code&gt;。注意，对于你不希望走CF的域名，请设置为&lt;code&gt;仅限DNS&lt;/code&gt;，这样CF只会帮你将域名解析到你的源ip，而代理则解析到CDN节点，再帮你回源。&lt;/p&gt;
&lt;p&gt;由于CF在国内的网络情况并没有阿里云这些本地的厂商好，所以博客域名我没有走CF，只是代理了&lt;code&gt;file.zoufeng.net&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;好，点击继续。&lt;/p&gt;
&lt;h3 id=&#34;修改域名的dns服务器&#34;&gt;修改域名的DNS服务器&lt;/h3&gt;
&lt;p&gt;这一步需要到你的域名管理台(在哪买的域名就去哪)，将原来的DNS服务器删除，换成CF自己的。完成之后点击蓝色按钮。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/image-3-793x1024.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;设置ssl&#34;&gt;设置ssl&lt;/h3&gt;
&lt;p&gt;点击SSL/TLS按钮，将选项修改为&lt;code&gt;灵活&lt;/code&gt;，这样CF节点支持ssl，而源服务器不需要ssl。&lt;code&gt;完全&lt;/code&gt;的话，源服务器就需要支持ssl了。我的七牛图床域名不支持ssl，所以选择了灵活。这也是本篇文章的最开始的目的。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/use-cloudflare-as-free-ssl/image-4-1024x649.png&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;等待生效&#34;&gt;等待生效&lt;/h3&gt;
&lt;p&gt;等吧。修改DNS服务器那一步耗费的时间可能会长一些。你可以通过ping命令检查是否已经解析到CF的ip了。&lt;/p&gt;
&lt;h2 id=&#34;其它&#34;&gt;其它&lt;/h2&gt;
&lt;p&gt;你可能看到上一张图有很多菜单：缓存、防火墙、worker等。CF挺多功能的，有兴趣的话，注册一个玩玩吧。worker就是serverless那东西，类似AWS CloudFront的lambda@edge&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用Telegram Bot发通知消息</title>
      <link>https://blog.foamzou.com/posts/%E4%BD%BF%E7%94%A8telegram-bot%E5%8F%91%E9%80%9A%E7%9F%A5%E6%B6%88%E6%81%AF/</link>
      <pubDate>Sat, 15 Aug 2020 23:58:32 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/%E4%BD%BF%E7%94%A8telegram-bot%E5%8F%91%E9%80%9A%E7%9F%A5%E6%B6%88%E6%81%AF/</guid>
      <description>&lt;h3 id=&#34;用途&#34;&gt;用途&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;定点提醒你做事。例如到点发现你还没写日记就提醒你&lt;/li&gt;
&lt;li&gt;配合手机tasker、workflow做消息提醒&lt;/li&gt;
&lt;li&gt;触发各种你关心的webhook等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;准备工作&#34;&gt;准备工作&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;可以科学上网的机器&lt;/li&gt;
&lt;li&gt;一个手机号&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;注册tg账号&#34;&gt;注册TG账号&lt;/h3&gt;
&lt;p&gt;在网络下载一个tg客户端，并注册账号，现在貌似都要用手机注册。&lt;/p&gt;
&lt;p&gt;注册完成后，记得在设置 -&amp;gt; Privacy and Security -&amp;gt; Phone Number 设置为Nobody，网上冲浪还是要把自己保护好。&lt;/p&gt;
&lt;p&gt;有时候可能会遇到无法发消息给别人的情况，有可能是系统误杀。可以跟在搜索框添加官方账号 @SpamBot ，反馈问题。用 /start 开启和它的对话，然后点击用它返回的菜单或者直接和它沟通。不出意外，一段时间后会帮你清理掉你账号的异常情况。&lt;/p&gt;
&lt;h3 id=&#34;创建机器人&#34;&gt;创建机器人&lt;/h3&gt;
&lt;p&gt;搜索框添加官方机器人管理员@BotFather 。键入 /start 开启和它的对话，点击它返回的 /newbot。管理员提示给它取个爱称，输入后，管理员提示给它取个昵称，ok，这俩名字取一样的应该没啥问题。&lt;/p&gt;
&lt;p&gt;然后管理员会回你一段话，其中1377170000:AAGApipyadqh3ZAqgFNiJJwWohXIs3xxxxx 就是你机器人的token，请妥善保存，后面会用到。&lt;/p&gt;
&lt;p&gt;Use this token to access the HTTP API:&lt;br&gt;
1377170000:AAGApipyadqh3ZAqgFNiJJwWohXIs3xxxxx&lt;br&gt;
Keep your token secure and store it safely, it can be used by anyone to control your bot.&lt;/p&gt;
&lt;p&gt;到这里就已经创建了一个机器人，你可以多创建几个，如果有需要的话。&lt;/p&gt;
&lt;h3 id=&#34;获取你与机器人的聊天会话id&#34;&gt;获取你与机器人的聊天会话id&lt;/h3&gt;
&lt;p&gt;机器人发信息的api需要指定聊天会话id（chat_id），所以我们要获取到它。&lt;/p&gt;
&lt;p&gt;首先你需要找到机器人跟它说句话，然后访问链接（浏览器打开或者curl都行）：https://api.telegram.org/bot1377170000:AAGApipyadqh3ZAqgFNiJJwWohXIs3xxxxx/getUpdates 。将链接的token换成你机器人的，bot&amp;lt;你的token&amp;gt;/getUpdates。会正常响应机器人最近的聊天记录，找到message.chat节点下的id，这就是chat_id，记录下来。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;ok&amp;#34;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;result&amp;#34;: [{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;update_id&amp;#34;: 345541000,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;message&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            .....
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &amp;#34;chat&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;id&amp;#34;: 703240000,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;first_name&amp;#34;: &amp;#34;foam&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;last_name&amp;#34;: &amp;#34;zou&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;username&amp;#34;: &amp;#34;foamzou&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &amp;#34;type&amp;#34;: &amp;#34;private&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            }....
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当然，你也可以把机器人拉到群里，在群里说几句话，然后也是像上面操作，拿到chat_id。ps.如果是私密群，id是负数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>fish shell切换到zsh</title>
      <link>https://blog.foamzou.com/posts/fish-shell-to-zsh/</link>
      <pubDate>Sat, 11 Apr 2020 20:52:51 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/fish-shell-to-zsh/</guid>
      <description>&lt;p&gt;fish shell 想来用了也3年多了，大部分时间并不是在用fish shell的语法特性，而是觉得自带的主题好看，以及自动补全功能。当时挑选 xx shell时还网上做了功课，也在zsh和fish之间徘徊，后面看了阮一峰老师的&lt;a href=&#34;http://www.ruanyifeng.com/blog/2017/05/fish_shell.html&#34;&gt;推荐文章&lt;/a&gt;后就入坑了fish-shell 😂 今天装了一个软件，要用到alias别名，翻了翻&lt;code&gt;~/.bash_profile&lt;/code&gt;，&lt;code&gt;~/.config/fish/config.fish&lt;/code&gt;，发现按我之前的习惯，需要将别名配置在这两个文件（后者是fish shell启动时会读取的配置文件，相当于bash shell 的 bash_rc/profile）。为什么不统一放到bash_profile，然后在fish的config文件里&lt;code&gt;source&lt;/code&gt;呢？因为fish shell不支持bash语法，而我的bash_profile有一些bash。 今天看了看我的bash_profile，看到了之前配置的autojump，因为fish不支持source该配置，导致换了fish后没用过了（不过貌似fish也有autojump插件？）。总之这算是一个契机吧，把fish换成支持bash语法的zsh，以后配置alias、exports就只配置在bash_profile就好了。&lt;/p&gt;
&lt;h2 id=&#34;mac安装zsh&#34;&gt;mac安装zsh&lt;/h2&gt;
&lt;p&gt;mac出厂就自带了zsh，&lt;code&gt;zsh --version&lt;/code&gt; 看到版本号应该蛮旧的，毕竟没更新过。重新装一个吧&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装zsh: &lt;code&gt;brew install zsh zsh-completions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;切换默认shell为zsh: &lt;code&gt;chsh -s /bin/zsh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;安装oh my zsh: &lt;code&gt;sh -c &amp;quot;$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ps. 如果之前存在~/.zshrc文件，这次安装oh-my-zsh会将原来的文件备份为.zshrc.pre-oh-my-zsh，我将这个备份文件的配置追加到新的.zshrc里了。&lt;/p&gt;
&lt;h2 id=&#34;主题&#34;&gt;主题&lt;/h2&gt;
&lt;p&gt;主题很重要，影响日常工作的心情和效率呢。 主题列表：https://github.com/ohmyzsh/ohmyzsh/wiki/themes 可以在上面列表挑选个你喜欢的，在 ~/.zshrc 配置&lt;code&gt;ZSH_THEME=&amp;quot;主题名&amp;quot;&lt;/code&gt;。当然，如果你是一个随心主义者，也可以将其设置为&lt;code&gt;random&lt;/code&gt;，每次启动zsh都会随机一个主题。&lt;/p&gt;
&lt;h2 id=&#34;安装自动建议插件&#34;&gt;安装自动建议插件&lt;/h2&gt;
&lt;p&gt;fish shell有个很好用的功能: 输入命令时，会用灰颜色提示你最近的命令，使用方向键↑可以翻看相同前缀的历史命令。 zsh也有类似的&lt;a href=&#34;https://github.com/zsh-users/zsh-autosuggestions/blob/master/INSTALL.md#oh-my-zsh&#34;&gt;插件&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/zsh-users/zsh-autosuggestions &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ZSH_CUSTOM&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;~/.oh-my-zsh/custom&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/plugins/zsh-autosuggestions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 编辑 ~/.zshrc，若有其他插件，则括号里面用空格隔开&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;plugins&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;zsh-autosuggestions&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/fish-shell-to-zsh/e9a493e8-fda7-4a8c-bb27-e4f8f31fcce4.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;移除不必要的别名&#34;&gt;移除不必要的别名&lt;/h2&gt;
&lt;p&gt;oh-my-zsh添加了很多git的别名，例如git -&amp;gt; g, git fetch -&amp;gt; gf，恰好我有其它命令和这些别名冲突。所以我在bash_profile将这俩别名干掉了&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;unalias&lt;/span&gt; g
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;unalias&lt;/span&gt; gf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;其他&#34;&gt;其他&lt;/h2&gt;
&lt;p&gt;zsh 默认支持一个叫 &lt;code&gt;magic function&lt;/code&gt; 的功能，但这会给我带来困扰，粘贴url时会帮我自动转义，很烦。可以 &lt;code&gt;vim ~/.zshrc&lt;/code&gt; , 将 这行的注释去掉：`&lt;code&gt;DISABLE_MAGIC_FUNCTIONS=true&lt;/code&gt; 对了，最后还是安利下 autojump , 用的时间越长，越节省时间呢。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git使用技巧</title>
      <link>https://blog.foamzou.com/posts/git-skill/</link>
      <pubDate>Wed, 18 Mar 2020 23:17:34 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/git-skill/</guid>
      <description>&lt;h2 id=&#34;git-clean&#34;&gt;git clean&lt;/h2&gt;
&lt;p&gt;之前的文章 &lt;a href=&#34;https://blog.foamzou.com/posts/git-clean/&#34;&gt;git-clean&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;exclude-本地的gitignore&#34;&gt;exclude: 本地的.gitignore&lt;/h2&gt;
&lt;p&gt;有时候我们在本地创建的文件，不想提交到仓库时，会考虑用.gitignore。&lt;/p&gt;
&lt;p&gt;但.gitignore文件本身往往是添加到版本控制的。为了不影响其他协作者。git提供了一个只对本地生效的规则文件&lt;/p&gt;
&lt;p&gt;在项目的 &lt;code&gt;.git/info/exclude&lt;/code&gt; 文件里编辑即可。规则用法与.gitignore一致。&lt;/p&gt;
&lt;h2 id=&#34;统计两个commit之间的文件行数增改情况&#34;&gt;统计两个commit之间的文件行数增改情况&lt;/h2&gt;
&lt;p&gt;将以下shell保存为diff_git_commit.sh&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git log &lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;...&lt;span class=&#34;nv&#34;&gt;$2&lt;/span&gt; --pretty&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;tformat: --numstat &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v &lt;span class=&#34;s1&#34;&gt;&amp;#39;src/proto_lib/&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v &lt;span class=&#34;s1&#34;&gt;&amp;#39;test/&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{ add += $1; subs += $2; loc += $1 - $2 } END { printf &amp;#34;added lines: %s, removed lines: %s, total lines: %s\n&amp;#34;, add, subs, loc }&amp;#39;&lt;/span&gt; -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用法：&lt;code&gt;./diff_git_commit.sh commitId1 commitId2&lt;/code&gt;，当然你也可以用 &lt;code&gt;./diff_git_commit.sh tag1 tag2&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可能注意到了上面的&lt;code&gt;grep -v&lt;/code&gt;。我把不需要统计的文件目录排除了。你可以按需修改以上shell。&lt;/p&gt;
&lt;h2 id=&#34;文件权限格式相关常用于需要与unix协作的win下&#34;&gt;文件权限/格式相关（常用于需要与unix协作的win下）&lt;/h2&gt;
&lt;p&gt;以下命令需要设置为全局时，在 git config 后面加 &amp;ndash;global 即可&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config core.filemode &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 忽略文件权限&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config core.autocrlf &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# 将所有add到仓库的文本的结束符从crlf替换成lf（unix系统下将true替换成input）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config core.eol lf &lt;span class=&#34;c1&#34;&gt;# 设置行结束符，不过当core.autocrlf设置为true/input时，该配置不生效&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git config core.ignorecase &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;#区分大小写&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;分支相关&#34;&gt;分支相关&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin :branchName &lt;span class=&#34;c1&#34;&gt;# 删除远程分支。其实就是把空分支push上去&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git fetch origin --prune &lt;span class=&#34;c1&#34;&gt;# 清除远程没有了,本地却还有的origin分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;tag&#34;&gt;Tag&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag -a tag名 -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;tag描述&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 创建tag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin tag名  &lt;span class=&#34;c1&#34;&gt;# 推送指定tag到远程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git tag &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-n&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--sort&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;creatordate&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# 列出所有tag，并按创建时间排序&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git fetch --tags &lt;span class=&#34;c1&#34;&gt;# 从远程拉取所有tag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;彻底将已删除的文件从版本库中清理掉&#34;&gt;彻底将已删除的文件从版本库中清理掉&lt;/h2&gt;
&lt;p&gt;主要使用 git filter-branch&lt;/p&gt;</description>
    </item>
    <item>
      <title>qq互联100016错误</title>
      <link>https://blog.foamzou.com/posts/qq-connect-oauth-error-100016/</link>
      <pubDate>Thu, 06 Feb 2020 16:10:42 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/qq-connect-oauth-error-100016/</guid>
      <description>&lt;p&gt;对于这个错误我也是很服气的。 用客户端传过来的 access token 换用户信息时报错：{&amp;ldquo;error&amp;rdquo;:100016,&amp;ldquo;error_description&amp;rdquo;:&amp;ldquo;access token check failed&amp;rdquo;} 请求的链接为：https://graph.qq.com/oauth2.0/me?access_token=我的token&amp;amp;unionid=1 官网文档说这是AccessToken过期了，或token不对。但我确信AccessToken是正确的。毕竟前后端的代码没有动过，唯一改变的是appid。 我鬼使神差地把unionid=1去掉后，正常响应了。我立马知道是因为该应用没有关联到开放平台，导致没有unionId，所以报错了。（评论区有同学也遇到这个问题，解决方案是：还要在【QQ互联】里面点击一下申请获取unionid权限，该权限申请后自动通过） &lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/qq-connect-oauth-error-100016/04916421-3d6b-435c-bb14-e1e561a6e2dd.png&#34;&gt; 但&amp;hellip;.报的这个错也太不负责任了。想到这是qq互联，我立马原谅了他。毕竟他还是5年前那个qq互联呀。 ps: 5年前的吐槽 &lt;a href=&#34;https://blog.foamzou.com/posts/error-of-qq-connect-redirect-uri-is-illegal-100010/&#34;&gt;qq互联100010错误&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>给你的Mac/Linux的rm装一个回收站</title>
      <link>https://blog.foamzou.com/posts/setup-trash-for-safe-rm/</link>
      <pubDate>Tue, 09 Oct 2018 20:42:41 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/setup-trash-for-safe-rm/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;作为程序员，在工作中经常用到rm。我在不久前用vscode写代码，在底下的终端里想删掉没用的文件，手抖把未提交到git的代码文件删了。还好代码量不多，否则会崩溃。毕竟重写代码是很痛苦的~ 因此本文标题提上了日程&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;选择一款安全的删除脚本&#34;&gt;选择一款安全的删除脚本&lt;/h3&gt;
&lt;p&gt;Github看到一个脚本满足需求。 &lt;a href=&#34;https://github.com/kaelzhang/shell-safe-rm&#34;&gt;github地址&lt;/a&gt;，里边有多种安装方式。我选择的是npm全局安装。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm i -g safe-rm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装后，safe-rm命令就可以用了~&lt;/p&gt;
&lt;h3 id=&#34;将安装好的脚本设置为rm的别名&#34;&gt;将安装好的脚本设置为rm的别名&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;vim编辑~/.bash_profile(或其他bash启动时会执行的文件)。添加 &lt;code&gt;alias rm=&#39;safe-rm&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;由于我使用了fish-shell，因此还需要在fish启动时会执行的config文件里添加别名：vim编辑~/.config/fish/config.fish。添加 &lt;code&gt;alias rm=&#39;safe-rm&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;done&#34;&gt;Done&lt;/h3&gt;
&lt;p&gt;添加完之后别忘了重新打开终端窗口哦（或者source刚刚的配置文件）。至此，rm后文件的被mv到~/.Trash。即使是重名的文件也会在文件尾添加时间后缀，保证文件不被覆盖。&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTPS原理解析</title>
      <link>https://blog.foamzou.com/posts/about-https/</link>
      <pubDate>Thu, 23 Aug 2018 00:20:25 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/about-https/</guid>
      <description>&lt;h2 id=&#34;http是什么&#34;&gt;HTTP是什么&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;超文本传输协议（英文：HyperText Transfer Protocol，缩写：HTTP）是互联网上应用最为广泛的一种网络协议。是一个基于请求与响应模式的、无状态的、应用层的协议，常基于TCP的连接方式，绝大多数的Web开发，都是构建在HTTP协议之上的Web应用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;为了方便通信就必须统一约定好双方的数据协议，如果每个人都搞一套自己的规则，这玩起来就很麻烦了。因此IETF (互联网工程任务组) 推动了HTTP的统一和发展。现在大家用得最多的还是1999年收录于RFC 2616的1.1版本，2015年发布的2.0版本在推广道路上任重道远。&lt;/p&gt;
&lt;h2 id=&#34;https报文&#34;&gt;HTTP[S]报文&lt;/h2&gt;
&lt;p&gt;最直观上的差异，HTTP协议用明文传输报文，HTTPS用密文。  &lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;报文对比&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/about-https/12842298-abae88306d66e241-2.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;http的缺陷&#34;&gt;HTTP的缺陷&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;窃听风险（eavesdropping）：明文传输，第三方可以获知通信内容。&lt;/li&gt;
&lt;li&gt;篡改风险（tampering）：第三方可以修改通信内容。&lt;/li&gt;
&lt;li&gt;冒充风险（pretending）：第三方可以冒充他人身份参与通信。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;https是什么&#34;&gt;HTTPS是什么&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;超文本传输安全协议（英语：Hypertext Transfer Protocol Secure，缩写：HTTPS，常称为HTTP over TLS，HTTP over SSL或HTTP Secure） 是一种透过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信，但利用SSL/TLS协议来加解密数据包。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;HTTPS开发的主要目的，是提供对网站服务器的身份认证，保护交换数据的隐私与完整性； HTTPS并不是一个单独的协议，而是对工作在一加密连接（TLS/SSL）上的常规HTTP协议的称呼。因此HTTPS被称之为身披SSL外壳的HTTP。&lt;/p&gt;
&lt;h2 id=&#34;ssltls协议&#34;&gt;SSL/TLS协议&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;传输层安全性协议（Transport Layer Security，缩写作 TLS），及其前身安全套接层（Secure Sockets Layer，缩写作 SSL）是一种安全协议，目的是为互联网通信，提供安全及数据完整性保障&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;网景公司（Netscape）在1994年推出首版网页浏览器，网景导航者时，推出HTTPS协议，以SSL进行加密，这是SSL的起源。后面，IETF将SSL进行标准化，称为TLS。在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中，广泛支持这个协议&lt;/p&gt;
&lt;p&gt;协议&lt;/p&gt;
&lt;p&gt;年份&lt;/p&gt;
&lt;p&gt;描述&lt;/p&gt;
&lt;p&gt;SSL 1.0&lt;/p&gt;
&lt;p&gt;N/A&lt;/p&gt;
&lt;p&gt;从未公开过，因为存在严重的安全漏洞&lt;/p&gt;
&lt;p&gt;SSL 2.0&lt;/p&gt;
&lt;p&gt;1995&lt;/p&gt;
&lt;p&gt;因为存在数个严重的安全漏洞而被3.0版本替代&lt;/p&gt;
&lt;p&gt;SSL 3.0&lt;/p&gt;
&lt;p&gt;1996&lt;/p&gt;
&lt;p&gt;2014年10月Google发现该版本的严重漏洞，建议全面禁用SSL版本&lt;/p&gt;
&lt;p&gt;TLS 1.0&lt;/p&gt;
&lt;p&gt;1999&lt;/p&gt;
&lt;p&gt;IETF标准化后的第一个版本。包括可以降级到SSL 3.0的实现，这削弱了连接的安全性&lt;/p&gt;
&lt;p&gt;TLS 1.1&lt;/p&gt;
&lt;p&gt;2006&lt;/p&gt;
&lt;p&gt;-&lt;/p&gt;
&lt;p&gt;TLS 1.2&lt;/p&gt;
&lt;p&gt;2008&lt;/p&gt;
&lt;p&gt;删除了对SSL的兼容。目前使用最广泛的版本&lt;/p&gt;
&lt;p&gt;TLS 1.3&lt;/p&gt;
&lt;p&gt;2018&lt;/p&gt;
&lt;p&gt;截至本文撰写，为建议标准的互联网草案&lt;/p&gt;
&lt;h3 id=&#34;在tcpip模型的位置介于传输层与应用层之间&#34;&gt;在TCP/IP模型的位置：介于传输层与应用层之间&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&#34;SSL/TLS在TCP/IP模型的位置&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/about-https/12842298-cfed569a5b9bd924-2.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>下载知乎的视频(M3U8)</title>
      <link>https://blog.foamzou.com/posts/download-zhihu-vedio/</link>
      <pubDate>Sun, 25 Mar 2018 15:45:48 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/download-zhihu-vedio/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;总结：知乎的视频播放基于M3U8文件，找一种支持通过该类文件下载目标文件的工具即可，例如FFmpeg&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;  某个慵懒的周末上午刷着知乎，一位知友po了自己用鼓(还是啥?)敲击的旅行青蛙音乐的视频，评论区有小伙伴想要该视频的音频文件下载，想着举手之劳，顺便看看知乎的视频播放用的啥技术。 打开开发者工具，刷新网页并播放，观察网络请求并没有media文件的下载，倒是看到很多.ts文件不断下载中。看来是将视频切割为多个片段了，Google后了解到知乎使用的是M3U8文件，再从该文件下载片段。 什么是M3U8？这是一种utf8格式的M3U（MP3 URL的缩写）文件，最先由Fraunhofer协会（研究出MP3算法的那个）设计并用于Winplay3软件。最初只是应用于MP3等音频文件，现在广泛应用于在线流媒体和视频播放。说白了，它就是一个资源文件的播放列表索引文件，该文件记录了目标资源片段的url链接。具体请看&lt;a href=&#34;https://en.wikipedia.org/wiki/M3U&#34;&gt;维基百科&lt;/a&gt; 打开知乎视频，观察网络请求，你会发现请求了一个m3u8的资源。看看它返回的是什么：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;foam@foamdeMacBook-Pro: ~ » curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&amp;amp;expiration=1521964082&amp;amp;disable_local_cache=0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTM3U&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-VERSION:3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-TARGETDURATION:2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-MEDIA-SEQUENCE:0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00001.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-c0110f185ac09713b4d717e1f2ec30ca
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00002.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-26ad0014261d1e1f94b1273d91e9a1ec
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00003.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-ed71bc54e68662748af8eb5228525b84
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXTINF:2.000000,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5a996be2-17da-11e8-b60a-0242ac112a05None-00004.ts?auth_key&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521964082-0-0-7ef99c02438c16e8d0eabc4955cf3f84
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 有点长，省略若干行...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#EXT-X-ENDLIST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到返回了一个列表，每个片段2秒钟，包含了链接。 这里使用FFmpeg下载M3U8的资源。FFmpeg是一种处理音视频的强大的开源工具（向开源大佬们致敬），强大到令我泪流满面。该工具有win/linux/mac版本，请自行到官网或包管理器下载。 贴出命令： 根据M3U8下载资源文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://vdn.vzuu.com/Act-ss-m3u8-hd/c338e5b09ab2431080a58ed4d1bb6e17/5a996be2-17da-11e8-b60a-0242ac112a05None.m3u8?auth_key=1521964082-0-0-4d282a5ef6e479a492e6182f044384f5&amp;amp;expiration=1521964082&amp;amp;disable_local_cache=0&amp;#34;&lt;/span&gt; -c copy 1.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将MP4转换为MP3&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -i 1.mp4 -f mp3 -vn 1.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;  感谢科技的美好~&lt;/p&gt;</description>
    </item>
    <item>
      <title>git clean</title>
      <link>https://blog.foamzou.com/posts/git-clean/</link>
      <pubDate>Fri, 05 Aug 2016 21:29:53 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/git-clean/</guid>
      <description>&lt;h2 id=&#34;一句话描述&#34;&gt;一句话描述&lt;/h2&gt;
&lt;p&gt;git clean的作用是:  &lt;strong&gt;删除&lt;/strong&gt;工作目录中尚&lt;strong&gt;未添加&lt;/strong&gt;到git版本控制的文件或目录。&lt;/p&gt;
&lt;h2 id=&#34;使用场景&#34;&gt;使用场景&lt;/h2&gt;
&lt;p&gt;未添加到版本控制，且不在.gitignore中的，都是&lt;strong&gt;Untracked&lt;/strong&gt;的状态。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有时候我们在项目中添加了些自己的临时文件、目录或临时脚本，用完成后想把它们删了。&lt;/li&gt;
&lt;li&gt;有时候则是执行回滚后，有些文件或目录回滚到了Untracked状态，我们需要把它们删掉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这时候就可以使用git clean。&lt;/p&gt;
&lt;h2 id=&#34;用法&#34;&gt;用法&lt;/h2&gt;
&lt;p&gt;常用：git clean -df 路径[可选]&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usage: git clean &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-d&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-f&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-n&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-q&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;-x &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; -X&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;--&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &amp;lt;paths&amp;gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -q, --quiet           be quiet（静默删除，只会告诉你出错信息。如果是成功删除了文件或目录则保持沉默）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -n, --dry-run         dry run（告诉你会被删除的文件或目录有哪些，删除文件毕竟是一件严肃的事，在执行该命令前请务必加上该参数先确定下）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -f, --force           force（强制删除，clean.requireForce默认的值是true。这种情况下只有加上该参数才能删除）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -d                    remove whole directories（删除的范围是整个目录）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -x                    remove ignored files, too（即使是被添加进gitignore的文件或目录也删掉。这里有坑，下面说~）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -X                    remove only ignored files（只删除被添加进gitignore的文件或目录）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;预演：在执行该命令前，务必先加上-n以检查一遍要删除的文件清单。否则删除后要找回来也是挺麻烦的事~&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;有坑&#34;&gt;有坑&lt;/h2&gt;
&lt;p&gt;正常情况下，不加x参数，git clean是不会将ignore的文件或目录删除的。但是~！！如果你在.gitignore文件中对目录的描述是&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dir/*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;那么很抱歉，这个目录及里面的文件也会被清除掉。即使该目录的确是被git所忽略的。 所以，在.gitignore中对目录的描述最好是&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dir1/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dir2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最后吐槽网上很多关于git clean的介绍(中文的)中，对-f参数的描述是file。但其实是force~&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于QQ互联的redirect uri is illegal(100010)错误</title>
      <link>https://blog.foamzou.com/posts/error-of-qq-connect-redirect-uri-is-illegal-100010/</link>
      <pubDate>Fri, 31 Jul 2015 09:54:40 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/error-of-qq-connect-redirect-uri-is-illegal-100010/</guid>
      <description>&lt;p&gt;首先必须说明，这是一个由官方开发文档导致的错误。 关于回调地址，&lt;a href=&#34;http://wiki.connect.qq.com/%E5%9B%9E%E8%B0%83%E5%9C%B0%E5%9D%80%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%8F%8A%E4%BF%AE%E6%94%B9%E6%96%B9%E6%B3%95&#34;&gt;官方文档&lt;/a&gt;是作如下说明的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;申请时填写的callback是：mysite.com&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;合法的回调地址可以是：http://bbs.mysite.com/qqlogin.php?a&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;也可以是：http://www.example.com/qqlogin.php?a&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但当我在管理中心给回调地址填写了 &lt;a href=&#34;http://domain.com&#34;&gt;http://domain.com&lt;/a&gt;，在代码中配置为http://demo.domain.com/callback.php时却报了标题的错误。 Google后找到了原因，QQ互联已在今年作出了调整，为提高安全措施，管理中心的配置的回调地址必须&lt;strong&gt;完全&lt;/strong&gt;与实际的回调地址&lt;strong&gt;一致&lt;/strong&gt;。 如果你实际的回调地址为 &lt;a href=&#34;http://demo.domain.com/callback.php&#34;&gt;http://demo.domain.com/callback.php&lt;/a&gt;，那么在管理中心就得&lt;strong&gt;一字不差&lt;/strong&gt;地输入进去。 QQ互联，或者说腾讯这种整理开发文档的执行能力，怎么吐槽呢~想推广微信开放平台也用不着这么放弃QQ互联吧，毕竟对开发者不负责可不是什么好事。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用多备份对网站进行备份</title>
      <link>https://blog.foamzou.com/posts/backup-web-file-by-dbfen/</link>
      <pubDate>Thu, 09 Jul 2015 21:08:15 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/backup-web-file-by-dbfen/</guid>
      <description>&lt;p&gt;对于企业来说，最重要的已经不是程序代码而是用户数据了。对于我们普通用户来说，自己网站的数据同样重要。如果网站搭建在大公司的主机或服务器上那还好，假设是三流公司就玩完了。所以定期对我们的数据进行备份还是很重要的。 现在互联网上已经有很多提供备份的服务了，我选择了多备份，下面以此为例简要说明。&lt;/p&gt;
&lt;h3 id=&#34;一注册多备份账号&#34;&gt;一、注册多备份账号&lt;/h3&gt;
&lt;p&gt;官方网站：&lt;a href=&#34;http://www.dbfen.com/&#34;&gt;http://www.dbfen.com/&lt;/a&gt; 一般用户使用免费套餐就能满足需求了&lt;/p&gt;
&lt;h3 id=&#34;二账户设置&#34;&gt;二、账户设置&lt;/h3&gt;
&lt;p&gt;多备份现在支持以下几种云存储应用，选择你拥有的应用绑定即可，我选择的是百度云。 绑定完后，如果仍显示未绑定，重新登录多备份账号即可 &lt;a href=&#34;vKqt1LPHVvAAAAABJRU5ErkJggg.png&#34;&gt;&lt;img alt=&#34;vKqt1LPHVvAAAAABJRU5ErkJggg==&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/vKqt1LPHVvAAAAABJRU5ErkJggg.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;三新建任务&#34;&gt;三、新建任务&lt;/h3&gt;
&lt;h5 id=&#34;1-文件备份&#34;&gt;1. 文件备份&lt;/h5&gt;
&lt;p&gt;&lt;a href=&#34;A4onC03uvfOjAAAAAElFTkSuQmCC.png&#34;&gt;&lt;img alt=&#34;A4onC03uvfOjAAAAAElFTkSuQmCC&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/A4onC03uvfOjAAAAAElFTkSuQmCC.png&#34;&gt;&lt;/a&gt; 可以选择备份频率，保留份数和备份速度。还可以自定义要备份的文件目录 &lt;a href=&#34;WdLyQgggAACCCCAAAIIIODHAv8fmgg6Ud1V9nIAAAAASUVORK5CYII.png&#34;&gt;&lt;img alt=&#34;WdLyQgggAACCCCAAAIIIODHAv8fmgg6Ud1V9nIAAAAASUVORK5CYII=&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/WdLyQgggAACCCCAAAIIIODHAv8fmgg6Ud1V9nIAAAAASUVORK5CYII.png&#34;&gt;&lt;/a&gt; 默认备份频率最高是每周1次，如果你希望频率再高一点，可以在兑换商城用积分兑换备份频率。 &lt;a href=&#34;wHtsdDYP9gXYAAAAABJRU5ErkJggg.png&#34;&gt;&lt;img alt=&#34;wHtsdDYP9gXYAAAAABJRU5ErkJggg==&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/wHtsdDYP9gXYAAAAABJRU5ErkJggg.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;2-数据库备份&#34;&gt;2. 数据库备份&lt;/h5&gt;
&lt;p&gt;&lt;a href=&#34;uW2yCBAgQIECAAAECBAgIPo4BAgQIECBAgAABAgRyLyD45L7FJkiAAAECBAgQIECAwP8A7p9pqiUzfpkAAAAASUVORK5CYII.png&#34;&gt;&lt;img alt=&#34;uW2yCBAgQIECAAAECBAgIPo4BAgQIECBAgAABAgRyLyD45L7FJkiAAAECBAgQIECAwP8A7p9pqiUzfpkAAAAASUVORK5CYII=&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/uW2yCBAgQIECAAAECBAgIPo4BAgQIECBAgAABAgRyLyD45L7FJkiAAAECBAgQIECAwP8A7p9pqiUzfpkAAAAASUVORK5CYII.png&#34;&gt;&lt;/a&gt; 新建好这两个任务后，就能在控制面板看到这个列表啦。这里可以对任务进行相关设置。 &lt;a href=&#34;AxCcjspH206lAAAAAElFTkSuQmCC.png&#34;&gt;&lt;img alt=&#34;AxCcjspH206lAAAAAElFTkSuQmCC&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/AxCcjspH206lAAAAAElFTkSuQmCC.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;四恢复数据&#34;&gt;四、恢复数据&lt;/h3&gt;
&lt;h5 id=&#34;自动恢复&#34;&gt;自动恢复&lt;/h5&gt;
&lt;p&gt;这个比较简便，直接选择备份的时间进行恢复。类似版本回滚 &lt;a href=&#34;EUAAga-UgDEnbkynGFfiQYe4l4AtQe5Vn0UEEEAAAZsF-K4Vm4EpjwACCNgtQJDbLUx9BBBAwGYBgtxmYMojgAACdgsQ5HYLUx8BBBCwWYAgtxmY8ggggIDdAgS53cLURwABBGwWIMhtBqY8AgggYLcAQW63MPURQAABmwX-P3EM4wNYRKMVAAAAAElFTkSuQmCC.png&#34;&gt;&lt;img alt=&#34;EUAAga+UgDEnbkynGFfiQYe4l4AtQe5Vn0UEEEAAAZsF+K4Vm4EpjwACCNgtQJDbLUx9BBBAwGYBgtxmYMojgAACdgsQ5HYLUx8BBBCwWYAgtxmY8ggggIDdAgS53cLURwABBGwWIMhtBqY8AgggYLcAQW63MPURQAABmwX+P3EM4wNYRKMVAAAAAElFTkSuQmCC&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/EUAAga-UgDEnbkynGFfiQYe4l4AtQe5Vn0UEEEAAAZsF-K4Vm4EpjwACCNgtQJDbLUx9BBBAwGYBgtxmYMojgAACdgsQ5HYLUx8BBBCwWYAgtxmY8ggggIDdAgS53cLURwABBGwWIMhtBqY8AgggYLcAQW63MPURQAABmwX-P3EM4wNYRKMVAAAAAElFTkSuQmCC.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;手动恢复&#34;&gt;手动恢复&lt;/h5&gt;
&lt;p&gt;一般用户点击&lt;code&gt;解密并下载&lt;/code&gt;就好了，反正不是什么机密文件。当然，如果是需要进行安全传输的，可以点击&lt;code&gt;直接下载&lt;/code&gt;将加密后文件下载来，再发给别人手动解密。 &lt;a href=&#34;j-zkir1JBa-VQAAAABJRU5ErkJggg.png&#34;&gt;&lt;img alt=&#34;j+zkir1JBa+VQAAAABJRU5ErkJggg==&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/j-zkir1JBa-VQAAAABJRU5ErkJggg.png&#34;&gt;&lt;/a&gt; 手动解密，下载官方的多备份解密工具就好。如果官方的找不到了可以&lt;a href=&#34;http://pan.baidu.com/s/1mgN54xi&#34;&gt;点击下载&lt;/a&gt; 密钥在&lt;code&gt;账户设置&lt;/code&gt;-&lt;code&gt;密钥查看&lt;/code&gt;可以找到 &lt;a href=&#34;h-db0Fhhz-orwAAAABJRU5ErkJggg.png&#34;&gt;&lt;img alt=&#34;h+db0Fhhz+orwAAAABJRU5ErkJggg==&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/backup-web-file-by-dbfen/h-db0Fhhz-orwAAAABJRU5ErkJggg.png&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何搭建个人博客</title>
      <link>https://blog.foamzou.com/posts/how-to-install-your-blog/</link>
      <pubDate>Wed, 06 May 2015 15:57:00 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/how-to-install-your-blog/</guid>
      <description>&lt;p&gt;有不少朋友想要搭建个人博客，这里以我的个人网站为例说说吧。&lt;/p&gt;
&lt;p&gt;搭建类似本站的博客，你需要以下东西：域名、空间和网页程序。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;域名&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;zoufeng.net这个域名是在西部数码购买的。国内比较有名的是新网、西部数码等代理商，国外的是godaddy。对于E文不好的同学，这里推荐选择国内的代理商。&lt;/p&gt;
&lt;p&gt;1.注册用户&lt;/p&gt;
&lt;p&gt;这个就没什么好说了，到某个域名代理网站按说明注册用户就好。&lt;/p&gt;
&lt;p&gt;2.选择并购买域名&lt;/p&gt;
&lt;p&gt;输入你喜欢的域名，点击查询。如下图，你就可以看到哪些域名你可以注册。对于建站来说，域名是挺便宜的，现在.com等主流域名首年只需要40+块，续费的话也不过是90+元/年。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/how-to-install-your-blog/20150506160634_55252.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;QQ截图20141207235743.png&#34; loading=&#34;lazy&#34; src=&#34;file://C:/Users/Administrator/AppData/Local/YNote/data/282332576@qq.com/41275dfebd6440668f3e8da12d0c7095/qq%E6%88%AA%E5%9B%BE20141207235743.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;点击注册按钮后，会填写域名注册的相关资料，按你的实际情况填写就可以。&lt;/p&gt;
&lt;p&gt;3.域名解析。&lt;/p&gt;
&lt;p&gt;购买成功后，打开你的管理中心，选择域名管理，会在列表里看到你的域名。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/how-to-install-your-blog/20150506160720_21504.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;搜狗截图20141208000957.png&#34; loading=&#34;lazy&#34; src=&#34;file://C:/Users/Administrator/AppData/Local/YNote/data/282332576@qq.com/1d1926faff264eae874b3b620ee543da/%E6%90%9C%E7%8B%97%E6%88%AA%E5%9B%BE20141208000957.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;下图可以看到我有两个已经解析的记录。分别是一级域名(这里用@表示)和二级域名www。两个都作A记录指向我的主机IP，关于主机，下文会提及。你还可以添加多条记录，解析类型一般是A记录和CNAME(别名)记录。我买的主机是有提供IP的，所以我选择A记录就行，但有些主机商提供给你的是一个二级或三级域名，此时就需要你选择CNAME记录了。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;搜狗截图20141208001230.png&#34; loading=&#34;lazy&#34; src=&#34;file://C:/Users/Administrator/AppData/Local/YNote/data/282332576@qq.com/c9a326431f6846f3816e9ead3abcbb96/%E6%90%9C%E7%8B%97%E6%88%AA%E5%9B%BE20141208001230.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/how-to-install-your-blog/20150506160735_23436.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;至此，你就完成了域名解析，只要DNS服务器更新后(几分钟-几小时不等)，你就可以用域名访问你的网站了。怎么知道是否解析成功呢？打开CMD，用ping命令。下图看到已经可以解析为指定的IP了。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;搜狗截图20141208002308.png&#34; loading=&#34;lazy&#34; src=&#34;file://C:/Users/Administrator/AppData/Local/YNote/data/282332576@qq.com/8794780a74a84ac2935ca221aabca6f0/%E6%90%9C%E7%8B%97%E6%88%AA%E5%9B%BE20141208002308.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/how-to-install-your-blog/20150506160747_14777.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;空间&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1.购买空间&lt;/p&gt;
&lt;p&gt;空间用来存放网站程序。你可选择虚拟主机、VPS或者云服务器。发表本文章时，本站是挂在美国VPS里的。现已挂在国内主机。&lt;/p&gt;
&lt;p&gt;三种空间各有优势，本文就不分析了。对于网络上免费的空间(像主机屋啥的)，这里不推荐大家使用，除非你是用于普通学习，没打算保存数据。&lt;/p&gt;
&lt;p&gt;阿里之前是有ACE云引擎(可以看做空间)免费体验的，现在免费账号貌似不提供了。    2015年4月阿里ACE已实现按量付费，这意味着你可以购买使用了。&lt;/p&gt;
&lt;p&gt;如果你和我一样没什么钱，建议买一个便宜VPS。关于我的VPS，可以参看这篇文章 &lt;a href=&#34;https://blog.foamzou.com/posts/move-to-vps/&#34;&gt;/posts/move-to-vps/&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;2.绑定域名（搭建好LAMP环境后操作）&lt;/p&gt;
&lt;p&gt;还记得刚刚将域名解析为主机IP了吗？那只是做了将域名解析为IP的部分，当我在浏览器输入域名或IP的时候，谁来做出响应呢？此时就需要在主机绑定域名了。&lt;/p&gt;
&lt;p&gt;如果你购买的是虚拟主机或云服务器，你可以在你购买的网站打开管理主机或服务器的面板，将域名绑定。&lt;/p&gt;
&lt;p&gt;如果你买的是VPS，假设你安装的是Linux，那么你需要在你的web服务器配置文件(例如Apache的httpd.conf文件)配置绑定你的域名。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装网页程序&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;目前主流的个人博客程序是用PHP写的WordPress。当然如果你喜欢折腾，自己写一个只属于你自己的博客也未尝不可。&lt;/p&gt;
&lt;p&gt;1.配置环境&lt;/p&gt;
&lt;p&gt;安装此程序前，如果你买的是VPS，需要先搭建好LAMP环境，请参考这篇文章 &lt;a href=&#34;https://blog.foamzou.com/posts/lnmp-lamp-lnmpa-install-by-one-press/&#34;&gt;/posts/lnmp-lamp-lnmpa-install-by-one-press/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;虚拟主机不需要配置环境，提供商已经配置好了。&lt;/p&gt;
&lt;p&gt;2.下载WP&lt;/p&gt;
&lt;p&gt;首先到官网下载最新版本的WordPress，下载后是一个压缩包。&lt;/p&gt;
&lt;p&gt;3.将WP文件上传到主机&lt;/p&gt;
&lt;p&gt;如果你的是虚拟主机且不支持解压操作，那么你先在本地解压。再利用FTP上传工具上传到主机。VPS的话，为了提高上传效率，直接将zip包通过FTP上传到指定目录，然后用unzip命令解压就可以。FTP工具，这里推荐使用FileZilla.&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Namecheap解析邮箱</title>
      <link>https://blog.foamzou.com/posts/%E5%9C%A8namecheap%E8%A7%A3%E6%9E%90%E9%82%AE%E7%AE%B1/</link>
      <pubDate>Wed, 01 Apr 2015 17:35:30 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/%E5%9C%A8namecheap%E8%A7%A3%E6%9E%90%E9%82%AE%E7%AE%B1/</guid>
      <description>&lt;p&gt;我是一个游游荡荡，经常被互联网上的各种链接引得跳来跳去的人。今天的引导流是这样的： 学习PHP的PDO -&amp;gt; 到博客写个相关的技术文章 -&amp;gt; WP后台再次注意到可以升级版本 -&amp;gt;先去万网备份数据 -&amp;gt;万网首页再次看到关于企业邮箱的注册 -&amp;gt;注册时，要让指定的域名解析MX和其他记录到万网邮箱 -&amp;gt; 前往Namecheap Ok，以上就是我今天的时光流。 话说到我登录了Namecheap，看到如往常一样龊的管理面板。但在记录解析处没有看到MX类型，百度之，看到某网友在11年也遇到类似我的问题，是在线和客服解决的。哥不要搜索引擎了，哥就是要和在线客服用我的烂渣英文对话！！！于是就有了本文最下面的谈话记录。 不墨迹了，说正事。首先找到你的域名管理面板。你会找到你熟悉的解析面板 &lt;a href=&#34;2.png&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/%E5%9C%A8namecheap%E8%A7%A3%E6%9E%90%E9%82%AE%E7%AE%B1/2.png&#34;&gt;&lt;/a&gt; 然而。MAIL SETTINGS就在下面的地方。 选择 User (Mail Server&amp;rsquo;s Host Name Required) 下面的 I will specify my own MX records。然后保存就会出现下面的填写表单了。 &lt;a href=&#34;1.png&#34;&gt;&lt;img alt=&#34;1&#34; loading=&#34;lazy&#34; src=&#34;https://blog.foamzou.com/posts/%E5%9C%A8namecheap%E8%A7%A3%E6%9E%90%E9%82%AE%E7%AE%B1/1.png&#34;&gt;&lt;/a&gt;   附上我的烂E文对白~~ Your Question: Where is the domain MX RECORD，I can&amp;rsquo;t find this.Thx in advance Please wait, an operator will be with you shortly. You are now chatting with Alexandra Kr. - Domains Support 16:36Alexandra Kr.:Hello Foam! Thank you for contacting our Live Chat Support! Would you please provide me with the domain name? 16:36foam chou:zoufeng.me 16:36Alexandra Kr.:Thank you for the provided information. Please hold on. 16:36foam chou:ok 16:37Alexandra Kr.:As far as I see, your domain has the following MX records: 16:37Alexandra Kr.:zoufeng.me. 1800 IN MX 10 mx1.privateemail.com. zoufeng.me. 1800 IN MX 10 mx2.privateemail.com. 16:38foam chou:I wanna modify this 16:39foam chou:because I start the service of private mail by mistake,just now 16:39foam chou:how can I close the service of private mail? 16:40Alexandra Kr.:Please hold on, Foam. 16:42Alexandra Kr.:In order to set your custom MX records, you need to refer to the following article &amp;ndash;&lt;a href=&#34;https://www.namecheap.com/support/knowledgebase/article.aspx/322/78/how-can-i-setup-mx-record-for-my-domain&#34;&gt;https://www.namecheap.com/support/knowledgebase/article.aspx/322/78/how-can-i-setup-mx-record-for-my-domain&lt;/a&gt; 16:42Alexandra Kr.:As for private email, do you want to cancel it or you use a free trial private email? 16:43foam chou:I want to cancel it 16:44foam chou:Can I use the private mail by othername.zoufeng.me rather mail.zoufeng.me ? 16:44Alexandra Kr.:Please let me transfer our chat session to our Hosting department for further assistance. 16:45foam chou:OK Eugene St. has joined the conversation. 16:45Eugene St.:Hello, I will assist you further 16:45Eugene St.:Please give me a few minutes to check your previous conversation. Alexandra Kr. has left the conversation. 16:45foam chou:Thx for your coming 16:47Eugene St.:Thank you for your patience 16:49Eugene St.:So, as I understand you would like to remove Private Email MX records and moreover cancel the subscription, am I right? 16:49foam chou:Yes 16:50Eugene St.:Ler me verify your account ownership before I can cancel the subscription 16:50Eugene St.:Please provide me with your Namecheap username and your Support PIN. You can find it here: &lt;a href=&#34;https://manage.www.namecheap.com/myaccount/modify-profile-supportsettings.aspx&#34;&gt;https://manage.www.namecheap.com/myaccount/modify-profile-supportsettings.aspx&lt;/a&gt; 16:50foam chou:select the radio &amp;ldquo;User (Mail Server&amp;rsquo;s Host Name Required) &amp;ldquo;,right? 16:51Eugene St.:Would you like to set different MX records? 16:52foam chou:yes,I wanna transer it to other mail server 16:53Eugene St.:In this case please select I will specify my own MX records radio button 16:53Eugene St.:Also, please provide the verification details so I can cancel the subscription 16:54foam chou:I want to what is the subscription?private mail? 16:54foam chou:I want to know what is the subscription?private mail? 16:57Eugene St.:Yes, email account created with Private Email service is called subscription 16:58foam chou:My Support Pin is 3298 16:59foam chou:my username is foam 17:00Eugene St.:Thank you, please give me 5-7 minutes to cancel the subscription 17:00foam chou:Okay 17:01Eugene St.:The subscription has been canceled. 17:01Eugene St.:The subscription has been canceled. 17:01Eugene St.:The subscription has been canceled. 17:01Eugene St.:The subscription has been canceled. 17:03foam chou:thx for your help :)&lt;/p&gt;</description>
    </item>
    <item>
      <title>win8新装系统 - 必做功课</title>
      <link>https://blog.foamzou.com/posts/win8%E6%96%B0%E8%A3%85%E7%B3%BB%E7%BB%9F-%E5%BF%85%E5%81%9A%E5%8A%9F%E8%AF%BE/</link>
      <pubDate>Mon, 15 Dec 2014 00:42:24 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/win8%E6%96%B0%E8%A3%85%E7%B3%BB%E7%BB%9F-%E5%BF%85%E5%81%9A%E5%8A%9F%E8%AF%BE/</guid>
      <description>&lt;p&gt;Ok，之前一直懒得写，现在刚上SSD（2014年国庆上的），一边给自己刚装的win8加料，一边写。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.激活win8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;安装了2次 KMS_for_Windows8.1 才ok，郁闷。两次都是要我强制kill掉进程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.我安装的这个win8版本默认就是Administrator用户，现在我要切换为我自己的微软用户。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用“Win+R”快捷键或右键单击左下角，进入运行界面;输入“netplwiz”进入用户帐户设置界面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.1&lt;/strong&gt;  首先 &lt;strong&gt;添加用户 。&lt;/strong&gt; 输入完邮箱，在网络连接状态下即可添加成功。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.2&lt;/strong&gt;  更改组成员为管理员&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.3&lt;/strong&gt;  去掉需要密码的勾，确认后，需填写用户名和密码，用户名要用自己的邮箱全称，不要用默认填写好的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.4&lt;/strong&gt;  禁用administrator用户：运行 gpedit.msc 。在组策略编辑器左边面板依次展开：“计算机配置”&amp;ndash;“Windows设置”&amp;ndash;“安全设置”-    -“本地策略”&amp;ndash;“安全选项”，找到“账户：管理员账户状态”的选项。改为禁用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.5&lt;/strong&gt;  最后就可以切换用户了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.将文档默认位置更改为我特定的盘&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这里不作详细说明&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.安装驱动&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在已经把所有需要安装的驱动程式备份了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5.安装各种应用&amp;hellip;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;**PS.**&lt;strong&gt;win8.1不自带.net3.0 2.0.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果我们要用到，快速的方法就是将系统镜像映射到光驱，然后输入下面的命令：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果无法连接到 Internet，则可以通过使用部署映像服务和管理 (DISM) 命令行工具并指定从中安装了 Windows 8 的安装媒体（ISO 映像或 DVD），来启用 .NET Framework 3.5。&lt;/p&gt;
&lt;p&gt;    1. 在 Windows 8 或 Windows Server 2012 中，使用管理凭据打开命令提示符窗口（即选择“以管理员身份运行”）。&lt;/p&gt;
&lt;p&gt;    2. 要从位于 D:\sources\sxs 目录中的安装媒体安装 .NET Framework 3.5，请使用以下命令：&lt;/p&gt;
&lt;p&gt;DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:d:\sources\sxs&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;p&gt;        - /Online 面向您正在运行的操作系统（而不是脱机 Windows 映像）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>IE11 for Win7打开空白</title>
      <link>https://blog.foamzou.com/posts/ie11-for-win7%E6%89%93%E5%BC%80%E7%A9%BA%E7%99%BD/</link>
      <pubDate>Mon, 15 Dec 2014 00:32:22 +0800</pubDate>
      <guid>https://blog.foamzou.com/posts/ie11-for-win7%E6%89%93%E5%BC%80%E7%A9%BA%E7%99%BD/</guid>
      <description>&lt;p&gt;我的本本安装win7时，我就讲IE升级到11了。&lt;/p&gt;
&lt;p&gt;近期打开IE，主要窗体竟然是空白。郁闷了好久，点开高级设置，点击还原设置。提示关闭所有IE页才能还原。&lt;/p&gt;
&lt;p&gt;没有打开IE的我顿时不知道这提示是什么意思，后来百度了下，解决方案是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关闭关于IExplorer的所有进程，然后再重置。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我打开任务管理器，里面还真是有IExplorer的几个进程，我kill掉后重置IE。&lt;/p&gt;
&lt;p&gt;重开IE，真的可以了。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
