2012年6月20日水曜日

ハンガー泥棒

最近、ベランダのハンガーが少しずつなくなっていく。
1週間に1個くらいなくなる。
ハンガーのような安いもの盗む人いるのか?
それとも、僕が数を勘違いしているだけかな?
そんな感じで不思議だった。

でも、今日犯人がわかった。

カラス!

朝、ハンガーを咥えてすごい勢いで飛び去っていくのを目撃した。
現在、対策を検討中。

Analysis of Topic Dynamics in Web Search

Xuehua Shen et al, Analysis of Topic Dynamics in Web Search (Proceeding 2005)
2ページくらいの論文。
ウェブ検索した人のクリック先の各URLに対して、ODPの第1層目のディレクトリを割り当てます。 ODPの1層目というと、Arts, Bussiness, Adult, Games ..(15個)のような粒度です。

各検索セッションごとに、クリックしたURLのODPラベル変遷して様子を統計として処理しています。
最終的に、各トピックから各トピックへの移っていく確率をマルコフモデルとしてまとめて、15x15の確率のマトリックスを作成している。


2012年4月25日水曜日

TDD(テスト駆動開発)ブートキャンプに参加しました。

公開し忘れていたので、2ヶ月くらい立ちましたが公開します。

2月14日にテスト駆動開発(TDD)ブートキャンプに参加しました。
バレンタインデーなのにデスクに居なかったので、義理チョコを損した感もありますが色々勉強になりました。自分なりの要約を少し載せたいと思います。


TDDとは
  •  TDDは開発者のおこうなうテスト。
  •  TDDの実装時間は20%くらい増えるが、欠陥は6割へる。
  •  「テスト駆動開発」の「テスト」はといっても開発技法のとしてのテストです。いわゆるテスターがおこなうテストとは違います。あくまで開発者のためのテストです。
TDDの考え方
  • 不安をテストにし、不安をなくせること。
  • テストは書かないといけない、メンテンナンスしないといけない。だからテストはコストそのものです。
  • 不安のないところにテストを書く必要がない。なぜならテストはコストだから。 
  • あくまで、デベロッパーとしてテストです。 
  • ソフトウェア工学的なメリットは色々有るのだが、自信を持つことができるというのは大きい。 
  • 変化に対応できるのは、健全なソースコードだけ。
具体的なやり方

1・テストを書く
2.そのテストを実行して失敗させる(なぜなら、機能を実装してないから) RED
3.目的のコードを書く(汚くても良い)
4.一度動作させ、成功させる。 GREEN
5.リファクタリングしコードをキレイにする
6.テストを成功させる。GREEN
以下、5と6を繰り返す。
 

ブートキャン部での作業内容
CppUnitで、LRU Cacheのテストケースとプログラムを書いた。
それをみんなでレビュー。
あと最後にみんなで、フィードバック。
フィードバックのやりかたは、 KEEP, PROBLEM, TRY

2012年2月29日水曜日

emacs memo1

emacsの忘備録です。
isearch中に

  C-w 後ろの単語を追加
  M−y kill-ringから貼付け
  M-p 前の履歴
  M-n 後の履歴
  C-y 後ろの行の追加

2012年1月5日木曜日

スティーブ・ジョブズ

ジョブズが亡くなって、彼のイノベーションについて絶賛されることが多い。そこで、個人的にはジョブズについては少し考えてみようと思うのだが、実は考える材料が揃わない。アップルは秘密主義なので、材料がほとんどないことに気がつく。
とどの情報が足りないかも含めてジョブズについて整理。

業務範囲がよくわからん
社長なのは分かっている。でも、デザインをしているわけじゃないし、コンセプトを練っているわけでもないでしょ。仕事でそうゆうことやったころある人は分かると思うけど、あれは現場の人の仕事。
アップル製品は「彼の作品」と呼ばれているけど、製品に関して具体的になにをしたの?って、不思議。
人事制度がよくわからん
アップルの中にいる人をちゃんと拾いあげてスタープレイヤーにした。ティム・クック、ジョナサン・アイブも、ジョブズが社長になる前から、アップルの中の人。それをちゃんと社内から発見してスターにしたのは彼の手腕はすごいと思う。でも、それを実現した人事システムについては公開されてない。

イノベーションの方法
UIやデザインのことばかりが注目されるが、アップルのイノベーションの方法は、ステークホルダーを少なくするところから始まる。自前主義で、子会社に分割したりせず、自社でコントロール。その方法論には、良い面も悪い面もあるが、あくまで彼のイノベーションは一貫してこの方法。

ゴリラ野郎
彼に限らず、アメリカのCEOは代替ひとの意見を聞かないゴリラ野郎。そして、彼も例外じゃない。
で、結局はよくわからん。
アップルさま、もう少し情報をください。

2011年12月29日木曜日

「Twitterの成功は技術の勝利ではない、人類の勝利」

これは、僕の言葉ではなく伊藤穣一さんの言葉です。確か、デジタルガレージの主催する2011年のNew Context Conferenceで仰っていたと思います。
伊藤氏の意見を要約すると下のような感じ。

グーグルのように、言語処理で「XXXらしさ」を計算してみても、それだけでは出てくる情報は面白くない。それぞれの人間の「善」をしようとして、思考錯誤して情報を交換し合うことで面白い情報が生まれてくるのだ。そして「善」というのは常に人類からしか出てこない。

大量の情報に対してフィルタリングをする時、それを人類一人一人がNodeとなり、retweetしたり、応答し合うことにより素晴しい情報が生まれくる。だから、twitterが流行していることは、技術の勝利ではなくて人類の勝利なのだ。

僕は総論賛成といったところです。
ただ、技術屋としてみるならtwitterの混沌さは気になるところ。絶賛ばかりもしてられない気がしますが。機械学習でいけるところまでいって、「あとは人類で」というほうが良いじゃないかなー なんて思ったりします。

2011年12月11日日曜日

2011-12-02 Bash勉強会メモ

ここ数年、Eclipseで開発してました。そのため、ShellとEmacsに興味を失っていましたが、最近プロジェクトに移動により再び、その辺をいじりだして興味が湧いたので勉強会に行って来ました。

知らなかったところだけメモ

知らなかったコマンド
true
必ず終了ステータス0を返す

false
終了ステータス1を返す

printf
C言語と同じ。bashにもあったんだ。
jobs
現在実行中のjobを表示。

builtin
同じ名前の関数があったら、組み込みコマンドのほうを優先して実行

nohup
ログアウトしても、そのコマンドを中断させない。

サブシェル
( )でくくってshellを書くことで、別のその部分の実行だけ別のShellのプロセスにより実行される。
(sort a.txt ) > a.txt
とやれば、a.txtをソートして、それを同じファイルに出力できる。

コマンドグループ
{ }でくくって、一連のコマンドをグループ化する。
サブシェルと似ているが少し文法が違う。
{
 uname -a
 date
 who
} > logfile

コマンド置換のネスト
pwd
/usr/local/bin
basename "`pwd`"
bin
dir=`basename "\`pwd\`"`
echo $dir
bin


コマンドの組み合わせ
vim -
標準出力のものをvimで編集

vim  $( find . -print)
find の結果をvimで見る。

その他
#TAGとつけておけば、そのタグで検索出来る。
completeで補完の設定ができる。