「コレジャナイロボ」に一目惚れ

zuzara.comさんのブログで発見しました。
プレゼントを開けた子供から発せられる悲痛の叫び。楽しいはずのクリスマスが突如、修羅場に。こんな経験ありますか?できれば避けたいものです。しかし人生、欲しい物が何のリスクもなしに手に入るなんて話はそうはありません。欲しい物を手に入れる為には努力も必要だという事を何らかの機会に知っておくのも良いでしょう。「コレジャナイロボ」はその絶妙な偽物感、カッコ悪さにより、その事をお子さまにトラウマ級の効果をもってお伝えする事でしょう。情操教育玩具として是非お試しください。
自分の中で大ヒット。もう何度見ても笑ってしまいます。zuzara.comさんは実際に購入されたようで、そちらの写真を見てもらったほうが雰囲気がよく分かるかと。
Amazonでは残りあと1個になっています。これがロングテールの威力か… (違

前もってプレゼントする相手の欲しいものを聞いておくなどして、期待させておくと効果大かも。「コレジャナイロボ ( 敵 )」もあるらしい。

「えいご漬け」で英語力アップ

先日、Nintendo DSの えいご漬け を買いました。箱から取り出して、まず最初に英語力テストをしたら、なんとEレベルだったのでへこみました。一生この小さな島国から出ないで、ひとり静かに暮らしていくしかないな、と覚悟を半分決めました。ところが!ところがですよ!その後はテストをするごとに2ランクずつアップして、1週間も経たないうちに、なんとAAAレベルになったんです。凄い威力です。>えいご漬け

なーんて、本当のところは全然変わってない気がします。ま、私は褒められて伸びるタイプなので、OKなんですけども。正解時の音声は、もちろんホメ言葉にしています。「Great job!」とか「Super!」とか言われると単純に気分がいいです。

それから、マリオカートは星2つ(☆☆)になりました。これ以上は、たぶんムリです。Wi-Fi対戦では、けっこう負けてるし..

わんわんワールドとラジログ

今日は、わんわんワールドでお祭り騒ぎがあったのでこんな時間まで起きてます。

「ラジログ放送するから、テレビ東京に集まれー」という話が伝わってきて、テレビ東京のある港区虎ノ門に行ってみると2匹がインターネットラジオのURLを宣伝していました。昨日の夜もotsuneさんが放送(宣伝のみだそうです)していたのですが、今日は話のネタが「わんわんワールド」だったので開発者のwanparkさんも登場してお祭り騒ぎでした(画像参照)。とにかく面白いなぁと思ったのがそのインタラクティブ性。DJが何か問題発言をすると、犬達があーだこうだと言い、またそれにDJが答えるという流れ。WBCの決勝の時とかTV見ながらサンディエゴのスタジアムに集結したら面白かったでしょうね。

わんわんワールドで遊ぶために、はてなのアカウントを取る人も出てきているそうで、非常に可能性を感じるサービスです。今迄のオンラインゲームでも同じようなことは出来たといえばその通りなのですが、気軽に始められること、ちょっとした空き時間で遊べることがポイントなのではないかと思います。世間で、PSPよりもNintendo DSがバカ売れしているのも同じ理由で、ただ高機能なだけではユーザは付いて来なくなっています。わんわんワールドには、是非ともNDSの方向で続けていって欲しいところです。

話は変わりますが、某所に作った秘密基地を他の犬に見られてしまい、秘密のプロジェクトがばれてしまったのではないかと焦りました。でも、気づかれなかったようで一安心。もうちょっと賢くしないとなぁ。

# うちの親、自分の息子がいい歳して「わんわんワールド」とか「秘密基地」とか言ってるのを知ったら泣くだろうな..

Pythonで書いたスクリプトをデーモン化する方法

某プログラムをcronで呼び出していたのですが、これだと1分おきにしか実行できません。次のようにすれば、30秒単位で実行することもできますが、通常は1分単位で、ある時は10秒単位でというように状態によって間隔を変えて処理したかったのでデーモン化の方法を調べました。

* * * * * date & sleep 30 ; date

Chris' Python Page にてそのものずばりの例を発見しました。指定したユーザで実行できるし、init.dスクリプトを書けば、OS起動時に自動実行することもできます。すばらしー

10秒おきにログ(/var/log/pydaemon.log)に時間を書き出すサンプル
#!/usr/bin/env python

###########################################################################
# configure these paths:
LOGFILE = '/var/log/pydaemon.log'
PIDFILE = '/var/run/pydaemon.pid'

# and let USERPROG be the main function of your project
#import mymain
#USERPROG = mymain.main
###########################################################################

#based on Jurgen Hermanns http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66012
import sys, os

class Log:
    """file like for writes with auto flush after each write
    to ensure that everything is logged, even during an
    unexpected exit."""
    def __init__(self, f):
        self.f = f
    def write(self, s):
        self.f.write(s)
        self.f.flush()

def main():
    #change to data directory if needed
    os.chdir("/tmp")
    #redirect outputs to a logfile
    sys.stdout = sys.stderr = Log(open(LOGFILE, 'a+'))
    #ensure the that the daemon runs a normal user
    os.setegid(500)     #set group first "pydaemon"
    os.seteuid(500)     #set user "pydaemon"

    #start the user program here:
    import time
    while 1:
        print time.ctime(time.time())
        time.sleep(10)

if __name__ == "__main__":
    # do the UNIX double-fork magic, see Stevens' "Advanced
    # Programming in the UNIX Environment" for details (ISBN 0201563177)
    try:
        pid = os.fork()
        if pid > 0:
            # exit first parent
            sys.exit(0)
    except OSError, e:
        print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror)
        sys.exit(1)

    # decouple from parent environment
    os.chdir("/")   #don't prevent unmounting....
    os.setsid()
    os.umask(0)

    # do second fork
    try:
        pid = os.fork()
        if pid > 0:
            # exit from second parent, print eventual PID before
            #print "Daemon PID %d" % pid
            open(PIDFILE,'w').write("%d"%pid)
            sys.exit(0)
    except OSError, e:
        print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror)
        sys.exit(1)

    # start the daemon main loop
    main()
通常は、実際に実行するプログラムを別に用意しておいて、呼び出すのでしょうね(import mymainの箇所を参照)。

simplejson 1.1

JSONをPythonの変数との間で相互変換する simplejson 1.1 を使ってみました。

こんな感じで簡単に使えるはずなんですが、これが結構ツンデレ系。変数名をちゃんとダブルクォーテーションでくくってないとエラーになってしまいます。某ワンダーランドで使うには、前処理が必要でいやーんな感じ。JSONDecoderのクラスをオーバーライドしてあげればいいのかな..

>>> import simplejson
>>> simplejson.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
>>> simplejson.loads('"\\"foo\\bar"')
u'"foo\x08ar'
>>> from StringIO import StringIO
>>> io = StringIO('["streaming API"]')
>>> simplejson.load(io)
[u'streaming API']

最近、早朝ハックに勤しんでるわけなんですが、「移動/メッセージ表示/だちる」などは自動で出来るようになりました。GPS携帯との連動は、思ったより簡単そうです。にゃんにゃんワールドは、時間がかかりそう..

(2006/03/24 追記)

Introducing JSON を見ると、stringはダブルクォーテーションでくくるのが正しいようです。だから、simplejsonの動作は間違いではないですね。

GPS携帯と「はてなわんわんワールド」の連携

ここギコ!:WWW::Hatena::WanWanWorld作った

携帯電話のGPSでの現在位置をワンワンワールドに送っていったら、友達のユーザがPCからそれを見て「今あいつ××に居るな」とか判ってメッセージ送れたりするようなのがあったら面白いかなと。

なもんで、その基礎となるサーバサイドからのワンワンワールド制御(さすがにAJAXでは携帯GPS情報は取れねー)を行うためのモジュールを作りました。

やられたー。実際に自分がいる場所を「わんわんワールド」に通知できたら面白いなと思って、ちょうど私もいろいろと調べていました。携帯電話(GPSでなくても簡易位置情報で充分です)から自分がいる場所を通知すると、サーバがそれを受け取ってわんわんをその場所に移動させるような仕組み。Ajaxなので、外部からはてなのサーバにアクセスするのは簡単そうですからね。

さらに「わんわんワールド」開発者の wanparkさんの日記 に次のような記述が…

わあ。仕様がふらふらなので1週間で動かなくなりそう。こっちでちゃんとAPI作ります。その前にJavaScriptが動けばいいやみたいな感じなので少しはまともにしたいなあ。あとおうちで見せるものも早く作らないといけないし。

なるほど、ちゃんとAPIを用意してくれるのですね。これは面白くなりそうだなー

OpenBSD/zaurus - 生粋のBSD環境を掌の上で楽しむ

という記事がMYCOM PCWEBにて掲載されています。SDカードが使えないというのが痛いですが、portsが使えるOpenBSDも面白そうですね。記事を書いたのは、徒然な覚書のdipusさんのようです。pdaXromのKonquerorより良さそうなのは気のせいかな。

ビックカメラSuicaカード申し込み

携帯電話でモバイルSuicaを使うためには、JRのVIEWカードを作らなければいけません。割引になるわけでもないのにJRに年会費500円を払うのは嫌なので、前年にクレジットカードの利用があれば年会費無料のビックカメラSuicaカードにしました。他にも新銀行東京のカードも年会費無料ですが、ビックカメラで買いものをして貯まったポイントをSuicaにチャージできるという点に惹かれました。

W41CAだけでいつでもチャージできるので、これで券売機に並ぶことは完全になくなります。Suicaとビックカメラのポイントカードを持ち歩く必要もないので、財布が軽くなるのもいいですね。30分くらい待って受け取ったカードは仮のもので、本カードが届くまで2〜3週間かかるそうです。早く届かないかな。

Tadashi YANAGIのケーキ

Zope Developer's Campでご一緒した森さんお勧めのケーキ屋さん、Patisserie Tadashi YANAGIに行って来ました。東横線の都立大学駅近くの目黒通り沿い。詳しい場所は、Moblog地図を見てください。季節柄、苺を使ったケーキが多くて、「苺のショートケーキ」と「マロノフ」をチョイス。(ロマノフだったかな?とにかくロシアっぽい名前でした。)

家に帰ってから、一人で2つ食べました。ショートケーキがとても美味しかったです。今度は「ジュピター」を試してみよう。 Patisserie Tadashi YANAGI
東京都目黒区八雲2-8-11
TEL:03-5731-9477
水曜休

国立天文台のネットワーク

次号から季刊誌になるUNIX MAGAZINEの連載でもお馴染みの 国立天文台 。その本部が置かれている三鷹キャンパス。

会社帰りに通りがかっただけなのに、守衛さんに聞くと無料で見学できるそうなので、思わず立ち寄ってしまいました。

閑静な森の中、アインシュタイン塔や大赤道儀室などのノスタルジックな建物を 見学することができます。望遠鏡は、ほとんどカール・ツァイス製のようです。この日は、大学を卒業してこの4月から国立天文台で働くという男の子が一生懸命に説明をしてくれました。

Shibuya.js

http://shibuyajs.org/

10 年。

世界が JavaScript の真の実力を発見するのに要した時間である。

1995 年、Netscape 社の Brendan Eich により開発・設計された JavaScript は、「世界で最も誤解されたプログラミング言語」などと呼ばれもした、ともすれば不遇とすらいい得る歳月を経て、あたりのそこここに満ち充ちていた「Web の旧来的なインタラクションの窮屈さを革命したい」という思いによって、ふたたび表舞台に招来された。

JavaScript は、Web の「あちら側」と「こちら側」とを取り結ぶ、もっとも古くてもっとも新しい、そして、もっとも重要な技術だ。次の 10 年を自らの手で創り出すために、我々は Shibuya.js を結成した。

2nd life さんが企画している「Rediscover the JavaScript」な人達の集まり。第1回開催が楽しみです。

おやつ持って行きます。

prototype.jsを使ってClassにイベントを一括割り当て

HTMLのロード時に<div class="popup">に一括してイベントを登録するプログラムを書いてみました。onClick=なんたらとか書かなくていいので、HTMLはビューに関する記述のみになってすっきりします。

JavaScriptってかなり面白いですね。プロトタイプベースのオブジェクト指向言語っていうのが、最初よく分からなかったのですが、なるほどこれは奥が深い。クロージャの使い方もやっと分かりました。PerlやPHPでも無料掲示板CGIレベルのもの(巷の入門書は、たいていこのレベル)からライブラリやフレームワークを駆使した高度なものまでありますが、ちょっとかじっただけでは知ることのできない世界がそこには広がっている感じ。

popupWindowFactory = Class.create();
popupWindowFactory.prototype = {
    initialize: function() {
        Event.observe(window, "load", this.activate.bind(this));
    },

    activate: function() {
        document.getElementsByClassName('popup','DIV').map(function(elm){
           Event.observe(elm, 'click', alert('Message.'), false);
        });
    }
};

(2006/03/15 追記)

getElementsByClassNameなんて便利な関数があったので修正。さらにスマートになりました。

DELLのPowerEdgeが13,980円

Dell - オンライン広告限定ページ

今見たら、既に売り切れていましたが、確かこんな感じのスペックでした。

  • Pentium(R) 4(2.80GHz, 1MB L2 Cache, EM64T, 800MHz FSB)
  • 256MBメモリ
  • 80GB HDD

29,980円のPentium Dは、まだあるようです。CPU単体の価格とほとんど変わらないじゃん… 自宅サーバをこれにしたら速くなるんだろうな、と思うと非常に惹かれます。でも、サーバ用マザーボードで癖があるのと、家に置くには音が煩かったような気がして躊躇しています。とか言ってるうちに売り切れちゃうかも。

  • Pentium® D プロセッサー 820 (2.80GHz)
  • 512MBメモリ
  • 80GB HDD

ギャオ ヒカリ

USENからこんなメールが届きました。

                              平成18年3月14日

お客様各位

                               株式会社 USEN

拝啓 時下、益々ご清祥のこととお慶びを申し上げます。
日頃は、当社サービスをご利用いただきまして、誠に有難うございます。

この度、ご提供しております個人向け光ファイバインターネット接続サービス
名称を、本年4月1日より「BROAD-GATE 01」から「GyaO 光」(ギャオ ヒカリ)
に変更することとなりましたのでご案内申し上げます。
(以下略)

素敵な名前ですね。

矢野顕子『はじめてのやのあきこ』

藤沢のタワーレコードで買いました。これは、かなり良いです。
デビュー30周年を記念して、いろいろな人とコラボレーションしています。小田和正とか井上陽水とか上原ひろみとか。どの曲も素晴らしい出来なのですが、YUKIと歌っている「ごはんができたよ」がお気に入り。何だか聴いているだけで幸せな気分になります。忌野清志郎との「ひとつだけ」もNHKホールで見た変なブーツが頭に浮かんできて、これまた幸せ。

楽しかったよ きょうも〜♪

  1. 自転車でおいで (槇原敬之)
  2. 中央線 (小田和正)
  3. PRESTO
  4. ごはんができたよ (YUKI)
  5. 架空の星座 (井上陽水)
  6. ひとつだけ (忌野清志郎)
  7. そこのアイロンに告ぐ (上原ひろみ)

はじPy発見!

藤沢のミスドで「初めてのPython」を読んでいる人を発見しました。場所柄からいって、SFCの先生なのかなぁ。まさにそんな感じの風貌。
という私は、隣りでPloneをいじってますが。

Blogの影響力に戸惑う

「二つ目草の写真帖」 というBlogがあります。私が購読している中でも数少ない技術系以外のBlogで、デジタル一眼レフでいつも綺麗な写真をアップされているので毎日見ています。そこに、 こんなこと が書いてありました。

さて、今日1通のメールを受け取りました。 2月12日に記事にしたレストランの関係者の方からでした。 記事の中で私が紹介した料理は、この3月から内容と価格が変更になっているのだそうです。 それで、当ブログの記事のために、「価格・内容の違いによりお客様よりのクレームが多発 しております。」ということになり、「大変お手数ですが、内容の変更もしくは削除を お願い致します。」という依頼でした。

なんだか悲しい気分になってしまいますね。エントリを書いた日付も残っている訳ですし、私は修正する必要はないと思います。2月の時点での価格が間違っているならまだしも、お店の人が3月に価格改訂したと説明すればよいだけですから。

このレストランは大切なことを2つ忘れています。ひとつは、クレームが多発しているということは、それだけこのBlogを見て来店した人が多いということ。クチコミ・マーケティングの重要性を分かっていないです。少なくとも、私はこのエントリを読んだ後でこのレストランに行きたいとは思いません。

もうひとつは、ここで問題なのは「価格と内容がお客さんが期待したものと違っていた」ということ。お客さんは2月時点のサービスを期待しているわけで、ブログの内容を修正したら、来店する人が減るかもしれないということを完全に忘れていますね。つまり、3月に変更した価格/内容のほうに問題があるのではないかということ。


と、私は基本的に"修正しなくてよい"派なのですが、Blogを読んでこのレストランに行った人が違いに戸惑うというのは避けたいです。なので、該当するエントリに「(追記)その後、価格/内容に変更があったようです。私は行ってないので詳細は分かりません。」とか書いておくのが親切かもと思いました。

デブキャンの後は、姉キャン

なんだか巷で話題になっているらしいので、買ってきましたよ、『お姉さん系CanCam』

OLがいっぱいの女性ファッション雑誌売り場に行って、この本をパラパラとめくってからレジで買うのは、ちょっと勇気がいりました。まー、「うちの女房に頼まれたんで」みたいな顔をしてたんで、誰も変な人だとは思ってないはずです。たぶん…

この雑誌は、25〜30歳くらいのCanCam以上Oggi未満な女性をターゲットにしているらしいです。なるほど、「コムスメに勝つ!」とかいう敵意むきだしな感じではなく、「かわいいだけはもう卒業」とか何となく余裕を感じさせます。モデルは、7〜8割くらいが 押切もえ さんで、エビちゃんが出てるページは数えるほど。他には相沢紗世さんも出てますねぇ。

っていうか、この雑誌やばいです。ヘタな写真集買うより全然いいです(買ったことないけど)。CanCam系は自分的にドンピシャで、見てるだけで幸せな気分になれます。やっぱり、男性が読んでも楽しいってことは、それだけ可愛くみせるための工夫が詰まっているってことなんでしょうね。

Python Workshop the Edge 2006申し込み

スラッシュドットでアナウンスされていたので、焦って申し込みを済ませました。

Python Workshop the Edge 2006

  1. kizasi.jp : 今日,ブログで話題になったことって?
  2. やり直しのための Python プログラミング
  3. Skype 〜 活用と連携
  4. 最新Webアプリケーションフレームワーク比較
  5. IronPython のご紹介

オールスターな面々で今から待ち遠しいです。 kizasi.jp の中の人と、 Skype の中の人と ymasuda.jp の人。TurboGears, Djangoといったフレームワーク比較も要チェックです。場所がMicrosoft本社っていうのは珍しい気がするけど、IronPython繋がりだからかな。


(2006-03-09追記)

案の定、定員が埋まってしまって申し込み終了となりました。申し込み開始から一週間,開催一ヶ月前に受付終了だそうです。危ないところでした(^^;

『Ploneによる簡単Webコンテンツ管理』秀和システム

『Ploneによる簡単Webコンテンツ管理 オープンソース徹底活用』という本が発売になっているんですね。著者は、先日のZope Developers Campで一緒だった寺田さんと永井さんです。

既に購入された方によると、

JuNya KOBORI's Miscellaneous Impressions Page
ぱらぱらとめくってみた程度の感想ですが、Zope や CMF などのコアな部分はあまり深く立ち入らない感じで、CMS とは何ぞやから始まって、Plone のインストール、見た目のカスタマイズを行う程度のどちらかというと初心者向けな本になるのでしょーか?? Plone プロダクト紹介に COREBlog2 、 jaMailHost 、 ejSplitter が載ってました。
だそうです。今度、本屋で探してみよう..

6GB HDD内蔵の新型Zaurus SL-C3200

うわさ通り発表になりましたね、SL-C3200

旧機種との違いは、ハードディスクが6GBになったことと、英会話等のコンテンツでしょうか。やっぱり、メモリ増強とWi-Fi/Bluetoothを内蔵して欲しかったなぁ。でも、CLIEが既に撤退してしまったことを考えると、新機種が出てくるだけ、まだマシかもしれませんね。ちょっとやる気が出てきました(謎)

自分は、SSHとXEmacsが快適に使えるSL-C860で困っていないので、買い替えはなしです。次機種は、4GBフラッシュ内蔵でメモリ128MBでもう少し薄いのを期待しています。そうしたら、bitWarp PDAのコストパフォーマンスの高さとあいまって、絶対売れると思うのですが。

関連リンク:
SHARPニュースリリース
シャープ、6GB HDD搭載の「ザウルス SL-C3200」 (ケータイWatch)
シャープ、新ザウルスは6GB HDD搭載で動画再生対応、英語コンテンツも充実 (BCNランキング)
シャープ、英語コンテンツ充実!約6GB HDD搭載で多様なビジネスにも対応するザウルス「SL-C3200」 (デジタルARENA)

ゲレンデに出張メイド!?

ゲレンデに人だかりが出来ていて、何だろうと思って近づいてみたら、メイドがいっぱいいました(8人)。この写真でわかるでしょうか?びびって、私はあんまり近づけませんでした。しかも、隠し撮りなので、下のほうに何かが被ってます。

たまたま通りかかった外国人の方も興味津々らしく、ジロジロ見てました。まだまだ日本も捨てたもんじゃないと思いました。

(追記)
とある情報筋によると、東京の某大学のスキーサークルだそうです。4年生が卒業記念に仮装して滑るのだとか。若いって素晴らしいなぁ。
こんなイベントがあると知ってれば、自分も執事服で参加したのに…

ホテル銀嶺に到着

柴田さんアウトランダー到着しました。一番乗りみたいです。
さて、着替えて滑りますか!

(追記)
残念ながら一番ではありませんでした。大阪から朝一でいらしてた方がいました。

いざZope DevCampへ出発

柴田さんと待ち合わせ中。
かなり眠いです。

MoblogしてGoogle MapsをCOREBlog2でも

「auケータイのGPS機能を使って、Moblogした場所をGoogle Maps上にプロット」というのをCOREBlog2にも対応してみました。Zopeの面白いところはコンテンツの一つ一つがオブジェクトになっているところ。ブログのエントリさえも一つのオブジェクトとして扱われていて、このオブジェクトのプロパティに位置情報を持たせることでMoblog地図を実現しています。

Moblog地図

最初、Plone付属のexif.pyを使ってGPS情報を取り出そうとしたのですが、エラーになってしまって悩みました。少しでも動作を軽くするために余計な情報は取得しないように修正してあるみたいです(私には必要なんですが)。オリジナルのEXIF.pyを使ったら、悩んでたのが嘘みたいにあっけなく動きました。いじってて思ったのですが、Moblogと同時にFlickrにPostとかも簡単にできそうな感じです。これは、近いうちにやる予定です。あとは、「はてなワンワンワールド」と連携したいという妄想もあったり。

明日は、会社を休んでデブキャン(Zope Developers Camp)に行ってきます。帰って来るころには、これをプロダクト(COREBlogのプラグインかな)として公開できるようになってる予定です。
本当かなぁ、その前に3時に起きれるかが問題…

※写真は本文と関係ありません。