iTunes cloud + Dropbox = ファイル破壊

iTunesに最近追加された自動ダウンロードとDropboxのコンボではまったお話.

最近iTunesに機能が追加されて,あるマシンで買った音楽ファイルを他のマシンにもダウンロードできるようになりました.しかも自動的にダウンロードして,ライブラリに追加してくれます.便利ですね.

私は,今までその機能をdropboxで実現していました.やり方はiTunesライブラリのフォルダをdropbox内に配置して共有するだけです.簡単ですね.

しかし,これと自動ダウンロード機能が組合わさるとひどいことになります.私はdropboxによるダウンロード中にiTunesを起動してしまいました.この結果2重にダウンロードが起き,ファイルは破壊され,まともに聞けなくなりました \(^o^)/

Dropbox等によるiTunesのファイルの共有をされている方は必ず自動ダウンロードのオプションをoffにしましょう! offにするには,環境設定→ Store環境設定で「自動的にダウンロードする」以下の音楽だのAppだののチェックボックスを全て選択解除すればいいです.

もし,破壊されてしまった方は,破壊が起きたマシン以外のマシンでiTunesのダウンロード機能を使って落とすといいと思います.私はこれでファイルを回復しました.

自動なのも考えものですね.

氷菓のもやもや感をぶちまけてみる(#01--#04 ネタバレあり)

この記事は,ミステリ!という見出しに興奮し第1話を見て絶望した俺が4話までのもやもや感というか不満をぶちまけて憂さ晴らしするという内容です.

基本的に氷菓つまらないんですよね… Anotherに続いてミステリ系か!と期待していたのですが…

一つの理由はデータベース君が主人公を褒めまくることです.この作者もメアリースー症候群発祥していたのかかなり気持ち悪いです.原作から改変あったそうなのですが,何故カットしなかった.

もう一つの理由はミステリ部分が本当につまらないことです.謎が解けた瞬間のカタルシス,というミステリの醍醐味がありません.
その理由について,本稿では#01〜#04までのミステリ部分についてそれぞれ振り返ってみます.

#01 : 鍵

何故用務員さんは,「鍵を開ける→蛍光灯を交換する→鍵を閉める」というサイクルを一部屋ずつ繰り返すのでは無く,「全部屋の鍵を開ける(あるいはもともと開いていた)→全部屋の蛍光灯を交換する→全部屋の鍵を閉める」という方法をとったのでしょうか? 実際後者の方法取った所為でえるたそを閉じ込めています.これに関する合理的な理由は示されていません.

#02 : 図書館

図書の謎解きは納得できる解です.が,いちいち授業が終わるたびに返す必要があったのかという疑問が残ります.貸し出し期間が1週間でも授業開始前に1回借りて1週間後の授業終了後に返せば2週に1回の返却で済みます.また,期間限界まで借りて借りる人が殆どいないのなら,授業期間中特別に借り続けることもできた可能性があります.他の方法もあるはずなのに,その方法を選択した理由が示されてないため,なんかもやもやしたまま推理パートが終わります.

#03 : 煙草

あの謎解きでは全く納得できません.本当に煙草を吸っていたなら窓開けようが何をしようが臭いが残ります.部屋に残ってなくても口臭でわかります.煙草を吸って臭いが残っていない合理的な説明が必要です.

#04 : 退学

5日間もある文化祭を縮めようとした校長に抗議した,という所までは凄く納得のいく推理です.ついにミステリが始まったかと思いました.んが,退学の時期と文化祭の時期のずれが,「批判回避のため」ってなんですかそりゃ.確かにありえる結論ではありますが,QEDなら「でもこれはおかしい」となるところです.

総括

以上,#01--#04まで振り返ってみました.とにかく以下の2点が目立ちます.

  1. 1. ロジックの穴(#01, #03)
  2. 2. 推理から導かれる行動が最善の方法であったと考えづらい (#01, #02, #04)

OPと音楽と映像と女の子は京アニ作品らしく素晴らしいものです.できるなら,主人公を燈馬くんに変えて再構成して欲しい.そして,「いやです」とえるたそに言い放って欲しい.

F#でファイル読み込み

F#でReadLines()を使ってファイルの読み込みに成功したので、その記録。
(ただし、コードは汚い。というかF#のコードじゃない)

open System.IO;
let readTextFile(path: string) =
    use reader = File.OpenText(path)
    let mutable flag = true
    let mutable lines = []
    while flag do
        match reader.ReadLine() with
            | null -> flag <- false
            | str -> lines <- str :: lines
    lines;;

明らかにもっと関数型らしく書けそうだが、とりあえず気にしない。

Unixコマンドによるデータ処理

一時期研究で,データの集計処理をよくやったので,その時学んだこと,使用したUnixコマンドのまとめ.
WindowsUnixコマンドを使いたいなら是非ともCygwinを入れてminttyを使いましょう.

私の環境はCygwinだったので,Unixコマンドとか言っておきながら,以下の内容はどちらかといえばCygwin向け.

データの表現形式

Unixコマンドに適したデータ形式TSV(Tab Separated Values)だ.XMLCSVUnixコマンドに向いていない場面が多くて使いづらい.

さらにWindowsでは,改行文字をLFに統一した方がいい.後で触れるが,perlを使用することを考えると,改行文字はLFで統一されるべき.

入出力コマンド

cat,more,teeの3つはデータ処理をする際の最重要コマンドである.以下それぞれの役割.

  • catはデータの入力に使用.ファイルを引数に取れるコマンドもあるが,統一性があるとは言いがたく使いづらいので,catで統一したほうが楽
  • moreはコマンドが望みどおりに動いているか確認するために使用.とにかくまずはmoreで確認してから実行しなきゃ危険.
  • teeはデータの処理結果を出力するのに使用.出力するだけならリダイレクトでもいい.しかし,処理が止まっていないか確認するためには,出力が見られる状態にしておく必要がある.teeはコンソールへの出力とファイルリダイレクトを素直にやってくれる.

データの抽出コマンド

TSVファイルを使っていると,2カラム目のデータだけを取りたい,ということがよくある.そういうときにはcutをfオプションつきで使おう.2カラム目を取り出したければ,

  • cut -f2

と実行すればよい.2から5カラム目を取り出したいのなら,

  • cut -f2-5

2カラム目を取り出したいのなら

  • cut -f2-

とする.

データの表現形式としてTSVを進める理由は,このようにUnixコマンドとの相性が良いからなのだ.

ソート

要素のソートにはその名もずばりsortを使う.詳細は,http://linuxjm.sourceforge.jp/html/gnumaniak/man1/sort.1.html
で確認して欲しい.

数値のソートには-nオプションを使用し,降順でソートしたい場合は-rをオプションを併用する.
その他便利なオプションには-kオプションが挙げられる.これはソートする際に使用するフィールドのカラムを指定するオプションで,2カラム目の値だけでソートしたければ,

  • sort -k2

と書く.

重複排除とカウント

重複した要素を削除したい状況はよくある.このときはuniqコマンドを使用する.-cオプションを併用することで,入力対象のデータ中にある要素を数えることができる.これが非常に便利.

なお,uniqは必ず事前にデータをソートしておかなければならない.要注意

データの加工

正規表現grep的なデータの加工をしなければならないことはよくある.
それぞれ専用のunixコマンドがあるが,覚えるのが面倒,統一性が無い,使いづらいなどなど欠点が多い.

よって私はワンライナーperlの使用を勧める.まず,正規表現でデータを加工したい際は,

とする.grepをしたい際には,

とする.

perlを使えば,正規表現の他にも多種多様な命令を使える.ワンライナーで書くのが面倒になればスクリプトとしてファイルに書きだすという手もあり,sedgrepを覚えるよりも汎用性が高くて便利である.

要するにWindowsを使う人間は皆Cygwinperlワンライナーを書くべきなのである.

ヨドバシ行った.GALAPAGOSとHTC Aria触った感想

ヨドバシ行ってGALAPAGOS3種とHTC Aria触ってみました.
以下それぞれの感想.

GALAPAGOS

まず,携帯のGALAPAGOSですが,3Dがいらない子と化してますね.
何せアプリケーションの大半が3D対応していないわけですから当然ですが.
だからホーム画面が無駄に3Dエフェクトついていて,アプリを起動した瞬間2Dモードで起動されるという悲しい現象が…
しかも3Dだと妙に汚かったフォントが2Dになると綺麗になるというおまけ付です.ないわー.

そしてタブレットGALAPAGOS.一目みて思いました.10.8型でかっ!
というか縦長です.高さ286mmですってよ奥さん.でかすぎだろうと.これを持ちながら読書をするのは無理でしょう.

5.5型の方はサイズ・重さについては可もなく不可もなくといったところです.しかし,何故5.5型なのでしょう.
5型になるとポケットに突っ込むのは,まあ無茶です.片手操作をするにもちょっと大きすぎるでしょう.
どうせならもっと大きくして7型ぐらい,つまりGalaxy Tabと同じぐらいのサイズで良いと思うのですが…

そして気になったのがアプリの面.
どうも,10.8型は全体的にもっさりしてます.5.5型は許容範囲であります.
ただ,気に入らなかったのがデフォルトの書籍リーダーアプリです.ページ送りにいちいちめくるアニメーションを付けないでください.(これON/OFFできますよね?)
横か縦にスライドしてくれれば十分です.そんなことよりさっさと次のページに遷移してください.

タブレット系も色々なものが出てますが,結局iPadより優れていると断言できるものが見つからんぞヽ(`Д´)ノ
候補がGalaxy Tabぐらいしかないとは…

HTC Aria

持って一言.最高です.
軽さ,手のひらに収まる持ちやすさ,動作の軽快さ,全て良いです.
今私が持ってるのはDesire HDですが,Ariaに触れていればこっち買ってた気がします.
これからAndroid携帯買う人には是非ともお勧めしたい一品ですね.キャリアがe-mobileでなければ.
(正直,テザリング機能とか無しでいいからせめてSoftbankで出して欲しい…orz)

EmacsclientとGvimをコンテキストメニューに登録

サクラエディタではインストール時にコンテキストメニューに「SAKURAで開く」というオプションを付けることができます.
それと同じことをEmacsclientとGvimでもやろうというわけです.実はちょこちょこレジストリ弄るだけでできてしまいます.

注意

レジストリを弄るのは割と危険を伴いますので,「システムの復元」を使って復元ポイントの作成を行っておいてください.
動作がおかしいと感じたらさっさと復元しましょう.

Emacsclientを登録

まずはregedit.exeを開きまして,HKEY_CLASSES_ROOT\*\shellにキーを作成します.
名前は何でもかまいませんが,ここではemacsとしておきます.

このキーの既定値に「Emacsclientで開く」とでも書きましょう.
既定値がコンテキストメニューに表示する文字列となります.(もちろん「」は値の中には書かなくていいですよ.)

次に先程作成したキーの直下にさらにcommandという名前のキーを作成します.
つまり,HKEY_CLASSES_ROOT\*\shell\emacs\commandを作成します.(このcommandという名前は何でもいいわけではありませんのでご注意を)
そして,commandの既定値として以下を登録します.

  1. "\emacsclientw.exe" "%1"

下のスクリーンショットは私のHKEY_CLASSES_ROOT\*\shell\emacs\commandの既定値です.
EmacsをC:\installに配置しているためこうなってます.

Gvimを登録

Emacsclientを登録する時とほとんどかわりません.
HKEY_CLASSES_ROOT\*\shell\を作成して既定値を登録します.
そして,HKEY_CLASSES_ROOT\*\shell\\commandを作成し,既定値として,"" "%1"を登録します.

%1って何?

ここに選択されたファイルのパスが入るのです.Windowsですので当然ダブルクオーテーションで囲っておきましょう.