2014年3月2日日曜日

(調査中)iPhoneを活用して習慣を身につける

iPhoneを活用して習慣を身につける方法を調査してます。

また色々調べたり、アプリをダウンロードしたりと調査途中なので、まとめきれたら記事にします。


てか、どこのブログに書いてる習慣化したいことってこんなもんだらけなんですが…

  • ジョギングする(ジムに行く)
  • ブログを書く
  • 読書
  • RSSフィードを読む

ブログ書くような人って似たような人だらけですね(自分もですが

2014年3月1日土曜日

Linux環境で室温を定期的にツイートする

以前、USB温度計を使ってMRTGに表示する設定をしました。
MRTGの画面を見れば、家の外にいても室内の気温が見れるけど…ずっとHTTPのポート開放しておくのもメンドクサイし…

せっかくなので気温を定期的にtweetしてみる。
つぶやくためのTwitter側の設定と、つぶやく用の環境の設定がそれぞれ必要。

twitterのアカウントの準備

当たり前ですがtwitterのアカウントを準備する。

そして、外部APIからつぶやけるように、アカウントの設定を行う。
1. Twitter Appsにアクセスして、Twitterのアカウントでログイン。
2. 『Create an application』画面で各項目を入力し、アプリケーションを作成する。

アプリケーション名: 任意の名称
アプリケーションの説明: 説明を10文字以上
アプリケーションのウェブサイトURL: 自分のTwitterのURLなど
アプリケーションの種類: クライアントアプリケーションを選択
標準のアクセスタイプ: Read & Writeを選択
Twitterでログインする: チェックをつける

3. 表示される「Consumer key」と「Consumer secret」をメモする。

tweetできる環境を構築

rubyでつぶやきます。
この辺を参考にしました。↓
http://ramtiga.hatenablog.jp/entry/20110409/p1

TwitterのOAuth登録として、以下を実行する。
このとき、表示されるOAuthの「token」と「token_secret」をメモする。

# gem install oauth get-twitter-oauth-token
# get-twitter-oauth-token
Consumer Key: *****
Consumer Secret: *****
...
...
...
Token: *****    # ←tokenとしてメモ
Secret: *****   # ←token_secretとしてメモ

これで環境でつぶやけるようになった。
あとはRubyでつぶやくようのソースコードを準備する。
それほど難しくないけど。
#!/usr/local/bin/ruby
require 'rubygems'
require 'twitter'

CONSUMER_KEY       = "*****"  # Twitter Appsでメモした「Consumer key」の値
CONSUMER_SECRET    = "*****"  # Twitter Appsでメモした「Consumer secret」の値
ACCESS_TOKEN        = "*****" # OAuth登録でメモした「token」の値
ACCESS_TOKEN_SECRET = "*****" # OAuth登録でメモした「token_secret」の値

Twitter.configure do |config|
  config.consumer_key       = CONSUMER_KEY
  config.consumer_secret    = CONSUMER_SECRET
  config.oauth_token        = ACCESS_TOKEN
  config.oauth_token_secret = ACCESS_TOKEN_SECRET
end

# temperコマンド実行
result = `temper`
temp = result.split(",")[1]

# 日時取得
time = Time.now.strftime("%Y-%m-%d %H:%M:%S")

MSG1 = "["
MSG2 = "] の気温 : "

MSG = MSG1 + time + MSG2 + temp

Twitter.update(MSG)

これでつぶやけるようになりました。

cronに登録

あとはこのスクリプトを定期的に実行されるように設定する。
Linux環境なのでcronに登録しました。

# cat /etc/cron.d/tweetTemper
1,21,41 * * * * root /usr/local/bin/tweetTemper.rb

毎時1,21,41分につぶやくように設定。(0,20,40にすると、MRTGのupdateと重複してしまうため、わざと)

2014年2月27日木曜日

自宅のデータ管理について考える

最近、自宅のPCの調子がよくないです。

家族が使っているのも含め、我が家には3台のPC(+iPad)があります。
  • MacBook Pro
  • VAIO
  • 自作PC(OSはWindows、VMでLinuxサーバを常時起動)

先日、自宅のブレーカーが落ちた影響で自作PCの電源が故障。起動できず。
MacBook Proもだいぶ年季が入ってきて、動作が重たい。
VAIOはめったに使っていないので、メインで使ってる2台が使えなくなって悩み中。

電源トラブルは電源を買い替えれば復旧できるけど、
データ消失のリスクやら、PCの有効活用やら考えて、
自宅のマシンを見直したい。

◆やりたいこと

まずは要件定義すると、こんな感じかな。
  1. メインで使うMac環境
    (開発系やらiTunes/iLifeとかで利用シーン多々あるため)
  2. 以下ができる常時起動のサーバ
    -Webサーバ
    -DLNAサーバ
    -ファイル共有サーバ
    -Macのバックアップサーバ
    (-メディアサーバ(iTunes/iPhotoのデータ保存先))
    (-マシン監視サーバ(MRTGとか))
  3. ゲームができるWindows環境

3は最悪なくても良いが、1,2はほしい。
ということで、これを満たすマシン構成を考える。

◆お金を気にせずプラン

  • MacBook Proを買い替え
  • Mac mini購入(Server+メモリ増設+CPU Up)
  • HDD2台購入してRAID化してMac miniに接続 or RAID対応のNASでも買ってくる
    →まぁ文句ありません、これだけ準備できれば。


◆現実プラン1

  • Mac mini購入(+自前でメモリ増設)
    →Mac miniを常時起動して、サーバとして利用。
    MacBook Proから画面共有すれば、十分スペックな開発マシンとして利用できるし。
    →ただデータ管理の問題は解決してない、外付けHDDをUDB接続でとりあえず管理。

◆現実プラン2

  • HDDを購入し、自前RAID化。
    →データ管理は問題ない。
    VMにHDDを接続して管理していく。
    →Macの使い勝手が改善されていないけど我慢...

って上まで書いてたら、新しいMacが欲しくなってきたw
ので、まずは以下プランで行こう。増税までにMac miniとHDDと増設用メモリも買おうw

◆マシン構成

  • Mac mini
    メイン環境。メモリ増設も追加で実施する。
  • Macbook Pro
    ブラウジングのみ。作業系はMiniにリモート接続して作業。
  • HDD(2TB * 2台をミラーリング)
    iTunesとかiPhotoデータをここにうつす。
  • 自作マシン(Linuxサーバは継続。おいおいMacに移行かな。)


◆以下、調査メモ

  • Mac miniのグラボはオンボードなので、ゲームは無理。交換もできないから、ゲームやるなら現在のマシンが必要。
  • 無線LANルータにHDDをUSB接続すれば、一応NASとして利用可能。ただ、フォーマットによっては認識有無があったので、仕様を確認しておくこと。

2014年2月22日土曜日

net useコマンドでファイルサーバに接続できなくなった

Windowsでネットワークドライブの追加を行うコマンドとして、net useコマンドがあります。
これで先日ハマったことを書き残しておく。

ネットワークドライブ接続をバッチ化しており、net useコマンドを利用していました。
バッチを書いておきこれをスタートアップに登録しておくことで、
マシン起動時にネットワークドライブを自動で接続するようにしていました。
例えば以下みたいな感じで。

> net use Z: \\hogehoge.com\hogehoge /user:USERNAME PASSWORD

最近ファイルサーバに接続できなくなる現象が発生し、原因を調査。
ファイルサーバにpingで確認したり、
他マシンから接続できることを確認したり、
ネットワークドライブを切断→再接続をしたり、
マシンを再起動したり、
...

通信/環境に問題なさそうだったので、
バッチのコマンドをよーく確認していると、
余計なスペースが入っていたことが判明。
↓例えばこんな感じ(サーバ名とユーザー名とパスワードの間に半角空白が2つ入っています)
>net use Z: \\hogehoge.com\hogehoge  /user:USERNAME  PASSWORD
これを直したあとにバッチを実行すると、なぜか接続できた。
まさか空白が多いと問題ある?とか思い、少し調べると、
以下の仕様が見つかりました。

接続時に認証情報を指定する際、パスワードが存在しないユーザー名を指定したい場合、パスワードを指定しない(=空白文字を指定)する

つまり、空白文字を余計に入れることで、パスワードが省略され、
なおかつ、PASSWORDって余計なオプションが付加されてコマンドが実行されたっぽい。

うーん、この仕様...

2013年6月25日火曜日

MRTGで「ERROR: I guess another mrtg is running.」のメッセージ

ちょっとトラブったときの対処をまとめる。

MRTGのWebページが表示されているが、データは更新されなくなった。
まずサーバにログインすると、mailがどんどん送られてた。
中身を確認すると、以下のメッセージが。

...
Tuesday, 25 June 2013 at 18:00: ERROR: I guess another mrtg is running. A lockfile (/var/lock/mrtg/mrtg_l) aged
300 seconds is hanging around. If you are sure that no other mrtg
is running you can remove the lockfile
...

lockfileが残っていたため、MRTGの起動に失敗していたらしい。
なので、/var/lock/mrtg/配下のファイルを全て削除してみたが、現象は解消しない。

気になったのでMRTGの状態を確認してみた。

# ps ax | grep mrtg
 3547 ?        Ss     0:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l -
 3550 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3551 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3733 ?        Ss     0:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l -
 3736 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
 3737 ?        S      0:00 /bin/sh /etc/mrtg/temper_mrtg.sh
...

mrtgはcrontabで定義されていたため、10分毎にコマンドが実行されており、実行されたプロセスが消えずにどんどん残っていったらしい。
なんでプロセスが残ってるのか分からず、crontabに定義されてたプロセスを実行したら…確かに無応答になった。

中の処理を確認したら、前に組み込んだ温度測定のコマンド[/usr/local/bin/temper]が無応答になってたことが判明!
よくよく見てみると…USB温度計が接続されてなかった。
接続されていないとコマンドが無応答になるらしい。

マシンを再起動して接続したら、ちゃんと動くようになりました。
もちろん、MRTGも正しく更新されるようになりました。
よかった、よかった。