2015/08/23

コンタクトレンズをインターネットで買ってみた

サッカーするときに使ってるワンデイのソフトコンタクトレンズが切れそうだっだので, ネットで注文することに. 今回は,以前Yさんに教えてもらった LENSBEST で.

レンズの種類はいろいろあるけど,日本でも見たことある 1-Day Acuvue で. 届いたパッケージに日本語の注意書きもあったので,多分日本にも輸出されている ものと同じものかと. BC と パワーは,以前のものと似たようなパラメータで.

注文したのが木曜日の夜で,届いたのが土曜日.なかなかスピーディー. 出荷のメールとかも来たので,なかなかいい感じでした.

次回もまたここにしようかな.

2015/06/28

Raspberry pi をメディアおよびバックアップファイルサーバ的に使う

Raspberry pi

Rspberry pi にUSBハードディスクを接続して,Mac の time machine のディスクと したり,Linux マシンのバックアップディスクとしたり,UPNP メディアサーバとしたり する計画.

Insttall

本体のインストール.今回はRASPBIANで.

  1. micro SD にコピーするイメージを https://www.raspberrypi.org/downloads/ から ダウンロード.
  2. ダウンロードしたイメージファイルを解凍して,micro SD にコピー. https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
  3. micro SD カードをスロットに挿して起動.イーサネットケーブルを接続.IP アドレスがDHCPによって設定されるはずなので,(当てずっぽうに)ssh で接続.
  4. Raspberry pi の設定.raspi-config
  5. デフォルトエディタの設定.sudo update-alternatives --config editor
  6. Firmware のアップデート.再起動 sudo rpi-update
  7. sudo apt-get update; sudo apt-get upgrade 必要なら再起動.
  8. ユーザの設定. uid と gid もなんかうまくやっておくと,あとでNFSを使うときに便利かも.

HDD の接続と設定

USB HDDを接続して,mount する設定.

まず,ディスクの UUID を調べる.

$ sudo lsblk
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat" 
/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4" 
/dev/sda1: LABEL="time_machine" UUID="b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6" TYPE="ext4" 
/dev/sda2: LABEL="backup" UUID="eae3badb-d4f3-4fd7-922a-0e1d437f8006" TYPE="ext4" 
/dev/sdb1: LABEL="MEDIA" UUID="AFB6-9DF4" TYPE="vfat" 

マウントポイントを作成して,/etc/fstab の編集.

UID=AFB6-9DF4  /mnt/media vfat codepage=932,iocharset=utf8,uid=1000,gid=1000 0 0
UUID=b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6 /backup/time_machine ext4 defaults 0 0
UUID=eae3badb-d4f3-4fd7-922a-0e1d437f8006 /backup/linux ext4 defaults 0 0

netatalk

Mac OS から接続したり,Time Machine ディスクとして使うための設定.

sudo apt-get install netatalk

/etc/netatalk/AppleVolumes.default を編集.

/mnt/time_machine "Time machine" options:tm allow:tanahiro
/mnt/media "media"

NFS

Linux からディスクをマウントするため.

サーバ

Rasbperry pi にNFSサーバをインストール.

sudo apt-get install nfs-common nfs-kernel-server

/etc/exports を編集.

/backup/linux linux(rw,sync,no_sbtree_check)

ブート時にサービスを起動させる.

sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
sudo update-rc.d nfs-kernel-server enable

クライアント

サービスのインストール.

sudo apt-get install nfs-common

/etc/fstab の編集.

raspi:/backup /backup nfs defaults 0 0

参考

MiniDLNA (UPNP/DLNA)

サービスのインストール.

sudo apt-get install minidlna

コンフィグレーションファイル, /etc/minidlna.conf の編集.

media_dir=V,/mnt/media

コンフィグレーションファイルのリロード.

sudo service minidlna force-reload

参考

HDD の回転数

ついでに,HDD が使われていない時に回転を止めるようなスクリプト.

sdparm

ツールのインストール.

sudo apt-get install sdparm

スクリプト

INTERVAL 秒ことにディスクの状態をチェックして,もし変化がなければ spindown.

#!/bin/sh

if [ $# -lt 2 ]; then
  echo "usage: usbhdd_spindown.sh [UUID] [INTERVAL]"
  exit 0
fi

disk=`findfs UUID="$1"`
if [ -z $disk ]; then
  echo "could not find UUID $1"
  exit 0
fi
disk=`echo "$disk" | sed -e "s@/dev/@@"`

interval=$2

state=`grep " $disk " /proc/diskstats`
count=$interval
sleep_time=20
up=1

while [ true ]; do
  sleep $sleep_time
  count=$(($count - $sleep_time))
  newstate=`grep " $disk " /proc/diskstats`

  if [ "$state" = "$newstate" ]; then
    if [ $count -lt 0 ]; then
      count=$interval

      if [ $up -gt 0 ]; then
        sync
        state=`grep " $disk " /proc/diskstats`
        sdparm --readonly --command=stop /dev/$disk > /dev/null 2>&1
        up=$?
      fi
    fi
  else
    count=$interval
    state="$newstate"
    up=1
  fi
done

/etc/inittab に起動時に実行するように記述.

# spindown usb hdd
USR0:2:once:/usr/local/bin/usbhdd_spindown.sh AFB6-9DF4 120

参考1 参考2

2015/02/15

Cygwin の再インストール

最近の Cygwin はSetup.exe のバージョンが上がるとなんかいろいろ壊れる(気がする)ので,とりあえず簡単にパッケージを再インストールする方法.

パッケージリストの作成

Cygwin 上ででインストールされているパッケージのリストを作る.
cygcheck -c -d | sed -e "1,2d" -e 's/ .*$//' > packagelist

Cygwin とパッケージの再インストール

setup(-x86_64).exe に -P オプションでパッケージのリストを渡す. 以下は,rubyのスクリプト.

unless ARGV.size == 2
  puts "usage: #{File.basename($0)}  "
end

setupexe = ARGV[0]
pkglist  = ARGV[1]

packages = File.open(pkglist).read.split.join(',')

system("#{setupexe} -P #{packages}")
これで,インストーラが,パッケージが選択された状態で起動するので,そのままインストール.

参考