2011/03/30

iTunesの"牛丼肉抜き"

(複数所有している)どのパソコンでもiPhoneは認識させたいけど、iTunesのデータは特定のマシンにしか入れていない方へ。
iTunesデータを持たせていないPCでiPhoneを充電したりすると、期待もしてないiTunesが上がってきたりしてジャマだったりしませんか?
人のiPhoneを挿したら同期が始まって慌てて止めてたりしませんか?

そんな時におススメなのが「iTunesの"牛丼肉抜き"」。
「ドライバやbonjourは入ってるけどiTunesは入ってない」状態を作ることで、iPhoneとして認識はするけどiTunesに反応しないPCにすることができます。
やりかたは簡単。
一度iTunesをインストールした後で、「iTunesだけをアンインストール」するんです。

iTunesをインストールすると、下記のものがまとめてインストールされます。
・Apple Application Support
・Apple Mobile Device Support
・Apple Software Update
・Bonjour
・iTunes
・QuickTime
なので、ここから「iTunes」だけをアンインストールすると、他のパッケージが残るというカラクリ。

Apple Mobile Device Supportは、iPhoneを使う時のWindows向けドライバを持っているので、本当に最小であればそれだけ残して後は削除、というのもありですが、自分のパソコンでは上記からiTunesを抜いただけになっています。

あ、共有パソコンだと肉抜きは難しいかもしれませんね。

2011/01/15

Intel Active Management Technologyを使ってみた

kvmの実験用に購入したIntelのDQ45CBですが、搭載されているQ45チップセットがvProに対応しています。このvProを使用することで、外出先からパソコンの電源制御やBIOS操作ができるとあるので、試してみることにしました。
今回試すのは、Intel Management Engineを設定し、外部から電源制御を行えるようにすることです。


では、まずハードウェア側の準備から始めましょう。やることは下記の3つです。
(1)Management Engineを有効にする(現在の設定が無効になっている場合)
(2)パスワードの設定
初期パスワードが設定されていますが、初期パスワードはみんな書くのを遠慮しているので、自分で調べるか知っている人(最終的にはIntelの人?)に聞いてみて下さい。ちなみに、今回は自分自身で調べてみました。調べると出てくるものです。また、パスワードの強度についてですが、(1)英字/数字/記号を含む、(2)8文字以上であること、が条件なので、忘れないようにしましょうね!
(3)ネットワーク設定
DHCPのままでも後で見つけられるのですが、安定的な管理のためには固定IPにした方が良いでしょう。あと、外部から接続するときのためにゲートウェイは忘れずに! LAN内からしか繋がないのなら、少し歩いて自分で電源ボタン押しにいけばいいでしょ(ぉ
(4)その他の設定
ある場合とない場合があるので、都度説明します。

では具体的な手順についてです。

F2を押してBIOSに入り、メニューから「Intel(R) ME」を選択しましょう。
設定画面に入るときにパスワードを設定します。
パスワードの設定が終わると、メニューに入れるようになります。

続いて、「Intel(R) Active Management Technology Configuration」のメニューからネットワークを設定します。
追加の設定ですが、プロビジョニングの設定を行いましょう。
同じ階層に「Provisioning Configuration」というメニューがあります。
「Enterprise」となっているところを、「Small-Medium Business」に変えておきます。
この状態でBIOSを保存しましょう。

ここまでできたら、ハードウェア側の準備は完了です。
あとのお楽しみのために、一度電源を落としておきましょう。

続いて、Intel AMT Developer Tool Kitを以下のURLからダウンロードします。

Download the latest version of Manageability Developer Tool Kit
http://software.intel.com/en-us/articles/download-the-latest-version-of-manageability-developer-tool-kit

ダウンロードしたMSIをインストールすると、下記の3つのプログラムが入ります。
・Manageability Commader Tool
・Manageability Connector Tool
・Manageability Outpost Tool
ここでは、このうち"Manageability Commader Tool"というプログラムを利用します。


で、起動したのがこの画面。


さっき登録したIPアドレスとパスワードを利用して、このツールに登録します。
IPアドレスをDHCPで取得させる場合は接続先IPが分からないので、DHCPのスコープを入力してStartを押しましょう。
たぶん出てきます(笑)


追加が完了したら、左ペインに現れたマシンをクリックすると、右ペインが「Connect & Control」というウィンドウに変わります。
さっそく接続してみましょう。Connectボタンを押してみます。


つながったよ兄さん!!


さっそくツリーの中を見てみます。資産情報からハードウェア情報までちゃんと見えてます。


さて、今回のお目当て、リモート制御機能です。
タブを「Remote Control」に切り替えます。


そこに現れた「Take Control」というボタンを押すと、Serial Over LANで画面制御ができるようになります。
画面を良くみると、「IDE Redirect」という項目が表示されており、その脇にイメージファイルが指定されていることから、
うまく使えばリモートでのインストールだってできそうですね。


とりあえず立ち上げてみましょう。
「Remote Command」のメニューから「Remote Reboot to BIOS Setup」を選んでみます。
なぜ普通に起動しないかって?そりゃ一番分かりやすいからですよ(笑)
右上に表示されていた状態がSoft off(S5)からFull Power(S0)に変わり、しばらく待つとちゃんとBIOSの画面になりました。
Serial over LANなので、画面レンダリングが昔のパソコン通信を見ているようです。

外出先から自宅にVPNが張れれば、あとはほぼ思いのままです。

2010/12/24

Thunderbirdがすごい。だけど.....

少し前にうちのメールをIMAP化し、昔使っていた別のメールクライアントのメールを取り込むべくインポートをやっていたわけなんですが、 Thunderbird、すごいですね。メールボックスをまたいでメッセージを移動できるし、移動元がPOPで移動先がIMAPだとアップロードまでしてくれます。これで、iPhoneからでも会社からでも自分の家でも全部同じメールが見られる~

と思っていたら、どうもメールの表示順序がおかしいのです。メールヘッダにあるタイムスタンプは確かに維持されているんだけど、表示順序が「Thunderbirdに取り込まれた順」になっている。昨日のメールよりも新しい位置にインポートしたメールがあるわけで、iPhoneで見るときに「最新の100通」を見るとインポートしたメールで埋まってる.....これでは使い物になりません。

で、調べてみると、IMAPサーバに保存されているメッセージのファイル名が「インポートしたときのUNIX秒」になっているっぽい.....これを直せばどうにかなるかな。

というわけで、こんなスクリプトを組みます。要は、各メッセージのファイル名に入っているUNIX秒を、Dateヘッダが示すUNIX秒に差し替えてリネームするわけです。


#!/bin/sh

cd ~
for dir in `find ~/Maildir -type d -name cur`; do
cd $dir
pwd
for file in `ls`; do
dater="`grep ^Date: $file | head -1 | sed -e 's/^Date://; s/ (JST)$//; s/Thr/Thu/'`"
dates=`date -d "$dater" +%s`
new=`echo $dates@$file | sed -e 's/@[1-9][0-9]*\././'`
echo -n "$file -> $new : "
if [ "$file" = "$new" ]; then
echo not renamed.
else
mv -i $file $new
echo renamed.
fi
done
done


コツをいくつか。
・Maildir形式での各メッセージは確実にユニークなファイル名を持つようになっているので、1ファイルずつ処理できます。ファイル名の命名規則については下記で解説されています。
http://cr.yp.to/proto/maildir.html
・head -1が入っているのは、マルチパートのメールとかだとDateヘッダが複数入っているので、一番最初のだけを持ってくる必要があるからです。他の言語を使えばオブジェクトで扱えるのですが、そこまでは要求していないのでこれで十分。
・ThrをThuに変えているのは、dateコマンドのフォーマットとして認識してくれないからです。メールソフトの中には、木曜日の短縮形をThuではなくThrで記述するものもあるみたいですね。

もちろんここにくるまでにちゃんとデバッグしてますよ。mvだけコメントアウトしておけば何度でもプレビューできるので便利です。ついでに、テスト実行時には標準出力「だけ」を捨てておくと、エラーの有無がわかりやすくて便利です。こういうとき、標準エラー出力って便利だな、と思います。

で、imapのサービスを止めて、いざ実行!

Thunderbirdを立ち上げてみると....お!うまくいってる!
しかしログにこんな記述が!
「△△△フォルダから0000通のメールを削除しました」....えええ!!!!

よく見ると、ローカルのメール(実質的なキャッシュ)をリモートフォルダ(つまりIMAP上のオリジナルメール)に合わせている挙動でした。リモートのメールが消されているものと勘違い(汗

改めてiPhoneから見てみたところ、期待したとおりに表示されているようです。

2010/10/17

電話番号パターン認識

こんなモジュールがあるんだー。
http://perldoc.jp/docs/modules/Number-Phone-JP-0.03/JP.pod

2010/10/07

rsyslogのタイムスタンプ

しばらく前にsyslogをrsyslogに置き換えて運用していたんですが、そのせいでawstatsがまともに動かなくなっていたようです。

普通のログだとタイムスタンプが

MMM DD hh:mm:ss

とかになってるんですが、rsyslogがタイムスタンプの標準(?)が

YYYY-MM-DDThh:mm:ss:uuuuuu[+-]zz:zz

になってるみたい。

解除するには、rsyslog.confの各ログの書式に「;RSYSLOG_TraditionalFormat」をつければ良いそうで。
サンプルをば。

mail.* /var/log/maillog

を

mail.* /var/log/maillog;RSYSLOG_TraditionarFormat

とする。

でも、高精度タイムスタンプが使えるんならその方がいいなぁ。
何とかしてawstatsに食わせるために、

sed -e 's/^\([0-9][0-9]*-[0-9][0-9]-[0-9][0-9]\)T\([0-2][0-9]:[0-5][0-9]:[0-5][0-9]\)\.[0-9]*[+-][0-9][0-9]:[0-9][0-9]/\1 \2/g'

なんて小賢しいフィルタも考えてみたんだけど、maillogconvert.plがうんともすんとも言わない。


さて、どうしたものか.....

2010/10/06

携帯宛のメールが届かない?

友達から「MLに送ったメールが1通だけ届かない」なんてメールがきた。
ログを見てみると、確かにその時間帯に着信したメールがその友達「だけ」に送信されていない。
.....なんでだ?

とりあえず分からないので、postfixをいじってみた。

main.cfに追記

transport_maps = hash:/etc/postfix/transport


transportを作成、ハッシュ化

softbank.ne.jp smtp-softbank:
ezweb.ne.jp smtp-ezweb:
docomo.ne.jp smtp-docomo:


master.cfにカスタムトランスポートを追加

smtp-softbank unix - - n - 1 smtp
-o smtp_destination_concurrency_limit=1
smtp-ezweb unix - - n - 1 smtp
-o smtp_destination_concurrency_limit=1
smtp-docomo unix - - n - 1 smtp
-o smtp_destination_concurrency_limit=1


とりあえず様子を見てみましょ。

2010/10/02

DNSサーバ、そしてお手軽セカンダリDNS

いままで会社のやつに滑り込ませていたので、ちょっと申し訳ない感じがありましたが、やっとDNSを自前運用にしました。
これでDNS/web/mailが全て自前運用になったので、やっと次のステップに進めそうです。

やったこと。
1.使っているサーバ)Centベース)にbindとbind-chrootを入れる
2./var/named/chroot/etc/named.confを編集
2-1.internalセクションの中は全部コメントアウト
2-2.keyセクションもコメントアウト(次の機会にでもいじる予定)
3.sampleディレクトリにあるnamed.*を/var/named/chroot/var/named/にコピー
4.ゾーンファイルを/var/named/chroot/var/namedに作成(命名はドメイン名.zone)
5./var/named/chroot/etc/named.confを編集
さっき作ったゾーンの設定を追記
6.起動!

ちなみに、利用しているお名前.comだと、セカンダリDNSサービスってのがあります。これはラクでいいですね。しかも、自分が利用しているサーバと全く管理形態が異なるので、同時に落ちる心配もほぼ皆無といっていいでしょうし。自分で2台もDNSサーバが用意できない方にオススメ。
ドメインNaviの手順に従って設定し、最後にネームサーバを変更して無事完了です。

というわけで、次は「完全手動ダイナミックDNS」を「ちゃんとしたダイナミックDNS」にしようと思います。

2010/08/16

apacheのコツ

apacheのコツをいくつか。

configはどこにある?

まず、プロセスを見ましょう。すると、httpdなプロセスがいくつかいるはず。
このバイナリに"-V"オプションをつけて実行してみましょう。
ファイルシステムのパーミッションに阻まれない限り、non-rootユーザでも実行できます。
すると、こんな感じの情報が出てきます。

# httpd -V
Server version: Apache/2.2.3
Server built: Apr 4 2010 17:19:54
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

で、何を見るべきかというと、-Dオプションに続く「HTTPD_ROOT」と「SERVER_CONFIG」を見るのです。このふたつをくっつけたところを見に行ってみると、httpd.confがいるはずです。


ここから先はソースで入れるような人には向かないかもしれませんが、RPM版apacheについていくつか。

httpd.confは初期設定を除いてできるだけいじらない

httpd.confはグローバルな設定(スコープがGlobalなconfig)に止めて、それ意外はできる限り書かないようにしましょう。
VirtualHostの設定なんて書くべきじゃありません。入れておくべきはこのぐらいでしょうか。
  • グローバルパラメータの設定
  • MPMの設定
  • モジュールの読み込み設定
  • 各種インクルード

じゃあ、それ以外はどこに書くの?


Includeを活用しましょう

それは、役割ごとにIncludeするんです。
RPM版apacheのデフォルトでは、こんな記述があります。

Include conf.d/*.conf

サーバ上のパスだと/etc/httpd/conf.d/になります。

ここにいくつかファイルがあるはずですが、不要なものは名前を変えてincludeされないようにしましょう。mod_perlを使わないのであれば、perl.confをperl.conf.offとかに変えるだけ。拡張子が".conf"のものしか読まれないので、これで充分です。

バーチャルホストについてはいろいろやり方がありますが、自分のやりかたを参考までに書いておきます。
  • conf以下にvhostsというディレクトリを掘る
  • vhostsの中に、バーチャルホストのコモンネーム.confでファイルを作成し、該当するバーチャルホストの設定を書く
  • conf.dの下にvhosts.confというファイルを作成する
  • このvhosts.confに、必要なNameVirtualHostを列記し、その下に、Includeでバーチャルホストファイルを読み込んでいく。
こうすることで、httpd.confに余計な改変を加えず、好きな順番でバーチャルホストを読み込ませることができます。
何でバーチャルの順番に気を遣うか。IPアクセスされた際に、最初に設定されたバーチャルホストが反応してしまうので、どのバーチャルホストを先頭に持ってくるかが重要なのです。


まとまりのない文章ですいません。

2010/07/16

WindowsXPにおけるSpeedStep

昔、どっかで調べたことです。
今さら使うのかどうか分かりませんが、とりあえずメモ。


Constant:常に低い駆動周波数でCPUを駆動
Adaptive:CPU使用率が高いときに高い駆動周波数に設定
Degrade:低い駆動周波数でCPUを駆動し、バッテリーの残り容量に合わせてCPUのパフォーマンスを下げていく
None:常に高い駆動周波数でCPUを駆動

電源管理アプレットでの設定 → ACアダプターつき / ACアダプターなし
自宅または会社のデスク → None / Adaptive
ポータブル/ラップトップ → Adaptive / Adaptive
プレゼンテーション → Adaptive / Degrade
常にオン → None / None
最小の電源管理 → Adaptive / Adaptive
バッテリの最大利用 → Adaptive / Degrade

追記
HKU\.DEFAULT\Control Panel\PowerCfg\PowerPolicies\数字

2010/07/11

初体験

大地53をロバ化された...(泣)

ちなみに今日の収穫。
・ヌイグルミ7
・OC3
・ロバ2
・テーマ1
・わらし2

...ちょっと低めだな。