前の月 / 次の月 / 最新

MuraTaka 速記メモ / 2005-09

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

2005-09-28 Wed

Python の Web App framework を選択するための道しるべ? [Python]

- PyWebOff

PyWebOff's goal is to try to map out the Python web application framework space so that it's easier for users to determine which framework they should choose.

Perl Cookbook を Python で [Python]

- PLEAC-Python

In this document, you'll find an implementation of the Solutions of the Perl Cookbook in the Python language.

2005-09-26 Mon

久しぶりにゆっくりと blog を読み歩く [Diary]

Mats にっき をまとめて 2005/08, 2005/09(まだ終わってないけど。。)分読んだ。
8月はやっぱり OSCON の話題がメイン。

Ajax生みの親、Jesse James Garrettにインタビューしたpodcast [Ajax]

- udible Ajax Episode 2: Jesse James Garrett Interview
  早速、iTunes に取り込み。
  via Ajax生みの親、Jesse James Garrettにインタビューしたpodcast

ブラウザを Safari に変えてみた [Safari]

Mac OS X の標準ブラウザである Safari ですが、
メイン機を Mac に変えてかれこれ半年、それまで一度も Mac を使ったことが
なかったことと、その利用方法が Mac というよりは、Unix 機として
使っていたため、Mac のアプリケーションを使いこなせていない状態でした。。

Firefox をずっと利用していましたが、ちょい重いのと、レンダリングの速度が
イマイチなところ、後は視覚的なもので、ページを送る(スクロールする)際の残像が
どうも気になっていた。
機能的なところ、使い勝手としては満足していたのですが、
何気に Safari を使ってみると、レンダリングは速いし、
Mac のショートカットキーにも慣れてきていたこの頃、使い勝手がいいことに気づく。
(遅い?)

シンプルなところもよくて Safari を標準ブラウザで使い続けそう。

メールの整理ネタから [etc]

- Getting Things Done: The Art of Stress-Free Productivity
- The inbox makeover

  - The Inbox Makeoverですっきり
  - Matzにっき::The Inbox Makeover
  より。

inbox にメールを残さない、というのは実行済みではあるが、
それは単に振り分けルールを決めているもの以外のメールが inbox に入る訳で、
それを適当に処理しているだけ。
ちょっとポリシーが異なる。

仕事でこうばっさりとやるのはどうかな・・・。

2005-09-25 Sun

O'ReillyのOSCON(オープンソース会議)から [OpenSource]

- O'Reilly Open Source Convention - Goole Maps/Ajax/Web 2.0〜オープンソースの起こす第2のパラダイムシフト

 GoogleのAjaxを中心としたオープンなサービスが、Web 2.0時代の新たなフレームワークとなるのか。また、PCのプラットフォームを越えて、Web上で新たな共通のフレームワークが構築されるのか。そしてそれを率いるのが、オープンソースとなるのかノノ。Web 2.0についての議論は、そのまま次世代プラットフォームの方向性を考えることでもある。

- Sun、Yahoo、Google とオープンソース
- OSCON 木曜日のハイライト

エンドユーザ・コンピューティングについて [etc]

- エンドユーザ・コンピューティング(EUC)の光と影

がんばれ!!ゲイツ君 [etc]

- がんばれ!!ゲイツ君
  読み物として面白い。

iTunes で文字化けしている曲情報を・・・ [iTunes]

一昔前に mp3 に変換した曲で文字化けを起こしているものが数曲ある。
特に気にはしていなかった(気にするべき。。)のでうが、たまたまヘルプを
見ていたら、「曲のタイトルの文字化けを修正する」という項目があり、
変換方法が書いてあった。

変換したい曲を選びます。次に、「詳細設定」>「ID3 タグを変換」と選択します。ID3 のバージョンを選択したり、文字セットをほかのフォーマットに変換したりすることができます。

「ASCII から ISO Latin-1 へ」で文字化け解消。

Python での日本語の扱いメモ [Python]

インタプリタ インターフェイスではどうやってデフォルトのコーデックを指定するばいいのだろう?
とりあえず日本語を正しく扱ってもらうには、

>>> str = unicode("日本語", "euc-jp")
>>> str
u'\u65e5\u672c\u8a9e'
>>> len(str)
3

と unicode 関数にて、しっかりコーデックを指定して Unicode 文字列を作ってやる。
出力する際に、出力したいエンコードでエンコードする。

>>> str.encode('euc-jp')
日本語


しかし、こんなことをしていては、移植性の問題もあるので、
デフォルトのコーデックをちゃんと設定しておきたい。

で、デフォルトのコーデックの指定だが、

unicode() や encode() で引数を省略した場合、デフォルトでは ascii 用 Codec を使用して変換されます。 省略時に別の Codec を使用するには Python ライブラリディレクトリにある site.py の
  encoding = "ascii" # Default value set by _PyUnicode_Init()

  encoding = "euc_jp" # Default value set by _PyUnicode_Init()
などのように書き換える必要があります。


と行なえばよいらしい。
ちなみに、site.py がどこにあるかだが、

>>> import sys
>>> print sys.path

などとして、当りをつけるのがよいかと。
MacPython-2.4 の環境では、

/Library/Frameworks/Python.framework/Versions/2.4/lib/python2

配下にある。

- 日本語環境でのPython (for Python 2.3 or later)
ここによくまとめてくれている。

Python 勉強になるページ [Python]

- Python 講習会 資料
  欲しい要素をコンパクトにまとめてある。
- Python JUG::アーティクル
  本家 Jpan のコンテンツだが、ここは読んどくべき。

- Python ドキュメント
  ここは王道。

Python のシーケンスのソート [Python]

リストと文字列の組込みオブジェクト型では、
その内容をインプレースでソートする。
- list.sort() を使うと、list は永久にソートされ、
  元のソート順を保証できない。
- 辞書をソートするには、キーや値のリストを抽出し、そのリストをソートする。
- タプルはソートできない。
  → タプルはイミュータブル。
  → 一度タプルをリストにコピーし、コピーしたリストをソートする。

Python 文字列の扱いメモ [Python]

- Python では変数やオブジェクトをインプレースでは変更せず、
  変更したオブジェクトのコピーを返す。
  なので、戻り値をもらい使用すること。
- Python での文字列の扱い
  - Python では文字列は単なるシーケンスとして扱われるので、
    文字列オブジェクトに対して、直接抽出/操作できる。
  - 複雑な文字列処理を行ないたい時は、string モジュールを使用する。
  - Python での正規表現は、re というモジュールを使用することで実現する。
    Perl の正規表現のセマンテクスをサポートしているため、
    Perl の正規表現をそのまま使用できる。

- 正規表現
  - re 外部モジュールを使用する。
  - 正規表現は、r'' 演算子を使用して、未加工の文字列として指定する。
  - 基本的な検索を行なうには、re.search() を使う
  - 検索が成功すると、MatchObject を返す。
    失敗すると、None を返す。
  - 一致した要素の抽出には、findall() を使う。
    これは MatchObject ではなく、特定の文字列内で一致したリストを返す。
    - グループが使われていない場合、一致したテキストを返す。
    - 1つのグループが使われている場合、一致した全てのテキストのリストを返す。
    - 複数のグループが使われている場合、各グループの入ったタプルになる。
  - MatchObject
   search(), match() は MatchObject を返す。
   MatchObject は、一致したグループの内容に関する情報と、元の文字列内で
   一致が発生した位置情報が格納される。
  - Python の置換はデフォルトでは全置換となる。
    変更数を制限するには、sub などの4番目のオプション引数である count を指定する。

Zope が使えるレンタルサーバ [Zope]

- KK-NETレンタルサーバーサービス
- RapidSite
  VPS サービスで利用可能。
- rsaServ
  VPS サービス。ここは安い。
  - VPSは重い?

QR コードをメールでやり取り [QR][京ぽん]

- QRコードリーダー(2次元コード解析)

2005-09-24 Sat

京ぽんを使い始める [京ぽん]

これまで Air-H を使っていたのですが、
このご時世、自身のノート PC を持ち歩いて仕事をすることもなくなりましたので、
利用する機会が減ってしまっていました。
また、128k 常時接続の契約をおこなっていたため、金額的にも重く。。

外での接続手段が無くなってしまうと、ちと困ることになってしまうので、
その手段は残しつつ、経費的にも楽なプラン・・・ということで、
京ぽん AH-K3001V を使うことにしました。

携帯電話としても、機体が軽く、あまり余計な機能もついていないところが
気に入りました。

Opera ついにライセンス料無料に [Browser]

- Opera Software、ウェブブラウザー『Opera』無料版の広告バナー除去のライセンス料を無料に
10 years aniversary で無料でライセンスを配布しておりましたが、
ついにビジネスモデルの見直しを行なったようです。

2005-09-23 Fri

もんたメソッド [Presen]

- 「もんたメソッド」は○○なプレゼン手法だ
  本家?関連する記事、ツール類のリンクもあり。
  - もんたメソッドの簡単サンプル

2005-09-22 Thu

firefox の便利ツール [Firefox]

- Greasemonkey

指定ドメイン・URIに対しユーザーサイドスクリプトを追加することの出来る拡張です。ユーザースタイルシートではできない細かな動作指定が出来ます。

えむもじら::メール削除のしくみ [Thunderbird]

- えむもじら::メール削除のしくみ

なるほど、そうなんだ。
どうりでデータファイルを直接覗いてみると過去に消したはずのメールが残っていたりした訳だ。

文字認識 [Tool]][形態素解析]

- 巴(TOMOE)
  楽しそう。
- Ajax を使った手書き文字認識
  こちらでこのツールの学習データを使用しているらしい。
  このツールも面白い。

Referrer (Inside): [2006-06-27-3]

2005-09-20 Tue

2005-09-19 Mon

Plone の機能/権限管理メモ [Plone]

- 通常は権限はロールと関連づけられ、
  グループはロールと関連づけられることで間接的に権限と関連づけられる。

- ユーザ
- グループ
  ユーザの集合
- ロール
  権限の集合
- 権限

Plone の活用事例 [Plone][Python]

- ryousei's Home
  - オープンソースカンファレンス2004で発表した「Ploneによる業務ワークフローの実装」の資
  - OSC2004で発表したワークフローの資料を OSC2005 を機に加筆修正しました。

■ Zope/Plone を利用したサイト

- SOHO情報コミュニティ
- Portal Office Server

CMS いろいろ [CMS]

- ねこすけのCMS::一覧
- CMS(コンテンツマネージメントシステム)を利用しよう

結構あります。。

- XOOPS
- MovableType
- Pukiwiki
- Serendipity
- Geeklog
- pLog
- Xaraya
- phpWebThings
- eNvolution
- RUNCMS
- Mambo
- MD-Pro
- e107
- PHPNuke
- CPG-Nuke
- PostNuke
- Zope
- Plone
- Drupal
- SnipSnap

今導入に向けて考えているのは、Plone。

Web ページのキャプチャをとるツール [Web]

- WebScan.JP
 via 激しく使えるサイト

Python のお勉強チュートリアルを読み終えて [Python]

[2005-09-18] からポツポツと行なっているのだが、
- Python チュートリアル
を手を動かしつつ、読み終えた。

いやぁ、なかなかよい言語だと思う。

可読性、扱い易さという点で Ruby を好んでいたのだが、
仕事で使う場合、まず環境から揃えて・・・ということで、
実際に利用する機会が少ない。
Perl は便利でほとんどの環境で使えるため、重宝はしているが、
やっぱり読みにくい・・・

Ruby にあるもう一つの大きなウィークポイントとしては、
実行速度の遅さ。

Ruby に感じているよいところ、
実行速度を兼ね備えた Python。

使っていこうかな。

チュートリアルによれば、この後は、
- Python ライブラリリファレンス
へ目を通した方がよいとのこと。

Python 演算子 in [Python]

Python の演算子に in がある。
「所属テスト」ということであるが、
よく使われるのは、

for x in [1, 2, 3]:

のようなケース。

面白いと思ったのは、文字列での演算にこれを入れるケース。

>>> str = "This is a pen"
>>> if "pen" in str:
... print str
...
This is a pen

Python 標準ライブラリメモ [Python]

- 10. 標準ライブラリの簡単なツアー

- shutil
  ファイルやディレクトリの日常的な管理作業のために、より簡単に使える高レベルインタフェース。
  - shutil -- 高レベルなファイル操作

Python オブジェクトの永続化 pickle [Python]

Python にもオブジェクトの永続化の方式が用意されている。

>>> import pickle
>>> value = ('the answer', 42)
>>> fw = open('./tt.txt', 'w')
>>> pickle.dump(value, fw)
>>> fw.close()
>>> f = open('./tt.txt', 'r')
>>> x = pickle.load(f)
>>> x
('the answer', 42)
>>> f.close()

モジュールがどんな名前を定義しているか調べる [Python]

例えば、sys がどのような名前を定義してるか?

import sys
dir(sys)

で調べられる。

Ruby で言えば、Class.methods のようなものかな。

dir() は組込み関数や変数の名前は列挙しないので、これらの名前を表示した場合には、
__builtin__ で定義されているので、以下のようにする。

import __builtin__
dir(__builtin__)

2005-09-18 Sun

Python::ループのテクニック [Python]

- 5.5 ループのテクニック
 
- 辞書に対してループを行なう
  -> iteritems() メソッドを利用すれば、キーと値を同時に取り出せる
- 配列に対してループを行なう
  -> enumerate() 関数を使うとインデックスと要素を同時に取り出せる
- 2つまたはそれ以上の配列型を同時にループするために、関数 zip() を使用して、
  要素を一組にする。
  -> zip() 一連のシーケンスをとり、タプルのリストを返す。
     各タプルには、指定された各シーケンスの n 番目の要素が含まれる。

>>> ques = ['name', 'age', 'favorite color']
>>> ans = ['Taka', '30', 'blue']
>>> zip(ques, ans)
[('name', 'Taka'), ('age', '30'), ('favorite color', 'blue')]
>>> for q, a in zip(ques, ans):
... print 'What is your %s? It is %s.' % (q, a)
...
What is your name? It is Taka.
What is your age? It is 30.
What is your favorite color? It is blue.

リストの内包表記により、明快にそして柔軟に [Python]

- 5.1.4 リストの内包表記

リストの内包表記 (list comprehension) は、リストの生成を map() や filter() や lambda の使用に頼らずに行うための簡潔な方法を提供しています。結果として得られるリストの定義は、しばしば上記の構文を使ってリストを生成するよりも明快になります。


sample script をみて納得。

Perl でよく使う関数の Python への対応 [Python][Perl]

- map
  -> map()
- grep
  -> filter()

Python の間接的な関数呼び出し [Python]

- 動的に関数を呼び出したいが、あらかじめ関数名や指定する引数がわからない
  → apply ステートメント

func = 'myfunc'
apply(func, (1, 'text'))


- map ステートメント
  Perl の map 関数とほぼ同等と思っていよい。

@nums = (1, 2, 3);
@cubes = map $_**3, @nums;


は、Python では、

nums = (1, 2, 3)
cubes = map(lambda x: x**3, nums)

と書ける。
Lambda は無名関数ステートメント。

ちなみに、上記をリストの内包表記で書くと、

nums = (1, 2, 3)
cubes = [x**3 for x in nums]

と書ける。
最近はこちらが推奨されているらしい。

Python のお勉強 はじめ [Python]

とりあえず使う必要があるので、
まずは環境面をこれまでみてきた。
これからは手を動かして慣れていこうと思う。

- Python チュートリアル
をまずは読む。

高橋メソッドの Perl module [Perl]

- 高橋メソッド
  おもしろい。。

Python での RSS のパース [Python]

- Python で RSS をパースする方法について調べる

feedparser というライブラリがあるらしい。

- Universal Feed Parser

Parse RSS and Atom feeds in Python.


ダウンロードして、解凍したら

$ python setup.py install

Python に関する参考 URL あれこれ [Python]

- mod_python マニュアル
- python(207) - TokuLog!
- Python
  - Perl, Python, Ruby の比較
  は興味深い。

Referrer (Inside): [2005-09-19-5]

2005-09-17 Sat

2005-09-16 Fri

Python での日本語 [Python]

JapaneseCodecs を入れればよいことは書かれてあるが、
インストールはしてみたが、その後、何を設定してやればよいのかよくわからない。

/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site.py

の encoding を変えればいいのかなぁ・・・
# 情報が無い・・

現在の状態は、Python 2.3 で、2.3 用の JapaneseCodecs を入れた状態。

スクリプトに日本語を入れると、Non-ASCII character が入っていると怒られる。

とやっていたところ、
- ウィキペディア::Python
にて、

Python 2.4 からは、日中韓国語用のコーデックが標準でディストリビューションに含まれるようになったため、現在では日本語の処理に問題はほとんどなくなった。

とあった。

ならば!と、MacPython-OSX-2.4.1-1.dmg を DL し、インストール。
Ver. 2.3 は残したままだが、共存は大丈夫か?

MacPython の実行ファイルは、

/usr/local/bin

に、ライブラリ等は、

/Library/Frameworks/Python.framework/Versions/2.4/

にインストールされた模様。
元々入っていた 2.3 から、

/System/Library/Frameworks/Python.framework/

配下に入るものと思っていたが、予想がはずれた。

$ which python

とやると、

/usr/local/bin/python

になっており、

$ python -V
Python 2.4.1

ということで、ちゃんと環境も変わった模様。

ただ、ソースファイル中に日本語を使うと相変わらず、

DeprecationWarning: Non-ASCII character

のエラー・・・
何かやらないといけないのかな・・・

- Re: 日本語のコメントを記述するには?

ソースコードにShift_JISの文字列を含む場合は、
ファイルの先頭に
# -*- coding:sjis -*-
と記述すればメッセージは出なくなります。
もちろん、JapaneseCodecsがインストールされている必要があります。

これだ!!
ちなみに、チュートリアルにもちゃんと書いてあった。
- 2.2.3 ソースコードの文字コード方式 (encoding)

ASCII 形式でない文字コード化方式 (エンコーディング: encoding) を Python ソースコードファイル中で使うことができます。最良の方法は、 #! 行の直後に一行かそれ以上の特殊なコメントを挿入して、ソースファイルのエンコードを指定するというものです:

# -*- coding: iso-8859-1 -*-

- 3.1.3 Unicode 文字列
ここも参照のこと。

デフォルトのエンコーディングは通常 ASCIIに設定されています。ASCIIでは 0 から 127 の範囲の文字だけを通過させ、それ以外の文字は受理せずエラーを出します。 Unicode 文字列を印字したり、ファイルに書き出したり、 str() で変換すると、デフォルトのエンコーディングを使った変換が行われます。



EUC の場合は、

#! /usr/local/bin/python
# -*- coding:euc-jp -*-
print "日本語"

これでやっと解消。

あと、日本語の処理系について、
- やっつけ系日本語処理
的にやるしかなさそう。。

JIS = 'iso-2022-jp'
EUC = 'euc-jp'
CP932 = 'cp932'
SJIS = 'shift_jis'
UTF8 = 'utf-8'
UTF16 = 'utf-16'
ENCODES = CP932, SJIS, EUC, JIS, UTF8, UTF16

def tojis(s):
    jistext = None
    for enc in ENCODES:
        try:
            jistext = unicode(s, enc).encode(JIS)
            break
        except:
           continue
     return jistext

2005-09-15 Thu

Plone とは? [Plone][Python]

- Plone 2
の説明が概要を掴むにはわかりやすい。
- PloneはZopeをベースとしたOSSのサーバサイドCMSツール
- CMFと呼ばれるZopeのフレームワークを採用し、高度なコンテンツ管理が可能
採用として、

Ploneは高価な商用CMSに匹敵する機能を持つと言われ、ハワイ州政府、NASA、コンチネンタル航空、Computer Associates、OSDL、さらに日本でも毎日新聞社、JETROなどで採用されている。

がある。

面白いのは、Plone というより、Zope のそもそもの仕様だが、
コンテンツもロジックも全てオブジェクトとして管理されている点。

■ その他参考URL
- plone.org
  本家
- Plone Book
- plone.jp
- PloneSiteInJapan
- plone book
- Plone 雑記帳
  - Plone カスタマイズメモ
- takanory.net
  かなりいろいろ。
- COREBlog

Blog(ブログ) / Weblog(ウェブログ) / ウェブ日記を構築,運用するためのシステムです。WebアプリケーションサーバZope上で稼働します。

- Zenkai

Fink をアップデートしておく [Mac][Fink]

GUI からのアップデート
0.23.6-11 から 0.24.10-11 へアップデートされた模様。

Plone and Zope インストールメモ [Plone][Zope][Python]

今入れようとしている環境は Max OS X なのだが、
どのパッケージで入れ込めばベストなんだろうか。

Max OS X の場合はソースからコンパイルかけることもできるし、
バイナリパッケージ化されたものを使う手もある。
なんとなくだが、Max OS X 用にバイナリパッケージ化されたものの方が、
安定していそうで、かつ Max に特化したご褒美もありそうな気がする。

Zopeのダウンロード に、
Max OS X パッケージの Zope-2.7.4.zip がある。

また、
- Zope and PloneをMac OS X Serverにインストール
の中で、

我が家のサーバは、Mac OS X Server 10.3にplone.orgからダウンロードしたPlone 2.0.4 Installer for Mac OS X 10.2 and 10.3をインストールして環境を作っている。

という情報もあり、
- Plone
を覗いてみると、確かに

Download Plone for Mac OS X (27 MB) Mac OS X installer - includes Python and Zope - Final Release

が用意されている。

こっちで入れみるか。

すんなりインストールは完了。

/Applications/Plone2/

配下に Python も含めて全て入った模様。

/Applications/Plone2/Library/Software/Zope277/

配下に、Python, Zope ディレクトリがあり、Python/bin 内にある python を叩いてみると、

$ /Applications/Plone2/Library/Software/Zope277/Python/bin/python -V
Python 2.3.5

とのご返事でした。

起動は?

/Applications/Plone2/QuickStart.html

を見ると、

/Applications/Plone2/Tools/start Default

と書いてある。

デフォルトで 8200 port となっている模様。
でアクセスしてみると、何もしていないのに日本語化されていてビックリ。

言語に関しては、
[サイトの設定]->[ポータルの設定]
にて、デフォルト言語 English となっていたので、Japanese へ。

にしても多機能だ。
徐々に使い込んでいこう。

2005-09-14 Wed

Python に関係するメモ [Python]

- Python Japanese Environment
- 魅惑の Python
  Mac OS X 環境に重点。
- Splitter for ZCTextIndex
  きっと後で役にたつ。

日本語のテキスト検索をするためには、日本語が分かち書きできる ZCTextIndexのための Splitterをインストールします。


- blogSetomits http://matatabi.homeip.net/blog/setomits
- MacPython で Unicode

Python を使い始める [Python]

まずは現在の MacOS X 10.3.9 がどのような状態か?

Kterm にて叩いてみる。

% python -V
Python 2.3


これって所謂 MacPython ってやつなのかな?

- Python標準リリース
を覗いてみると、Python 2.4.1 がリリースされている。

日本語の対応はどうなっているのだろう?

- JapaneseCodecs

を入れる必要があるようだが、現在 MaxOS X に入っているものに合わせるにはどれを入れれば?

バージョン 1.4.9 (2002年10月8日)
  Python2.3用Mac OS X 10.3.x用インストーラ

があるので、これを試してみる。
さて、何をもって正常にインストールされたことを確認すればいいのでしょう・・・

ちなみに、Python のライブラリは、

/System/Library/Frameworks/Python.framework

に含まれており、今回インストールした JapaneseCodecs は

/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages

にインストールされている。

Zope について [Python][Zope]

- Zope
  結構詳しい。

SSL のキャッシュについて [SSL/TLS]

- IIS SSL サーバーとクライアントのキャッシュ要素の設定方法
  - Internet Explorer の 「SSL 状態のクリア」 オプションについて

Internet Explorer は SSL (https) サイトにいったんアクセスすると、その SSL セッションで使用した SSL のセッション ID や、サーバーに提示したクライアント証明書の情報など、SSL セッションの情報をメモリー上にキャッシュします。引き続き通信を行う際には、このセッション情報を再使用することによって、SSL のネゴシエーションの際のオーバーヘッドを減らすことができます。

OpenSSL の s_client を利用して SSL 通信を監視する [SSL/TLS][OpenSSL]

OpenSSL の s_client サブコマンドを使用することで、
HTTPS のコネクションを確立し、通常の HTTP サーバに対するのと同様の
コマンドによって情報を取得することが可能となる。

オプションについて幾つか。
- prexit
  コネクションの終了時にセッション情報を出力する。
- state
  SSL セッション情報を出力する。
- reconnect
  サーバとの間で、同じセッション ID を使って5回コネクションを
  確立する。
  サーバ上でセッションのキャッシュがきちんと機能していることを
  確認するための診断ツール。

以下、実行例。

% openssl s_client -connect 192.168.0.1:443 -prexit -state
Loading 'screen' into random state - done
CONNECTED(00000370)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=0 /C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
verify error:num=21:unable to verify the first certificate
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
 0 s:/C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
   i:/O=ABC.com, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Lia
b. LTD./OU=For ABC.com authorized testing only. No assurances (C)VS1997
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDszCCA12gAwIBAgIQEuASMCZBjeZ18mpJWdvZCzANBgkqhkiG9w0BAQUFADCB
qTEWMBQGA1UEChMNVmVyaVNpZ24sIEluYzFHMEUGA1UECxM+d3d3LnZlcmlzaWdu
LmNvbS9yZXBvc2l0b3J5L1Rlc3RDUFMgSW5jb3JwLiBCeSBSZWYuIExpYWIuIExU
RC4xRjBEBgNVBAsTPUZvciBWZXJpU2lnbiBhdXRob3JpemVkIHRlc3Rpbmcgb25s
eS4gTm8gYXNzdXJhbmNlcyAoQylWUzE5OTcwHhcNMDUwMzE4MDAwMDAwWhcNMDUw
NDAxMjM1OTU5WjBlMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xDTALBgNV
BAcUBEN5dW8xETAPBgNVBAoUCFZlcmlTaWduMQswCQYDVQQLFAJTRTEXMBUGA1UE
AxQOdC1uaXNoaW11cmEtbXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANWQ
L00FniftXQoEE4/HdXjqWp4/hQNNpnxj1foE0hLEpmcL7UWcQe5ZP15GCwnn4GTZ
yiAoSBcBeL3iKtFUQpiyi6en+ULcxHofX+FpnCO5hBqTCOUptJP0K+L7UQWqYCe/
+wtvqSsRqMlkUj3n2paAJd6pswBXtcXM4p0d+vG3AgMBAAGjggFeMIIBWjAJBgNV
HRMEAjAAMAsGA1UdDwQEAwIFoDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3Js
LnZlcmlzaWduLmNvbS9SU0FTZWN1cmVTZXJ2ZXIuY3JsMIGsBgNVHSAEgaQwgaEw
gZ4GC2CGSAGG+EUBBwEBMIGOMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJp
c2lnbi5jb20vQ1BTMGIGCCsGAQUFBwICMFYwFRYOVmVyaVNpZ24sIEluYy4wAwIB
ARo9VmVyaVNpZ24ncyBDUFMgaW5jb3JwLiBieSByZWZlcmVuY2UgbGlhYi4gbHRk
LiAoYyk5NyBWZXJpU2lnbjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2ln
bi5jb20wDQYJKoZIhvcNAQEFBQADQQAZbQdaQMRBYp1LD7kh5d/EznxZrxJDsdDE
e2KLZ+MMZAibW4SgDO+BAsfppSI31f8A/tJTl0UCabB8dVphAANs
-----END CERTIFICATE-----
subject=/C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
issuer=/O=ABC.com, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. L
iab. LTD./OU=For ABC.com authorized testing only. No assurances (C)VS1997
---
No client certificate CA names sent
---
SSL handshake has read 1087 bytes and written 330 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
SSL-Session:
    Protocol : TLSv1
    Cipher : RC4-MD5
    Session-ID: A21B0000D6DF13DF986A6B2BA09C143F8B2E971E0955970B3FC489B83C727528

    Session-ID-ctx:
    Master-Key: 2741C3F94F61B73985CAA9080C784EFA7B3E7BFF105E261D01633C0195D93CCA
2C3504A864A69C313FE03BF99783C86D
    Key-Arg : None
    Start Time: 1126679382
    Timeout : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: https://192.168.0.2/index.html
Date: Wed, 14 Sep 2005 06:33:16 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Mon, 11 Apr 2005 11:01:10 GMT
ETag: "b08cd7c4853ec51:d8c"
Content-Length: 13156

read:errno=0
SSL3 alert write:warning:close notify
---
Certificate chain
 0 s:/C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
   i:/O=ABC.com, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Lia
b. LTD./OU=For ABC.com authorized testing only. No assurances (C)VS1997
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDszCCA12gAwIBAgIQEuASMCZBjeZ18mpJWdvZCzANBgkqhkiG9w0BAQUFADCB
qTEWMBQGA1UEChMNVmVyaVNpZ24sIEluYzFHMEUGA1UECxM+d3d3LnZlcmlzaWdu
LmNvbS9yZXBvc2l0b3J5L1Rlc3RDUFMgSW5jb3JwLiBCeSBSZWYuIExpYWIuIExU
RC4xRjBEBgNVBAsTPUZvciBWZXJpU2lnbiBhdXRob3JpemVkIHRlc3Rpbmcgb25s
eS4gTm8gYXNzdXJhbmNlcyAoQylWUzE5OTcwHhcNMDUwMzE4MDAwMDAwWhcNMDUw
NDAxMjM1OTU5WjBlMQswCQYDVQQGEwJKUDEOMAwGA1UECBMFVG9reW8xDTALBgNV
BAcUBEN5dW8xETAPBgNVBAoUCFZlcmlTaWduMQswCQYDVQQLFAJTRTEXMBUGA1UE
AxQOdC1uaXNoaW11cmEtbXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANWQ
L00FniftXQoEE4/HdXjqWp4/hQNNpnxj1foE0hLEpmcL7UWcQe5ZP15GCwnn4GTZ
yiAoSBcBeL3iKtFUQpiyi6en+ULcxHofX+FpnCO5hBqTCOUptJP0K+L7UQWqYCe/
+wtvqSsRqMlkUj3n2paAJd6pswBXtcXM4p0d+vG3AgMBAAGjggFeMIIBWjAJBgNV
HRMEAjAAMAsGA1UdDwQEAwIFoDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3Js
LnZlcmlzaWduLmNvbS9SU0FTZWN1cmVTZXJ2ZXIuY3JsMIGsBgNVHSAEgaQwgaEw
gZ4GC2CGSAGG+EUBBwEBMIGOMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJp
c2lnbi5jb20vQ1BTMGIGCCsGAQUFBwICMFYwFRYOVmVyaVNpZ24sIEluYy4wAwIB
ARo9VmVyaVNpZ24ncyBDUFMgaW5jb3JwLiBieSByZWZlcmVuY2UgbGlhYi4gbHRk
LiAoYyk5NyBWZXJpU2lnbjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC52ZXJpc2ln
bi5jb20wDQYJKoZIhvcNAQEFBQADQQAZbQdaQMRBYp1LD7kh5d/EznxZrxJDsdDE
e2KLZ+MMZAibW4SgDO+BAsfppSI31f8A/tJTl0UCabB8dVphAANs
-----END CERTIFICATE-----
subject=/C=JP/ST=Tokyo/L=Cyuo/O=ABC.com/OU=SE/CN=t-host-ms
issuer=/O=ABC.com, Inc/OU=www.verisign.com/repository/TestCPS Incorp. By Ref. L
iab. LTD./OU=For ABC.com authorized testing only. No assurances (C)VS1997
---
No client certificate CA names sent
---
SSL handshake has read 1417 bytes and written 412 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
SSL-Session:
    Protocol : TLSv1
    Cipher : RC4-MD5
    Session-ID: A21B0000D6DF13DF986A6B2BA09C143F8B2E971E0955970B3FC489B83C727528

    Session-ID-ctx:
    Master-Key: 2741C3F94F61B73985CAA9080C784EFA7B3E7BFF105E261D01633C0195D93CCA
2C3504A864A69C313FE03BF99783C86D
    Key-Arg : None
    Start Time: 1126679382
    Timeout : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---

Perl で https アクセス [Perl]

Crypt::SSLeay がインストールされていれば、
通常 http でのコンテンツアクセスに使用する LWP::Simple を利用することで、
アクセス可能。
https だからと言って、特別なことをする必要はない。

Perl でマイクロ秒の測定 [Perl]

- Time::HiRes モジュールを利用する。

マイクロ秒での経過時間の取得例。

#! /usr/bin/perl

use Time::HiRes qw( gettimeofday tv_interval );

# 経過時間の取得
$t_before = [gettimeofday];
sleep(1);
$t_after = [gettimeofday];

$elapsed = tv_interval($t_before, $t_after);

print "$elapsed\n";

2005-09-12 Mon

プログラムの出力を制御する [Perl]

■ STDERR と STDOUT をまとめて変数に代入する。

$ret = `cmd 2>&1`;


■ STDOUT は変数に代入。STDERR は破棄。

$ret = `cmd 2>/dev/null`;


■ STDERR は変数に代入。STDOUT は破棄。

$ret = `cmd 2>&1 1>/dev/null`;

2005-09-11 Sun

Perl CGI エラーメッセージの追跡 [Perl]

CGI::Carp をくみ込むのがよさげ。

Web サーバによっては、Content-Type ヘッダが STDOUT に生成される前に
STDERR にデータを吐き出と CGI スクリプトの実行を中止するというものもあるので注意。

CGI::Carp を組込むことで、warn と die の出力に時間など付加情報が加わった上で、
エラーログに出力される。

うるう秒について [IT]

- Linux をうるう秒対応にするための設定
- 来年の元日は1秒だけ長い 7年ぶりに「うるう秒」

- 今年末の新年カウントダウンは「うるう秒」で一味違う
- 計算機時間は?
Java の java.util.Date クラスでは、API 的にはうるう秒をサポート。
実装されているかどうかは、OS に依存。

Win で SSLDump [SSL/TLS][Tool][Windows]

.NET 2003 でコンパイルをかけるが、うまくいかず。
- ssldumpをWindowsにインストール
  - ssldumpビルド続き
  成功例がなさげ。。。

ならば、Cygwin でチャレンジ。

configure をかけたら、libpcap が無いとの事なので、
- tcpdump/libpcap
からダウンロード/インストール。

・・・・libpcap も configure でひっかかる。

SSL の基本的な説明が欲しい [SSL/TLS]

- 身近なPKI SSLを理解する
この辺がやさしい?

S/MIME 参考 URL メモ [S/MIME]

- S/MIME入門

メディアタイプ [Web]

- メディアタイプ一覧

Net::SSLeay を使うために [Perl]

win 環境に構築中。
ppm で Net::SSleay では見つけてくれなかった。
- Perlモジュール/LWP
にて

ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd

で取得できるとのこと。
元ネタは、
- HTTPS protocol with ActiveState Perl

A copy of the needed library ssleay32.dll was found in
C:\WINNT\system32\ssleay32.dll. If this is compatible with the version (0.9.7g)

used to compile the Perl module, all that is needed to
complete the installation is to ensure
C:\WINNT\system32\ssleay32.dll is in your PATH environment variable.

Fetch ssleay32.dll? [no]
Aborting download of ssleay32.dll.
Successfully installed Crypt-SSLeay version 0.51 in ActivePerl 5.8.6.811.

2005-09-08 Thu

2005-09-06 Tue

ザ・リッツ・カールトン [Business]

「最高の顧客満足」を追求したクオリティの高いサービス。
レクサスブランド戦略のコアとなった、
「神秘的」とまで評される感動を呼ぶサービス精神とは。


PRESIDENT 2005 9.12号のトヨタ特集にて取り上げてあったトヨタも学んだ
〜「リッツ・カールトン」流接客法〜

- ザ・リッツ・カールトン

金持ち文化なんて・・・とどこか斜に構えていたというか、
毛嫌いしていた分野ではあるが、ここまでプロフェショナルな精神で行なわれている
サービスには興味がある。

ザ・リッツ・カールトンの従業員教育の基本的な考え方は、
顧客を心からおもてなしし、満足してもらうには、
従業員自身が心から満足していなければならない、ということにある。


このホテルでは、一回目より三回目、そして十回目と利用頻度が増す毎に
満足度は向上していく。
それはゲストヒストリーと呼ばれるデータベースに顧客の好みや嗜好などの情報が
蓄積されていき、妻や夫あるいは両親よりも自分のことを理解してくれていると顧客に
感じさせるようなサービスが提供されるからだ。

トヨタの社員が共有する軸 [Business]

1. 相手の話をよく聞く
2. 何が問題かよく考える
3. 激励する、提案するという姿勢
4. どうしたら勝てるのかという知恵を出す習慣
5. お互いに相談し合う
6. 現地現物主義の徹底
7. まずやってみるという姿勢

2005-09-04 Sun

2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2009-01-02 23:56