preg_replaceでutf8文字列からコントロール文字を削除する。

Unicode文字プロパティなるものを使うと、コントロール文字は「\p{Cc}」と表記できる。

最初、

$ret = preg_replace('@\p{Cc}@', '', $utf8string);

とやっていたのだけど、どうもうまく動いていない。

結論、

$ret = preg_replace('@\p{Cc}@u', '', $utf8string);

PHP: Unicode 文字プロパティ - Manual に「PHP 4.4.0 および 5.1.0 以降、UTF-8 モード を設定した場合に」と書いてあったのを見逃してた。。。

Iceweasel で URL を / 終わりで指定すると2回アクセスされる?

アクセスの都度、DBにレコードをInsertする index.php を書いたのだけど、1アクセスにつき2レコードがInsertされるので悩んだ。

調べてみると・・・
Iceweaselhttp://hoge.com/fuga/ にアクセスすると、サーバ側では、get fuga/index.php が 連続で2回呼ばれてた。

該当バージョンは・・・

$ dpkg -l | grep iceweasel
ii  iceweasel                            3.0.6-3                    lightweight web browser based on Mozilla
ii  iceweasel-gnome-support              3.0.6-3                    Support for GNOME in Iceweasel
ii  iceweasel-l10n-ja                    1:3.0.6+debian-1           Japanese language package for Iceweasel

念のため、別ブラウザ(Epiphany/2.22)も調べたが再現せず。従って Iceweasel の問題のようだ。(apache2側の問題ではなさそう)

一次資料見ればいいじゃない。

元の報道番組見たわけではないが、記事書いた人に踊らされている。
何はともあれ。一次資料見ればいいじゃない。と思った。

はてなブックマーク - 民主党「渋滞しそうな高速道路は無料化しない。選挙前は言いにくかった」|デジタルマガジン

民主党マニフェストより引用

30.高速道路を原則無料化して、
  地域経済の活性化を図る
【政策目的】
○流通コストの引き下げを通じて、生活
 コストを引き下げる。
○産地から消費地へ商品を運びやすいよ
 うにして、地域経済を活性化する。
○高速道路の出入り口を増設し、今ある
 社会資本を有効に使って、渋滞などの
 経済的損失を軽減する。
【具体策】
○割引率の順次拡大などの社会実験を実
 施し、その影響を確認しながら、高速
 道路を無料化していく。
【所要額】
1.3 兆円程度

ところで、マニフェストだけど、民主と自民でアプローチの仕方がまったく違うよね。
まだ見たこと無い人は、さっと見てみるといいよ。
提案書として考えると、民主党のがいいのかね? だがプレゼンうけするのは、自民党っぽい気もする。
民主党マニフェスト
自由民主党マニフェスト

EccPC701SD-X 最適化&プチフリ対策

最適化はそこそこやってたんだけど、久々に使ってみると、SSDプチフリが強烈すぎて、もうね。使えないレベル。こんなのだったっけ?調べてみると、701SD-Xは使用時間に比例してどんどんひどくなるらしい。地雷踏んじゃったかな。で、結論としては、使えるレベルに復旧できた。OSレベルの設定見直しは、購入時点でやっていたので、その他の対策を実施した。

FlashFire導入

EWFとかいうのは失敗したときのリスクが大きそうだったので導入せず。代替でFlashFireを見つけた。これお勧め。
FlashFire: SSD Accelerator

デフラグ

SSDではあまりやるべきではない。というような情報もあったけど実施。

メモリ増設は実施せず。

これまでの対策で使えるレベルに復帰したので、標準の512Mのまま使ってます。

firefoxのキャッシュ先をramディスクに変更。

そもそもメモリ512Mしかないので、それをramディスクに割り当てるのはもったいないのですが、キャッシュの更新って頻繁にあるでしょうから、あえて割り当ててみた。たったの32Kですが。。。
ERAM for WindowsNT3.51/4.0/2000/XP Ver 2.20 ドライバを使用
firefoxのキャッシュ先をRAMDiskへ変更

仮想メモリを0にしてたら、アプリがたまに強制終了する。

そんなにたくさんのアプリ立ち上げて無いんだがな。まぁ、512Mしかないから。。。SDカードスロットにあまってた1Gを刺して、これを仮想メモリ用に割り当てて使ってます。

andLinuxインストールした。

普通に使えてます。(そもそも、これをやりたかった)

debian lenny に nilfs2 をインスールする。

lenny(stable)のパッケージを使う。

公式 NILFS Download にOSに応じたインストール方法がまとめられています。要約すると、次の通りカーネルに応じたmoduleと、toolのパッケージをインストールするだけです。

aptitude install nilfs2-modules-2.6.26-2-686
aptitude install nilfs2-tools

簡単ですね。しかしながら、lenny(stable)でインストール可能な nilfs2 は 2.0.6 と古いです。
新しいのを使いたいので、stable以外を探してみます。

なお、stable以外からのパッケージの借り方は debian lenny(stable) で stable 以外のパッケージを使う。 - gounx2の日記 を参照ください。

lenny-backports のパッケージを使う。

nilfs2は kernel 2.6.30 からカーネル本体に含まれています。これを backports からインストールしてみます。

まず、2.6.30があるか確認

$ aptitude search linux-image-2.6.30
p   linux-image-2.6.30-bpo.1-486                     - Linux 2.6.30 image on x86                                 
p   linux-image-2.6.30-bpo.1-686                     - Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4            
p   linux-image-2.6.30-bpo.1-686-bigmem              - Linux 2.6.30 image on PPro/Celeron/PII/PIII/P4            
p   linux-image-2.6.30-bpo.1-amd64                   - Linux 2.6.30 image on AMD64                               

念のため、出所を確認してからインストール&リブート

$ apt-cache policy linux-image-2.6.30-bpo.1-686
linux-image-2.6.30-bpo.1-686:
  インストールされているバージョン: (なし)
  候補: 2.6.30-5~bpo50+1
  バージョンテーブル:
     2.6.30-5~bpo50+1 0
          1 http://www.backports.org lenny-backports/main Packages

$ sudo aptitude install linux-image-2.6.30-bpo.1-686
:
$ sudo reboot
:
$ uname -a
Linux debianlenny 2.6.30-bpo.1-686 #1 SMP Wed Aug 5 18:28:33 UTC 2009 i686 GNU/Linux

nilfs2のパーティションをマウント

$ sudo mount -t nilfs2 /dev/sdb1 /nilfs
mount.nilfs2: WARNING! - The NILFS on-disk format may change at any time.
mount.nilfs2: WARNING! - Do not place critical data on a NILFS filesystem.

警告出すようになったんですね。(stable のパッケージでは警告でませんでした)
自己責任でってことで。

次にツールを入れようとしたんですが、残念ながら

$ aptitude search nilfs2-tool
i   nilfs2-tools     - Continuous Snapshotting Log-structured Filesystem         
$ 
$ apt-cache policy nilfs2-tools
nilfs2-tools:
  インストールされているバージョン: 2.0.6-1
  候補: 2.0.6-1
  バージョンテーブル:
     2.0.14-2 0
        200 http://ftp.jp.debian.org squeeze/main Packages
 *** 2.0.6-1 0
        500 http://ftp.jp.debian.org lenny/main Packages
        100 /var/lib/dpkg/status

lenny-backports には nilfs2-tools が存在しませんでした。仕方がないので、testing の 2.0.14 を使うことにします。
(kernel 2.6.30 上で、2.0.6のツールを使うとエラーになります。ioctlまわりのI/Fが変ったようです)

仕方がないので、squeeze(testing) から nilfs2-tools をインストールする。

goun@debianlenny:~$ sudo aptitude install nilfs2-tools/testing
パッケージリストを読み込んでいます... 完了
:
以下のパッケージが削除されます:
  module-assistant{u} nilfs2-source{u} 
以下のパッケージが更新されます:
  nilfs2-tools 
更新: 1 個、新規インストール: 0 個、削除: 2 個、保留: 6 個。
102kB のアーカイブを取得する必要があります。展開後に 684kB のディスク領域が解放されます。
先に進みますか? [Y/n/?] y

あれっ、2パッケージ削除されるみたい。
まぁ、いっか。。。

一応コマンド動いてるようです。

debian lenny(stable) で stable 以外のパッケージを使う。

基本 lenny(stable) を使っているが一部パッケージを stable 以外から持ってくる方法を書きます。

注意点

  • testing,unstableのパッケージを導入すると、基本となるライブラリ(glibcなど)から変っていることがあるので連鎖的に大量のアップグレードが発生することがあり、環境が壊れてしまう可能性もあるようです。
  • backportsのパッケージ導入は、上記のような危険性はありませんが、Debian公式パッケージではないので、stableと比較すると信頼性に劣るようです。

/etc/apt/sources.listの設定

(使わないものはコメントアウトしておいた方がよい)

# lenny(stable)
deb http://ftp.jp.debian.org/debian/ lenny main non-free
deb-src http://ftp.jp.debian.org/debian/ lenny main non-free

deb http://security.debian.org/ lenny/updates main non-free
deb-src http://security.debian.org/ lenny/updates main non-free

deb http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile/ lenny/volatile main

# lenny-backports
deb http://www.backports.org/debian lenny-backports main contrib non-free
deb-src http://www.backports.org/debian lenny-backports main contrib non-free

# squeeze(testing)
deb http://ftp.jp.debian.org/debian/ testing main non-free
deb-src http://ftp.jp.debian.org/debian/ testing main non-free

# sid(unstable)
deb http://ftp.jp.debian.org/debian/ unstable main non-free
deb-src http://ftp.jp.debian.org/debian/ unstable main non-free

lenny-backports用 公開鍵インストール

updateすると次のように公開鍵が無いと言われます。

$ sudo aptitude update
:
取得:16 http://security.debian.org lenny/updates/main Sources [47.2kB]
発見 http://security.debian.org lenny/updates/non-free Sources
583kB を 3s 秒でダウンロードしました (156kB/s)
パッケージリストを読み込んでいます... 完了
W: GPG error: http://www.backports.org lenny-backports Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY EA8E8B2116BA136C
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません

公開鍵をインストールしてから再度updateします。

$ sudo aptitude install debian-backports-keyring
$ sudo aptitude update

設定ミスしていないか念のため確認

設定を誤るとupgradeでtestingやsid環境へ移行してしまうかもしれません。upgrade を -s オプションを付けて確認します。

$ sudo aptitude -s safe-upgrade

インストールのミス防止の為に。

1.情報を最新にしておく。

aptitude update

2.インストールしたいパッケージの使用可能なバージョン等を確認する。

apt-cache policy パッケージ名

3.明示的にアーカイブ名(stable,lenny-backports,testing,unstableなど)も指定する。
(さらに慎重にするなら -s オプションでテストしておく)

aptitude install パッケージ名/アーカイブ名

例えば、libapache2-svn をインストールしたいとき。まず apt-cache policy で使用可能なバージョンを調べる。

$ apt-cache policy libapache2-svn
libapache2-svn:
  インストールされているバージョン: (なし)
  候補: 1.5.1dfsg1-4
  バージョンテーブル:
     1.6.4dfsg-1 0
         90 http://ftp.jp.debian.org unstable/main Packages
     1.6.3dfsg-1 0
        100 http://ftp.jp.debian.org testing/main Packages
     1.5.1dfsg1-4 0
        500 http://security.debian.org lenny/updates/main Packages
     1.5.1dfsg1-2 0
        500 http://ftp.jp.debian.org lenny/main Packages

以上より、アーカイブ名を指定すれば希望のバージョンをインストールできる。

aptitude install libapache2-svn/unstable  -- 1.6.4dfsg-1 をインストール
aptitude install libapache2-svn/testing   -- 1.6.3dfsg-1 をインストール
aptitude install libapache2-svn/stable    -- 1.5.1dfsg1-4 をインストール

アップグレードのミス防止の為に。

1.情報を最新にしておく。

aptitude update

2.アップグレードされるパッケージを確認

apt-show-versions -u

$ apt-show-versions -u
libmagick++10/lenny upgradeable from 7:6.3.7.9.dfsg2-1~lenny1 to 7:6.3.7.9.dfsg2-1~lenny3
libmagick10/lenny upgradeable from 7:6.3.7.9.dfsg2-1~lenny1 to 7:6.3.7.9.dfsg2-1~lenny3
libruby1.8/lenny upgradeable from 1.8.7.72-3 to 1.8.7.72-3lenny1
libxml2/lenny upgradeable from 2.6.32.dfsg-5 to 2.6.32.dfsg-5+lenny1
libxml2-utils/lenny upgradeable from 2.6.32.dfsg-5 to 2.6.32.dfsg-5+lenny1
python-libxml2/lenny upgradeable from 2.6.32.dfsg-5 to 2.6.32.dfsg-5+lenny1

3.アップグレード

aptitude safe-upgrade
aptitude full-upgrade -- 不要パッケージの削除も行う。