nDiki : シンボリックリンク

シンボリックリンク - symbolic link

ツール

  • symlinks

2009年7月3日 (金)

全文検索システム Hyper Estraierアップデート

社内 Web ページ全文検索用に設定していた Hyper Estraier だが、かなーり前からたまにクロール/インデックス作成に失敗してインデックスが壊れてしまうことがあった。で検索できないまま放置していたのだが、やはり時々検索したいというリクエストをもらったので、復旧することにした。 Hyper Estraier も 1.2.7 のままだったので、最新版に更新。 設置が 2006年6月なので3年ぶりの更新。

前回と同様ソースからのインストール。 今回は自分のホームディレクトリ以下に。 以下作業手順メモ

QDBM

 wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz
 tar zxvf qdbm-1.8.77.tar.gz
 cd qdbm-1.8.77
 ./configure --enable-zlib --prefix=$HOME/local/hyperestraier-1.4.13
 make check
 make install

Hyper Estraier

 wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
 tar zxvf hyperestraier-1.4.13.tar.gz
 cd hyperestraier-1.4.13
 PKG_CONFIG_PATH=$HOME/local/hyperestraier-1.4.13/lib/pkgconfig ./configure --prefix=$HOME/local/hyperestraier-1.4.13
 make
 make check
 make install

インデックスの作成とクロール

前回 /usr/local/var/lib/hyperestraier/estwaver に保存するようにしていたので、今回もそそれはそのままで。 クローラのルートにある _conf は作り直しの際に間違えて消してしまいそうになるので、ホームの etc においておいてシンボリックリンクをはっておく。 _conf は以前に作っておいたものを利用。

 mkdir /usr/local/var/lib/hyperestraier/estwaver
 $HOME/local/hyperestraier-1.4.13/bin/estwaver init /usr/local/var/lib/hyperestraier/estwaver
 rm /usr/local/var/lib/hyperestraier/estwaver/_conf
 ln -s $HOME/etc/hyperestraier/_conf /usr/local/var/lib/hyperestraier/estwaver/_conf
 $HOME/local/hyperestraier-1.4.13/bin/estwaver crawl -revcont /usr/local/var/lib/hyperestraier/estwaver

検索インタフェース CGI プログラムを配置

 cd $WEBDIR/search/hyperestraier
 cp $HOME/local/hyperestraier-1.4.13/libexec/estseek.cgi .
 chmod 755 estseek.cgi
 cp $HOME/local/hyperestraier-1.4.13/share/hyperestraier/locale/ja/estseek.* .

で estseek.conf を編集。indexname を /home/naney/local/hyperestraier-1.4.13/estwaver/_index に。その他好みにあわせて設定を変更。

cron 設定

前回の設定では、クロールとインデックスの更新夜中に行うからインデックスがロックされてもいいやと直にオリジナルのインデックスを更新するようにしていたが、今回はきちんとコピーして更新するようにした。 1日1回以下のスクリプトを実行するように設定。

 #!/bin/sh
 PREFIX=/home/naney/local/hyperestraier-1.4.13
 VARDIR=/usr/local/var/lib/hyperestraier
 test -e $VARDIR/estwaver-copy && exit
 cp -a $VARDIR/estwaver $VARDIR/estwaver-copy
 $PREFIX/bin/estwaver crawl -revcont $VARDIR/estwaver-copy
 $PREFIX/bin/estcmd inform $VARDIR/estwaver-copy/_index || exit
 rm -rf $VARDIR/estwaver
 mv $VARDIR/estwaver-copy $VARDIR/estwaver

リクエストしてくれた人、検索できるようになったから使ってね。

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

2009年10月28日 (水)

Evernote よりも howm だよね

Web ページのクリッピングなどは Evernote でしているんだけれど、起動時間や編集のもっさり感とかでどうも Evernoteメモする気はおきない。

やっぱりメモhowm が本命かな。

Evernoteテキストファイルのままでノートを置いておける機能があればいいのになあ。 やっぱりテキストファイルの方が融通が効いて便利。

howm でも PC 間でメモを共有できるように、 Dropbox の中に var/howm ディレクトリを作って、そこへのシンボリックリンクhowm-directory の下に置いておくことにした(howm-directory 全部を Dropbox 上に置いておくのはまだ気がひけるので)。 C-c , c では直接そこにはメモができないが、直接そのディレクトリにファイルを作成するか既存のものを移動するかで PC 間で共有できる。

howm 1.3.3 から 1.3.7 へ

非公式 Debian パッケージhowm 1.3.3 を使っていたのだけれどこれ2006年6月版で、チェックしていない間に 1.3.7 (2008年12月31日版)までバージョンが上がっていた。

howm 1.3.7 に上げたら最初のスキャンがかなり速くなった。ハッピー。

[ 10月28日全て ]

2009年10月29日 (木)

howm でサブ階層を作ってメモの一部のみを Dropbox で共有

howm の良さを見直したところで、howmメモファイルの一部を Dropbox で共有するように環境設定してみた(以下ディレクトリ構造とかは説明のため簡素化しているけれどだいたいこんな感じ)。

howm-directory を設定する(今まで通り)

 (setq howm-directory "~/var/howm/")

Dropbox 上に howm ディレクトリを作成する

~/var/DropboxDropbox ディレクトリにしているので、その下に howm ファイルを置く場所を用意する。

 mkdir ~/var/Dropbox/var/howm

~/var/howm/Dropbox から ~/var/Dropbox/var/howmシンボリックリンクをはる

 ln -s ~/var/Dropbox/var/howm ~/var/howm/Dropbox

howm-directory のサブディレクトリ以下にメモを新規作成できるようにする

C-c , I で名前をつけてメモファイルを作成できるが、これだと howm の日時をベースにしたファイル名自動生成が使えないので手軽さが半減する。

以下の関数を定義して M-x howm-create-interactively-in で howm-directory のサブディレクトリを指定してメモ作成ができるようにした。

 Memo directory: ~/var/howm/

と表示されたら後ろに Dropbox/ と追加して ~/var/howm/Dropbox/ を指定してあげると、そのディレクトリの下(の年/月の下)にメモファイルが新規作成される。 howm-directory を一時的に上書きするという安直実装だが、ちょっと使った感じではうまく動いている様子。

 (defun howm-create-interactively-in (&optional use-current-directory)
   (interactive "P")
   (let ((howm-directory (read-directory-name "Memo directory: "
                                              (if use-current-directory
                                                  nil
                                                howm-directory))))
     (howm-create t nil)))
[ 10月29日全て ]

2010年10月6日 (水)

今日のさえずり: レンズ付きフィルム握ってる若者見つけてホッコリした

2010年10月06日

  • 09:23 今日も電車冷房入ってる。
  • 09:30 1週間限定のウチカフェ「苺のロールケーキ」が大変気になる。
  • 09:46 久しぶりにレンズ付きフィルム握ってる若者見つけてホッコリした。
  • 12:08 弁当 350円。
  • 14:13 コードリーテディングした内容のまとめを Word 使って書いているけど、やっぱ使い慣れないなあ。LaTeX2e? _ とか面倒だな。reStructuredText にするか。まあこちらは今度は画像の管理が面倒なんだけど。
  • 14:37 やっぱり reStructuredText にした。圧倒的に速く書ける。
  • 16:21 Samba で外部へのシンボリックリンクが辿れなくなっていた。Samba アップデートしたからか。[global] unix extensions = No にして、必要なセクションに wide links = Yes を追加。
  • 17:23 コーヒー飲料 100円。
  • 19:17 工数見積もり中。バッファとデバッグを10%ずつ盛ると結構な時間数になっちゃった。
  • 19:34 ああ、そうだ国際化も考慮しないといけないんだっけ。
  • 20:12 RT @zerobase: 成果物ベースで見積を出して一括請負する能力がなくて、人月見積で客先常駐で顧客の朝令暮改につきあい続けて現場が疲弊してるSIerって、いくつかの点に注目すればわりとアジャイルに近いところにいる。経営者が賢ければ変えられるんじゃないかな。
  • 22:41 YAPC::Asia Tokyo 2010 会場の東京工業大学「70周年記念講堂」「百年記念館 フェライト記念会議室」「東工大蔵前会館 ロイアルブルーホール」って電源取れるとこないのかな? #yapcasia
  • 24:11 Xperia電池パックもう1個買い足すか迷ってる。手持ちの2個と合わせて3個必要なシチュエーションって滅多にないからなあ。
[ 10月6日全て ]

2010年11月16日 (火)

Xperia を root 化してシャッター無音化とスクリーンショット取得可能化

Xperia SO-01B も Android 2.1 になったわけだけれど、NTTドコモも次々 Android 端末出してるし Xperia も後継機種のが出ているしで、ビジネス的にも開発リソース的にも Android 2.2 以降へのアップデートの可能性はちょっと低くなってるんじゃないかなと思う今日このごろ。 であればそろそろ root 化にチャレンジしてもいいよね?

ということで Web で調べ調べしながら root 化。

root 化アプリケーションの z4root を使う。

マーケットで z4root を検索してインストール。 起動したら画面中央の Root ボタンを押す。 「USB デバッグが有効になってないよ」という主旨のダイアログが出たので、ボタンを押すと Xperia の[アプリケーション設定]画面が開く。[開発]の中の[USBデバッグ]をチェック。

再度 z4root を実行して Root ボタンを押す。

しばらく待つと再起動がかかる。

再起動後 z4root を実行するとスーパーユーザ権限与えてねダイアログが出るので許可する(1度ここでもたもたしてたら Root 取れなかったみたいで再度 Root ボタンを押してやりなおした)。

root が取れると z4root の画面は Re-root と Un-root の2つのボタンが表示されるようになる。

Debian GNU/Linux から adb で Xperia にリモート接続できるようにする

Android 開発環境以前インストールしてあったので、その中にある tools ディレクトリの下の adb コマンドを使う。

 adb devices

すると

 List of devices attached
 ????????????    no permissions

と表示される。udev の設定が必要らしい。

 echo 'SUBSYSTEM=="usb",SYSFS{idVendor}=="0fce",Mode="0666"' > /etc/udev/rules.d/51-android.rules

して /etc/init.d/udev restart。adb 系のプロセスが動いていれば kill。

この状態で

 adb shell

を実行して

 $

というプロンプトが出たらリモート接続成功。

カメラのシャッター音設定で OFF を選べるようにする

Xperia の /system/build.prop というテキストファイルを書き換えればいいらしい。

adb shell で入っている状態で su を実行。

 $ su

初めての場合 z4root がインストールしてくれた Android アプリ 「Superuser」が Xperia 上で開いて /system/bin/sh にスーパーユーザ権限を与えて良いかときいてくるので許可する。 うまくいくと adb のプロンプトが # にかわる。

次に /system を書き込めるように remount する。

 # mount ← どこにマウントされているか確認。
 # mount -o remount,rw /dev/block/mtdblock2 /system ← rw で remount。

これまた z4root が インストールしてくれている、UNIX コマンドラインユーティリティをひとまとめにした BusyBox を使う。/system/bin/busybox としてコマンドが入っているのでこれを適宜呼び出す(busybox ファイルを ls やら grep やら vi やらといった名前でコピーするかシンボリックリンクを張るかすると、直接その機能が実行されるようになるのだが、ここではその設定は今はやらないでおいた)。

 # busybox cp /system/build.prop /system/build.prop.original ← 編集前を残す。
 # busybox vi /system/build.prop ← vi で開く。

で vi エディタが開くので /system/build.prop ファイルを編集。

 ro.camera.sound.forced=1

 ro.camera.sound.forced=0

に書き換えて保存したら Xperia再起動

これでカメラの設定画面中のシャッター音で OFF が選べるようになった。

スクリーンショットをとれるようにする

マーケットから Drocap2 をインストール。 drocap2 を実行して、メニューボタンから[設定]を選び、[撮影モード]で[通知で撮る]を選択。 そうすると通知バーを引き出した中に[drocap2トリガー]というのがあらわれるようになるので、スクリーンショットをとりたいときにそれを実行する。

初回は Android アプリ 「Superuser」がスーパーユーザ権限を与えて良いかときいてくるので許可する。 これでスクリーンショットが端末単独でとれるようになった。

めでたしめでたし。

追記

2011年1月19日のソフトウェア更新でマルチタッチ対応した Xperia SO-01B では z4root が使えなくなった。 かわりに Flashtool で root 化ができる。→ 設定方法


[ Android アプリレビュー ]

[ 11月16日全て ]

2012年2月7日 (火)

Unison で同期しているディレクトリの一部を Dropbox フォルダへ移動してどこでも編集可能に

さくらのレンタルサーバ上にあるデータはローカルの Linux BOX と Unison で同期している。 この nDiki の記事も Emacsテキストファイルで作成した後、Unison で同期して公開している。

 [さくらのレンタルサーバ]
 /home/naney 
     |
   <Unison> 同期
     |
 [ローカル PC]
 /home/naney/site/site_name/sync

ただこれだとローカル PC から離れている時の記事の下書きとか面倒くさい。ということで Dropbox 上に一部を置くことにした。同期している全てのデータを Dropbox 上に置くのはナンセンスなので、一部のディレクトリのみ。

Dropbox フォルダ側は単一のディレクトリツリーである必要があるので、Unison で同期しているディレクトリのツリーの一部を Dropbox フォルダ上へ移動し、シンボリックリンクに置き換え。Unison の設定ファイルに follow = path share/some_dir を追加してそのディレクトリはシンボリックリンクを辿ってその先の中身で同期するようにした。

 [さくらのレンタルサーバ]
 /home/naney 
     |
   <Unison> 同期
     |
 [ローカル PC]
 /home/naney/site/site_name/sync
     /home/naney/site/site_name/sync/share/some_dir
         |
       <symbolic link>
         |
     /home/naney/var/Dropbox/site/_name/sync/some_dir
 /home/naney/var/Dropbox/site/_name/sync
    |
 [Dropbox]

これで Dropbox を入れた他の PC や Android 端末から記事の作成・編集ができるようになった。

ちなみに Google Chrome に SourceKit をインストールすると、Web ブラウザ上から直接 Dropbox 上にテキストファイルを作成したり既存のテキストファイルを編集したりできて便利。 テキストファイルUTF-8LF になるのでいい感じ。

[ 2月7日全て ]

2012年7月19日 (木)

JavaScript ソースコードフォーマッタ JS Beautifier

ちょっと JavaScript コードを書く機会が増えてきそう。 そうなると、Perl コードを書く時には perltidy が手放せないように、JavaScript ソースコードフォーマッタが必要だ。 なのでとりあえず検索してよくひっかかってきた JS Beautifier を使ってみることにした。

JavaScript で書かれたバージョンと Python で書かれたバージョンがあって、後者の方はそのままコマンドラインからの呼び出しできるようになっているので、それを使うようにしてみる。

手元の環境だと Python の dev 系のファイルがインストールされていなくて setup.py が通らないので、Python からマルっと入れた。

 $ tar zxvf Python-2.7.3.tgz
 $ cd Python-2.7.3
 $ ./configure --prefix=$HOME/local/python-2.7.3
 $ make
 $ make altinstall

Pythonインストールしたら JS Beautifier をインストール

 $ git clone https://github.com/einars/js-beautify.git
 $ cd js-beautify/python
 $ $HOME/local/python-2.7.3/bin/python2.7 setup.py install

$HOME/local/python-2.7.3/bin/js-beautify がインストールされる。PATH の通ったところにシンボリックリンクしておく。

あとは Emacs から実行できるように設定。

 (defun js-beautify-region()
   "Run js-beautify on the current region."
   (interactive)
   (save-excursion
     (shell-command-on-region (point) (mark) "js-beautify -i" nil t)))

を設定しておいて、整形したいところをリージョン選択してから M-x js-beautify-region を実行するとその範囲を整形してくれる。

ちょっと使ってみた範囲では、大外ししてインデントメチャクチャとかは無かった。perltidy ほど賢くない感じだけれど、これで一貫したスタイルで書けるようになるのでいい感じかな。

[ 7月19日全て ]

2013年7月2日 (火)

Fedora 17 の home 以下に GHCHaskell Platform をインストール

Fedora 17 の home 以下に GHCHaskell Platform をインストールの、ちょっと手を入れる必要があったのでメモ

libgmp.so.3

GHC で libgmp.so.3 が必要だけれど無いので libgmp.so.10 にシンボリックリンクを作ってごまかす。

 mkdir ~/lcoal/lib
 cd ~/local/lib
 ln -s /usr/lib64/libgmp.so.10 libgmp.so.3
 export LD_LIBRARY_PATH=$HOME/local/lib

GHC 7.6.3

 cd ~/install
 wget http://www.haskell.org/ghc/dist/7.6.3/ghc-7.6.3-x86_64-unknown-linux.tar.bz2
 tar jxvf ghc-7.6.3-x86_64-unknown-linux.tar.bz2
 cd ghc-7.6.3
 ./configure --prefix=$HOME/local/ghc-7.6.3
 make install
 ~/local/ghc-7.6.3/bin/ghci           # インタプリタ起動してみる。
 PATH=$PATH:$HOME/local/ghc-7.6.3/bin

Haskell Platform 2013.2.0.0

 cd ~/install
 wget http://lambda.haskell.org/platform/download/2013.2.0.0/haskell-platform-2013.2.0.0.tar.gz
 tar zxvf haskell-platform-2013.2.0.0.tar.gz
 cd haskell-platform-2013.2.0.0
 ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0

OpenGL 関連のライブラリが入っていないホストで、かつとりあえず必要無さそうので適当に消す(なんで OpenGL いるのー)。

  • configure.ac の Check for OpenGL and GLUT のところを全部コメントアウト。
  • packages/platform.packagesから以下を削除。
    • GLURaw-1.3.0.0
    • OpenGL-2.8.0.0
    • GLUT-2.4.0.0
    • OpenGLRaw-1.3.0.0
  • packages/haskell-platform-2013.2.0.0/haskell-platform.cabal の build-depends からも上記のパッケージ名を削除。

あとこのままだと GHC_PACKAGE_PATH 云々とエラーが出て止まるので script/build.sh をいじる。 以下をコメントアウト。

 GHC_PACKAGE_PATH="${ORIG_GHC_PACKAGE_PATH}" \

あとは configure を作り直してビルド

 ./autoconf
 ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0
 make
 make install
 PATH=$PATH:$HOME/local/haskell-platform-2013.2.0.0/bin
[ 7月2日全て ]

2013年8月1日 (木)

Migemo が無いとイラッとするので。

普段 Migemo 使っているので、それの入っていない開発環境だとちょっと不便だなということで、ソースから入れる。

C/Migemo をインストール

Migemo だと Ruby のパッケージも入れる必要があるので、ここは C/Migemo で。

 git clone https://github.com/koron/cmigemo.git
 cd cmigemo
 ./configure --prefix=$HOME/local/cmigemo
 make gcc
 mak gcc-dict
 make gcc-install

LD_LIBRARY_PATH=/home/naney/local/lib にしているので C/Migemo のライブラリへのシンボリックリンクをそこに作る。

 cd ~/local/lib
 ln -s $HOME/local/cmigemo/lib/libmigemo.so* .

Migemo

migemo.el だけ Migemo の tarball からもらう。Ruby のライブラリ入れてないため configure が通らないので、手で migemo.el.in から migemo.el に変換する(@pkgdatadir@ を置換)。

 wget http://0xcc.net/migemo/migemo-0.40.tar.gz
 tar zxvf migemo-0.40.tar.gz
 cd migemo-0.40
 sed -e 's!@pkgdatadir@!/home/naney/local/migemo/share/migemo!g' migemo.el.in > migemo.el
 cp -a migemo.el <自分の site-lisp なディレクトリ>

Emacs の設定

設定ファイル (~/.emacs.d/init.el とか)に設定を追加。

 (when (load "migemo" t)
   (setq migemo-use-pattern-alist t)
   (setq migemo-use-frequent-pattern-alist t)
   (setq migemo-command "/home/naney/local/cmigemo/bin/cmigemo")
   (setq migemo-options '("-q" "--emacs" "-i" "\a"))
   (setq migemo-dictionary "/home/naney/local/cmigemo/share/migemo/euc-jp/migemo-dict")
   (setq migemo-user-dictionary nil)
   (setq migemo-regex-dictionary nil))
[ 8月1日全て ]

2014年12月20日 (土)

aufs で ro なブランチに書き込まれたかと思った

かなり久しぶりに aufs を使った Web サイトのドラフト作成をしようと思ってマウントしたのだけれど、なぜかスタックされた ro の方のディレクトリのファイルが書き変わってアレレとなった。

しかもディレクトリによっては rw の方にきちんと変更が書き込まれて、ro は変更されないようにきちんとなっている。

なんだろうと思ってしばらく調べた結果、一部のディレクトリはシンボリックリンクaufs でマウントした外のディレクトリを指していてアウトオブ aufs だったというオチ。ああ。

今日のさえずり: やられたー。イチゴが高くなってる。

2014年12月20日

[ 12月20日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

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

follow us in feedly

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

月別インデックス
Process Time: 0.054236s / load averages: 0.25, 0.30, 0.33
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker