KUMA TYPE

猫、パソコン、プログラム、映画、ドラマ、アニメ、perl、etc.

【ドラマ】『SUPERNATURAL スーパーナチュラル シーズン1』の感想【おすすめ】

SUPERNATURAL / スーパーナチュラル 〈ファースト・シーズン〉コンプリート・ボックス [Blu-ray]

GyaO!でドラマ『スーパーナチュラル シーズン1』を視聴した感想。2005年からアメリカで放映されているドラマシリーズ。ジャンルは、アクション、ホラー、サスペンス。

SUPERNATURAL スーパーナチュラル シーズン1|無料動画 GyaO![ギャオ]|ドラマ・アジア

化け物退治を生業にしているウィンチェスター一家のお話。ウィンチェスター家の主であるジョンの妻メアリーが『何かわからない物』に殺害される。これによりジョンは化け物退治を生業にするようになる。息子のディーンとサムも子供の頃から化け物退治の技術をジョンに叩き込まれながら育てられるが、サムはそんな生活がいやで家をでて大学生活をエンジョイしていた。しかし、ある日兄のディーンがサムの元を訪れ父ジョンが行方不明になったことを告げる。

面白い。おすすめ。アクションあり、ホラーあり、サスペンスありで話に引き込まれる。クオリティーも映画を見ているようである。話自体には1本大きな筋が通っているが、基本的には1話完結のロードムービー仕立て、アメリカさんお得意のロードムービー仕立てなんですよ。なのでプロット的には『トラック野郎B.J』等の時代から変わらないコンビで事件を解決していくというおはなしです。これはもうアメリカのドラマのお約束と言ってもいい感じで、見た目は最新の技術をつかった最近の映画の様な感じなのですがその根底には『アメリカン・ヒーロー』や『ナイトライダー』の頃から変わらないコンビで事件を解決していくという王道中の王道だったりします。そこに、いまどきの新しい要素を組み込んで面白い作品になっています。

なんだか公式サイトを見るとマッドハウスによってアニメ化されているみたいですがちょっと予告編見たけど、オリジナル作品なら良かったのかも知れないが、実写版を見た後だと実写よりいいとは思わなかった。実写で既に完成されているのにアニメ化する意味が分からない。アニメ化する必要性を全く感じなかった。なんか見ていると恥ずかしくなってくる。

日本のアニメ作品が邦画で実写化するとがっかり化するのと逆のパターンになっている。

タグ : , , ,

[Windows XP]検索機能が機能しない件

最近、エクスプローラ(Explorer)の検索機能を利用してもファイルが探せなくなっていたので、「あれ?元々こんな感じだったっけ?」といった感じでスルーしていましたが、やっぱりおかしいと思ってちゃんと調べてみました。もう少し正確に言うと、[ファイルとフォルダ全て]で検索したときに[ファイル名のすべて又は一部]と[ファイルに含まれる単語または句]を指定してファイルを絞り込んで検索したときに[ファイルに含まれる単語または句]で指定した単語が含まれるファイルが存在するにもかかわらず検索にヒットしないという状態になっていました。幸い秀丸エディタのgrep機能が優秀なのでそちらを使って検索していましたが今回ちゃんとエクスプローラの方の問題を解決することにしました。


本来の動作

具体的には下の手順で検索しました。

20100489
(クリックで元のサイズで表示)

[ファイル名のすべて又は一部]に『*.*』ワイルドカード(全てのファイルを対象)[ファイルに含まれる単語または句]に『占い』、[探す場所]に『猫』を指定して[検索]をクリック。

search01

本来であれば下のように4つのファイルがマッチするはずのところが全くヒットしない状態になっていました。

20100491
(クリックで元のサイズで表示)


解決方法

下記のリンク先のマイクロソフトサポートオンラインの解決方法を行なうことで解決しました。方法は2通り示されていましたが、私は方法2を行って解決しました。方法2の方が手軽に実行出来ると思います。

"ファイルに含まれる単語または句" 検索条件が機能しない

下に具体的な方法2のやり方を画像付きで分かりやすく解説します。

  1. [スタート]ボタンをクリックして、メニューから[検索]をクリックします。
    20100481

    20100480
    (クリックで元のサイズで表示)

  2. 検索画面が開いたら、[設定を変更する]をクリック。
    search02
  3. [検索コンパニオンをどのように使いますか?]の画面で[インデックスサービスを使う(ローカル検索を早くする)]をクリック。
    20100492
  4. [インデックスサービス]の画面で[インデックスサービスの設定を変更する(詳細)]をクリックする。※インデックスサービスを有効にする必要は有りません。
    20100493
  5. [インデックス サービス]の画面が表示されるのでツールバーの[コンソールツリーの表示/非表示]のアイコンをクリックします。
    20100496
    クリックすると下のようにコンソールツリーが表示されます。20100498
  6. コンソールツリーの[インデックスサービス – ローカルコンピュータ]を選択してマウスの右クリックで表示されるメニューから[プロパティ]を選択クリックします。
    20100499
  7. [インデックス サービス – ローカル コンピュータのプロパティ]の画面が開いたら、[未登録の拡張子のファイルにインデックスを付ける]にチェックを入れて[OK]ボタンをクリックします。
    20100500
  8. これで設定は完了です。
    最初に書いた様に期待したとおりに検索出来るようになりました。
    今まで設定の為に開いた画面などはすべてとじて結構です。

タグ : ,

Location::GeoToolを使って測地系変換ウェブアプリを作ってみた。

20100479

Location::GeoToolを使って日本測地系と世界測地系を相互に変化するウェブアプリを作ってみました。

何気にajaxとか使って非同期通信でページのリロードしないようにしたり

MovableType(MT)のウェブページ機能を使って専用のページを作ってみたり(通常のブログのエントリーのページとは別に独立したページを作る機能)

と色々遊んでいます。

測地系変換 – KUMA TYPE

タグ : , , , , ,

JavaScriptとFlashを利用してクリップボードへのコピー機能を提供するzeroclipboard

よく、ブログパーツやアフィリエイトのサイトなどでタグを取得する際にクリップボードにコピーするというボタンがあってそれをクリックするとクリップボードにデータをコピーしてくれるという機能があったりします。

IEだとclipboardData.getDataやclipboardData.setDataを使ってクリップボードにデータを設定したりクリップボードからデータを取得したり簡単に出来るんですが、その他のブラウザではこの機能はつかえません。

そこで、JavaScriptとFlashを組み合わせて利用しクリップボードにデータを設定するというライブラリがいくつか存在するのですが、そのなかの一つzeroclipboardを使って実際にやってみました。最近はGoogle Chromeを使うことが多いので自作のウェブアプリなどでクリップボードにコピーする機能が使えなくて不便でした。

実際に下の『IPアドレス・ツールズ』に組み込んでみたところGoogle ChromeでもCOPYボタンが使えるようになって便利になった。
しかし、id毎にzeroclipboardを使うためのオブジェクトを作成せねばならず。関数化して汎用的に使えないのでソースが大きくなってしまうのが難点。

あと残念なのはペースト機能がないこと。クリップボードに関してはブラウザ共通の規格がほしいですね。

20100477

IPアドレスツールズ – KUMA TYPE

設置自体は難しくないので下のサイトの実際のコードを見れば分かると思います。

Instructions – zeroclipboard – Project Hosting on Google Code

軽く説明しておくと
上記のサイトからzeroclipboardをダウンロードして展開後、使いたいページのディレクトリにアップロードしておきます。

ZeroClipboard.jsの下の赤字の部分にZeroClipboard.swfへのパスを書いて上書きアップロードします。

 

// Simple Set Clipboard System
// Author: Joseph Huckaby

var ZeroClipboard = {
    version: "1.0.7",
    clients: {}, // registered upload clients on page, indexed by id
    moviePath: ‘https://blog.kumacchi.com/gagagagaga/country/zeroclipboard/ZeroClipboard.swf’, // URL to movie
    nextId: 1, // ID of next movie

 

あとは下のような感じで利用します。

<html>
<body>
<script type="text/javascript" src="./zeroclipboard/ZeroClipboard.js"></script>
<input type="text"   name="text01"   value="あいうえお" id="copy_text01">
<input type="button" name="button01" value="コピー"     id="copy_button01">
<script language="JavaScript">
    var clip = new ZeroClipboard.Client();
    clip.setText( copy_text01.value );
    clip.glue( ‘copy_button01’ );
</script>
</body>
</html>

 


動作サンプル

タグ : ,

【perlメモ】測地系変換モジュール『Location::GeoTool』のサンプル

測地系には大まかに日本で使われている日本測地系 北緯dd°mm.ss 東経dd°mm.ss(ddd.mm.ss.nnn)という形式と世界測地系(ddd.dddddd…)という形式です。

Googleマップは世界測地系、マピオンやYahoo!は日本測地系だったりするのでお互いのデータを相互に利用する場合には変換が必要になります。

perlのCpanモジュール『Location::GeoTool』を利用して実際に変換してみました。Location::GeoToolのサンプルコードをそのまま流用しています。

元の座標は例の尖閣諸島の衝突位置を日本測地系から、世界測地系に変換してみました。

データの出力フォーマットが色々変えられるので色々表示しています。マピオンのURL用の出力フォーマットなどもあって工夫次第で色々便利に使えそうです。

Location::GeoTool – search.cpan.org

use Location::GeoTool;
  # New constructor (Options can be set)
  my $oGeo = Location::GeoTool->new({changeMyself => 0,enableWantarray => 0});
#  $oGeo->set_coord(‘35.39.24.491′,’139.40.10.478′,’tokyo’,’gpsone’);

  $oGeo->set_coord(‘26.01.07′,’123.37.1′,’tokyo’,’gpsone’);
# $oGeo->set_coord(‘26.0186111111111′,’123.616944444444′,’wgs84′,’degree’);

  # Old constructor
#  my $oGeo = Location::GeoTool->create_coord(‘35.39.24.491′,’139.40.10.478′,’tokyo’,’gpsone’);

  my @mapion = $oGeo->format_mapion->array;
   # => ("35/39/24.491","139/40/10.478")
    foreach my $g (@mapion){
        print "format_mapion:$g\n";
    }
    print "mapion lat:".$oGeo->format_mapion->lat,"\n";
    print "mapion long:".$oGeo->format_mapion->long,"\n";

  my $oGeoW = $oGeo->datum_wgs84;
    foreach my $g (@oGeoW){
        print "datum_wgs84:$g\n";
    }
    print "degree lat:".$oGeo->format_degree->lat,"\n";
    print "degree long:".$oGeo->format_degree->long,"\n";

  my @wgs84 = ($oGeoW->lat,$oGeoW->long);
   # => ("35.39.36.145","139.39.58.871")
    foreach my $g (@wgs84){
        print "wgs84:$g\n";
    }

  my @degree_wgs84 = $oGeoW->format_second;
   # => (128376.14524…,502798.87076…)
    foreach my $g (@degree_wgs84){
        print "degree_wgs84:\n";
        foreach my $x(keys %{$g}){
            print "$x = ${$g}{$x}\n";
        }
    }

実行結果

F:\kumacchi\MyProgram\perl\sample\GeoTool>perl geotool01.pl
format_mapion:26/01/07.000
format_mapion:123/37/01.000
mapion lat:26/01/07.000
mapion long:123/37/01.000
degree lat:26.0186111111111
degree long:123.616944444444
wgs84:26.01.21.401
wgs84:123.36.55.337
degree_wgs84:
source =
def_format = gpsone
out_datum = wgs84
defaultFormat = gpsone
alt = +000000
lat = 26.01.07
cache_long =
out_format = second
cache_lat =
changeMyself = 0
long = 123.37.1
defaultDatum = wgs84
def_datum = tokyo
enableWantarray = 0

F:\kumacchi\MyProgram\perl\sample\GeoTool>

測地系 – Wikipedia

タグ : ,

昔HSPLetで作ったウェブアルバムがGoogle Chromeで動かないので調べてみた。

ウェブアルバム – KUMA TYPE

上記で昔HSPLetで作ったウェブアルバムがGoogle Chromeで表示されないので調べてみました。

下のようなアルバムなんですが、普通に画像を見るモードとスライドショー機能があります。

20100475

メモがある場合は、memoというアイコンが表示されているので画面上で右クリックするとメモが表示されるようになっています。

20100476

結局、objectタグではなくappletタグを使えばどのブラウザ(IE,Firefox,Chrome)でも表示されることがわかりましたので、タグをappletタグに置き換えたhtmlに差し替えました。

実際には下の様になりました。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!– $Id: template.html,v 1.4 2006/01/22 16:00:59 Yuki Exp $ –>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" href="album.css" type="text/css">
<title>REOTAN’S GALLERY</title>

</head>
<body>
<script type="text/JavaScript">
<!–
self.moveTo(0,0);
self.resizeTo(screen.availWidth,screen.availHeight);
self.focus();
//–>
</script>
<div id="box">
<applet code="hsplet.Applet.class" width="1024" height="600">
<param name="archive" value="album.jar,hsplet.jar" />
<param name="classid" value="java:hsplet.Applet.class" />
<param name="startClass" value="start" />
<script type="text/javascript">
<!–
var now = new Date();
document.write(‘<param name="cmdline" value="’+ now.toLocaleString() + ‘" />’);
// –>
</script>
</applet>

</div>
</body>
</html>

 

参考:

タグ : , ,

【perlメモ】Algorithm::NaiveBayesモジュールを使ったスパム判定

上記の記事を踏まえて、スパムフィルタリングの処理を作ってみた。


準備

まず、spamというフォルダとhamというフォルダを作成。

spamフォルダの中にスパムメール数十通分のテキスト(shiftjis)を格納。
hamフォルダの中に普通のメール数十通分のテキスト(shiftjis)を格納。

スパム情報を格納したテキストファイル(spam.txt)を作成するスクリプト
spam.pl(utf8)

use Strict;
use Warnings;
use utf8;
use Encode qw/from_to decode_utf8 encode_utf8 encode decode/;
use Encode::Guess qw/ascii euc-jp 7bit-jis cp932/;
use Text::Kakasi;

my %ha =();
opendir(DIR,’./spam’);
while(my $file = readdir(DIR)){
    next if($file eq ‘.’);
    next if($file eq ‘..’);
    print "file = [$file]\n";

    $/ = undef;
    open(FILE,"./spam/$file");
    my $text = <FILE>;
    close(FILE);
    $/ = "\n";

    $text = decode("Guess",$text);

    $text =~ s/\x0a//g;
    $text =~ s/\x0d//g;
    $text =~ s/ / /g;

    $text = encode(‘cp932’,$text);

    my $res = Text::Kakasi::getopt_argv(‘-w’);
    my $str = Text::Kakasi::do_kakasi($text);

    my @a = split(/ /,$str);
    foreach my $key (@a){
        my $utf8 = decode(‘cp932’,$key);
        next if(length($utf8) < 2);
        next if(length($utf8) > 30);
        $ha{"$utf8"}++;
    }

}
closedir(DIR);

open(FILE,">spam.txt");
binmode FILE,’:utf8′;
foreach my $key(sort {$ha{$b} <=> $ha{$a}} keys %ha){
    print FILE join("\t",$key,$ha{$key},"\n");
}
close(FILE);

実行結果

F:\kumacchi\MyProgram\perl\sample\Bayes>perl spam.pl
file = [Export000000.eml]
file = [Export000001.eml]
file = [Export000002.eml]
file = [Export000003.eml]
file = [Export000004.eml]
file = [Export000005.eml]
file = [Export000006.eml]
file = [Export000007.eml]
file = [Export000008.eml]
file = [Export000009.eml]
file = [Export000010.eml]
file = [Export000011.eml]
file = [Export000012.eml]
file = [s1.txt]

F:\kumacchi\MyProgram\perl\sample\Bayes>

作成されたスパム情報を格納したファイルの抜粋。語と出現回数をTABで区切ったテキストを並べたファイルです。

spam.txt

メール    13   
!!    13   
2010/11/11),    13   
-*-    12   
男性    12   
yahoo.co.jp    12   
人妻    12   
to    12   
融資    12   
and    11   
登録    10   
you    10   
下さい    10   
Thu,    10   
など    10   
相手    10   

(以下省略)

 

同様に以下のスクリプトでham.txtを作成。

ham.pl

use Strict;
use Warnings;
use utf8;
use Encode qw/from_to decode_utf8 encode_utf8 encode decode/;
use Encode::Guess qw/ascii euc-jp 7bit-jis cp932/;
use Text::Kakasi;

my %ha =();
opendir(DIR,’./ham’);
while(my $file = readdir(DIR)){
    next if($file eq ‘.’);
    next if($file eq ‘..’);
    print "file = [$file]\n";

    $/ = undef;
    open(FILE,"./ham/$file");
    my $text = <FILE>;
    close(FILE);
    $/ = "\n";

    $text = decode("Guess",$text);

    $text =~ s/\x0a//g;
    $text =~ s/\x0d//g;
    $text =~ s/ / /g;

    $text = encode(‘cp932’,$text);

    my $res = Text::Kakasi::getopt_argv(‘-w’);
    my $str = Text::Kakasi::do_kakasi($text);

    my @a = split(/ /,$str);
    foreach my $key (@a){
        my $utf8 = decode(‘cp932’,$key);
        next if(length($utf8) < 2);
        next if(length($utf8) > 30);
        $ha{$utf8}++;
    }
}
closedir(DIR);

open(FILE,">ham.txt");
binmode FILE,":utf8";
foreach my $key(sort {$ha{$b} <=> $ha{$a}} keys %ha){
    print FILE join("\t",$key,$ha{$key},"\n");
}
close(FILE);

実行結果

F:\kumacchi\MyProgram\perl\sample\Bayes>ham.pl
file = [Export000000.eml]
file = [h1.txt]
file = [mail_ham1.txt]

F:\kumacchi\MyProgram\perl\sample\Bayes>

できかがったham.txtの抜粋

ham.txt

XP    182   
製品    129   
.NET    124   
Windows    109   
キャンペーン    107   
Office    106   
マイクロソフト    102   
Microsoft    97   
情報    90   
2002    82   
Visual    77   
ユーザー    76   
2001    73   
登録    72   
電子メール    69

(以下省略)   

 


スパム判定プログラム

上記で作成したデータを元にスパム判定を行なうスクリプト

#!/usr/bin/perl
use Strict;
use Warnings;
use utf8;
use Algorithm::NaiveBayes;
use Encode qw/from_to encode decode decode_utf8/;
use Encode::Guess qw/ascii euc-jp 7bit-jis cp932/;
use Text::Kakasi;
use Data::Dumper;
{
    no warnings ‘all’;
    package Data::Dumper;
    sub qquote { return shift; }
}
$Data::Dumper::Useperl = 1;

my $nb = Algorithm::NaiveBayes->new;

my %ham = &getHash("ham.txt");
$nb->add_instance(attributes => {%ham},    label => ‘ハ ム’
    );

my %spam = &getHash("spam.txt");
$nb->add_instance(attributes => {%spam},label => ‘スパム’);

$nb->train;

my %mail = &getTexthash($ARGV[0]);
my $result = $nb->predict(attributes => {%mail});

my $dump = Dumper($result);

binmode STDOUT,’:encoding(cp932)’;
print $dump;

my $cnt=0;
foreach my $key(sort { ${$result}{$b} <=> ${$result}{$a} } keys %{$result}){
    $cnt++;
    print "$cnt $key = ${$result}{$key}\n";
}

#====================================================================
#
#====================================================================
sub getHash{
    my $file = shift;

    my %hash = ();

    open(FILE,$file);
    while(<FILE>){
        chomp;
        my ($key,$num) = split(/\t/);
        $hash{"$key"} = $num;
    }
    close(FILE);

    %hash;
}

#====================================================================
#
#====================================================================
sub getTexthash{
    my $file = shift;

    print $file,"\n";

    my %hash = ();

    $/ = undef;
    open(FILE,$file);
    my $text = <FILE>;
    close(FILE);
    $/ = "\n";

    $text = decode("Guess",$text);

    $text =~ s/\x0a//g;
    $text =~ s/\x0d//g;
    $text =~ s/ / /g;

    $text = encode(‘cp932’,$text);

    my $res = Text::Kakasi::getopt_argv(‘-w’);
    my $str = Text::Kakasi::do_kakasi($text);

    my @a = split(/ /,$str);
    foreach my $key (@a){
        my $utf8 = decode(‘cp932’,$key);
        next if(length($utf8) < 2);
        next if(length($utf8) > 30);
        $hash{"$utf8"}++;
    }
    %hash;
}

適当なスパムメールのファイルを渡してスパム判定してみたところ

F:\kumacchi\MyProgram\perl\sample\Bayes>perl bayes03.pl mail_spam02.txt
mail_spam02.txt
$VAR1 = {
          スパム => 1,
          ハ ム => ‘4.75135128115554e-038’
        };
1 スパム = 1
2 ハ ム = 4.75135128115554e-038

F:\kumacchi\MyProgram\perl\sample\Bayes>

適当は普通のメールで判定してみたところ。

F:\kumacchi\MyProgram\perl\sample\Bayes>perl bayes03.pl mail_ham.txt
mail_ham.txt
$VAR1 = {
          スパム => ‘0.136732677614051’,
          ハ ム => ‘0.990607982439316’
        };
1 ハ ム = 0.990607982439316
2 スパム = 0.136732677614051

F:\kumacchi\MyProgram\perl\sample\Bayes>

ちゃんと判定出来ています。帰ってくる値は0~1の値です。

『4.75135128115554e-038』は一見大きな値に見えますが、数値の最後に『e-038』と付いているのは指数表示なので、4.75135128115554×10の-38乗となり限りなく小さな値になります。

掲示板やブログに組み込んでみたいですね。

参考:

タグ : , ,

ゲームで英語を学べるlivedoor英語学習

livedoor英語学習 powered by ココネ

ゲームしながら英語を学べるlivedoor英語学習をやってみた。なかなか面白い。英語わからないので少しでも英単語とか覚えられるといいな。ユーザー登録しなくてもとりあえず遊べるので、英語学習したい人は一度試してみてはいかがですか?

ゲームは何種類かあって、下は語を並べて正しい文を作るファクトリースクランブルというゲーム。

20100465

20100466

20100467

ゲームをクリアすると下のようにYOU WINの画面になります。

20100468

その後成績の画面になって

20100469

最後は、回答結果の一覧が表示されます。

20100470
(クリックで拡大表示)

スイカパニックは、日本語から正しい英単語を選ぶゲーム。20100471

表示された日本語に対して正しい英単語をクリックします。

20100472

20100473

クリアすれば下の画面になります。

20100474

 

この後他のゲーム同様に成績の画面、回答一覧の画面になります。

他にも数種類のゲームがあります。

ゲームだけでなく動画やコミュニティ等、色々なコンテンツがあるので結構楽しめます。

こういう英語学習系のゲームコンテンツのサイトってもっといっぱいあるといいですよね。

とにかく英単語を遊びながらいっぱい覚えられるサイトが個人的には欲しいです。このサイトのコンテンツを遊びきったらどれくらい覚えられるのか興味があります。暇を見て時々遊んでみたいと思います。

タグ : ,

【映画】『プレデター2』の感想

プレデター2 [DVD]

GyaO!で映画『プレデター2』を視聴した感想。1990年公開のアメリカ映画。ジャンルはSF、アクション。前作の3年後の公開。

プレデター2|無料動画 GyaO![ギャオ]|映画


ストーリー

前作の3年後の1990年の公開ではあるが、全開のプレデター襲来から10年後の1997年のロサンゼルスが舞台という設定になっている。ロサンゼルス市警のマイク警部。麻薬密売組織との銃撃戦を行っている最中にプレデターに獲物として目をつけられる。前作同様プレデターとの壮絶な闘いが展開される。


感想

まあまあ、面白い。前作と舞台は変われど基本的に同じ構成なので前作ほどのインパクトはない。主演は黒人俳優のダニー・グローヴァー映画『リーサル・ウェポン』シリーズのリッグス刑事の相棒のマータフ刑事役の人ですね。そんなにひどくはないけど色々前作の人気に任せた感じでストーリーの詰めの甘さが感じられる。


ネタバレ

牛肉が大好きで牛肉加工所に通うプレデターというのはちょっとどうなんだろう。あんな立派な宇宙船できてるんだから、ちゃんと食べ物位あるだろうに、かなり設定に違和感を感じる。

FBIバカス。赤外線しか見えないというのはわかるが、あれだけ進んだ文明なんだから赤外線以外を見る手段も持ってることぐらい小学生でも予想しそうなもんだとおもうんだけど。全開特殊部隊が全滅しかかったのに同じような人数でFBIだけで捕まえようとかちょっと無謀すぎる。

プレデターが前作に比べて弱体化してる感じがする。格闘戦で人間にやられちゃうとかどうなのよ。それなりにハラハラするけど格闘戦の最後の最後にリアリティーがない。前作のほうが追い詰められ感があるとおもう。

評価:評価:3.0/5.0

プレデター2 – Wikipedia

ダニー・グローヴァー – Wikipedia

タグ : , , , ,

【perlメモ】perl5.8系utf8関連の自分用まとめ

とにかく慣れるまでめんどくさい。最初は訳がわからないが判っててくれば便利。jcode.plやjcode.pm時代より面倒でとっつきにくいのはたしか。こういう事を気にしないでコードを書ける日が来るといいな。

基本的には下の記事を抑えておけば大丈夫なはず。

最近はよほど古いソースのメンテでもなければutf8で書くと思うので、下の3行はお決まり。

use strict;
use warnings;
use utf8;

必要に応じて下の様にしたりする。

use strict;
use warnings;
use utf8;
use Encode qw/decode_utf8 encode_utf8 from_to/;
use Encode::Guess qw/ascii euc-jp shiftjis 7bit-jis/;

 

$ret = utf8::is_utf8($str);

utf8フラグが立っているかチェック。utf8フラグonの場合trueを返す。

utf8::encode($str);

utf8フラグをoffする。引数を直接変更する。

utf8::decode($str);

utf8フラグをonする。引数を直接変更する。

$ret = Encode::encode(“euc-jp”,$str);

utf8フラグがonの文字列を指定した文字列に変換しutf8フラグをoffにする。
utf8フラグがonの内部文字列(utf8)を指定した文字コードに変換しutf8フラグをoffする。

$ret = Encode::decode(“cp932”,$str);
$ret = Encode::decode(“Guess”,$str);

指定した文字コードで、指定した文字のutf8フラグをonにする。※文字コードの変換をしないことに注意。ここを勘違いするとハマる。
指定した字コード、指定した文字コードの文字列から内部コード(utf8)に変換してutf8フラグをonする。

Encode::from_to($str,”utf8”,”euc-jp”);

utf8フラグがoffの指定した文字列を指定した文字コードから文字コードへ変換する。引数が直接変化する。utf8フラグは変化しない。

$ret = Encode::encode_utf8($str);

指定した文字列のutf8フラグをoffする。

$ret = Encode::decode_utf8($str);

指定した文字列のutf8フラグをonする。既にonになってる部分についてはそのままコピーされる。不正な文字については\x{fffd}に置き換える。

※utf8::encodeとEncode::encodeを混同しないようにする。
とくにuse Encode qw/encode/;などして、パッケージ名を省略している場合には注意。

※セキュリティを考慮して内部のリテラルな文字列にはdecode、外部からの入力には不正な文字を[\x{fffd}]に置き換えるdecode_utf8を使う。なるべくdecode_utf8を使っとけばOK?

 


Encode::Guess

Jcodeのように元の文字コードがわからない状態からの文字コードの自動変換はEncode::Guessを使えば可能であるが、文字列が短いと誤認識しやすい。判定する場合例えば単語ではなくページ全体を渡して変換したほうが失敗しない。なるべくGuessに頼らない方が無難。どうしても単語単位でやる必要があるならJcode.pmを使ったほうがいいかも知れない(非推奨)。

use Encode::Guess qw/ascii euc-jp shiftjis 7bit-jis/;

Encode::from_to($str,’Guess’,”euc-jp”);

上記の場合[Use of uninitialized value]エラーが出る場合

use Encode::Guess qw/ascii euc-jp shiftjis 7bit-jis/;

$str = decode("Guess",$str);

こっちの方がいいかも


Wide caractor in print

test01.pl(utf8)

#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;

print "あいうえお\n";

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test01.pl
Wide character in print at test01.pl line 7.
縺ゅ>縺・∴縺・

F:\kumacchi\MyProgram\perl\sample\utf8>

Wide character問題はこう直す。
test02.pl(utf8)

#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;

binmode STDOUT,’:utf8′;
print "あいうえお\n";

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test02.pl
縺ゅ>縺・∴縺・

F:\kumacchi\MyProgram\perl\sample\utf8>

ついでにcp932(マイクロソフト拡張Shiftjis)に変換して出力するにはこう直す。
test03.pl(utf8)

#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;

binmode STDOUT,’:encoding(cp932)’;
print "あいうえお\n";

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test03.pl
あいうえお

F:\kumacchi\MyProgram\perl\sample\utf8>

 

ファイルに出力するときも上記と同様。

test04.pl(utf8)

#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;
use Encode;

$/ = undef;
open(FILE,"test03.pl");
my $str = <FILE>;
close(FILE);
$/ = "$\n";

$str = Encode::decode_utf8($str);

binmode STDOUT,’:encoding(cp932)’;
print $str;

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test04.pl
#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;

binmode STDOUT,’:encoding(cp932)’;
print "あいうえお\n";

F:\kumacchi\MyProgram\perl\sample\utf8>

utf8フラグをonにした状態で読み込む。

#!/usr/bin/perl
use Strict;
use Warnings;
use utf8;

$/ = undef;
open(FILE,"<:utf8","test03.pl");
my $str = <FILE>;
close(FILE);
$/ = "$\n";

binmode STDOUT,":encoding(cp932)";
print $str;

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test05.pl
#!/usr/bin/perl

use Strict;
use Warnings;
use utf8;

binmode STDOUT,’:encoding(cp932)’;
print "あいうえお\n";

F:\kumacchi\MyProgram\perl\sample\utf8>

 

読み込むファイルがShiftjis(CP932)の時utf8に変換してutf8フラグをonして読み込む。

test06.pl

#!/usr/bin/perl
use Strict;
use Warnings;
use utf8;
use Encode;

$/ = undef;
open(FILE,"<:encoding(cp932)","shiftjis.txt");
my $str = <FILE>;
close(FILE);
$/ = "$\n";

if(utf8::is_utf8($str)){
    print "—– utf8 flag on\n";
}

binmode STDOUT,":encoding(cp932)";
print $str;

実行結果

F:\kumacchi\MyProgram\perl\sample\utf8>perl test06.pl
—– utf8 flag on
あいうえお
かきくけこ
さしすせそ

F:\kumacchi\MyProgram\perl\sample\utf8>

タグ :

 
© KUMA TYPE