Aizack Lab

主に自作プログラムの公開やTIPS等を公開しています。

[perl] ロリポップサーバーのperlモジュール一覧

当ウェブサイトは、ロリポップサーバーを使用しています。
perlでスクリプトを作成するのに必要になってくるモジュールがサーバーにインストールされているか調査するのにfutomi's CGI Cafeのサーバーアナライザーを使ってみました。
以下、必要な情報のみ抜粋しています。
続きを読む>>




comments (0)trackbacks (0)

「[perl] ロリポップサーバーのperlモジュール一覧」の評価です。

[perl] CGI.pmを使ってURLから文字列を取得

perlを勉強中のため、覚書です。

beginners CGI - CGI に引数を付けて値を渡す -
futomi's CGI cafe - CGI.pm を使ってみよう -

上記の記事を参考にテストスクリプトを作成してみました。
ソースは以下の通りです。
#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $q = new CGI;

my $param = $ENV{'QUERY_STRING'};
my @param = split (/&/,$param);


print $q->header(-charset=>"shift-jis");
print $q->start_html(-title=>"Aizack Lab", -BGCOLOR=>'#ffffff'),
$q->center($q->h1('[perl] クエリ文字列取得サンプル')),
$q->hr,
$q->br,
$q->br,
$q->strong("取得したクエリ文字列"),
$q->br,
$q->br;

foreach my $tmp (@param)
{
my ($name,$value) = split (/=/,$tmp);
print $q->strong("名前:$name 値:$value"),
$q->br;
}

print $q->end_html;
exit;


上記のスクリプトに引数を付けて実行すると、それぞれの値を画面上に表示されます。
URLに続けて ? を入力、その後 要素=値 とし、それぞれの要素を & で区切ります。

【例】
http://api.aizack.net/gq_test.cgi?要素1=値2&要素2=値2&要素3=値3


テストスクリプト
http://api.aizack.net/gq_test.cgi?pref=hokkaido&data=10




comments (0)trackbacks (0)

「[perl] CGI.pmを使ってURLから文字列を取得」の評価です。

[API] Amazon Product Advertising API を使ってみた

Perl による自分用 Amazon Product Advertising API proxy「PAPAXY」

上記で公開されているPAPAXYを借りて当サイトにも設置してみました。
当サイトは、ロリポップを使用しているのでDigest::SHAが使えないらしい。
ということでDigest::SHA::PurePerlをCPANよりダウンロードしてサーバーへアップロード。
その後、PAPAXYの該当部分のコードを下記の様に変更。
use Digest::SHA::PurePerl qw(hmac_sha256_base64);

それと、せっかくなので16行目のTimeStamp以降に下記のコードも追加してみた。
$pkv{"Service"} = "AWSECommerceService";
$pkv{"AWSAccessKeyId"} = "Your AccessKey";
$pkv{"AssociateTag"} = "Your AssociateID";

これによって、パラメーターの数が少し減りました。

パラメーターの参考としてはAmazon Web サービス入門(Product Advertising API)が良さそうです。

サンプルリクエストです。Operationパラメーター以下?のキーワードのみで結果がXMLで返ってきます。
http://api.aizack.net/aws.cgi?&Operation=ItemSearch&SearchIndex=Books&Keywords=perl

このXMLをパースして利用すれば独自のWebアプリも作れるでしょう。
AIZACKのアイテムエディターと連携したら商品情報が簡単に閲覧できそうですね。




comments (0)trackbacks (0)

「[API] Amazon Product Advertising API を使ってみた」の評価です。

[SB Plugin] ダウンロードカウンタ v0.12a リリース

KENT氏作のLime CounterをSereneBachのプラグインとして改造して公開しております。

尚、当プラグインを利用する方は必ずKENT-WEBのCGIスクリプト利用規定をご一読ください。

LimeCounterプラグインの使用方法は、ダウンロードファイル内のreadme.txtかこちらをお読みください。

v0.12では、v0.11 から以下のバグが修正されています。
  • lime.cgiの動作チェックのアドレスが http://aizack.net/ になっていたのを修正しました。
  • 集計一覧のHTMLタグを文法チェックで減点されないよう修正してみました。
  • 2010年1月31日 必要なタグ(tr)が出力されない不具合を修正した。

Download




comments (0)trackbacks (0)

「[SB Plugin] ダウンロードカウンタ v0.12a リリース」の評価です。

[SB Plugin] ダウンロードカウンタ v0.11 リリース

※2009年12月7日 v0.12リリースしております。

KENT氏作のLime CounterをSereneBachのプラグインとして改造して公開しております。

尚、当プラグインを利用する方は必ずKENT-WEBのCGIスクリプト利用規定をご一読ください。

LimeCounterプラグインの使用方法は、ダウンロードファイル内のreadme.txtかこちらをお読みください。

v0.11では、v0.10 から以下のバグが修正されています。
  • アイテムを削除できないバグを修正しました。

また、以下の仕様変更があります。
  • lime.cgiの動作チェックを管理画面に追加しました。

Download




comments (0)trackbacks (0)

「[SB Plugin] ダウンロードカウンタ v0.11 リリース」の評価です。

[SB Plugin] ダウンロードカウンタ v0.10 リリース

※2009年11月25日 v0.11リリースしております。

KENT氏作のLime CounterをSereneBachのプラグインとして改造して公開しております。

バージョン0.10から別途LimeCounterをインストールしなくてもプラグインのみで使用出来るようになりました。

尚、当プラグインを利用する方は必ずKENT-WEBのCGIスクリプト利用規定をご一読ください。

【v0.00からの更新内容】

■v0.10 (2009年11月20日 23:40)
別途オリジナルのLimeCounterをインストールしなくても動作するように変更しました。

Download




comments (0)trackbacks (0)

「[SB Plugin] ダウンロードカウンタ v0.10 リリース」の評価です。

[SB Plugin] ダウンロードカウンタ v0.00 リリース

※2009年11月20日 v0.10リリースしております。

KENT氏作のLime CounterをSereneBachのプラグインとして移植?して公開しております。

Perl自体良くわからないまま作成していますので移植という大げさなものではありません。
現在のバージョン0.00では、集計一覧を閲覧出来るのみです。

よって、KENT氏作のLimeCounterが必須ですので別途インストールしてください。
当プラグインを利用する方は必ずKENT-WEBのCGIスクリプト利用規定を参照してください。

更新履歴
■v0.00 (2009年7月15日 23:30)
CSSを管理画面のCSSを利用するようにし、コードを見直し初公開。
■2009年6月14日 23:30
やっとこ、独自タグでテンプレートに表示する事に成功したがCSS対応になっていないしコードが汚すぎる。
■2009年5月1日 23:20
管理画面を集計リストと設定画面にタブで分けるようにした。
■2009年3月31日 00:00
集計リストのCSSをアクセス解析のCSSに合わせてみた。
■2009年3月30日 00:00
グラフの画像をLimeCounterのではなくSereneBach同梱(アクセスログに使用している)の画像ファイルに変更しました。
■2009年3月14日 00:20
文字化けを解消し、汎用性もちょっとだけあがりました。

Download




comments (0)trackbacks (0)

「[SB Plugin] ダウンロードカウンタ v0.00 リリース」の評価です。

[SB メモ] 相対URIから絶対URIへの変換方法

またまた必要になったので調べてみました。
相対URIを絶対URIに変換する方法です。

URIモジュールを使えば出来るそうです。参考ページ
use URI;
$new = URI->new_abs('../download','​http://aizack.net/lab/');​


↑により、$newに ​http://aizack.net/download​ が入る。
URIのnew_absの第一引数に相対、第二引数に絶対URIを入れればOKです。

しかし、
use URI;
$new = URI->new_abs('../download','​http://lab.aizack.net/');​


↑のようにサブドメインを指定すると
$newには、http://lab.aizack.net/..download が入ってしまいます。

当サイトのメインであるAIZACK.NETとAizack Labに作成中のLime Counterプラグインを入れて集計一覧を見ると画像ファイルが上記のような状態になり表示できなくなってしまいます。

さて、どうしたらいいものか。
サブドメインを指定しないでhttp://aizack.net/lab/のようにすれば可能なのは解ったけど・・・。




comments (0)trackbacks (0)

「[SB メモ] 相対URIから絶対URIへの変換方法」の評価です。

[SB メモ]文字コードの変換について

現在、perlを勉強中でSereneBachのプラグインを作っている中で文字コードの変換が必要になったのでその覚えたての事を覚書として残しておきます。

注意:間違っている可能性は、大ですのでご了承ください。


use sb::Language ();
my $text;

#インストールしたSereneBachの文字コードを取得(euc-jp版かutf-8版)
# $codeには、'euc' か 'utf8' が入る
my $code = sb::Language->get->charcode;

#次のコードをいれないとうまく変換ができないのですが
#たぶん、sjis の部分に変換前の文字コードを入れコードチェックを行う?
sb::Language->get->checkcode('','sjis');

#最後に$textの部分に変換したい文字が入っているスカラー変数を指定し、
#$codeの部分に変換後の文字コードを指定する。
$text = sb::Language->get->convert($text,$code);

#すると、$textに文字コードを変換した文字列がセットされます。


追記:use sb::Language (); を入れなきゃ駄目でしたね。




comments (0)trackbacks (0)

「[SB メモ]文字コードの変換について」の評価です。

[perl] apeboard+ × IPスパムフィルター

CGI掲示板スクリプトapeboard+IPスパムフィルター というスパムをはじくフィルタースクリプトを導入する方法を紹介いたします。 apeboard+のVersion2.0からスパム対策版が出でいますが更にIPスパムフィルターを導入する事で海外からのスパムはほぼ全てはじく事が出来るでしょう。
以下、導入方法を当サイトを例に説明させて頂きます。
コンピュータ関連の備忘録 | IPスパムフィルターを Serene Bach で使う方法!から抜粋させて頂きました。)


1.ダウンロード
まずはIPスパムフィルターをダウンロードしてください。
そしてダウンロードしたファイルをローカル(ハードディスク上)にあるapeboard+があるフォルダに展開してください。
2.パスワード・文字コードの設定
アップロードする前にいくつか設定していたほうがいい事があるのでここで設定してしまいましょう。
ダウンロードしたファイルを展開すると、中に「 ipcheck 」というフォルダがあります。
このフォルダの中の 「 list.cgi 」 「 settei.cgi 」 「 logchk.cgi 」 というファイルがあります。このファイルをメモ帳などで開いて以下の箇所を修正します。
1行目に
#!/usr/bin/perl
という部分がありますが、まずこれを、プロバイダで定められたPerlへのパスを指定してください。
続いてパスワードを指定します
$pass = '';
という部分がありますのでここに自分好みのパスワードを指定してください。
たとえば「 hogehoge 」 というパスワードを指定したければ
$pass = 'hogehoge';
としてください。 続いて文字コードをapeboard+ で使われている文字コードと同じものを指定してください。 EUC-JP版をお使いでしたら
$moji = 'EUC-JP';
SJIS版をお使いでしたら
$moji = 'SHIFT_JIS'; ←たぶんこれでいいはず(^^ゞ
のように設定してください。
もう一つ忘れてはいけないのが、 「ipchk.cgi」です。 IP_Base.pm と同じカレントフォルダにあるので1行目の
#!/usr/bin/perl
をプロバイダで定められたPerlへのパスに修正しておいてください。
そして23行目にある
# SB & MTのチェック用フラグ(汎用で使うときは 0)
$issbmt = 1;
をSB & MT以外で使用するため
$issbmt = 0;
に修正してください。でないとエラーが出ます。
3.アップロード
ファイルの修正が完了したら、アップロードを行います。 このとき注意することは、使用されている文字コードが「EUC-JP」なら、 アップロード時には必ずそのコードにあわせるようにアップロードしてください。 FTPソフトウェアには転送時に文字コードを変換できるようになっています。 よくわからない場合はお手持ちのFTPソフトのヘルプをご確認くださいませ。
全体のディレクトリ構成とファイル位置は以下のとおりです。 (かっこ内はパーミッションの設定値)
【ディレクトリ構成例】
apeboard(apeboard+のカレントディレクトリ)
apeboard_plus.cgi
ipchk.cgi [755]
IP_Base.pm [644]
├─ ipcheck / [755]
│ ├ list.cgi [755]
│ ├ settei.cgi [755]
│ ├ logchk.cgi [755]
│ └ 他のファイル [666]
ipchk.cgiIP_Base.pmを カレントフォルダ(apeboard_plus.cgiが入っているフォルダ)にコピーします。
apeborad の カレントフォルダ(apeboard_plus.cgi があるフォルダ)に ipcheckフォルダを丸ごとコピーします。
パーミッションは上記の通りに設定してください
※suEXEC環境で使われる場合パーミッションを、フォルダは[701]、ファイルは[755]→[700]、[666 or 644]→[600]に読み替えて設定してください
4.修正前の動作確認
この段階では、単にファイルをコピーしただけで、本体のプログラムは何もさわっていません。
ですから、ここでの動作確認でエラーがでたとしては本体には何ら影響を及ぼしてはいないので、 焦らずにゆっくりと原因の追及ができます。 方法ですが、apeboard+のディレクトリにコピーして頂いた「 ipchk.cgi 」をブラウザで呼び出していただければOKです。
上記のように全てのチェック項目が「OK!」になっていれば大丈夫!プログラムをちょこっと修正して頂くだけでお使い頂けます。
確認後は、ipchk.cgiを削除する事をお勧めします。
5. apeboard_plus.cgiを修正
apeboard_plus.cgi」の15行目当たりを下記のように変えてください。
# 必要なファイルのパス指定 ------------------------------------------------
use IP_Base;
require './jcode.pl';
require './boardini.cgi';
require './skinini.cgi';
で、666行目あたりの「write_message」と言うコマンドの # データファイルを読み込む -----と言うところの前の部分に..
## ひらがなでチェックする --------------------------------------
$bbdy = $message;
&jcode'convert(*bbdy, 'euc');
if ($bbdy !~ m/(\xA4[\xA1-\xF3]){2}/){
&print_error("コメントを正しくお書きくださいね!");
}
## IP Spam Filter Start_! --------------------------------------
my $ctp = 1;
if (IP_Base::_allow_mail_address($mail,'./ipcheck') == 1){ $ctp = 4; }
if (IP_Base::_check_ip_base($ENV{'REMOTE_ADDR'},'./ipcheck',$ctp,'BBS')==0){
&print_error("あなたのIPアドレス $ENV{'REMOTE_ADDR'} は投稿制限の対象となっています。");
}
# データファイルを読み込む --------------------------------------


以上、完了となります。これで、英文のみのスパム投稿などがカットされます。
少々、分かりづらいところもあるかもしれませんが良ければお試しください。




comments (0)trackbacks (0)

「[perl] apeboard+ × IPスパムフィルター」の評価です。

Archives

エコ/コミュニティ/レビュー

Other
  • count : hits!
  • track feed Aizack Lab
  • feedburner
  • Powered by Serene Bach 2.21R
  • Template by OMEGA*BOX
  • Admin