Author Archives: SUNAGA Takahiro

About the Author: SUNAGA Takahiro
Webmaster of sunagae.net 須永 高浩 / SUNAGA Takahiro スナガラボ株式会社 代表取締役社長
Author Website: http://sunagae.net
Permalink to single post

Gentooのpostgresql

うちではdev-db/postgresqlを~x86に設定しています。
いろいろ使う機能があるからね。

でも、inspircdとか、apacheのmod_auth_pgsqlとかがどうも古いpostgresql(8.0)を参照してしまってインストールに困っていた。
とりあえずPostgreSQLのUSEフラグを無効にしたりしていたけど原因が判明。

virtual/postgresql-baseが古いままだったからっぽい。

多分初歩的な事なんだろうけど、全然気づかなかった。。。

ということで、package.keywordsに

=virtual/postgresql-base-8.2 ~x86

を追加して、インストールしなおしたらすんなり成功。

めでたしめでたし。

Permalink to single post

C++での文字列区切り

CSV文字列を区切る方法 by boost

探していたので一応メモ

改行とかのエスケープ処理もこなしてくれるようで、完璧すぎる。。

string s = "Field 1,\"putting quotes around fields, allows commas\",Field 3";
tokenizer<escaped_list_separator<char> > tok(s);
for(tokenizer<escaped_list_separator<char> >::iterator beg=tok.begin(); beg!=tok.end();++beg)
    cout << *beg << "\n";

詳細は→Escaped List Separator

簡単に文字区切りをしたい場合は

algorithm::split(parts, str, algorithm::is_any_of(",|"));

で可能。

Permalink to single post

constraint

今期の研究会のテーマはconstraintデザインあたりにしてみようかと思う。

必ずしも論理プログラミングにはならないかもしれないけど。。。

  • C++のconstraintライブラリ
  • constraint言語
  • マルチパラダイム
    • constraint言語の上に論理プログラミングのライブラリを実装する
    • Object-oriented
    • すべてconstraintで記述できるか
      • 手続的な記述を、ゴールのみの記述で書き換えられるか
      • 外界との通信(I/O)
      • 仮想環境の構築
  • 自動並列計算
  • with 量子コンピュータ

テーマはいろいろありそうだ。。。

Permalink to single post

Hawking計画

パソコン修理のためのマシンをつくろう計画。

ブートできないPCを、PXEでブートできたら便利かも

・・・と、言う事で、どのくらいusefulになるかわからんけど、
2008年度の共同購入機(Dynabook SS RX1)にGentoo Linux入れて
CNSコンサルタントで使えるように作ってみています。

  • 有線P2PでPXEブートできる
  • 無線で外部と通信
    • IPマスカレードで有線側からインターネットにアクセス
  • KNOPPIX
    • いろいろなバージョン
  • Clonezilla(必要ないか?)
    • バックアップ用
  • メモリチェッカ(memtest86)
  • Windows PE
  • XPパスワードチェッカ(ophcrack)
  • GentooのLiveモード
    • マニュアルと同期しながら作業とかできるかも。。。

と、まぁ作りたい機能だけ列挙したが、何だかんだで作るの大変そうだ。。。

んーと、まぁそもそも使えるものなのかは使ってみないと分からない部分が多いけど
まぁ俺の勉強も兼ねてるということでいいか。

Permalink to single post

質問の”解釈”

学校の課題とか、エントリーシートとか、たーーーまに相談されたりします。

(頻繁ではありません。なのでここにかいた事はあてにならないかも。。。)

そういうものって「○○についてどう思いますか?」とかの質問に対して、
その解答をするっていう事が課題になってることが多いようだけど

毎回思うことがあるので自分のためにもまとめてみようかなんて思ったり。

解釈(定義)をしっかりする

特に小さい設問の場合に怠りがちなのが、問題の解釈。

問題に対して曖昧な、ゆるい解釈をしたまま解答しようとしている。
その結果、回答もあやふやになったり、迷走してしまう。

要するに、『質問読む→解答を書く』というショートカットをしている場合。
これでもかけるような問題であったり、論理的な”ゆれ”が許される性質のものならばいいけれど、
そうでない場合、ショートカットせずにその間に明示的に「解釈」という段階を入れる必要がある。

例えば、

ネットは、「引き篭もり」になり、「想像力」が無くなって、結局は「バカ」になる。だからネットの利用を制限するべきだ。
(テリー伊藤さん)

ネットとは何か?引き篭もりとは何か?想像力とは?バカとは?
これに対する答えを考えるのが”解釈”という事になる。

さて、細かいところにいくと、解釈にも種類がある。
とりあえず「世界の解釈」と「自分の解釈」と二つに分けて呼ぶことにします。

(1)世界の解釈

世間の一般常識とか、質問者とか、質問文に出てきた人の解釈、質問の背景から導き出される解釈を考える。

この解釈に関しては、全体(出題者や、解答者、議論している人全員)で一意的である必要がある。

一般的に、ある言葉があったとき、その意味は辞書に乗っているものが、
この世界でコンセンサスがとれている意味、という事になる。
つまり、辞書に書いてあるとおり解釈するのが普通、ということ。

ただし、すべてが必ずしもその通りとは限らない。
意図的に違う解釈をさせるような場合があったり、その議論(質問)のみでアドホックに定義されている場合、あと質問を出した人が誤った(=一般世界とは違う)解釈をしている場合がある。

このような場合は、辞書ではなくその定義に従うべきだ。たとえ出題者が誤った解釈をしている場合でも、です。なぜなら、初めに書いたとおり、この”世界の解釈”は全員で一意的であるべきだからです。

ここでその世界の解釈に従わずに解答をすると、後々議論がかみ合わなくなったり、結局あげ足をとるだけに終始してしまったり、的外れの解答をすることにつながる。

上の、テリー伊藤さんの例では辞書に載っているとおりにほとんど解釈が出来るでしょう。
ここで「ネット」の意味を”網”ととらえて、「漁師が網を使うことを制限するべきだ」という主張をしている、と解釈をしたとする。そうすると、「漁師が網を使うと引き篭もりになるというのはデタラメだ」と批判出来る。
しかし、この批判がナンセンスなのは明らかでしょう。

(2)自分の解釈

問題によっては、自分なりの解釈を求められる場合があります。感情的な部分とか、クリエイティブな部分によくあるのかな。わからないけど。

解釈をどうするか、は自分次第なのでいいとして、重要なのは次のようなことだと思う。

  1. どこまで自分の解釈をすべきか見極める
  2. 自分の解釈は、世界の解釈の中に収まっている(辻褄があっている)か
  3. 自分の解釈を、明示的に宣言する

(いいものが出てこないので例は省略・・・)

[1.]については分かると思うけど、要するに、相手が定義している言葉を自分が新たに解釈を付け加える必要はなく、かつそうすべきでない、ということ。

自分で解釈する領域であっても、好き勝手にやってよいわけではなく、議論全体での整合性をとる必要はある。それが[2.]。全体で辻褄が合わなければ議論が破綻するのは当然。

また、その解釈は明示的に相手に示す必要がある。そうでないと、自分のアウトプットを正確にとらえてもらえない可能性が出てくる。

解釈(定義)から見えてくる論点

解釈を明確にすることで、ようやく論点が見えてくる。

たとえば、上のテリー伊藤さんの例であれば、「ネット」を「インターネットを使う」ととらえれば、インターネット以外、つまりテレビとか、新聞とか、マンガとかはどうなんだという話ができる。

この例で難しいのは「想像力」という言葉でしょう。テリーさんがこの言葉をどういう意味で使っているか、正確な事は知りません。

一つは、新しいものをイメージする力、ととらえれる事ができるかもしれない。その場合、

自分のウェブページやブログを作ることは、想像力を使う(=新しい物事を生み出す)訓練になる。それをサポートしてくれる”ネット”は想像力をむしろ増強させる事につながるはずた。

という主張ができるでしょう。

もう一つは、過去の情報を思い出す力、という意味で想像力と言うものをとらえることができる。そうすると、できる主張は変わってくる。

“ネット”は想像力をダメにしているわけではない。過去の記録をすべて記録することができるため、想像力が必然的に不要になってしまっているだけだ。必要のないものは淘汰されていくので、想像力が消えていくのは仕方がなく、またそれを防ぐ必要もないと思う。

この様に主張できる。

しつこく書くが、議論をする上ではこの解釈は一意的であるべき、である。つまり、上の二つの意見は一般的に両立しない。つまり、一意になるように可能な限り質問者に解釈を問いただすべき。

ただし、課題の種類によってはこれが許されていたり、わざと多義的な言葉を使っていたりして、”自分の解釈”をさせる課題もあるよ、ということ。

***

・・・と、まぁ真面目に書いてみたけど、自分は正直ここまでやってない気がする。面倒だからねぇ。

まぁそれはそれでいいんだけど、いざというときにちゃんと出きるように訓練しなきゃなぁー

Permalink to single post

slicehostの速度改善

sunagae.netのサーバーがやたら反応遅く感じたて、調べてたら
どうやらメモリが足りなくなっていて、スワップ領域を使いまくってることが判明。

というかなぜ今まで気づかなかったんだ。。。
遠隔onlyだと結構そういうことも気づかないようですね。

現在のメモリ割り当て量は256MB。
増やすという手もあるが、金がかかるのでメモリ使用量削減という方向で探る。

  • apacheのプロセス数の設定を1/3ぐらいに減らす
  • 読み込むモジュールを削りまくる

とりあえずこの二つで使用量を200MB程度に抑えることができました。

レスポンスはかなり早くなった気がします。。

まぁいずれにせよ、いつかはメモリ増やすんだろうなぁ。。。

Permalink to single post

コンデンサの単位がAh(アンペア・アワー)に代替できない理由

  • コンデンサの容量の単位→μF(マイクロファラド)
  • リチウム電池とか→mAh(ミリアンペア・アワー)

マイクロとかミリとかはいいとして、なぜコンデンサはAhで示されないのか

ちょっと考えてみたけど「なんかの次元がたりないのかもね〜」程度の
曖昧な考えしか出来なかったので、真面目に考えてみる

要するに・・・

この問題は、なぜF(静電容量)とAh(放電容量)が換算できないのか
という問題に帰着する。

単位の次元

違いを考えるために、とりあえず愚直に単位の次元を考えてみる。

静電容量について。定義から、
C = AsV=kg \cdot m^2\cdot s^3 \cdot A

ここから導くと

  • F = C \cdot V^{-1} = (A \cdot s) \cdot ( {kg}^{-1} \cdot m^{-2} \cdot s^{-3} \cdot A^{-1} )

次に、放電容量について。次元のみに着目すると、h(時)=s(秒)つまり、

  • Ah=A \cdot s

Fに比べるとAhはやけにシンプル。まぁ単位その物が原始的な次元になってるからね。。。

さて、二つを比較してみると差は明らか。Fの後半のややこしい部分、つまり電圧部分の次元が、Ahには丸ごとなくなっている。

つまり、電圧が与えられていないと、FとAhは変換できない、ということ。

・・・分かったような、分からないような。

真面目に考察してみる

とりあえず、エネルギーを計算して考えてみる。(大括弧内は単位)

まずは、リチウム電池について。
電池の放電容量をD[As]、出力電圧をVbat[V]とする。この二つの値は、電池の種類によって固定される。
放電時間をt[s]とすると、P=IV[W=AV]なので、

  • Pt=DV_{bat}

Pt=E[Ws=J]なので、

  • E=DV_{bat}

となる。変数は無い(すべて電池の定数)ので、最大エネルギーの値は完全に電池依存。

次に、コンデンサが充電されたときのエネルギーを考える。
コンデンサの容量をC[F]とする。これはコンデンサの種類で固定。で、あと充電電圧Vcap[V]が必要。
高校物理のとき(だったっけ?)に習った、静電エネルギーの公式E=1/2CVを使う。
Q=CVなので、

  • E=\frac{1}{2}C{V_{cap}}^2

Cはコンデンサの定数だけど、Vcapは充電時の電圧なので、電池だけでは決定されない、という意味で変数ということになる。

要するに・・・(結論)

  • 電池の放電容量の値→完全に電池依存
  • コンデンサの静電容量の値→コンデンサと充電電圧に依存

要するに、コンデンサは充電時の電圧によってエネルギー容量が変わるから、コンデンサを決めただけでは放電容量は決められない、ということだ。

電池の出力電圧は電極(と電解液?)に依存する、っていうのは化学で習ったとおり。つまり、電池はどうやって充電しても、出力電圧は一定になる。だから充電電圧には依存しない。

このように、化学変化を利用する電池と、物理現象のみを利用するコンデンサ、という根本的な原理の違いから、結局のところ単位の違いが出てくるわけだ。

換算式

無謀にも換算式を考えてみる。

上の式、E=DV_{bat}と、E=\frac{1}{2}C{V_{cap}}^2から

  • \frac{1}{2}C{V_{cap}}^2 = DV_{bat}
  • D[As] = \frac{C{V_{cap}}^2}{2V_{bat}}

As(アンペア秒)をAh(アンペア時)に変換すると

  • D'[Ah] = \frac{C{V_{cap}}^2}{7200 \cdot V_{bat} }

(D’: 放電容量[Ah]、C:静電容量[F]、Vcap:コンデンサの充電電圧[V]、Vbat:電池の公称電圧[V])

ただし、コンデンサと電池では電圧の取り出し方がぜんぜん違う。なので、電圧の変換とかにかかるロスやら電圧降下やらで、一概に比較することはできないようです。
あと電池も理想状態のみで計算しているし。

計算してみる

秋月に売ってた電気二重層スーパーキャパシタ。120F、最大定格で使うと2.5V。
これを公称3Vの電池で換算してみる。

<br /> \begin{align} D & = & \frac{C{V_{cap}}^2}{7200 \cdot {V_{bat}}} \\ & = & \frac{120 \times 2.5 \times 2.5}{7200 \times 3} \\  & = & 0.0347 \end{align}<br />

答え: 34.7mAh。

んー。。。こんなもんなのか。

ていうかここまで書いて何だけど、何気にこの記事の内容は自信ないな・・・。
絶対考え方間違えてる気がする。誰かに見てもらいたい。

Permalink to single post

仕事に関する言葉たち

  • 「楽しい仕事をする」と「仕事を楽しむ」は違う
  • 「楽しい仕事」もいいけど、「楽しい」の漢字は「楽(らく)をする」と同じ
  • やりたいことしかしない人は、求めてられていない
  • 楽しいことも、仕事にすると楽しくなくなる

いよいよ就活な訳ですが

どうなることやら

Permalink to single post

「は」と「が」の使い分け

「は」と「が」の区別は、どうやら難しいらしいです。

  • 私が、このサイトの管理人です。
  • 私は、このサイトの管理人です。

これの区別が難しいらしい。例えば英語にするとどちらも

  • I am the webmaster of this site.

みたくなるらしい。

自分は、曲がり形にも日本語のネイティブなので、特に意識せず日本語を使っているようです。良い事でも悪いことでもありますね。。

世界の言語の中でも、日本語は難しいなんて言う主張を聞きます。
はたしてその主張がどの程度説得力のあるものなのかは分かりません。

ただ、自分が知らない難しさはまだまだあるようです。。。

ちなみに、この使い分けの説明として簡単なのが、

  • 「が」→未知(新しい情報)
  • 「は」→既知(古い情報)

らしいです。いくつか例文を思い浮かべると、なるほどな、と思う。

Permalink to single post

Linux Kernel 2.6でPCカードのCFアダプタを使いたいとき

ノーパソでPCカードのCFアダプタが使えない。

いろいろ探したらCONFIG_BLK_DEV_IDECSていうのが正解らしいが。。。

Support for Compact Flash cards, outboard IDE disks, tape drives,
and CD-ROM drives connected through a PCMCIA card.

Symbol: BLK_DEV_IDECS [=m]
PCMCIA IDE support
Location:
-> Device Drivers
-> ATA/ATAPI/MFM/RLL support (IDE [=y])
-> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (BLK_DEV

なんかうまく動かない。。。

アダプタ突っ込むとLANが切れたり謎の現象がおこる。。。

Permalink to single post

compiz-fusionの最新版(git)をインストールしたメモ

Gentoo Linux (2008.0)にCompiz-fusionの最新版を入れた。そのときのメモ。

以前はxeffectsとか、desktop-effectsとか言うレポジトリがlaymanで使えた。でもなんだか消失したっぽいので、仕方なく本家のリポジトリから入れてみました。

参照したページ→http://wiki.compiz-fusion.org/Installation

始める前に、レポジトリからコピーするのにgitが必要なので入れておく。Gentooの場合はemerge gitでいけたはず。

まずは、compizのいろいろなパッケージたちを自動的にmakeしてインスコしてくれるスクリプトがあるので、それをレポジトリからコピー。

git clone git://git.opencompositing.org/users/kristian/compiz-scripts

で、あとは基本的に、その中にあるget-gitというスクリプトを実行するだけなんだけど。。。
まぁやっぱりいろいろなエラーが出るよね。

インストールする前に、xxパッケージが足りないっていろいろ言われてしまうので、PKG_CONFIG_PATHをちゃんと設定しておく。

/etc/env.dの中に適当なファイル作って書いてもいいし、なぁなんでもいいので、

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

この二つのパスは入っているようにする。

あと、xcbが無いと言われたので、libX11のUSEフラグにxcbを入れて再度コンパイル。
次は・・・

/usr/lib/gcc/i686-pc-linux-gnu/4.3.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lkdecorations

こんなこと言われたので、どうせ使わんし、とりあえず面倒だからKDEのサポートをまるごと切ってしまった。
get-gitを編集して、先頭の方にあるCOMPIZARGSに、「–disable-kde –disable-kconfig」を追加してもう一度。

そして無事コンパイル成功。

あとは、fusion-iconもあると便利なのでインストールする。

git-clone git://anongit.compiz-fusion.org/users/crdlb/fusion-icon
cd fusion-icon
make; sudo make install

こちらはすんなり成功。

ということで、まずはfusion-iconを実行してみる。
「ImportError: No module named compizconfig」と出た。
忘れてた。pythonのパスも/usr/localに通しておく。
PYTHONPATH=/usr/local/lib/python2.5/site-packages/

あーやっと動いたーーーー

めでたし。

Permalink to single post

ghc @ gentoo

dev-lang/ghc-6.8.2をemergeしようとするとどうもエラーが出る。

include HCIncludes.h -dcmm-lint     -c Apply.cmm -o Apply.o
../compiler/ghc-inplace -H16m -O -optc-march=pentium4 -opta-march=pentium4 -opta-Wa,–noexecstack -w -optc-O2 -package-name rts -static -I../gmp/gmpbuild -I. -#include HCIncludes.h -dcmm-lint     -c Exception.cmm -o Exception.o
../compiler/ghc-inplace -H16m -O -optc-march=pentium4 -opta-march=pentium4 -opta-Wa,–noexecstack -w -optc-O2 -package-name rts -static -I../gmp/gmpbuild -I. -#include HCIncludes.h -dcmm-lint     -c HeapStackCheck.cmm -o HeapStackCheck.o
<built-in>:0:1: lexical error
make[1]: *** [HeapStackCheck.o] エラー 1
make[1]: *** 未完了のジョブを待っています….
<built-in>:0:1: lexical error
make[1]: *** [Apply.o] エラー 1
<built-in>:0:1: lexical error
make[1]: *** [Exception.o] エラー 1
make: *** [stage1] エラー 1
*
* ERROR: dev-lang/ghc-6.8.2 failed.

こんな感じ。

調べてみると、どうもロケールまわりの環境変数が悪さをしているらしい。
ということで

export LANG=C
export LC_ALL=C
emerge -av ghc

とやってみたら成功。

Permalink to single post

gnome 2.22.2

久々にemerge world中

前にgnomeが2.20→2.22になって、依存関係とかやたら複雑だったので
後回しにしてました。

依存関係でいくつか古いモノを削除しながらやった

あとfirefoxがどうも2系にダウングレードされるから調べたらyelpが原因だったらしい。
ebuildを見たらxulrunnerをUSEフラグに入れれば大丈夫らしい。

何とか終わるといいな。。。

ていうか更新146pkgとか大杉

« 以前のエントリ 最近のエントリ »