フォト
2009年11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

« 2008年7月 | トップページ | 2008年12月 »

2008年9月

2008年9月 6日 (土)

またProxyと格闘 Chromeインストール編

 GoogleからオープンソースのWebブラウザ「Google Chrome」のβ版が公開された。

 試しにいくつかの社内サイトにアクセスしてみると、噂に違わず動作は軽快な気がする。ネットの記事を見るとJavaScriptの高速化を図ったと書いてあるが、JavaScript以前に起動とかJavaScriptを使用していないページでもさくさく動いてくれるような気がする。これは機能がシンプルな分なのかな。正直シンプルすぎて使いづらいと感じもしなくもないけど。

 そんなことはさておいて、今日書こうとしているのはGoogle Chromeをインストールしようとしたときのお話。以前にも少し書いたProxy認証の話である。

 社内でWebページを提供している立場上、作ったページはある程度いろんなWebブラウザで表示確認をしてみる。

 社内の利用者の大半はIE(及びIEエンジンを利用したブラウザ)か、少数派ながらFireFoxといった感じ。確認する上では一応レンダリングエンジン毎に用意すればいいよなぁと考えて、IE、FireFox、利用者は少ないけどOpera、Safariを自分の端末にインストールしてある。

 そういう意味では今回のGoogle ChromeはSafariと同じくWebKitというエンジンを使っているらしい(Wikipediaにはそう書いてあったという程度の知識だけど)ので敢えてインストールすることも無いんだが、一応見ておきたい。

■まずはインストーラを入手

http://www.google.jp/chrome/

■インストーラの起動

 ChromeSetup.exeを起動する。すぐに

「インターネットへ接続しています」

 というダイアログが表示されるが、その後

「インストールに失敗しました。コンピュータがインターネットに接続されていることと、ファイアウォールでGoogleUpdate.exeが接続許可されていることを確認して、もう一度お試しください。エラーコード=0x80042197」

 と出てくる。それと同時にブラウザが起動されて、Googleのインストーラヘルプセンターのページが表示される(英語)。どうもエラーの内容を説明したものらしく、それによるとイベントビュアーのアプリケーションのページを見ろとのこと。

 イベントビュアーにあった該当のログは次のような感じ。

Network Request Error.
Error: 0x80042197. Http status code: 407.
Url=https://tools.google.com/service/update2 Trying config: source=IE,
named proxy=会社で使っているproxy:proxyのポート・・・<local>.

 ってな感じ。HTTPステータスコードの407は「Proxy Authentication Required」。Proxyの認証が必要ですってこと。インストーラは認証Proxyには対応していないらしい。

 またProxyかよ(´・ω・`) ってことだ。

 以前にも書いた通り、うちの会社では社外のインターネットにアクセスするには会社が用意したProxyサーバを利用する必要があり、Proxyを利用する際にIDとパスワードが必要となる。前に書いたときはLinux上の話だったが、今回はWindowsXPが舞台である。

■さてどうしたものか

 インストーラそのものに参照するProxyを設定するようなところは無かった。もしかしてコマンドラインで指定すればできるのか知らないけど、発表されたばっかりだとそういう情報も少ないんだろうし、その線は置いておく。

 以前、先輩から聞いた話で、「自分のPCの中でProxyサーバ立ち上げて、そいつに認証代行させちゃったら?」なんてことを言われたことがある。確かにその方法を使えば、Chromeインストーラのように認証Proxyに対応していないアプリでも、そいつ自身が認証をすることなく動作することはできそうだ。

 で、ネットを探し回っていたら、stoneというものを見つけた。アプリケーションレベルのシンプルリピータなんだって。シンプルリピータがどんなものか、いまいちイメージできない・・(‥;) でも使い方を見ると、proxyサーバ機能らしい? この解釈は間違い?^^;

 stoneの作者自身が書いた、stoneを使ったProxy代行認証の記事も見つけた。ここはとにかくこいつでなんとかしてみることにする。

■stoneのダウンロード

こちらのページからいただいた。

http://www.nanno.org/sengoku/stone/Welcome.ja.html

■stoneのインストール

 ダウンロードしたzipファイルを展開すると、exeファイルやdllファイルなどが入ったディレクトリができる。これを適当なところにコピーするだけ。

■stoneの使い方

 起動オプションがたくさんあるのだが、とりあえず今回Proxyの認証代行をしてもらうに当たって必要な作業は次の通り。

(1)コマンドオプションファイルを作る

 コマンドラインで直接オプションを入力できるんだけど、長くなったりするのでファイルにしておくことにする。アクセスするときのポートに合わせて、「8080.cfg」というファイルをstoneと同じディレクトリに作った。

(2)コマンドオプションファイルにオプションを書く

 コマンドオプションファイルの中は、通常stoneに起動オプションとして書く文字列を書いておけばいい。

 便利なのは、コマンドオプションファイルの中身については改行を無視して処理をしてくれること。なのて、読みやすいように改行を入れておくことができる。

 ちなみに、環境は以下を仮定している。あくまでも仮定。中身の値は嘘っぱちだ。

  • proxyサーバ名:proxyserver.co.jp
  • proxyのポート:8000
  • 認証に必要なID:takeblizzard
  • 認証に必要なパスワード:password
  • 自PC内でstoneが待ち受けしてくれるポート:8080
proxyserver.co.jp:8000/proxy
8080 "Proxy-Authorization: Basic dGFrZWJsaXp6YXJkOnBhc3N3b3Jk"
localhost

 1行目の解説は不要か。

 2行目のダブルコーテーションで囲まれた部分は、Proxyの認証を通すためのデータ。後半部分はIDとパスワードを:(コロン)でつないだもの(今回の場合は「takeblizzard:password」)をBASE64でエンコードしたもの。使い回すときはここの部分を適宜変更する必要がある。

 BASE64のエンコードは、vectorやなんかに変換してくれるユーティリティなどがあると思うのでそちらで。

 また、Webページ上でBASE64変換をしてくれるようなページもちらほらあるようだけど、変換するものがIDとパスワードだからねぇ・・・関係無いところに変な足跡残したくはないなんて場合は注意が必要。

 3行目はアクセス許可リスト。ローカルからのアクセスしか許さないんだからー(´д`)

(3)stoneの起動

 コマンドラインから、次のコマンドを入力する。

> stone -C 8080.cfg

 自分はこのコマンドラインが入ってるバッチファイルを用意してしまった。このコマンドラインでさえ忘れてしまいそうなので(´з`)y-~

 起動すると、プロンプトには戻ってこない。ちなみにCtrl-Cも効かないみたい。終わらせるときはコマンドプロンプトごと終わらせる。

(4)IEの設定変更

 これは、どうもChromeインストーラがIEに設定されているProxy情報を元に動いてるっぽいので、IEの設定を変更するという話。

 IEが使用するProxyの設定を、通常利用している認証が必要なProxyから、認証を代行してくれるstoneに切り換えるのだ。

 なので、proxyサーバ名には「localhost」、ポートは8080(これはコマンドオプションファイルの2行目にそう書いたから)を設定する。

 Proxyの設定場所がどこかを書いておく必要は無いよな・・・もともと認証が必要なProxyが設定してあるはずなんだし(-_-)

(5)Chromeインストーラの起動

 これでエラーが出ることなくインストールの処理が進み、Chromeを無事インストールすることができた。

 インストールが終わった後はstoneを終了し、IEの設定も元に戻しておく。

 これをしないと、自PC内の知らないアプリが自分のID、パスワードを使って勝手に外のインターネットと通信し放題になってしまうので、これも注意。

■Chromeを使ってみて

 冒頭にも書いた通り、社内のサイト(認証Proxyを通す必要の無いアクセス)はさくさく動いて問題無い。ところが認証Proxyを通して社外のサイトにアクセスしようとすると、一つのページに何度もIDパスワードを要求するは、途中であきらめて表示しなくなるはと、認証Proxyの考慮はあまりされていないということがよくわかりました。ちゃんちゃん。

 しばらく社内ではChromeのことは忘れることにしよう。うんそうしよう。

バージョン管理=バックアップ?

 先日本屋をぶらぶらしていたら、Subversionの使い方みたいな本に目がとまり、思わず購入してしまった。

入門Subversion―Windows/Linux対応 (上平哲 著 )

 ちなみにSubversionはバージョン管理をするためのツールと言われているものだ。

 そういえば、それはそれは大昔Windowsが発売される前のMS-DOS全盛の頃に、雑誌ASCIIの付録か何かで手に入れたMS-DOS版RCSを使ったことがあったのを思い出した。RCSもバージョン管理ツールの一つで、unix由来のツールということで自分にとってはとても物珍しく興味津々に使っていたのを覚えている。

 あれから十数年 (c)綾小路きみまろみさん

 自分が購入したSubversionの本は、一応初心者向けということになっている。

 この本が面白いなと思ったのは、Subversionをバージョン管理ツールではなくバックアップツールの一種と位置付けて書かれていること。なるほど各リビジョンのバックアップが取れて、しかも任意のリビジョンのリストアが可能なのだから、まぁ簡単に使えるバックアップツールだよな確かに。

 思い返してみると、最近自分の作っているWebスクリプトなんかのバージョン管理などろくにしてなくて、作り込みをするタイミングでその時点のソースを日付付きファイル名で同じディレクトリ内にコピーしておくくらいしかしていない。その結果、似たようなファイル名で日付部分だけ異なるファイルがゾロゾロと並ぶような、そんな状態だ。

 バックアップ行為はしているものの、とにかく美しくない。バージョン管理ツールにはうってつけな状態じゃないか、昔使っていたくせに。と、一人落ち込んでみたり。

 そんなわけで、「バージョン管理ツールはバックアップツール」という考え方、自分にはとても感銘を受けた。

 さて。

 購入したSubversionの本によると、最近注目されているらしいこのSubversionというツールは今風らしく、チーム開発で使えてネットワークにも対応しているんだそうだ。

 とりあえず内容はTortoiseSVNというWindowsで利用可能なSubversionクライアントをベースに説明されているので、早速ダウンロードして使ってみたのだがこれがまた少々癖があるなぁ・・・。差分の表示ができずに、ツールがエラーを出して処理をあきらめてしまう。

 で、ネットで調べてみるとどうも差分を表示する部分がマルチバイトに弱いらしく、実際試してみたファイルも日本語EUCで改行コードLFで保存したファイルだったので、まぁこれが原因なんだろうと推測した。

 その後、日本語に強い差分の外部ツールを探してみたりもしたがどうもめんどくさくなってきたので、RCSに逃げることにした。

 RCSの方はあまりコードとかは気にせず、文字化けは文字化けのままでもとりあえず処理をしてくれる。Subversionのようにチーム開発には向かないらしく、一人で使うのが前提のようだけど、自分の要件としては一人で使うことしかなさそう。RCSが自分にとっては面倒が無くて都合がいい。

 以下、使い方メモ。ググればRCSの使い方はいっぱい出てくると思う。

 まずRCSを使った作業の流れは次の通り。

  1. バージョン管理用に、カレントディレクトリに一個ディレクトリ(名前はRCS)を作る。
  2. バージョン管理したいファイルをコマンドで登録(チェックイン)する。
     →登録すると、登録したファイルはいったん消える。
  3. ファイルを書き換えたりしたいと思ったら、登録済みのファイルからコマンド取り出す(チェックアウト)。
  4. 書き換えが終わったら再びコマンドで登録(チェックイン)する。
     →次のバージョンとして登録される。登録されるとまたファイルは消える。

 あとは、3~4の繰り返し。

 そのほかコマンドで次のようなことができる。

  • 登録した情報(登録日とかそのときのコメントとか)の履歴を見れる。
  • 取り出して書き換えをしている最中は、取り出してからどの部分が書き換えられているかを見ることができる。

 自分が使うのはこんなもんかなぁ。

■チェックインコマンド

ci 登録するファイル名

 このコマンドを実行すると、何か文字を入力するよう求められる。

 最初の登録のときはこのファイルの概要を入力し、そのあとの登録のときはそのリビジョンでの変更点などを入力するといいだろう。

 あとあと、その入力したものが履歴コマンドで一覧としてみることができる。

■チェックアウトコマンド

co 取り出すファイル名

 これだと、読み取り専用状態で取り出される。

co -l 取り出すファイル名

 lはlockのl。書き換える目的で取り出すときに-lを指定する。

 こうすると取り出したファイルは読み書きできる状態で取り出される。ロックされてる間は他の人からチェックインできないらしい。

■登録履歴表示コマンド

rlog 登録したファイル名

 チェックインをしてきた過去の一覧を、チェックインしたときのコメント付きで表示してくれる。

■チェックアウト後の差分表示

rcsdiff 対象ファイル名

 最新版の内容は、一つ前の版からどこが変更されているのかを一覧にして表示してくれる。


 チェックイン・チェックアウトはテキスト/バイナリに関わらずどんなファイルでもできるっぽい。

 差分の表示はテキストでないとあまり意味は無いかな。ググるとWordファイルの差分を表示してくれるdiffコマンドなんてのがあったような気もするけど。

 お手軽にやるならRCSの方がオススメだな。自分的には。

 ちなみに、RCSは以下のページから入手した。

http://www.naney.org/comp/rcs/win32/

« 2008年7月 | トップページ | 2008年12月 »