とあるエンジニアの闇歴史帳
「Perl大技林」一覧に戻る 配列を初期化するにはいくつかの方法がある。 ここでは代表的な方法を示す。
「Perl大技林」一覧に戻る 例えばApacheのアクセスログやエラーログなどは、アクセスがある限り半永久的にデータがファイルに追記(記録)されていく。このような成長し続けるファイルを常に読み込み、表示し続けるにはどうすれば良いだろうか? 原理は簡単だ…
データベースへ投げられたSQLを実行される度に記録したいが、どうすれば良いだろう? PostgreSQLでは設定ファイル「postgresql.conf」内にある「log_statement」の設定を変更すれば良い。 PostgreSQLでは8.0からログの記録に関する機能が強化されている。log…
「Vim入門」一覧に戻る vimでは行番号の表示と非表示を切り替えることが出来る。いずれもエスケープキーを押し、コマンドモードで実行すること。 コマンド 説明 :set number 表示する :set nonumber 非表示 「Vim入門」一覧に戻る 実践Vim 思考のスピードで…
「Vim入門」一覧に戻る ファイル編集中にvimで画面を分割するには、コマンドモードで次のコマンドを入力すれば良い。
「Perl大技林」一覧に戻る 実行しているCGIに致命的なエラーが発生した際に通常は「500 Internal Server Error」となり異常終了するところを、エラーメッセージなどを表示したい。CGI::Carpモジュールを利用すれば良い。 使い方は非常にシンプルで、CGI::Car…
「Perl大技林」一覧に戻る 例えば文字列中にHTMLが含まれる場合、それをHTMLではなくタダの文字として表示したい場合がある。このような時にはHTMLの仕様で定められている文字実体参照などへ変換してやれば良い。 原理は非常にシンプルだ。単純に以下の文字…
「Perl大技林」一覧に戻る MD5などよりも安全性の高いと言われるSHA1の値を取得したい。Digest::SHA1モジュールを用いればあっという間に実現できる。 Digest::SHA1モジュールには三種類の関数(メソッド)が用意されており、用途によって使い分けることができ…
「Perl大技林」一覧に戻る タグクラウド(TagCloud)を生成したいが、かんたんに行えるモジュールはないだろうか?そんな時はHTML::TagCloudモジュールを利用すれば良い。 タグクラウドとは特定のキーワードに重み付けをし、重要な物は大きく表示しそうでない…
MySQL4.0(Linux)でデータベースやログの保存場所を変更したい。 ただし設定ファイルを直接いじるのは怖いのでしたくない。そこでシンボリックリンクを用いた手順を示す。ここではVineLinux3.2上にapt-getでインストールした物を変更するケースとなる。ほかの…
Linuxの設定ファイルの修正をミスって再起動(リブート)をすると立ち上がらなくなる場合がある。 このような場合、どうすれば良いだろうか?解決策の一例を示す。
MySQL4.0(Linux)でデータベースやログの保存場所を変更したい。その手順を示す。 今回はVineLinux3.2上にapt-getでインストールした物を変更するケースとなる。ほかのディストリビーションやソースからコンパイルした場合、バイナリ版では異なる可能性がある…
「Perl大技林」一覧に戻る CPANからLinuxなどのUNIXクローンOSに、最新版のモジュールをインストールしたい。Perlに搭載されている機能を用いれば、非常にかんたんに実行できる。
「Perl大技林」一覧に戻る 真っ白なキャンバスに点や線を描く、または文字を書く場合、まずは元となる画像が必要になる。あらかじめ画像を用意しても良いが、ImageMagickでは動的にキャンバスを生成することができる。 インスタンス生成後、Set, Readで各種…
「Perl大技林」一覧に戻る 「文字」を文字コードへ変換するにはord関数を用いれば良いが、「文字列」の場合はどうすれば良いのだろうか?ord関数の使い方を工夫してやれば良い。 単純に1byteずつ置換してやれば良い。この置換時にord関数を用いることになる。
「Perl大技林」一覧に戻る 通常、ハッシュに入れた値をkeysなどを使って取り出すと、配列のように追加した順番通りに並ぶことはまずないといってもよいし、期待してはならない。この問題を解決するには、つまりハッシュに順番を保持させる簡単な方法は「Tie:…
「Perl大技林」一覧に戻る ハッシュに大量のデータを挿入する際、プログラムの動作を出来る限り早く(高速に)、処理を軽くしたい。実は一行付け足すだけで、かなり違ってくる技がある。 keysは本来ハッシュのキーを取り出す際に利用するのだが、これから登録…
「Perl大技林」一覧に戻る 配列内の同じ値を取り除きたい。ハッシュを利用すればかんたんに実現できる。
「Perl大技林」一覧に戻る ハッシュの内容を全て出力するには、いくつかの方法がある。 代表的な3つの方法 まずはもっともシンプルな方法。だが、もっとも使用しないだろう方法。ハッシュのキーと値がずらずら~とただ表示される print %ENV; 次に代表的な3…
「Perl大技林」一覧に戻る ハッシュに指定したキーが存在するかどうか調べたい。exists関数を用いれば良い。 exists関数は、指定したキーが存在すれば真(true)を、存在しなければ偽(false)を返す。
「Perl大技林」一覧に戻る ハッシュのキーで並べ替えて表示するには、sort関数でkeysの値を並べ替えればよい。 以下はハッシュのキーを文字列としてソートする方法になる。
「Perl大技林」一覧に戻る ハッシュのキーを並べ替えた後、反転させるにはこれも文字通りreverse関数を使用すればよい。
「Perl大技林」一覧に戻る ハッシュのキーでソートするのはさほど難しくないが、値で並べ替えるにはどうすればよいだろう?同様にsort関数を用いれば良い。
「Perl大技林」一覧に戻る ハッシュ(連想配列)に値を追加したい。これはシンプルに代入してやれば良い。 初期化する際には一気にまとめて代入することができる。その後は通常は一つずつ名前(キー)と値を追加していく
「Perl大技林」一覧に戻る ハッシュから要素を削除するには、delete関数を使用する。 delete関数に引数として「$hashu{キー名}」として渡せば、キー名の要素をその場で削除してくれる。
「Perl大技林」一覧に戻る 文字列を分解し、1文字ずつ処理を行いたい。全角文字、2バイト文字が含まれるなら、Jcode.pmを用いるのがお手軽だ。「指定バイト数で自動的に改行する」で取り上げた、Jcode.pmの「jfold」メソッドを活用すれば良い。 jfoldは指定…
「Perl大技林」一覧に戻る 文字列内のアルファベット(英字)を、大文字または小文字に変換したい。 全角文字、半角文字が一緒になっている場合はJcode.pmを利用すれば良い。 trメソッドを用いて、単純に置換してやれば良い。置換条件に半角文字の指定を加えれ…
「Perl大技林」一覧に戻る 文字列内のアルファベット(英字)を、大文字または小文字に変換したい。 標準の「uc」「lc」関数を使用すれば良い。 それぞれ次のような意味を持っている。 uc 大文字へ(upper char) lc 小文字へ(lower char)
「Perl大技林」一覧に戻る アラビア数字(1~9)を、ローマ数字(I~X)へ変換したい。またはその逆を行いたい。Romanモジュールを使用すれば良い。 Romanモジュールは標準ではインストールされない。CPANなどから入手しインストールする必要がある。Romanモジュ…
解説 参考文献 解説 Subversionでファイルに実行可能な属性を付加したい。 複数のOS間で運用しているといつの間にか設定したパーミションが外れてしまう問題を解決したい。これはSubversionで属性の設定を行えばよい。