おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

でかい除湿機 SHARP CV-C140-W を購入

SHARP プラズマクラスター除湿機(コンプレッサー方式) ホワイト CV-C140-W 梅雨の時期が終わろうというタイミングで今更感もあるのですが、新しく除湿機を購入しました。

理由としては、家に一台少し大きめのものを設置して、昼間はドアとか開放して全体的に除湿しているのですが、どうしても効果は局地的だったのと、寝室 (というか普段過ごしている部屋)の湿度が気になっていたため。買い増しして、既存の除湿機をこっちに移動してリビングには新しいのを買おうとなった次第です。

選択の理由

この機種を選んだ理由は、

  • ハイブリッド型とかいらない (冬は除湿しないし)
  • 除湿性能が高いこと
  • タンクがでかいこと
    • タンクが小さいと満水になって停止してしまいますし、単純に頻繁に排水するのは面倒です

とくに、タンクが大きいことが必須条件でした。こいつは4.2リットルです。

買ってみて

結論としては、性能よく除湿してくれて、水のたまり具合にびっくりな感じです。

ただ、ソフトウェアが問題あるのか、タイマー設定してないのに、気が付くとタイマーの時間切れで停止していることがすでに何度か起きており、再現条件の把握を試みているところ。 説明書を確認。コンセントに接続した時点では、自動パワーオフが有効になっていて、12時間で切れるとのこと。この動作を変更するには、停止とタイマーボタン同時押し3秒。 って、それ12時間ってタイマーのランプがあればいいんじゃないのかしら。。

Wi-Fi等から現在のコンテキストを把握してアクションを実行できるControlPlane

iPodで音楽聴きながらカフェでMac広げてドヤリングしてたら、ミュートになってなくて派手に音を垂れ流して急いでミュートにし、帰宅すると音を鳴らすのにミュート解除しないと、とか面倒ですよね。

出先だったら勝手にミュートしてほしい、このアプリを開いてほしいといった操作を自動化するControlPlaneを利用しています。

今自宅なのか、職場なのか、はたまた出先のカフェなのか、環境を把握するのに使える材料として有用なのは無線LANのSSIDですが、それ以外にもコンテキストを判断するエビデンスとして、いろいろなものに対応しています。

  • アクティブなアプリケーション
  • オーディオ出力先 (スピーカー、ヘッドフォン)
  • AC電源接続有無
  • 接続中のBluetooth、FireWire、UBSデバイス、モニタ
  • Bonjour、ネットワーク (検知しているWifi、接続中のLAN、DNS、IPアドレス等)
  • OS XロケーションサービスのCoreLocation
  • ライトセンサー
  • 独自のシェルスクリプトでの定義
  • Sleep、Wakeのタイミング

これらを組み合わせ、アプリを起動、終了させたり、ミュート、ミュート解除したり、いろいろできます。

たとえば、テザリングしているときはDropbox等を落とす、など可能性は無限大です。 Macなんで、cronでシェル走らせてもできるんですが、GUIで設定できて便利なのでオススメです。

awscli s3apiでの日本語を含むオブジェクト操作

日本語などnon-ascii文字列を含むオブジェクト操作のメモ

"nonあascii" (unicode: \u3042) というオブジェクト名を想定します。

aws s3 rm

ふつうに日本語で実行できる。 (おそらく実行環境に依る)

# Key does not exist
aws s3 rm "s3://bucket/non\u3042ascii"

# delete successful
aws s3 rm "s3://bucket/nonあascii"

s3api delete-object

こちらも同様。 ただ、s3コマンドと違ってファイルの存在を確認しないため、バージョニングが有効だと存在しないファイルにデリートマーカをつくる。

# successful
aws s3api delete-object --bucket "bucket" --key "nonあascii"

# fail (create delete marker to non\\u3042ascii)
aws s3api delete-object --bucket "bucket" --key "non\u3042ascii"

s3api delete-objects

複数指定したい場合は、delete-objects。

以下は失敗パターン。 defaultencoding=asciiの環境だと 'ascii' codec can't encode character u'\u3042' in position 24: ordinal not in range(128) のエラーが出る。

aws s3api delete-objects --bucket "bucket" \
--delete '{"Objects":[{"Key":"non\u3042ascii"}],"Quiet":false}'

aws s3api delete-objects --bucket "bucket" \
--delete '{"Objects":[{"Key":"nonあascii"}],"Quiet":false}'

sitecustomize.pyでデフォルトエンコーディングをUTF-8に変更するとどちらもXML不正エラーが出る。

A client error (MalformedXML) occurred when calling the DeleteObjects operation: The XML you provided was not well-formed or did not validate against our published schema

何が起きているかというと、XMLがおかしい。

0x0000:  4500 0074 8db1 4000 4006 10a5 ac1f 18d5  E..t..@.@.......
0x0010:  36e7 a052 bab8 0050 ddd0 5f96 019d f618  6..R...P.._.....
0x0020:  5018 0073 9c94 0000 3c44 656c 6574 653e  P..s....<Delete>
0x0030:  3c4f 626a 6563 743e 3c4b 6579 3e6e 6f6e  <Object><Key>non
0x0040:  e381 8261 7363 6969 3c2f 4b65 793e 3c2f  ...ascii</Key></
0x0050:  4f62 6a65 6374 3e3c 5175 6965 743e 6661  Object><Quiet>fa
0x0060:  6c73 653c 2f51 7569 6574 3e3c 2f44 656c  lse</Quiet></Del
0x0070:  6574 653e                                ete>

ということで、XML実体参照で送る。

aws s3api delete-objects --bucket "bucket" \
--delete '{"Objects":[{"Key":"non&#x3042;ascii"}],"Quiet":false}'

まとめ

  • s3apiの引数でJSONを指定する場合、non-asciiな文字列はXML実体参照で入れる

JSONとXMLの変換の闇でした。

iTunes MatchでiOSデバイスで曲が重複する問題の対処

解消方法を探して、微妙ながらも解決したのでメモ。

事象としては、上の記事のスクリーンキャプチャのように、購入した楽曲なんかが、ローカルとiCloudで重複して表示され、雲マークをクリックしてダウンロードしたら同じ曲が2曲になるというもの。

解決方法

MacやWindowsのiTunesとローカルで同期せず、全てiCloudからダウンロードするようにする。

  1. iOSデバイスでiTunes Matchをオフにする
  2. 設定 → 一般 → 使用状況 からミュージックを開き、編集から、全ての楽曲を削除
  3. 母艦のiTunesで、楽曲の同期のチェックをオフにする
  4. iOSデバイスでiTunes Matchを再び有効にし、ダウンロードをがんばる

当然ながら、楽曲をダウンロードするのにはだいぶ時間がかかるので注意。 あと、一時的なエラーということで、一部の曲をダウンロードできないことがよくある。

IPv4固定IP付きのフレッツ接続を月500円で取得する

IPv6 IPoEによるネイティブ接続をやってみたかったので、自宅のフレッツ光ネクストはFiberAccess/NFを使っています。

このプランは、IPv6アドレスは半固定で割り当てられるものの、v4は動的IPとなっています。 v6ネイティブ接続を使いたがる人が、v4の固定IPを欲しくないわけもないのですが、有限なリソースですし難しいところ。 そして今のところv6のIPはいまいち有用ではない。

固定のIPv4アドレスを安価で

で、先日、なんでこのVPN接続落ちてて繋がらないんだろうと考えていたら、IPが変わっていたというオチがあり、IPv4の固定IPがほしいんじゃとFacebookでぼやいたら、 i-revoで月額500円で契約できると識者の方に教えてもらいました。

非常にシンプルで固定IPのフレッツ接続が月額500円で契約できる。

即時発行というのは備考にあるように罠があって、平日の日中しか受け付けをしておらず、週末などにやろうとすると、追ってお知らせとかでなく、そもそも受け付けていないという男らしさ。

セッション数と追加オプション

これも有識者の方に教えてもらったのだが、フレッツでは、回線ごとにPPPoEのセッション数の上限があって、それを超える場合は有料オプションで追加する必要があるとのこと。

ちなみにPPPoEセッションなので、IPoEのv6セッションは関係ないらしい。

家庭用のフレッツでは、2セッションまで基本サービスになっていて、普通はプロバイダ回線で1つ、ひかり電話でもう1つくらいのイメージっぽい。 我が家はひかり電話は使わないので1セッションしか使っておらず追加オプションは必要なかった。

できたよー

ルーティングちゃんと設定してないけど、とりあえずつながった。

f:id:i_ogi:20140601232350p:plain

が、i-revoはIIJの設備を使っているらしく冗長化という面では微妙な感。