nDiki : ファイルシステム

2006年8月8日 (火)

Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索

Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。

Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。

ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.orgMicrosoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。

ちなみに今まで

ローカルファイルの検索

メールMew 4 での検索(with Namazu)。
nDiki 記事howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。
メモhowm
開発中のソースコードEmacsgrep-find でだいたい事足りる。たまに ack。
仕事のメモできるだけ社内 Wiki社内 Blog に書いておいて Hyper Estraier
その他grep 程度。

といった感じかな。

それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。

問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。

そんなファイルを見つけるのが楽になれば、導入効果あり。

インストールして試してみる

Linux kernelinotify を有効にする

まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て

 CONFIG_INOTIFY=y
 CONFIG_EXT2_FS_XATTR=y
 CONFIG_EXT3_FS_XATTR=y

となっていることを確認。

/home の extended attributes を有効にする。

/etc/fstab を編集し、

 /dev/hda4 /home ext3 defaults 0 2

 /dev/hda4 /home ext3 defaults,user_xattr 0 2

に変更する。書き換えたら、

 mount -o remount /home

でマウントしなおす。

Beagleインストール

Debian パッケージインストール

Beagle を起動

一般ユーザで

 beagled

で起動する。停止は

 beagle-shutdown

で。

Beagle を設定
 beagle-settings

で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。

検索してみる
 beagle-search

検索 UI を起動し検索してみる。 日本語も OK のようである。

GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。

KDE 系のクライアントもあるので別途いろいろ確認

Firefox 拡張

xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。

設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。

感想

デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。

日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。

スポンサード リンク
[ 8月8日全て ]

2007年2月2日 (金)

DiKickergrep 検索機能を追加

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。

社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。

書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。

ということで、検索ベースの串刺し表示機能を実装してみた。

grep ベース

実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。

ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは

 grep -Flre $escaped_string dir...

というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。

で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。

ただし1回実行した後、ファイルがファイルシステム/OSメモリ上にのっている状態では 0.1秒程度で完了する。

検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。

今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。

[ 2月2日全て ]

2007年12月23日 (日)

aufs を使って Web サイトのドラフト作成する

この nDiki はローカル PC 上で Emacs で記事ファイルを書き、出来上がったら UnisonWeb サーバと同期させる形でアップロード・公開している。

この方法で一つ問題なのは「書きかけの記事ファイル」の扱いが面倒なこと。 書きかけの記事ファイルがある状態で Web サーバと同期するとそれが公開されてしまうのでまずい。しかし完成している記事ファイルがあるならばそちらは同期して順次公開したい。 同期する時には書きかけの記事ファイルを退避させればいいのだが、思いっきり面倒。

ということで手元で公開用 (Web サーバ と同期用)のディレクトリツリーと、ドラフト用(ローカルの Web サーバでのレビュー用)のディレクトリツリーを分けられるようにすることにした。 この2つのディレクトリツリーの差分となる草稿・更新ファイルは aufs を使うことで簡単に管理することができる。

aufs

aufs は stackable unification filesystem の一つ。 同様なものとしては UnionFS がある。 UnionFS よりも aufs の方が評判が良いようなので今回は aufs を使うことにした。

aufs では複数のディレクトリ(ブランチと呼ぶ)をオーバーレイさせて、1つのディレクトリとして扱うことができる。 公開用ディレクトリツリーに、ドラフト用ディレクトリツリーをオーバーレイさせることで、元のディレクトリには変更を加えることなく透過的に変更できる仮想的なディレクトリツリーを作ることができる。

aufsインストール

Debian GNU/Linux sid へはkernel 再構築とあわせて module-assistant でインストールした。

マウント

以下のように3つのディレクトリを作ってマウントする。

/home/naney/www.naney.org
公開用ディレクトリツリー。本番モノ。公開サーバと同期する。
/home/naney/draft.naney.org
草稿や修正されたファイルが書き込まれるディレクトリツリー。
/home/naney/next.naney.org
公開用ディレクトリツリーに、草稿や修正されたファイルが仮想的にオーバーレイされたディレクトリツリー。プレビュー用。
 mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro none /home/naney/next.naney.org

公開ディレクトリツリーは read only に、草稿用のディレクトリツリーは read - write になるように指定する。

これで /home/naney/www.naney.org 以下はいじらないまま、/home/naney/next.naney.org 上で草稿を書いたりファイルを編集したりすることができる。 /home/naney/next.naney.org 以下で追加したファイルや、変更したファイルは aufs が /home/naney/draft.naney.org 上に保存してくれる。

完成したものを /home/naney/draft.naney.org から /home/naney/www.naney.org に順次反映させ(移動し)、公開サーバへ同期することで公開していくことができる。

手元ではいろいろ書き散らせておけるのは、これは便利。

マウントオプションは他にいろいろあるようなので、こまかい設定は見直すかも。

その他

ファイルシステムレベルの処理なので、アプリケーション側では何も手を加えなくてもよいのが良い。

今回は公開用とドラフト用としたが、公開用と未公開用をローカルでミックスして表示するようにしたり、複数ユーザのコンテンツディレクトリを仮想的に1つにまとめたりと、いろいろ面白い使い方ができそうだ。

[ 12月23日全て ]

2008年2月21日 (木)

flickrfs で Flickr をマウントして写真をコピーする

Flickr 上の画像を読み書きするのに、Linux 的にはやっぱりファイルシステムとしてマウントして処理したいと考える。 もちろん世の中そういうのを作っている人がいるわけで、それが flickrfs。 セットアップしてみた。

セットアップ

インストール

flickrfs Debian パッケージDebian GNU/Linux sid BOX へインストール

FUSE の設定

Linux 上の自分のアカウントで FUSE を使えるようにする。

 adduser ユーザ名 fuse
flickrfs の設定

~/.flickrfs 上に設定ファイルを用意する。

 mkdir ~/.flickrfs
 emacs ~/.flickrfs/config.txt

config.txt:

 [configuration]
 browser:/usr/bin/iceweasel
 set.sync.int:300
 stream.sync.int:300
 add.default.tag:no
 APIKey:xx
 Secret:xx
~/flickr にマウントする
 cd
 mkdir flickr
 flickrfs flickr
見てみる
 自分のセットの一覧が出る
 ls ~/flickr/sets

 セットの中の画像ファイルリストを見る
 ls ~/flickr/sets/<セット名>

 自分のタグ別ディレクトリアクセス用ディレクトリ
 自動的には何も取得されない
 ls ~/flickr/tags/personal

 Chicago タグのファイルリストを見る
 mkdir ~/flickr/tags/personal/Chicago
 ls ~/flickr/tags/personal/Chicago

 パブリックのタグは ~/flickr/tags/public/<タグ名> で

メタデータは「.<タイトル>.jpg.meta」ファイルで読み書きできるらしいが、試していない。

アンマウント
 fusermount -u flickr

メモ

指定したタグ中の同じタイトルの写真はどれか1つかアクセスできないみたい。

[ 2月21日全て ]

2008年9月11日 (木)

研究室 OB Twitter-ers と秋葉原で飲んだ

naney:2848288568

研究室仲間の田中丸君が今日は両国まで来ていると Twitter で知ったので、同じ研究室仲間で秋葉原で働いているやまだ君にも声をかけて、秋葉原で飲むことにした。 3月15日以来、約半年ぶりだ。

そういえば Twitter で声をかけてというのはリアル友人とはいえ自分にとっては初めてだな。

場所は矢まと秋葉原店。 前回の記事にはドリンクがくるのが遅かったと書いてあるけれど、今回はそんなことをなかった。

隣のテーブルでは、男が嫌がり気味の女をバシバシ写真で撮っていたようだけれど何だろアレ。

話題

Mac OS X 使いのやまだ君と、Debian GNU/Linux 使いの自分と、基本 Windows だけれどオールラウンドな田中丸君とまあそれぞれ嗜好は違うのだけれど、御互い尊重しあってていい関係といった感じだ。

Linux デスクトップユーザとしてのメリットは「(自分の場合)アクセサリーとか周辺機器とか動かない可能性があってあまり買おうと思わないので、お金を使わなくて良いこと」と吹いておいた。

やまだ君の「Ctrl-p で印刷とかイライラする」というのには激しく同感。

帰省中だということを理由に料理多めにもらって、あまり飲まないというのを理由に割り勘率下げてもらった。Thanks!

[ 9月11日全て ]

2009年7月28日 (火)

FriendFeed から twitterfeed

10日ほど前に Twitter へのフィード投稿を twitterfeed 経由から FriendFeed 経由に変更してみた(記事)のだけれど、挙動がニーズにマッチしないので twitterfeed に戻した。

FriendFeed の Twitter 投稿機能だと date がちょっと古いフィードアイテムは新着でも投稿されないっぽいのである。

nDiki で使っている DiKickerRSS フィードでは、アイテムの date を最初の公開日時ではなくファイルシステム上にある記事ファイルの更新日時としている。 このためローカルホスト上で記事ファイルを作成し、例えば半日後に UnisonWeb サーバファイル同期させて公開するとその時点で半日前の日時の記事が新着となる。 twitterfeed ではこのような場合でも新着として Twitter へ投稿してくれるのだが、FriendFeed ではどうも新着であってももう旬ではない記事として投稿してくれないっぽい。 挙動の設定も変更できなさそう。

ということで FriendFeed の Twitter 投稿を止めて、twitterfeed の設定を再アクティブ化。twitterfeedOAuth に対応したり利用できる URL 短縮サービスが選べるようになっていたりと着実に改良されているので今後も継続してサービスされていくことを期待したい。


[ Twitter 関連サービス ]

[ 7月28日全て ]

2010年8月13日 (金)

今日のさえずり: __FILE__ と __LINE__ を吐かせる日

naney:4896054531

2010年08月13日

  • 09:37 RT @shuzo_matsuoka: おい!13日の金曜日たん!気にするな!大丈夫!!僕がついていれぞ!はい!でもさらに仏滅!でも気にしない!
  • 09:47 今日は #C78 あたりをチェックしていれば動きがわかるのかな?
  • 09:49 京浜東北線時間調整につき山手線にスイッチ。
  • 09:54 「お、望遠レンズ?」とおもったら水筒。
  • 10:02 今週なら覗いたんだけどな。 http://movapic.com/...
  • 10:19 Windows Update がかかっているのでスロースタート中。
  • 11:15 夜はみんなで @as_tone の家に移動してデバッグ? RT @as_tone: 弁当忘れた…夜の分も…
  • 12:24 #C78 同じ話題が何度も何度も出てくるので辛い。
  • 12:26 家から持ってきたバームクーヘン冷蔵庫に入れておくの忘れてた。1片は今食べてもう1片は冷蔵庫へ。
  • 12:39 Inkscape Portable ってあったんだ。
  • 12:51 EvernoteSVG 形式ファイルをインラインで表示できればハッピーなんだけどな。
  • 14:02 RT @naofumiyoshida: 御巣鷹の日航機事故の時、たまたま家族旅行現場近くにいた。ホテルのロビーにみんな集まってかたずをのんでテレビを見守る異様な雰囲気だったのを覚えている。いつも冷静な父親が慌てていたので、子供ながらただ事ではないと思った。思い出したなう。
  • 14:36 @atq Evernote 上でささっと図を書きたいなと。インクノートだとちょっと。現状だと何かのドロー系ソフトウェアに関連付けられるファイルと、それを画像としてエクスポートしたファイルの両方をノートに貼っておくことになってちょっと手間です。
  • 15:33 std::binary_function から継承してたって operator () があるとは限らないか。 #cpp #cplusplus
  • 15:34 @atq 図に限っていえば検索とブラウズが Evernote に入れたい理由です。ファイルシステムからの解放。
  • 15:38 template クラス化するしかないか。芋蔓式に template 化しなければならないのがちょっと嫌だけど。#cpp #cplusplus
  • 16:27 あれー、公園前の通りにドトールあったと思ってたんだけど。
  • 16:30 ダブルエスプレッソ 168円。 (@ ファミリーマート神田佐久間町店) http://4sq.com/biJuCj
  • 17:18 @atq Evernote + 添付はファイル名の呪縛から解放されるという点が、個人的に気に入っています。
  • 19:17 __FILE__ と __LINE__ を吐かせる日がやってまいりました。
  • 19:56 帰りの時刻表 Evernote にクリップ。終電は逃せない。
  • 21:10 親子丼 490円。 (@ なか卯 神田佐久間町店) http://4sq.com/9tdwTs
  • 21:28 今日の親子丼とってもあっさりだった。というかこれ失敗だろ、分量違いか何か入れ忘れか。テイクアウトで入れ忘れられていて、こちらから声をかけたぐらいだし、覇気がなかったし、まあこれぐらいで済んでよかったのかも。
  • 22:38 @madaaamj 店員一人ぼっちだったのでちょっと同情してあげました。
  • 22:40 @madaaamj Evernote ようやく使いどころが分かってきたかなというところです。スマートフォンからノート追加したり、逆に閲覧できたりするの便利ですよ。自分も Xperia にしてからグンと使うようになりました。
  • 23:10 結構ハズレがあるんですねえ。 RT @suzukis: 限りなく卵かけごはんに近い親子丼を出されたことならあります。卵入れ忘れたかと本気で疑いました RT @Naney: 今日の親子丼とってもあっさりだった。というかこれ失敗だろ、分量違いか何か入れ忘れか。
  • 23:11 「そろそろ熱海の捜査官ですね」 in office。
  • 24:11 えーと、東京ビッグサイトのアレ、パソケット?
  • 24:46 弁当どうなってたんだろ。
[ 8月13日全て ]

2010年9月29日 (水)

Evernoteデベロッパーズミーティング」に向けて「Evernote と自分」

Evernote開発ミーティングが2日後の10月1日に秋葉原であると聞いて、会社の近くだしいい機会だと思って参加申し込みしてみた。

これまでの「Evernote と自分」はこんな感じ。

  1. 2009年03月02日 Evernote メンバー使用開始
  2. 2009年10月28日 Evernote よりも howm だよね
    • 一度 Evernote から離れる。
    • 「起動時間や編集のもっさり感とかでどうも Evernoteメモする気はおきない。」
    • ローカル PC 上にテキストファイルに置いておくと Evernote が自動的に(インポートではなくて)同期してくれるといいなとは今でも思ってる。
  3. 2010年02月09日 Evernote また使い始めてみることにした
  4. 2010年03月16日 Evernote プレミアムに
    • 「端末に縛られないこと」「PDF ファイルやメディア系のファイルを管理できること」「Xperia (Android)で使えるらしいとのこと」で Evernote をメインにしてもいいかなと。
    • Xperia には結局プリインストールされなかったが。
  5. 2010年03月18日 ENScript.exe ちょっと触ってみる
  6. 2010年03月25日 Evernote に添付した FreeMind Map ファイルを直接開けるようにする
    • この頃からアプリケーションデータを Evernote に突っ込んでおいて、ノートから直接開いて編集するという方法を活用するように。Frieve Editor のデータファイルとか。
  7. 2010年06月25日 ノート数1000をこえた
  8. 2010年07月06日 Evernote は記憶なんだから共有なんて不要?
  9. 2010年07月20日 Evernote サービス一時停止
  10. 2010年08月13日 ファイルシステムからの解放

今日現在ノート数は1800ちょっと。 API の存在はしっているけどまだ使っていない。

とそんな感じかな。

API 使って Evernote 上に書いたノートを自動的に Blog 記事に書き出したりとか、ノートブックを分析して関連ノート間で自動的に参照をつけあうとかできれば面白いかな。

[ 9月29日全て ]

2013年9月10日 (火)

AndroidiOS の両方使うと、片方だけより使えるものが限られてくる

iPod touch使い始めてから1カ月ほど経過。iPhone を使っていないのでフルに iOS 使ってますというわけではないけれど、iPad 2 だけでは感じなかった良さはいろいろわかってきた。見た目 Android の UI より綺麗だし一貫性があるし確かに心地よい。操作のしやすさでいうと、インテントやバックボタンや性能の良い日本語入力やファイルシステムが直接見えるところとか慣れとかもあって Android の方がまだ上に感じている。

しかし2つの OS のデバイスを使うようになると、使えるものが限られてくるねぇ。 「iOS にしかないアプリを使える/試せる」ようにというのが iPod touch を買った理由で、実際に今まで使えなかったアプリを試せるようになった。でも両方使うとすると「メール」「SNS」「カレンダー」「ノート」「オンラインストレージ」その他常用するものはどちらでも使えないと不便なわけで、そうすると必然的に AndroidiOS 両方で使えてアカウント・データを共用(あるいは同期)できるアプリ・サービスかどうかという視点で選択が絞られてきてしまうのだよね。

例えば Android 端末では瞬間日記を使っているのだけれど、iOS のそれとは同期ができない。うーん。なにかいい journal アプリはないものかと。そんな感じ。

iOS の方はとりあえず評判の良い Day One を入れてみた。Dropbox 上にデータを同期しておけるのがとても魅力なのだけれど、Android 端末からは見られないし書けない。Day OneAndroid開発に取り組んでいるようなので、今後に期待してちょっと使ってみるけど現状だとテンポラリな感じになっちゃう。

いろいろ使うのははたして便利なのか不便なのか、どっちなんだろうね。

[ 9月10日全て ]

2013年11月15日 (金)

GitHub トレーニングチームから学ぶ Git の内部構造 #githubjp に行ってきた

naney:10867844766

GitHub 主催の「GitHub トレーニングチームから学ぶ Git の内部構造」に行ってきた。会場は Yahoo! JAPAN のある東京ミッドタウン。

内容的には「入門Git」の始めの方で説明されている Git のデータ構造(もはやファイルシステム)について。「Git の内部: グラフ、ハッシュ、圧縮」というのがトピックとのことだったので、漠然と Gitソースコードレベルでの話題になるのかなと思っていたのだけれど、そうでなかった。

新しく知った事:

  • ./git/objects/<..>/<filename> の<..> の2文字はオブジェクト ID の最初の2文字(大量ファイルのディレクトリ分割のためというのはわかっていたけれど、ああ単純に最初の2文字だったんだ)。
  • git fsck でリポジトリの不整合が見つかっても復旧はできない。復旧バックアップからすること。
  • pack という処理がある。詳しくは後で調べる。

オブジェクトが不変でかつ同じ内容ならオブジェクト ID が必ず同一になることを利用して、オブジェクトファイルを共用していることを発表中「ハードリンク」と言ってしまったけれど、多くの人がファイルシステムのハードリンクで実現されていることと勘違いしていた模様。質問を受けて説明しなおしていたけど。

ちなみに実際にファイルシステム上でハードリンクになるのは、ローカルリポジトリを指定して clone した時。大きなリポジトリでもローカル内で clone する分にはストレージ容量的にはあまり気にしなくて大丈夫。

[ 11月15日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.066488s / load averages: 0.53, 0.53, 0.50
nDiki by WATANABE Yoshimasa (Naney)
Powered by DiKicker