前の月 / 次の月 / 最新

MuraTaka 速記メモ / 2007-04

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

2007-04-30 Mon

読んでおきたい本::Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版) [Books]

CVS から移行し使用しているが、本来持っている機能の大半を利用していない。。。
一度ちゃんと読んでみようかなと。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
Mike Mason でびあんぐる
オーム社 (2007/04/21)
売り上げランキング: 27540

Everyday Scripting with Ruby を読む 5 [Ruby]

Chapter14から。
p.115 で紹介されている
- Watir: Web Application Testing in Ruby
- OpenQA: Selenium
前者は以前、スクレープしようとしていたサイトがフレームを使っており、かつ Post するデータが非常にやっかいだったもので利用してみた。
このようなブラウザ経由でエミュレートする方式は、結構役に立つときがある。

p156

- open-uri はさくっと Web サイトを読み込むには便利だが、POST は使えないので、POST を使用する場合には、Net::HTTP を使用する。

Chapter 15

・Finding packages like CSV and their documentation.
・A better way of working with files than the File.open you're familiar with.
・How to use messages as nouns as well as verbs. You can do more than just send messages; you can grab hold of thme with variables and decide what to do with them later.


Chapter 16
Ruby Facts: Hashes
Hash についての etc。

Chapter 17
Ruby Facts: Augument Lists
メソッドの引数についての etc。
Ruby を使い始めた頃、「*」を付けた引数の意味がよくわからなかった。
この章に一通りまとめられている。

>> def arrayish(*arg)
>>   arg
>> end
=> nil
>> arrayish(1, 2, 3)
=> [1, 2, 3]
「*arg」は、最後の引数として与える必要がある。
また、* には、配列を展開する意味がある。

キーワード引数の書き方。ハッシュを最後の引数とし、キーワード引数を実現する。
String#center を例に説明されている。
def center(feild_width, keys={})
  spread = keys.fetch(:spred, 0)
  padding = keys.fetch(:padding, ' ')
  # ...

2007-04-29 Sun

読んでいる本::これが英語の謎の正体だ [Books][UseOfEnglish]

これが動詞の謎の正体だ
西村 喜久
明日香出版社 (1997/10)
売り上げランキング: 882232

昔買った本で、最近英語のメールのやり取りの頻度が増えてきたため、再度読み直している。
Amazon で見ると、もう在庫が無いんですね。。

何気に本の裏を見てみると、「KINOKUNIYA $17.05」の表記が。これ、若かりし頃にシアトルに行っていたころに、宇和島屋ビレッジ内にある紀伊国屋で買った本だ!懐かしい。。。

通常の英語本とは異なり、西村喜久氏による独特な英語勉強本。"英語の意味は「力と方向」で決まる!"ということで、英語の謎を解き明かしていく。
そう、初めて海外に出て、これまでの受験英語が全く役に立たないと分かり、海外の本屋で日本の英語学習本を買わざるを得なくなった。。現地で会話をしていて思ったのが、現地の人たちが使用する言葉はそこまで難しい単語は使っていないが、「おっ、そんな単語でそんな表現で言い表せるんだ!」と驚くことしきり。その元になっている法則が知りたく手に取った本がこれ。

■ a と the と無冠詞の意味

・不特定多数の人にどうしても知ってもらいたいことは無冠詞
・2車間で既に認識しているので説明を要しない名刺には、the
  説明を要する名詞には a を使用する

a は、「これから説明しようとする」、「まだ説明していない」という意味がある。

■ this と that

・this は、これから、現在から未来の方向
・that は、過去、結果、生まれてから今日までの奇跡

なるほど、確かに this と that にも方向がある。
that は会話でよく使う。「今、話したこと」は that 一語で表せる。
- Is that OK?
  それでよろしいですか?
例文に以下のようなものがある。

The answer goes like this.

「答えは、次のようになります」って感じですね。
これ、「次のようになります」といのは、マニュアルのような文書でよく使いたくなる。
一般的には、"goes like this" より、よく使われているのは、"is the following"じゃないかな。もしくは、is as follows: って表現をよく見る。

■ at

「一点」を表す。その一点は、動の中での一点。

■ on

on 一点を表すが、at との違いは何か。

on は at の連続を意味し、・・・ on は at よりも先(時計回り方向)に先行する時の方向を意味します。

「一点と進行方向」を意味する。

そして at と on の軌跡によりできる軌道、範囲を in といいます。

また、

「まだ目的とするところに至らないで」「達しないで」という意味から「途中で」という意味がでてくる

さらに、

さらに on は「動いて」「進む」そしてその結果「過ぎて」という意味と、動いて「傾く」という方向を持っていきます。

「傾く」という意味から、on には、「心を1つに傾けて」、「〜に重心を置いて」、「〜に重きを置いて」のニュアンスが出てくるとのこと。

さらに on は"傾いて"その結果「〜に加わる」「加える」を意味します。


■ while と when

while、動詞 ing (進行形)、及び at はいずれも一点を表す。
while と when の違いは?

while が at (秒、分、時間)という時の一点を意味するならば、when は on (日、月、年)を表す"時"の一点を表す

Rubyを使ってWebアプリケーションの脆弱性を早期に検出する [Ruby]

- CodeZine:Rubyを使ってWebアプリケーションの脆弱性を早期に検出する(Web, テスト, Ruby)

Linux障害発生時のメッセージ検索システム「OSSメッセージペディア」 [Linux]

- CodeZine:Linux障害発生時のメッセージ検索システム「OSSメッセージペディア」公開(Webサービス, ドキュメント)

- OSS Message Pedia

これいい試みですね。

遊牧民的企業家 ベドウィン [IT]

- tech venture business 遊牧民的起業家@カフェ
引用されている原文はこちら
- Web Worker Daily Blog Archive Going Bedouin

専用サーバを構築するときにまず行う4つの設定 [Unix]

- ウノウラボ Unoh Labs: 専用サーバを構築するときにまず行う4つの設定

(1) sudo を使えるようにする
...
(2) su を使えないようにする
...
(3) root のパスワードを削除する
...
(4) iptables を設定する

- rootのパスワードは潰さないほうがいいと思う件 - mputの日記。 (2007-03-15)

英語の使い方メモ [UseOfEnglish]

- apply to
  - 〜に当てはまる
  「〜に適用する」と覚えているが、脆弱性などが何に当てはまるのか?などを表現する時にも使用する。
Microsoft Warns of Attacks on Web Service Flaw - Security Fix

The vulnerability applies to Windows 2000 Server and Windows Server 2003 running the DNS Server Service.

- allow
  - 何かができる
  allow は「許す」だが、あまり言葉通りの「許す」という意味では使用されないように思う。
  「何かができる」を示すことが多いかと。
Microsoft Warns of Attacks on Web Service Flaw - Security Fix

Attackers are actively exploiting a newly reported flaw in Microsoft's software that is allowing them to break into vulnerable systems, the software giant warned Thursday.

- cope with
  - うまく処理する
  cope は、「扱う」と覚えていたが、同義の deal よりは、「うまく処理する」、「うまく対処する」などの意味を為すように、何か難題に対処する時によく使われる。
- 開発のそれぞれのフェーズをどういうか?
  ・ Requirements Analysis (要件分析)
  ・ Design (設計)
  ・ Implementation (実装)
  ・ Unit Testing (単体テスト)
  ・ Build Testing (結合テスト)
  ・ System Testing (システムテスト)
  かな・・・。
  要件定義書、外部設計書などのシステム設計用語を英語で言うとなんになりますか?ここ見れば分かるよーというサイトを教えてください。.. - 人力検索はてな
  回答に以下の内容あり。
  1. Contractor Project Initiation Completed & Approved (要件定義)
  2. Requirements completed & Approved (基本設計)
  3. Design Completed & Approved (詳細設計)
  4. Coding/Unit Test Completed & Approved (開発・単体テスト)
  5. Integration/Testing Completed & Approved (結合テスト)
  6. System and Acceptance Test Completed & Approved (システムテスト)
  7. Field Testing Completed & Approved (運用テスト)
  微妙にどうかと思う感じもあるが、なるほどね。

- in doing so
  - そうすることで

ne of the biggest contributions that Rails has made to the industry as a whole was that it challenged the conventional wisdom about the way things should be done. In doing so, it showed that there was a better way by actual demonstration.


- firm belief
  - 強い信念

Research Suggests Weakness in Anti-Phishing Technology(Man-In-The-Middle) [Security]

- Research Suggests Weakness in Anti-Phishing Technology - Security Fix

Googleが乗り換え検索サービス「Googleトランジット」を開始 [Google]

- Googleが乗り換え検索サービス「Googleトランジット」を開始、ルートが地図で一目瞭然 / デジタルARENA
- Google トランジット
Google のマップって、駅名が地図に出てこず、路線を確認する時にはちょっと使いにくいイメージがあった。そこは変わっていないんだけど、若干使いやすくはなったかな。

2007-04-23 Mon

読んでいる本::Rubyist Magazine 出張版 正しいRubyコードの書き方講座 [Ruby][Books]

第3回 DBF までさらっと目を通したが、ついていけていないところあり。。。
ちょっと手を動かしてみないといけない。

ある程度 Ruby を理解している人で、Ruby を骨の髄までしゃぶりたい方向け。

Rubyist Magazine出張版正しいRubyコードの―RubyistのRubyistによる、Rubyistとそうでない人のための
青木 峰郎
毎日コミュニケーションズ (2007/03)
売り上げランキング: 4147
おすすめ度の平均: 4.0
4 わかっているといいかも?

Gmail で S/MIME [Gmail][S/MIME]

- Gmail S/MIME for Firefox
  via Tyzohブログ Tyzoh(タイゾウ)
完全にはサポートしていないようだが。。

Array#zip と Array#assoc [Ruby]

Array#zip は、2つ以上の配列を「横に」連結するメソッド。

>> a1 = ["one", "two", "three"]
=> ["one", "two", "three"]
>> a2 = [1, 2, 3]
=> [1, 2, 3]
>> a3 = a1.zip(a2)
=> [["one", 1], ["two", 2], ["three", 3]]

で、Array#assoc は、上記 a3 のようなペアの配列である association list (alist) (配列の配列)を検索して 0 番目の要素が key に等しい最初の要素を返す。比較は、== 演算子が利用される。

>> a3.assoc("two")
=> ["two", 2]

フィルに定義されているクラス、メソッドをリストする [Ruby]

以下で紹介されている rdefs。
- 青木日記 2006-09-09

- 青木日記 2006-09-09 rdefs.rb
結構重宝。
[2006-12-20] に Emacs の occur を使う方法を書いていたが、これがあればそんなことをする必要はない。。

Ruby のコマンドライン Option 解析 optparser [Ruby]

たまにしか使わないので。。メモっておく。

require 'optparse'

input_params = []
output_filename = nil

parser = OptionParser.new
parser.banner = "Usage: #{$0} [-p param1,param2...] -o path input_file..."
parser.on('-p' '--params=param1,param2', 'Adding params.') do |params|
  input_params = params.split(',')
end
parser.on('-o' '--output=path', 'Name of output file') do |path|
  output_filename = path
end
parser.on('--help', 'Prints this message and quit.') do
  puts parser.help
  exit  0
end

begin
  parser.parse!
rescue OptionParser::ParseError => e
  .....
end

$stderr.puts 'no output file name' unless output_filename
$stderr.puts 'no input files name' if ARGV.empty?

OptionParser#help は自動的にヘルプの要約を作成してくれる。
上記の出力は以下の通り。

Usage: optparser-sample.rb [-p param1,param2...] -o path input_file...
    -p--params=param1,param2         Adding params.
    -o--output=path                  Name of output file
        --help                       Prints this message and quit.

2007-04-22 Sun

eval 系メソッド module_eval [Ruby]

モジュールのコンテキストで文字列 expr を評価してその結果を返す。

class AClass
  module_eval(<<-"EOS")
  def hello
    puts "Hello!!!"
  end
  EOS
end

特異メソッドの定義 [Ruby]

class << anObject
  def hello
    puts "Hello"
  end
end
上記の例で hello は anObject の特異メソッドとなる。

上記の方法以外では、
class Greeting
  def self.hello
    puts "Hello"
  end
end

2007-04-15 Sun

Everyday Scripting with Ruby を読む 4 [Ruby]

まだ、Chapter 13 Scraping Web Pages with Regular Expressions の中。

13.5 Taking the Trip のところから。
affinity list、つまり、その本を買った人が他に買った本を辿っていくというのが、ここでいう Trip。
"also bought..." の後にリストされている1冊目の本を辿り、その本の中の "also bought..." のリストの1冊目を辿り・・・と Trip していく。

技術的なところではこの章で気になったところは特にないが、本文のサンプルソースに誤りあり。
もしかしたら、これを書かれた時には正しく動いていたかもしれないが、ソース的にどうかと思うので、メモっておく。

P.149 以降で書かれてある trip メソッドだが、既に表示された本についてはスキップする処理を入れる。それはとてもいいことだと思うが、

def trip(url, steps=10) 

  so_far = [] 
  steps.times do 
    page = fetch(url) 
    book_info = scrape_book_info(page) 
    so_far << book_info[:title] 
    puts format_output(book_info) 

    next_book = scrape_affinity_list(page).find do | possible |
      not so_far.include?(possible[:title]) 
    end 
    url = next_book[:url]
  end
end

so_far の配列にキャッシュしておき、それに含まれているものについては次回以降スキップしている。
しかし、ここに引用しているソース出だけでは分からないが、そのキャッシュと比較している本のタイトルの抽出場所が異なるのが頂けない。
not so_far.include?(possible[:title]) 
so_far には、
- scrape_book_info(page)
を使って取得した本のこれまで表示されたタイトルが収まっている。
possible[:title] は
- scrape_affinity_list(page)
から取得されたタイトル。
それぞれのメソッドでスクレーピングしている HTML の場所は異なる。双方の場所で同じタイトルを使っていないこともある。
# 実際現在の Amazon のサイトではそうなっている。


ネットワークが絡むプログラムの場合、テストの書き方は工夫しておく。
単純にキャッシュしておけば速度的には問題無いが、今回のケースのような Web サイトのスクレーピングの場合、サイトのドキュメント構造が変わることはよくあること。とはいえ、イチイチアクセスしてテストするのも時間がかかるのでちょっと嫌。
なので、テストは直接アクセスするもの、キャッシュを読むもの、とわけておき、テストを呼び出す仕組みを用意しておく。
[2007-02-18] で触れた分割したテストファイルを読み込む test-all を使う方法。この中で引数に応じて読み込むテストファイルを読み分けるようにしておくとよろしいかと。

MTA 上でフィルタとして動作する SPAM メールフィルタ NNIPF [Secruity]

- NNIPF
  via 404 Blog Not Found:perl - 勝手に添削断念 - NNIPF

2007-04-11 Wed

2007-04-10 Tue

対策遅らせる HTML エンコーディングの「神話」 [Security]

- 対策遅らせるHTMLエンコーディングの「神話」:ITpro


神話1:HiddenフィールドのValue属性などはエンコードする必要がない
神話2:クォート文字はエンコードする必要がない
神話3:Value属性値にHTMLエンコードすると,アプリケーション側でデコード処理が必要になる
神話4:二重にエンコードするのが心配だ
神話5:出力よりも入力の方が対応箇所が少なくて楽だ
神話6:HTMLエンコードだけではクロスサイト・スクリプティングは完全には防御できない


他、参考ページとして。
- 「XSS脆弱性は危険,Cookieを盗まれるだけでは済まない」専門家が注意喚起:ITpro

2007-04-08 Sun

「悪意あるコードの実態」米国と英国のホスティングで80% [Security]

- 常識を覆す「悪意あるコードの実態」--米社調査:ITpro
  2007/03/28

米メディア(InfoWorld)によると,悪意のあるコードを配布しているWebサイトのうち,米国が80%以上を,英国が約10%をホスティングしていたという。以下,カナダ,ドイツ,イタリアが続き,マルウエアの温床と見なされていたロシアや中国は上位に名を連ねていなかった。

Mac::PDF の管理+閲覧を楽にするフリーソフト [Tool][Mac]

- narajin.net: Mac OSX:PDFの閲覧環境を完璧にするフリーソフト2葉
から、
- PDFView
- Yep

Yep は便利かも。

コンピュータウィルスの用語定義::マルウェア [Security]

- コンピュータ・ウイルス(マルウエア):ITpro

IPA 「情報セキュリティ白書 2007年版」10大脅威 「脅威の“見えない化”が加速する!」 [Security]

よくまとまっている。
- 情報処理推進機構:セキュリティセンター:脆弱性関連情報取扱い:情報セキュリティ白書 2007年版 - 10大脅威 「脅威の“見えない化”が加速する!」 -

スピア型攻撃 [Security]

- 第3回 ウイルス対策ソフトは効果なし:ITpro

スピア攻撃で添付されてくるウイルスを対策ソフトが阻止してくれれば,感染は防げる。しかし,実際にはウイルス対策ソフトは無力だ。

 犯罪者は「ウイルス対策ソフトを使って検知されないことを確認した上で攻撃を仕掛けてくる」(ISSの高橋CTO)からである。当然,送られてきたときには対応するパターン・ファイルがないため,ウイルス対策ソフトは反応しない。

スピア型の場合、攻撃対象が特定となるため、

ところが,スピア攻撃で埋め込まれたボットは,パターン・ファイルが提供される可能性が低い。数人から数十人にしか影響が及ばず,検体が見付かりにくいからだ。従来型の不特定多数に仕込まれるボットならベンダーの網に引っかかり,パターン・ファイルが作成される可能性は高まるが,小規模な場合は望み薄である。

という状況もある。

クライアント PC での検知は難しい。さてどこで防ぐべきか。



この記事で取り上げられている「ボットネット実態調査結果」は以下の URL からダウンロード可能。(PDF)
2005/12/29 の資料。
- [[http://www.digitalforensic.jp/Resume2005/koyama.pdf]]

Everyday Scripting with Ruby を読む 3 [Ruby]

ちょっと間が開いてしまったのだが、Chapter 13 Scraping Web Pages with Regular Expressions に入ろうと思う。

1. We first have to know how to fetch a web page into a string.
2. An important tactic for dealing with vast amounts of text is to use regular expressions to restrict the focus to part of the page.
3. Extracting the title and authors requires further use of regular expressions.
4. That different information needs to be bundled together for future use. A new kind of object, the hash , is handy for that.
5. Finally, it all has to be orchestrated with a method that takes the affinity trip.


忘れていた(?)というか、知らなかったこと。

■ String#[](String#slice と同じ)

引数に Regexp を指定すると、str のマッチ位置を返す。String を指定すると、その文字が str に含まれていれば、その文字列を返す。どちらの場合も、マッチしない場合は、nil を返す。

>> str = "Hello Ruby"
=> "Hello Ruby"
>> str[/Rub./]
=> "Ruby"
>> str["Ruby"]
=> "Ruby"

まだ trip のところやっていない。

読んでおきたい本::WEB+DB PRESS 総集編 Vol.1~36 [Books]

前回出た総集編は買っていたのだが、確認してみると、Vol. 24 まで。
それ以降のものはバラバラと購入していただが、ここ1年くらいで内容が非常によくなった印象がある。前回買ったものとダブってしまう号の方が多くなるが、それでもコストパフォーマンスとしてはよい。購入しよう。

購入してみた。
前回の総集編と違い、各号の表紙のページから該当記事に直接リンクがはられていた。これは便利。

WEB+DB PRESS 総集編 [Vol.1~36]
WEB+DB PRESS 編集部
技術評論社 (2007/03/30)
売り上げランキング: 130
おすすめ度の平均: 5.0
5 Web 関連の技術者なら買いでしょ。

読んでいる本::セキュリティはなぜやぶられたのか [Books]

セキュリティに絶対は無いし、常にトレードオフを考えて捉えるものである。
技術的な文書では無いが、ただ脅威に脅えてやみくもに対応するのではなく、リスクをきちんと評価し、正しい対応を取るべき考え方を示してくれている。
まだ全て読んだわけでは無いが。。。

セキュリティはなぜやぶられたのか
ブルース・シュナイアー 井口 耕二
日経BP社 (2007/02/15)
売り上げランキング: 1748
おすすめ度の平均: 4.5
5 セキュリティ自体を考える時に参考になる本
4 ネットワーク・セキュリティからの外挿


- yomoyomoの読書記録 - ブルース・シュナイアー『セキュリティはなぜやぶられたのか』(日経BP社)

JavaでRDBとXMLにアクセスする方法 [Java]

- Part5 JavaでRDBとXMLにアクセスする方法:ITpro

2007-04-07 Sat

無料 PBX ソフト Asterisk [Tool]

- Asteriskとはどんなソフトウエアなのですか?:ITpro
- Asterisk@home Handbook Wiki - voip-info.org

- Announcements trixbox

rixbox is a telephony application platform based on Asterisk Open Source PBX Software. The trixbox application platform makes it fast and simple to install and configure your business-class telephony system.

プロジェクト管理ツール Trac [Tool]

- The Trac Project - Trac
  本家

- インタアクト株式会社--業務内容--公開資料
  trac-ja を無償で提供
- ソフト/Bug Tracking/trac - discypus

- Trac をインストールしてみたよ

- 第2回:「Web2.0スタイル」で短期開発を成功に導く:ITpro
  この記事の中で Trac の活用方法が紹介されている。

2007-04-05 Thu

私はどのようにあなたの弱いパスワードをハックするだろうか? [Security]

- One Man’s Blog How I’d Hack Your Weak Passwords
安易なパスワードの使用には注意ですね。

Vista で強化されたセキュリティ機能 [Security][Widows]

- Windows Vistaのセキュリティ機能を総まくり:ITpro

2007-04-04 Wed

2007-04-03 Tue

本人拒否率と他人受け入れ率 [Security]

「本人拒否率(FRR)」とは、本人をちゃんと本人であると認識してくれる確率。
「他人受け入れ率(FAR)」とは、本人でないのに本人と認識してしまう確率。
- FRR、FARってなに?

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