M.C.P.C.

―むり・くり―プラスコミュニケーション


« 2010年4月 | トップページ | 2010年6月 »

2010.05.31

iPadで写真をデジタルフォトフレームにするよりSSHを表示させた方が和むだろ

iPadで使っていないときに何を表示させるかと思っていろいろ考えたんだけれども、

Dpfssh
▲なごむわー

ほかのサーバにSSHで入ってtopを表示させる方が和むことに気づいた。loadaverageが高くなると和まない。


[パソコン・インターネット] | 固定リンク | コメント (2) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.30

2010.05.29

iPad買ったが入れていく写真がない……

iPad買っったんで、明日か明後日に社長プレゼンすることになると思うんで、いろいろアプリを買ったりして準備しているんですけれども、僕、手持ちにいい写真を持っていないんです。肌色のやつならいっぱいあるんですけれども、そんなの見せたら洒落にならないし……

Macの壁紙をiTunesで同期しておいてお茶を濁すしかないか……

Twitterアプリも入れておいたんだけれども、見せた瞬間にTLに変態クラスタの人たちの変態POSTが表示されていたらどうしよう……

当分は趣味のものを入れないほうがいいよね……

[パソコン・インターネット] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.28

WebService::KuronekoYamato 0.0.3をCPANで公開

WebService::KuronekoYamato 0.0.3をCPANで公開しました。

http://search.cpan.org/~clcl/WebService-KuronekoYamato/lib/WebService/KuronekoYamato.pm

0.0.3  Wed Nov 25 12:30:00 2009
       libwww-perlの仕様変更に対応(Encode)
       2009.11.18頃に行われたヤマト運輸荷物調査サイト構造変更に対応

とかなり古い更新日なのになぜ今上がっているかっていうと、CPANに上げても、Rejectされていたからなんです。昨晩しっかり考えて原因を排除し更新した次第。

この間にも依存モジュールとしてYAML::SyckよりもYAML使うべきじゃねーとかいろいろ考えましたがあんまり気にしないでおこうっと。

それにしても、自分が作ったモジュールがどこのサーバからでもインストールできるのっていいよね。

おりしも今日はiPadの発売日。このモジュールを使って、iPodを運んでくれているヤマト運輸の荷物追跡をしてみたらいかがでしょう。

[Perl] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.27

PerlのCGI.pmで複数のCookieを消す

CGI.pmのみ使っているようなタイトな環境で、Cookieを消すというやり方、正直いって知らんかった。最近Cookieってセッション番号ぐらいしか焼いていないし、しかもシステムが勝手に焼くしな……

こんな風にしてみた。

Finename: delete_cookie.cgi

#!/usr/bin/perl
 
use strict;
use warnings;
use CGI;
my $q = new CGI;
my @del_cookies = ('val1', 'val2');
my $cookies;
foreach my $key ( @del_cookies ){
push @$cookies,
     $q->cookie( -name    => $key,
                 -value   => '',
                 -expires => '-1y',
     );
};
print $q->header(-cookie=>$cookies);
exit;
__END__

ちなみに、これブラウザで実行しても見た目なにも表示されない。Cookieを消せっていう指示が入っているHTTPヘッダが見えないところで受信されているっていうことです。

CGI.pm推奨のCookieの使い方は、一つのCookieで、複数の値を入れるタイプなんだけれども、焼かれるCookieは、必ずしもCGI.pm推奨のCookieの使い方に倣っていない場合がある。

今回のCookie削除は、複数のCookieを削除するタイプです。ループしてやらなきゃいけないのね……

[Perl] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.26

CSS Spriteを使って、いにしえのフォント画像テーブルを使ったフォント表示に挑戦

昔のPC-9801やMSXのVRAMの裏画面をとってみたことがある人はわかると思うんですけれども、結構文字テーブルを用意していたのが多かったりしませんか? Windowsのゲームでも、文字テーブル画像を生成している奴があったりしたもんです。

Shoinnfont
▲書淫、或いは失われた夢の物語。のフォントテーブル画像

いまや、これをHTML+JavaScriptでできる時代になっているからやってみました。

Filename: bmp.pl

#!/usr/bin/perl
 
use strict;
use warnings;
use Imager;
my $w = 16;
my $h = 16;
my $img = Imager->new( xsize => $w * 256, ysize => $h * 256,);
my $font = Imager::Font->new( file => 'ipam.ttf' );
 
for ( my $i = 0x0000; $i < 0x10000; $i++ ) {
  $img->string(
    x => ($i % 256) * $w,
    y => 14 + int( $i / 256) * $h,
    string => chr($i),
    utf8 => 1,
    font => $font,
    size => 16,
    aa => 1,
    color => '#ffffff',
  );
}
$img->write( file => 'bmp.png',) or die $img->errstr;
 
exit;
 
__END__

プログラムの中でも指定している通り、IPA明朝(ipam.ttf)を指定しているよ。同じディレクトリにおいてから、実行すると、bmp.pngができます。これはUnicodeの基本多言語面(BMP)に相当するやつです。

Kanjis
▲IPA明朝で基本多言語面書きだした

この書きだしたbmp.pngをCSS Spriteとして文字表示に使ってみるコードがこれ。

<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>巨大画像画像ファイルのCSS Spriteをフォントとして利用</title>
    <link rel="stylesheet" href="http://yui.yahooapis.com/2.7.0/build/reset-fonts-grids/reset-fonts-grids.css" type="text/css">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js"></script>
    <script type="text/javascript">
    // <[!CDATA[
    $(function() {
      var str = $('#honmon').html();
      var newstr = '';
      var h = 16;
      var w = 16;
      for (var i = 0; i < str.length; i++ ){
        var code = str.charCodeAt(i);
        var char = String.fromCharCode(code);
        var ku  = parseInt( code / 256 );
        var ten = code % 256;
        var html = '<span class="moji" title="' + char
                 + '" style="height: '+ h + 'px; width: '
                 + w + 'px; background-position: ' 
                 + ten * -w + 'px ' + ku * -h + 'px;"></span>'
        newstr = newstr + html;
      }
      $('#honmon').html(newstr);
      });
    // ]]>
    </script>
    <style type=" text/css">
      .moji {
        display:inline-block;
        background-image:url(bmp.png);
      }
      #bd p {
        line-height: 2;
      }
    </style>
  </head>
  <body>
    <div id="doc" class="yui-t7">
      <div id="hd" role="banner">
        <h1>巨大画像画像ファイルのCSS Spriteをフォントとして利用</h1>
      </div>
      <div id="bd" role="main">
        <div class="yui-g">
          <!--YOUR DATA GOES HERE -->
          <p> SMマニアから見れば、この事件にSM性は感じられないという。だが一般(ノーマルな性的趣味)の人からすると、どちらも変質者で同じような気もするが……。「違います。事件の犯人は変質者。SMマニアは変態。SMマニアは自分が変態であることを認知しているし、立場も分かっていれば理性もある。日常生活においては全く普通で、性欲の部分だけが変態なんです。」(G氏)つまり変質者は理性がなくなるから犯罪にまで及んでしまうということだ。通り魔だけじゃなくて痴漢なども変質者のたぐいになるらしい。なおG氏によるとSMマニアに対して「変態」と言うぶんには何も問題ないが……</p>
          <p style="text-align: center;">↓</p>
          <p id="honmon"> SMマニアから見れば、この事件にSM性は感じられないという。だが一般(ノーマルな性的趣味)の人からすると、どちらも変質者で同じような気もするが……。「違います。事件の犯人は変質者。SMマニアは変態。SMマニアは自分が変態であることを認知しているし、立場も分かっていれば理性もある。日常生活においては全く普通で、性欲の部分だけが変態なんです。」(G氏)つまり変質者は理性がなくなるから犯罪にまで及んでしまうということだ。通り魔だけじゃなくて痴漢なども変質者のたぐいになるらしい。なおG氏によるとSMマニアに対して「変態」と言うぶんには何も問題ないが……</p>
          <!--YOUR DATA GOES HERE -->
        </div>
      </div>
      <div id="ft" role="contentinfo">
        <p></p>
      </div>
    </div>
  </body>
</html>

Cssspritekanjihtml
実行はこちら(Firefoxのみ)

こんな感じで、画像一枚あればフォントファイルいらないってこともできるわけですよね。

これ、PC-9801の頃の古い話かっていうと、結構いまどきのゲームもこういうことしているらしいんだよね。

さて、これでモリサワフォントとか使って自サイトや自作アプリで表示できるぜーとか思ったところで、ライセンス的にアウトなんだろうなー。だからサンプルもIPA使った次第。世の中うまくいかないもんだねー。

[フォント] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.25

ブービートラップ

モテキ4巻が出ていたので買ってきていつもの某ちゃんとLiveMessengerでマンガ談義していたわけですが(いつぞやのむらしんぼ談義した子ね)、

「安倍吉俊よりも銃刀法違反の方が漫画は10倍うまい」

とか禍々しい言霊を放ってくれて、こんなにも解釈するより思考停止したほうがましだと思ったことはない。

[オタ] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.24

ワードサラダ

Webアプリケーション作っていまして、ケータイでダミー文字列を入力する場面だったんですけれどもめんどくさいので、ケータイの予測変換を使いって、最初「あ」を押したら出てきた1つ目の単語で確定、そしてまた出てきた予測単語で確定、ていうのを繰り返して入力しようと思ったんです。

「ある時間は。そのせいとか思ったら自分がワキガだった」とかなった。

テストだとしても、ダミー文字列で他の人に見られるとちょっと微妙な感じがするよな!

そういえばアニメ版エクセル♥サーガで、新聞の場面にダミー文字列が流れているんだけど意外に面白かったよ。未来の回の脚本みたいなのが書いてあったり、こんなところは読むな、みたいなのが書いてあったりした。

[Web] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.23

DITのServersMan@VPSの登録にはgmailのプラス付きのメールアドレスは使えない

ServersMan@VPS仮想専用サーバーサービス:ユビキタスプロバイダ DTI [dream.jp]

DTIのVPSサーバ、とても安くて大人気で、いま申し込んでも6月頭あたりの提供らしい。

そんで、これの月490円で行けちゃうEntryプランは、さすがにメモリ256MBだとやりくり苦労するのは知っているので、Standardプランを申込みしました。

さて、申込するとき、最近はgmailのアドレスを使っていまして、gmailは、メールアドレスの後に+を付けると、付けた分が無視されるというルールがあるんですけれども、

  • hogehoge@gmail.com
  • hogehoge+dti@gmail.com

これらは両方とも同じところに届くわけで、今回も、+DTIを付けたメールアドレスで登録しようと思ったんですけれども、このServersMan @VPSだと、+を付けたメールアドレスははじかれてしまいます……

じゃあ、どうしたかかっていうと、

  • hogehoge@gmail.com
  • hogehog.e@gmail.com

は両方とも同じところに届く(@以前のピリオドはメール配信先としては無視される)、ていうこれまた特殊ルールがありまして、それを使い、登録した次第。

なんでわざわざメールアドレスを工夫して登録しているかっていうと、サービス提供者からのメール振り分けがやりやすくなるのと(振り分けフィルタの手がかりとして使える)、どっかにメールアドレスが漏れた時わかりやすくするためだったりします。

[パソコン・インターネット] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

2010.05.22

Perlで0~536870911までの数字を62進数文字列最大5文字に変換したり逆変換したり

0からの連番(シリアル値)を62進数文字列(最大5文字)として暗号化しておいて、使う時に復号してシリアル値に戻すっていうの。普通にやると、文字が順番に代わっていくだけなのでなんだかいたたまれない気持ちになるので、数値を2進数に見立てて、左右ビット反転することで、それっぽくなる。

Filename: crypt62.pl

use strict;
use warnings;
use Math::BaseCalc;
my $calc = Math::BaseCalc->new(digits => 'bin' ); # 2進数
for (my $i = 0; $i < 16; $i++ ){
  my $b = $calc->to_base( $i );
  my $h = $calc->to_base( _bit_hanten($i) );
  my $c = crypt62  ( $i );
  my $d = decrypt62( $c );
  printf "%2d %4s %32s %5s %2d\n" ,$i, $b, $h, $c, $d;
}
exit;
 
sub crypt62 {
  my $n = shift;
  my $calc = Math::BaseCalc->new( digits => 62 ); # 62進数
  #$n ^= 12345678; # XORする場合
  $n = _bit_hanten( $n ) >> 3; # ビット左右反転ご3ビット右シフト
  my $s = $calc->to_base( $n ); # 数値を62進数文字列へ
  return $s;
  #return substr "0000$s", -5; # ゼロパディングする場合
}
sub decrypt62 {
  my $s = shift;
  my $calc = new Math::BaseCalc( digits => 62 ); # 62進数
  my $n = $calc->from_base( $s ); # 62進数文字列を数値へ
  $n = _bit_hanten( $n << 3 ); # 3ビット左シフト後ビット左右反転
  #$n ^= 12345678; # XORする場合
  return $n;
}
sub _bit_hanten { # 32ビット左右反転
  my $n = shift;
  $n = ( $n << 16) | ( $n >> 16 );
  $n = ( ($n & 0x00ff00ff) << 8 ) | ( ($n & 0xff00ff00) >> 8 );
  $n = ( ($n & 0x0f0f0f0f) << 4 ) | ( ($n & 0xf0f0f0f0) >> 4 );
  $n = ( ($n & 0x33333333) << 2 ) | ( ($n & 0xcccccccc) >> 2 );
  $n = ( ($n & 0x55555555) << 1 ) | ( ($n & 0xaaaaaaaa) >> 1 );
  return $n;
}
 
__END__
$ perl crypt62.pl
 0    0                                0     0  0
 1    1 10000000000000000000000000000000 iakk8  1
 2   10  1000000000000000000000000000000 95aa4  2
 3   11 11000000000000000000000000000000 rfuuc  3
 4  100   100000000000000000000000000000 4xA52  4
 5  101 10100000000000000000000000000000 mHUpa  5
 6  110  1100000000000000000000000000000 dCKf6  6
 7  111 11100000000000000000000000000000 vN4ze  7
 8 1000    10000000000000000000000000000 2gN2w  8
 9 1001 10010000000000000000000000000000 kr7mE  9
10 1010  1010000000000000000000000000000 blXcA 10
11 1011 11010000000000000000000000000000 twhwI 11
12 1100   110000000000000000000000000000 6On7y 12
13 1101 10110000000000000000000000000000 oYHrG 13
14 1110  1110000000000000000000000000000 fTxhC 14
15 1111 11110000000000000000000000000000 y3RBK 15
$ 

変換後の文字列を5文字に抑えるためには、3ビット削らなくてはならなかった。ということで、表現できる数値は、0~536870911(2^29-1)までとなります。

最初のゼロが0という文字列になるのが嫌な人は、0埋めするか(0→00000、1→00001にすること。ゼロパディングって言います)、0から使わないか(どうせDBから出てくるIDなんて1が起点だろ)、暗号化と復号のルーチンの要所に ^ (XOR)を仕込んどくといいよ。あと、これ暗号にはなりません。idを1増やして簡単に情報をたどられるのが嫌だ、程度の難読化ですよね。

一番怖いのはPerlのモジュールでこういうのを専門でやるモジュールが用意されていたりしそうだってことだ。

[Perl] | 固定リンク | コメント (0) | トラックバック (0) | このエントリーをはてなブックマークへ追加 livedoor Clipでこのサイトを登録している人数livedoor Clipでこの記事をクリップ!

< 最後 « これより前10ä»¶ | 全件