Archive for the 'tech' Category


配列からユニークなデータを取り出す

perl-mongers.orgで、ハッシュを使って配列からユニークなデータを取り出す方法が紹介されていたので(「Hashを使ってユニークにしよう!」)、PHPとPythonではどうやるのか確認してみました。

PHPの場合:

PHP:
  1. <?php
  2. $cars = array('honda', 'honda', 'suzuki', 'toyota', 'toyota', 'daihatu', 'mitubishia');
  3. $report = array_unique($cars);
  4. var_dump($report);

実行結果:

PHP:
  1. array(5) {
  2.   [0]=>
  3.   string(5) "honda"
  4.   [2]=>
  5.   string(6) "suzuki"
  6.   [3]=>
  7.   string(6) "toyota"
  8.   [5]=>
  9.   string(7) "daihatu"
  10.   [6]=>
  11.   string(10) "mitubishia"
  12. }

Pythonの場合:

PYTHON:
  1. cars = ['honda', 'honda', 'suzuki', 'toyota', 'toyota', 'daihatu', 'mitubishia']
  2. report = set(cars)
  3. print report

実行結果:

PYTHON:
  1. set(['daihatu', 'honda', 'toyota', 'suzuki', 'mitubishia'])

見てのとおり、なんの工夫も要りませんでした。工夫が必要ないほうがラクでいいんですが、Perlネタが盛り上がるのは随所で工夫しがいがある言語だからかも知れませんねー。

Linux版Skypeのpipelogin

LinuxのSkypeのヘルプメッセージを見て気付いただけですが、

CODE:
  1. $ echo skypename password | skype --pipelogin &

というようにして、コマンドラインからSkypeネームとパスワードを渡してSkypeクライアントを立ち上げることができる模様。
ボットを動かしたりするのに使うのかな。

HTMLから作ったAIRアプリで日本語を入力できない件

AIR 1.0 Beta 1についての話ですが、会社の同僚から「AIRアプリをHTMLから作ると、フォームに日本語を入力できない」と聞いていたので、そもそもそういうものなのか調べてみたところ、Release NotesのKnown IssuesのHTML supportの項目に、

Only Western characters are supported.

としっかり書いてありました。
これはきびしすぎる。ということは、MXMLを勉強しないといけないのか。
Flash CS3がAIRに対応したら、Flash CS3で開発するのが主流になりそうなので、MXMLには触れずに済ませたいのだけど。

今さらprototype.js入門

今さら、ようやく、prototype.jsの使い方を学習しています。
レスポンスヘッダのX-JSONフィールドに書いてあるJSONを、Ajax.Requestのコールバック関数の第2引数で受け取れることに感心しましたが、これは先人のJavaScript使いの人たちが1年半以上前に通った道ですね…。遅すぎ。
Event.observeでイベント処理の設定をするときの定石がよく分からなくて、windowがloadされたところで、まとめてEvent.observeでidを指定してイベント処理の設定を行っているんですが、何かが間違ってる気がします。

Google Analyticsの話

Google Analyticsの話。ちょっと独り言です。

urchin.jsを見てみたところ、cookieは、Webページのホストドメインに対して設定される(ただし、wwwの部分は除外されるように見える。例えば、www.example.comのページの場合、example.comに対して設定される)ようだ。しかし、Google Analyticsのcookieが気に入らないと思っても、ホストドメインに対して設定されるcookieをブロックしてしまうのは、自分にとっては利便性の点で非現実的に感じられる。

そこで、次にできることは、urchin.jsが設定するcookieに保存される情報をGoogleに送信しないことだと思う。これらの情報は、

  • http://www.google-analytics.com/__utm.gif
  • https://ssl.google-analytics.com/__utm.gif

上記のgif画像へのリクエストが行われることによって送信されている。なので、Googleに情報を送信しないためには、ブラウザが上記のgif画像を読み込まないようにすれば良いはず。これは、Firefoxの場合は、オプションの「コンテンツ」タブから画像の読み込みの例外サイトを設定することによって実現できる。

という考え方でいいのかな。もし、勘違いがあれば、ご指摘ください。

Apolloのalphaバージョンは、ドラッグ&ドロップをサポートしていない?

Apolloで、ローカルハードディスクにあるflvファイルを再生するアプリを、練習用に作ってみようと思い立ちました。

まず、flvファイルを受け取る方法として、エクスプローラーのファイルのアイコンをApolloアプリケーションのウィンドウにドラッグ&ドロップする方法を調べてみたのですが、現在のalphaバージョンではできないような気がしてきて、やる気が消失。

Adobe LabsのApollo:DeveloperFAQの"What are some of the features that are not included in the Apollo alpha?"という項目に、"Drag and drop support"って書いてあるんですよね。

ファイル選択ダイアログから選ばせるのは面倒だなあ…。

Apolloを試してみた

風邪が治りきらず(出掛ける気が起こらず)むかついたので、Apolloでの開発を試してみましたよ。

swfベースのApolloアプリケーションの場合は、下記の手順で作れました。

1. mxmlファイルかasファイルを、amxmlcコマンドでコンパイル。エラーがなければ、swfファイルが生成されます。
2. application descriptorと呼ばれるxmlファイルをテキストエディタで作成。アプリケーションIDや、使用するswf、アイコンといった情報を指定します。
3. adlコマンドの引数に上記のxmlファイルを指定して実行すると、デバック用にApolloアプリケーションが起動できるので、これで動作確認を行います。
4. adtコマンドを使ってパッケージ化すると、airファイルが生成されます。

htmlベースのApolloアプリケーションの場合は、上記の1の代わりにhtmlファイルを作成します。application descriptorの中で、そのhtmlを指定します。
JavaScriptでApolloランタイムのクラスを使うには、runtime.flash.filesystem.Fileというように、runtimeの下に(APIレファランスに書かれている)パッケージ名・クラス名を書くことになります。
しかし、Windowsの場合は、HTAでいいじゃんという気が…。

ちなみに、ドキュメントの"Create your first Flex-based Apollo application using the Apollo SDK"というページのapplication descriptorは間違っているので注意。nitoyonさんのブログの「Apollo コンパイルではまった...」というエントリを参照してください。

cygwinの調子が悪くなったら

cygwinのsshdがstartできなくなったので、あれこれ確認していったら、またしても知らないうちに別のcygwin1.dllがインストールされていたのが原因だった。たぶん、これで3回目。今後は、cygwinの調子が悪くなったら、最初にこれを確認するべし。cygwinのインストール状態は、cygcheckコマンドで確認できる。

Next Page »