编译nginx到Android上踩坑了

2015年4月3日 1 条评论

上个月老细又话把产品移植到android上,哭吧。。。又一堆东西要搞了。收到任务,第一个移植的就是nginx,因为我们的软件使用了nginx作为http服务器,并且针对服务写了些插件绑定在nginx上。心想这个android也是linux内核的,应该左个跨平台编译就差不多了。谁知道折腾了一个多星期。

如果大家只是想最快编译一个nginx上android就不用看我的文章。直接在这里andoid-nginx下载这个针对android修改好的编译配置就可以了。想了解我采坑的就继续看下去。

编译nginx for android主要参考了 这个帖子和另外一个帖子。但是结合自己的遇到的情况做了一些调整。虽然编译不是很顺利,一路遇到不少问题。不过通过万能的google解决了。历尽千辛万苦终于编译完成了。

其中一个主要的修改是对 auto/types/sizeof文件进行修改,由于configure会对编译出来的测试程序并运行,测试出int,long等数值的长度。由于修改了编译器,编译出来的文件只能在arm的系统上跑,那么在编译的主机上是不能跑的。帖子的方法是教你写一个固定的值,我觉得不是太好,事实上也的确不太好。于是我把这个测试程序的编译器改成我编译主机(用的是mac osx系统)的gcc(其实是clang)。还有一个问题就是我的系统是64位的。而我的目标的android是32位的。不过好彩gcc(其实是clang编译器)有一个参数可以编译32位的程序,“-m32″

#ngx_test=”$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
ngx_test=”gcc -m32 $CC_TEST_FLAGS $CC_AUX_FLAGS \

阅读全文…

分类: IT, 编程 标签: , ,

使用docker重建Gitlab服务

2015年3月6日 没有评论

新年假期回到公司,就发现一个噩耗,就是代码服务器意外关机,重启不成功。虽然我知道linux的机器意外关机会造成不可以预知的损坏,但是在10多年的linux使用生涯中还是真的未遇过。这次终于给我遇上了。

虽然数据在年前已经备份过了。不过我想到的是如果这台机救不回来,要我重新安装这个gitlab服务就真的疼苦了。虽然当初安装的时候有把关键点都记录下来。不过再安装一次的确痛苦。关键是迁移数据的问题。我还发现一个问题就是我没有记录当时安装的gitlab的版本,低级错误。不过经过维护部门的努力,机器是可以重新启动,gitlab服务也正常。不过在等待维护部门的修复,就等待了好几天。好在影响不大,其实这些东西本应不用我操心的。不过公司一共4个开发团队,就我一个团队使用代码管理。其他几个部门还是原始社会的手工管理。所以这个代码服务器想移交去维护部门都不行。

虽然这次救活了,但是我还是需要准备万一下次再出问题的时候,修复不了机器的时候做好准备了。作为快速搭建服务,首选是使用docker进行部署。目前已经有人做好了docker-gitlab的image镜像。目前这个image的版本使用gitlab 7.8.1,不过我们使用的gitlab的版本是6.6.5的版本。不知道数据库是否可以平滑升级。

找了一台Ubuntu 14.04机器进行测试。其实使用这个docker-gitlab的container比较简单,他的github页面说明比较详细。如果新建的gitlab服务,参照他的说明就可以了。比较简单。但是有一个坑,这个可能是docker-compose(原有的fig)的bug。

阅读全文…

分类: IT 标签: , ,

golang的包管理–godep

2015年1月7日 没有评论

golang没有提供包管理工具,只是提供了一个全局的包管理。不过对于一些项目来说,需要一个包管理工具,经过一番google后,最后选择了godep这个工具。

对于这个工具的使用觉得并不是很满意。经常有一些问题,不知道如何解决。有时候昨天不成功,今天有Ok了。真是搞到头大。目前对于一些问题还是不太确认是什么问题。估计是对这个工具的理解不够。

 

这里讲一下使用技巧和一些注意事项。

1、建立依赖json文件。在项目的根目录下运行下边命令。

godep save  或者用 godep save ./…

注意你需要在这个目录运行go build 可以成功编译。就可以。另外你需要把文件Godeps/Godeps.json添加到代码管理中,那样才方便别人下载项目和更新依赖包。,godep save 同时把依赖包的代码都copy到Godeps/_workspace/src目录下,而且把依赖包的git管理目录.git去掉了。你可以把这些依赖包一并上传到你的项目代码管理中,这样别人下载你的代码库的时候就可以直接编译,不需要下载更新依赖包。但是你的代码库会相对大一些,同时也会出现一些其他一些版本问题。

2、下载依赖包

godep restore

这个命令是根据Godeps/Godeps.json文件把项目的依赖包下载到$GOPATH目录下。另外看一看下边的脚本,千万别学他。这个脚本我是参考wandoulabs/codis的项目中的一个编译脚本编写的。就因为这个,我踩坑了。

make clean

echo “downloading dependcies, it may take a few minutes…”
# Test godep install, steal it from LedisDB project 😛
godep path > /dev/null 2>&1
if [ “$?” = 0 ]; then
GOPATH=`godep path`:$GOPATH
godep restore
go build || exit $?
exit 0
fi

阅读全文…

分类: IT, 编程 标签:

Filco minila air 茶轴机械键盘使用感受

2015年1月6日 2 条评论

想买好的键盘好久了,不过一路都没有进购。不过早几个星期就终于买了filco minila air 茶轴。

先讲讲我的候选键盘,全部都是60%的小键盘。因为我觉得占位置少,全键盘,多出来的键也没有什么用。

1、HHKB pro 认识这个键盘是因为听了一个程序员的podcasts。认识了HHKB。对这个键盘布局太爱了。因为小巧。没有多余的键。不过由于价格太贵了。一路都没有狠心买下来。而且他还有一个不太喜欢的地方是方向键的排布不是喜欢。

2、HHKB lite 2,这个产品是HHKB的低端产品,是薄膜键盘,在一些玩家眼中是不值得一提的,但是价格也比较亲民。不过我还是觉得薄膜键盘也有好的产品,不一定需要机械键盘才好打的。产品寿命也是薄膜键盘的弱点,不过这些大品牌,产品质量过关。不会这么容易坏的。加上我也不大游戏。估计这辈子也用不坏。之前在旧公司用dell的原装机的时候,发觉他的键盘比较好打。现在估计那个就是传说中的8115键盘

3、poker 2 或者 KBT RACE 2这个两个产品没有太多特别。

4、Filco minila air ,这个键盘几乎满足了我90%的需求了。这个键盘有一个比较好的特点是,在空格键左右分别有两个fn键,这样组合按方向键就超级爽了。还有一个大爱的地方就是有蓝牙版本。

filco minila air

阅读全文…

分类: IT, 生活 标签: , , ,

golang cgo编译问题与坑

2014年11月26日 没有评论

golang这个语言最大的好处就是和c结合得非常好,非常方便与c互相调用。虽然其他语言也可以调用c的库,但是调用没有golang这个语言这么方便。其实想讲,golang就是现代版的c语言。

首先golang如何调用c的库,文档写得比较清楚。请参照文档cgo编译cgo命令。这个看来之后基本就大概明白了。而且讲解了一些基本的类型转换。例如string的转换等。不过真实使用的时候,会用到char**的。这个问题如何解决。stackoverflow上有解,请自行观看。

看完这些问题,大家觉得是不是就没有问题。我也是这样想的,不过真实的时候就遇到一个非常恼火的问题。就是golang对格式的一些严格要求。

问题来源,在调试cgo的程序的时候。发觉本来调试好的程序,后来也没有改什么,突然编译不了。找了很久也没有找出原因。由于是测试代码,没有放入代码管理,回滚不了。看来看去也没有看出什么问题。最后只能从最开始重新编写这个代码。最后发现是一个空行引发的血案。悲哀啊,搞了我大半天。

看下边的代码吧:

package main

/*
#cgo CFLAGS: -I .
#cgo LDFLAGS: -L . -lclibrary

#include "clibrary.h"

int callOnMeGo_cgo(int in); // Forward declaration.
*/
import "C"  //这里不能与上边注释的c代码有任何空行。

import (
        "fmt"
        "unsafe"
)

//export callOnMeGo
func callOnMeGo(in int) int {
        fmt.Printf("Go.callOnMeGo(): called with arg = %d\n", in)
        return in + 1
}

func main() {
        fmt.Printf("Go.main(): calling C function with callback to us\n")
        C.some_c_func((C.callback_fcn)(unsafe.Pointer(C.callOnMeGo_cgo)))
}

大家可以尝试在import “C”上边插入空行。你就发现会不能编译了。真是不太明白golang为什么搞怎么严格的格式检查。真的服了它了。多一个空行而已。

还有一个问题是,目前我使用cgo与ffmpeg的库进行编译,经常出现编译问题。但是重新编译多一次就成功了。也搞不懂什么原因。

分类: IT, 编程 标签: , , ,

澳洲之行-墨尔本、塔岛自驾游路线记录及租车感受

2014年11月25日 1 条评论

这次澳洲的旅游时间是2013年10月份。

今次有两程是租车的。大洋路3天,塔岛4天。选择租车公司是avis和herz。选择原因主要都是价格与之前的网友的评价服务。大家可以上http://www.vroomvroomvroom.com.au/ 这个网站进行价格对比,搜索出来的价格除保险以外的全包价格。大家对比价格的时候需要对比车价,还要对比保险价格和保险条款。好像avis没有全保,有330元的起付线,hertz有保险有全保。还有vroom显示的保险价格不太正确。大家最好去各自的官网看看,不过也是差几元钱,

还有vroom的搜索的时候需要输入live in(居住地),有些网友说选择澳洲就会便宜点。我发觉并不是绝对的。这次我的情况是这样的。
在墨尔本租车去大洋路的时候。
hertz

live in选择澳洲的时候,比选择中国是便宜的,3天的价格便宜成30-40元(同一车型同一时间duang),

Avis 就相反的。
live in 选择中国的时候巨便宜,选择澳洲反而贵。
不过在塔岛租车的时候又相反了。

hertz live in 选择中国是比选择澳洲便宜。
Avis live in 选择澳洲比选择中国便宜。

所有本人在墨尔本选择了avis,塔岛选择了hertz。有人可能说,live in选项那个便宜就选哪个,不过我担心提车的时候别人不给你提。我发觉avis的官网做booking的时候同样有live in的项目选择的。而且在官方的确认单那里也会标明你的live in是那里。hertz的官网做booking是没有live in选项的,确认单也没有标明你的live in的。hertz的如何区分呢,你可以选择hertz不同地区的网站进行搜索就会发现搜索出来的价格是不一样的。我觉得大家还是老老实实填写这个选项吧,做个诚实的孩子。另外这些价格的差异我估计不是一成不变的,有可能根据不同地区有不同的推广,而做成的差异。

另外一点需要提醒大家,大家选择车型的时候不要看官方的图片,十有八九是不对的。我租了两程车的车型都和我选择的不对的。只有size的大小是对的。而且我发觉租车公司车型非常繁杂,也没有说那个租车公司主要用那个品牌的车比较多。租车公司的停车场停着当地主流的几个品牌的车都有。所有不要参考租车公司的车辆图片。
讲讲两间租车公司的租车感受:

阅读全文…

分类: 旅游 标签: , ,

迁移Blog到DigitalOcean的VPS

2014年7月22日 没有评论

终于把blog迁移到DigitalOcean VPS了。离开了使用了6年的hostmonster。离开的原因主要有两个:

1、hostmonster的虚拟主机服务太贵了,最然你在主页看到它的价钱好吸引,当时当你续费的的时候什么优惠都没有了。我2008年注册第一年使用的时候费用是101.4美金左右,包括一个独立的ip,送一个域名。之后就是每年137.40美元。最气的是旧年开始又升价了。涨到159.84。其实我旧年就想转到VPS了,因为这个价钱直逼VPS。不过去年我对DigitalOcean不太了解,只了解Linode,当时Linode最低只有20元美元/月。加上上年续费的时候没有空搞迁移。当时就想下年一定要迁移。所以今年就提早就准备了迁移。这次选择了DigitalOcean,原因其实好简单,最低资费是5美元/月。我想这个配置足够我用了,就是想升级也比较简单。而Linode最低也只有10美元/月。DigitalOcean的口碑也非常不错。

2、VPS的可玩性比起虚拟主机大好多。虽然国外的虚拟主机服务还不错,有SSH登陆等。不过还是不如VPS的自我控制性那么好。自己想怎样就怎样。不过所有东西都需要自己设置安装。不过DigitalOcean 都提供不少的教程帮助。

现在把迁移工作大概写下来,看看对其他朋友看看是否有帮助。

1、在DigitalOcean注册账号,并新建立一个Droplets,你可以选择你需要的机器配置,我目前选择了最低的配置,机房位置我选择了San Francisco 1.(听讲这个机房的速度在国内访问都不错)。系统我就选择了Ubuntu的14.04裸系统。其实你可以选择一些安装好应用的系统。不过我还是选择自己安装。

2、对服务器进行安全配置,不用担心DigitalOcean有教程给你,你按照他的步骤就可以了。

a)初始化你的服务器,包括添加账号,更改ssh端口等。Initial Server Setup with Ubuntu 14.04

b)安装failbban软件,防止ssh被暴力破解。   How To Protect SSH with fail2ban on Ubuntu 12.04 

c)安装LEMP环境,即安装Nginx,MySql,PHP  How To Install Linux, nginx, MySQL, PHP (LEMP) stack on Ubuntu 14.04

d)安装phpMyAdmin。 How To Install phpMyAdmin on a LEMP server

e)安装wordpress。 How To Install WordPress with nginx on Ubuntu 12.04 (其实我并没有安装这里的步骤来安装wordpress,因为我是迁移旧的。)其实迁移也好简单。把原有的wordpress目录直接通过scp拷贝到新的机器。并把旧的数据库导出到文件。然后在新这边的数据库进行导入就可以了。

3、就是域名的迁移与DNS配置了。域名我也迁移了,因为hostmonster不是专业的域名管理公司,而且收费也比较贵。不过DigitalOcean并没有提供域名托管,不过有免费的DNS服务。我这次选择了namecheap的服务。其实域名服务商大家的费用都差不了多少,就是睇网站的服务。这个也没有太多去考虑,都不知道什么原因选择了namecheap的服务。可能他的网站做得漂亮一点。不过登陆后内部设置的网页也是丑到不得了。反正这个一年也操作不了几次。

域名迁移工作都是全自动的,只要你提供一下域名,和那个什么转移code。就可以了,操作不是很人性化,小小反人类,。不过会发一份邮件到你注册域名的邮箱,你需要在邮箱点击确认连接。转移都要预计1-3天的时间。我实际用了1天的时间。

迁移完域名后,就更改DNS服务商。namecheap提供免费的DNS服务。这些安步骤操作就可以了。没有难度的。另外DigitalOcean也提供DNS服务。

 

另外大家可以通过这个连接进行注册DigitalOcean注册可以有$10优惠,需要充值后才有哦。不是注册就有。DigitalOcean的营销比较病毒式。不过大家都好。

分类: IT 标签:

铁三角ATH-ANC33iS主动降噪耳机试用感受

2014年5月26日 没有评论

找两个月进购了铁三角ATH-ANC33iS主动降噪耳机。这里首先讲一下为什么要买这个耳机和未什么选择这个型号。

首先,目前公司离开我家挺远的,哎,渴望远程办公,拥抱remote。不过目前现实是找不到这类靠谱的公司。所以。。。每天在路上的时间非常多,特别在地铁内。为了利用这些时间听听英文和一些无聊的Podcasts。因为地铁的噪音令到我听清楚这些东西感觉比较困难,需要把耳机调到比较大声,但是如果调得大声,耳朵有受不了。

所以搜索了一下主动降噪耳机。发现都不少厂家都有出品这些产品,价格由200左右到2000左右的都有,入耳式,头戴式都有。主动降噪耳机的一哥是Bose。这么高大上的产品,我只能看着价钱而轻叹。

我把价格范围定在1000远以下。最后锁定这个铁三角ATH-ANC33iS。选择原因。

1、入耳式,符合这个要求的十分多。不选择头戴式的主要原因是考虑到夏天用的时候会比较热。

2、价格比较合适,4XX元人民币的价格,可以接受。

3、可以配合iphone接电话。这个比较重点啊。目前主动降噪的耳机可以接电话的好像就得它(有线),如果是蓝牙的会有sony的 MDR-EX31BN、MDR-NWBT20N。铁三角也有蓝牙型号ATH-BT04NC,不过我都是刚刚才知道,淘宝上只有水货。

4、不选择蓝牙原因,有几点是怕蓝牙连接不稳定,加上蓝牙电力不知道如何,天天充电很麻烦,最怕想听的时候没有电就没法用了。其实本人比较喜欢无线的。又怕蓝牙的音质太差了,虽然我的需求对音质要求不高。另外价钱也是一个原因。
ATH-ANC33iS耳机外包装

阅读全文…

分类: 生活 标签:

Macbook pro 313更换SSD,吐槽Time Machine。

2014年5月26日 没有评论

更换SSD工作在大半年前已经完成。在更换SSD之前做了一个测试,结果惊人的低,我平时用机的确感到比较慢,比起新安装系统的时候慢,虽然别人都说Mac机不用整理磁盘的。而且磁盘速度也是不会约用约慢的。不过结果告诉我们事实是相反的。后来上网搜索了一下,速度不降低是有条件的。

DiskSpeedTest

阅读全文…

分类: IT, 生活 标签:

在redhat6上安装gitlab

2014年3月12日 没有评论

由于公司需要搭建一个代码服务器,我当然选择了Git啦,不过如果只是安装Git的话,缺少了web界面去管理这个Git代码库,所以选择了Gitlab。不过Gitlab的官方安装指引只有ubuntu。我在ubuntu安装的时候没有遇到任何问题。不过在redhat6上安装就遇到较多的问题。所以在此记录一下,方便后人。讲真,为了安装这个代码服务器前前后后折腾了差不多成个星期,从成本效益来说,还不如去使用第三方的服务,例如,githut、bitbucket,或者国内的一些类似的服务商。还免维护。不过老板最终决定自己搭建。老细永远是对的。那就只能做。

由于文章我从markdown编辑器Mou copy过来的,可能在wordpress排版有点问题,大家将就看吧。

在github上找到一篇装教程 https://github.com/gitlabhq/gitlab-recipes/tree/master/install/centos

在安装前先看看注意事项。

阅读全文…

分类: IT, 编程 标签: , ,