ようこそゲストさん

Kerosoft : Modus Operandi

2008/07/17(Thu) Vistaでの証明書インポート時の注意

はてブ情報 はてブに登録 はてブ数 2008/07/17 13:47 Software::Windows
オレオレ証明書など、IEを立ち上げるたびに証明書の警告がうっとうしい場合は、信頼する証明書としてインポートしてしまえば良いのだが、Vista-IE7からはインポート手順がややこしくなっているので注意が必要である。

対象のサイトを開くと「このWebサイトのセキュリティ証明書には問題があります。」という警告が表示される状態から説明を始める。
  • 一旦全てのIEを終了し、IEを「管理者として実行...」する



  • 対象サイトを開くと、再び「このWebサイトのセキュリティ証明書には問題があります。」と文句を言われるが「このサイトの閲覧を続行する」を選ぶ


  • アドレスバーがピンク赤色になっているので、「証明書のエラー」という部分をクリックし、「証明書の表示」を選ぶ


  • 「証明書のインストール」をクリックする(管理者としてIEを実行しないとこのボタンが表示されない)


  • 「証明書をすべて次のストアに配置する」を選び、「信頼されたルート証明機関」に切り替える*1




  • 「次へ」「完了」をクリックする



  • 拇印(sha1)を確認後「はい」をクリックすると「正しくインポートされました。」が表示されるのを確認する



  • 管理権限のIEを終了し、一般権限で立ち上げ直す。
  • 対象サイトを開いた時、「このWebサイトのセキュリティ証明書には問題があります。」が表示されないこと、アドレスバーが赤色にならないことを確認する




なお、この方法では管理者権限が必要になるが、一旦証明書をファイルに落とせば不要?(未確認)
手順としては、一般権限で立ち上げているIEから「証明書の表示」をしたとき、「インストール」(表示されていない)ボタンの代わりに「ファイルへコピー」をクリックし、デフォルトの形式で.cerファイルに書き出し、それをダブルクリックしてインストールする。
この時もストア先を「信頼されたルート証明機関」に変更することをお忘れなく。

*1 : Vistaからはセキュリティ上の観点か、デフォルトがここにならなくなったようです。

参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクはてブしていただけると助かります…。 コメントも歓迎です。

1: shi-ta 2008年11月26日(Wed) 午前9時40分

こんな面倒だったのですね・・・orz
まだ実施していないのですが、これでつまずいてエライ大変です。
情報をありがとう御座いました(_O_)


名前:  非公開コメント   

  • TB-URL  http://mo.kerosoft.com/044/tb/

2008/07/17(Thu) 変数の展開の展開

はてブ情報 はてブに登録 はてブ数 2008/07/17 4:21 Languages::Perl
文字列処理にPerlほどすぐれた言語はない……と考えている今日この頃だが、ちょっとハマったので解決策をメモ。

やりたいこと

「何らかの処理の結果、ある文字列が得られたとする。その文字列と同じ名前の変数名を取得したい」

具体的には、リソースファイルに"この結果は$resultになります"のように埋め込んでおき、スクリプト実行時に変数$resultを代入して、"この結果は25になります"のように表示させたいわけだ。

今まで使っていた手法

リソースファイルをPerl化してしまってrequireすれば、同じ名前空間の変数で、すでに定義されているものは自動展開されるという仕様を使っていた。
埋め込む変数名ごとに正規表現で置換するような面倒な手法に比べると楽にできていたのだが、Perl化する手間とフォーマットが崩れるのが欠点。
拡張子がplになってしまうので*1、HTMLファイルのテンプレートを書いていたところで、vimなんかで読み込むとPerlの色づけしかしてくれなくて不便なのである。


実際どんな手順かというと、リソースファイルとして、
#!/usr/local/bin/perl

# requireされるとき自動展開するためにダブルクォートにしておく
$tmp = << "_EOM_";
この結果は$resultになります
_EOM_

# requireのため、1;は削除できない(結構面倒な仕様)
1;
という代入だけを行うスクリプトを別途用意し、
呼び出し側として、
#!/usr/local/bin/perl

$result = 5*5;
require 'resource.pl';
print $tmp;
のような手順を踏まなくてはいけない。自動展開されるとはいえ、結構めんどい。
また、$tmpや$resultという変数名は両ファイルで合わせておかなくてはならず、use strictとか付けると変数宣言の問題で面倒な事に。

*1 : そりゃ.htmlとか付けてもいいけど、中身perlだしね…不適切。

どうしたかというと

なんとか引数に指定した変数を展開できないかなぁと思って調べていたら、evalなんてコマンドがあった。
存在は知ってたけど、いまいち使いどころが分からなかったヤツ。

これを使うと実にスマートに書ける。
#!/usr/local/bin/perl

# シングルクォート囲みなのでこの時点では展開されないことに注意
$tmp = q|この結果は$resultになります|;
$result = 5*5;
$tmp =~ s/(\$\w+)/eval($1)/eg;
print $tmp.qq|\n|;
この書き方のポイントは、
  • $resultのような展開したい変数がいくつあっても動作すること
  • requireの必要がないこと = requireを使う場合の煩雑さがない
  • 展開する変数への代入を、読み込み後に行えること(requireの場合は、結果が先に分かってからrequireしないと代入されない)
  • (use strict環境下で小細工しなくても普通に動く)
注意として、↑のマッチングだと変数名のすぐ後に英数字が来ると誤爆するので、${result}のような形式のものだけ反応させるようにとか、適宜工夫することを推奨。
参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクはてブしていただけると助かります…。 コメントも歓迎です。

名前:  非公開コメント   

  • TB-URL  http://mo.kerosoft.com/043/tb/
  • 変数の展開の展開 +α Kerosoft : Modus Operandi Keroberos
    変数の展開の展開で、printなどする予定の変数内に埋め込んだ変数名文字列を展開する方法を紹介したが、同じ手法で関数も展開するバージョン。#!/usr/local/bin/perlmy $str = q|この結果は&sum(10, 25)&...