✖
✖
実名匿名ハンドルの話って盛り上るなぁ。ハンドルと実名は大して違わなくて、単に積み重ねがどちらの名前にかかっているかによっている。ネットでも最初っから実名でやってる人は当然実名に積み重ねがあるはずだし、そうじゃないのならハンドルに積み重ねがあるだろう。匿名ではそもそも積み重ねがない、その割に批判だけは受け止めるハメになるので気持ちで損をする。そう考えると僕は匿名以外ならどっちでもいいと思っている。匿名が悪いとかじゃなくて、単に、匿名でなんかしても意味がないというか、もったいない。貧乏性なので、自分の成果は自分の名のもとにおいておきたいと思うので、匿名で何かするのは僕には結構 (気持ち的に) 難しいなぁ。
例えばだけど、作家の人の本名って重要だと思うだろうか? 誰も聞いたことがない名前をいわれても仕方ない。積み重ねが多いほうが使われてしかるべきだ。
関連エントリー
- 消去法・悲観的な目標アプローチ 「他の人ってちゃんと目標があったりしてすごい」イラストレーター・べつやくれいさんに聞く仕事の話 - はたらく女性の深呼吸マガジン「りっすん」...
- 「可視化する機巧」(からくりすと個展) を見に行った Xで個展やってるというツイートをたまたま見掛けたので、行ってみた。 展示作品と機構の説明模型が並べてあって工夫されて満足度が高い ハンドルで...
- マイコン周りのシリアル通信プロトコルまとめ なんかいろいろあって??ってなるので特徴を覚え書き。線は信号に関係するものだけ (普通は +VDD が必要) 名前 線 特徴 速度 備考 1...
- AVR マイコンに一種の憧れを抱きつつも、なかなか本当に手が出ない。とりあえずチップを買ってみたりしたけど、別に Arduino でもいいわけで、積...
- 人類は特別だという素朴で傲慢な感情なんだろうな 少し前まで反AIなんて笑い話の一つだったのに、すっかりそういう派閥が「変な人」ではないカテゴリになりつつある。AIの進化と表裏一体にすすんで...
✖
✖
Levenshtein 距離 / Ruby / RubyInline
module Levenshtein
def levenshtein(a, b)
if Inline::USABLE
Inline.levenshtein(a, b)
else
PureRuby.levenshtein(a, b)
end
end
module PureRuby
def levenshtein(a, b)
case
when a.empty?
b.length
when b.empty?
a.length
else
d = Array.new(a.length + 1) { |s|
Array.new(b.length + 1, 0)
}
(0..a.length).each do |i|
d[i][0] = i
end
(0..b.length).each do |j|
d[0][j] = j
end
(1..a.length).each do |i|
(1..b.length).each do |j|
cost = (a[i - 1] == b[j - 1]) ? 0 : 1
d[i][j] = [
d[i-1][j ] + 1,
d[i ][j-1] + 1,
d[i-1][j-1] + cost
].min
end
end
d[a.length][b.length]
end
end
module_function :levenshtein
end
module Inline
begin
require "rubygems"
require "inline" # sudo gem install RubyInline
inline do |builder|
builder.c <<-'EOS'
VALUE levenshtein (VALUE array1, VALUE array2) {
VALUE ret;
long len1 = RARRAY(array1)->len;
long len2 = RARRAY(array2)->len;
long i, j;
long** d = ALLOC_N(long*, len1 + 1);
for (i = 0; i <= len1; i++) {
d[i] = ALLOC_N(long, len2 + 1);
memset(d[i], 0, sizeof(d[i]));
}
for (i = 1; i <= len1; i++) d[i][0] = i;
for (j = 1; j <= len2; j++) d[0][j] = j;
for (i = 1; i <= len1; ++i) {
for (j = 1; j <= len2; ++j) {
int del = d[i-1][j ] + 1;
int ins = d[i ][j-1] + 1;
int sub = d[i-1][j-1] + (
rb_equal(
RARRAY(array1)->ptr[i-1],
RARRAY(array2)->ptr[j-1]
) ? 0 : 1
);
d[i][j] =
(del <= ins && del <= sub) ? del:
(ins <= del && ins <= sub) ? ins:
sub;
}
}
ret = LONG2FIX(d[len1][len2]);
for (i = 0; i < len1; i++) free(d[i]);
free(d);
return ret;
}
EOS
end
module_function :levenshtein
USABLE = true
rescue LoadError
USABLE = false
end
end
end
require 'rubygems'
require 'spec'
[Levenshtein::Inline, Levenshtein::PureRuby].each do |m|
describe m do
it "should return correct levenshtein distance" do
[
["kitten", "sitting", 3],
["foo", "foo", 0],
["", "", 0],
["foO", "foo", 1],
["", "foo", 3],
].each do |a, b, expected|
m.levenshtein(a.split(//), b.split(//)).should == expected
m.levenshtein(b.split(//), a.split(//)).should == expected
end
end
end
end
Spec::Runner.run
require "benchmark"
Benchmark.bm(10) do |x|
n = 10000
x.report("inline") do
n.times {
Levenshtein::Inline.levenshtein("kitten".split(//), "sitting".split(//))
}
end if Levenshtein::Inline::USABLE
x.report("pureruby") do
n.times {
Levenshtein::PureRuby.levenshtein("kitten".split(//), "sitting".split(//))
}
end
end
なんか度々使うたびに移植している気がするのでメモ
結構 Ruby でやると遅いので RubyInline でも書いてみた。
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
user system total real
inline 0.330000 0.010000 0.340000 ( 0.346537)
pureruby 2.500000 0.020000 2.520000 ( 2.596968)1.9 にすれば pureruby でも 1.8 の pureruby の倍ぐらいにはなる。
net-irc をgithub に移動。2ig.rb (2ch IRC Gateway)
割とちょこちょこ触ることが多く、svn だと不便なので、http://github.com/cho45/net-irc に移動した
でもって要望があって気がむいたので 2ig.rb というものを作ってみた。
ruby example/2ig.rb --debug
で起動する
- 適当な名前でチャンネルに join (/join #foobar)
- トピックにスレのアドレスを設定 (/topic http://.../test/read.cgi/mmo/0000000000/)
- 流れてくる
実況スレみるにはいいかもしれない。(実況系の板でしか試してないのでほかの板だとへんかも)
- dat 取得 interval はデフォルトで90秒、トピックのスレアドレスに後に数字をいれると設定できる
- '/topic http://.../test/read.cgi/mmo/0000000000/ 5' だと5秒ごと
- AA っぽいものは tinyurl に投げて URL 化している。
- 改行が多く、記号の割合が多いものを AA と判断 (aa? メソッド)
- 1000 までいくと次スレを推測して提示する
- 提示されたやつを /topic url.. すればチャンネルそのままで継続
- 現スレのスレタイの数字+1が含まれるスレッド、直近にアドレスが投稿されたスレッド、編集距離を見て判断
- 可能性が非常に高いスレッドが見つかった場合は色つき
- post 機能は実装してないのでだれかつくってほしい
✖
✖
✖
MP3 プレイヤーのUSB端子が壊れて充電できなくなってしまったので[asin:B0017M71IE:title]を買ってみた。8GBで5kしないのでまぁ失敗でもUSBメモリとして使えばいいやみたいな……
最低限使えるのでとりあえずいいかなぁという気がする。ボタンがちょっとふにゃってて押しにくい。慣れれば気にならないのかもしれない、わからない。
今だに、中学、高校と使っていた SAMSUNG のMP3プレイヤーに勝るプレイヤーが見つからない…… あれ、ハード的にもよかったしソフト的にも良かったのになぁ……もったいない。
関連エントリー
- Mac で mp3 を再生するソフトウェア Mac でファイルとして実体のある mp3 オーディオファイルを再生しようと思うと、普通 iTunes だろうと思う。別にこだわりもないし、...
- USB 電圧・電流計 【ノーブランド】 USB簡易テスター ストレート型 cho45 ルートアール ★ 5.0 / 5.0 cho45 これ安いし1個あるととても...
- Mac でいっぱいUSB機器を繋げない問題 一定数以上のUSBデバイスを接続すると Mac が不安定になり、内蔵キーボード・トラックパッドなどが一切効かなくなる (USB バス全体が死...
- ✖ Nokia N73 の充電器のプラグがずっと前から折れて壊れてたんだけど、いつ完全に充電できなくなるか (極めて繊細な調節をして折れてしまっ...
- 技術力がないから奇行に走る アルゴリズムを原理から実装するみたいなのが相変らずできないわけだけど、そうでないものなら比較的すぐに実装を書けるようになってはきているので、...
うさぎドロップ6
[asin:4396764677:image]
やっと買って読んだ。ほんと面白い漫画だなぁ…… 前巻にあったもやもやした感じが吹っ切れてよかった。
✖
まだ読んでないけど他に買ったもの
[asin:483992998X:image]
[asin:483992998X:title] 昔からこういう展開図とか載ってる本が好きなのでなんとなく買ってみた。
[asin:447930066X:image]
[asin:4061592998:image]
[asin:447930066X:title], [asin:4061592998:title] 社内のどっかで見て気になったので
関連エントリー
- アンテナアナライザの回路 - ブリッジの三つの電位差を測るタイプ http://www.rigexpert.com/index?s=articles&f=aas ブリッジの50Ω/50Ωで分圧したほうの電位...
- ✖ そういえば書いてなかったけど、最近以下の本も手に入れた。 [asin:4499279100:image] [asin:4499279100:...
- NEEWER LED-NL660 というのを買ってみた Neewer 調光可能な二色660 LEDビデオライト 耐久性のあるメタルフレーム、 Uブラケットと遮光板付き 3200-5600K、CRI...
- ✖ 神様はじめました 1 (花とゆめCOMICS) cho45 鈴木ジュリエッタ ★ 3.0 / 5.0 cho45 おすすめされたので読んでみ...
- ✖ 神社仏閣図集 1 /神社建築編 1 cho45 建築資料研究社 ★ 3.0 / 5.0 cho45 なんか、面白そうなので買ってみたけど、す...
✖
そういえば書いてなかったけど、最近以下の本も手に入れた。
[asin:4499279100:image]
[asin:4499279100:title] 仕組み解説。実際に作ってみるために買ったのだけど、まだ作ってない。
[asin:4763007300:image]
[asin:4763007300:title] 写真集をちゃんと手にするのは初めてなので興味深かった。どでかい本なので殴ったら凶器になりそう。
「自分自信を知るために自身を被写体にする必要がない」というのがあとがき?にあって、あぁやっぱここがスタート地点なのかという感じがした。これだって遅かれ早かれ気付くことだけど、明文化されていて嬉しいような悔しいような気がした。
関連エントリー
- ✖ まだ読んでないけど他に買ったもの [asin:483992998X:image] [asin:483992998X:title] 昔からこう...
- アンテナアナライザの回路 - ブリッジの三つの電位差を測るタイプ http://www.rigexpert.com/index?s=articles&f=aas ブリッジの50Ω/50Ωで分圧したほうの電位...
- 自作 デジタル SWR 計(再) 2 | 方向性結合器の改善編 FT82-43 に20ターンでやってみましたが、結果が芳しくありませんでした。 そこで、FT82-61 に 30 ターンという、おそらくこれ...
- ✖ メモ Redirecting Redirecting 氷川女體神社 雉子神社|品川区東五反田の神社、上大崎村・下大崎村・谷山村の鎮守 溝口神社
- 無印の商品を大量に買っている…… 無印良品ネットストア 無印良品ネットストア 体にフィットするソファ・本体 幅65×奥行65×高さ43cm | 無印良品ネットストア 伸び難く...
Android の geolocation で GPS を使う方法
Android には Gears が入っていて、gears の geolocation API が使えることは使えるのだけど、GPSをちゃんと使う方法がなかなかわからなかったのでメモ (素朴に使うと WiFi + IP アドレス?しか使わないっぽくて、とれないことが多い)
var geo = navigator.geolocation || google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(
function (pos) {
alert([pos.coords.latitude, pos.coords.longitude].join(','));
},
function (e) {
alert(e.message);
},
{
enableHighAccuracy: true
}
);enableHighAccuracy が true じゃないと GPS 情報を使わないようだ。このままだと Google の Geoloation API をまだ叩きにいく。さらに gearsLocationProviderUrls: [] とか指定すれば、純粋にGPSだけの情報がとれるようだ。
{
enableHighAccuracy: true,
gearsLocationProviderUrls: []
}ただ、なんか GPS のタイムアウト時間が短いので、前もって別のアプリケーションで GPS fix させてからじゃないとダメな気がする。要検証。watchPosition でとれるまで待つという方法もあるかもしれない
追加検証してみたけど、ちゃんと座標を取得したいなら、watchPosition でとれるまで待って、clearWatch するのがよさそう (キャンセルボタンもつけて)。
watchPosition ならとれるまで試行できる。
gearsLocationProviderUrls: [] を指定すると Chrome でエラーがでるようになったようだ。なのでつけないほいがいい、ないしブラウザ判定を入れる必要がある






