週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

悪気があったのではないのですが、私が見たマクロスの感想がこれなのでついコメン トしてしまいました。

勧められてしまったので見ないといけないようです。しかし、ひぐらしのゲームに15 分で飽きた私は、どうやってアニメを20話見ればいいのか。

スポンサーサイト

前の記事のSimpleQueueは、このままでは計算量O(1)でPush, Pop, Topを行うことができません。時間のかかる場所はTopやPopでリストを逆転させているところで、ここにリストの要素数Nに比例した時間がかかります。そのため、Frontリストが空でRearリストにN個要素が入っている状態から何度もTopやPopを行うと、それぞれの動作にO(N)の時間がかかってしまいます。

「操作にO(N)時間かかることは稀で、平均すると計算量O(1)で済む」ということになっています。実際、普通の手続き型プログラミングでは、「ある状態からPopを何度も行う」ことはできません。一度Popを呼ぶとQueueの状態が変わり、それ以降の計算では時間がかからなくなります。

しかしC++型レベルプログラミングのような純粋関数型世界はそれほど甘くはありません。単純な実装では、操作にO(N)かかるような状態を使い回すことができてしまいます。何が言いたいかというとだいたい次のような感じ。

// よくある手続き型プログラム
q = ぎりぎりのQueue;
a = q.top();    // 時間がかかる。もうqはぎりぎりのQueueではない。
q.pop();
b = q.top();    // 時間かからない。

-- よくある純粋関数型プログラム
let q = ぎりぎりのQueue
    a = Queue.top q  -- 時間がかかる。
    q' = Queue.pop q -- 時間がかかる。
    b = Queue.top q' -- 時間がかからない。
    -- まだqはq'とは別の,まだぎりぎりのQueueとしてアクセスできる。

実際にこれをやるとどれだけ遅くなるかを実験してみました。BASESIZE個の要素を積んだQueueに、「1個要素を積んでから先頭の要素を取り出す」をSIZE回くりかえしてみました。かかった時間は以下のとおり。左が普通のスケールで、右はy軸を対数スケールにして小さい方も見えるようにしておきました。

time cost of handling simple queue persistently.time cost of handling simple queue persistently (log scale).
要素の積まれたQueueでは操作に時間がかかり、また何回繰り返しても同じように長い時間がかかっていることがわかります。前者はならし平均なら普通ですが、後者は問題です。

SIZEを50回に固定して、積んだ要素の数と計算時間との関係を示すと次のようになります。

time cost of handling simple queue persistently, ver. 2.
用いたプログラムは続きに載せました。

Debian lennyを入れたKuro-box ProをCUPSサーバにしようとして失敗しました。ターゲットのCanon Pixus ip3500にarmel用ドライバが用意されていなかったとのが原因です。

  • なんか玄箱Proを買ってしまったのでcupsでも入れてみようとする。
    • 「みんなそうだまされるんですよね。メモリが128 MBでスプールとか満足にできるはずがないじゃないですか。」 と助言をもらう。
  • 助言だけではよくわからないので実際にどれだけ駄目なのか見てみようとする。
  • pixus cupsあたりで検索して見つけたDebian EtchでCanon Pixusを使うを参考。
  • とりあえずキャノンのpixus linux driverページにいってIJ Printer Driver Ver.2.80のdeb2つとtar.gzの解説2つ落とした。
  • ちょっとまてdeb packageってバイナリなのでarmelバイナリのはずがない。上の解説のようにソースから構築しないと。
  • ソースの入っているはずのtar.gzに.soがあります。こいつらのソースが提供されていないのでarmel用のバイナリはつくれません。

使用許諾には次の記述が。

加えて、特別な例外として、キヤノンはお客様に対し、お客様が実行ファイルを生成するために本書添付別表3記載のソフトウエアモジュールを本書添付別表1記載のソフトウエアモジュールとリンクしたとしても、そのこと自体より、結果得られた実行ファイルがGNU General Public Licenseによりカバーされなければならないものではないという許可を与えます。

この別表1に.soが入っているので、これらだけはGPLの対象外ということなのでしょうか。

メモ.

  • dpkg -c パッケージで提供されているものを確認。
  • dpkg -x パッケージを展開して観察。

朝おきて見たところ、make-kpkg は失敗していました。

cc -W(snip) -O3 lguest.c -lz -o lguest
lguest.c:34:18: error: zlib.h: そのようなファイルやディレクトリはありません

しょうがないな。どうもよくみるエラーのようですね。

# apt-get install zlib1g-dev
# fakeroot make-kpkg (snip)
# dpkg -i ../linux-image-2.6.28-7_2.6.28.7-10.00.Custom_i386.deb

なんとかなりました。

あとは/boot/grub/menu.lstが正しく更新されていることを確認して再起動。

起動成功。ath9kがロードされ、ネットワークが使えます。万歳。

  • ワイヤレスがつながらない。
  • ifconfigしたらそもそも存在しない。
  • lspciでドライバチェック: 168C:002a atherosか。
  • ath9k supports Eee PC S101.
  • 2.6.27.8以降のカーネルが必要。Debian lennyは2.6.26
  • カーネル再コンパイル。ってどうするの? そもそもカーネルのオプションすらいじったことがない件。
  • Device Drivers > Network device support > Wireless LAN > Atheros 802.11n wireless cards supportをconfigで導入
  • $ fakeroot make-kpkg --initrd kernel-image
    • ながい。さすがにSDHCのせいかな。

面倒になってubuntu on Eee PC s101に逃げる可能性が20 %くらいあります。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。