Acer Chromebook 11 CB3-111

f:id:superbrothers:20150515214052j:plain

以前から欲しいなあと思っていた Chromebook を購入した。本当は New Dell Chromebook 11 が欲しかったんだけど、日本だとまだ扱ってなかったので CB3-111 の並行輸入品にした。日本でも US 配列を扱って欲しいものだ。

f:id:superbrothers:20150515214107j:plain

キーボード配列は特に変なところはなくキーピッチも十分あるので特に不満はない。作り自体は値段相応なところ。

デベロッパーモードを有効にした程度でまだ整っていないが、ある程度開発ができるところまでを目指したい。Chromebrew と Linuxbrew を使っていこうと思っていたがシェルで日本語が入力できない。dnschneid/crouton を使うと ChromeOS 上で Ubuntu / Debian をインストールできるようなのでこちらを使うことになるだろう。日本語にこだわりがなければ Chromebrew / Linuxbrew で十分開発できるところまで持っていける気がする。

このサイズのラップトップは Eee PC 701 以来なので触っていて非常に楽しい。当分は楽しめそうだ。

コクヨのイスを中古で購入した

2年前引っ越したときに7年程度使ったイスを捨ててから、これまでイスなしでやったきたけど、少しだるいとすぐベッドでごろごろしてしまうしいいことなかったので、中古で \22,680 で購入した。

f:id:superbrothers:20141109223306j:plain

前回のイスは背面がメッシュで数年使ったのちに伸びてしまって、しかも微妙に安いやつだったので交換することもできず失敗したので今回はメッシュではないものを選択した。思っていた以上に派手な色にビビってしまったが、質は良く満足している。これでごろごろする時間も減ることだろう。

ところでイスが戻ってきたので封印していた古めの iMacUbuntu でも入れて遊んでみ ようと思ったが、もろもろ使いにくい。Unity が使いにくいのか OSX に慣れきってしまったのか。しばらくは使ってみる予定だがすぐに挫けそうだ。

NodeJS と generator

Stream をやっとまともに触り始めたついでに generator も触ってみた。node は v0.11.13 です。

Generators - JavaScript | MDN

*a2z は a から z までを順に yield に指定しているので、g.next() を呼び出すたびに a からインクリメントされたアルファベットが返される。

function* a2z() {
    var c = 97;

    while (c <= 'z'.charCodeAt(0)) {
        yield String.fromCharCode(c++);
    }

    return;
}

var g = a2z();
process.stdout.write(g.next().value);
process.stdout.write(g.next().value);
process.stdout.write(g.next().value);

// node --harmony a2z.js
// abc

generator と同じく ES6 の for...of に generator を渡すと最後まで繰り返してくれる。

for...of - JavaScript | MDN

function* a2z() {
    var c = 97;

    while (c <= 'z'.charCodeAt(0)) {
        yield String.fromCharCode(c++);
    }

    return;
}

for (var a of a2z()) {
    process.stdout.write(g.next().value);
}

// node --harmony a2z.js
// abcdefghijklmnopqrstuvwxyz

最後に Stream の勉強も兼ねて stream-handbook のサンプルをジェネレータで書いてみた。100 ms ごとに a から z までが出力される。

function* a2z() {
    var c = 97;

    while (c <= 'z'.charCodeAt(0)) {
        yield String.fromCharCode(c++);
    }

    return;
}

var Readable = require('stream').Readable;
var rs = Readable();
var g = a2z();

rs._read = function () {
    var that = this;
    setTimeout(function () {
        that.push(g.next().value);
    }, 100);
};

rs.pipe(process.stdout);

// node --harmony a2z.js
// abcdefghijklmnopqrstuvwxyz

ちなみに generator の定義方法は function* generatorfunction *generator (アスタリクスの位置が違う)を見かけるが MDN では function* と記載されているのでここではそちらで統一している。

boot2docker の VM の設定を変更する

boot2docker(v1.0.0) の VM は再起動すると手動で設定した内容はクリアされてしまう。スクリプトを以下の場所に置いておくことでブートの最後に実行してくれる。

/var/lib/boot2docker/bootlocal.sh

今回はコンテナに割り当てられる IP を変更したかったので、docker0 を自前で事前に作成しておくようなスクリプトを置いておくことで解決できた。

sudo sh -c '
cat <<EOL > /var/lib/boot2docker/bootlocal.sh
ip link add docker0 type bridge
ip addr add 192.168.17.1/24 dev docker0
ip link set docker0 up
EOL
chmod +x /var/lib/boot2docker/bootlocal.sh
'

docker デーモン起動時に引数を設定したい場合は、/var/lib/boot2docker/profileEXTRA_ARGS="--dns 192.168.1.2" のように記述しておくと、init.d から起動する際に読み込んでくれる。このことは /etc/init.d/docker を読んで知ったのだけど、FAQ に書いてあったので先にドキュメントを読むようにしたい。

ファイルからパッケージを特定して、ソースコードをダウンロードする

dpkg, apt

$ which ifconfig
/sbin/ifconfig
$ dpkg -S /sbin/ifconfig
net-tools: /sbin/ifconfig
$ apache-cache show net-tools
bash: apache-cache: command not found
$ apt-cache show net-tools
Package: net-tools
Priority: important
Section: net
Installed-Size: 708
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: net-tools Team <pkg-net-tools-maintainers@lists.alioth.debian.org>
Architecture: amd64
Version: 1.60-25ubuntu2
Replaces: ja-trans (<= 0.8-2), netbase (<< 4.00)
Depends: libc6 (>= 2.14)
Conflicts: ja-trans (<= 0.8-2)
Filename: pool/main/n/net-tools/net-tools_1.60-25ubuntu2_amd64.deb
Size: 174516
MD5sum: 80d953d0950d32c66e7284ca68ed89ee
SHA1: 62ef3b9eb5114a87b1aa29062e57c544ef6df1fb
SHA256: ef921d19b77685cec007c146616056ee679d80ee4ef834b9e2da8c01fa139eef
Description: The NET-3 networking toolkit
Description-md5: 003fb6a11fdb767fff574478588a3ca8
Multi-Arch: foreign
Homepage: http://net-tools.berlios.de/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: minimal

$ dpkg -L net-tools | head
/.
/bin
/bin/netstat
/usr
/usr/share
/usr/share/doc
/usr/share/doc/net-tools
/usr/share/doc/net-tools/README.ipv6
/usr/share/doc/net-tools/README
/usr/share/doc/net-tools/TODO
$ sudo apt-get -qqy install dpkg-dev
$ apt-get source net-tools
Reading package lists... Done
Building dependency tree
Reading state information... Done
Skipping already downloaded file 'net-tools_1.60-25ubuntu2.dsc'
Skipping already downloaded file 'net-tools_1.60.orig.tar.gz'
Skipping already downloaded file 'net-tools_1.60-25ubuntu2.diff.gz'
Need to get 0 B of source archives.
gpgv: Signature made Sun Dec  8 23:53:48 2013 JST using DSA key ID 0F932C9C
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./net-tools_1.60-25ubuntu2.dsc
dpkg-source: info: extracting net-tools in net-tools-1.60
dpkg-source: info: unpacking net-tools_1.60.orig.tar.gz
dpkg-source: info: applying net-tools_1.60-25ubuntu2.diff.gz

rpm, yum

$ which ifconfig
/sbin/ifconfig
$ rpm -qf /sbin/ifconfig
net-tools-1.60-110.el6_2.x86_64
$ rpm -qi net-tools
Name        : net-tools                    Relocations: (not relocatable)
Version     : 1.60                              Vendor: CentOS
Release     : 110.el6_2                     Build Date: Thu May 10 09:17:33 2012
Install Date: Mon Jun  9 16:13:12 2014         Build Host: c6b5.bsys.dev.centos.org
Group       : System Environment/Base       Source RPM: net-tools-1.60-110.el6_2.src.rpm
Size        : 778085                           License: GPL+
Signature   : RSA/SHA1, Thu May 10 11:02:47 2012, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://net-tools.berlios.de/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.
$ rpm -ql net-tools | head
/bin/dnsdomainname
/bin/domainname
/bin/hostname
/bin/netstat
/bin/nisdomainname
/bin/ypdomainname
/etc/ethers
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
$ yum -y install yum-utils 2>&1 >/dev/null
$ yumdownloader net-tools --source
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
No source RPM found for net-tools-1.60-110.el6_2.x86_64
Nothing to download

CocoaPods のつかいかた

CocoaPods.org - The Dependency Manager for Objective C.

% gem install cocoapods --no-rdoc --no-ri
# % rbenv rehash
% pod --version
0.32.1

プロジェクトのディレクトリのルートに利用するライブラリを記述した Podfile を配置する。(ex. ~/Documents/Todo

# ~/Documents/Todo/Podfile
platform :ios, '7.0'

pod 'BlocksKit', '~> 2.2.2'

ライブラリのインストールを実行する。

% pod install
Analyzing dependencies
Downloading dependencies
Using BlocksKit (2.2.2)
Generating Pods project
Integrating client project

今後は生成された *.xcworkspace から開発を行う。

% open Todo.xcworkspace

生成された Pods ディレクトリは VCS に含めないように git の場合は、.gitignore に記述しておく。

# .gitignore
Pods/*

Ubuntu の backports リポジトリを使う

raring を使ってるけど、saucy のパッケージを利用したいときは backports リポジトリを登録することで利用できた。

% cat 'deb http://archive.ubuntu.com/ubuntu release-backports main universe' >> /etc/apt/sources.list

amd64 build : 1.2-8~ubuntu13.04.1 : “jq” package : Ubuntu をみても使い方がすぐわからなかったのわかるように書いといてほしいなあ。(常識なのかも