后Google reader时代
2013年7月1日 Google公司关闭了Google阅读器(Google Reader)服务,在那之后,我一直徘徊在各种替代品阅读器之间,用过feedly, feedspot, inoreader, Digg Reader, The Old Reader。一开始,觉得哪家都不好,毕竟没法同Google阅读器的舒适的功能相比(包括快捷键),各家的排版布局也乱七八糟,有的简洁没功能,有的繁杂界面点击起来又麻烦。
刚开始觉得feedspot的界面模仿的比较像,功能也相似,所以就留在了这个阅读器里。feedspot基本上每月都给我发邮件,提醒我可以花钱升级到黄金版本,但是将近两年来,我根本那就没用过几次这个阅读器。今日登录想更新新的订阅地址时,发现feedspot的阅读器订阅功能有问题,有些别的阅读器可以订阅的博客链接地址竟然在feedspot上无法订阅。另外feedspot在建立之初就被人说过域名只注册了一年(估计是自动续费型),这也让很多人不敢相信该阅读器可以运营很长时间。所以不愿意花钱购买该产品的高级服务。
基于上面广告问题,以及功能的问题,让我再次陷入了寻找阅读器的持续作战中,每每搜索Google Reader的替代品,知乎和v2ex都会有人评论说用了inoreader的体验最好。我果断又找到了之前的帐号,登录后,感觉界面比我最早用它时变得清爽,功能比较丰富,导入在feedspot无法订阅的订阅源也非常顺利,索性就又搬运了一次所有订阅源,使用inoreader继续阅读网上的好内容。用了几天,根据使用体验,我认为,后Google Reader时代,Inoreader能被称为优秀替代品。
当然这篇文章如果仅仅只是一个浏览器使用评价,就真的没必要写了。我关心的问题是,后Google Reader时代,究竟还有多少人更新自己博客?
我曾经在Google Reader有173个RSS订阅,其中有paper相关的38个永久源,搬家到Inoreader后剔除错误链接,还剩下139个,将近五分之一都完全失效了,一点后续内容都在网上搜索不到。在139个中有一些已经是年鉴级别的博客了,每年总结一篇(包括我自己的博客,也是每年写的少之又少)。 由于样本只有我订阅的博客,可能是因为技术类偏多,所以博客迁移比较频繁。相比于传统的WordPress typecho 博客,更多的人选择用Jekyll或者Hexo,另外轻博客的比例也增加了(特指李老师的博客xiaolai.li,我找了半天才发现他跑到tumblr上耍了'_>`
)。个人博客如果只是记录自己技术摘抄,很有可能会更新不下去,长期更新的博客基本上都有自己运营的内容。
另外现在大家用移动设备(平板、手机)比较多,对于一些曾经用博客交流的内容,交流方式有了很大变化:博客
->微博or轻博客
->聊天工具(wechat, etc.)
。如果没有很好的阅读器app,谁也不会去读博客这种长篇文章了。
推荐一个可以检测feed完整性的网站feedvalidator。很多订阅源的放到这个上面检测都有小问题。
由于使用的是在线输入法,我的中文水平也不高,文章中会有很多拼音错别字,如果真有人看我写的内容,发现错别字,走过路过请吼一声提醒我一下,谢谢。
采用百度云加速免费来加速站点
No Zuo, No Die
2015.03.29更新想必github 遭受DDOS攻击,是这个周末(2015.03.27-2015.03.29)码农圈子里的一个热门话题。由于这次攻击采用了Baidu的一段统计js代码,并且我的网站之前就用了Baidu的加速,在此次攻击中CDN缓存都访问不了网站,我撤销了相关加速服务。并且决定不会在github pages上采用任何国内的加速服务。
百度的这个加速服务适合于自己在国外服务器架设网站的用户。
此次百度云加速服务仅仅使用了3个月就宣告终结,不得不承认是大环境的影响,政府对某些方面的限制越来越多了。
博客一直放在github.io上,访问的时候不管使用github.io的链接,还是自己的域名, 速度都很慢,没法办谁叫咱生活在一个大局域网里呢。
然后今天的访问速度实在是慢得不可忍了,所以搜索了CDN加速服务,貌似大家现在使用最多的是七牛云加速,但是这个很麻烦,对体验用户(非实名)限制也多。 通过搜索,我找到了百度云加速。
特大好消息
之前百度的云加速只允许有备案信息的站点申请使用,也就是网址为yunjiasu.baidu.com的这个, 据说是同知道创宇
联营,实际从用户角度基本看不到百度的身影,另一个是最近推出的 next.su.baidu.com 不需要备案。
然后现在yunjiasu.baidu.com 也指向 next.su.baidu.com,这个加速服务不需要备案,并且现在是免费试用期
。
只要有百度的帐号(应该都有吧,之前的大容量云盘战争还历历在目'_>`
),就可以立即使用。
操作也非常的简单,一共三步:
- 填写需要加速的网站域名,例如:yulijia.net
- 设置需要加速服务的子域名,由于我只需要网站加速,所以这一步不用配置,直接next
- 修改NS,百度给出了教程,直接照着修改即可
然后,效果还不错,我激动的半夜发这个日志。
2015.03.08 update
使用了一段时间,速度基本保持稳定,但是有JS解析问题,MathJax的JS有时会出错,公式会变成红色的[Math Processing Error]。免费产品,凑和用了,没准最近直接访问的速度更快。-_-'
R软件语言环境和内存的基本设置
在这里介绍一些安装R软件后语言环境和内存的基本设置,仅在Linux发行版本Fedora下测试,Windows和OS X用户请绕道或者浏览后自举一反三。
设置R语言界面的显示语言
在Fedora系统中,yum源安装R,安装后包含R的文件路径有:
R:
/usr/bin/R
/usr/lib64/R
/usr/include/R
/usr/share/R
/usr/share/man/man1/R.1.gz
/usr/bin/R 这个就是R软件的二进制运行文件,/usr/lib64/R 里是R的所有库文件以及设置,/usr/include/R 存放R需要的头文件,/usr/share/R 包含了R需要调用的其他程序时的共享文件,/usr/share/man/man1/R.1.gz 是R文档
修改R显示语言是在Renviron这个文件里,它的具体位置是/usr/lib64/R/etc/Renviron
。只需要在该文件最后添加LANGUAGE=en
即可。
设置R可用内存
memory.limit
这个命令只能在windows下使用,那么在linux下有什么类似的命令吗?我选择使用packageulimit
来设置(这个package只能设置linux下的内存,对OS X 无效)。
## 安装 ulimit
> devtools::install_github("krlmlr/ulimit")
## 设置内存
> ulimit::memory_limit(2000)
## 测试
> rep(0L, 1e9)
Error: cannot allocate vector of size 3.7 Gb
R语言天生就带着内存和性能的诸多问题,例如:本身不带有多线程运行,读入的数据都放在内存里没有优化。所以像我一样只有一个6年前的2G内存Centrino处理器的小破本,还想做一些大数据的运算的话,请关注内存管理:
rm()
这个命令是常用的删除对象方法,但是它会删除变量的引用,并不会立即清除占用的内存,如果想立即释放内存,需要用gc()
命令。- 对于矩阵如果都是整数,请不要用double类型来存储,可以用
storage.mode(x) <- "integer"
来改变变量x的存储模式,integer比double要省内存。 - stackoverflow上面有个提问里提供了一个可以查看R中变量占用内存的函数,如果需要关注变量的内存,可以使用一下。不过现在大家都用Rstudio来写R程序了,Rstudio里可以直接在Environment里采用Grid浏览模式看到每个变量占用内存信息。
- 使用
read.table()
函数族把外部数据导入data.frame时,尽量显式设定colClasses
和nrows
选项,设定comment.char = ""
(如果没有comment的话),要做到这一步中的每一点,首先需要了解读入数据的详细信息,例如行数可以用wc -l
在终端下查看,用head
命令在终端下显示几行数据内容,然后自行确定colClasses以及是否有comment需要回避。 - 在data.frame中把不需要的列设置成NULL,或者干脆重建一个(在内存足够执行copy的前提下)。
- 将外部数据导入矩阵时,使用scan()函数。
文本加密解密
首先普及一个常识,密码
是一种用来混淆的技术,它希望将正常的(可识别的)信息转变为无法识别的信息,这种无法识别的信息是可以再加工并恢复的。密码学(cryptology)是研究如何隐密地传递信息的学科。Password或cipher
,应该被翻译成口令/暗号(结果现在中文里也翻译成了密码),口令原来的意义是口头暗号,也叫“通行字”,是一个用于身份验证的保密的字符串,用以保护不想被别人看到的隐私以及防止未经授权的操作,达到保护隐私以及防止未经授权的操作的目的。
研究文本加密解密的原因是我记不住自己的网站口令了,索性写如了文档中,进行加密,再存入数据库。
在网上研究了一些加密/解密的方法,最好用的是openssl这个工具。文本的加密解密主要使用的是openssl里的密码算法库。
如果在网上搜索,可以得到很多基于openssl的加密、解密方法。这里我主要介绍一点,基于enc(symmetric cipher routines)的加密解密时command里要添加-A
选项。这个选项的作用是对于一串字符加密或解密时,所有内容在一行内输出。在需要加密的字符串长度超过40时(今在我的电脑上测试的数据,fedora 20),如果没有加入-A
选项,解密时会出现”error reading input file” 以及 “bad magic number” 这两种错误提示。
问题重现
## 将一个长达45个字符的字符串进行加密,加密方法 enc -aes-256-cfb
$ echo "123456789012345678901234567890123456789012345" | openssl enc -aes-256-cfb -e -base64 -k "test" -salt
$ echo "123456789012345678901234567890123456789012345" | openssl enc -aes-256-cfb -e -base64 -k "test" -salt
U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd8
3A2VaByW0yRBIs1oEKk=
由上可以看到,加密后的输出被分成了两行。
接下来,对输出内容进行解密:
## 对分成两部分的加密字符串分别解密
$ echo "U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd8" |openssl enc -aes-256-cfb -d -base64 -k "test"
12345678901234567890123456789012
$ echo "3A2VaByW0yRBIs1oEKk=" |openssl enc -aes-256-cfb -d -base64 -k "test"
error reading input file
## 对分成两部分的加密字符串合并解密
$ echo "U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd83A2VaByW0yRBIs1oEKk=" |openssl enc -aes-256-cfb -d -base64 -k "test"
error reading input file
$ echo "U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd8 3A2VaByW0yRBIs1oEKk=" |openssl enc -aes-256-cfb -d -base64 -k "test"
error reading input file
$ echo "U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd8\ 3A2VaByW0yRBIs1oEKk=" |openssl enc -aes-256-cfb -d -base64 -k "test"
error reading input file
$ echo "U2FsdGVkX1+jfo70LlMECXRyLhH9N/Pp9jRK7yMyqdhmEiDdM13fTsh/nntt/yd8\n3A2VaByW0yRBIs1oEKk=" |openssl enc -aes-256-cfb -d -base64 -k "test"
error reading input file
由上可以看出,根本就无法正常解密之前的字符串。
解决方法
查找资料后,发现需要在openssl
语句中增加-A
选项,具体为:
$ echo "123456789012345678901234567890123456789012345" | openssl enc -aes-256-cfb -e -base64 -k "test" -salt -A
U2FsdGVkX19XLlseSQxqXVmA8LIfIpQyEv/lVrM9EJk2RyMcHJsubnxN2M+365RnBG3oxXDYPOBNqIU+q0E=
$ echo "U2FsdGVkX19XLlseSQxqXVmA8LIfIpQyEv/lVrM9EJk2RyMcHJsubnxN2M+365RnBG3oxXDYPOBNqIU+q0E=" |openssl enc -aes-256-cfb -d -base64 -k "test" -A
123456789012345678901234567890123456789012345
I am back
I am back!
这么多年没画图,发现自学的技能也都可以还回去(还哪去了?网络、论坛?)。绞尽脑汁,也就拼了个这么个东西,只想在冬至这天叫嚣一句:I am Back!