link もっと前
   2018年 6月 28日 -
      2018年 6月 19日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

Namazu 延命

Namazu の延命策として、検索文字列に UTF-8 文字列を投げられるようにしました。

といっても、オリジナルの CGI を namazu.cgi → namazu2.cgi にリネームして、下記のラッパー CGI を用意しただけです。

Sakura は Perl が 2種類(/usr/bin/perl = perl 5.8, /usr/bin/perl5 = perl 5.14)入っていて、perl 5.14 だけ Text::Iconv がインストールされています。しかしなぜか @INC にパスが通っていません。仕方ないので、かなりダサいですが、強引にパスを通しています。

UTF-8 の検索文字列を EUC-JP に変換するラッパー

#!/usr/bin/perl5

use lib '/usr/local/lib/perl5/site_perl/5.14/mach';

use CGI;
use Text::Iconv;

my $cv = Text::Iconv->new("UTF-8", "EUC-JP");
my $cgi = CGI->new;
my $q_cv = $cv->convert(scalar $cgi->param('query'));
$cgi->param('query', $q_cv);
$q_str = $cgi->query_string();
print "Location: namazu2.cgi?" . $q_str . "\n\n";

今回スクリプトを書いていて初めて知ったのですが CGI の param 関数を読んでスカラ値を受けたい場合 scalar $cgi->param('query') という書き方をした方が良いそうです。

理由の詳細はこのブログ(New Class of Vulnerability in Perl Web Applications)に載っていますが、ハッシュで受けると意図せず他の値を上書きしてしまう可能性があるので、明示的にスカラとして受け取るべき、ということらしいです。

気づいたきっかけ

Perl 初心者の私がなぜ気づいたかというと、動作テストをしたときに Apache の動作ログに、下記の Warning が記録されたからです。

Apache のエラーログ
AH01215: CGI::param called in list context from /home/katsuhiro/public_html/namazu/aaa.cgi line 8, this can lead to vulnerabilities.
See the warning in "Fetching the value or values of a single named parameter" at /usr/share/perl5/CGI.pm line 412.

初心者にはエラーメッセージだけだと意味がわかりませんが、Warning メッセージに言われるがまま /usr/share/perl5/CGI.pm 412行目を見ると、

CGI.pm

	# list context can be dangerous so warn:
	# http://blog.gerv.net/2014.10/new-class-of-vulnerability-in-perl-web-applications
	if ( wantarray && $LIST_CONTEXT_WARN == 1 ) {
		my ( $package, $filename, $line ) = caller;
		if ( $package ne 'CGI' ) {
			$LIST_CONTEXT_WARN++; # only warn once
			warn "CGI::param called in list context from $filename line $line, this can lead to vulnerabilities. "
				. 'See the warning in "Fetching the value or values of a single named parameter"';
		}
	}

危険な理由として、先ほど紹介したブログの URL を書いてくれていました。親切ですね。ブログを読んだので何となくわかりましたが、説明なしでは若干難解なコードかもしれません…。

[編集者: すずき]
[更新: 2018年 6月 29日 00:12]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

Kindle の本もダブることがある

Kindle の本は「ダブって買うことがない」利点があります。

が、例外もあって、今回ハマってしまいました。

ASIN

Amazon の電子書籍には必ず ASIN(Amazon Standard Identification Number)というユニークな ID が振られています。Amazon ストアの URL の最後に付いている、謎の英数字、あれが ASIN です。

Kindle ストアで本を選択したとき、自動的に購入済みの ASIN かどうか(=その本を持っているかどうか)チェックされ、購入済みか否かで、ストアに表示されるボタンが変わります。例えば 500円の本なら、

  • 未購入、未発売: 「¥500 で予約注文」ボタン
  • 未購入、発売中: 「¥500 で今すぐ購入」ボタン
  • 購入済み: 「今すぐ読む」ボタン

このように 3パターンのうち適切なボタンが表示されます。また、ブラウザの戻る機能で購入ページに戻り、同じ購入ボタンを押しても「あなた、もう買ってるでしょ?」って言われます。Kindle のダブり防止機能はかなり強力です。

この素敵な機能のおかげで、同じ本を 2冊買うことはほぼありません。

同じ本、違う ASIN

Kindle のダブり防止は「同じ本なら、ずっと同じ ASIN」という前提に依存していますので、この前提が崩れてしまうと、チェックが効かず、同じ本を 2回買えてしまいます。例えば、下記のような場合です。

  • 同じ本がストアに 2つ登録されている(ストア側がダブっている)
  • 同じ本がストアに 2回登録された(古い本を消して、新しい本を登録した)

私が今回ハマったパターンは後者でした。オンライン The Comic という本の 9巻目で、同じ本のようですが、なぜか ASIN: B07CH794VZ(以降、旧版)と、ASIN: B07CSVJYL2(以降、新版)の 2つの ASID が存在しています。そのため、

  • 旧版を買う
  • 旧版がストアから外され、新版が登録される
  • 新版も買う

このような経緯で 2冊買ってしまいました。ちなみに現在、旧版は買えず、評価ページだけが悲しく残っています。

返品できる

Amazon のカスタマーサポートに連絡したところ、新版の購入を取り消して、返金してもらうことができました。またカスタマーサポートの方が言うには「ストア内で本の入れ替えはある」ようです。

今回のような ASIN の付け替えは良くあるのか?珍しいのか?ちょっと気になります。あまり気軽に ASIN の付け替えをやられますと、購入、未購入の管理が結構辛くなります。

しかしまあ、今まで 6,000冊ほど買ってきて、今回初めて ASIN の付け替えに当たったので、体感的にそんなに頻度は高くないように思います。普通に楽しむ程度なら、まず困らない頻度だとは思います。

[編集者: すずき]
[更新: 2018年 6月 28日 11:45]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

日記の検索機能

このサイトには Namazu を使った検索機能を設置していますが、撤去したいと思っています。Namazu は Sakura のサーバーの Perl のバージョンが入れ替わるたびに動かなくなってメンテナンスが面倒、既に開発が止まっている、など今後が不安です。

一番困っている点は UTF-8 に対応していないことで、日記の表示されているページ(UTF-8)から、日本語を入力して検索すると文字化けしてしまいます。

実は Namazu の検索結果ページは EUC-JP で出力されるので、一度、検索結果ページを表示してから、もう一回、日本語で入力すれば文字化けしません。しかし検索機能を使う人はそんなこと知りませんから、ナニコレ…日本語検索できないじゃん……。と思ったはずです。

Google カスタム検索

Namazu の代わりを探して、お試しで Google カスタム検索の検索ボックスを設置しました。

検索ボックスを設置した感想としては、手間要らず、動作も良好、これは便利です。色々なサイトで設置されているのも納得できます。少し使ってみた感想としては、Namazu と比べると Google の検索結果はやや少なく出ると思います。

Google 先生は、相手が有名サイトであれば、多少単語が間違っていようと、見たかった検索結果を返してくれます。ここのように無名なサイトだと、ドンピシャのキーワードを入れても、検索結果に出ないことがあります。おそらくこのサイトは Google にあまりクロールされていないのでしょう。

Google の検索結果はどうしようもないので、Namazu の UTF-8 文字化け問題を直した方が良いのかなあ。うーむ。

[編集者: すずき]
[更新: 2018年 6月 24日 01:05]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

地震と HDD

先日の大阪北部地震でデスクトップマシン本体と、自宅サーバーの外付け HDD が空を舞いました。電源が入った状態で床に叩きつけられたにも関わらず、どちらもデータ読み出しに支障はなく、最近の HDD はすごいな〜!と感心しましたが、寿命は確実に縮んだと思います。

デスクトップマシンは以前の買い替えから約 2年半(サーバーは 1年弱)が経過しており、正常利用だったとしても、そろそろ HDD に故障が出る時期です。サーバーの HDD はまだ買い替えには早いですが、容量アップも兼ねて一緒に替えることにしました。

購入した HDD

購入した HDD は下記の 2種類です。

1つ目は WD Red WD40EFRX-RT2 です。Amazon で 14,900円でした。容量は 4TB、用途は NAS用とあります。回転数は 5400rpm、キャシュは 64MB です。サーバーとデスクトップのメイン HDD として使います。

2つ目は Seagate IronWolf ST4000VN008 です。Amazon で 12,480円でした。容量は同じく 4TB、用途は NAS、サーバー、ゲーム、映像編集向けとあります。回転数は 5900rpm、キャッシュは 64MB です。サーバーの 2台目バックアップ用の HDD として使います。

買ったあとに気づいた

Seagate IronWolf は 6TB 以上と 4TB 以下でスペックがやや違います。具体的には、回転数 7,200rpm(6TB モデル)-> 5,900rpm(4TB モデル)、キャッシュが 256MB -> 64MB となります。同じシリーズだと思って油断していました。悲しい。

[編集者: すずき]
[更新: 2018年 6月 28日 20:49]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2018年 6月 28日 -
      2018年 6月 19日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 7/12 15:28

カレンダー

<2018>
<<<06>>>
-----12
3456789
10111213141516
17181920212223
24252627282930

最近のコメント 5件

  • link 18年07月04日
    すずき 「NEON にも対応してみましたが、やはり...」
    (更新:07/11 21:26)
  • link 18年05月30日
    すずき 「情報ありがとうございます。PT2 2枚差...」
    (更新:06/02 17:27)
  • link 18年05月30日
    通りすがりですみませ... 「私のPC(Win10)ではB−CAS1枚...」
    (更新:06/02 16:42)
  • link 18年05月20日
    すずき 「数えたことはありませんが Windows...」
    (更新:05/22 22:26)
  • link 18年05月20日
    hdk 「Linux も、先日の Meltdown...」
    (更新:05/21 22:55)

最近の記事 3件

link もっとみる
  • link 18年07月08日
    すずき 「[Android と MPEG2-TS その 4] もはや自分以外...」
    (更新:07/12 15:28)
  • link 18年07月05日
    すずき 「[Android と MPEG2-TS その 1] Android...」
    (更新:07/08 23:26)
  • link 18年07月07日
    すずき 「[Android と MPEG2-TS その 3] デスクランブル...」
    (更新:07/08 23:21)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報