Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 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 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-05-15

KMRCLを眺める(153) USER-AGENT-IE-P

| 17:09 | KMRCLを眺める(153) USER-AGENT-IE-P - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(153) USER-AGENT-IE-P - わだばLisperになる

今回は、KMRCLのweb-utils.lispからUSER-AGENT-IE-Pです。

名前のとおりユーザーエージェントがIEかどうかを判定するもののようで定義は、

;;; User agent functions

(defun user-agent-ie-p (agent)
  "Takes a user-agent string and returns T for Internet Explorer."
  (or (string-starts-with "Microsoft" agent)
      (string-starts-with "Internet Explore" agent)
      (search "Safari" agent)
      (search "MSIE" agent)))

となっていますが、なぜSafafiを判定しているのかは謎です。そういうものなのでしょうか。

動作例は、
(KL:USER-AGENT-IE-P "127.0.0.1 - - [15/May/2010:15:48:22 +0900] \"GET / HTTP/1.0\" 200 359 \"-\" \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)")
;=> 98

となっていて、98が帰ってくると若干混乱しますが、上記の例の場合、SEARCHの結果がそのまま帰ってきているのでこうなっています。

また、KMRCL内で定義したstring-starts-withも利用されています。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20100515