nonoswitch's diary

気が向いた時に書き込むやつ

ただの日記130416

のんびり9時くらいに起床。

最近スムージー飲むようになりました。
今日はほうれんそう、りんご、いちご入りのもの。おいしいのと、何だか気分よく朝を迎えられます(`・ω・´)

そのあとは友人とプールへ。
1週間に1回のペースで通ってるスイミングも、今日でようやく1キロを比較的楽に泳げるようになりましたw
次回の目標は1.5キロを40分くらいで泳ぐ、ということに。

学食を食べ、講義を受け、何とも大学生らしい1日でした。

*****


そういえば、今日は新経済連盟のサミットだったみたいです。
まとめが各メディアやサービスにあがってるので、それを読みながら今日は寝ることにします。。

素数ゼミ

なんか面白い記事見つけた。

 > 素数ゼミとハッシュテーブル − @IT



去年の2学期の実験で日本語形態素解析プログラムの作成をした時に

線形探索→二分探索→ハッシュテーブル→(ダブルアレイ)

といった感じで高速化をしていたのだけれど、ふとその時のハッシュ関数の実装(というか素数周りどうなってるのか)が気になったので当時のコードを引っ張り出してきて、ついでに素数について少し調べてたらさっきのサイトにたどり着いた。
ハッシュテーブルを用意して、データを格納する際になるべく衝突が少なくなるように素数を使って...というプロセスと、自然界における様々な周期のセミとの競合を防ぐために素数周期で地上に出てくるセミ...衝突・競合というある種の同じ問題に同じ解決法が用いられているって面白い。

ちなみに僕が実装で使ってたハッシュ関数を晒してみる。
いろいろ突っ込みどころあるけど、いろんな素数を使って衝突回数を数えてチューニングしたのは面白かった。

long hash(char *s)
{
  int i,h = 1;
  int L = strlen(s);
  for (i = 0; i < L; i++) h = h * 137 + s[i];
  return labs(h) % 4999991;
}


そういえば完全ハッシュ関数あたりを調べたいなーと思っていたのに調べてなかったから今月中に調べてみるか(`・ω・´)

jaccard係数

集合知プログラミング読み進め中です。

最初はユークリッド距離とピアソン相関係数のことが書いてあった。で、エクササイズに「Tanimoto係数を調べよ」というものがあったので調べたものを簡単にメモしておく。参考はここ

Tanimoto係数 = Jaccard coefficientのことで、2つの特徴ベクトルの類似度を表す係数だった。


単純にAかつBの要素数だけで比較をしようとしてしまうと、すべて1が立っているような特徴ベクトルが検出されやすくなってしまうためA,Bの片方でも1が立っている要素数で割っている。


分かりやすい例をあげると

A=[0,1,0,0,0,0,1,0]
B=[1,1,1,1,1,1,1,1]
C=[0,1,0,0,0,1,1,0]

の3つの適当な特徴ベクトル(1=とある特徴があることを表す)があったとして、いくつ同じ特徴を持ち合わせているか調べたとする。
AとB,AとCを比較した場合のいずれも2つの特徴が一致するけれども、Bはどのような特徴ベクトルとも一致する要素数は常に最大になってしまう。というわけで、AまたはBの要素数で割るらしい。


jaccard係数は、どのようなシーンで有用性があるのか少し考えてみたけれどもそれぞれの特徴がフラグのような要素だけでなく、範囲のある数値で表される場合にしきい値を定めるなどして得たい特徴を定性的に定めて、ある特定の類似度などをピンポイントで抽出できるのではないかなと思いました。
本を読み進めたら、もう少し考えたいと思います(誰か教えてください!)

pythonbrew導入とか

集合知プログラミングという機械学習の本が彼女の家に転がっていたので読み始めたのですが、サンプルコードがpythonで書いてあったので、pythonの導入とお勉強をここ1,2日くらいしてました。

<導入>
pythonのダウンロードは<Download Python>からなのだ、が、、最新は3.x系、本の中のサンプルコードは2.x系で書かれているのでpythonbrewを使ってインストールすることに。pythonbrewを使うと

% pythonbrew switch 2.7 

ってな感じでコマンドラインから簡単にバージョン変更できる。

参考:SOTA » pythonbrew で python のバージョン管理


で、集合知プログラミングの冒頭には「python分からなくても分かるように書いてあるよ!」って書いてあったものの、折角なのでひと通り勉強しようと思ってpythonチュートリアルを読むことにしました。
他の言語を知っている人向けの内容で、退屈な説明は端折って大事なところがギュッと詰まってる感じ(な気がする初心者)。それゆえ初心者だとついていけない内容が載ってたりするけれども、最初に読み進める指針みたいなものが「この章は絶対読むべきだけど、次の章は慣れてからでOK」みたいな感じで示されているからすごい気持ちが楽。

とりあえずひと通り読んで、集合知プログラミングのサンプルコードがなんとなく分かってきたから明日から読み進めて、面白いところはまとめていこうかなあ。

pythonチュートリアルは本を買わなくても一応webサイト:Python チュートリアル — Python 2.7ja1 documentationでも読めるみたいです。
ちなみに、"初めてのpython”も借りてきたのだけれども800ページ超なので要所を摘んで読んでいく感じにしようか…w

2013年にやるべきn個のこと

あっという間に過ぎ去った2012年。

2012年の一番の軸は株式会社BearTailを仲間4人で設立し、その主軸となるBuypassを開発したことでした。その過程でプロダクトをつくるため、チームマネジメントのため、ファイナンスのためと様々な本を読んだりワークショップに参加したりと慌ただしい1年でした。2011年よりも確実に密の濃い1年になったと思います。

また、ワークショップ、インターン、mastLTなどのイベントで多くの優秀な方に出会いました。自分が気づかないこと、知らないこと、見落としていることをたくさん知っている方々です。チクチクと心地よく刺激されました:)

 

さて、それじゃあ2013年は何をしたいのか、と考えました。

学生生活最後の1年です。就職してから役立つことを集中的に学ぶのも1つの手かなと思い、即戦力になれるように、とか必ず仕事で役立つから、といったことに手を付けようかなとも考えました。

けれども、それだけでは残りの1年間もったいないなと。目先で役立つか、といった狭い視野ではなくてもっと広く学ぼうと思います。そのために僕が今の時点で2013年中に達成したいなと思ったこと、数えるのも面倒なのでたくさん(n個)挙げました。

 

<役立つ気がする系・やりたいこと>

- phpフレームワークを自作してみる

- ソート、各種アルゴリズム問題の復習をする(2年のとき適当にやりすぎた、みっきお先生ごめんなさい)

- 高級言語の似た関数について、ベンチマークをしてどちらが高速、かつ有効か調べてみる

- デザインパターン(という抽象的な設定しか出来ない状況の打破)

- DBの種類や特徴を知る。MySQL(少しだけ)しか知りませんなう(´・ω・`)

- オブジェクト指向によるプログラミングの基本を体に染み込ませる

- セキュリティ周り、実際に脆弱性満載のシステムを作って自分たちで攻撃してみる

- キャッシュ(?)

- 非同期通信、WebSocketについて

- webGL

- Androidアプリ開発(@binoskeと作ったSUITEを純ネイティブ化してみる)

- なんちゃってHTML5知ってるよ状態を脱出

- なんちゃって正規表現知ってるよ状態を脱出

- 競技プログラミングの問題を解いて筋トレする

- BearTailでの活動

- MastLTの中の人脱出→今度こそ初登壇:p

- 創成学類同窓会発足までの一連の仕組みづくりのお手伝い

- 今年もIVSに参加

 

<役立つか分からない系・やりたいこと>

- 超自分に関係なさそうな本も手には取ってみる

- 表向きにはTOEIC850点、裏向きにはSpeaking,Writing能力の向上(英会話やろうかな)

- ちゃんとおしゃれを自分でしてみる(誰かに怒られるから)

- 僕だけの秘書アプリをつくる

- 知人のおすすめ本を手に取ってみる

- 春夏秋冬、この上なく綺麗な季節の写真を撮りまくって各季節1番の写真を現像

- 旅行は今まで自分が1度も行ったことの無いところへ

- 外食も可能な限り1度も行ったことの無いお店、あるいは食べたこと無いメニューを注文してみたり

- プログラミングで筋トレとか言ってないでジョギングする

- 夏、fujisanに登る

- カテキョで教えている子にしっかり中学デビューしてもらう

- 家計簿を今年も継続してつけ続ける

- 幼稚園のときの友達と再開してみたい

- ワンピースとかの超有名作品を...勉強するw

- 音楽に受け身でなく能動的に接してみる

 

 

自分の進路や、達成したいこと。その選択に明らかな正解・不正解はおそらくなくて、選択した先やモノをいかに自分自身がとらえ、価値ある何かを生み出せるか、あるいは機会とするか、といった点が重要だと考えて今年1年も頑張ってみます!

 

 (そうそう今年こそちゃんとどこかに自分の思いを綴っていけたらなと...w)

 

gitでlockファイルが存在してpull出来ないと言われた

git pullしようと思ったら、こんなメッセージが...

 

 

fatal: Unable to create '/hogehoge/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

 

どうやらファイルロックが解除されなかったらしい。

rm /hogehoge/.git/index.lock

を実行、再度git pullすることで解決でしたー。

【http】post送信時にx,yパラメータが付加される

firefoxのアドオン "LiveHTTPHeader"を利用しているときに、

httpリクエスト時に送信されるheader内のpostデータのなかに

x,yのパラメータがこんな感じ

 

hoge=piyo&x=29&y=23

 

で付加されているのは何故だろうと思って、調べてみたら

stackoverflowでそっくり答えになる回答が。

 

どうやらinput type = imageにすると

画像のx,y座標が同時に送信されるみたい。

 

 

(参考サイト)

http://stackoverflow.com/questions/6283042/html-sends-x-y-post-data-with-no-inputs-how-is-this-possible

 

https://addons.mozilla.org/ja/firefox/addon/live-http-headers/