HTML_CSS_Mobileのバグフィックスを投稿しましたよ

CSSをインライン展開してくれるライブラリのHTML_CSS_MobileバグフィックスCodeReposに投稿しました。
直したバグは二つありそれぞれ別ブランチを切ってコミットしてあります。そのうちopenpear版にも取り入れられるかと思いますが、必要な方はCodeReposから取得してください。

utterramblingsのphp-pgsql+php-pdoでPostgreSQL8.4にアクセスするとSegmentaion Fault

表題のような現象が起こった。仕方がないのでphp-5.2.11のソースを持ってきてpdo_pgsqlディレクトリでphpize;./configure;makeして出来上がったpdo_pgsql.soを/usr/lib/php/modules/pdo_pgsql-8.4.so*1にコピーして、/etc/php.d/pdo_pgsql.iniの参照先を変更してみたところ回避に成功失敗しました。
今回は適当に処理しましたけど、他でも必要になりそうなのであとで真面目にrpm作らないと。

間にPHPpostgresqlとバージョンあってるpgpool-IIがいると平気だった。そんな荒業もありか?

どうやら自作したpdo_pgsql-8.4.soはメモリリークを起こしてた模様です。間にpgpool-IIを入れて回避するのが良いようです。

*1:pdo_pgsql.soを上書きするのは気が引けたので

RHEL5でyum-prioritiesを使う

RHEL5yum-prioritiesを使おうとした場合にはすんなりいきません。今回はたぶんうまく動かすことができたので報告します。ただし、きっちりとテストしたわけではないので実際に利用する際は自己責任でお願いします。

yum-prioritiesのインストール

まず、RHEL5の標準yumレポジトリにはyum-prioritiesは入っていません。どこかから持ってくる必要があります。
幸いにもCentOS5.3の標準レポジトリには入っている*1のでこいつを使うことにします。

[root@db01 ~]# rpm -ihv http://mirror.centos.org/centos-5/5.3/os/i386/CentOS/yum-priorities-1.1.16-13.el5.centos.noarch.rpm

priority設定

次に/etc/yum.repos.d/にある*.repoファイルに書かれたレポジトリ設定にそれぞれpriorityを書こうとするわけですが、ここで問題があります。実はRHELの標準レポジトリはyum-rhnpluginというプラグインを使ってRHNをラップした仮想yumレポジトリのようなものなのでここに設定ファイルがありません
調べてみると/etc/yum/pluginconf.d/rhnplugin.confにそれらしき記述がありましたのでここにpriorityを追加してみます。

[main]
enabled = 1
gpgcheck = 1

[rhel-i386-server-5]
enabled = 1
priority = 1

動いているか確かめる

とりあえず、今回は被っているパッケージがあるyumレポジトリとしてPostgreSQL RPMsからpgdg-redhat-8.4-1.noarchをインストールしてpriority = 20を設定しました。
この状態でyum info postgresqlを実行してみます。*2

[admin@db01 ~]$ sudo yum info postgresql
Password: 
Loaded plugins: priorities, rhnplugin, security
65 packages excluded due to repository priority protections
Available Packages
Name       : postgresql
Arch       : i386
Version    : 8.1.18
Release    : 2.el5_4.1
Size       : 2.8 M
Repo       : rhel-i386-server-5
Summary    : PostgreSQL client programs and libraries.
License    : BSD
Description: PostgreSQL is an advanced Object-Relational database management system
           : (DBMS) that supports almost all SQL constructs (including
           : transactions, subselects and user-defined types and functions). The
           : postgresql package includes the client programs and libraries that
           : you'll need to access a PostgreSQL DBMS server.  These PostgreSQL
           : client programs are programs that directly manipulate the internal
           : structure of PostgreSQL databases on a PostgreSQL server. These client
           : programs can be located on the same machine with the PostgreSQL
           : server, or may be on a remote machine which accesses a PostgreSQL
           : server over a network connection. This package contains the docs
           : in HTML for the whole package, as well as command-line utilities for
           : managing PostgreSQL databases on a PostgreSQL server.
           : 
           : If you want to manipulate a PostgreSQL database on a remote PostgreSQL
           : server, you need this package. You also need to install this package
           : if you're installing the postgresql-server package.

つぎにpgdgのpriorityを1にしてみると下記のように表示されpriority設定が有効に働いていることが分かります。

[admin@db01 ~]$ sudo yum info postgresql
Loaded plugins: priorities, rhnplugin, security
pgdg84                                                                                   | 1.9 kB     00:00     
44 packages excluded due to repository priority protections
Available Packages
Name       : postgresql
Arch       : i386
Version    : 8.4.1
Release    : 1PGDG.rhel5
Size       : 1.3 M
Repo       : pgdg84
Summary    : PostgreSQL client programs and libraries
URL        : http://www.postgresql.org/
License    : BSD
Description: PostgreSQL is an advanced Object-Relational database management system
           : (DBMS) that supports almost all SQL constructs (including
           : transactions, subselects and user-defined types and functions). The
           : postgresql package includes the client programs and libraries that
           : you'll need to access a PostgreSQL DBMS server.  These PostgreSQL
           : client programs are programs that directly manipulate the internal
           : structure of PostgreSQL databases on a PostgreSQL server. These client
           : programs can be located on the same machine with the PostgreSQL
           : server, or may be on a remote machine which accesses a PostgreSQL
           : server over a network connection. This package contains the command-line
           : utilities for managing PostgreSQL databases on a PostgreSQL server.
           : 
           : If you want to manipulate a PostgreSQL database on a local or remote PostgreSQL
           : server, you need this package. You also need to install this package
           : if you're installing the postgresql-server package.

今回は限定的なレポジトリなので実はpriority設定などしなくても問題ないかもしれませんが、DAGレポジトリなど汎用レポジトリを利用したいときは有用になると思います。

*1:理由は分かりませんがCentOS5.4には含まれていないようです

*2:rhnpluginはrootでしか働かないのでsudo必須

続・ドコモでJavaScriptが解禁されたので試してみた。

masa様より

document.write()の無限ループ

とのコメントをいただきましたので実験してみました。

<html>
<head>
</head>
<body>
<script>
while(1) document.write('a');
</script>
</body>
</html>

開いてみるとずっと読み込み中表示になります。多少重いくらいです。中止ボタンは効きませんが、メニューは開けてまたブラウザを閉じることもできます。
ただ、while(1);やwhile(1)alert(1);と違って読み込み状態がずううううっと続きます。今回は1時間半変化がなかったのであきらめて閉じました。どこまで続くのかわかりません。

メモリを使い切ったら止まるか落ちるかするだろうと思い一度に書くaの数を1024個にして再挑戦してみましたが、5分ほどたっても変化ないのであきらめました。

ドコモでJavaScriptが解禁されたので試してみた。

まずは

while(1);

眺めの読み込み中の後しばらくすると戻ってくる。

jQueryが動くかなーとjQueryのテストを動かそうとしたけど無反応でした。ただ、jQueryUIを使ったサイトを表示したら一部は動いていたので動くこともあるらしい。

次はwasserで急募したらid:hasegawayosukeさんから


while(1)alert(1); by hsegawa
とレスがあったので、alertは無効になっていたような・・・と思いつつ実行。
結果は少し重くなったけどなにも表示されず。復帰。

やっぱりalertがいないっぽいので検証のために

<html>
<head>
</head>
<body>
<script>
document.write(typeof alert);
document.write(typeof confirm);
document.write(typeof prompt);
</script>
</body>
</html>

を実行すると

functionfunctionfunction

と表示されました。
こいつらはなにもしない関数として定義されているらしい。

このことに対してこのような意見も


前は確かに動いてましたが…こんなメジャーな関数殺したら、本当にガラパゴスJSと呼ばれるよ泣き顔…ひょっとして、雇ったコンサルタントがへっぽこだった? by ockeghem@ニートセキュア株式会社

単純ベイズ分類器がほしい

PHPで使える単純ベイズ分類器(Navie Bayesian Classifier)がほしいと思ったので具体的な仕様をメモしておきます。将来的に造ろうと考えている人(含む自分自身)は是非ともこのメモを読んで希望をかなえてください!

  1. PEARopenpear*1などpearチャネルからの配布
  2. Token切り出しは外付けできるように。日本人だものMeCabとか使いたいじゃない。
  3. DBへ学習データを保管するならDBのコネクションはPDO
  4. コンストラクタでPDOインスタンスを指定できる
  5. テーブル名は変更可

自分で作るとしても確立統計あんまり得意じゃないんだよなー。

*1:そのころにはOpenpearかも知れません。リニューアルまだですか?

とあるコミュニティサイト運営者として

実は、僕はプライベートでとあるネット上での雑談を目的としたコミュニティサイトを運営している。利用規約ではもちろん出会い行為を禁止しているけど、これを行うものが後を絶たない。
チャットの書き込みは削除とか無意味だし、掲示板にしたって削除しても削除しても書き込まれては困るので、アクセス規制をすることになる。ただ、アクセス規制をするとしても全員が固定IPってわけではないので発信元IPだけをブロックしても仕方がなかったりする。のでプロバイダあるいはアクセスポイント単位で規制する必要が出てくる。しかし、この粒度で規制をすると当然、無関係なユーザのアクセスも制限されてしまう。そして苦情が出る。利用者が減る。プロバイダに報告してもまともに対応してくれるところは経験上ほとんどない。大手の○CNなどはガン無視してくる。

なぜか。

インターネット上での出会いによる未成年者へ被害を防ぐ法律として「インターネット異性紹介事業を利用して児童を誘引する行為の規制等に関する法律」というのがあるわけだけど、的外れな法律で出会い系以外で出会いを求めても規制対象にならないいように読み取れる。
ということは出会い系でないとうたっているサイトへの出会い系書き込みに対して法的に対応する必要がプロバイダにはない。
しかし、サイト運営者には重くのしかかってくる。なぜなら警視庁が出会い系の書き込みに対応しないと出会い系とみなすと主張している*1から。

どうかしている。どうかしまくっている。

本当に未成年者を守りたいなら、どんな媒体であろうと性的行為を目的とした出会いを誘引する目的の内容を発信してはならないようにすればいいはず。「どんな媒体であろうとも」というのは、非出会い系サイトを含むという意味だけでなくもっと大きく、それこそ便所の落書きでも規制対象とすべきだという意味。"未成年者との性的行為を目的とした出会い"が悪だというなら、あくまでも規制されるべきあるいは罰せられるべきはは発信するそして性的な関係を持とうとするその人なんだから。媒体なんて関係ないはずなんだから。

その上で媒体となるものまたはその手段の管理者に対して管理責任を問えばいい。

そうすれば、出会い系であろうとそうでなかろうと、そう言った書き込みを中継したプロバイダに責任が生じるのに。そして、不逞の輩を懲らしめることができるのに。

目的と手段をハッキリさせてほしいもんだよ。手段のためなら目的を選ばないようなどうしょうもない連中ではないんだろ?