阿里云万网提供免费主机,为支持我厂产品,立马去抢了一个,阿里云还提供免费备案,正好有机会可以给xfeng.me备案了

网上总是看到有人说上海备案非常快,3天左右就全部搞定,这次备案来看,杭州速度马马虎虎,第一次新增域名,和第二次修改主体信息,都是刚好8天时间审批通过

这次备案还是用了08年备案joysboy.net的备案号,不用注销重新备案真好,不过现在备案麻烦多了,还需要半身照,折腾半天也不错,很多限制备案才能使用的服务都能使用了,upyun可以使用xfeng.me的二级域名了

废话不多说了,万网免费主机可以使用两年,需要的赶紧去抢一个吧,每天限量,凌晨12点一过,必定能抢到

由于想通过页面查看VPS使用的流量,以前用的是vnstat,非常不错的一个工具,但是几个前端插件都是需要PHP环境,但是现在将博客改用Hexo后,完全静态化,只启动了一个Nginx,不想启动php-fpm,最后找到了vnstatsvg这个项目,使用CGI的方式来获取数据,最后生成svg图片来展示,满足我的需求。

那问题就来了,我后端使用的是Nginx,并非Httpd,Nginx原生不支持CGI执行,之前工作上写的很多CGI都是通过Apache Httpd来执行,以前虽然看过Nginx使用fcgi执行CGI脚本的文章,但从没实践过,这次实战一次。

spawn-fcgi

spawn-fcgi原来是Lighttpd中的模块,现在已经独立出来,由于Nginx不能直接执行外部CGI程序,因此需要依赖spawn-fcgi来执行

1
2
3
4
5
git clone git@github.com:lighttpd/spawn-fcgi.git
cd spawn-fcgi
./autogen.sh
./configure
make && make install

从github获取spawn-fcgi最新代码,然后编译安装

阅读全文

前言

前段时间yupoo的vip到期了,用yupoo用了三四年vip了吧,每年60也不贵,我流量不多,每个月2g左右,现在yupoo推出了upyun,加入联盟还能每个月15G免费流量,所以准备切换到upyun

upyun刚推出测试的时候,我参与试用过,不过基本没用,现在看发现那个帐号被冻结了,客服说再注册一个好了

迁移

重新注册申请加入联盟,客服响应速度非常快

迁移图片

注册完成后,就是要把原来yupoo的图片都迁移过来,这里真后悔vip要到期的时候怎么不赶紧用ftp把图片备份出来,现在vip过期了,不可能手工去保存所有图片,上千张的,无奈只好又开了一次最便宜的个人vip

阅读全文

查询分支的版本,最后修改时间,最新tag等信息的方法

函数以类的私有函数的方式定义,可以改为正常函数使用,如果查询失败会自动重试,连续两次都失败后终止

先定义下全局的svn参数,以及依赖的lib

1
2
use XML::Simple;
my $svn_args = "--username xxx --password yyy --no-auth-cache --non-interactive";

查询svn分支最新版本

入参:分支URL
返回值:查询成功返回版本号,失败返回undef

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
my $get_svnVer = sub {
my ($branch, $fail_num) = @_;
chomp $branch;
if (!$fail_num) {
$fail_num = 1;
}
else {
$fail_num += 1;
}
if ($fail_num > 2) {
return undef;
}
my $result = `svn info $svn_args --xml $branch 2>/dev/null`;
if ($? == 0) {
my $xml = XML::Simple->new();
my $data = $xml->XMLin($result);
return $data->{'entry'}->{'commit'}->{'revision'};
}
else {
return $get_svnVer->($branch, $fail_num);
}
};

阅读全文

更换Hexo后,试用了下Baidu分享,感觉加载速度比jiathis快,抛弃了jiathis,新版的Baidu分享也提供了自定义函数,可以加上事件监控,把分享数据统计到Google Analytics中

Baidu分享代码中,在_bd_share_config配置信息里,common配置中onAfterClick可以定义一个点击分享后触发执行的函数

因此先定义一个soctrack函数,入参是baidu分享的cmd,就是分享按钮的名字,函数功能是向Google analytics发送一个事件消息,如果你使用Baidu统计,也可以向百度发送一个事件

函数定义好以后,在Baidu分享config的common.onAfterClick中引用这个函数即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function soctrack(cmd){ga('send', 'social', cmd, 'BaiduShare', _bd_share_config.common.bdUrl);};
window._bd_share_config={
"common": {
"bdMini": "3",
"bdSnsKey": {},
"bdText": "",
"bdMiniList": [],
"bdPic": "",
"onAfterClick": soctrack
},
"share": {},
"image": {
"viewList": [],
},
"selectShare": {
"bdContainerClass": "article-entry",
"bdSelectMiniList": []
}
};
with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];

阅读全文

SublimeBashTidy

一直很喜欢Sublime Text,也有非常多的插件,对于Coder来说,代码规范看着就会觉得赏心悦目,所以很喜欢那些tidy的插件,可以自动将代码格式化,但是没有找到bash的tidy插件

做运维的bash绝对不会少写,一些简单的脚本可以直接在一行命令里搞定,但是比较复杂的,还是喜欢在编辑器里写,没有tidy插件让我很不爽,最后忍不住自己去写一个插件

自己完整的写一套bash的格式化逻辑还是有点折腾的,于是在github上搜有没有类似的project,找到了beautify_bash,也是Python的project,这就简单了

Sublime text也是Python开发的,提供了Python的API,找了下其他tidy插件的写法,格式化代码只需要调用API获取文件内容或者选中区域内容,然后将获取到字符串处理完,再次调用API把处理完的内容替换掉原来的内容

Dev

简单的文本处理插件只需要创建一个sublime_plugin.TextCommand类,类名叫XXCommand就行

阅读全文