Hatena::ブログ(Diary)

きっとメモ帳

2011-09-15

MISO(Multi Input Single Output)なキューが見つからなかったので作った

ひとつのスレッドで複数のキューを待ちたかったので作った.

https://gist.github.com/1219608

popするときは,popされたキューと値の両方がかえってくる.

どのキューも空のときはブロックされる.

キューでselect的なことをしたかった.

2011-05-04

かわいいRubyスクリプトを書こう

Rubyメソッド名に日本語が使えることを昨日知りました。

だから

# こうしておくことで

alias (╹◡╹)つ require

alias ( ╹◡╹)< puts


# こんなことできちゃう!


(╹◡╹)つ 'json'


( ╹◡╹)< "Hello World"

かわいいね!

2010-05-04

秋葉原で買ってきた謎のジャンクWebカメラ@200円のドライバを探す旅

f:id:mojo_tech:20100505001359j:image:w240:right

秋葉ジャンク屋で買った200円のwebカメラ、型番、メーカーなど一切書いてない。上部に唯一「up」っていうロゴがあるだけ。

とりあえずWindowsUpdateから落ちてくるドライバではうまく行かなかったので、正しいドライバを見つけるまでの方法をメモ。

はじめに、Windowsに挿して認識された時は「Look312P」というデバイス名だったが、このデバイス名はどうやら正しくないようで、どこかで見つけてきたドライバを入れても、カメラは認識するものの画像は表示されず。

デバイスベンダーとプロダクトを調べる

USBデバイスのベンダIDと製品IDを調べるにはどうすればよいですか - National Instruments

ダウンロードできるUSBViewで、このカメラのベンダーidとプロダクトidを調べる。

idVendor0x0AC8
idProduct0x301B

調べた結果がこれ。

この情報を元にドライバを探す。

デバイスを特定する

no title

USBの公式ベンダーid一覧から0x0AC8→10進数で2760を探すと、ベンダーは"Vimicro Corporation"だということがわかる。

Vimicro Corporationのwebページを見てみると、どうやらチップのメーカーぽい。

Vimicro Products

ダウンロードセンターに行ってみるものの、どのチップを使ったものだかわからない。

プロダクトidを調べよう。

404 Not Found

で"0x0AC8"を検索すると、ありました、"0x0ac8:0x301b"。これが同じチップを使ってるUSBカメラっぽいですね。

この中の適当なデバイスの詳細を見ると"Vimicro Z-star chips zc0301 Vga webcam 640x480 320x240 software by the driver 352x288 176x144"って書いてあるので、どうやらzc0301チップを使ってるらしい。

さっきのダウンロードセンターにはzc0301っぽいのは3つあるけど、"zc0301PL"をなんとなく選んだ。なんとなく。これでたぶん動かせる。

ドライバインストール@vista

ダウンロードしたドライバzipファイルを適当な場所に解凍しておく。

デバイスマネージャから該当のカメラをダブルクリック→「ドライバ」タブから"ドライバの更新"→"コンピュータを参照して〜"→解凍したフォルダを選択

で完了

さっき解凍したフォルダかC:\Windowsとかにあるamcap.exeで動作確認。

カメラのスペック

f:id:mojo_tech:20100505001326p:image:w240:right

チップの仕様から、VGAが最高だと思われる。

320x240で30fps、640x480で15fpsの一般的なカメラっぽい。

キャプチャがこんな感じ。200円だし文句はない。

2009-09-03

ユーザー権限でruby1.9.1@x86_64-linuxをインストールする

ユーザー権限しかないサーバーで、Rubyの最新版を入れてみる。

最新版Rubyインストールする

$ mkdir ~/src # 作業用ディレクトリ
$ cd ~/src    # 作業用ディレクトリに移動
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.bz2
        # 最新版を取得
$ tar xjvf ruby-1.9.1-p243.tar.bz2 # 解凍
$ cd ruby-1.9.1-p243 #解凍したディレクトリに移動
$ ./configure --prefix=$HOME optflags=-O3
        #インストール先を $HOME にする
        #x86_64環境だと optflags=-O3 をつけないと途中で止まる
$ make # コンパイル
$ make install # インストール

インストール先は書き込み権限のある $HOME

x86_64環境だと、optflags=-O3がないとコンパイル途中で止まってしまった

(via 1.9.1のビルドがparse.cのコンパイルで詰まっていた件 - `The rubyist'【えぬ】の日記 - Rubyist)


環境変数の設定

bash,zshなら~/.bashrc,~/zshrcに書くといいと思うよ

export PATH=:$HOME/bin:$PATH
export INCLUDE=$HOME/include

INCLUDE は gcc とかが見に来る。

RubyGemsを使ってみる

$ rubygems install twitter
/path/to/home/lib/ruby/1.9.1/rubygems/package.rb:10:in `require': no such file to load -- zlib (LoadError)
#以下略

zlibが必要ですかそうですか。

rubyインストール時に先にzlibにパスを通しておくといいみたいだけど知らない。

(via ruby 1.9.1-p0 @ Visual C++ 2005 - anon_193の日記)


zlib拡張のコンパイルインストール

zlibはrubyアーカイブのext/zlibにあるのでコンパイルしに行く

$ cd ~/src/ruby-1.9.1-p243/ext/zlib
$ ruby extdonf.rb
checking for deflateReset() in -lz... no
checking for deflateReset() in -llibz... no
checking for deflateReset() in -lzlib1... no
checking for deflateReset() in -lzlib... no
checking for deflateReset() in -lzdll... no

ぐぬぬ。zlib自体が必要なようですね。

zlib自体のコンパイルインストール

$ cd ~/src
$ wget http://www.zlib.net/zlib-1.2.3.tar.bz2
$ tar xjvf zlib-1.2.3.tar.bz2
$ cd zlib-1.2.3
$ ./configure --prefix=$HOME -s

インストール先は同じく$HOME

  • sをつけないと、この後の ruby extconf.rb で
libz.a: could not read symbols: Bad value

になるので、つける。意味は知らない。

(via Derakunの備忘録 Clamscanのインストール)

ここで先ほど環境変数INCLUDEを指定していないとヘッダが見つからないだの言われると思う。

rubyアーカイブに戻ってもういちどruby extconf.rb

$ ruby extconf.rb
checking for deflateReset() in -lz... yes
checking for zlib.h... no

むー、環境変数INCLUDEは見てくれないようだ。だから自分で指定する。

$ ruby extconf.rb --with-opt-include=$INCLUDE
checking for deflateReset() in -lz... yes
checking for zlib.h... yes
checking for kind of operating system... Unix
creating Makefile

Makefileができました。

$ make
$ make install

インストール完了!

気を取り直してRubyGemsを使ってみる

$ rubygems install twitter
When you HTTParty, you must party hard!
Successfully installed rubyforge-1.0.4
Successfully installed rake-0.8.7
Successfully installed hoe-2.3.3
Successfully installed ruby-hmac-0.3.2
Successfully installed oauth-0.3.5
Successfully installed mash-0.0.3
Successfully installed crack-0.1.4
Successfully installed httparty-0.4.3
Successfully installed twitter-0.6.15
9 gems installed

できた!やった!

$ gem install json
Building native extensions.  This could take a while...
Successfully installed json-1.1.9
1 gem installed

Native Extensionsもこの通り!

※ちなみに ~/.gemrc 内で gem: --no-ri --no-rdoc を指定しています。

感想

面倒。rootがあればapt-get install hogeだし。

RubyGemsが1.9系からは本体同梱になったので手間が省けているけれど、1.8系でやろうと思ったらもう一つ手間が増える事になるね。

疑問

今回コンパイルしたzlibの本体は$HOME/libにインストールされたんだけど、その後のruby extconf.rbとかはどうやってその場所を見つけたんだろう。includeパスの../libとかを自動で探してくれるとか?

誰か教えてくださいな。

追記

ちなみに、zlib本体などは自分でコンパイルせずにdebパッケージなどを自分で解凍して配置するのもいいとおもう。けど手間は大差ないかも。

2009-08-12

今までSleipnir一途だったが1ヶ月間Firefoxを使ってみた

はじめに

Firefox3.5が出たのをきっかけに、Sleipnir一途だったが、1ヶ月間「メインで」Firefoxを使ってみた。この記事はそのまとめと感想である。

Firefoxは、たくさん拡張があって便利だけどいまいちそれぞれの拡張もかゆいところに手が届かない、そんなイメージがあった。それと、SleipnirHeadline-Readerが便利で手放せなかったというのもある。

[2008/8/12追記]使用環境

比較記事なので環境を記した方がいいですね。追記します

Firefoxを使った感想

あちこち拡張を探し回って、かなり使いやすいFirefoxができあがった。エンジンも優秀だし、移行できるならしてしまいたいと思ったが、やはりいくつかの点では不満が残った

Firefoxがよいと感じたところ

表示エンジン

悪名高きIE系のTridentエンジンとさようならできる。Tridentがいくら頑張ってるとはいえ、現状では"比べてしまうと"Geckoが優秀。スクロールのなめらかさなどは全然違う。

履歴関連

見たページをインクリメンタル検索できるのは便利。Sleipnirは履歴検索が出来ないので全然だめ。

IE7風のお気に入り・履歴表示(bookmarks history panel)

ページ表示領域を圧迫しない形でお気に入りや履歴にアクセスできる。Sleipnirでもサイドバー+Nun!で代替できそうだが、Nun!自体が問題ありで使えない(エクスプローラーバーパネルの表示でページ表示領域を少し圧迫してしまう)

リンクバーのアイテムタイトルを非表示にできる(Smart Bookmarks Bar)

[2009/8/12追記]Shade LinkBar Extensionで可能でした

リンクバーによく使うサイトのファビコンだけを大量に並べるのは意外に便利。Sleipnirでもタイトルを空白にする事で可能だが、マウスオーバーでもタイトルが表示されない弊害がある。

検索エンジンを簡単に追加できる(Add to Search Bar)

検索エンジンを簡単に追加できる。SleipnirURLなど全部手作業で入力しなくてはいけないので面倒くさい。

ウィンドウを複数枚開ける

目的ごとに複数のウィンドウを開ける。タブが多くなってきたら2枚目のウィンドウ、みたいな使い方ができる。SleipnirはMDIなので複数ウィンドウとかできない。

安定している

というか、Slripnirが不安定なんだと思う。よく落ちるし。タブを一気に閉じたときにしばらく止まるのもどうにかならないかな。Sleipnir。クラッシュしたときの復元確認もよい。

[2008/8/12追記]Sleipnirがtest版だから不安定というのもあるかもしれない。が、正式版でも安定しているとは言い難い(自分の環境では)


Sleipnirがよいと感じたところ

各機能の作り込み

拡張にもよるけれど、Firefoxの拡張はかゆいところに手が届かなかったりする。それに対しSleipnirの設定はごちゃごちゃしているけれどだいたいやりたいことはできる。

RSSリーダー

好みの問題だけれど、Headline-Readerに匹敵するものはFirefoxとWebベースのサービスにはなかった。Google Readerなどはどうも使いにくい。

ドラッグ&ドロップ系拡張

FirefoxにもEasy DragToGoがあるが、反応が悪くて使用していてストレスだった

検索バー

文字列入力後に検索エンジンを選択すると同時に検索、というのがどうしてもできない。惜しいものはあったけれど。

プロキシが簡単に変更できる

FirefoxではProxy Toolbarがあるが、選択肢から選ぶ形式ではなく、その場で毎回アドレスを打ち込まなくてはいけなかった。Sleipnirではメニューから一覧より選択で簡単に変更できる。

マウスジェスチャFlash上でも使える[2009/8/12追記,再び追記]

FirefoxFlash上でマウスジェスチャが使えない。結構ストレス

使う方法もあるらしい ↓ ブコメより

id:efcl マウスジェスチャ on Flash http://orera.g.hatena.ne.jp/miya2000/20070315/p1

まとめ

個人的にはRSSリーダーSleipnirのほうがよいのでSleipnirを使う事になりそうだけれど、Firefoxもとても魅力的だった。Sleipnirに無い便利な機能がたくさんあるし。なにより安定度が違った。

ただ、それぞれの拡張の動作が結構いいかげんだったり競合したりするあたりは、ほとんど純正品のSleipnirのほうが良いと感じた。

結論としては、Firefoxは優秀。ただSleipnirに慣れていると移行できるほど1対1対応の拡張はないから移行できない。


付録1 Firefoxに入れた拡張

最後に、Firefoxに追加した拡張をSleipnirとの対応を示しながら挙げていく

付録2 Sleipnirに対する要望

  • もっと安定させて!
    • もう既に頑張っているとは思うけど。
  • ツールバーへ任意のボタンを追加したい
  • 任意の場所へツールバーボタンを配置したい
    • 標準ツールバーにしかボタンを置けないと、ボタンの位置が半固定になってしまう。例えばIE7chromeのようにページ右上にもボタンを配置したい
      • ボタンを置けるだけのツールバーがあればいいんだけど
  • Nun!相当の機能の本体実装
    • エクスプローラーバータブもNun!できるようにして欲しい。
  • リンクバーにタイトル非表示機能を
    • タイトルを空白にしても右側に微妙な隙間ができる
    • それには目をつむっても、マウスオーバーでタイトルが表示されないのは困るときがある
    • [2009/8/12追記]Shade LinkBar Extensionでできました。自動的に隠さない設定もあれば良いんですが。。。
  • タブの最低・最大サイズ指定
    • 1段表示のとき、最低・最大サイズを指定して、タブが指定サイズ以下にはならないようにしてほしい
  • お気に入り・履歴の共有・同期
    • 複数台のPCで共有・同期できるのはすごく便利だった
  • 履歴関連をまともにしてほしい
    • 履歴の検索も出来ないってどういうことよ。いっぱい見た後じゃ探すの大変じゃん。
Connection: close