Raspberry Pi 2 Model B でPythonを使ってLチカ

Raspberry Piを買ったのはかなり前だったりするんですが、放置してたのを動かしてみました。

とりあえずはLチカ

youtu.be

コード

main.py

from RPi import GPIO
import time


def main():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(12, GPIO.OUT)
    try:
        state = True
        while True:
            GPIO.output(12, state)
            time.sleep(1)
            state = not state
    finally:
        GPIO.cleanup()

if __name__ == '__main__':
    main()

実行

$ sudo python main.py

参考

Xubuntuを14.04から16.04にアップグレードした

2010年のMacBookAir(メモリ2GB)にXubuntuをインストールして使ってるのだけど、14.04LTSのデスクトップ版から16.04にアップグレードした。

$ sudo apt update
$ sudo do-release-upgrade -d

Firefoxを起動しててもメモリ使用量は1GB以内ぐらいで収まってるので、しばらくこれで様子を見ようと思う。

メモリを多く使う作業には使えないけど、ちょっとした文章書きやライブラリのメンテナンスぐらいなら事足りる。

f:id:nullpobug:20160622232326p:plain

オープンソースカンファレンス2016 HokkaidoというイベントでDjangoの紹介をしました

6/18に北海道のオープンソースカンファレンスDjangoの紹介をしてきました。 www.ospn.jp 説明が急ぎ足になったり、デモが中途半端に終わってしまって申し訳ない感じですが、聞きに来てくださった方はありがとうございました。

いくつか面白いセミナーもあったし、ビールとジンギスカン良かったので、また来年も参加できればいいなーと思います。

スライドとサンプルコード

www.slideshare.net github.com

はてなブログに移行しました

使い慣れた『はてなダイアリー』から、『はてなブログ』に移行した。

そろそろMarkdown記法に慣れといたほうがいいだろうなーと思ったりしてるけど、はてな記法やreSTに比べると貧弱だし、サイトやソフトウェア毎の方言が強くてつらみがある。

やっていく。

dockerとdocker-composeの使い方メモ

プライベートで使ってるVPSの環境をdocker-composeで動かしたのだけど、忘れてもいいようにメモを残す。
ホストOSは、Ubuntu16.04。

インストール

dockerは手順通りaptでインストールすればよい。
Installation on Ubuntu
docker-composeは、dockerとは別途インストールが必要(1ファイルのコマンドをダウンロードして配置するだけ)
Install Compose
dockerコマンドを実行するユーザーはdockerグループに属している必要があるので、インストール後にusermodで設定しておく(usermodで設定したグループは再ログインで反映される)

Dockerイメージの準備

DockerHubからpullしてくるか、Dockerfileを作成してビルド(docker build)する。
ビルドの際に、名前の指定をしとかないと、無名になりハッシュ値で指定することになる。
なるべくオフィシャルのイメージを使って、自前ビルドや野良ビルドのイメージは避けたほうがよさそう。メンテが面倒。
野良のイメージを使う場合は、セキュリティに注意する。バックドアが仕込まれたイメージなどもあるらしい。

コンテナの作成と起動

docker runコマンドで起動されるが、これはコンテナ作成+プロセス実行であって、実行が終わってもコンテナが消えないで残るので注意。
コンテナ一覧はdocker psで見れる。-aオプションを指定すると、実行中以外のコンテナも表示される。

docker ps -a

終了したプロセスの再実行はdocker startでできる。
runの際にポートマッピングやvolumeのマウントなど、全部指定する。コンテナ名をちゃんと指定したほうがよい。
「-d」 (detouch) オプションを指定しないとforegroundで実行される(systemdやsupervisorなどから監視させるならdetouchしなくていい)
docker-composeで管理するなら、docker-compose.ymlにrunのオプションを書いてしまう。

コンテナの停止

docker stopで停止できる。停止してもコンテナは消えないので、startで再度実行できる。

再起動

docker restartでプロセスを再起動できる。runで指定したオプションを変更するならコンテナの再生成が必要かも?
設定ファイルが入ったディレクトリをVOLUMEでマウントさせとけば、restartでプロセスに読み込ませるのも可能か。

プロセスの自動再起動

docker runで実行するときに --restart オプションでalwaysを指定しておくと、プロセスが死んでもdocker-engineが自動で再起動してくれる。
また、alwaysの場合は、OSを再起動したときも自動で起動される。
Docker run reference -- Restart policies (--restart)
例:

$ docker run -d -v /tmp/ftp/:/srv/soloftpd/ \
  -p 21:21 -p 50000-50009:50000-50009 \
  --env OPTIONS="--masquerade-address=192.168.0.2" \
  --name=soloftpd --restart=always tokibito/soloftpd

復数の依存するサービスを起動する

docker-composeを使って依存を記述すればいい。

docker-compose

docker-compose.ymlにdocker runのオプションなどを書いといて、複数のイメージをまとめてビルド、コンテナを作って実行するところまでやってくれるラッパーツール。

docker-compose up

でイメージをビルドしてコンテナを生成して起動までやってくれる。 -dオプションを指定すればバックグラウンドで実行できる。

docker-compose down

でコンテナを停止して破棄してくれる。

docker-composeの管理

docker-compose.ymlと各Dockerイメージの管理とかディレクトリ構成どうするか。
単一リポジトリで管理するのもありだけど、gitを使ってるなら、Dockerfileはそれぞれ別リポジトリに置いて、submoduleでdocker-compose用のリポジトリから参照すれば、個別に再利用しやすく、バージョン管理も楽そう。

通信料金の計算2016夏

前回の計算以降、プランの見直しや通信回線の解約、契約を行ったので、メモを残す。

現状の使い方

通信料金

  • au使用料(ガラケー): 1,334円/月
  • iijmio(ミニマムスタートプラン): 900円/月
  • 0 SIM: 0円/月

合計: 2,234円/月

感想

前回から5000円近く下がった。乗り換えに伴い、解約手数料や端末購入代金が発生したので、ペイするのは半年後ぐらいから。
ガラケーを辞めればもう少し下げれるけど、頑丈な通話用の端末をどうするかに悩む。
自宅のインターネット回線は、マンション一括契約のもので1,500円/月ぐらいなので、計算には入れてない。

pyftpdlibを使って1ユーザー専用のFTPサーバーを作った

pyftpdlibを使って、1ユーザー専用のFTPサーバーを作ってました。
でかいデータの受け渡しなんかに使ったりするのにFTPサーバーがやっぱり便利なんで。
ついでにDockerを試したりしてた。