perl CGI.pm 渡される引数の取り扱い

perlでCGI.pmを使ってCGIを作る際の話。
・CGIに渡されたパラメータは、別のサーバに対してのコンテンツ取得に使用する
・渡されるパラメータが何がどれくらいあるのかが特定できない
・こちらの内部管理用で不要なパラメータとして特定の文字列があるが、それは引き渡さない

こんな条件がある時に、どーやって、パラメータを取得するか、というところ。

use CGI;
my $q = new CGI;
# 不要なパラメータを消去
$q->delete('sessionid');
# 残ったパラメータを表示
foreach my $name ($q->param) {
    # $nameが持っている値が複数の場合もあるため
    # @_=$q->param($name)に格納して
    # それをforeachする
    foreach my $value ($q->param($name)){
        print "$name=$value <br>\n";
    }
}

perl LWPを使ってcookie必須のページへのPOSTアクセス

うちで主に携帯向けとして提供しているゲームコンテンツのゲートウェイサービスは、内部でHTTP::Liteを使用して、オフィシャルのコンテンツを取りに行っている。

いままでは、それで問題なく利用できていたのだが、今回の動作状況見直しの際に、1点問題となる場面が見つかった。

それは、以下の様に同じ名前のパラメータで値が異なるものを送らなければならないことがある、ということ。

&lt;input type="text" name="param" value="value1">
&lt;input type="text" name="param" value="value2">

HTTP::Liteは、POSTアクセス時のコンテンツのペイロードに連想配列を使うため、同じ名前のものを複数送ることができない。

そんなわけで、LWPを使うように仕様変更を試みた。


HTTP::Liteを使用するもの

use HTTP::Lite;
$http = new HTTP::Lite;
$url="http://~";
$http->add_req_header("Cookie", "cookiename=$cookie");
%vars = ( "param" =>; "value1");
$http->prepare_post(\%vars);
$req = $http->request("$url")
    or $flagerr=1;
$contents=$http->body;

LWP使用に変更したもの

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request;
$lwpua = LWP::UserAgent->new;
$url="http://~";
$lwpreq = HTTP::Request->new(POST => $url);
$lwpreq->content_type('application/x-www-form-urlencoded');
$lwpreq->header("Cookie"=>"cookiename=$cookie");
$lwpreq->content("param=value1&amp;param=value2");
$lwpres= $lwpua->request($lwpreq);
$contents=$lwpres->as_string;

細かい点はいくつかあるものの、こんな感じで移行はできた。

失敗した点

最初「$lwpreq = HTTP::Request->new(POST => $url);」を「$lwpreq = HTTP::Request->new(POST => ‘$url’);」としていた。
この場合、「400 URL must be absolute」というエラーメッセージが出力されていた。
$urlにつけていたシングルクォーテーションを外したところ、正常動作した。

参考にしたLWP cookbookのサンプルは固定URLであるので、シングルクォーテーションで良いが、変数を使う場合にシングルクォーテーションを使うと駄目、という基本を忘れていたために食らいました。

もう1点、サーバに対して、Cookieの値を送る方法がよくわからなかった。
HTTP::Liteの時の例とかを考え、headerにCookieという名前で値を追加すればいい、と思い当たったので、それでやってみたところ、期待通りに動作した。

JUSTインターネットセキュリティのパターンファイルが更新されない

先日インストールしたJUSTインターネットセキュリティ
予備機と化しているノートパソコンにインストールしてみただけなので、インストール以後、全然起動していませんでした。

で、しばらくぶりに起動してみると・・・起動後30分経過しても、まだパターンファイル未更新状態のまま。

で、40分目。
非常に邪魔な広告が登場。
1024×600の画面だと↓な感じで表示されます。

そんなことがあったのが2月26日。(インストールは2月16日)
今日、2月28日、2日ぶりに起動してみた。
すると今度は5分程度で更新された。

いったい、どういう違いで、こんな時間差が生まれるのか、不明。

しかし、セキュリティセンターは「最新の状態ではありません」のまま。

手動でパターンファイルを更新してみても、そのまま。
またも再起動しないと警告が消えない、という状態。

だいじょぶか、これ。

Rstream A1類似機種海外のフォーラム便り 2012/02/23版

久々に海外フォーラムからのネタによる更新

というか、Bonston Maniaの更新がえらく中途半端なのでそれを補完するような感じ

[DEV ONLY][WIP][ICS][KERNEL] AOSP Ice Cream Sandwich for Commtiva Z71 variant
Rstream A1で動くICSの配布の大元。
といっても、書かれているスペック上だけでも通信機能全滅というばかりではなく、
Rstream A1に入れるとタッチパネルの動作も微妙と、現状ではとても使い物にならない。
まさにデモンストレーションonly。

・Droidsans.com: [ROM CM7.2] ROM CM7.2 RC0 “KANG” 2.3.7+kernel PlayOSS v6.3 [Build 18-02-2012]
タイ語のフォーラムDroidsans.comが公開元のようだ。
CynanogenMod 7.2RC0の2012/02/18付けソースを元に作成しているらしい。
KANGについては後述。
kernel PlayOSSについての実体がよくわからない。
たぶん、タイのPlayOSSなんだろうけど、kernelを公開している形跡が無い。

・PlayOSS: [Dev Guide] Build Android ICS 4.0 on Ubuntu
で、そのPlayOSSにあるタイ語の記事から1例。
タイで販売しているWellcoM A88向けに手順を解説している。
Android 2.3のコンパイル手順も別途あるが、バイナリを配布している様子がない?
(それとも見落とし?)

・Android Devil: [ROM][MOD]OptimusXperia 2.3.7 for Commtiva z71, Optimus Boston and other clones
Xperia2011年モデルの見た目をほとんど持ってきました!という感じのカスタムROM。
なので標準のランチャーはXperia ARC Launcher。
配布形式がupdate.zipではなく、ClockworkModRecoveryのBackupでバックアップしたディレクトリをzipしたものになっている。
このため、microSD上の/clockworkmod/backup以下に解凍して、ClockworkModRecoveryの「Restore」にてそのディレクトリを指定してリストアを実施する必要がある。(実施すると、いままでの設定が初期化されます)

Horizon 2.3.7
ここのフォーラムはログインしないと内容が見れないので注意。
Cyanogenmod 7 2.3.7 aPT をベースに改造しているカスタムROM。
こっちは、Xperia ARC Launcherだけを持ってきてる。

・おまけ、KANGとは?
Android Open Kang Projectらしい。(旧サイト)
現在は、Android 4.0.3ベースに開発している。
ただ、「Kang」とは何か解説は見当たらない。
Githubあり

MT6573搭載のICS Android携帯 Amaze 4G G22

MTK MT6573でもAndroid 4.0/ICSが動く?

いままでMTKチップのAndroid 4.0/ICS対応はMT6575からだと思っていました。
が、毎度おなじみmicgidiにてThe knock off HTC Amaze 4G G22 smart phoneなんて記事を発見。

ぱくり系Android携帯でおなじみのHTC風(通称HTC G22)をした普通の仕様だなぁと思ったところ、異常な点を発見。

CPU MTK MT6573
RAM 512MB
ROM 512MB
液晶 4.03インチ、静電式、854×480、5点マルチタッチ
Bluetooth/Wifi/GPS/カメラ(前面/背面)
もちろん、Dual-SIM

そして、「Android 4.0.5 OS」

そう、Android 4.0/ICS、だと謳っています。

え?と詳細を確認。

micdigiの画像にあるhttp://hkbbt.taobao.com/にて商品ページを発見。
香港Amaze 4G G22双卡双待WCDMA双核3G智能手机+高清屏+Beats音效


確かにAndroid 4.0.5と表示されている。
これがほんとだとすると、面白い。

また、以下の記述を見ると、Dual-SIMで、2枚ともWCDMAにしても動くような感じである。

双卡双待:支持G+G\G+W\W+G\W+W四种待机模式设计,真双卡双待双3G功能,内置一个两个SIM卡插槽,可单独使用一张GSM卡或者联通WCDMA 3G卡待机通话,也可同时使用一张GSM SIM卡和一张WCDMA SIM卡待机通话,还可以支持两张WCDMA 3G卡同时待机通话,支持中国移动和中国联通的普通GSM网络,也支持中国联通的WCDMA 3G网络,GSM网络支持EDGE准3G上网,WCDMA网络支持高速3G上网,WCDMA 3G上网固定为SIM卡1

サポート掲示板としてHTC Amaze 4G G22论坛というページが紹介されている。
書き換えができるのであれば、なかなかおもしろそうな感じである。