タグ

ブックマーク / satoshi.blogs.com (17)

  • Google App Engine入門:フレームワークの選択

    Google App Engine向けのアプリを作る際に最初に悩んだのはフレームワークの選択。Google App Engineにはwebappという最低限の機能を持ったフレームワークが付いて来るが、Python使いの人たちの間では、DJangoというフレームワークが広く使われているらしいし。かといって、あまり大きなフレームワークを使うと、パフォーマンスのチューニングとかもしにくくなるし、フレームワークそのもののバグや制限に悩ませられる可能性もある。 そんな中で増井君が見つけてくれてまず試したのが、Junoというフレームワーク。DJangoと比べると遥かに小さく、WebappよりもURLのルーティングのメカニズムとかが充実している。 そこで一旦はアプリをJunoの上で作り始めたのだが、Junoのソースコードを見ているうちにいろいろと気に入らないところが出て来た。不必要にオプションが多いし、

  • Google App Engine入門:Datastore上で「ユニーク制限」を実現する方法

    Google App Engine のDatastoreには、通常のリレーショナルデータベースと比べた時にいくつかの制限があるが、その一つが「このプロパティの値は常にユニークでなければならない」という指定(ユニーク制限)ができないことである。 Invoice IDのように自動生成するものであれば、アプリケーション側でなんとかすることも簡単だが、メールアドレスやハンドル名など、ユーザーが入力するものになると、ユニークであることをきちんと判定した上でEntityを作ることが必要になる。 もちろん、単純に「有無をチェックして、なければ作る」というプログラムではスレッド間の競合に対応できないので、そこはトランザクションを使ってアトミックに処理をする必要がある。 App Engine上でトランザクションを実現するには、エンティティグループという仕組みを使って行うが、気をつけなければいけないのは、エン

    memecy
    memecy 2009/11/12
  • Google App Engine入門:Entity Groupとトランザクション処理

    今週に入ってから、ようやく少し気でGoogle App Engineでプログラムを書き始めている私だが、ようやく Entity Group の使い方が分かって来たので簡単に解説してみる。 Entity Groupとは、一口で言えば「トランザクションを使ったアトミックな読み書きの対象となるEntity(=データベース上のオブジェクト)の集まり」である。 イメージとしては、まず「一つのハノイの塔を三人で同時に遊んでいる姿」を思い浮かべると分かりやすいかも知れない。全くのルールなしで皆で同時に遊ぼうとすると、腕が交錯してぐちゃぐちゃになってしまう。 そこで、「ある時点でハノイの塔ボード(三つの棒を支えている水平に置かれた板)に触ることが出来る人は常に一人。一度ボードに触った人はすべての円盤をいずれかの棒の位置に置いた状態にしてからしか手を離してはいけない。もし自分がハノイの塔に触りたい時に、す

    memecy
    memecy 2009/11/12
  • jQBinder, ブラウザー側でのHTML templateを可能にするjQuery plug-in

    一昨日はMVCの話で妙に盛り上がってしまったが、考えてみるとModel/View/Controller間の分離が不十分という話はサーバー側だけの話ではなく、クライアント側にも言える事。事実、私自身も div.innerHTML = "<span class='red'>" + message + "</span>"; みたいなHTMLが混ざったJavaScriptコードを書く事は良くある。特に、最近はJSONとして取得して来たデータセットをリストとして表示するケースが増えて来たが、そんな時に「サーバー側のようなHTMLテンプレートが使えたらいいな」と思う事は良くある。手っ取り早くとりあえず動くものを作るのにはHTML埋め込み型のJavaScriptで良いのかも知れないが、後々のメンテナンスを考えると少なくともModelとViewぐらいはキチンと切り話しておいた方が良い事は確か。 ということ

    memecy
    memecy 2009/10/15
    IE6で見たところ、黒いままで表示されないっぽい(Version:6.0.2900)。Firefox3.0.14は問題なし。
  • マルチスレッド・プログラミングの落とし穴、その2

    ずいぶん前に、「マルチスレッド・プログラミングの落とし穴、その1(かもしれない)」というエントリーを書いたが、今回はPhotoShareサーバーを運営していて、まさにこのあたりの深い考察が必要になって来たので、良い機会なので続編エントリー。 PhotoShareのバックエンドのようにCRUD(Create/Read/Update/Delete)のAPIをサポートするバックエンドを作る場合、Create/Update/Deleteのリクエストに対してはクライアントからのAPIコール時にすぐに(HTTP Requestに返事をする前に)データベースに変更を加え、Readの際にも(キャッシュを使う・使わないを別にして)データベースの最新の状況を反映するデータを返すように設計するのが普通である。 このアーキテクチャの問題は、ユーザーのアクティビティが増えた時に、データベースやI/Oがボトルネックと

  • Life is beautiful: 自分で考える前にググっていませんか?

    つい先日、興味深い話を聞いた。ある大学の授業で「デジタル・コンテンツ・ビジネス」というテーマで小論文を宿題として書かせたところ、同じような内容の小論文ばかりが集まったという。その原因を調べたところ、「デジタル コンテンツ ビジネス」のキーワードでググると上位に来る私の過去のエントリーの内容がほぼ丸写しにされていたという。 日の学生の勉強に対する態度なんてそんなものなのかも知れないが(それはそれで憂うべき話だがその話は別の機会に)、少し心配になるのがどんな気持ちでその手の「コピペ」をしているのか、という点である。確信犯的に「徹底的に手を抜きたいからコピペしているだけ」ならまだ許せる。私が問題視するのは「自分で考える前にまずググる」習慣であり、「ググれば答えが見つかるにちがいない」という錯覚である。 暗黒時代とも呼ばれる中世ヨーロッパで科学の進歩があんなにも長い間低迷した原因の一つは、あの時

  • Life is beautiful: 図解、イノベーションのジレンマ

    私がマイクロソフトをやめるキッカケを作ったのが、「イノベーションのジレンマ」というだということは、以前にも書いた。IT業界でビジネスをしている限り、大きな会社にいようと、小さなベンチャー企業にいようと、このに書いてあることを日々意識しながら仕事をするかどうかは大きな違いを生むはずだ。 このブログでも何度も引用しながら、一度もちゃんと解説を書いたことがなかったことに気が付いたので、今日のエントリーは、このに書かれているコンセプトの解説。 そう思っていつもの様に書き始めたのだが、文字だけではとても伝えにくいコンセプトだ。しかし、図解と言えばパワポ、というのもありきたりすぎるので、会社の廊下にあるホワイトボードに手書きで描いた図を、携帯電話で撮影したものを使うことにした。通りがかった社員にも見てもらえるので、一石二鳥である。 上の図は、このに書かれたコンセプトを一般化したもの。ブルーのラ

  • 初音ミクに感じた「それ」

    ある商品とかサービスを見たとたんに、「その先にあるもの」がはっきりと見える時がある。それは、今まで頭の中に乱雑に積み上げられていたガラクタが、突然形のあるものに見える現象。一度見えてしまうと「なぜ今まで見えなかったんだろう」と不思議に思えるのが常だが、結局人間の頭の中はそんなものか、と。それはちょうど「既視感(デジャブ)」の逆のようなものだが良い名前は思いつかないので、今日のところは「それ」と呼んでおく。 今回「それ」を感じさせてくれたのは初音ミク。「CGMの時代」とは言いながら違法コピーされたテレビの映像で盛り上がっている限りは、YouTubeもニコ動もテレビキラー・放送局キラーにはなり得ない。素人ビデオにも限界がある。「でも必ずそこには答えがあるはず」との私の強い思いに、サクッと突破口を開いてくれたのがこの初音ミク。 既に今日の時点で、「Magic GarageBand+初音ミク+自分

    memecy
    memecy 2007/10/10
    ゲーム会社がやるならアイマスのところだろうか。あるいは米にある「くまうたの人(森川さん)」か。
  • Life is beautiful: 日本語の進化について、一つの実験をしてみる

    年配の人が「最近の若者の言葉はめちゃくちゃだ」と言うのは、言葉が進化しているから。誤用する人が増えて来て、多くの人に通じるようになれば、りっぱな日語だ。その過程で年配の人が「わかもの言葉」に違和感を持つのは当然。そんな「新しい日語」を発掘してみるというのも楽しそうなので、一つ実験をしてみる。 下の6つの文を、あまり深く考えずにさらっと読んで欲しい。そして違和感を感じたかどうかをコメント欄なり、ブックマークコメントでいただきたい。「最初に読んだ時は違和感を感じなかったけど、もう一度読み直してみたらどれが変なのか気がついた」、「どれに問題があるかは言われれば分かるけど、別に通じるからいいじゃん」、「普通に使ってたけど、これって間違ってたの?」という返事もOK。 ・そこの公園で子供が遊んでいる ・そこのクラブで彼女が踊っている ・そこのコンビニでおでんが売っている ・そこの畑でキュウリがなっ

    memecy
    memecy 2007/09/18
    ざっと見て特に違和感なし。「が」とか「で」について深く考えていないためと思われる:「変化」と「淘汰」があるので「進化」についても特に違和感はない。「意味」が届けば総じてどうでもいいと感じている模様。
  • 心理トリック:Anchoring

    "The Hidden Traps in Decision Making" という Harvard Business Review の記事を読んでいて面白い問題を見つけた。 問題1:トルコの人口は3千5百万人より多いでしょうか少ないでしょうか? 問題2:トルコの人口は何人ぐらいだと思いますか? これ以上進む前に、上の二つの問題に対する自分なりの答えを考えておいて欲しい。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 興味深いのは、この二つの問題を、問題1の数字だけを変えて(例えば「1億人より多いでしょうか?」として)二つのグループに与えてみると、問題1で使った数字と問題2で返って来た答えの間に強い相関関係があることである。あたりまえといえばあたりまえの話だが、問題2を解くときに「問題1で3千5百万人より多いか少ないか、と尋ねているのだから、正しい答えはその前後に違いない」と思うのが人

    memecy
    memecy 2007/09/03
    「結婚してください」→「付き合ってください」→「じゃあせめて友達からでも」っていうのもこれだっけ?違うっけ?
  • Life is beautiful: ビルゲイツの面接試験―ジャンケン編

    大槻ケンヂの「グミ・チョコ」を読んでいて思いついたのが、今日のクイズ。単なる数学の問題ではないので良く考えてみて欲しい。 あなた(=Aさん)とBさんにジャンケンを連続で1000回してもらいます。あなたもBさんも、パーで勝つたびに500円、チョキで勝つたびに200円の賞金を主催者からもらえます。グーで勝ったり、アイコになった場合には一円ももらえません。この条件で、あなたの賞金を最大化するために、どんな戦略を採りますか?ただし、Bさんと前もって相談することはできないし、試合中はしゃべったり身振りで合図を送ってはいけません。表情も見えないように、ミラーガラスのヘルメットを被ってもらいます。試合中に見えるのは相手が何を出したかだけです。 回答は、コメント・トラックバック・ブクマコメントなどで送っていただきたい。 ちなみに、この問題には面白いパラドックスが隠されている。普通に考えると、グーを出しても

    memecy
    memecy 2007/03/27
    すぐに思いつくのは「グーとパーを交互に出し続ける。そして察しろと念じる。」あたり。
  • 「半分空っぽのコップ」を「半分水が入ったコップ」に見せるテクニック

    ものごとをポジティブに考えるか、ネガティブに考えるかという議論をするときに、「半分だけ水が入ったコップをどう見るか」という話が良く引き合いに出される。それを「半分も水が入っている!ラッキー」と考えるか、「どうして半分しか水が入っていないんだろう?残りの半分は誰かが飲んでしまったのだろうか」と考えるか、で人生が大きく変わってくるという話である。 ポジティブに考えた方が人間幸せになれるし、そんな人の方が成功する可能性が実際に高くなる、という話は大昔から言われ続けてきたことだが、そうは分かっていても、「入ってない方の半分」が気になってしまうのが人間の弱さである。 これと関連する話で、先日読んだ心理学のに、ちょっとした工夫で皆が得をした気分になる(つまりポジティブに考える)テクニックが書いてあったので、ここで紹介する。 VHSテープ全盛の時代の米国のレンタルビデオ店での話。「見終わったあとはテー

  • Youtubeでものを売りつけられた…それもとても上手に

    Youtubeでたまたま見つけたビデオに思いっきりひきつけられてしまった。これだ、 これにはまいった。子供のころから磁石が大好きだった私のために作られたような商品だ(ちなみに、この商品はBandoleer Bracelet from Dynomighty Design)。 それにしても、このYoutubeを使ったマーケティングはなかなかするどい。この商品のように「一目見てもらえばユニークさが分かる」ものにはとても効果的だ。

  • コーポレート・ファイナンス入門

    息子の大学で授業参観をする機会があったので聴講したのが「Corporate Finance」の授業。わずか70分の授業であったが、とても分かりやすかったので復習の意味も兼ねてここに解説してみる。 まず、会社として採用することを考慮している二つのプロジェクト、「S」と「L」があったとする。プロジェクト「S」は、一年目に50万ドル、二年目に40万ドル、三年目に30万ドル、四年目に10万ドルのキャッシュフロー(=会社に入ってくるお金)を生み出すが、プロジェクト「L」は、一年目に10万ドル、二年目に20万ドル、三年目に30万ドル、4年目に60万ドルのキャッシュフローを生み出す。 それぞれのプロジェクトに100万ドルの資金が必要で、調達した資金には10%の利息がかかると仮定したとき、会社としてはどちらのプロジェクトを選ぶべきか、というのが今回の課題である。 「投資した資金を回収するのにどのくらいの期

    memecy
    memecy 2007/02/20
    金利による未来の価値→現在の価値計算。
  • 素直な疑問:数字には四桁ごとにテンを打った方が日本人には読みやすくないか?

    中学校の数学授業で「数字は三桁ごとにテンを打つ」ことを教わったときに、手を上げて「何で三桁ごとにテンを打つんですか?」と質問したことがある。「その方が読みやすいでしょ」という教師に、「読みさすさを優先するなら、四桁ごとの方が読みやすい」とい下がる私。「そうは言っても決まりだから今さら変えられない」という教師に、「そんな役に立たない決まりなんて変えた方が良い」とさらにい下がるが、「決まりなんだから皆さんはそれを覚えるように。では、次に進みます」と頭から否定されてしまって少し傷ついたことを覚えている。 今になって考えてみれば、その教師は「確かに君の指摘するように日人にとっては四桁ごとにテンを打った方が読みやすい。でもね、英語やフランス語などの欧米の言語の場合は3桁ごとにテンを打ったほうが読みやすいんだ。戦争に負けて、欧米を中心にしたグローバル経済圏に取り込まれた日はそれに従うしかないん

    memecy
    memecy 2007/01/30
    同感
  • 優秀な主婦はイベント・ドリブン(event-driven)方式でパンを焼く

    昨日のエントリーで、「人は一つの仕事を処理するときには、それを小さな仕事に分割して、順番に処理する」と書いたが、「パンを焼く」という仕事を例に取れば、こんな風になる。 1.イーストを30℃のお湯と一つまみの砂糖とまぜて15分間予備発酵させる 2.ボールに強力粉、予備発酵させたイースト、砂糖、塩を入れて良く混ぜる 3.こね板の上で生地をこねる 4.ボールにラップをして室温で1時間発酵させる(一次発酵) 5.適当な大きさに生地を分割し、丸めて形を作る 6.オーブンに入れ、30分発酵させる(二次発酵) 7.オーブンの温度を200度にして18分焼く これは、ソフトウェアで言えば「手続き型のプログラム」であり、人間が一連の作業を把握するのに最も適した記述の仕方である(その証拠に、実際のどのレシピブックを見ても、レシピは必ず「手続き型」で書かれている)。 興味深いのは、このレシピにおける、「15分予備

  • 書評、数学的にありえない

    今日は、CNetの方のブログに少し気合の入ったエントリーを書いたので、こちらはさらっと書評エントリー。今回とりあげるは、年末年始を利用して一気読みした、「数学的にありえない」。 筆者の豊富な知識と説得力のある議論の展開であたかも書かれていることがすべて真実であるかのように読者を引き込んでいくところは、ダ・ビンチ・コードにも通じるテクニック。上下巻の大作ながら、一気に読んでしまった。 ダ・ビンチ・コードと異なるのは、テーマが宗教ではなく物理学であること。「ラプラスの悪魔(書では、「ラプラスの魔」と訳されている)」、「不確定性理論」などの言葉が各所にちりばめられており、学生時代にブルーバックスを読み漁った「科学おたく」にはたまらない魅力を持つだ。 物理をテーマにした小説には、途中まで一見論理的に引っ張っておきながら「それはないだろう」的なオチに持って行く駄作がたくさんあるが、このはそん

  • 1