Ext 3.1: メモリ問題の大幅な改善(IE)と新しいUI部品
結構いろいろ更新されてますね。
IE6への対応は助かります。
新しいUI部品もちらほら。ダウンロードしてexampleをのぞいてみよう。
ちなみに、exampleはapahceなどのHTTPサーバを経由してじゃないと動きません。
Ext 3.1: メモリ問題の大幅な改善(IE)と新しいUI部品
結構いろいろ更新されてますね。
IE6への対応は助かります。
新しいUI部品もちらほら。ダウンロードしてexampleをのぞいてみよう。
ちなみに、exampleはapahceなどのHTTPサーバを経由してじゃないと動きません。
Perlですが、リファレンスになってるハッシュのマージする方法。
my $hash1 = {
aaa=> 10,
bbb=> 100,
ccc=>1000,
};
my $hash2 = {
bbb=> 20,
};
my $merge= {
%{ $hash1 },
%{ $hash2 },
eee=>'add',
};
use Data::Dumper;
print Dumper $merge;
とすると、以下の感じでマージされる。ちゃんと後ろにくっつけた、hash2が同じキーbbbを上書きしてる。
$VAR1 = {
'bbb' => 20,
'aaa' => 10,
'ccc' => 1000,
'eee' => 'add'
};
ちなみに、ふつうのハッシュをマージ・結合するには
my %hash1 = ( aaa=> 10, bbb=> 100, ccc=> 1000, ); my %hash2 = ( bbb=> 20, ); my %merge= (%hash1, %hash2, eee=> 'add'); use Data::Dumper; print Dumper \%merge;
で同じ結果に。
やっぱり一度、リファレンスから戻さないと結合できないみたい。
結局はリストの結合と同じね。
Perl の CGI.pmはよくお世話になりますが、UTF8を扱おうとすると、utf8フラグがたったり、なかったりと問題があるようで、めんどくさいのでCGI.pmでパラメータ受け取るときにすべてのパラメータを一度に処理してます。
1件ごとでなくて、飛んできたパラメータ全部をdecodeしてみる。
use CGI;
for my $p ($CGI->param) {
my @v = map {Encode:: decode_utf8 ($_)} $CGI->param($p);
$CGI->param($p,@v);
}
たつをのChangeLog殿から、dankogai殿の指摘をみて、自分のコードも少々修正してみました。
たつをのChangeLog Perl の utf8 まわりのおまじない
use utf8;
use CGI;
...
my $text = $q->param('text') || "";
utf8::decode($text) unless utf8::is_utf8($text);
...
Encode:: decode_utf8を使いましょうとのご指摘はこちら。
http://blog.livedoor.jp/dankogai/archives/51290188.html
Validationの観点だけではなく、簡潔性の観点からも、Encode::decode_utf8()はおすすめです。すでに UTF-8 flag がついた文字列はそのままコピーするだけなので、条件分岐も不要です。
なるほどー
ExcelのTips
金額や大きめの数字を入れた際に、1億2千万といった具合に、漢字を入れてほしい場合
次の表示形式をExcelで設定すればOK。
[>=100000000]####”億”###0″万”####;[>=1000]####”万”####;G/標準
ちなみに、書式の設定方法は
無償PDFプリンタの話
クセロPDFの無償ダウンロードが終わりどうしようかと思ってたところ見つけたのが、以下。
http://www.bullzip.com/products/pdf/info.php#download
インストールして、あとは印刷する際のプリンタとしてbullzipを選択すればOK
簡単!
なんですが、起動された画面が文字化け。どうもVistaだと発生するとか。
以下の手順で治ります。
WindowsLanguage=JPN
CultureID=1041
CultureName=ja-JP
CultureNativeName=日本語 (日本)
MissingTranslations=0
で治るはず。
Wordで書類を書いて、PDFにするときですが、罫線に点線を使うとどうもきれいにPDFにならない。単なる直線ならきれいなのに。この辺はフリーなのでしょうがないかな。
CGIやPHPでとれる環境変数、REQUEST_URIとSCRIPT_NAMEですが、普通に使う分には中身が同じなので気にしてなかったのですが、mod_rewriteを使ったら、あら!違うじゃないですか。とハマッたのでメモ
以下のように、とあるCGIにアクセスした場合は
http://localhost/info.cgi
REQUEST_URI /info.cgi
SCRIPT_NAME /info.cgi
おなじ
じゃ、例えば
http://example.jp/blog/200908/01.html
といったURLを
http://example.jp/blog/article.cgi?id=20090801
と書き換えたとすると、REQUEST_URIとSCRIPT_NAMEはそれぞれ以下のようになる。
▼ブラウザから送られてきた要求のURI
$ENV{REQUEST_URI} = /blog/200908/01.html
▼CGIスクリプト名
$ENV{SCRIPT_NAME} = /blog/article.cgi
ポイントは、
REQUEST_URIはそのまま、【ブラウザから送られてきた要求のURI】
SCRIPT_NAMEは【実行されているスクリプトのパス】ですね。
はまりポイントである。
で、これが目的。Catalystをインストールしてみる。
で、いくつか問題がありました。
Failed during this command:
JDB/Win32-Process-0.14.tar.gz : make NO
BZAJAC/Proc-Background-1.10.tar.gz : make_test NO
FLORA/Catalyst-Devel-1.19.tar.gz : make_test NO 2 dependencies missing (Win32::Process,Proc::Background)
で、自動でインストールできなかったWin32::Processを個別にcpanから入れようとしても、同じくエラー。
当然か!
で完了なわけですが、Catalyst::Develが入らない。なので、ここはppmでインストールしてみる。面白いことに、ActivePerlだけかと思いきやStrawberry Perlでも利用できる。
ppmで先にWin32-Processをインストール
PPM> install Win32-Process
Install package ‘Win32-Process?’ (y/N): y
Installing package ‘Win32-Process’…
Bytes transferred: 12323
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\strawberry\perl\site\lib\auto\Win32\Process\Process.bs
Installing C:\strawberry\perl\site\lib\auto\Win32\Process\Process.dll
Installing C:\strawberry\perl\site\lib\auto\Win32\Process\Process.exp
Installing C:\strawberry\perl\site\lib\auto\Win32\Process\Process.lib
Installing \site\lib\Win32\Process.html
Installing C:\strawberry\perl\site\lib\Win32\Process.pm
PPM>
もういっかいcpanからcatalyst::Develをインストール。
OK。成功!!!
cpanコマンドの設定メモ。よく忘れるんだこれが。
Perlを好く使うんですが、Vimとかemacsとか使いこなせないんで、Windowsで開発してます。(笑)
で、PerlはActivePerlを使ってたんですが、Strawberry Perlって環境もあるときき試してみることに。最近買った、モダンPerl入門 (CodeZine BOOKS)
って本で知りました。(遅いかっ!)
インストール手順
感想
まず、gccやDLLを内包しているという点は結構大きい。
開発をwindowsで行っても実際に本番サーバはLinux系のことが多いので、各種ライブラリはやはりCPANから持ってくる。まれに、というか結構ActivePerlのPPMには存在しないものもあり、結構面倒なのでこれはすごくイイ
インストール先がc:\perlでないのもOK。インストール先の選択肢が無く一瞬あせったが、 ちゃんとかぶらないようになってた。ウレシイ
ちなみに、ActivePerlと共存させるため、シンボリックリンクでc:\perlを作ってみました。
StrawberryPerlでWeb::Scraperインストールしようとしたら

って怒られた。
libxml2.dllはというと下記にあるという。
http://xmlsoft.org/sources/win32/
ここからダウンロードして再チャレンジ
とおもったら、StrawberryPerlってこれらDLLを内包しているのがメリットだったはず!!
探してみると
c:\strawberry\c
の下にDLLがあるある。
結局、
c:\strawberry\c
がPATHに含まれていないのが問題でした。
特に気にせずインストールすればPATHには自動で追加されるはずです。
(インストール前に起動したcmd.exeつかってた・・・)