Perl・Javascriptメモ (useWill.com)TW↑B
 
 
 


■■■記事一覧■■■
2014/04/08自分が書いた正規表現が正しいか、その場でチェックできるサイト「RegExr」
2014/01/18Twitterが1月15日頃から仕様変更でAPI呼び出しがSSLオンリーに。PerlのNet::Twitterの修正方法(23)
2013/12/21PerlでGPUを使って演算を行うためのモジュール「PerCUDA」(50)
2013/06/13TwitterがAPI1.0を廃止。動かなくなったPerlスクリプト(Net::Twitter使用)を再び動かす方法
2013/02/263月5日から既存Twitter API(ver.1.0)が使用不能に。新APIはアクセスポイントも変更
2012/10/07Perlで文字列の文字コードを判別し、断定出来ない場合は諦める方法
2012/08/02PerlのNet::Twitterモジュールでtimelineに含まれる日付文字列を日本時刻のエポック時刻に変換
2012/02/19レンタルサーバーで動くPerlでも使える暗号化モジュール「RC4.pm」
2012/02/07UTF8で保存出来て、Perlのサブルーチン一覧、変数一覧がサイドバーに表示出来るフリーのエディター「ez-HTML」(2)
2012/01/21Webサイトの表示を「パソコン、iPhone、Android、iPadなど」で切り替える方法(21)
2011/07/24Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法
2011/05/29Windowsパソコン+タスクマネージャーでPerlスクリプトを繰り返し実行する時の管理方法
2011/02/05PerlでWindowsのプロセス一覧を取得し、特定のプロセスを終了させる方法(4)
2010/10/10PerlでWebアクセスし、ヘッダー情報やリダイレクト先を知る方法メモ
2010/04/17Perl 5は生き返った! 新たな前進を再開したPerl(1)
2010/03/28Javascriptでshiftjisやeuc-jpエンコードなども可能なescape、unescape関数ライブラリ「ecl.js」
2009/11/09SQLiteとPerlで学ぶデータベースの基礎(6)
2009/11/03PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法2
2009/10/01PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法(7)
2009/09/06Perlでよく使用する関数・標準モジュール(サンプル付き)
2005/06/04リナザウにApacheとPerlをインストールした
2005/06/04SL-C1000にApacheとPerlをインストールしてcgiを動かすときのメモ
2008/01/11Perl for Windows Mobileに関する情報
2008/04/30Perl で匿名クラスをつくる
2008/09/01Perl FAQ in JPAN
2008/09/04Perlの悩み
2008/09/30Perl 5.10で使えるUnicode 規格で定義されている文字種の名前
2008/10/28形態素解析
2009/08/03ActivePerlのPPMを認証付きproxyの内側で動かす(2)
2009/07/26ActivePerl付属のGDが相変わらず2バイトコード対応でコンパイルされていない(1)



2014/04/08

自分が書いた正規表現が正しいか、その場でチェックできるサイト「RegExr」

これは使える。2バイト文字にも対応してます。

↑BTW
   コメント書き込み・トラックバック

2014/01/18

Twitterが1月15日頃から仕様変更でAPI呼び出しがSSLオンリーに。PerlのNet::Twitterの修正方法

うちのサイトの色んな所が止まってました。

PerlのNet::Twitterを使っている人は
Net::Twitter->new(ssl=>1,・・・・・);
を追記することで動きます。今後のバージョンではデフォルトでSSL経由になるとのこと

↑BTW
   コメント書き込み・トラックバック(23〜)

2013/12/21

PerlでGPUを使って演算を行うためのモジュール「PerCUDA」

普通に計算させると10分以上かかる演算を0.3秒で終わらせるデモが紹介されています。

↑BTW
   コメント書き込み・トラックバック(50〜)

2013/06/13

TwitterがAPI1.0を廃止。動かなくなったPerlスクリプト(Net::Twitter使用)を再び動かす方法

最新のNet::Twitterをインストールして
my $twit = Net::Twitter->new(traits=['API::REST','OAuth'],・・・・);
とか書いてある部分を
my $twit = Net::Twitter->new(traits=>[qw/API::RESTv1_1 WrapError/],・・・・);

に変えたら動きました。

参考:

↑BTW
   コメント書き込み・トラックバック

2013/02/26

3月5日から既存Twitter API(ver.1.0)が使用不能に。新APIはアクセスポイントも変更

迷惑過ぎる。RSS廃止とか、Tweetを表示する時はアイコンとタイムスタンプとリプライボタン表示を義務付けとか。

↑BTW
   コメント書き込み・トラックバック

2012/10/07

Perlで文字列の文字コードを判別し、断定出来ない場合は諦める方法
Tips for judging character code in Perl

use Encode::Guess qw/sjis euc-jp/;
my $enc = guess_encoding($判別するテキスト);
if (ref(\$enc) eq 'SCALAR'){諦める場合}
else{1つに絞れた場合
my $euc2=Encode::Guess->guess($判別するテキスト)->name;
if ($enc2 eq 'utf8'){・・・・・};
if ($enc2 eq 'euc-jp'){・・・・・};
}

・guess_encodingは失敗した場合はスカラーで「utf or shift-jis」とか「no appropriate encode」とか返すが、成功した場合に何返しているか分からない。
・guessは結果を事前にリストした文字列で返してくれるが判別に失敗するとdieする。
なので仕方なく2回判別しています。動けばいいです。

↑BTW
   コメント書き込み・トラックバック

2012/08/02

PerlのNet::Twitterモジュールでtimelineに含まれる日付文字列を日本時刻のエポック時刻に変換

use HTTP::Date;しておく
#新しいもの200件分のタイムラインを取得
my $result_ref = $twit->friends_timeline({count=>200});

foreach my $hash_ref (@$result_ref){
  #ユーザー名
  print $hash_ref->{'user'}{'screen_name'};
  #コメント
  print $hash_ref->{'text'};
  #書き込まれた日時(日本時刻)
  #もともと取得出来る日時文字列はこんな感じ→Wed Aug 01 23:25:48 +0000 2012
  #このフォーマットだとHTTP::Date::str2timeでparse出来ないのでちょっと加工「+0000」が邪魔
  $hash_ref->{'created_at'}=~ s/\+0000 //g;
  #エポックタイムに変換、日本時刻にするために9時間プラス
  $time=HTTP::Date::str2time($hash_ref->{'created_at'})+3600*9;
  print $time;
  }

↑BTW
   コメント書き込み・トラックバック

2012/02/19

レンタルサーバーで動くPerlでも使える暗号化モジュール「RC4.pm」

個人的メモ

pure perlで出来たモジュールなのでリンク先のRC4.pmをスクリプトと同じディレクトリに置いて「use RC4」で使えます。暗号化したものを同じパスコードでもう一度処理すると元に戻るっぽい。

暗号化するとバイナリになるので
■暗号化
my $RC4 = Crypt::RC4->new('password');
暗号化されたテキスト([0-9a-f]) = unpack("H*",$RC4->RC4( 元のテキスト ));

■符号化(元に戻す)
my $RC4 = Crypt::RC4->new('password');
元のテキスト = $RC4->RC4( pack("H*",暗号化されたテキスト));

って使ってます。使い方はこのへんも参考に。

↑BTW
   コメント書き込み・トラックバック

2012/02/07

UTF8で保存出来て、Perlのサブルーチン一覧、変数一覧がサイドバーに表示出来るフリーのエディター「ez-HTML」

5年ぐらい探していた機能を持つソフトを発見。
Perl Editorから卒業する時がついに来たか!?

↑BTW
   コメント書き込み・トラックバック(2〜)

2012/01/21

Webサイトの表示を「パソコン、iPhone、Android、iPadなど」で切り替える方法

うちのサイトをiPhoneやスマホなどの画面の小さな端末で見た場合に少しでも見やすいように、右側のメニューが下に回り込むようにしてみました。どうでしょうか?

以下、方法に関する個人的メモ。
切り替えの判断は「ブラウザの横幅で判定」することにしました。
JavaScriptで取得出来るブラウザの横幅の数値には以下の4種類がある。

  • (1) window.innerWidth
  • (2) document.documentElement.clientWidth
  • (3) document.body.clientWidth
  • (4) window.outerWidth
しかしやっかいな事に、取得できるパラメーターはブラウザによって異なる
(1)(2)(3)(4)
Firefox3.6取得可取得可取得可取得可
IE8undef0(ゼロ)取得可undef
Firefox(Android)取得可取得可取得可取得可
Dolphon Browser(Android)取得可取得可取得可取得可
Android純正ブラウザ(横向き)981980980取得可
iPhone4(横向き)981980980480
iPhone4(縦向き)980980980320
iPad(横向き)9819809801024
iPad(縦向き)980980980768
iPhone3GS(横向き)268?464?
iPhone3GS(縦向き)320?304?
BAUM(ケータイモード)231undef231undef
BAUM(デスクトップモード)231undef231undef

もうカオスorz。しかも(3)はheadに書いても取得出来ずbodyに記述した時のみ取得可能
そこで試行錯誤の結果、うちのサイトではbody部分に
-------------------------------
var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var width2= window.outerWidth;
if (width>width2 && width2>0){width=width2};
if (width>800){
画面が広い場合に行う処理
}
-------------------------------
というスクリプトで表示を切り替えています。
iPhoneが端末によって仕様が異なるしiPhone4ではwindow.outerWidthに使えそうな数字を返す&その他に980という謎仕様のため、少しややこしくなっています。
アドバイスあったらよろしくお願いします。

↑BTW
   コメント書き込み・トラックバック(21〜)

2011/07/24

Perlを使ってFacebookの自分のウォールに写真付きで投稿する方法

やっと成功した。個人的メモ。
基本は以前に紹介したTwitterの場合のOath認証と同じですが、専用のAPIも必要なく、もっと簡単に扱えます。Open Graph Protocolって思想ってか?

(1)開発者ページにアクセス。アプリを登録する。サイトURLドメインは下記の認証作業で使用する必要があるため、2つとも同じにして自分でPerlスクリプトをおける場所にする(下記で使うredirect_uriとドメインが違うとエラーになる。)。
(2)登録すると、AppIDAppSecretが発行されるのでメモ
(3)アプリを使ってaccess_tokenを取得するためのスクリプトを作成、設置。http://usewill.com/facebook.cgiでやりとりするとして話を進める。以下の2回のFacebook graph APIのアクセスで投稿に必要なユーザーごとのaccess_tokenが取得出来る。
<<概要>>
step.1:AppIDと取得したいアクセス権限のリストを添えてFacebook graph APIに送る(アクセス1回目)
step.2:Facebook graph APIは申請を行ったユーザーに(パソコンに保存されているcookie内容を元に)アプリからのアクセスを許可するかユーザーに聞く
step.3:許可された場合、Facebookのgraph APIがredirect_uriに認証コードを返してくる。
step.4:AppID、AppSecret、取得した認証コードを添えてユーザーごとのaccess_tokenを要求(アクセス2回目)
step.5:承認されればFacebook graph APIからユーザーごとのaccess_tokenが帰ってくる。

<<具体例>>
★step.1の部分
https://graph.facebook.com/oauth/authorize?client_id= AppID&redirect_uri= http://usewill.com/facebook.cgi(URLエンコードしておく)&scope=publish_stream,offline_access
上記の例ではscopeはウォールへの書き込みに必要な「publish_stream」と、ログオンしてなくてもアクセス可能にするための「offline_access」を要求している。この2つでウォールへの書き込み可能。
★step.4の部分
作成したfacebook.cgiではFacebook graph APIがstep3でGETで渡してくる認証コード(code)を含めて
https://graph.facebook.com/oauth/access_token?client_id= AppID&redirect_uri= http://usewill.com/facebook.cgi(URLエンコードしておく)&client_secret= AppSecret&code= step3で渡された認証コード(code)
という内容で再度Facebook graph APIにアクセスすると
access_token=xxxxxxxxxxxxxxxx
という内容がページ内容として帰ってきて、かつredirect_uriに転送される。

※step3→step4は同じスクリプト内などでシームレスにやる必要があるようだ。たとえばいったん認証コードを保存し、手作業でstep4を実行するとエラーとなる。制限時間がある?よく分からない。
※step1とstep4のredirect_uriは同じじゃないとエラーが出る。
※Facebook graph APIはhttpsでアクセスしないとダメ、Crypt::SSLeayがインストールされてなくてLWPでhttpsアクセス出来ない糞レンタルサーバーじゃダメっす。

(4)実際の投稿プロセス
いったんaccess_tokenが取得出来れば
<form action="https://graph.facebook.com/ あなたのUserID/feed" method="post">
<form action="https://graph.facebook.com/me/feed" method="post">でOK
<input type="hidden" name="access_token" value=" 取得したaccess_token">
<input type="hidden" name="picture" value=" 投稿した画像のURL(無くてもOK)">
<input type="text" name="message" value=" メッセージ">
<input type=submit name="submit" value="submit">
</form>
的な内容をPOSTすれば投稿し放題。画像をURLで渡せるのは便利だね。直接データとして渡せる方法があるかどうかは不明。

ご参考。
さぁ、何作ろうかな♪

参考にしたページ

↑BTW
   コメント書き込み・トラックバック

2011/05/29

Windowsパソコン+タスクマネージャーでPerlスクリプトを繰り返し実行する時の管理方法

個人的メモも兼ねて。
(1)
$PID=$$;
とすれば$PIDにWindowsのプロセスIDが入る。実行のたびにPIDを保存しておけば色々な処理に使える。

(2)
use Win32::Process::List;
use Win32::Process;
を宣言しておく。
my $P=Win32::Process::List->new();
my %list =$P->GetProcesses();
で%listに現在実行中のPIDとファイル名のリストが得られる(Perlを実行した場合、ファイル名は全部perl.exeだけど)
Win32::Process::KillProcess($PID$dummy);
で$PIDのプロセスを強制終了出来る。$dummyは何でも良い。

(1)(2)を組み合わせて以前のプロセスが残っている場合に実行を中止したり、一定期間経過しても終了しないプロセスを終了したり出来る。

↑BTW
   コメント書き込み・トラックバック

2011/02/05

PerlでWindowsのプロセス一覧を取得し、特定のプロセスを終了させる方法

取得(ライブラリーはActivePerl 5.10には入っていなかったので自分でインストール)
use Win32::Process::List;
my $P=Win32::Process::List->new();
my %list =$P->GetProcesses();
while (($key,$value)=each(%list)){
print $value.' '.$key."\n";
}

終了(ライブラリーはActivePerl 5.10に最初から入っていた)
use Win32::Process;
Win32::Process::KillProcess(1536,$dammy);

※$dammyは何かよく分からない。適当な変数を書いておけばOK

↑BTW
   コメント書き込み・トラックバック(4〜)

2010/10/10

PerlでWebアクセスし、ヘッダー情報やリダイレクト先を知る方法メモ

1: use LWP::UserAgent;
2: my $ua=LWP::UserAgent->new;
3: my $req=HTTP::Request->new("GET",'http://yahoo.co.jp/');
4: my $res=$ua->request($req);
5: my $html=$res->content;

でWebサイトのHTMLデータを取得出来ることはどこにでも書いてある。以下メモ
★(3)の前に$ua->proxy(['http','ftp'] => 'http://xxxx.xxx:8080/');などとproxy刺せる
★(4)の前に$req->proxy_authorization_basic("userid","password");で認証が必要なproxyも使える
★(4)の後
my @headers=$res->header_field_names;
foreach my $Line (@headers){
print $Line.':'.$res->header($Line)."\n";
}
とかでheader情報が取れる。TwitterのRSSにアクセスした時はここに残りアクセス可能回数とかも書いてある
★gzipで圧縮されているサイトは(5)の代わりに
$res->decoded_content;
でHTMLを取得出来る、圧縮されていないサイトも同じコードでOK
★ちまたにあふれている短縮アドレスや、転送サイトなどは上記でアクセスするといきなり転送先の情報が表示される。(4)の代わりに
my $res=$ua->simple_request($req);
とすれば、転送される前の情報が出てきて、headerに転送先URL書いてある。

↑BTW
   コメント書き込み・トラックバック

2010/04/17

Perl 5は生き返った! 新たな前進を再開したPerl

4月13日にPerl5.12.0が公開されているようです。

↑BTW
   コメント書き込み・トラックバック(1〜)

2010/03/28

Javascriptでshiftjisやeuc-jpエンコードなども可能なescape、unescape関数ライブラリ「ecl.js」

使い方

掲示板の名前欄に2バイト文字を使った時の文字化けが直った(よね?)。5年以上放置していたごめんなさい。
decodeURI()がshiftjis文字列を復元出来ないとか、どんな嫌がらせだよ。うちのページはshiftjisなんだよー。

↑BTW
   コメント書き込み・トラックバック

2009/11/09

SQLiteとPerlで学ぶデータベースの基礎

個人的メモ。
最近はPerlのインストールパッケージにSQLiteが付いているらしい。実は恥ずかしながらSQL使ったこと無いです。このサイトなど5年ぐらい前に自分で作ったデータベースライブラリですべてやっている。特に困ってないけどそろそろSQLを勉強したい。

↑BTW
   コメント書き込み・トラックバック(6〜)

2009/11/03

PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法2

前回書いた内容が間違っているわけじゃないですが、Oauth認証という概念について大きな勘違いをしていたのでメモ。

  • Oauth認証の目的はユーザーがクライアントにパスワードを教え無くても良くするためのシステム。そのクライアントのみで使える仮のパスワード(暗証コード)を代わりに使う感じ。その暗証コードを盗まれても、Twitterの大元のパスワードがあれば暗証コードを無効化出来るので安心。ゆえにGPSMANでOauthを使うために一人一人認証する必要があります。
  • 認証画面を全自動化するのは非常に難しいです(つか、出来にくくしている?)。
  • OAuth認証の手続きに関してはこの記事が分かりやすいです。
詳細は前記事を見てもらうとしてクライアントを稼働させる方法としては
  • step1:クライアント開発者が自分のアカウントからクライアントソフト情報をTwitterに登録してconsumer codeを取得。
  • step2:取得したconsumer codeを元にTwitterに認証URLを生成してもらい、ユーザーに渡す。そしてrequest tokenを得る。(このrequest_tokenの取得は認証URLを要求した後に行う必要がある。前じゃダメ)
  • step3:ユーザーは認証ページ(Twitter内)に自分のIDとPASSWORDを入力し暗証コード(数字)を取得
  • step4:ユーザーはクライアントソフトに暗証コードを通知、クライアントソフトは暗証コードと、step2で得たrequest tokenを使ってaccess tokenを得る。このaccess tokenがユーザーのIDとPASSWORDとして使える。(ここで使うrequest_tokenはstep2で取得した認証URLを取得したセッションのものである必要があるため、step3でユーザーに認証ページにアクセスしてもらっている間、保持しておく必要あり)
  • step5:consumer tokenとacess tokenを使ってIDとpassword無しにTwitterに書き込みが出来る(前回の記事ではさらにIDとpasswordもTwitterに知らせていたが、これは勘違い)。

↑BTW
   コメント書き込み・トラックバック

2009/10/01

PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法

※下記記事は勘違いがありました、勘違い部分に関してここにメモ
99%以上の人は興味無いでしょうけど誰かの役に立つかもしれないのでメモ。

GPSMANはPerlのNet::Twitterというモジュールでつぶやきに位置情報を載せてTwitterに投稿しますが、そのままでは「from Net::TWitter」と表示されてしまいました。
最初は投稿時にクライアント名を指示してやれば良いかと思っていたら、そんな簡単にはいかなくてTwitterサーバー側のリストに登録されないといけないと知りました。方法はここを見ると、「開発者にメールしてお願いする」とか書いてあり、なんてローテクな!と思いつつも
Subject: Please list up my Twitter client
Dear Mr. Akex Payne
Thank you for developing interesting and enjoyful tool,Twitter.
Please adding my Twitter client to your client source list.

My client is
source='GPSMAN'
client's URL='http://gpstown.net'

I'm sorry that above client is for Japanese user and URL is written in Japanese.
The main feature of my client is updating our situation with place name using geo-information function of cellular phone.
I heard Twitter is getting ready to adding geo-information function.
I'm looking forward to Twitter world with geo-information.

Thank you.
とか英語力微妙なくせにイランことまで書いたところで、Twitterの公式APIを見て登録の方式が変わったことに気が付く。何でもOAuthとか言う俺みたいなヘタレプログラマには理解しがたい仕組みで認証させないといけないらしい。でもどうにか後述する参考ページを真似して解決出来たので実際に使用したプログラムを公開。要は秘密コードを元に取得した秘密コードでアクセス?ん〜なんでそんな面倒な事をする必要があるのか有用性がよく分からないけど。

★STEP1:開発者としてアプリをTwitterに登録してcunsumer codeを取得
ここにアクセスして作ったアプリ情報を登録、CONSUMER CODEを得る。

★STEP2:ACCESS TOKEN CODEを得る。
-------------------------------------
#!/usr/bin/perl
#Twitter のaccess tokenを取得
use Net::Twitter;
my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],consumer_key=>'取得したコード',consumer_secret=>'取得したコード');
print 'access this url:'.$twit->get_authorization_url."\n";
print 'input verifier PIN : ';
my $verifier =;
chomp $verifier;
my $token = $twit->request_token;
my $token_secret = $twit->request_token_secret;
$twit->request_token($token);
$twit->request_token_secret($token_secret);
my($at, $ats) = $twit->request_access_token(verifier => $verifier);
print "Access token : ".$at."\n";
print "Access token secret : ".$ats."\n";
exit;
----------------------------------------
で取得したconsumer codeを使って、認証URLにアクセスし、アクセス許可ボタンを押して表示させたPINコードを入力してACCESS TOKEN CODEを得る。これは最初に1回でいいらしい。

★STEP3:得たコードを使って「つぶやき」を投稿
-----------------------------------
#!/usr/bin/perl
#twitterに書き込み

use Net::Twitter;
use Encode;
my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],username=>'書き込むtwitterID', password=>'書き込むIDのpassword',consumer_key=>'取得したconsumer code',consumer_secret=>'取得したconsumer code');
$twit->access_token('取得したaccess token code');
$twit->access_token_secret('取得したaccess token secret code');
my $text = 'てすと';
$text = decode( 'shiftjis', $text);
my $result = $twit->update($text);
exit;
---------------------------------------

参考ページ:

↑BTW
   コメント書き込み・トラックバック(7〜)

2009/09/06

Perlでよく使用する関数・標準モジュール(サンプル付き)

個人的メモ

↑BTW
   コメント書き込み・トラックバック

2005/06/04

リナザウにApacheとPerlをインストールした

すごいよリナザウ
んのページ見て、Apacheとperlインストールしたら普通に動くし(^^;
ハマりまくりです。ただいま午前4時w

中身は普通にLinuxだね。素晴らしすぎ!!!!
さて、午前中に京ポンと接続するケーブルが届くはずなので早く寝なければ〜

以下、個人的メモ
perlのパスはhome/QtPalmtop/bin/perl
rootパスはシークレットパスと一緒になっている
localhost/がhome/www/htdocs/

 Keyword:【Perl/7】 【リナザウ/11】 【Linux/17】

2005/06/04

SL-C1000にApacheとPerlをインストールしてcgiを動かすときのメモ

ターミナルで入って
・suでrootログイン(パスワードは本体のシークレット機能で入力したものと同じ)
・chmodでhome/QtPalmtop/とhome/QtPalmtop/binの2つのディレクトリの属性を755へ
・cgiスクリプトファイルのperlプログラムは/usr/local/bin/perlではダメで、/home/QtPalmtop/bin/perl

2008/01/11

Perl for Windows Mobileに関する情報

2008/04/30

Perl で匿名クラスをつくる

役に立つ日は来なさそうな気がするけど個人的メモ
Javaとか、ちょっとオブジェクト未定義だとヌルポヌルポとうるさいねw。
俺には厳しいっす、Perlのぐだぐだが好きw

2008/09/01

Perl FAQ in JPAN

個人的メモ、あまりレベル高く無さそうですが・・・・
Perlと言えばActivePerl 5.10がいつの間にか出ていますね。ずいぶん前に出ていたのかもしれませんが気がつきませんでした。なんと、あんなにインストールに苦労したGDが標準ライブラリとして入っていますよ。またImageMagickも現在、掲載されているWindows用実行バイナリは5.10専用のようです。ActivePerl 5.8ではインストールに失敗します。あとjcodeが動かなくなった?追記:ここに情報あり

2008/09/04

Perlの悩み

誰か、偉い人がアドバイスしてくれたらいいな&誰かの参考になればいいなと願ってメモを記します。

 最近、サイト運営や本業などにおける様々な画像処理をActivePerl 5.8 + GD 2.35で行っているのですが色調の補正などGDには出来ない事も多くてImageMagickの使用を考えました。しかしImageMagickのサイトに行ってみるとWindows用のコンパイル不要バイナリはActivePerl 5.10用しか無くて(ActivePerl 5.8でインストールしても使えなかった)、そこでActivePerl 5.8をアンインストールしてActivePerl 5.10をインストールしました。その結果、ImageMagickは使えるようになりました。

それは良かったのですが、ActivePerl 5.8→ActivePerl 5.10の変更に伴ってGDモジュールが動かなくなってしまいました。原因はActivePerl 5.10にはGD 2.39が標準付属しているため、GDモジュールが二つインストールされているためだったのでGD 2.35をアンインストールしたところGDのほとんどの機能は使えるようになったのですが、唯一画像に文字を書くstringFTコマンドが動きません。なぜだかさっぱり分からん。あと、ActivePerl 5.8ではWindows自体の環境変数にproxyサーバー設定を書くことでppmをproxyごしに使用出来ていたのですがなぜかActivePerl 5.10に移行してからはppmがproxy経由で外部ネットにアクセスしてくれなくなりました。なんでだろー。

 色々やったけど解決出来ないので腹を決めて、現在かたっぱしからGDを使用しているプログラムをImageMagickを使ったコードに変更しているのですが、複雑なプログラムを動かして分かったことに、ImageMagickが凄まじく重い。どの動作が重たいのか分かりませんが全体として10倍ぐらい時間がかかっています。確かに文字の出力とか綺麗にアンチエイリアスがかかってメリットもあるのですが重すぎっす。困った困った。

追記:2008/09/12
GDをver.2.41に上げたらstringFTが使えるようになりました!
ここに書いてある

  • http://www.bribes.org/perl/ppm
  • http://theoryx5.uwinnipeg.ca/ppms
をRepositoriesに登録すると2.41が出てきます。Perl 5.10でproxy経由でppm出来ない問題は未チェック

2008/09/30

Perl 5.10で使えるUnicode 規格で定義されている文字種の名前

例:
平仮名に一致する正規表現
$str =~ m/(\p{Hiragana}+)/;
片仮名に一致する正規表現
$str =~ m/(\p{Katakana}+)/;
句読点に一致する正規表現
$str =~ m/(\p{Punctuation}+)/;
漢字に一致する正規表現
$str =~ m/(\p{Han}+)/;

ここにあるワードが使えるらしい。

ほかに
Latin英数字
Commonスペースや句読点
とかこことか

2008/10/28

形態素解析

個人的メモ、ここにPerlからの利用例が
単語感情極性対応表とか使えそう。絵日記に組み込んだら感じ悪いだろうなw

情報元:Twitter上の発言からユーザの躁鬱状態を推定する

2009/08/03

ActivePerlのPPMを認証付きproxyの内側で動かす

以前のPPM3では
「マイコンピューターのプロパティ」→「詳細設定」→「環境変数」
でHTTP_proxy、HTTP_proxy_user、HTTP_proxy_passを設定すれば良かったですが
現在のActivePerl 5.10付属のPPM4では
HTTP_proxyに「http://UserID:UserPass@ProxyURL:Port」と設定する方式になったようです。

個人的メモ。(情報元)

↑BTW
   コメント書き込み・トラックバック(2〜)

2009/07/26

ActivePerl付属のGDが相変わらず2バイトコード対応でコンパイルされていない

検索で引っかかって誰かの役に立つことを願ってメモ
2009/7/25現在のWindows用ActivePerlはファイル名で言うと
ActivePerl-5.10.0.1005-MSWin32-x86-290470.msi
これに付属のGD(ver 2.41)は2バイトコード対応でコンパイルされていないのでstringFTで2バイトフォント指定して表示出来ない。
レポジトリに
http://cpan.uwinnipeg.ca/PPMPackages/10xx/
を追加して出てくるGD2.43をインストールすると2バイト文字が表示出来る。

Perl 5.8の途中からずっとです。困ったもんだ。

↑BTW
   コメント書き込み・トラックバック(1〜)