PHPで画像を扱えるようにする(インストール手順など)

PHP経由でGD使いたいなと思ったので。何も考えずにPHPインストールしてると、imagecreateとかのfunctionがないよと怒られるので、その辺のインストール周りから。必要なライブラリとかはマニュアルみたら載ってるので、困らないと思うけれど、自分メモもかねて貼っておく。

$ cd ~/download
$ wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
$ cp ./jpegsrc.v6b.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./jpegsrc.v6b.tar.gz
$ cd ./jpeg-6b
$ ./configure --enable-shared
$ make
$ sudo make install
$ cd ~/download
$ wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.16.tar.gz
$ cp ./libpng-1.2.16.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./libpng-1.2.16.tar.gz
$ cd ./libpng-1.2.16
$ ./configure --enable-shared
$ make
$ sudo make install
$ cd ~/download
$ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.2.tar.gz
$ cp ./freetype-2.3.2.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./freetype-2.3.2.tar.gz
$ cd ./freetype-2.3.2
$ ./configure --enable-shared
$ make
$ sudo make install

フォントは使うかわからないけれど、ついでなので入れた。
ライブラリのインストールが出来たところでPHPの再インストールなんだけれど、今回付けたconfigureオプションのせいか「/usr/bin/ld: cannot find -lltdl」とか怒られたので、先にlibltdlインストール。libmcryptなので、画像とは関係ないかもだけど。

  • libltdl
$ cd /usr/local/src/libmcrypt-2.5.7/libltdl/
$ ./configure --enable-ltdl-install
$ make
$ sudo make install

ということで、PHP再インストール。configureオプションが良い感じに増えてきた。

$ cd /usr/local/src/php-5.2.1
$ ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mcrypt \
--enable-roxen-zts \
--enable-zend-multibyte \
--enable-track-vars \
--enable-mbstring \
--enable-mbregex \
--with-zlib \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-freetype-dir=/usr/local \
--enable-gd-native-ttf
$ make
$ sudo make install

これまた画像とは関係ないけれど、ZendOptimizerがバージョンアップしてたので、ついでにインストール。

  • ZendOptimizer
$ cp ~/download/ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
$ cd ./ZendOptimizer-3.2.6-linux-glibc21-i386
$ sudo ./install-tty
yes
/usr/local/Zend
/usr/local/php/lib/
yes
/usr/local/apache2/bin/apachectl
no

これでマニュアルのimagecreate関数のページに書いてある以下のコードとかが動くようになる。

<?php
header("Content-type: image/png");
$im = @imagecreate(110, 20)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
?>

上のコードをそのままペタっと貼ると(←実際にimgタグのsrcは自宅サーバーに置いた上のコードにしてある)となる。
ということで、Gmail Signature Generatorみたいなのはすぐに作れる環境がめでたく出来ました。

近所に新しくできたスーパーにヒューガルデン

近所に新しくできたスーパーに新しいお酒はないかと物色しに行ったら、ヒューガルデン・ホワイトとかよなよなエールとかある。大変素晴らしい。
最寄駅のすぐ側なので、帰り道に毎日寄ってしまいそうだ。ひょっとして、こういうのが普通にスーパーマーケットに並ぶのも東京だからだろうか。大阪に居たときに意識してみてなかったから、覚えていない。

アイコンだらけのサイト

睡眠http://my.smileycentral.jp/雪合戦

リリースされたばかりのサイトで、中の人として作ったんで、宣伝。Askのツールバー入れてるひとなら無料でアイコン使えるので、どうぞご利用ください。

[追記]
そういえばスクリーンショット記法とかあったなと思ったので追記。
screenshot

本記事中のスマイリーの画像は、Smiley Central を運営するアスク ドット ジェーピーから使用許諾を受けて掲載しています。

Shibuya.js Technical Talk #3 行って来た

Shibuya.js Technical Talk #3 – Shibuya.es

今回はこんなのあるよって紹介系が多かった印象。即座に持って帰って使える実践的なアプローチがなかったのはちょっと残念だったなぁ。
面白いなと思えたのは、omoさんのFlashJITかけたらこうなるよというような話と、KobayashiさんのJSで実装された言語の話かな。あと、sendさんのをみてFirebugは今度ちゃんとソースを見てみようと思った。
mala氏のcookieに書けば別ウインドウ間でも情報共有できるじゃんって発想は考えたことなかったから面白かった。あのデバッグ方法が有用かはさておいて。
それにしても、kusigahamaさんの習字のプレゼンは会場的には笑いだったけれど、何気に高橋メソッドで素晴らしいと感じた。やっていることは、デジタルでもアナログでも同じなんだろう。フォントが違っただけで。

Draggable.jsを0.0.2にバージョンアップ

http://clonedoppelganger.net/javascript/Draggable.html

ドラッグ中にテキスト選択をできないようにするのは、どんなときにでも欲しい機能かなと思って追加した。あと、IEでスクロールすると位置がずれるバグがあったので直した。
高機能なドラッグ&ドロップが必要にない場合には便利だと思うので、どうぞご利用ください。
※対応ブラウザは、IE6SP2、IE7、Firefox2.0.0.3、Opera9.10、Safari2.0.4

フェードイン・フェードアウトの人力検索

http://q.hatena.ne.jp/1174039036
Objectではなくfunctionな書き方だったので、適当に自分なりに書いた。ロジックはフェードイン、アウトの部分だけ。

<html>
<head>
<script type="text/javascript">
var Fade = function(id) {
  this.element = document.getElementById(id);
}
Fade.FONT_CHARS = [
  "#000", "#111", "#222", "#333", "#444", "#555", "#666", "#777",
  "#888", "#999", "#aaa", "#bbb", "#ccc", "#ddd", "#eee", "#fff"
];
Fade.ANIME_SPEED = 100;
Fade.TYPE_IN = 0;
Fade.TYPE_OUT = 1;
Fade.prototype = {
  fadeIn: function() {
    this.type = Fade.TYPE_IN;
    this.nowPoint = Fade.FONT_CHARS.length;
    this.fading();
  },
  fadeOut: function(count) {
    this.type = Fade.TYPE_OUT;
    this.nowPoint = 0;
    this.fading();
  },
  fading: function() {
    if (this.type == Fade.TYPE_IN) {
      if (this.nowPoint < 0) return;
      this.nowPoint--;
    } else if (this.type == Fade.TYPE_OUT) {
       if (this.nowPoint > Fade.FONT_CHARS.length) return;
      this.nowPoint++;
    }
    this.element.style.color = Fade.FONT_CHARS[this.nowPoint];
    var self = this;
    setTimeout(function(){self.fading.apply(self)}, Fade.ANIME_SPEED);
  }
}
window.onload = function() {
  var jkondo = new Fade("jkondo");
  var jnaoya = new Fade("jnaoya");
  jkondo.fadeIn();
  jnaoya.fadeOut();
}
</script>
</head>
<body>
<div id="jkondo" style="color:#fff">jkondo</div>
<div id="jnaoya" style="color:#000">jnaoya</div>
</body>
</html>

利用する機会はなさそうですが、どうぞご利用ください。

フェルマーの最終定理読了

読み終えた。なんと素晴らしい本だろうか。

フェルマーの最終定理 (新潮文庫)

フェルマーの最終定理 (新潮文庫)

いや、本が素晴らしいと言えば勿論そうなのだけれど、やはり取り上げられている数学上の話の一つ一つが魅力的だった。フェルマーの最終定理自体もそうだけれど、過去の偉人たちが証明してきた数論は、論理的思考の美学というか、本当に鉄壁で美しい。
ハッカーズを読んだときにも思ったことだけれど、改めて好きで熱中している人の力は凄いと感じる。天才と呼ばれるような人が天才な力を発揮するときに、その人が対象を好きでないことなんてあるのだろうかとさえ思う。
フェルマーの最終定理を読んで、数学が好きだったのに文系を選考してしまった自分のことをふと思い出した。算数の応用問題とか数学の証明とかが好きで、実際に中学生くらいのときは数学が一番得意科目だったし、面白いとも感じていた。ただし、どうしても数学の中に嫌いなことが一つだけあって、それは計算することだった。小学生のときの「計算ドリル」は見たくもないくらいに嫌いだったし、小テストとかで計算の答えを時間内に埋めてゆく行為は本当に嫌いだった。中学生のときの定期試験には、必ず「計算だけの問題」と「証明などの文章問題」とがセットで出されていたけれど、「計算だけの問題」は解くのが面倒なだけで、かなり嫌がっていたように記憶している。それが大きな理由で、高校生のときには既に数学を手放していた気がする。
ただし、これは勿論計算無用という話ではなくて、自分には面白さを感じることが出来なかっただけなのだろうなとは感じる。
化学とか物理も好きだったので、計算させ好きだったならば、きっと理系だったのだろうなと思いながら、結局プログラマとかやっている訳だから、元々好きだったことに近づいているのかなと思ったりもする。
今回読んだフェルマーの最終定理 (新潮文庫)は、数学的知識を前提にしない素晴らしい良本なので非常にお勧め。

object.appendChild(embed)できない

なんで、IEだとこれがダメなのだろう。

var object = document.createElement("object");
var embed = document.createElement("embed");
object.appendChild(embed);

YouTubeみたいなFlashのタグをDOMで整形するのは何かに違反しているのかな。FirefoxとかOperaだと動く。IEの場合はFlash動かすだけならembedを描画するだけでも動くっぽいけれど、気持ち悪い。

ポール・ギルバートモデル

メインのCaparisonギターの弦を張り替えるついでに、ポール・ギルバートモデルのギターにも久しぶりに弦を張ってみた。

チューニングしようとしたらチューナーが無反応だったけれど、多分セレクタあたりだろうと当たりがついたので、その場凌ぎの接点復活剤を吹きつける。

Ibanezのギターはネックが薄い。本当に薄い。今はもう弾きにくく感じてしまうけれど、ギターの上達に大いに貢献してくれたギターだからかなり愛着がある。
それにしても、Caparisonギターに慣れてきたせいで、どうも24フレットが短く感じる。普段、27フレットあるからなぁ。

新居昭乃のライブに行ってきた

先日申し込んだ新居昭乃のライブへ行ってきた。やっぱり生はいいなぁ。MCはラジオと同じノリでゆったりかわいいキャラクタだった。
セットリストは最近の曲が多かったけれど、VOICESの弾き語りが聴けたのはとても満足。音程確認せずに最初が歌えるんだから、やっぱり絶対音感あるんだろうなと思う。うらやましい。
後半を盛り上げたWANNA BE AN ANGELとかは傑作。デジタルな伴奏は結構ベースも効いていてノリノリな感じだったけれど、上に乗ってるバイオリンとかチェロとかピアノとかが生なので心地良い。
映像の演出も素敵だった。東京国際フォーラムの設備と言ってしまえばそれまでだけど、前にステージが透けるスクリーンを降ろして、様々な映像を投影していたのが、幻想的だった。
あと、生でみて改めて感じたけれど、新居昭乃の歌は歌うのが難しそう。菅野よう子の作曲した曲もそうだけれど、音程変化が激しかったり、臨時記号付くような音符が出てくるから、音程が取りづらそうに伺えた。特に高い音程の裏声と地声が行き来するところとかは難しいと思う。
何にせよ、素敵なライブだったので、時間が合えばまた行きたいところ。