2008年5月アーカイブ

メールの送信 - モダンなPerl入門 - モダンなPerl入門 [perl-users.jp]

という記事で、モダンなメールの送信のコードがありました。

use strict;
use warnings;
use utf8;
use Encode;
use Email::MIME;
use Email::MIME::Creator;
use Email::Send;
 
# メールオブジェクトをつくる
my $mail = Email::MIME->create(
    header => [
        From    => 'from@example.com',
        To      => 'to@example.com',
        Subject => Encode::encode('MIME-Header-ISO_2022_JP', 'コンニチワ'),
    ],
    parts => [
        encode('iso-2022-jp', '元気でやってるかー?'),
    ],
);
 
# Email::Send で送信する
my $sender = Email::Send->new({mailer => 'Sendmail'});
$sender->send($mail);

これに対し、今までのコードは

use strict;
use warnings;
use utf8;
use Encode;
use MIME::Lite;
 
my $msg = MIME::Lite->new(
    From     => 'from@example.com',
    To       => 'to@example.com',
    Subject  => Encode::encode('MIME-Header-ISO_2022_JP', 'コンニチワ'),
      # EncodeでMIME-Header-ISO_2022_JPが使えるのは
      # Perl5.8.6以降同梱のもの
    Type     => 'text/plain; charset="ISO-2022-JP"',
    Encoding => '7bit',
    Data     => encode('iso-2022-jp', '元気でやってるかー?'),
);
 
$msg->send();

となると思うのですが、この2つを比較して、どこをモダンといっているかの説明がないのでよく分からないとおもいました。

Iriaさんでもちょっと大変な、規則性のないファイル名が付けられた画像たくさんサイトから画像ダウンロードします。規則性がないので、サムネイルがたくさんあるページから、画像が貼られているページに実際に行って、画像ファイルのリンクを取得して、ダウンロードするタイプです。

WWW::Mechanizeで、find_all_linksを使ったサンプルとして。

#!/usr/bin/perl
use strict;
use warnings;
use WWW::Mechanize;
 
my $mech = WWW::Mechanize->new();
$mech->agent_alias( 'Windows IE 6' );
$mech->get('http://www.example.com/hoge.htm');
 
my @links = $mech->find_all_links();
foreach my $item (@links) {
  $mech->get($item);
  my @links2 = $mech->find_all_images();
  (my $filename = $links2[0]->{url}) =~s|^.+/||;
  print "$filename\n";
  #$mech->get($links2[0]->{url});
  #open my $fh,'>',$filename;
  #print $fh $mech->content();
  #close $fh;
  #undef $fh;
  $mech->get($links2[0]->{url},  ':content_file' => $filename);
  $mech->back();
  $mech->back();
}

そのままでどこのサイトで使えるかはないしょ。

(2013-3-15 10:02追記)

ファイルの保存の部分をモダンな書き方にしてみました。コメントアウト部が以前のコードです。

これでも、昔はその言葉が広がるのを阻止していたんだけれどもねえ……。いまや実際にその呼び方で呼ばれている人、または自称している人はわんさかいるので。

■気になるデザイン[12]「DTPデザイナー」って何?/津田淳子 : 日刊デジタルクリエイターズ [blog.dgcr.com]

名刺の肩書きにそう書いてある人もひとりもいないなぁ。これはいったいどういうことだ。うーむ。

DTPデザイナーの大半は、名刺を持たずに社外に出ないで働いているからなんだと思います。というか、肩書きはなんちゃらデザイナーではなく「制作部」とかで済むのが現実では。

私は4年くらい前まで、DTP専門誌の編集を6年ほどしていたが、そのときDTPデザイナーという言葉を誌面で使わない、と決めていた。私がそのDTP専門誌に携わり始めた頃にはDTPデザイナーという言葉自体、耳にしたことがなかったような気がする。それがいつの頃からか、Webや求人誌、お稽古雑誌などでそういう言葉を目にするようになってきた。

その雑誌ってDTP WORLDだと思うんですけれども、作業従事者側の意見がほとんど出ない雑誌でしたので(巻末の読者感想コーナーだけ)、DTPデザイナーの発見が遅れたのはむべなるかなと思いました。しかも、あの雑誌、読んでいる大半はDTPデザイナーだったりしやしないか。

余談。

CTPオペレータという言葉もあるんだよね。うちはDTPソフトのオペレーションからデジタル面付け作業、検版作業、CTPの操作メンテまでできるのが基本だったので、CTPオペレータという言葉が生まれる余地がなかったんだけれども、デジタル面付け作業が専門化すればCTPオペレータという言葉が生まれてくるのは想像に難くありません。

某所 [d.hatena.ne.jp] で、トンボの太さについてばらばらな意見が出ているので、アンケート取ってみようと思いました。答えるにはアバウトミーにログインする必要がありますが、Yahoo、はてな、Livedoor、Jugem、OpenIDそれぞれのIDでログインできちゃうのです。答えるには下の枠内の質問部をクリック。

プリプレスとプレスとポストプレスとで適正値が違うのかな。

Adobe - デベロッパーセンター : Dreamweaver CS4 ベータ版 新機能プレビュー [www.adobe.com]

最後にもうひとつ、Dreamweaver CS4から直接「Subversion」サーバにチェックイン、チェックアウトできるようになりました。今まで、ソースコードのバージョン管理で悩んでいた皆様の問題を解決できると思います。

僕もWebサイトはSubversionリポジトリを持っていて、Adobe GoLive CS2で更新後、ちまちまコミットの操作をするのがやっぱり面倒なのですが、面倒が解消さるのかな?

InDesignなどの旧Adobe系のDTPソフトで使われているバージョン管理システムVersionCueはやりたいことに対し大がかりすぎ、そのくせに制限も大きいという面もあるから、せっかくDreamWeaver CS4でSubversionが使えるのなら、InDesignでも使えて欲しいなあと思いました。InDesign CS5に期待です。(ピュア)

Yahoo!が提供してくれているウェブサービス、日本語形態素解析サービスを使って、自動的に単語を切り出し、ランキング取って、タグに採用しようとやってみているのですけれども、

Yahoo!デベロッパーネットワーク - テキスト解析 - 日本語形態素解析 [developer.yahoo.co.jp]

形態素解析サービス自体は単純に日本語文章を品詞や単語で分類して返してくれるだけなので、それをどのようにタグとして採用するかは、実装する人の感性によるところが大きいみたいです。

というわけで、タグ用途なので名詞だけ返すように設定したYahoo! 日本語形態素解析サービスなんですが、僕なりに単純に考えてみたのは、

  1. 文字長1は無条件で不採用
  2. 10.0とかの数字は不採用
  3. NGワード(例:ここ そこ あそこ どこ これ それ あれ どれ あと もの こと とき なん ほとんど 場合 みなさん みんな)

こんな感じで、採用されるタグが好みになるよう調整しています。なんていうか、調教ってやつでしょうか。さすがに、この辺の設定の解説とかはなかなかネットでは見つからない。Web APIで地ならしはされたところで、実装次第で全然違うものが出来ちゃうのは、Googleマップを利用した地域情報サイトでも見て取れます。

既存のDTPの掲示板を形態素解析して自動タグ抽出して、検索できるようにすると、スゲエおもしろいっペーと思いました。

http://edgenow-users.jp/

いま*-users.jpを作るのがはやっているわけですが、このながれで、InDesign-users.jpなんて出来ないのが不思議なんだけれども、まあええや。

あと、dtp-users.jpは、僕よりも若い世代がやるといいなあとか思ったり思わなかったり。

Webアプリケーションを作り中で、ローカルのサーバでがりがり作っていたんですけれども、気づいたら、モジュール大変いっぱい使っていて、本番環境のXREAでこれら入れられるかどうか確認していません。

#!/usr/bin/perl
package WebApp;
use base 'CGI::Application';
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI::Application::Plugin::BrowserDetect;
use CGI::Application::Plugin::CompressGzip;
use CGI::Application::Plugin::DBH (qw(dbh_config dbh));
use CGI::Application::Plugin::FillInForm (qw/fill_form/);
use CGI::Application::Plugin::Forward;
use CGI::Application::Plugin::LogDispatch;
use CGI::Application::Plugin::MessageStack;
use CGI::Application::Plugin::Session;
use Data::Dumper;
use Data::Page;
use DateTime;
use DateTime::Format::HTTP;
use DateTime::Format::MySQL;
use Digest::SHA1;
use Email::Valid::Loose;
use Encode;
use File::Copy;
use File::Basename;
use HTML::Parser;
use HTML::TagCloud;
use Image::Magick;
use LWP::UserAgent;
use HTML::EscapeEvil;
use HTTP::Request::Common qw(POST);
use Unicode::Japanese;
use URI::Escape;
use utf8;
use XML::Simple;
use XML::RSS;

XREAでは、なんとかユーザ環境でCPAN実行できますけれども、プロセス1分間で殺されるという縛りがありまして、こいつらい入れているときっとmake中にkillされてしまうんですよね。どうしようかな。

テレビやラジオで緊急地震速報のテスト、周知を繰り返ししているわけですけれども、たとえば、ニンテンドーWi-FiコネクションのWi-Fi接続で対戦中のユーザにだって緊急地震速報出すようなこと、考えられてないのかなあと思いました。

インターネットだったらたとえIPマルチキャストとかあっても、末端のインタフェースによってマルチキャスト受信できなかったりして、お上からのお触れを伝令するにはあまり役に立たないという認識なんですけれども、これがニンテンドーWi-FiコネクションでWi-Fi接続しているユーザ宛には、ニンテンドーのサーバ側がユーザの接続状況を統括しているのでニンテンドーががんばればユーザに通知できると思うわけで、特にゲーム対戦中で今まさに通信している端末には緊急地震速報のシグナル送ることは出来そう。

ゲーム対戦中に緊急地震速報でたら対戦ならんだろボケ、ていう人もいるでしょうが、そもそもテレビやラジオの緊急地震速報だって、現在の視聴・聴取に割り込んで情報を流すわけだし、それほど緊急性のある情報だからゲームの画面にかぶせて表示するのはやむを得ないと言うことになるでしょう。

というわけで、この分野、総務省は見落としてたりするのかなーと思ったのでした。

# もう緊急地震速報受信できるようになっていたらすみません

ただし、プリプレスやっている会社限定ですが。

その方法とは……

Mighty Mouseの右クリックを有効にしているかどうか、です!

アップル - Mighty Mouse [www.apple.com]

  • : アップル Apple Mighty Mouse MB112J/A

    アップル Apple Mighty Mouse MB112J/A


  • : Apple Wireless Mighty Mouse MB111J/A

    Apple Wireless Mighty Mouse MB111J/A

    • Mighty Mouseに右クリック機能がついていることを認識してないとか、
    • 右クリック機能を認識していても意図があってあえて殺すとか、
    • Mac OS X 10.4モデルは右クリック設定無効になっているらしいとか(壊したかと思ったぞ)、
    • 最近のAdobeソフトのコンテキストメニュー使っていないとか、
    • この期に及んでApple純正品にこだわっているとか(スクロールボールのメンテナンスで悩みつつ使い続けるのはマゾではないか)、

    いろんな意味でその企業の姿勢が反映していると思います。僕はMac詳しくないので、Macに詳しい方の意見が聞きたいです。

    ※この時期就職活動まっただ中だから、就活の子が真に受けると悪いけど、まあええや。

  • : PLANEX IEEE802.11b+g WLAN USBアダプタ GW-US54GXS

    PLANEX IEEE802.11b+g WLAN USBアダプタ GW-US54GXS

  • を買いました。

    このUSBアクセスポイントは、本来はその場にいないとできない、PSP同士のアドホック接続を、アダプタ経由で、インターネット越しに接続できる、XLink Kai対応の製品です。

    ただし、それをやるためには、ルータからPC一台にポート転送をしておく必要がありました。手元には、Windows XP搭載ノートパソコンがあったので、これを我が家のDMZに接続してポート転送を設定して、なんとかXLink Kaiに接続できました。

    その後、友達とネット越しでモンハンポータブル2ndGで狩りに出かけました。しかしあまりやりこんでおらんかったので、無様にモンスターにやられる始末。ネットプレイはなかなかおもしろいですけれども、PSPのみでチャットできんのが残念ですね。

    マンガ倉庫もとい万代書店まで行って、中古の「英雄伝説 ガガーブ トリロジー 白き魔女」買ってきました。

    英雄伝説 ガガーブ トリロジー 白き魔女 [gagharvtrilogy.com]

    このゲーム、何年か一回プレイしたくなるゲームなんです。

    それにしても、中学生の時は、「大人になったら好きなだけゲームできるんだ」と思っていたけれども、なってみたらそうでもないんですよね。

    小ネタなんですけれども、ダイレクト刷版、またはその刷版を利用したシステムのことを、CTP(Computer To Plate)といいまして、従来のフィルム製版+PS刷版の組み合わせのリプレースになっているわけですが、

    とある用事でハイデルベルグさんとメールする機会があったんですけれども、ハイデルさんは何が何でも“CtP”と書きなさります。

    これもドイツ的なこだわりなんでしょうか。ジャーマーン。

    そういや今度ドイツでは超でかい印刷関連機材展示会が開かれます。ドルッパ [www.drupa.com]!(音鳴ります注意)

    コンタクトもいいけど眼鏡もね。今持っている眼鏡が7年もので曇りガラス状になって向こうが雨の街になりそうだったので、眼鏡屋さんに行ってきました。

    そんで、眼鏡市場さんに行ってきました。メガネトップだったのにいきなり眼鏡市場になって、4様前面に打ち出し弐萬圓堂的な雰囲気になった店にはじめて行ってきました。

    そんで、落ち着いた店内のあちこちに4様の写真が飾ってあって、なんだかアールビバンなんじゃないかと一瞬かんちがいしました。

    そんで、眼鏡のフレームとレンズが決まって会計したら、4様ポスタープレゼントとか言うので「そんげいらねわや」と言っておきました。

    でも、4様をフィーチャリングしたのは、4様が写真の中でタダにこやかに笑っているだけで、一般の人に対してはそれ以上のメッセージ性のない雰囲気タレントだから、ということに気づきました。メガネトップの戦略なにげにうまくいってるじゃねえか。

    東京近郊にしか雑誌を置かないと明言しなくてもいいことを明言していることで地方民の心証をものすごく悪くしていることに気づいていないR25がプロモーション企画で、「Yahoo! JAPAN PR企画 - ACROBAT大冒険」ていうプロモーションサイトをやっています。期間限定のよう。

    Yahoo! JAPAN PR企画 - ACROBAT大冒険 [promotion.yahoo.co.jp]

    Acrobatdaibouken01s
    ▲金太の大冒険ではない

    ほな、はじめましょかー、ますステージ1な。

    Acrobatdaibouken02s

    なんとクイズだ!
    「貴様ら、PDFという言葉を知っているか!
     PDFとはなんの略語かわかるかの? ふぉふぉふぉ~!」

    Acrobat歴12年の僕に任せとけ!

    ペッ××ングディー×××××ファ××ングに決まっとるだろうが!C!C!

    60のダメージをうけた
    「ふぉふぉふぉ~!こんなこともわからんとは!
    正解はAだ!」

    Acrobatdaibouken03

    へ? 攻撃しとらんよ?

    ~~~

    というわけで少しばかばかしくなったので酒でも飲みに行くことにしました。つづく?かも

    FC2 blogでblogエントリを書こうと思ったんですけれども、アドレスがうろ覚えだったのでとりあえず入力してみたらこんなのがでました。

    Blogfc2comadmin
    ▲ディレクトリインデックスまるまる表示

    .htaccessでOptions -Indexesが入っているテンプレートセットの必要性を改めて感じました。とはいえ、手打ちでやっていることが最近多いんで、.htaccessが後回しになりがち。気をつけなければ。

    APPEの不安感をなくすには表題通りの仕組みが一番なんだけれども、ベンダー曰くはAPPEとCPSIって全く別物だから上がりが別になってもしょうがないっぽい売り方していて、そう言う意味では、PDFデータの場合、PDF専用に使うAPPEの出力こそが正解(ということにしたいのですね)、なんだろうなあ。

    やってもうた(__;)|印刷屋の嘆き(と言うよりぼやき?)ブログ [ameblo.jp]

    何で素人さんが
    イラストレータを持っているのか不思議ですが、

    なにも不思議ではなく、「プロが使っているソフトだから持っている」のです。

    プロが使っているソフトと同じものが入手できるのだから、あとは努力次第で、プロと同じものが出来る、これが、デジタル化した機材が生み出したあらたな制作欲求なんです。

    そう言うわけで、あまり邪険にしないでほしいなあと思いました。これかてしごとやで。

    たとえば都道府県分47個のblogがTypePadにあったとして、それらのblog群のカテゴリに相違がある場合、不足しているとしてレポートするPerlスクリプトです。

    僕以外の誰に役立つかは知らん。

    Filename: check_category.pl

    #!/usr/bin/perl
    use strict;
    use warnings;
    use utf8;
    binmode STDOUT=>':utf8';
     
    my $bloglist =
    {
      '愛知県'   => 1,
      '愛媛県'   => 2,
      '茨城県'   => 3,
      '岡山県'   => 4,
      '沖縄県'   => 5,
      '岩手県'   => 6,
      '岐阜県'   => 7,
      '宮崎県'   => 8,
      '宮城県'   => 9,
      '京都府'   => 10,
      '熊本県'   => 11,
      '群馬県'   => 12,
      '広島県'   => 13,
      '香川県'   => 14,
      '高知県'   => 15,
      '佐賀県'   => 16,
      '埼玉県'   => 17,
      '三重県'   => 18,
      '山形県'   => 19,
      '山口県'   => 20,
      '山梨県'   => 21,
      '滋賀県'   => 22,
      '鹿児島県' => 23,
      '秋田県'   => 24,
      '新潟県'   => 25,
      '神奈川県' => 26,
      '青森県'   => 27,
      '静岡県'   => 28,
      '石川県'   => 29,
      '千葉県'   => 30,
      '大阪府'   => 31,
      '大分県'   => 32,
      '長崎県'   => 33,
      '長野県'   => 34,
      '鳥取県'   => 35,
      '島根県'   => 36,
      '東京都'   => 37,
      '徳島県'   => 38,
      '栃木県'   => 39,
      '奈良県'   => 40,
      '富山県'   => 41,
      '福井県'   => 42,
      '福岡県'   => 43,
      '福島県'   => 44,
      '兵庫県'   => 45,
      '北海道'   => 46,
      '和歌山県' => 47,
    };
     
     
    my $categories_sum  = {};
    my $categories_hash = {};
    foreach my $blog ( keys %$bloglist) {
      my $blog_id = $bloglist->{$blog};
      my $categories = category_list($blog_id);
      foreach my $item ( @$categories ) {
        $categories_sum ->{ $item->{categoryName} }++;
        $categories_hash->{ $blog }->{ $item->{categoryName} } = 1;
      }
    }
     
    foreach my $blog ( sort keys %$bloglist ) {
      print "$blog\n";
      foreach my $category ( sort keys %$categories_sum ) {
        if ( !$categories_hash->{ $blog }->{ $category } ) {
          print "$category\n";
        }
      }
      print "\n";
    }
     
    exit;
     
    sub category_list {
      my $blog_id = shift;
      my $xmlrpc = TypePadXMLRPC->new();
      $xmlrpc->set();
      # カテゴリリスト取得
      $xmlrpc->set_blogid( $blog_id );
      my $categories_list = $xmlrpc->mt_getCategoryList();
      return $categories_list;
    }
     
     
    package TypePadXMLRPC;
     
    use XMLRPC::Lite;
    sub new{
      return bless{ _DATA => { } }, shift;
    }
    sub dataref  { $_[0]->{ _DATA } }
    sub set {
      my $self = shift;
      $self->dataref->{api}      = 'http://www.typepad.jp/t/api';
      $self->dataref->{username} = 'hogehoge';
      $self->dataref->{password} = 'fugaguga';
      return;
    }
    sub set_blogid {
      my $self   = shift;
      my $blogid = shift;
      $self->dataref->{blogid} = $blogid;
    }
    sub mt_getCategoryList {
      my $self = shift;
      my $categories_list = XMLRPC::Lite
          -> proxy( $self->dataref->{api} )
          -> call('mt.getCategoryList',
            $self->dataref->{blogid},
            $self->dataref->{username},
            $self->dataref->{password},
          )
          -> result;
      return $categories_list;
    }
     
     
    1;

    実行結果は、もう不足を直しちゃったあとなので提示できません……

    MovableTypeのXML-RPCインターフェースと同じAPIを持つblogシステムなら使えるんじゃなかろうか。

    Utf8expand01

    最近はLinux側でロングジョブをかけておいて終わったらWindowsに持ってきて作業、というシチュエーションが増えてきました。そこで問題になるのが、圧縮して持ってきた処理後のファイル名の文字化け。

    今時のLinux側はファイルシステムがUTF-8なので、そのままtarで固めると、ファイル名がUTF-8で格納されているのですけれども、Windows側で賢いアーカイバを使わないと、文字が化け化けになります。

    今回は、tgzが解凍できるアーカイバの選択肢として、+Lhacaデラックス版と、StuffItがあるというシチュエーションです。

    1.+Lhacaデラックス版

    Lhasaの手軽さはそのままに、これ1つで圧縮まで出来るっつ-事で、アーカイバをどれか入れろというととりあえずこれ、というふうになるのが+Lhacaデラックス版です。これで、LinuxのUTF-8でファイル名が格納されたtgzを解凍すると、以下のように。

    Utf8expand03
    ▲化け化け

    とっても残念な結果になりました。Windowsの世界はいつファイルシステムがUTF-8になるんでしょうね……

    2.StuffIt

    DTPやっている企業だと、MacのStuffItで圧縮したファイルをとりあえず解凍しなくちゃいけないという理由で、インストールされていることがあるWindows版StuffItです。これで解凍した結果が次の通り。

    Utf8expand02
    ▲化けてない

    こんな時だけStuffItが実力を発揮。やったね!

    というわけで、シチュエーションが特殊ですが、Macのsit解凍以外で、StuffItが有用な場面があるっていうことでした。

    急にcanvas要素をつかってお絵かきを投稿できるものを作ってみたくなったので、とりあえずテスト。FirefoxとOperaで動作確認しました。いろんなエラーチェックは省く。

    HTML側で描画したストロークデータを、テキストボックスに入れて送信して、PerlのImage::Magickで描画して画像にしてみました。HTML部は、http://ponderer.org/download/canvas_demo/ を参考にしました。

    canvas要素テスト [labo.dtpwiki.jp]

    Filename: index.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <meta http-equiv="Content-Type"
          content="text/html; charset=UTF-8" />
        <title>canvas要素テスト</title>
        <style type="text/css">
        canvas {
          border: 1px solid #ccc;
        }
        </style>
        <script type="text/javascript">
        if (typeof $ != 'function') {
          $ = function(id) {
            return document.getElementById( id )
          }
        }
        function textbox(f) {
          $('stroke').value += f + "; ";
          return;
        }
        function draw_thumb() {
        }
        function transform_event_coord(e) {
          return {
            x: e.clientX - 10,
            y: e.clientY - 10
          };
        }
        var drawing = false;
        var lastpos = { 
              x:-1,
              y:-1
            };
        function on_mousedown(e) {
          drawing = true;
          lastpos = transform_event_coord(e);
          textbox('start');
        }
        function on_mousemove(e) {
          if (!drawing) return;
          var pos    = transform_event_coord(e);
          var canvas = $("canvas");
          var ctx    = canvas.getContext("2d");
          ctx.strokeStyle = "rgba(200,0,0,0.6)";
          ctx.lineWidth = 4.0;
          ctx.beginPath();
          ctx.moveTo(lastpos.x, lastpos.y);
          ctx.lineTo(pos.x, pos.y);
          ctx.closePath();
          ctx.stroke();
          lastpos = pos;
          textbox( pos.x+','+pos.y );
        }
        function on_mouseup(e) {
          drawing = false;
          textbox('end');
          draw_thumb();
        }
        function init() {
          var canvas = $("canvas");
          addEventListener("mousedown", on_mousedown, false);
          addEventListener("mousemove", on_mousemove, false);
          addEventListener("mouseup"  , on_mouseup  , false);
          draw_thumb();
        }
        </script>
      </head>
      <body onload="init()">
        <canvas id="canvas" width="450" height="450"></canvas>
        <br />
        <form method="post" action="image.cgi">
          <input type="text" name="stroke" id="stroke" style="width:100%;" />
          <input type="submit" name="subimt" />
        </form>
      </body>
    </html>

    Filename: image.cgi

    #!/usr/bin/perl
    use strict;
    use warnings;
    use CGI;
    use Image::Magick;
    use utf8;
     
    my $q = CGI->new();
     
    my @stroke;
    if ( $q->param('stroke') ) {
      @stroke = split 'end; start;',
                      'end; '.$q->param('stroke').'start;'
    }
     
    my $img = Image::Magick->new;
    $img->Set(size=>'450x450'); # カンバスサイズ 
    $img->ReadImage('xc:#ccc'); # バック白 
     
    foreach my $item (@stroke) {
      $item =~s/ //g;
      if ( $item ne q() ) {
        $item =~ s/;/ /g;
        $img->Draw( primitive   => 'polyline',
                    points      => $item,
                    stroke      => '#DD5500',
                    strokewidth => 4,
        );
      }
    }
     
    print $q->header( -type => 'image/jpeg' );
    binmode STDOUT;
    print $img->Write('jpeg:-');
     
    exit;

    テキストボックス内に入るストロークデータをスマートに設計できるのが真の計算機工学の技術者なんだろうな。

    息巻いてFlex Builder 3の試用版を入れたのはいいのですけれども、どうもサーバサイドでPerlでCPANからモジュールインストールして使える・使えないを試しながらバックエンド側作ることばっかりやってたら試用期間が終わってしまいました……

    こういうことがあると試用版は実行回数制限にしてほしいとは思います。

    これとは確か月曜日あたりにアドビの何かのソフトの期限が迫っている気がするんだけれどもそれも思い出せない。やばいなー

    あわせて読みたい [awasete.com]

    訪問者の傾向を集計して、今見ているブログと一緒に見たらいいんじゃないカーていうのをサジェスチョンくれるサービス。

    うち

    あわせて読みたい

    つけて観察しているといっつも同じサイトが出てくるのでなんかおもしろくないー。もうちっとこのブログパーツを付ける人が多ければ別のサイトが出てくるのにな。

    FC2だったら、環境設定-プラグイン設定-[PC用]公式プラグイン追加-[拡張プラグイン]フリーエリア
    で、「あわせて読みたい」で生成されたHTMLをコピペすれば貼り付けられますよ。

    この前の休みに高速道路のパーキングエリアにて。確か下りの太平山パーキングエリアだったと思います。


    大きな地図で見る

    2008kakukaku01
    ▲立派なのできたねー

    2008kakukaku02
    ▲門前いったことあるよー

    2008kakukaku03
    ▲カクカクやん

    以降、カクカクギャラリー。

    2008kakukaku04
    ▲ニィス JTCウィン Z1ではないぞ

    2008kakukaku05
    ▲日沿道は岩城ICの先ができていたよ

    2008kakukaku06
    ▲ローマ字の“O”がやばい。

    ~~~

    結構カクカク問題撲滅にがんばったつもりだったのになー(この看板いつ出来たかは知らんけど)

    M.C.P.C.: Illustratorのアウトプット値でカクカク問題(PostScriptの平滑度問題)
    M.C.P.C.: Illustratorのアウトプット値でカクカク問題(PostScriptの平滑度問題)(2)
    M.C.P.C.: Illustratorのアウトプット値でカクカク問題(PostScriptの平滑度問題)(3):RIPにおける平滑度を表示するEPS

    ちなみに、カクカク問題を提示したあとのオフセット印刷業界の動きとしては、

    1. Illustrator CSで平滑度に影響するパラメータの設定が無くなった
    2. RIPベンダが入力PSに設定されている平滑度設定を無視して固定数値にするオプションを付けた

    という展開になっていて、カクカク問題はほとんど見られなくなってきていました。

    それなのに、それなのに……

    ~~~

    この出力は大型油性インクジェットプリンタでやっていると思うんですけれども、大型出力の世界は、オフセット印刷の世界と微妙に断絶があるみたいで、ノウハウが行き来していないような印象を持っています。

    もしかしたら、このカクカク問題って、大判出力の現場では、あまり認知されていないのでしょうか。

    大判出力をやっている皆様、いかがなんでしょうか?

    編集者賛歌(その3)~天才プログラマ/スーパークリエータに(多分)初めて選ばれた編集者 - YAMDAS現更新履歴 [d.hatena.ne.jp]

    今回の未踏ソフトウェア創造事業における発表で個人的に目がいくのは、森田尚さんの「高品質な書籍を簡単に作るための出版支援ソフトウェアの実用化」が選ばれていること。

    自動組版にて未踏ソフトウェアの天才プログラマー/スーパークリエータに選ばれるのはあっぱれだと思いました!

    PDF 千夜一夜: 「書籍を簡単に制作する出版支援ソフトウェア」作者、天才プログラマに認定される [blog.antenna.co.jp]

    内部構成は・・・
    中心になっているのは XSLT で書かれた XHTML→ LaTeX 変換で(html2latex.xsl)、それに LaTeXのスタイル設定ファイルやRuby言語で書かれたプログラムから構成されます。LaTeX を使うのがデフォルトですが、設定により XHTML→XSL-FO の変換をして(html2xslfo.xsl も付属)XSL-FO プロセッサを使うこともできるようになっています。XSL-FO プロセッサの設定は FOP になっています。

    僕もHTMLから出版のプロセッシングのスクリプト書いたことあるんですが、(X)HTML側には、組版指定に流用できるボキャブラリが少なくて苦労したので、高品質な書籍を作るための原稿となるXHTMLがどうなっているか気になります。後段のページプロセッサ依存かな。

    CGI::Session[okilab.jp] で、Cookie移植によるセッションハイジャックを防ぐための指定

    use CGI::Session qw(-ip_match);

    ていう指定がありまして、これをすると、同じセッションCookie使っても、セッション側で持っている、セッション開始時のIPと比較して、違っていたらセッション継続させないというものがあります(完全に防げるというわけではないですので注意)。

    http://perldoc.jp/docs/modules/CGI-Session-3.11/Tutorial.pod

    これを、CGI::Application::Plugin::Session[okilab.jp] でも使いたい。でも、当然指示の出し方が違っているわけで、ソースを読まずにトライアンドエラーでやっていたわけですけれども、らちがあかなかったので、検索してみたら、

    use CGI::Session qw(-ip_match);
    use CGI::Application::Plugin::Session;

    でいいみたいです。手元のコードに組み込んで動作確認しました。動作確認には、W-ZERO3のPHSと無線LANで行いましたw

    http://www.mail-archive.com/cgiapp@lists.erlbaum.net/msg03757.html

    の一連のスレッドで、CGI::Application::Plugin::Sessionの作者のCees Hekさんが答えていました。

    実家方面がPHS巻き取りで、A2502 HIGHSPEEDをFOMAハイスピード(7.2Mbps)で契約したものがあったので、使ってみました。

    YouTubeやニコニコ動画も普通に見られます、何これすごい!

    FOMAハイスピード提供地域であれば、結構使えるかも。ただし、動画みてると10500円天井にすぐぶつかっちゃいますねー

    zyappu

    | コメント(0) | トラックバック(0)

    旧二ツ井町のサンクスにしか売っていないという名物「ジャップ」です。

    Zyappu
    ▲ジャップ

    分かる人にだけ分かるように説明すれば、もも太郎アイスのスムージーですね。

    某最新版体験版ソフト、インストールに1時間以上かかって出かけられないのだが。

    ノートパソコンに入れるな、ていうことなんだろうか。Pentiumiiiのマシンなんですが、Pentium4以上にしろとかいうし。

    某ちゃんにPSPのカスタムテーマ作るの手伝ってって言われたので、手伝うことになりました。

    しかし、PSPのカスタムテーマをコンポーズするソフトが受け付けるアイコン用PNGファイルが、

    Custom_Theme-Japanese.pdf

    画像フォーマット256色32bit CLUT(αあり)
    PNG/TGA/GIM ファイル

    て書いてあるのです。なんだCLUTって、てよく考えてみれば単純にColor LookUp Tableっつーことですよね。9801の鮪形式が16色12bit CLUT(α無し)と見なせば即解決。……じゃなくて!

    PhotoshopでいくらPNG形式を試しても、アルファチャンネル付きは24bit(16777216色)でしか保存できず、8bit(256色)にするとアルファチャンネルが階調付ではなく、透明カラーを指定したディザリングになっちまう。つまりPSPのカスタムテーマのアイコン用PNGファイルが保存できないくさい。

    まともに買うと100000するソフトでそれができないということで僕はついカッときて、

    http://www.adobe.com/cfusion/mmform/index.cfm?name=wishform&lang=Japanese

    に要望出してしまいました……

    Adobeさん、PNGについては対応悪かったしなー要望聞いてくれるか少し不安ではあります。

    ちなみに、PSPカスタムテーマ用PNG作るときの“現時点での”正解は、Photoshopで24bit α付きで保存したあと、別の減色ソフトで8bit α付きに落とす、ということだそうです。まあなあ。

    レンタルサーバのXREAが重いときは、たいてい、同じサーバの別ユーザが設置したMovableTypeにトラックバックSPAMが投げられ続けられていて、どうにかしたいとことなんだけれどもなにも出来ず見守るだけ、というシチュエーションが多すぎて困る。

    設置した本人は気づいていないんだろうなあ。

    月別 アーカイブ

    ウェブページ

    OpenID対応しています OpenIDについて
    Powered by Movable Type 5.2.13

    このアーカイブについて

    このページには、2008年5月に書かれたブログ記事が新しい順に公開されています。

    前のアーカイブは2008年4月です。

    次のアーカイブは2008年6月です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。