最后更新日期:2017.09.20
BBR是来自于Google的黑科技,目的是通过优化和控制TCP的拥塞,充分利用带宽并降低延迟,起到神奇般的加速效果。 在BBR之前,比较有名的就是国产的锐速了,不过,由于锐速是个国产的闭源软件,所以一直纠结不想装在VPS上。正好,BBR的出现,又成为一个可供折腾的对象。
君看一叶舟,出没风波里
最后更新日期:2017.09.20
BBR是来自于Google的黑科技,目的是通过优化和控制TCP的拥塞,充分利用带宽并降低延迟,起到神奇般的加速效果。 在BBR之前,比较有名的就是国产的锐速了,不过,由于锐速是个国产的闭源软件,所以一直纠结不想装在VPS上。正好,BBR的出现,又成为一个可供折腾的对象。
作为一名曾经的.NET程序员,做了9年有余的.NET开发,从那时起,我一直以为Visual Studio已经是这个世界上最贴心的IDE了,因为它包含了一系列的“开箱即用”(battery included)的功能。从项目工程最初的建立,到编码实现,以及UI的实现,单元测试,调试,甚至是一键发布,众多的功能手到擒来,简直没有比这个更爽更体贴的IDE了……
后来,由于兴趣的转变,转去在Mac下面做Go开发,接触到了各种经典的命令行和工具,才发现之前真是被微软给“宠坏”了。原来,在Windows和图形化界面之外,还有另外一片广阔的天地。
四月初去曼谷看了一场Coldplay的演唱会《A Head Full Of Dreams》,于是,我的人生清单上,终于又完成了一项有生之年的任务:
有生之年去听一场Coldplay现场演唱会
喜欢上Coldplay有比较长一段时间了,总是喜欢在写代码的时候听他们的歌。去年底得知Coldplay的2017亚洲巡回演唱会开始出票,有台湾,日本,新加坡,菲律宾,韩国,曼谷等几处演出地点,随即在网上抢到了2017年曼谷场4.7号的票,再经过几个月的苦苦等待,终于达成了今年四月初的曼谷之行。
回想起之前写过的《环保低功耗PT下载机打造攻略》和《环保低功耗PT下载机打造攻略–续篇》,这日子,一晃就快五年了,真是时光如梭啊……
在这近五年的时间里面,这台7*24小时开机的下载机,平时几乎就不用关机(除了小区偶尔的断电),伴随我混各大PT站,看了N部高清电影,追了N部美剧。但是,不幸的是,也就是在最近,这台下载机突然歇菜了,无法开机启动,究其原因,应该是主板寿终正寝了。好吧,用了这么多年,再细想一下当时组装花的成本,700来块,也算值了。
某日搜索文章,误入了别人家的blog,发现有个动态特效还挺不错,网页中会动态随机生成许多的点和线条,鼠标停留的地方会自动吸附这些线条,构成动态的几何图形。这么酷炫的效果怎能错过呢,打算“借鉴”到我的blog来。不过,翻遍了那位仁兄的blog,也没有看到相关的介绍,无奈只有分析一下他家的blog代码,原来是在网页中创建了一个巨大的canvas,设置透明度为50%,并且设置z-index为-1,让它位置在blog正文的下方。最后,通过一个叫mouse.js来实现动态的几何图形绘制和移动等效果。
于是乎,开始动手,三下五除二的把这个酷炫特技“移植”了过来……
自从上次《为你的Blog快速开启https支持》过后,blog试运行了一段时间,感觉还不错。随着国内SSL证书免费的推广,将来HTTPS必然是趋势。于是,打算把blog全面开启支持HTTPS。
迁移的步骤大致分为两部:
在Docker大行其道的今天,我们能够非常方便的使用容器打包我们的应用程序,并且将它在我们的服务器上部署并运行起来。但是,谈论到如何停掉运行中的docker容器并正确的终止其中的程序,这就成为一个非常值得讨论的话题了。
我的Blog是基于hexo生成的纯静态页面,host在nginx server上。其实通过普通的http访问方式已经足够了,开启https纯属折腾,请叫我不折腾不舒服斯基。
提到https,不得不提到免费的StarSSL证书,之前也申请了用过一段时间,感觉申请和续期证书的步骤都比较繁琐。后来随着证书过期,遂放弃之……
最近,在网上火透半边天的,非 Let’s Encrypt 的免费SSL证书莫属了。Let’s Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书,同时,它还是免费、自动化、开放的证书签发服务。Let’s Encrypt的证书申请和续期都非常方便,默认的证书有效期是90天,通过cron的定时任务可以实现自动化的续期,所以,能通过自动的方式解决的问题都不是问题,这也是这次折腾起https支持的原因。此篇blog主要记录一下申请证书,配置证书到nginx,以及自动续期的实现步骤,供有兴趣的同学参考。
在发布和部署程序时,我们往往会有这样的需求:把版本号内置在程序里面,运行和部署程序的时候,可以用来知晓当前发布和部署的程序是什么版本。在一个编译好的可执行程序中,我们通常可以用类似: ./app_name -version 的方式,来获取当前程序的版本号。有了程序的版本号,更便于生产环境中,当程序出现问题时,工程师可以方便的根据版本号查找对应代码的改动,从而更容易定位到问题的所在。
这里主要介绍一下如何用Makefile以及Go本身所支持的编译特性,实现编译时自动生成版本号的功能。