進数の変換

16進数を10進数に、
16進数を8進数に、
10進数を16進数に、
10進数を8進数に、
8進数を10進数に、
8進数を16進数に、
他にもいろいろありますが、コピペを使い続けてきたためか、いざ自前で式を書こうとすると全く書けません。

検索の仕方が悪いのかの、関数があるのを見落としているだけなのか、なかなか見つかりません。
PHPにはbase_convert()がありますが、使い勝手がよろしくない。

my $str = '本日は晴天なり';
my $buf = q{};
$buf .= sprintf( '\%o', $_ ) foreach unpack 'C*', $str;

う~ん、美しい。

ネトゲアンテナ改修中

ネトゲアンテナは、ネットゲーム(オンラインゲーム)の情報サイトです。
今までは、ローカルで解析したデータを下にHTMLファイルを作成。
そのファイルをFTPでアップしてj更新するという古臭いやり方でした。

もともとが自分用のツールだったので、単独コンテンツにしても、
スクリプトはベースを変えずにその延長で使い続けていましたが、
さすがに限界も見えてきたため完全に動的に処理できるように改修してます。

リンクとかトラックバックとか死んでる機能も多いので、どうにかしないと。

いまどきはスクレイピングって言うんですよね。
ネトゲアンテナ改めネトゲスクレイピング?舌を噛みそう

PerlでPOSTメソッドの送信を行う

PerlでPOSTする必要があったので調べてみた。
HTTP::Request::CommonでPOSTするデータを用意して、LWP::UserAgentに委ねるだけ。
この連携はいつ使っても感動しますね。

use strict;
use LWP::UserAgent;
use HTTP::Request::Common;

# POST準備
my $url = 'http://exsample.com/receive.cgi';
my %postdata = ( 'id' => 'id', 'pass' => 'pass' );
my $request = POST( $url, \%postdata );

# 送信
my $ua = LWP::UserAgent -> new;
my $res = $ua -> request( $request ) -> as_string;

500桁ぐらいならどうにかなるんじゃないかな。

π=3.

1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679

8214808651 3282306647 0938446095 5058223172 5359408128
4811174502 8410270193 8521105559 6446229489 5493038196

4428810975 6659334461 2847564823 3786783165 2712019091
4564856692 3460348610 4543266482 1339360726 0249141273

7245870066 0631558817 4881520920 9628292540 9171536436
7892590360 0113305305 4882046652 1384146951 9415116094

3305727036 5759591953 0921861173 8193261179 3105118548
0744623799 6274956735 1885752724 8912279381 8301194912

WordPressでタグを扱う

デザインを弄ろうとしましたが、Smartyに慣れてしまうと、WordPressのテンプレートは違った感触です。
タグを表示する”タグ”は以下のものだとこちらで見つけました。


<?php the_tags(); ?>

the_tags()には3つの引数を指定できるようで、

  • 1つ目:ヘッダ
  • 2つ目:セパレータ
  • 3つ目:フッタ

ということだそうです。
必死に”Tags”を検索してて見つからないわけです。

WCGクローラ動いてます

たまにおかしな動作をしますが、スクリプトがおかしいというか、
対策をちゃんと施してないというか、取得先の問題のようです。
データ自体を問題なく確保できれば、ぜんぜん問題ないのですが、
こればかりはどうしようもないでしょう。
にっぽー@newsVIP氏のデータをお借りすることに成って、若干修正しました。
今のクロールは、cronから14:30に実行させています。
昔のように常駐ではなく、処理が終われば終了します。
そのため、監視ログはスッキリしていると思います。

日報サイトも分散が始まったようですし、なにかしら日報できるようになるのかもしれません。
たまに迷惑をおかけしますが、それも404の味ということで・・・
(念のため断っておきますが、業務として請負ったものはちゃんと対策してます)

PostScript::Simpleで楕円を書く

PostScript::Simpleには楕円を描くためのメソッドは用意されていません。
そのため、自力で書く必要があります。

コツは楕円の中心へtranslateして、そこを中心にscaleします。
用意されているcircleメソッドで円を書いて、
scaleを元に戻して、translateも元に戻します。
これで元の座標軸に戻ります。

# 楕円のサイズ
my $width  = 100;
my $height = 50;

# 横幅を基準に描画する
$ps -> {'pspages'} .= sprintf( "%d %d translate\n", $width, $height );
$ps -> {'pspages'} .= sprintf( "1 %.2f scale\n", $height / $width );
$ps -> circle( 0, 0, $width );
$ps -> {'pspages'} .= sprintf( "1 1 %.2f div scale\n", $height / $width );
$ps -> {'pspages'} .= sprintf( "-%d -%d translate\n", $width, $height );

movetoとの使い分けが難しいですね。
楕円のときだけtranslateなのかな?

ブログパーツが悲惨な事に

このサイトでも使っているWCG用ブログパーツですが、
スタイルシートのfloatの影響なのか縦にびょ~~~んと伸びてしまいますね。

公開当時より環境も変わってきているし、
また何らかの手入れが必要なのかもしれません。
といっても、まだ時間があまり取れませんが。

flashもいいなぁ・・・

PHP:GDでPNG画像を作る

GDはイメージリソースを作ると、黒で塗りつぶすという余計な事をやってくれます。
そのため、まず間違いなく塗りなおす作業が必要です。
ちなみに、ImageMagickやPerlMagickでは xc:none で透明なキャンバスを作れます。

$image = imagecreatetruecolor( $width, $height ); // イメージリソースを作成
imagealphablending( $image, false ); // アルファブレンディングを無効(謎)
imageSaveAlpha( $image, true ); // アルファチャンネルを有効(謎)
$transparent = imagecolorallocatealpha( $image, 0, 0, 0, 127 ); // 透明度を持つ色を作成
imagefill( $image, 0, 0, $transparent ); // 塗りつぶす


以下のように、透明色だけを設定した場合、
その画像自体では透明になるけれど、他の画像と合成すると透過しなくなる。

// 透明色を灰色に設定(灰色が無い前提)
$transparent = imagecolorallocate( $image, 127, 127, 127 );
ImageColorTransparent( $image, $transparent );