PHP で、なぜわざわざ自前で HTML をパースするのか

JAPRO Template Engine の PHP 版では、わざわざ自前で HTML をパースしています。
それにはこんな理由があります。

loadHTML/loadHTMLFile/saveHTML/saveHTMLFile

タグのインデントなど、空白文字が無視されてしまいます。
正確なパースとは言えません。
HTMLを書いた人の意図を無視することは良い事とは思えません。
saveHTML が出力する HTML もゴチャゴチャです。
XHTML は対応出来ないようです。

load/loadXML/save/saveXML

HTMLを読み込ませると、href/src 属性に & がある場合にワーニングとなります。
scriptタグの中も & があるとワーニングとなります。
コメントの終了は –> の前に空白文字がないとワーニングとなります。

とにかくワーニングだらけになります。無理があります。

結局自前で

HTMLの実情に合ったパースを行うには、結局自前でパースする必要があります。
出力の際も自分でツリーをたどって表示する必要があります。

自前でパースする際のヒント

mb_internal_encoding( ‘UTF-8’ )
mb_regex_encoding( ‘UTF-8’ )
mb_regex_set_options( ‘pr’ )

テキスト部分/タグ/残りに分解する正規表現
A(.*?)(<.*?>)(.*)z

JAPRO Template Engine 2.1 リリース

立て続けですが、JAPRO Template Engine 2.1 をリリースしました。

1. レコード中の inner/outer が機能しないバグを修正
2. preコマンド(textareaコマンドの別名)を追加

現在、集中してテストしている所なので、ご勘弁を。

バージョン番号は基本的に以下のルールとしました。

x. 大幅な修正
x.x 機能を追加/重大なバグフィックス
x.x.x バグフィックス

JAPRO Template Engine 2.0.1 リリース

2.0 をリリースしてすぐですが、JAPRO Template Engine 2.0.1 をリリースしました。

1. 属性解析部分のバグフィックス
2. Ruby のサンプルを CGI に変更

以下のページで動作確認出来ます。

JTE サンプル

PHP Perl Ruby JavaScript のリンクをクリックすると、各言語のサンプルを表示します。

ほとんどのレンタルサーバでは eRuby は簡単には動かないようです。
すいません。Ruby は初心者なのです。

JAPRO Template Engine 2.0 リリース

JAPRO Template Engine 2.0 をリリースしました。
SOURCEFORGE.JP で公開しました。

JAPRO Template Engine

今回の目玉は、Perl5/Ruby/JavaScript をサポートしたことです。
PHP/Perl/Ruby で同じテンプレートを利用できますので、コンピューター言語が混在したシステムを構築可能です。
また、JavaScript でテンプレートの簡易テストが出来ます。

自分の欲しかったテンプレートエンジンが手に入って満足です。

・複数のコンピュータ言語で使用可能
・カスタムタグ不要(テンプレートがそのままブラウザで見れる)
・複雑な構文無し

かなり便利になったと思います。

仮想マシンの時刻を合わせるには

今さらですが、仮想マシンの時刻を合わせるには以下のページを参照すると良いです。

VMware KB: Timekeeping best practices for Linux guests

CentOS 5.4 では何も指定しなくて良いみたいですね。
Ubuntu 10.04 が記載されていないのが気になりますが、何も指定しなくて良いみたいです。

Ubuntu 10.04 トラブルシューティング

Ubuntu 10.04 で実際に体験したトラブルシューティングをまとめておきます。

GRUB2

GRUB_DEFAULT=saved が機能しない

/etc/default/grub で GRUB_DEFAULT=saved とすると、直前に選択した OS が起動されるはずですが、10.04 では機能しませんでした。
これを機能させるためには /etc/default/grub に GRUB_SAVEDEFAULT=true を追記します。

10.04のGrub2で/etc/default/grubのGRUB_DEFAULT=savedが機能しない場合の対処

Plymouth

カーソル点滅後、起動画面が一瞬だけ表示される

多くの場合は以下で frame buffer を使用すれば解消されます。

$ echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
$ sudo update-initramfs -u

cryptsetup をインストールする方法もあります。

$ sudo apt-get install cryptsetup

NVIDIA などでうまく表示されない場合は以下を参照。

Ubuntu 10.04 (Lucid) でスプラッシュスクリーンをなんとかする

ソフトウェアソース

SUN の Java をインストールしたい

システム > システム管理 > ソフトウェアソース > 他のソフトウェアソース の partner と書いてある行を有効にする。
パッケージリストに sun-java* が表示されるようになるのでインストールを行う。

PPAの公開鍵が取得できない

/usr/share/pyshared/softwareproperties/ppa.py の keyserver.ubuntu.com を pool.sks-keyservers.net に修正後、ソフトウェアソースの追加を行う。

Mozc(Google日本語入力) をインストールしたい

システム > システム管理 > ソフトウェアソース > 他のソフトウェアソース で 追加 をクリックし、ppa:japanese-testers/ppa を追加する。
その後、ibus-mozc をインストールする。
インストール後、システム > 設定 > IBusの設定 > インプットメソッド で Mozc を追加して一番上に移動する。

Ubuntu Tweak をインストールしたい

システム > システム管理 > ソフトウェアソース > 他のソフトウェアソース で 追加 をクリックし、ppa:tualatrix/ppa を追加する。
その後、ubuntu-tweak をインストールする。

Chrome をインストールしたい

Ubuntu Tweak をインストールして、アプリケーション > システムツール > Ubuntu Tweak で起動する。
ソースセンターで Google Stable Source を有効にする。
アプリケーションセンターで Google-Chrome-Stable をインストールする。

CentOS 5.5 に Sun JDK をインストール

Webサーバとして RHEL または RHEL ベースのシステムが多いので、CentOS 5.5 を動作検証に使っています。
開発環境も CentOS 5.5 に構築して、迅速なメンテナンスを行いたいのですが、Eclipse を使う際に OpenJDK だといまいちです。

そこで Sun JDK をインストールしたのですが、色々試行錯誤が必要でした。

JPackage をリポジトリに追加する方法

あきらの環境(と言ってもインストール直後)では、XML 関連のパッケージで衝突が起こってしまいました。
それに最新の JDK を入れるためにはコンパイルやら必要ですので、時間がかかってしかたありません。
色々やってみましたが、全て忘れることにしました。

参考 URL も書きません。あしからず。

Alternatives に Sun JDK を追加する方法

最初にうまくいったのが以下の URL を参考にした方法です。

未完成:A面:CentOS 5.3 に Java をいれてみました

さらに調べるともっと良い方法がありました。

Alternatives に Sun JDK を追加する方法 + –slaveオプション

参考にしたサイトは以下。

コマンドを便利に切り替える update-alternatives 使いこなし講座 | イージーネット Tech Blog

完璧です。
スレーブで javac, javadoc, javaws なんかを指定してみました。
Eclipse + PDT も問題なく動いて満足です。

理系の人々 2

理系の人々 2 が出版されました。

一応ギャグマンガなんですが、あきらはあんまり笑えません。
なんでこんな当たり前のことが面白いのだろうと思ってしまいます。

嫁さんは「あなたの事みたーい」と言ってクスクス笑いながら読んでいます。

あきらはバリバリの理系ということでしょうか。