Feb 11, 2008

linux-imageがupgradeされるとき

1月23日付でDebian GNU/Linux etch は2.6.18-5-686から2.6.18-6-6-686にupgradeされた。
kernel-imageという呼び方はなくなり、linux-imageになっている。
Linux debian 2.6.18-6-686 #1 SMP Wed Jan 23 03:23:22 UTC 2008 i686 GNU/Linux
これに伴い、upgradeする際にnvidia-kernel-legacyもupgradeする必要がある。
以下のようにすると、linux-image-2.6.18-6-686も引きずられてupgradeされて、nvidiaデバイスドライバは再ビルドされて、「m-a m-i nvidia-kernel-legacy-source」を実行する必要がないことがわかった。ただし、これはlegacy varsionの場合なので、新しいカードならlegacyがついていないPackageをインストールする。

#apt-get install linux-headers-2.6.18-6-686
#apt-get install nvidia-kernel-legacy-2.6.18-6-686

これで再起動するとkernelもnvidiaデバイスドライバもupgradeされている。
初めてnvidiaデバイスドライバを使うときには、
nvidia-glx-legacy
nivdia-kernel-source
をインストールしておく必要がある。また、glxinfoを取得するためにetchからは「mesa-utils」が必要になっている。

Sep 01, 2007

captchaによるwritebackの画像認証

コメントに画像認証を導入を参考にして、captchaによる画像認証をこのblosxom blogに導入した。

1 3つのpluginをblosxomのpluginディレクトリに入れる。

新しく入れるpluginは、captchaとinterpolate_fancy、error(名前を00errorにしておく)の3つ。
このうち、captchaとerrorはBill Wardさんのサイトから入手できる。
interpolate_fancyは、blosxom :: the zen of blogging :: pluginsから入手できる。このサイトに行った際、字が小さいのでブラウザの「編集」から「このサイトを検索」で、interpolateを検索するとすぐ見つけられると思う。

2 captcha画像を一時的に保存するディレクトリを作る(captcha pluginにある説明参照)。

3 captchaとwritebackを書き換える。

captchaは、画像を保存するディレクトリ(permissionは707か777で、captchaというディレクトリを作成する)とアクセスできるURLを指定して書き換える必要がある。通常変更箇所は2カ所
次にblosxom starter kitの場合には、writback pluginに1行を挿入する。挿入するコードはcaptchaに書いてあるが、場所はJcodeで文字コードをコンバートするブロックのすぐ下(カーリーパーレンの下、print行のすぐ前)。

4 error.htmlというflavourを作る。内容は最低「$error::msg」を書く。

5 blosxom starter kitでは「foot.htm」に「captcha」に出ているformを参考にコピーアンドペーストする。

May 18, 2006

kernelのupgrade時、nvidiaデバイスドライバを再ビルドする

「apt-get upgrade」でkernel-imageの新しいのが「保留」されるときは、

#apt-get -u dist-upgrade

とやれば、grubも書き換えられて新しいkernelで起動させることができるが、ここでnon-freeコンポーネントのnvidiaデバイスドライバを使っていた場合、新たにモジュールをビルドしなければならない。
この際、画面にプロンプトが見えない場合には、モニタのメニューで調整して見えるようにしてから、jfbtermを起動して日本語表示にする。
#jc
そして、
#m-a a-i nvidia-kernel-source
とすると、kernel-headersがない、と言われるので、upgradeされるバージョンのヘッダをインストールする。
#apt-get install kernel-headers-2.6.8-3-686
としてから上のコマンドを実行すると、ビルドされる。
前にnvidiaデバイスドライバをインストールしていれば、
nvidia-glx
はインストールされていて、「/etc/X11/XF86Config-4」の「Generic Video Card」の「section "Device"」の欄はすでに、
Driver "nvidia"
になっているはずであるが心配だったら調べる。
これで再起動すると「nvidia」のロゴが最初に表示されて正常にXが起動される。

Apr 02, 2006

blogの日本語エンコーディング

b2evolutionとMyscrapbookを試した。
両方ともPHPとMySQLを組み合わせたblogである。
両方文字コードはUTF-8。
灰皿町のPHPコードとMySQLのデータはいちおうEUCにしてあるので、PHPコードも保存するデータもEUCにするのがほんとうはピュアだ。
しかし、なんとなくUTF-8でやったほうがよさそうであるので、以下の内容の「.htaccess」ファイルを作り、UTF-8を使うようにした。

php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output pass

この設定は、このファイル「.htaccess」を置いたディレクトリ以下で、「php.ini」より優先される。
唯一問題は、phpmyadminでデータを表示するときにutf-8を選ばなければいけないことだが、どうもEUCより日本語の問題があまり出ないような気がする。
このblosxom blogはUTF-8でスクリプトは書かれていて、データもUTF-8であるが、スクリプトもデータも、perlのCGIのみで完結するエンコーディングなので、ためらいなくこの設定にできる。
こんどb2evolutionでUTF-8を使ってみて、PHPを使うときにもそんなにデータのエンコードの違いを恐れることはないように感じてきた。

Mar 11, 2006

MySQLでのLIKEとREGEXPの挙動

MySQLの保存文字エンコードがEUCで、PHPスクリプトがEUCである。
これで検索スクリプトを作っていて、パターンマッチング演算子「LIKE」を使っていたのだが、どうも変な感じでヒットする。たとえば魚へんの「鱒」で「鱗造」がヒットしてしまうのだ。これが長い文字列なら問題ないので、まあいいかと思っていて、ふと正規表現によるパターンマッチング演算子「REGEXP」を使ったらまったく問題なく検索されることがわかった。
つまり、
$sql .= " WHERE (bbs_msg LIKE '%".cnv_sqlstr($key)."%')";
ではなくて、
$sql .= " WHERE (bbs_msg REGEXP '".cnv_sqlstr($key)."')";
を使えば問題ない。
内部エンコードがutf-8でスクリプトがutf-8なら「LIKE」でも問題がないかもしれないと想像する。ウチのMySQLはEUCでインストールしているので試せない。

Mar 02, 2006

MySQLのデータベースからデータを抽出する

PHPなどとMySQLの連携だと、MySQLの文法の学習も必要になる。
またにわか勉強(^^)。
下の記事で作ったデータベースとテーブルから、投稿記事の多い順に書き手の方々を抽出する。それも100件以上書かれた方(自分含む^^)を。
書き手でグループ化して、その書き手の書いた数を「as」で名前をつけて、それで並べる。
mysql> select count(bbs_auth) as cnt,bbs_auth from gs_book group by bbs_auth having count(bbs_auth)>=100 order by cnt desc;
+------+------------------+
| cnt | bbs_auth |
+------+------------------+
| 1449 | 清水鱗造 |
| 1078 | 冨澤守治 |
| 525 | 桐田真輔 |
| 448 | mitsui K&T |
| 414 | A・T |
| 285 | TISATO |
| 238 | 河合民子 |
| 210 | 木村 |
| 196 | 関ofuji |
| 164 | tomizawa |
| 122 | ぺこ (¨*)(*¨) |
| 121 | (*''*)peco! |
| 106 | (*''*)peco! |
+------+------------------+
13 rows in set (0.10 sec)

Feb 23, 2006

MySQLのデータベースにBBSのログファイルをインポートする

データベースとPerlないしPHPの連携は、進化するwebページに必須のことのようだ。
そこで、試しにBBSのログファイルをデータベースにインポートしてみた。
まずMySQLにBBSというデータベースを作り、そこに、gs_bookというテーブルを作る。
これはPhpmyadminから実行した。

CREATE TABLE gs_book (
id int(11) NOT NULL,
bbs_date text NOT NULL,
bbs_auth text NOT NULL,
bbs_mail text,
bbs_msg text NOT NULL,
bbs_ip text NOT NULL,
PRIMARY KEY (id)
);

この場合、どうしてもPRIMARY KEYを設定する必要があるので、ログの各行に通番をふる。しかも通常の順とは逆に古いものを若い番号にする。
これは、perlでやる。

open(LOG,'logfile');
@all=<LOG>;
$num=1;
while($gyou=(pop @all)){
print $num,'|',$gyou;
$num++;
}

区切り子は、各ログファイルで違うが、<>が多いようだ。ぼくの場合はこの区切り子をviで|に直してしまったが、その必要はないかもしれない。
mysql -uroot -pパスワード --local-infile=1
を実行する。
この「--local-infile=1」は重要である。ぼくもなぜかはわからないが(^^)。これをいれないとエラーになる。
つづいて、

mysql>use BBS;
mysql> load data local infile './logfile' into table gs_book
-> fields terminated by '|'
-> lines terminated by '\n';

を実行する。
なおテキストファイルからのインポートは、Phpmyadminからもできる。
これでPerl DBIを使っていろいろできるし、BBSのログを全部リアルタイムでデータベースに送ることもできる。

Feb 17, 2006

Perl CGIでメールアドレスをエンティティ化する

掲示板などでメールアドレス収集ロボットに捕捉されないようにするには、まず、
HTML::Entities モジュールをCPANからインストールして、
スクリプトに、
use HTML::Entities;
と書いたうえで、メールアドレスの保存に次のサブルーチンを通す。
sub entitiy{
$email=(encode_entities($_[0] ,"\x00-\xff"));
}
試しに右のリンクの「灰皿町ゲストブック」に使ったらうまくいった。
まだ巷の掲示板ではエンティティ化は行われていないようだ。灰皿町では徐々にメールアドレスの表示にエンティティ化された文字列を使うようにしていきたい。

Feb 12, 2006

Mozillaのjava plug-in設定

Mozillaでjavaアプレットやゲームなどを表示させるには、plug-in登録が必要である。
「編集」から「設定」の「ヘルパーアプリケーション」とたどる。
「新しいタイプ」を押して、
「MIMEタイプ」に、「application/x-java-jnlp-file」
「説明」「拡張子」に「jnlp」
「このタイプのファイル処理法」の「アプリケーション」のラジオボタンを押して、
「/usr/lib/j2sdk1.5-sun/jre/javaws/javaws」
を選択する(下図参照)。

b06_02_12a

JAVAで使うfontと環境変数の設定

fontの設定

fontはなぜかkochiだと駄目なようなので、sazanamiをインストールする。
#apt-get install ttf-sazanami-mincho ttf-sazanami-gothic

まず下のディレクトリに行く。もちろん「j2sdk1.5-sun」の部分はインストールしたバージョンによって違う。
shimirin@debian2:/usr/lib/j2sdk1.5-sun/jre/lib$
rootになって、
#cp fontconfig.RedHat.8.0.properties.src fontconfig.properties
とする。
#vi fontconfig.properties
から、中で
:%s/-misc-kochi /-sazanami-/g
とすると、40カ所ぐらい置換されるはずである。kochiの後に空白を1つ入れないと駄目。

環境変数の設定

「/etc/profile」をrootからviで開き、次の2行を追加する。
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export PATH=${JAVA_HOME}/bin:$PATH
ログアウトして、またログインして、
java -versionを実行。
shimirin@debian2:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
と表示されればOKである。

もうひとつ、Mozillaのplug-inに設定しなければならないが、また後ほど。

Feb 11, 2006

J2SE SDKのインストール(Debian GNU/Linux)

まず、java-packageをインストールしておく。
手順としては、
1.java-packageをインストール
2.Sunのサイトから、J2SE SDKのLinux用自己解凍のファイルを入手(自己解凍を実行するわけではない)。
3.Debian GNU/Linux上で、J2SE SDKのパッケージを作成して、インストール(NetBeans同梱でないものを選ぶ)。
4.fontの設定
である。

  1. #apt-get install java-package

  2. 「Java 2 Platform Standard Edition 5.0 のダウンロード」から、 「JDKのダウンロード」を選び、表のなかから「jdk-1_5_0_06-linux-i586.bin」(現在最新のもの)を選んで、保存する。

3.上記の「java-package」をインストールすると、「fakeroot」もインストールされるので、それを使う。保存したディレクトリに行って、
$fakeroot make-jpkg jdk-1_5_0_06-linux-i586.bin
とすると、ライセンス承諾などで「yes」と答えて最終的に、「sun-j2sdk1.5_1.5.0+update06_i386.deb」ができる。
これはユーザプロンプトから「fakeroot」しないと、abortされる。
rootになって、
#dpkg -i sun-j2sdk1.5_1.5.0+update06_i386.deb
と実行すると、インストール終了。このままだと文字化けする。4.はまた後ほど。

Feb 09, 2006

SSIモジュールのLoad

このあいだも書いたが、Apacheのモジュールのロードの仕方が、1.3系の新しいのだと変わっている。

shimirin@debian2:/etc/apache$ cat modules.conf
# Autogenerated file - do not edit!
# This file is maintained by the apache package.
# To update it, run the command:
# /usr/sbin/apache-modconf apache

それで、SSIを有効にするには、
#/usr/sbin/apache-modconf apache enable mod_include
とする。
「mod_include.c」でも「mod_include.so」でもなく、「mod_include」だけでないと駄目なようだ。うまくいくと、
「Replacing config file /etc/apache/modules.con with new version」と表示が出る。

Feb 05, 2006

CD-ROMドライブをejectする

通常、Devbian GNU/Linuxをインストールするときには、rootと一人のuserを設定する(ぼくの場合はshimirin)。CD-ROMドライブで音楽を聴いたり、Linux OS バイナリが入ったDVD-ROMを入れるとき、まずejectして、手でCDないしDVDを入れて閉じる。
cdromグループにすでにuserは入っているはずなので、CD-ROMドライブを開けるときには、
shimirin@debian2:~$ eject
とする。
入れて閉じるときには、
shimirin@debian2:~$ eject -t
とする。まあ一度だけボタンを手で押すのを節約するだけだが(^^)。

Feb 03, 2006

必要なPerlモジュールのインストール

このblosxom blogには、
HTTP::Request::Common
Jcode
LWP::Simple
LWP::UserAgent
という4つのモジュールが必要なので、インストールする。
このうちJcode以外はすでにインストールされていた。
rootになって、
#perl -MCPAN -e shell
cpan>install Jcode
とやる。初めにMCPANにアクセスするときには、前に書いたように、地域などの設定をしなければならないが、一度設定してしまうと、上のコマンドのみでOKである。

Feb 02, 2006

PHP4とMYSQLのインストール

php4とMySQL関係のインストールは、apt-getでやればいいのでとても簡単である。まずApacheをインストールしておく。ぼくのインストールしたプログラムは以下のようである。一つインストールすると依存関係から、複数インストールされたり提案されるものがあるが、それも書いてある。
○php4関係
php4
phpdoc
libapache-mod-php4
php4-common
php4-dev
libssl-dev
php4-gd
libgd2-xpm
libgd-tools
php4-pear
php4-cli
libphp-jpgraph
php4-imagick
○MySQL関係
mysql-common
mysql-client
mysql-server
php4-mysql
phpmyadmin
libdbd-mysql-perl
libdbi-perl
libmysqlclient12
libnet-daemon-perl
libplrpc-perl

July 2017
Sun Mon Tue Wed Thu Fri Sat
           
         

Search

Categories
Archives
Syndicate this site (XML)

Powered by
blosxom 2.0
and
modified by
blosxom starter kit

新規投稿