2014年4月15日火曜日

Mac 版 SimCity 4 Deluxe を日本地図でプレイする

久しぶりに SimCity が Mac に帰ってきました! Mac App Store から購入できます。

SimCity 4 の Windows 版はかなり前にリリースされています。Windows 版には有志が作成した日本の地形のマップデータがあります。アプリにはニューヨークやロンドンなどの地形データが入っていますが、馴染みのない地形よりは、日本地図でプレイした方が楽しいわけです。

このマップは Windows 版のデータですが、Mac 版でも無加工で使えますので、インストール方法を紹介します。

マップ入手先

こちらのサイトから、マップデータを入手します。結構デカい(100MBくらい)ので、気長にダウンロードしましょう。解凍すると、“日本” というフォルダができるはずです。

インストール

インストール先は、~/Library/Containers/com.aspyr.simcity4.appstore/Data/Documents/SimCity 4/Regions フォルダです。解凍してできた“日本”というフォルダを “Japan” にリネームして、Regions フォルダに移動します。

ライブラリフォルダは、Finder では非表示になっていますので、設定を解除して表示させます(手順)。ライブラリが表示されたら、“Containers”、“com.aspyr.simcity4.appstore” と順に進みます。面倒な人は Terminal で次のように入力します。

open ~/Library/Containers/com.aspyr.simcity4.appstore/

下の表示のとおり、Regions フォルダにマップデータをインストールします。

アプリを起動し、“地域をロード” の中に “日本” が現れたらインストール成功です。

2013年12月26日木曜日

enchant.js でもインスタンスがどのクラスから作られたか知りたい

enchant.js では JavaScript の一風変わったオブジェクトシステムの上にクラスの仕組みを実装しています。これはこれで便利なのですが、表題に書いた点は不満です。

JavaScript の処理系は、インスタンスがどのコンストラクタから作られたかを表示する機能があります。例えば、次のようなコンストラクタ Dog と Cat を宣言し、それぞれのインスタンスを作り、変数 dog と cat に代入します。

function Dog () {}
function Cat () {}
var dog = new Dog();
var cat = new Cat();

変数 dog と cat をコンソールで見ると、次のようにコンストラクタ名が表示されています。

enchant.js でクラスとして作ると、こうはなりません。同じようにクラス(のコンストラクタ)を作り、それらのインスタンスを作ります。

var Dog = Class.create(Sprite, {
  // 省略
});
var Cat = Class.create(Sprite, {
  // 省略
});
var dog = new Dog();
var cat = new Cat();

コンソールで見ると、(Google Chrome の場合)Constructor と表示され、どんなオブジェクトなのか判然としません。Safari では、Object と表示されるので、これまた判然としません。

ここはやはり、最初に見たように表示してもらえる方が、デバッグの時は助かります。特に、配列などのデータの中にしまった時の差は顕著です。

当座の解決策

結構根が深い問題で、JavaScript の限界とも言えます。

enchant.js の enchant.Class.create メソッドを次のように(赤字の部分を)書き足します。

enchant.Class.create = function(superclass, definition, constructor) {
    // 省略
    var Constructor = typeof constructor === 'function' ? constructor :
      function () {
          if (this instanceof Constructor) {
              Constructor.prototype.initialize.apply(this, arguments);
          } else {
              return new Constructor();
          }
      };
    // 省略
    return Constructor;
};

コンストラクタが匿名関数であると、このような現象が発生します。関数は後から名前を変えることができません。そこで、名前を付けた関数を作ってそれを引数として渡せるように、引数 constructor を追加します。constructor に関数が渡されたときはそれを使い、それでない場合は、従前通りに動作するように作ります。

使い方は、次のようになります。

var Dog = Class.create(Sprite, {
  // 省略
}, function Dog () {
  Dog.prototype.initialize.apply(this, arguments);
});
var Cat = Class.create(Sprite, {
  // 省略
}, function Cat () {
  if (this instanceof Cat) {
    Cat.prototype.initialize.apply(this, arguments);
  } else {
    return new Cat();
  }
});
var dog = new Dog();
var cat = new Cat();

一番最初の例と同様に、どのコンストラクタから作られたかが表示されるようになりました。

第三引数に、enchant.Class.create のはらわたの一部が出てしまっていて見苦しいのですが、この辺が限界のように思います。enchant.js が作るコンストラクタでは、initialize メソッドを呼んでいるので、それを手で書いてあげます。オリジナルのコンストラクタでは、else 句の方に new を付け忘れた場合の救済措置ではないかと推察されるコードがあります(違うかも)。Dog の例のように、その部分を省略しても動きます。心配性な人は、Cat の方のように全部書いてもいいでしょう。

enchant.js で定義されている他のクラスも、同じように書き換えれば、ちゃんとコンストラクタの名前が表示されるようになります。例えば、Sprite を書き換えるならば、次のようにします。

enchant.Sprite = enchant.Class.create(enchant.Entity, {
  // 省略
}, function Sprite () {
  enchant.Sprite.prototype.initialize.apply(this, arguments);
});

あんまりきれいではないですが、一応これでデバッグの苦痛が少し緩和されます。もっとこうした方がいい、などのコメントをお待ちしています。

2013年12月7日土曜日

ssh し続ける(要管理者権限)

あるサーバに ssh のコネクションを貼り続ける必要があったので、ちょっと設定してみました。

前提

ssh の設定(鍵交換によるパスワードなしのログインなど)は済んでいるものと仮定します。やり方が分からない人は、ググって調べてください。

設定

青で書いているところは、パラメータなので、適宜変更して使用してください。

/Library/LaunchDaemons/com.example.keeping-ssh.plist を次のように作ります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.example.keeping-ssh</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/bin/ssh</string>
                <string>example.com</string>
                <string>ping</string>
                <string>-i</string>
                <string>60</string>
                <string>127.0.0.1</string>
        </array>
        <key>KeepAlive</key>
        <true/>
        <key>UserName</key>
        <string>user</string>
        <key>GroupName</key>
        <string>group</string>
</dict>
</plist>

ファイル名は何でもいいですが、普通は plist の中の Label と同じ名前にします。自分のドメインを持っていない人は、com.example のままで特に問題はないです。肝心の設定項目としては、次の 3ヶ所です。

  • host は ssh でログインしたいホスト名です
  • usergroup は(ローカルの Mac 側で)ssh のプロセスを動かすユーザ名とグループ名です。普段 Mac にログインする時に使っているもので OK です。

ファイルを作ったら、このファイルのオーナーを root:wheel に設定し、launchd に読み込ませます(または Mac を再起動してください)。

$ sudo chown root:wheel /Library/LaunchDaemons/com.example.keeping-ssh.plist
$ sudo launchctl load /Library/LaunchDaemons/com.example.keeping-ssh.plist

ssh でログインした先で、自分に向けて定期的に ping を打って、コネクションを維持しています(ここら辺は、各自用途に応じて適当なコマンドを動かしましょう)。それでも切断されてしまった場合は、KeepAlive を指定しているので、launchd が自動的に再接続を試みます。ログアウトしていても、ssh のコネクションは維持され続けます。

launchd は色々やってくれるので、スクリプトを書かなくても設定だけで済んでしまいます。楽ちんです。

2013年6月30日日曜日

さらば Google Reader

サービス終了寸前! ニーズで選ぶ7つのGoogleリーダー代替候補
http://www.lifehacker.jp/2013/06/130630google_reader_seven.html

私は別の目的もあって、rss2mail を急遽作ったりしたのですが、結局何もする必要はなかったようですね。私は iOS の ByLine を利用していましたが、ByLine と Feedly の組み合わせで、これまでと何ら変わらずに(お気に入りに登録したものを含めて)RSS フィードを読み続けることができました。移行は非常に簡単で、ByLine Free をアップデートし、Feedly にログインするだけです。関係者のご努力に感謝したいと思います。

それにしても、これまでも Google のサービスで打ち切られたものはたくさんありましたが、これほど各方面から悲鳴が聞こえたのは初めてではないでしょうか。

2013年6月8日土曜日

Google Reader 問題 ── 私はこうした

Google Reader が 7月1日に終了するのは皆様ご承知の通りです。ニュースを見た直後に、代替の RSS リーダとして Livedoor Reader や Feedly なども試してみましたが、iPhone で ByLine を愛用していた私にはどうもしっくり来きません。「ま、3ヶ月もあるし、その間に誰かが何か考えるだろう」とタカをくくっているうちに、あと一ヶ月を切ってしまいました。

しっくり来ない原因は、「この記事、あとでゆっくり読みたい ── でも、お気に入りに入れるかどうかはまだ決めない」という操作ができないからです。ByLine はフリックで未読に戻せるので、やや不満ながら、この操作が出来ていました。

後継は自作スクリプトと Mailbox

結局、RSS フィードを読み込んで、自分宛にメール送信するスクリプトを書きました。Node.js で 200行程度です。これを cron で動かして、適当な時間に記事を回収し、自分の GMail アドレスにメールします。GMail のフィルタ機能を使って、受信したメールに [RSS] という感じのラベルを付けておきます。このまま、GMail を Google Reader の代わりにしてしまうというのも手だと思います。

Mailbox は、ご存じの方も多いと思いますが、シンプルな操作でメールをさばき、メールボックスを空にする、という新コンセプトのメールクライアントです。

メールとして受信した記事を Mailbox のフリック操作でさばいていきます。こんな感じになります。

読み捨てる記事は、長めに右フリックします。これでゴミ箱行きです。

お気に入りとして保存しておきたい記事は、短めに右フリックします。これで、GMail のアーカイブに入ります。

後でゆっくり読みたい記事は、短めに左フリックして、読みたいタイミングを指定します。あるいは、長めに左フリックして、To Read に入れても良いでしょう。ここは自分の好みで使い分けます。

これが Mailbox の最大の特徴です。日付を指定できるので、少し先のイベントスケジュールなども直前にリマインドするように設定でき、非常に便利です。

いくつか問題点も

現時点で認識している問題点です。

  • エラー処理とか、セキュリティとか、あまり考慮されていません。今はコンセプト検証を優先しています。
  • 一部、文字化けしたり、タイトルの中に変な空白が入ったりすることがあります。
  • うまく受信できない RSS フィードがあるようです。まだあまり調査できていません。
  • Google Reader は rssad のリンクを本来のリンク先に置き換えてくれていました。この機能が欲しいです。
  • RSS で配信される記事だけなので、出来の悪い RSS リーダと同じで、記事全文ではなく、ごく一部だけがメールされてきます。
  • Mailbox の問題だと思うのですが、HTML メールに埋め込まれた画像が小さくなります。iOS 標準のメールアプリでの表示と比べると一目瞭然で、半分くらいの大きさでしょうか(下の画像の左側が iOS 標準のメールアプリ、右側が Mailbox で表示したもの)。これは今後の改善に期待です。

今回はコンセプトだけのご紹介です。要望があればコードを公開するかもしれません。

2013年5月12日日曜日

日の出食堂: さといも麺(五泉市)

先日、当ブログで紹介させていただいたさといも麺ですが、ゴールデンウイークに帰省した折、日の出食堂へ立ち寄ることができ、念願の “さといも麺” を食べてきました。

日の出食堂は、JR磐越西線五泉駅から徒歩3分の場所にあります。鉄道旅行がお好きな方が、ちょっと寄るには絶好のロケーションです。公式サイトによると 3台駐車場があるそうです。付近は駐車場が少ないので、車でお越しの際はお気を付けください。


大きな地図で見る

さといも麺には、ラーメンタイプ、日本蕎麦タイプ、パスタタイプと様々なバリエーションがあります。欲張りな私が選んだのは、2種類のさといも麺が同時に楽しめる“つけ麺”です。さといも麺は茹でるのに少し時間がかかるようで、注文してからしばし待ちました。

麺が太い! 何も付けずに麺だけ食べました。すごいコシです! これはいける! 付け汁の方は、味噌味です。こちらもいい味です。某データベースで高い評価を受けてる都内の人気ラーメン店にも十分対抗できます!

麺を良く見ると、白っぽい麺と黒っぽい麺の 2種類が混ざっていました。2つの麺の違いは ── 私の舌では分かりませんでした(笑)。でも、どちらもおいしかったです。完食しました。ごちそうさまでした。

五泉市はブランドさといも“帛乙女”の産地で、日の出食堂はそれ以外の食材も五泉産にこだわった地産地消のお店です。安心して食べられる地元の食材だけで作られたおいしいお料理が食べられるお店が、ちゃんとこうして残っているのですね。とても嬉しくなりました。店主の柴野さんにご挨拶させていただきました。柴野さんはさといも麺があるじゃない会を主宰されています。他にも新潟名物“へぎ蕎麦”のさといも麺を提供するにのみやなど、市内13店で食べられますので、五泉市のお近くへお越し際には是非お立ち寄り下さい。鉄道で来られた方は、北五泉駅で下車し、五泉駅までのおよそ 2km をぶらりと歩きながら、さといも麺を食べてみるというのはいかがでしょうか?

新潟はラーメン激戦地の一つで、燕市を中心としたこってり背脂のラーメンや、新顔では、麺にモズクを練り込んだ出雲崎ラーメンなども出てきました。これからも応援していきますよ。

2013年5月1日水曜日

はじめての VPS

今まで dotCloud に Trac を建ててありがたく使わせていただいていたのですが、運営会社様から「sandbox flavor(無料)は終わりだ。おめーら金払いやがれ」と言われてしまいました。値段を調べてみると、Python が使える環境でメモリ 320MB を割り当てると、月々 $43.2 …。高っ! データを引き取って、dotCloud は退会することにしました。

サーバ難民となって、一番最初に辿り着いた先が、さくらインターネットのレンタルサーバ。これならスタンダードプランで月々 500円です。初期費用無料キャンペーンをしていたのも後押しになって、早速申し込みました。ちゃっちゃと Trac をインストールしてみると、重っ…。原因は分かってます。Trac を CGI で動かしているからです。対策としては、FastCGI か WSGI で動かせば OK ですが…色々やってみて、レンタルサーバではできないと判明。重たいのを我慢して使うか、別の手を考えるか…。

さくらインターネットでは VPS なら WSGI が使えて root も貰えて月々 980円(メモリ 1GB、HDD 100GB のプラン)。倍かぁ…と思いながらもまずはお試しと思って早速申し込みました。とはいえ、インターネットに露出しているサーバの管理をしないといけないのは、少々面倒ではあります。こちらにも Trac をインストールして、WSGI で動かします。快適に使えます。これなら問題ないです。

色々迷った末、Trac が重たいのは仕事に差し障りがあるので、VPS で運用することに決めました。サーバを管理するのも良い経験になるかもしれません。

2013年4月22日月曜日

さといも麺!

本日、午後 16:00-16:52 放送のL4YOU!『中村孝明が行く!新潟味紀行!』(テレビ東京)で、我らが五泉市の名物、さといも麺が登場するそうです。
恥ずかしながら、私もつい一週間くらい前に知ったのですが、さといも麺とは、五泉名物のブランド里芋 “帛乙女” を粉末にし、麺に練り込んだものだそうです。里芋 10kg を粉末にしても、わずか 1kg しか取れないそうで、大変な貴重品です。ラーメン、そば、焼きそばやパスタに練り込んでもよし、ということで、五泉市内の 13の店舗で様々なメニューが提供されているようです。
まだ食べたことないので、GW に帰ったら、絶対食べに行くぞ! 皆様もお近くへお越しの節は是非!

さといも麺リンク集

2013年1月26日土曜日

iOS オフィシャルウォッチ?

iOS 6 の時計が、スイス連邦鉄道のデザインと酷似しているという件で一時騒がれましたが、そんなにいいデザインの時計ならば、いっそ買ってみよう、ということで問題の懐中時計を手に入れました。iPad mini とともに記念撮影です。

MONDAINE の懐中時計、スイス連邦鉄道オフィシャルウォッチである証明書が付いています。クォーツの懐中時計で、手巻きではありません。デザインは秀逸で非常に見やすいですし、やや小振りな懐中時計で男女関係なく使えると思います。蓋付きのモデルもあります。卒業・就職シーズンを迎えますので、贈り物などにも使える一品だと思います。

ちなみに、私が楽天で探したときは「注文してみたら在庫なし」というお店が結構ありました。安いところではなく、納期をきちんと提示している信用できるお店から買った方がよさそうです。

わずか 9cm 、ポケットに入るボールペン LAMY pico も贈り物としておすすめです。

2013年1月17日木曜日

寒い季節でも朝から行動するために

今年は一段と寒さが厳しいですが、皆様はいかがお過ごしでしょうか。

当地群馬県前橋市は、夏は熱いことで有名ですが、冬もものすごく寒いです。あちこちを転々としてきた私も、こんなに寒いところは初めてです。「豪雪地帯」として知られる新潟県の最低気温を下回る日もかなりあります。新潟は、大陸の冷たい季節風が日本海で暖められ、それが上越国境の山々にぶつかって雪が降る土地なので、実はそれほど寒さは厳しくありません。群馬は上越国境の上空でキンキンに冷えた空っ風が一気に吹き下ろすので、非常に寒いのです。北側の部屋などは、夜は寝ていられないくらい寒くなります。

今年は 2年目ということもあって、対策として寒くなる前に “着る毛布” というものを買っておきました。巷では “ダメ人間製造器” とも言われており、これを着ているととても暖かいのです。おかげで、順調に部屋に引きこもる “ダメ人間” になっていったのですが…。

しばらくして、ふと気付いたこと。去年までは、朝、目が覚めても、エアコンのスイッチを入れてしばらくしないと行動できなかったのが、“着る毛布” があれば大丈夫です。ふとんから取り出した毛布を着ておけば、部屋があったまってなくても全然平気です。こうして、着る毛布は、“ダメ人間製造器” から、“朝の時間を有効活用するための必需品” になりました。

一つ難点を言えば、丈が長いので、トイレに行くときは脱がないといけないことですね…。

2012年12月9日日曜日

Word の問題点: リボンの不適切な分類

まず一つ目。リボンの“挿入”タブの中に、クイックパーツという機能があります。文書の断片を保存しておき、必要なときに呼び出して再利用する機能です。これを例に、リボンがいかにデタラメに作られているかという点を見てみましょう。

まず、Word を起動して、“aaaa” と入力します。今、入力した文字を選択します。その状態で、このプルダウンメニューをクリックします。

プルダウンメニューを見ると、“選択範囲をクイックパーツギャラリーに保存(S)...”というメニューがありますので、実行します。すると、次のダイアログが表示されます。

ダイアログには“新しい文書パーツの作成”とあります。操作ミスではありません。よく見ると、ギャラリーを選ぶプルダウンの中にクイックパーツとあります。ここをクリックすると、テキストボックス、フッター、ヘッダーなどのメニューが現れます。どうやら、文書パーツの中の一種をクイックパーツと呼んでいるようです。とりあえず、このまま登録してみましょう。

もう一度、このプルダウンメニューを表示させると、先ほど入力したものが、メニューの中に追加されています。やはり、クイックパーツというのは、文書パーツの中の特別なものを意味しているようです。

こうした観察から、クイックパーツと文書パーツの間の関係は、次のようになっていると推定されます。文書パーツがもっとも大きな括りで、その中に、クイックパーツ、定型句があります。文書のプロパティとフィールド※は文書パーツオーガナイザには現れませんので、文書パーツではないと理解するか、変更できない特殊な文書パーツと理解するのが妥当でしょう。

※ この 2つの機能を簡単に説明すると、Excel の関数のような機能で、自動更新される特定の値を挿入する機能です。

このプルダウンメニューの設計自体は ── 文書のプロパティとフィールドを文書パーツの一種と理解するならば ── それほど悪くはありません。問題は、プルダウンに付けられた“クイックパーツ”という名前です、これが“文書パーツ”ならば、まだ許容できます。

リボンインターフェースが採用されてから、機能を探せなくなった人が続出したのは、上位概念から下位概念へ整理されていたメニューを壊してしまったからです。物事を整理して考えるクセがついている人ほど探せません。リボン全体がこういうノリで設計されているようです。

教訓 ── メニューを作るときは、概念をきちんと整理し、上位概念から下位概念へ自然な分類階層を作る。

2012年12月8日土曜日

MOS Word/Excel 2010 Expert

二週に渡って、MOS を受けてきました。MOS Word 2010 Expert が 891点 (1000点満点、合格ライン700点)、MOS Excel 2010 が 925点(同)で、それぞれ一発合格でした。3月に MOS Specialist の方を受験して不合格でしたが、その時に比べると、ずっといい成績です。Word 2010 Specialist は受け直していないので、未だにワードアートの使い方はよく分かりません。

Specialist を受験した時の感想は、「攻略本がないとクリアできないゲーム」だったので、今回は対策本を買いました。

でも、本の部分は1ページも読んではいません。CD-ROM に入っていた模擬試験をやっただけです。おそらく、模擬試験をやってみると、試験の理不尽さと Word や Excel のインターフェースのひどさにブチ切れることになるので、一夜漬けはお勧めしません。私は一週間くらいの時間をかけて、全5回の模擬試験を一通りこなしました。間違えたところは模範解答を見ながら、「意味分からんわ」と思いながらも、「はいはいこうね」という作業を繰り返しました。これだけで、こんな成績になります。

業務上必要ということで、仕方なく受験しましたが、実際にはあまり役には立たない試験です。しかし、今回の収穫としては、模擬試験をしながら、Word や Excel のまずいインターフェースをたくさん集めることができました。それらをブログで紹介していくことにしましょう。

MOS 自体については言いたいこともたくさんありますが、NDA に守られているのでやめておきましょう。一つ言っておくとしたら、もう二度と受験したくないです。

2012年11月22日木曜日

Mac mini(Mid 2012)16GB メモリ増設

Mac mini(Mid 2012)を購入しました。一番安いモデルでいい、と買ってはみたものの、やはり VM を動かすにはメモリが足りません。いつもメモリを買っている風見鶏さんを見に行ったら、びっくりするくらい安いじゃないですか!

在庫の動きが激しいです。2012年11月22日現在在庫ありです。売り切れていても、一週間ほどで入荷しているようなので、諦めずにトライです。

到着したメモリがこちらです。

Mac mini に取り付けます。裏蓋をスライドさせて外し、メモリを交換するだけです。

一発で認識。16GB になりました。

16GB 積むと、Parallels Desktop で Windows 7 を起動しても余裕。8GB 以上余っています。これだけあるとさすがに swapfile が増えていきません。新しい Mac mini は Core i5 の Turbo Boost もあって極めて快調に動いています。

2012年8月28日火曜日

ソーシャルな手口に引っかかった

先日、研究室の直通電話が鳴りました。聞いたことのない名前を名乗るので「間違い電話では?」と言うと、そうでもない様子です。用件は年金の話とのことで、あまり聞きたくもないのですが、なんだか大学の得意先であるかのような口調なので、「着任してまだまだ知らないこともたくさんあるし、本当に得意先かもしれない。まあしょうがないから、一度くらいは話を聞くか」と思い、アポを入れてしまいました。

話を聞いてみると、得意先でも何でもない、誰がどう見ても詐欺にしか見えないマンション投資の話です。早く解放されたいので、適当に話を聞いて、特に質問もせずに帰しました(それでも1時間近くかった)。翌日、性懲りもなく電話がかかってきたので、「もう会う意思はない。個人情報保護法に基づき、不正な手段で入手した私の情報を名簿からただちに削除せよ。削除しなけれな相応の措置を講ずる。」と通告しました。先方は「不正な手段ではない。代表から聞いた」と主張しています。

そもそも一体どうしてこの番号を手に入れたんだろう? と疑問に思っていたところ、実に単純な方法で手に入れていたのでした。総務課の担当者に何気なく聞いたところ、「しばらく前に、『以前、清野先生の直通番号を教えてもらったが、忘れてしまった。教えてほしい』という電話があった」というお答え。もちろん、こんな業者に教えたことはないので、不正な手段で入手していたことの裏が取れました。

ソーシャルな手口というのは、人の親切心や、しがらみにつけ込んで人を騙す卑劣な手法です。もっと厳しい法規制が必要であると思います。自宅なら、電話に出ないとか(固定電話ならケーブルを引っこ抜く、ケータイなら銀紙でくるんでしまえば電波を完全に遮断できます。)、(インターホンの方の)アイホンで誰かを確認して、知らない人なら居留守を決め込むとか、色々対策はありますが、職場の電話は取らざるを得ないので、どうしようもないですね。唯一の対抗策は、威力業務妨害ですが、これもよほどしつこくないとダメです。手頃な対策としては、次の3つでしょうか。

  • 一度断ったものの再勧誘は法規制されている(罰則あり)ので、きっぱり断る
  • 個人情報保護法に基づいて名簿からの削除を求める(行政指導を求めることもできる。従わない場合は罰則あり)
  • 「録音している」と言うと、向こうから電話を切るそうです。彼らは不正行為の証拠を押さえられたくない犯罪者なのです

騙せそうだ、と思わせることが一番ダメですね。手強そうだ、反撃されると思わせれば、この手の輩は近づいてこなくなります。領土問題と同じです。

2012年7月12日木曜日

フラッシュはこっそりアップデートされる

ふとコンソールを見ると、不審なメッセージが出ていました。インストーラなど動かした覚えもないのに、いつの間にか、何かソフトウェアがインストールされたことになっています。しかも、色々と恐いメッセージも出ています。ふと見ると、“adobe” という文字もあります。犯人は Adobe ???

12/07/12 6:06:23.000 kernel: HFS: Very Low Disk: freeblks: 0, dangerlimit: 58
12/07/12 6:06:26.259 authexec: executing /bin/sleep
12/07/12 6:06:26.277 authexec: executing /usr/sbin/chown
12/07/12 6:06:26.412 authexec: executing /bin/chmod
12/07/12 6:06:30.345 installer: Configuring volume "Macintosh HD"
12/07/12 6:06:30.359 installer: Free space on "Macintosh HD": 427.28 GB (427276300288 bytes).
12/07/12 6:06:30.359 installer: Create temporary directory "/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T//Install.16679t8cFIJ"
12/07/12 6:06:30.367 installer: IFPKInstallElement (1 packages)
12/07/12 6:06:30.575 authorizationhost: SFBuiltinEntitled: installer is not entitled for system.install.app-store-software
12/07/12 6:06:30.606 authorizationhost: SFBuiltinEntitled: installer is not entitled for system.install.app-store-software
12/07/12 6:06:30.606 com.apple.SecurityServer: Failed to authorize right 'system.install.app-store-software' by client '/System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/installd' [16683] for authorization created by '/usr/sbin/installer' [16679]
12/07/12 6:06:30.643 installd: PackageKit: ----- Begin install -----
12/07/12 6:06:33.339 installd: Installed "PlugIn" ()
12/07/12 6:06:33.403 installd: PackageKit: ----- End install -----
12/07/12 6:06:33.651 installer: Removing temporary directory "/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T//Install.16679t8cFIJ"
12/07/12 6:06:33.663 installer: Finalize disk "Macintosh HD"
12/07/12 6:06:33.664 installer: Notifying system of updated components
12/07/12 6:06:33.665 installer: **** Summary Information ****
12/07/12 6:06:33.665 installer:   Operation      Elapsed time
12/07/12 6:06:33.665 installer: -----------------------------
12/07/12 6:06:33.665 installer:        zero      0.02 seconds
12/07/12 6:06:33.665 installer:        disk      0.01 seconds
12/07/12 6:06:33.665 installer:     install      3.28 seconds
12/07/12 6:06:33.665 installer:     -total-      3.32 seconds
12/07/12 6:06:33.913 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/launchctl load /Library/LaunchDaemons/com.adobe.fpsaud.plist
12/07/12 6:06:34.054 authexec: executing /bin/rm
12/07/12 6:06:34.354 authexec: executing /bin/rm
12/07/12 6:06:34.463 authexec: executing /bin/cp

/private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/decryptedFile.dmg をマウントした結果、フラッシュのインストーラであるということはわかりました。また、HFS: Very Low Disk: freeblks: 0, dangerlimit: 58 は、decryptedFile.dmg をマウントした時に表示されたものであることが分かりました。ディスクイメージのフリーブロックが 0 なのは、特に問題ありません。危険なものではない、というのが分かって、とりあえず一安心です

フラッシュのアップデートが行われなくて、セキュリティ的に穴だらけなのは知ってます。だからと言って、無断でこっそりアップデートするのは、ウィルスと同じ挙動じゃないですか? 私は、普通のアプリのように「アップデートがあります、インストールしますか?」というダイアログが表示されるものと理解していましたが、違うんですね。裏でこっそりインストールされると分かっていたら、この機能をオンにすることはなかったでしょう。

こういうの勘弁してもらえませんかね、Adobe さん。

2012年5月8日火曜日

Windows はなぜ使いにくいのか?

Windows は使いにくい。Windows 8 がまもなく登場するが、このことはどうにも直りそうもない。現在、Windows に影響された開発者によって設計された、使いにくいシステムが乱造され、社会に害悪が撒き散らされている。普段から Windows を使っていれば、そのひどさに気付くことができないまま、システムを設計してしまうからだ。開発者は Windows を使うべきではない、というのが私の信念である。

Windows がもっともだめな点は、メンタルモデルが形成しにくいところにある。メンタルモデルとは、ユーザの頭の中にある「こいつはこういう動きをする」というモデルである。ユーザは、そのモデルに基づいてシステムの動きを予測し、操作する。メンタルモデルは、実際の仕組みと一致している必要はなく、ユーザ独自の世界観でかまわないが、外部から観測可能な振る舞い(こういう操作をしたら、こういう結果になる)は一致している必要がある。ユーザは、システムを使いながらメンタルモデルを獲得し、システムに馴染んでいく。ユーザの予測を裏切らないことが、「使いやすさ」の必要条件の一つである。

具体的な例を見よう。C:¥Program Files の中にあるアプリケーションのアイコンを、デスクトップにドラッグ&ドロップしてみる。手近にあった Safari で試してみる。

Explorer でのドラッグ&ドロップは、通常はファイルの移動である。これがユーザが最初に獲得するメンタルモデルである。アプリケーションをドラッグ&ドロップすると、デスクトップにショートカットが作られるというのは、メンタルモデルに反する極めて奇妙な振る舞いであるが、とりあえず、Windows はそういうものだと納得するしかない。これが、Windows を使い続けて、少し修正されたメンタルモデルである。

次に、TeraPad のアイコンを、デスクトップにドラッグ&ドロップしてみる。

今度は、移動になる。私は、メンタルモデルに従って、ショートカットが作成されるものと期待していたにも関わらずである。一体、いかなる違いによって、このような振る舞いになるなのか、全く理解不能である。もちろん、何か理由はあるのだろうが、多くのユーザがそれを理解し、メンタルモデルを修正することができるのだろうか? 仕方がないので、アイコンをドラッグして、出てくる「移動」や「リンクを作成」のメッセージに頼ることになる。つまり、事前に結果を予測することはできず、「やってみるまで何が起こるか分からない」のである。

では、最後に、C¥Program Files¥Safari フォルダの中にある、すべてのファイルやフォルダを選択し、デスクトップにドラッグ&ドロップにしてみよう。どうなるだろうか。私のメンタルモデルに基づく仮説は「アプリケーションはショートカットが作成され、その他のファイルやフォルダは移動される」である。実際にやってみたところ、なんと Safari のアプリケーションを含めて、すべてのファイルとフォルダが移動された。もはや、メンタルモデルどころの話ではなくなっている。

なぜ「移動」で一貫できなかったのか、甚だ疑問である。Windows には、このように「場当たり的に」作られた機能が数多くあるのだ。場当たり的であるが故に、メンタルモデルが継ぎはぎだらけになってしまう。これこそが Windows の使いにくさの原因である。

(不定期に続く)

2012年4月10日火曜日

超短焦点プロジェクター

超短焦点プロジェクター、エプソン EB-485WT を買いました。EB-485WT はプロジェクター本体からスクリーンまで、最短で 7cm の距離があれば投影できるので、プロジェクターの設置場所の自由度が一気に上がり、研究室を広く使えます。プロジェクターの値段は高いですが、なんだかんだで、それ以上に土地は貴重です。

こんな感じで設置してみました。プロジェクター本体の端から壁までの距離は 20cm です。

出荷時設定は、なぜか画像を縮小して表示する額縁設定になっていたので、アスペクト比などをいじって、解像度をフルに使って表示する設定に切り替えます。ピント調整は、なぜかフィルターのフタを開けたところあって、ちょっと不便です。

設定が終了したので、研究室の壁に投影してみます。

写真の投影画面のサイズは 200×120cm くらいです。研究室で使うには、ちょっと大きすぎるかもしれません。もうちょっと壁に寄せれば小さくできるので、これは特に問題なしです。デジタル台形補正などの機能を一切使っていない、純粋にプロジェクターの最大解像度の画面です。

上の写真をクリックすると大きくなります。大きくして見ると、写真の画面上の方が、波打ってるのがお分かりになると思います。この件については、エプソンのサポートと何度か電話でやりとりしたのですが、最終的に「壁が波打っている」という結論に至りました。確かに、プロジェクター本体を壁に対して水平に動かすと、波打ちは全く移動せず、壁が原因であることがわかります。これまで、投影距離 80cm の平凡なプロジェクターを使っていた時には全く気付きませんでした。平面に見える壁も、実はそうではないのですね。お金があるときに、スクリーンを買うことにします。

電子黒板機能もあるので、色々と試してみたいと思います。特に、ゼミ生諸君は積極的な活用を求む!

2012年3月7日水曜日

全角カナと半角カナの変換

すぐ忘れるのでメモ。perl のワンライナーで全角カナと半角カナを変換します。非標準のモジュール Lingua::JA::Regular::Unicode が必要です。

半角カナ → 全角カナ

perl -CIO -MLingua::JA::Regular::Unicode -ple '$_ = katakana_h2z($_);'

全角カナ → 半角カナ

perl -CIO -MLingua::JA::Regular::Unicode -ple '$_ = katakana_z2h($_);'

その他

全角英数と半角英数、全角スペースと半角スペースなども、同様にドキュメントを読んで作るべし

Perl で UTF-8 が絡むと、ややこしくて気軽には書けない。久しぶりだと簡単に思い出せないレベルまで複雑化しているような気がする…。

2013-03-28追記

久しぶりに使ってみたら、どこかの仕様が変わったらしく動かなかったため修正($_ = を追加)。

2012年3月4日日曜日

MOS 受けてきた

Windows Update で「Microsoft corp. を信頼しますか?」と聞かれて、信用なんかできるかい! と迷わず「いいえ」をクリックした私が、MOS (Microsoft Office Specialist) 試験を受験してみました。業務上、Office のスキルは要りませんが、資格そのものが必要なのです。今後も Office とか使う気はサラサラありません。文章書くなら LaTeX でしょ? 普通。

Excel 2010 ProfessionalSpecialist の結果は 775点で合格。1000点満点で 700点以上合格ですからギリギリです。Excel は表計算ソフトとしてはそれなりに(?)使うものの、「これって表計算の世界ぶち壊しじゃね?」と思う Microsoft 独自機能はまるで使わないので、その手の問題はほとんど分かりませんでした。問題文に書いてあることが理解できないレベルです。

前日にツィッターで「使って 5分でブチ切れた」と書いた Word 2010 ProfessionalSpecialist の方はというと、 570点で不合格。試験中に、Word がしばらく固まって、「原因不明のエラー」とかダイアログが出ました。試験監督の手を煩わせることがなく復旧したので、固まっていた間、しっかり試験時間を消費してくれました。さすが Microsoft です。こちらも、Microsoft のヘンテコリンな機能に関する問題は、問題文が理解できないものが多かったです。

どちらも共通して言えることは、攻略本がないとクリアできないゲームというノリの試験です。試験時間も結構ギリギリです。普通に使えてるから対策しなくていいだろと思っていると、合格できません。Mac OS X の伸びやかに動くマウスカーソルと違って、カーソルが初速から高速に動くので使いにくかったです。リボンインターフェースが最悪で、機能階層じゃなくて、コンテキスト階層で分けられたため、似たような機能が複数のタブに配置されてしまい、「どっち?」というのも、いくつかありました。合格したいなら、ちゃんと対策の問題をやった方がいいです。こいつが、大リーグ矯正ギブスではなく、ヘッポコ野球矯正ギブスみたいなソフトで評判は最悪ですが。

必要な資格は ProfessionalSpecialist レベルじゃなくて、Expert レベルです。とりあえず不合格の Word は放置して、Expert を受けてみたいと思います。それはそうと、Mircosoft はそろそろソフト作るの止めてくれないかなあ。世界中の迷惑だよ。

2012年1月11日水曜日

USB メモリ全体を暗号化する

Mac OS X Lion からでしょうか。いつの間にかこの機能がついていました。これまで、USB メモリを挿入 → 暗号化イメージをマウントという 2段階を踏まないといけなかったのが、USB メモリの挿入だけで済むようになったので、画期的です。

USB メモリ全体を暗号化するには、“ディスクユーティリティ” を使って USB メモリを初期化(フォーマット)する必要があります。物理ボリューム(デバイス、“31.91GB Mass Storage…”)を選び、“消去” タブの中の“フォーマット”プルダウンメニューからに、“Mac OS 拡張(ジャーナリング、暗号化)” を選択します。論理ボリューム(パーティション、スクリーンショットでは“名称未設定”)だけを暗号化することはできないようです。

“消去…” ボタンを押すと、シートが出てきてパスワードを聞かれます。ここで決めるパスワードは、USB メモリをマウントする時に使います。おそらくこのパスワードを元に暗号化されるのだと思います。表示されているシートには「ログインパスワードと復旧用パスワード云々…」とありますが、これは誤りでしょう。これらで暗号化されると、特定の Mac でないと USB メモリが使えなくなるか、その不便を避けるには、重大な機密情報をわざわざ USB メモリにコピーするという愚を犯すことになってしまいます。“消去”ボタンを押すと初期化が始まります。やたら時間がかかります。

先ほどのシートで、「ファイルは…暗号化される」とありますが、主語が間違っていて、ボリューム全体が暗号化されているのだと思います(未確認)。Finder でボリュームの情報を見ると、フォーマットは Mac OS 拡張(ジャーナリング、暗号化)とありますので、「ファイル(のコンテンツ)だけが暗号化されている」と考えるよりは「ボリューム全体が暗号化されている」と考える方が妥当でしょう。

暗号化された USB メモリを差し込むと、ダイアログが出てきて、パスワードの入力が促されます。パスワードをキーチェーンに記録しておけば、ダイアログは出ませんので、普通の USB メモリとして使えます。

背景

MacBook Air (Late 2010) の SSD の容量不足がいよいよ深刻になってきました。残り 5GB が通常の状態で、ちょっと負荷が高くなると、swapfile がたくさん作られて残り 1GB という状態です。通常 SSD は満遍なく記憶領域を使うように作られていて、書き込みを分散させて全体として書き込み寿命が長くなるように設計されています。容量が残り少なくなってくると、同じ箇所に集中して書き込まれ、書き込み寿命を使い果たす危険性が高くなります(最近はこのあたり賢くやってくれるのでしょうか?)。何か手を打たねばなりません。

5月に MacBook Air の新型機が登場する見込みが高いので、今すぐ新しいのを買うとか、SSD を増設するというのはどうも気分が乗りません。多少不便なのを覚悟の上で、手持ちの 32GB microSD とほぼ USB ポートに埋没する形のカードリーダを組み合わせて、5月まで乗り切ることにしました。ただ、この手のカードリーダは脆いので、大事なデータは入れないようにした方が良さそうです。