1月 15

raspberry pi 源码安装 golang1.5

  从golang.org下载go1.4.3和go1.5.3。解压到/usr/local/目录中。go1.4.3目录为go1.4,go1.5.3目录为go1.5。

sudo su #到管理员权限

apt-get install -y mercurial bison gcc gccgo libc6-dev ed gawk make git #安装需要的库

以下为在管理员权限下,使用的命令记录。
export GOARM=5
export GOROOT=/usr/local/go1.4
export GOARCH=arm
export GOOS=linux
export PATH=$PATH:$GOROOT/bin/

cd /usr/local/go1.4/src/
time ./all.bash

mkdir -p /usr/local/go1.5/bin
cd /usr/local/
ln -s /usr/local/go1.4 /usr/local/go-bootstrap
export GOROOT_BOOTSTRAP=/usr/local/go-bootstrap
export GOROOT=/usr/local/go1.5
export PATH=$PATH:$GOROOT/bin/
cd /usr/local/go1.5/src
time ./all.bash

如果没有报错则编译完成。我的记录
go1.4.3编译时间为54分钟 go1.5编译时间160分钟

/etc/profile增加如下内容
export GOARM=5
export GOROOT=/usr/local/go1.5
export GOPATH=/usr/local/go1.5/pkg
export GOARCH=arm
export GOOS=linux
export PATH=$PATH:$GOROOT/bin/

配置生效
source /etc/profile

在系统中可以使用go version看看版本的正确性

1月 12

iPhone 手机控制linux服务器程序源码

  将远程连接SSH和数据库MySQL开放到外网很危险。
即使密码和KEY管理后都很安全了,但是还会有不少的扫描程序来扫描浪费资源。
但是我没有机器做跳板机或代理,也没有多余的IP和资源做VPN。
所以直接用防火墙把相应服务的端口对外网服务屏蔽,然后用个隐蔽的端口做中转。
中转服务需要就开放,不需要就关闭。这个服务当然也可以不用haproxy,直接关闭或打开防火墙。
也可以用这个服务管理其它的服务器上其它程序的启停。开始着手处理。

  服务端为Linux服务器(centos7),python2.7+tornado开发。客户端用swift2开发跑在iphone6上。

haprox安装后,跳转主要配置部分。
frontend ssh
bind x.x.x.x:20000
default_backend nat_ssh

backend nat_ssh
mode tcp
option tcpka
balance roundrobin
option httpchk
server ssh 192.168.1.222:22

服务端代码需要注意的部分:
服务端存放在/program/www/mydoor下。
文件myDoorServer.py的类MyDoorHandler中使用os.popen调用系统命令,绝对路径需要确认。Listen端口自行修改。
如:
line = “cd /program/www/mydoor;/usr/bin/python mydoor.py %s %s &” % (_se, _au)

文件mydoor.py中的kk为验证使用,自行修改,但是需要与swift中的kk值对应。执行命令的绝对路径需要根据系统确认。
要管理服务的命令,修改后就可以管理不同的应用。
使用“python myDoorServer.py &”启动服务。

客户端比较简单,修改kk值后,直接编译到手机上。需要的第三方的库,Alamofire和Crypto。
启动程序,输入开放时间,点击“敲”。实验成功。
mydoor20160107

服务端源码
iPhone客户端源码

1月 06

swift2 异常处理

enum Error : ErrorType {
    case DivisionError
}
func divide(a: Int, b: Int) throws -> Int {
    if b == 0 {
        //使用throws来指定方法来抛出一个错误
	throw Error.DivisionError
    }
    return a/b
}

do {
    let result = try 
    //运行相应的代码
    divide(a: Int, b: Int)
} catch let Error. DivisionError {
    print("error")
}

转载收藏地址
http://appventure.me/2015/06/19/swift-try-catch-asynchronous-closures/