Category Archives: 技術

Permalink to single post

[Arch Linux] Xでキーボードやマウスでの入力ができない

Arch Linuxにxorgとgnomeをインストールして、startxをしてみたところ、マウスやキーボードの入力を一切受け付けない、という現象に一瞬悩まされた。

xorg.confを古い環境からコピーしてきていたので、入力デバイスの設定がかかれていた。
evdevに認識させるためには、どうやらその設定が邪魔になるっぽいのでとりあえず削除。

しかし動かない。

いろいろ調べた挙句、HAL(Hardware Abstraction Layer)をインストールしたら解決。

・・・それにしても自分無知すぎる。

参考情報: Arch Linux Wiki: HAL

Permalink to single post

Arch Linuxへ移住

いままで使っていたGentoo Linuxから
Arch Linuxへ移住。

なぜなら・・・

  • コンパイルそろそろもういいかな。。。
  • パッケージが比較的に、他のディストリよりも新しい
    • Gentooよりもね
  • 未知のディストリだから・・・(謎

そういうことで。

sunaga-labのサーバーはしばらくGentooのままでいきます。
Arch Linuxのほうがよければ、Arch Linuxにしますが
そうでないようなら、CentOSあたりに戻そうかとも考えちゅう。。。

ただ何だかんだで、パッケージの新しさ・量を考えるとGentooあたりがいいんだよなぁ。。。

悩ましい。

Permalink to single post

GentooでNetBeans 6を使う

本家のportageは、現段階ではdev-util/netbeans-5.5.1-r1までしかないようです。

なんとなくNetBeans6が使いたかったので、java-overlayを使いました。
・・・いやぁ、既にバージョンは6.5なのに5.5使うのもさすがに気が引けてねぇ。。。

ということでやり方だけ簡単に。

参考→java-overlay Wiki(英語)

(1)laymanインストール

laymanをインストールしてない場合はインストールする。

emerge layman

/etc/make.confに一行追加。

# source /usr/portage/local/layman/make.conf

これでok。

(2)java-overlayの追加

# layman -a java-overlay

(3)インスt・・・の前にkeyword

安定版使いの人は、ACCEPT_KEYWORDSを設定するか、/etc/portage/package.keywordsに以下の一行を追加

dev-util/netbeans ~*

(4)インストール

# emerge netbeans

しかーーーーし、なんかant-nodepがどうちゃらこうちゃらってエラーが出た。
よくわかんないけどインストール

# emerge ant-nodeps
# emerge netbeans

無事成功。ふぅ。

Permalink to single post

亜鉛ウィスカ

亜鉛でメッキされたものから、なんかの圧力だか応力だかで、
亜鉛のヒゲ状のものが生えるっていう現象があるらしい。

ここまでなら「へぇ〜おもしろいね〜」ですむんだけど

そのヒゲが飛んで、電子機器にはいり込んで、回路を短絡させて、その機器を故障させる
なんていう困ったことが起こるらしい。
知らなかった。

ということでメモでした。

Permalink to single post

BUFFALO LSW3-GT-5NSのベンチマーク

うちのデスクトップマシンは、すべて1000BASE-T対応。
うちのハブ付きブロードバンドルーターは、100BASEまでの対応。

・・・非常にもったいない。

ということでギガビットのスイッチングハブかっちゃいました。
BUFFALOのLSW3-GT-5NS。

とりあえずベンチマーク。

環境

[サーバー]—[HUB]—[クライアント]

  • サーバー
    • Gigabyte GA-8IG1000 Pro-G
    • Gentoo Linux
  • クライアント
    • Gigabyte GA-G33M-DS2R
    • Gentoo Linux
  • HUB
    • (1)WHR-AMG54(無線付き、100BASE-TX)
    • (2)LSW3-GT-5NS(1000BASE-T)

計ってみると・・・

今までのルーター→88.8Mbps (11.1MB/s)

新しいギガビハブ→646.4Mbps (80.8MB/s)

予想以上に速かった。
というか、「ギガビなんて実際のスループット大したことねぇだろ」なんて勝手に思ってたから、その考えを覆された感じ。僕の脳みそが古いんでしょうかね。
普通に考えれば当たり前の結果ですが。。。

むしろこれは遅い方なのかなぁ。。。

まぁとにかく、これでルーターとカスケード(っていまも言うの?)させて使うことにします。

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

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

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とか大杉

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