メモ書き

自分が後で見直すためにつけている作業のメモ書きです.それ以上の意味はありません

Macにコマンドラインツールをインストール

macOS Sierra のターミナルで makeを実行しようとしたら次のエラーに遭遇した.

$ make
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
続きを読む

QRコードに関する規格やら特許やら

QRコードについてよくわからないので少し調べた

続きを読む

同一ネットワークに存在するIPアドレスにpingして応答のあるアドレスを表示するBashスクリプトの例(Mac)

Bashの書き方をすぐ忘れてしまうため記録

続きを読む

MacでARPテーブルからEthernetインタフェースのベンダ名を表示するBashスクリプトの例

#!/usr/bin/env bash

OUIFILE="./oui.txt"

# ファイルの存在確認
if [ ! -f $OUIFILE ]; then
    echo "OUI file not found"
    exit 1
fi

# テンポラリファイルの作成
tmpfile=`mktemp -t tmp.XXXXXXXXX` || exit 1

arp -a | grep ethernet > $tmpfile 2> /dev/null                                                                                                                                                    

while read host address at hwaddress_raw on iface ifscope hwtype;
    do
    # MACアドレスが "-" で区切られた2桁の16進表示になるようにする
    hwaddress=$(for i in $(echo $hwaddress_raw | sed "s/:/ /g"); do echo 0x$i; done | xargs printf "%02x-%02x-%02x-%02x-%02x-%02x\n")
    # 先頭の3つの数値だけ取り出す
    vendor_c=$(echo $hwaddress | cut -d "-" -f 1-3)
    # ベンダー名を取り出す.表示に影響が出るためサブシェルの実行結果に含まれるキャリッジリターンを取り除く
    vendor_n=$(echo $(grep -i $vendor_c $OUIFILE | cut -f 3) | tr -d '\r')

    echo "$address $hwaddress ($vendor_n)"
done < $tmpfile

rm -r $tmpfile

exit 0

スクリプトの実行には Organizationally Unique Identifier と呼ばれる,組織固有に割り当てられた MAC アドレスの前半部分と組織名とを関連づけるデータのファイルが必要で,あらかじめダウンロードしておく(ダウンロードには少々時間がかかる)

$ wget http://standards.ieee.org/develop/regauth/oui/oui.txt

dockerコンテナ管理ツールについて

dockerのコンテナが増えてくると,それらの組み合わせを定義したり動作の制御を行う必要が出てくる.
関連するツールの名称を知る機会があったので少しだけ整理.

続きを読む

vagrant で Guest Additions のアップデート用プラグイン

Box にインストールされている VirtualBox の Guest Additions が手元のマシンの Virtual Box より古い場合に警告が表示されるため,適切に更新する必要がある

備忘録として手順のみ

$ vagrant plugin install vagrant-vbguest
$ vagrant vbguest

プラグインの詳細はこちら
github.com

vagrant で ubuntu/trusty64 のVMを作って docker.io パッケージを入れるスクリプトの例

#!/usr/bin/env bash
mkdir trusty64; cd trusty64
vagrant init ubuntu/trusty64
vagrant up
cat << EOS > bootstrap.sh
#!/usr/bin/env bash
apt-get update
apt-get install -y docker.io
EOS
chmod +x bootstrap.sh
sed -i -e 's/^end$/  config.vm.provision :shell, path: "bootstrap.sh"\nend/' Vagrantfile
vagrant reload --provision

vagrant について

Vagrantとは

  • 開発環境を構築するためのツール.
  • 仮想マシンイメージの作成を自動化できる.
続きを読む

awk で特定行の中の特定パターンを置き換える処理

たとえば Makefile にある LIBS 行の中で,特定のライブラリ名だけ置き換え変える.
それ以外の行はそのまま出力する.

#!/usr/bin/awk -f

$0~/LIBS/ {
	str = $0
	sub(/-lQt3Support/,"-lQt3SupportE",str)
	sub(/-lQtXml/,"-lQtXmlE",str)
	sub(/-lQtGui/,"-lQtGuiE",str)
	sub(/-lQtNetwork/,"-lQtNetworkE",str)
	sub(/-lQtCore/,"-lQtCoreE",str)
	print str
}

$0!~/LIBS/ {
	print $0
}

これを foo.awk とか適当なファイル名を付けて保存して,実行許可属性を付けると次のように実行できる.

./foo.awk input.txt > output.txt

高齢者向け機器のデザインに関する標準規格

雑多なメモ

続きを読む