博客改版
10 Jan 2016最近把博客从 textile 改成了 markdown 格式了,算是一次小改动,代码高亮使用了 highlightjs 这个插件,方便很多。
以后会保持每周更新的习惯,前段时间把记录都乱记的,有时候想找还忘记在哪里记了,博客的好处就是可以很方便地找出来。
最近把博客从 textile 改成了 markdown 格式了,算是一次小改动,代码高亮使用了 highlightjs 这个插件,方便很多。
以后会保持每周更新的习惯,前段时间把记录都乱记的,有时候想找还忘记在哪里记了,博客的好处就是可以很方便地找出来。
很早之前已经听说了一种运行在jvm上的类似swift的语言,kotlin。
最近在接Android第三方平台的时候,就试用了一下,后来一发不可收拾。
首先Kotlin是由JetBrains公司开发,并且Android Studio也是基于JetBrains公司的IDEA,所以kotlin支持是属于官方支持级别的,IDE特别友好。
提供的gradle插件也很好用,官方也有一篇开发Android的教程,https://kotlinlang.org/docs/tutorials/kotlin-android.html。
可以与Java很好地进行混合编程,无痛使用现有的jar库。
首先给Android Studio安装Kotlin插件。通过插件管理界面即可安装。
也可以在线体验,http://try.kotlinlang.org/
创建Kotlin工程,hello。
fun main(args: Array<String>) {
println("Hello")
}
https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/kotlin/util/Standard.kt
标准库提供了几个非常好用的方法
开发过程中,对于Bean的属性赋值过程如果属性特别多的时候,代码会很长并不是很优雅
class Bean {
private String a;
// ...
private String z;
public void setA(String a) {
this.a = a;
}
// ...
public void setZ(String z) {
this.z = z;
}
}
val b = "b"
val bean = Bean().apply {
a = "a"
this.b = b // 使用this
// ...
z = "z"
}
通过使用 apply
可以使代码变成这样,看起来感觉更舒服。
由于工作开发过程中使用了Git,Jenkins,Wiki,还有各种web服务,用端口访问的方式太不友好了,所以就利用现有的一台Mac Mini服务器搭了一个域名服务器 miniserver.io
。
$ brew install bind
$ vim /usr/local/etc/named.conf
...
zone "miniserver.io" IN {
type master;
file "miniserver.io.zone";
allow-update { none; };
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "miniserver.io.local";
allow-update { none; };
};
...
$ cd /usr/local/var/named
$ cat << 'EOF' > miniserver.io.zone
$TTL 604800
@ IN SOA ns.miniserver.io. root.miniserver.io. (
1 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
;
miniserver.io. IN NS ns.miniserver.io.
miniserver.io. IN A 192.168.10.100
ns IN A 192.168.10.100
www IN CNAME miniserver.io.
EOF
$ cat << 'EOF' > miniserver.io.local
$TTL 604800
@ IN SOA ns.miniserver.io. root.miniserver.io. (
1 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
;
IN NS ns.
1 IN PTR ns.miniserver.io.
EOF
$ sudo named -f -c /usr/local/etc/named.conf
很早之前买了台HP Gen8小型服务器,装了ESXi6.0,发现竟然没有Mac下管理前端,只有Windows的前端,甚是不便。
虽然有VMware VCSA (vCenter Server appliance) ,但服务器只有10G内存(2G+8G),内存耗不起。
启用ESXi的SSH管理,可以通过CMD来管理,只需要熟悉几个工具即可。
在ESXi中布署docker
通过docker-machine可以很方便地在ESXi中安装docker并在本地管理
# 安装docker与docker-machine
$ brew update
$ brew cask install docker-machine
# https://github.com/docker/machine/issues/2279
$ cd .docker/machine
$ wget https://github.com/boot2docker/boot2docker/releases/download/v1.9.1/boot2docker.iso
# vmwarevsphere驱动依赖govc
$ go get github.com/vmware/govmomi/govc
$ PATH=$PATH:$GOPATH/bin
$ docker-machine create \
--driver vmwarevsphere \
--vmwarevsphere-vcenter 192.168.10.209 \
--vmwarevsphere-username root \
--vmwarevsphere-password ****** \
--vmwarevsphere-network 'VM Network' \
--vmwarevsphere-datastore 'datastore1' \
--vmwarevsphere-datacenter ha-datacenter \
esxi-host
参考:http://qiita.com/ysaotome/items/06f9bdc762a68731f21b
$ export GOVC_URL="https://root:******@192.168.10.209/sdk"
$ govc about
$ eval "$(docker-machine env exsi-host)"
$ docker run swarm create # 15c93e5e1662fdddfa8ab13bf1daf0a0
$ docker-machine create \
--driver vmwarevsphere \
--vmwarevsphere-vcenter 192.168.10.209 \
--vmwarevsphere-username root \
--vmwarevsphere-password **** \
--vmwarevsphere-network 'VM Network' \
--vmwarevsphere-datastore 'datastore1' \
--vmwarevsphere-datacenter ha-datacenter \
--swarm \
--swarm-master \
--swarm-discovery token://15c93e5e1662fdddfa8ab13bf1daf0a0 \
swarm-master
$ docker-machine create \
--driver vmwarevsphere \
--vmwarevsphere-vcenter 192.168.10.209 \
--vmwarevsphere-username root \
--vmwarevsphere-password **** \
--vmwarevsphere-network 'VM Network' \
--vmwarevsphere-datastore 'datastore1' \
--vmwarevsphere-datacenter ha-datacenter \
--swarm \
--swarm-discovery token://15c93e5e1662fdddfa8ab13bf1daf0a0 \
swarm-agent-01
$ docker-machine create \
--driver vmwarevsphere \
--vmwarevsphere-vcenter 192.168.10.209 \
--vmwarevsphere-username root \
--vmwarevsphere-password **** \
--vmwarevsphere-network 'VM Network' \
--vmwarevsphere-datastore 'datastore1' \
--vmwarevsphere-datacenter ha-datacenter \
--swarm \
--swarm-discovery token://15c93e5e1662fdddfa8ab13bf1daf0a0 \
swarm-agent-02
$ eval "$(docker-machine env --swarm swarm-master)"
$ docker info
$ docker ps -a
手上的 Raspberry Pi Mobdel B+ 吃灰一年了,最近也在玩 Docker,也看到这 hypriot 这个项目,感觉太棒了,平时也只玩单机的 Docker ,现在可以组一个 Swarm 玩玩。
$ brew cask install docker
$ brew install pv axel
$ wget https://raw.githubusercontent.com/hypriot/flash/master/`uname -s`/flash
$ chmod +x flash
$ axel -n 10 http://downloads.hypriot.com/hypriot-rpi-20151115-132854.img.zip
$ ./flash --hostname pi hypriot-rpi-20151115-132854.img.zip
$ curl -o docker-machine http://downloads.hypriot.com/docker-machine_0.4.1-dev_darwin-amd64
$ chmod +x ./docker-machine
$ ./docker-machine create --driver hypriot --hypriot-ip-address=<raspberry-pi-ip> pi
$ eval "$(./docker-machine env pi)"
$ docker info
http://blog.hypriot.com/post/let-docker-swarm-all-over-your-raspberry-pi-cluster/
$ docker volume create --name web
# 查看web卷真实路径
$ docker volume inspect --format '{ { .Mountpoint } }' web
# 同步本地文件至web卷
$ docker-machine scp -r files/ pi:`docker volume inspect --format '{ { .Mountpoint } }' web`/
# 使用卷
$ docker run --rm -v web:/web ubuntu ls /web
需要注意,如果使用
--rm
的方式运行引用该卷,退出后会删除该卷!!