<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Wolfogre&#39;s Blog</title>
    <link>https://blog.wolfogre.com/</link>
    <description>Recent content on Wolfogre&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <copyright>deprecated</copyright>
    <lastBuildDate>Tue, 12 Mar 2024 12:31:00 +0800</lastBuildDate>
    
        <atom:link href="https://blog.wolfogre.com/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Clarifying Myself to Gitea Users/Maintainers</title>
      <link>https://blog.wolfogre.com/posts/clarifying-myself-to-gitea/</link>
      <pubDate>Tue, 12 Mar 2024 12:31:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/clarifying-myself-to-gitea/</guid>
      <description>If you aren&amp;amp;rsquo;t a user or maintainer of Gitea, you may not find this post interesting.
如果你不是 Gitea 的用户或维护者，可能不会对这篇文章感兴趣。
 Highlights...</description>
    </item>
    
    <item>
      <title>dig 默认支持 EDNS</title>
      <link>https://blog.wolfogre.com/posts/dig-support-edns/</link>
      <pubDate>Sun, 15 Aug 2021 18:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/dig-support-edns/</guid>
      <description>最近碰到了件挺无语的事。
如果不说废话，那就是：“dig 默认支持 EDNS，关键参数是 &#43;subnet”。
但你可能会好奇为什么这会让我无语。
那我们就唠唠呗。
dig 与 EDNS 我在排查一些问题的过程中，要测试一下 DNS 解析在不同地域的不同配置是否生效，需要模拟客户端...</description>
    </item>
    
    <item>
      <title>写点东西太难了</title>
      <link>https://blog.wolfogre.com/posts/writing-is-hard/</link>
      <pubDate>Mon, 29 Mar 2021 18:23:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/writing-is-hard/</guid>
      <description>〇 今天打开博客瞅了瞅，确保一下它还能打开，确实太久没有维护了。
之前我给自己定过一个指标：至少每个月更新一篇，一年 12 篇。这么点任务量没理由完成不了呀，结果还真不容易，一个月一篇不是说 30 天一篇，而是说 4 个周末一篇，且不是每个周末都是完整的，有的时候要加班，有的时候...</description>
    </item>
    
    <item>
      <title>一个特别的日子</title>
      <link>https://blog.wolfogre.com/posts/20200927/</link>
      <pubDate>Sun, 27 Sep 2020 23:20:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/20200927/</guid>
      <description>一 今天是个特别的日子，虽是周日，但却是法定工作日。
然而，周日上班对我来说本来就是家常便饭，没什么可稀奇的，但今天我又没去公司，厚着脸皮申请了一天在家办公。所以正常来说，现在我应该在写代码才对，可是并没有，我在写你看到的这些字。
小区隔壁的工地应该也是在赶进度：Duang！Du...</description>
    </item>
    
    <item>
      <title>一道关于 NAS 磁盘选购的“算法题”</title>
      <link>https://blog.wolfogre.com/posts/algorithm-for-nas-raid/</link>
      <pubDate>Fri, 31 Jul 2020 23:20:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/algorithm-for-nas-raid/</guid>
      <description>背景 在经历了买二手刀片机、给旧手机装 linux 等折腾之后，小明终于不想再捡垃圾了，决定花钱买一台正儿八经的 NAS 主机，来存放他那些自视珍宝的数据。
但在选择磁盘方案时，他却碰到了问题，由于磁盘的价格并不是与其容量成正比的，且不同规格的磁盘组成的阵列的空间利用率也不尽相同...</description>
    </item>
    
    <item>
      <title>gtag: 在 golang 中优雅地获取字段 tag</title>
      <link>https://blog.wolfogre.com/posts/gtag/</link>
      <pubDate>Fri, 29 May 2020 20:15:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/gtag/</guid>
      <description>问题 事情是这样的，一个读写 mongo 的程序被我改出了点问题：测试同学发现，更新某类数据时，某个字段无法被修改，始终保持旧值，且程序也没有报错。
后来经过排查，问题大致是这样的，看下面这一段代码：
type Foo struct { ID int `bson:&amp;amp;quo...</description>
    </item>
    
    <item>
      <title>Let’s Encrypt OCSP 域名被封</title>
      <link>https://blog.wolfogre.com/posts/letsencrypt-ocsp-breakdown/</link>
      <pubDate>Sun, 26 Apr 2020 18:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/letsencrypt-ocsp-breakdown/</guid>
      <description>引子 一直以来，我都是使用 Caddy 来部署自己的一些网站，这是一个用 golang 写的 web 服务端，类似 nginx，但一个显著的优势是默认支持 HTTPS，且无需额外配置。
下文摘抄自维基百科：
 Caddy 默认通过检查域名来启用 HTTPS (通过 ACME pr...</description>
    </item>
    
    <item>
      <title>在家办公的日子</title>
      <link>https://blog.wolfogre.com/posts/days-of-wfh/</link>
      <pubDate>Sun, 29 Mar 2020 18:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/days-of-wfh/</guid>
      <description>一 一月份的时候，我看到很多关注的博主都开始写 2019 年总结了，条理清晰，目的明确，成就着实令人钦佩。
我也很想总结一下我的 2019，但是很可惜，2019 对我来说实在是奇幻大冒险的一年，现实的变迁不允许我有一点点计划的余地，更多的时候像是被激浪推着走的漂流，我唯一能做的就...</description>
    </item>
    
    <item>
      <title>从二维绘图到数值优化——初探 golang 科学计算包 gonum</title>
      <link>https://blog.wolfogre.com/posts/gonum-tutorial/</link>
      <pubDate>Sun, 22 Dec 2019 20:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/gonum-tutorial/</guid>
      <description>gonum 简介 gonum 是一个用 golang 写的数学工具包，包括矩阵计算、数理统计、数值优化等等。GitHub 上，目前该项目拥有 3.4k 的 stars，超过 5000 次提交，并且仍保持着活跃更新。
gonum 项目所属的组织也叫 Gonum（此处故意大写，方便区...</description>
    </item>
    
    <item>
      <title>从 goinstall 到 module —— golang 包管理的前世今生</title>
      <link>https://blog.wolfogre.com/posts/golang-package-history/</link>
      <pubDate>Tue, 26 Nov 2019 13:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/golang-package-history/</guid>
      <description>“一直想一篇关于 golang 包管理的文章，一直踌躇不决。”
——这句话其实是我在去年，也就是 2018年 8 月份，起草这篇文章时所写的开头，当时 go module 发布，于是想停止“踌躇”，一鼓作气写下这篇文章，结果写到一半又踌躇了，于是留下了半篇草稿，准备继续看看发展动...</description>
    </item>
    
    <item>
      <title>维护日志</title>
      <link>https://blog.wolfogre.com/changelog/</link>
      <pubDate>Sat, 02 Nov 2019 17:37:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/changelog/</guid>
      <description>做一下网站的维护记录。
虽然过去的两三年有过各种变更，没有任何记录日子也都这么过来了，但是这样下去总不是个好事儿。
以前的欠下的账我是不想补了，从今天开始记吧。
开始做网站的维护日志。
2019.11.02 评论系统切换到 utterances 在网站上灰度测试了一下 utter...</description>
    </item>
    
    <item>
      <title>写在博客挂上广告之后</title>
      <link>https://blog.wolfogre.com/posts/ad-in-blog/</link>
      <pubDate>Sun, 27 Oct 2019 22:13:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/ad-in-blog/</guid>
      <description>一 如你所见，我开始在博客上打广告了。
这不是我心血来潮、突然恰饭，而是早有预谋。
早从 2016 年开始，我就一直尝试向 Google AdSense 申请在我的博客上打广告，但一直被拒绝。我搜了一下邮箱，应该是被拒绝了 3 次：
这里可能有朋友不理解，打个广告还对网站有要求哒...</description>
    </item>
    
    <item>
      <title>我的姑爹爹，我的姑奶奶</title>
      <link>https://blog.wolfogre.com/posts/my-grandpas-sister/</link>
      <pubDate>Fri, 20 Sep 2019 18:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/my-grandpas-sister/</guid>
      <description>写在前面 这是一篇旧文了，是我 2014 年 2 月写到 QQ 空间的。当时觉得内容不是什么光彩的事，为了避免尴尬，我故作深沉地告诉朋友“故事的真假我不道破，当小说看也行，当散文看也罢”。
但我自己知道，文中说的每一个人，每一件事，乃至写的每一个字其实都是真实的。
前些日子家里来...</description>
    </item>
    
    <item>
      <title>golang json 序列化时添加额外字段</title>
      <link>https://blog.wolfogre.com/posts/add-field-in-marshaling/</link>
      <pubDate>Mon, 09 Sep 2019 19:30:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/add-field-in-marshaling/</guid>
      <description>写在前面 本文介绍了一个不需要修改 struct 的定义，就可以让该 struct 序列化成 json 格式时，在序列化结果中“凭空”多出来额外字段的方法。
这个方法原本是我在开发过程中碰到类似问题拍脑袋想出来的，本以为是原创，但悲催的是，在撰写本文之前，无意中发现 stack ...</description>
    </item>
    
    <item>
      <title>软删除之痛</title>
      <link>https://blog.wolfogre.com/posts/trap-of-soft-delete/</link>
      <pubDate>Thu, 29 Aug 2019 20:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/trap-of-soft-delete/</guid>
      <description>软删除简介 如果你对“软删除”这个词有点陌生，可以用“逻辑删除”、“标记删除”来代替，相信你看到“标记”二字时，已然猜出了其中含义：软删除不会真的将数据记录从数据库中 delete 掉，而是通过修改某个字段来标记这条记录是被删除的。
软删除提供了一颗后悔药，当不小心删除了数据记录...</description>
    </item>
    
    <item>
      <title>golang 中拿 slice 当 queue 和拿 list 当 queue</title>
      <link>https://blog.wolfogre.com/posts/slice-queue-vs-list-queue/</link>
      <pubDate>Mon, 29 Jul 2019 15:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/slice-queue-vs-list-queue/</guid>
      <description>前言 我记得曾经有一次参加面试时，在答题过程中非常嘴欠地说了一句：“我之所以代码这么写，因为在 golang 中没有内置的无限长度 queue 的实现……”，当时说完我就后悔了，面试我的人，前几个问题本就有那么几分刻薄，一听这一句，立马就来劲了：“谁说没有？谁说没有？”
好在我连...</description>
    </item>
    
    <item>
      <title>关于 SQL，感觉自己学了假书</title>
      <link>https://blog.wolfogre.com/posts/sql-tips/</link>
      <pubDate>Sun, 30 Jun 2019 20:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/sql-tips/</guid>
      <description>前言 我相信关系型数据库应该是每个计算机学子必修的大课，由于这门课的实用价值比操作系统、编译原理高得多，我当时还是比较认真地去学的。但我相信只要上过这课的同学就能感觉出来，这门课掺杂了太多”数据模型的三要素、概念模型与逻辑模型的区别“等理论知识，也掺杂了太多”请用 SQL 查询选...</description>
    </item>
    
    <item>
      <title>验证 golang 中 thrift enum 值是否合法的一个通用办法</title>
      <link>https://blog.wolfogre.com/posts/golang-thrift-enum-validation/</link>
      <pubDate>Mon, 27 May 2019 15:50:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/golang-thrift-enum-validation/</guid>
      <description>问题 Thrift 是一种接口描述语言和二进制通讯协议，它被用来定义和创建跨语言的服务。它被当作一个远程过程调用（RPC）框架来使用，是由 Facebook 为“大规模跨语言服务开发”而开发的。要创建一个 thrift 服务，需要借助 IDL（Interface Definiti...</description>
    </item>
    
    <item>
      <title>彻底搞懂 golang 里的 iota</title>
      <link>https://blog.wolfogre.com/posts/golang-iota/</link>
      <pubDate>Thu, 25 Apr 2019 11:30:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/golang-iota/</guid>
      <description>一 先看一段代码吧：
const ( a = iota b c )  相信你能脱口答出来，常量 a 等于 0，此后定义的常量依次递增，b = 1，c = 2。没毛病，这有何难？
是的，我此前也和你一样，觉得自己已经搞懂了 golang 里的 iota 的用法了，即使它有什么鲜有人...</description>
    </item>
    
    <item>
      <title>golang pprof 实战</title>
      <link>https://blog.wolfogre.com/posts/go-ppof-practice/</link>
      <pubDate>Tue, 02 Apr 2019 18:30:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/go-ppof-practice/</guid>
      <description>前言 如果要说在 golang 开发过程进行性能调优，pprof 一定是一个大杀器般的工具。但在网上找到的教程都偏向简略，难寻真的能应用于实战的教程。这也无可厚非，毕竟 pprof 是当程序占用资源异常时才需要启用的工具，而我相信大家的编码水平和排场问题的能力是足够高的，一般不会...</description>
    </item>
    
    <item>
      <title>记·刚过去的三个月</title>
      <link>https://blog.wolfogre.com/posts/passed-three-months/</link>
      <pubDate>Fri, 01 Mar 2019 17:40:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/passed-three-months/</guid>
      <description>三个月的试用期刚过去没几天，我在新公司也算是站稳了脚跟。
从家到公司，直线距离不算远，但是公交、地铁都巧妙的避开了最优路线，在一条日怪的曲线上每天折腾我一个多小时。于是上周末的时候，终于等来了上海久违的晴天，去买了一辆电瓶车，盘算着上班时间能缩短到半个小时了。
周末电瓶车上牌照的...</description>
    </item>
    
    <item>
      <title>避免提交非文本文件到 git 仓库</title>
      <link>https://blog.wolfogre.com/posts/git-text/</link>
      <pubDate>Mon, 11 Feb 2019 12:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/git-text/</guid>
      <description>起因 为了避免提交不必要的文件到 git 仓库，我们通常需要在 .gitignore 文件里写上大量的规则来指示 git 忽略不必要的文件。然而，.gitignore 是靠匹配文件名、文件后缀名、文件路径来忽略文件的，这就导致难免会有一些漏网之鱼。
我们很难一开始就能写出一个完美...</description>
    </item>
    
    <item>
      <title>如何把微信二维码藏进命令行里</title>
      <link>https://blog.wolfogre.com/posts/qrcode-in-shell/</link>
      <pubDate>Sat, 05 Jan 2019 21:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/qrcode-in-shell/</guid>
      <description>我在博客的“关于”页面里写了我的联系方式，但没有以明文的形式展示，而是写了一行 shell 命令。已经有一些童鞋破解了这道小谜题，添加我为微信好友。我很开心，能认识到志同道合的朋友。
我之所以搞这么一道弯弯绕，不是我装 X，只是怕联系方式被爬虫爬到，或者被搜索引擎错误收录。正如同...</description>
    </item>
    
    <item>
      <title>实验验证 kubernetes PostStart 钩子的执行时机</title>
      <link>https://blog.wolfogre.com/posts/kubernetes-post-start/</link>
      <pubDate>Sat, 15 Dec 2018 16:44:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/kubernetes-post-start/</guid>
      <description>kubernetes 为容器的生命周期准备了两个钩子，分别是 PostStart：在容器创建后立即执行，和 PreStop：在容器终止之前立即被调用。
其中 PostStart 虽然在容器创建后立即执行，但并不能保证钩子将在容器 ENTRYPOINT 之前运行，换句话说，使用 P...</description>
    </item>
    
    <item>
      <title>要换工作了</title>
      <link>https://blog.wolfogre.com/posts/from-eastmoney-to-qiniu/</link>
      <pubDate>Thu, 15 Nov 2018 11:03:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/from-eastmoney-to-qiniu/</guid>
      <description>是的，准备换跳槽了。
准备从东方财富信息股份有限公司跳到上海七牛信息技术有限公司，说是说“准备”，其实已经尘埃落定了，这个月就会去下家上班。
对于我个人来说，跳槽自然是件大事，是我深思熟虑的结果，所以当然有很多事情可以说道说道。但是，人在这个时候，往往会陷入两种不良情绪之中，一种...</description>
    </item>
    
    <item>
      <title>最后，我决定买正版的 JetBrains 了</title>
      <link>https://blog.wolfogre.com/posts/buy-jetbrains/</link>
      <pubDate>Mon, 29 Oct 2018 14:17:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/buy-jetbrains/</guid>
      <description>是的，我最终还是决定——掏这个腰包吧。
一 一直以来，我都在维护着一个 JetBrains 授权服务（见《JetBrains 授权服务器》），一直猥猥琐琐地使用着盗版的 JetBrains 产品，那是从我学生时代便开始的一段故事。
当时在 Java 课上，同学永华，力荐用 Int...</description>
    </item>
    
    <item>
      <title>Mongo ObjectId 早就不用机器标识和进程号了</title>
      <link>https://blog.wolfogre.com/posts/mongo-objectid-design/</link>
      <pubDate>Wed, 24 Oct 2018 11:11:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/mongo-objectid-design/</guid>
      <description>关于 ObjectId 这里就不费舌介绍了，使用过 MongoDB 的同学都应该了解，它是一种标识全局唯一编号的数据类型，由 12 个字节组成，常用来做 mongo 数据记录的主键，它格式化后输出长这样：
ObjectId(&amp;amp;quot;507f1f77bcf86cd799...</description>
    </item>
    
    <item>
      <title>$GOPATH 耦合之殇</title>
      <link>https://blog.wolfogre.com/posts/why-no-gopath/</link>
      <pubDate>Sun, 30 Sep 2018 15:13:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/why-no-gopath/</guid>
      <description>写在前面，
写这篇文章的初衷，是想向初学者解释为什么需要设 $GOPATH，且为什么要把代码放到 $GOPATH 下面。另一方面，最近 go 1.11 发布，新推出包管理工具 go modules 弃用了 $GOPATH，这里也是替 go modules 站站队，说明了用 $GO...</description>
    </item>
    
    <item>
      <title>一种新的可应对空白 referer 的防盗链策略</title>
      <link>https://blog.wolfogre.com/posts/anti-hotlinking-without-referer/</link>
      <pubDate>Wed, 12 Sep 2018 19:03:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/anti-hotlinking-without-referer/</guid>
      <description>前言 本文介绍一种防盗链策略，可以帮助图床在收到空白 referer 请求时，仍能较准确地区分是正常请求还是盗链请求。该策略是我个人通过观察、实践、拍脑袋想出来的，目前已经在本博客全面应用。实际使用效果证明，该策略可以抵御常见的反反盗链方法，但尚不确定有没有某种方法可以破解，也不...</description>
    </item>
    
    <item>
      <title>JetBrains IDE 2018.2 下载地址整理</title>
      <link>https://blog.wolfogre.com/posts/jetbrains-2018-2-download/</link>
      <pubDate>Mon, 27 Aug 2018 14:38:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/jetbrains-2018-2-download/</guid>
      <description>注意，因为 JetBrains 的部分产品仅保留大版本最新的两个小版本的下载地址，比如对于 IntelliJ IDEA 2018.2.X，仅提供 2018.2.7、2018.2.8 两个版本，而这两个版本均是难以破解的，所有对于这种情况我换成了 2018.1.X 的最新版本。
为...</description>
    </item>
    
    <item>
      <title>Vultr ipv6 only 的主机能用来那啥吗</title>
      <link>https://blog.wolfogre.com/posts/vultr-ipv6-only-host/</link>
      <pubDate>Mon, 13 Aug 2018 19:50:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/vultr-ipv6-only-host/</guid>
      <description>坦白说，不能。
Vultr 每月 2.5 美元的主机，提供 512 M 内存，每月 500 G 流量，又因为是境外主机，但支持支付宝付款，用来那啥算是物美价廉，再好不过了。
但这样的低配主机算是 Vultr 提供的福利，限量供应的。
先前一直是只有 Miami 和 New Yor...</description>
    </item>
    
    <item>
      <title>pyinstaller 在 python 3.7.0 下的错误</title>
      <link>https://blog.wolfogre.com/posts/pyinstalller-error-on-python37/</link>
      <pubDate>Mon, 13 Aug 2018 16:30:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/pyinstalller-error-on-python37/</guid>
      <description>本文写于 2018.08.13，是阐述当时 pyinstaller 的最新版本 v3.3.1 不兼容 python 3.7.0 而导致的相关问题，但 pyinstaller 刚刚（2018.09.10）发布了新版本 v3.4 ，并在发布日志明确表示已经添加了对 python 3....</description>
    </item>
    
    <item>
      <title>Windows 软件推荐</title>
      <link>https://blog.wolfogre.com/posts/windows-software-recommendation/</link>
      <pubDate>Mon, 23 Jul 2018 20:14:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/windows-software-recommendation/</guid>
      <description>最近把电脑重装了一下。
每次重装，都要逐一下载、安装那些我要用的软件。虽然麻烦，但事实上我挺享受这个过程的。如同将一个藏污纳垢的仓库彻底清空，重新整理。
这里列一下我用的软件，即作为记录，也作为分享。
 Windows 10 安装盘烧制工具，MediaCreationTool ：...</description>
    </item>
    
    <item>
      <title>gops 工作原理</title>
      <link>https://blog.wolfogre.com/posts/mechanism-of-gops/</link>
      <pubDate>Thu, 12 Jul 2018 14:24:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/mechanism-of-gops/</guid>
      <description>网上已经有一篇《gops 工作原理》了，但我觉得其阐之未尽，想以自己的理解来讲述一下。
gops 是什么 gops（Go Process Status） 是 Google 出品的一个命令行工具，类似于 linux 自带的 ps 命令，gops 命令用于显示当前系统中 go 开发的...</description>
    </item>
    
    <item>
      <title>使用 mitmproxy &#43; python 做拦截代理</title>
      <link>https://blog.wolfogre.com/posts/usage-of-mitmproxy/</link>
      <pubDate>Fri, 08 Jun 2018 17:31:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/usage-of-mitmproxy/</guid>
      <description>本文是一个较为完整的 mitmproxy 教程，侧重于介绍如何开发拦截脚本，帮助读者能够快速得到一个自定义的代理工具。
本文假设读者有基本的 python 知识，且已经安装好了一个 python 3 开发环境。如果你对 nodejs 的熟悉程度大于对 python，可移步到 an...</description>
    </item>
    
    <item>
      <title>分享个有意思的网站——设计你专属的 golang 地鼠</title>
      <link>https://blog.wolfogre.com/posts/gopherize-me/</link>
      <pubDate>Sat, 26 May 2018 22:40:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/gopherize-me/</guid>
      <description>今天发现个有意思网站，地址是 https://gopherize.me/，可以帮你设计专属的 golang 地鼠形象。
地鼠（gopher）是 golang 的吉祥物，golang 开发者也常常热衷于称自己为 gopher，它一般长这样：
随着 golang 越来越受欢迎，这样纯...</description>
    </item>
    
    <item>
      <title>曾经为了交作业写的一篇家训</title>
      <link>https://blog.wolfogre.com/posts/family-domestic/</link>
      <pubDate>Thu, 17 May 2018 15:05:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/family-domestic/</guid>
      <description>写在前面。
当时是大一的第一个学期，还没有分专业。我们需要选修人文、理工、经管多个领域的通识课。当时还是萌新还没形成“非专业课不要浪费时间”的“先进理念”，所以为了交一门人文通识课作业，规规矩矩，正儿八经地写了一篇“家训”。
最近整理磁盘资料，翻出了这篇东西，感觉颇为有趣，决定发...</description>
    </item>
    
    <item>
      <title>在分片的 MongoDB Collection 上做更新操作时需要注意的问题</title>
      <link>https://blog.wolfogre.com/posts/trap-of-update-on-sharding-mongodb/</link>
      <pubDate>Thu, 19 Apr 2018 19:49:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/trap-of-update-on-sharding-mongodb/</guid>
      <description>如题，当在一个分片的 MongoDB Collection 上做 update 操作时，容易触发一个问题，报错是这样子的（其中敏感信息已经用 XXX 省略）：
A single update on a sharded collection must contain an exac...</description>
    </item>
    
    <item>
      <title>用于生产环境的 CockroachDB 集群搭建教程</title>
      <link>https://blog.wolfogre.com/posts/setup-of-cockroachdb-cluster/</link>
      <pubDate>Sat, 14 Apr 2018 15:38:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/setup-of-cockroachdb-cluster/</guid>
      <description>本文将介绍如何搭建一个可用于生产环境的 CockroachDB 集群，目标是尽可能利用服务器资源、保证数据安全，因此搭建过程偏向繁琐，并不是一个简明的 demo 教程。如果读者只是想快速搭建一个实验环境，只需要根据官方文档介绍的如何快速搭建一个本地集群来操作即可，并不需要阅读本文...</description>
    </item>
    
    <item>
      <title>评测分布式 SQL 数据库 CockroachDB</title>
      <link>https://blog.wolfogre.com/posts/test-of-cockroachdb/</link>
      <pubDate>Mon, 09 Apr 2018 20:01:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/test-of-cockroachdb/</guid>
      <description>本文是我因工作需要所写的针对 CockroachDB 的评测报告的删减版，去掉了一些与公司相关的信息。由于原本只是用作内部分享，只因觉得有分享价值才发布于博客，所以文中会残留一些同事之间交流的语气，请忽略便可。
 CockroachDB 是一个可伸缩的、跨地域复制的、支持事务的、...</description>
    </item>
    
    <item>
      <title>Gitment 的安全性争议</title>
      <link>https://blog.wolfogre.com/posts/security-problem-of-gitment/</link>
      <pubDate>Sat, 07 Apr 2018 17:53:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/security-problem-of-gitment/</guid>
      <description>博客的评论系统用 Gitment 挺久了，一直妥妥的没出问题。前段时间与人讨论时，发现 Gitment 的安全性似乎存在争议。
争议点在于，如果需要使用 Gitment，需要将 GitHub 注册的 OAuth Application 的 Client ID、Client Sec...</description>
    </item>
    
    <item>
      <title>秀一下家里的服务器</title>
      <link>https://blog.wolfogre.com/posts/server-host-in-my-home/</link>
      <pubDate>Fri, 06 Apr 2018 18:50:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/server-host-in-my-home/</guid>
      <description>一 没有强劲点的机器一直是让我头疼的问题，倒不是说我需要一台性能爆炸吃鸡不卡的神机，而是我需要多一点机器来搭建集群式服务，研究集群行为。在公司确实可以用机房的机器来做这些事，但那毕竟是公司财产，做跟工作有关的事情还说得过去，私自用来做自己的事那是万万不可的。
有时候也是只能通过 ...</description>
    </item>
    
    <item>
      <title>从 Gogs vs Gitea 看中外文化差异</title>
      <link>https://blog.wolfogre.com/posts/gogs-vs-gitea/</link>
      <pubDate>Mon, 05 Mar 2018 15:41:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/gogs-vs-gitea/</guid>
      <description>前言 需要声明的是，这篇文章不是对 Gogs 和 Gitea 做技术上分析比较，只是对“为什么会出现 Gogs vs Gitea”进行一些客观地叙述，外加一些我主观的看法。内容上包含太多我个人的想法，不适合参考或引用，仅供消遣。
Gogs 是什么 参考 Gogs 文档 里描述：
...</description>
    </item>
    
    <item>
      <title>golang 包的“排异反应”概念及实现</title>
      <link>https://blog.wolfogre.com/posts/golang-package-rejection/</link>
      <pubDate>Tue, 13 Feb 2018 15:36:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/golang-package-rejection/</guid>
      <description>“包排异” 可能有点危言耸听，但是标题中的“排异反应”确实是借用生物学上的概念：免疫系统攻击外来的异物，如病毒或细菌等。在这里，包排异攻击的是那些不应该被引入到代码里的包。
为什么要实现包排异？试想有包 A，代码引入 A 包后可以调用 A 包中的功能，且能正确工作，但因为某种原因...</description>
    </item>
    
    <item>
      <title>靠爬其他网站内容来充实自己——那些恶心人的网站</title>
      <link>https://blog.wolfogre.com/posts/disgusting-website/</link>
      <pubDate>Tue, 13 Feb 2018 10:55:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/disgusting-website/</guid>
      <description>一 分享一个经历。
差不多大二的时候，我也学人家搞起了博客，那时候还没有自己搭建网站的能力，便尝试在一些博客平台上注册账户，搭建博客。最后选定在博客园上搞，这是当时认为的最佳选择。
一切准备就绪后，开始写东西，绞尽脑汁，搜肠刮肚，无奈胸中无货，没啥能写的，这就非常尴尬了。正巧那时...</description>
    </item>
    
    <item>
      <title>RTX 导入 Emoji 表情包</title>
      <link>https://blog.wolfogre.com/posts/rtx-import-emoji/</link>
      <pubDate>Sat, 27 Jan 2018 16:14:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/rtx-import-emoji/</guid>
      <description>公司内部交流使用的是 RTX。RTX 很老了，默认的聊天表情是那套很老的 QQ 表情：
虽然说工作场合应当严肃，斗表情包是不应该的，但严肃的工作中也需要缓解缓解气氛，我不要什么鬼畜的表情包，好歹给套 Emoji 吧。
好在 RTX 支持自定义表情，网上也有一些 RTX 表情安装包...</description>
    </item>
    
    <item>
      <title>推广</title>
      <link>https://blog.wolfogre.com/donate/</link>
      <pubDate>Sun, 21 Jan 2018 13:39:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/donate/</guid>
      <description>下列服务如果你有用的上的，可以根据指引进行操作，我会收到一定的推广福利。
 点击链接注册成为 HostDare 用户，低价购买境外 CN2 GIA、CN2 GT 主机； 点击链接登录阿里云，零门槛领取各类产品优惠券； 点击链接注册成为七牛云用户，享受 10GB 永久免费存储空间；...</description>
    </item>
    
    <item>
      <title>st: 为写 shell 工具而写的 shell 工具</title>
      <link>https://blog.wolfogre.com/posts/st/</link>
      <pubDate>Sat, 20 Jan 2018 16:49:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/st/</guid>
      <description>如题，本文介绍的 st, 是帮助编写、管理 linux shell scripts 而开发的工具，如果读者本身就对写 shell 脚本感到为难或嗤之以鼻，这篇文章可能对你没有多少帮助，所以请慎读。
痛点 自从系统地学习了 shell 脚本之后，感觉一扇虚掩的新世界大门被打开，我惊...</description>
    </item>
    
    <item>
      <title>golang time 包的坑</title>
      <link>https://blog.wolfogre.com/posts/trap-of-golang-time/</link>
      <pubDate>Fri, 01 Dec 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/trap-of-golang-time/</guid>
      <description>前言 为了不独享被炸断腿的懵逼，此处来一波无奖竞猜。
请不要编译运行下列代码，人肉计算程序运行结果：
package main import &amp;amp;quot;time&amp;amp;quot; func main() { format := &amp;amp;quot;2006010215...</description>
    </item>
    
    <item>
      <title>CMAK（kafka manager）安装包下载</title>
      <link>https://blog.wolfogre.com/posts/kafka-manager-download/</link>
      <pubDate>Wed, 22 Nov 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/kafka-manager-download/</guid>
      <description>注意，从 3.0.0.2 开始，项目的 release 页 已经开始提供现成的编译结果了：
故本页将不再更新，仅保留一些旧版本，供必要时使用。
CMAK（原名 kafka manager）是一个开源的 kafka 管理工具，挺好用的。
因为误用了 Apache 的商标，所以才从“...</description>
    </item>
    
    <item>
      <title>阿里云短信服务 HTTP 协议签名 golang 版</title>
      <link>https://blog.wolfogre.com/posts/send-sms-by-aliyun-in-golang/</link>
      <pubDate>Mon, 20 Nov 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/send-sms-by-aliyun-in-golang/</guid>
      <description>最近写一个小服务，需要用到发短信的功能。于是打开阿里云的短信服务界面，发现它又双叒叕升级了，印象里好像是第三次还是第四次升级了。升级后接口有些变化，官方为新接口提供了常用语言的 SDK，然而并没有 golang 版的，好在官方文档里提供了 java 版的 HTTP 签名 demo...</description>
    </item>
    
    <item>
      <title>golang 消费 kafka 的坑</title>
      <link>https://blog.wolfogre.com/posts/golang-consume-kafka/</link>
      <pubDate>Sun, 19 Nov 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/golang-consume-kafka/</guid>
      <description>问题所在 用 golang 连接 kafka 做推送或消费操作，一般都会说用 github.com/Shopify/sarama 这个包，但是我在实际使用中发现是有问题的。
sarama 文档中给了几个操作例子，其中 producer 的例子均是正确且好用的。问题出在 consu...</description>
    </item>
    
    <item>
      <title>如何修复 Foxmail 新邮件提示框位置错误</title>
      <link>https://blog.wolfogre.com/posts/fix-foxmail-notifier/</link>
      <pubDate>Tue, 22 Aug 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/fix-foxmail-notifier/</guid>
      <description>最近一直被 Foxmail 的一个问题困扰。
Foxmail 新邮件提醒会弹出一个提示框，正常情况这个提示框会准确地出现在桌面右下角。但由于笔记本频繁地插拔外接显示器，桌面尺寸便经常变化，Foxmail 会经常算错位置——在连着大尺寸显示器时，按照小尺寸显示器来计算右下角位置，于...</description>
    </item>
    
    <item>
      <title>如何记住过长的 Docker 容器启动命令</title>
      <link>https://blog.wolfogre.com/posts/howto-remember-docker-run/</link>
      <pubDate>Fri, 18 Aug 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/howto-remember-docker-run/</guid>
      <description>背景 容器启动命令很难记吗？先来看一条吧：
docker run --name xx-xxxxx-proxy \ -p 26379:6379 -p 18080:8080 \ -v /opt/docker-volumes/xx-xxxxx-proxy/opt/:/opt/ \ -d...</description>
    </item>
    
    <item>
      <title>如何在 CentOS/RHEL 5/6/7 中安装 Subversion(SVN) 1.7/1.8/1.9</title>
      <link>https://blog.wolfogre.com/posts/install-svn-scripts/</link>
      <pubDate>Tue, 01 Aug 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/install-svn-scripts/</guid>
      <description>系统默认 yum 安装的 svn（Apache Subversion） 是 1.7 的，由于公司的 svn server 是 1.8，使用时会有些问题。于是我尝试找个方法安装个 1.8 的 svn，可在网上找到的方式无非两种，一种是教人手动添加 yum repo，另一种更扯淡，教...</description>
    </item>
    
    <item>
      <title>关于</title>
      <link>https://blog.wolfogre.com/about/</link>
      <pubDate>Sun, 30 Jul 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/about/</guid>
      <description> 关于博主 好奇的年轻人，会一些东西但深入的不多。
服务端开发者，主要靠 Golang 吃饭。
热爱 Linux，也爱 MacOS、Windows，
热爱 Golang，也爱其他语言。
GitHub 主页：https://github.com/wolfogre。
联系方式：
ec...</description>
    </item>
    
    <item>
      <title>关于新版博客</title>
      <link>https://blog.wolfogre.com/posts/new-blog/</link>
      <pubDate>Thu, 27 Jul 2017 00:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/new-blog/</guid>
      <description>旧版博客的停用 大概在一年前多前，我用 WordPress 搭建了最初的博客，当时着实被 WordPress 强大的功能深深震撼，也被眼花缭乱的 WordPress 主题各种吸引，不可否认，WordPress 目前仍是最成功 CMS 系统，没有之一。
这期间我的 WordPres...</description>
    </item>
    
    <item>
      <title>这是一篇测试文章</title>
      <link>https://blog.wolfogre.com/posts/test/</link>
      <pubDate>Tue, 25 Jul 2017 12:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/test/</guid>
      <description>这是一篇测试文章，测试 hugo 博客的各项特性。...</description>
    </item>
    
    <item>
      <title>JetBrains 授权服务器</title>
      <link>https://blog.wolfogre.com/posts/jetbrains-licenser/</link>
      <pubDate>Sun, 04 Sep 2016 12:00:00 +0800</pubDate>
      
      <guid>https://blog.wolfogre.com/posts/jetbrains-licenser/</guid>
      <description>如果授权失败请翻到底部查看更新与维护！
如果授权失败请翻到底部查看更新与维护！
如果授权失败请翻到底部查看更新与维护！
借助 ilanyu&amp;amp;rsquo;s Blog 公开的技术搭建的 JetBrains 授权服务器，本博客未参与任何破解工作。
理论上可授权 JetBrai...</description>
    </item>
    
  </channel>
</rss>
