路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

IE8のプライベートモード

2008-08-22 22:35:30 | Birds-Of-Feather
記事「マイクロソフト、「Internet Explorer 8」にプライベート閲覧モードを追加へ」
http://builder.japan.zdnet.com/news/story/0,3800079086,20379053,00.htm
より。

IE8の「プライベート閲覧モードと聞いてまず頭に浮かぶ使い方は、履歴を残すことなくアダルトコンテンツのネットサーフィンを楽しむというもの」

などといって笑っていられればいいのですが・・・

プライベートモードの搭載は、開発チームが思いつきで付けてみた、などというものではなく、かなり戦略的な行動だと思うのですが、どうでしょうか。

・個人のプライバシーもそうだけれど、情報漏えいにうるさい企業ユーザーにアピールする。

・某G社が永久に残るクッキーやストリートビューで非難を浴びているのは周知の事実なので、それの逆を突く。

・ユーザーのデータを集めにくくすることで、Web 2.0な某G社に打撃を与えることもできるでしょう。

考えすぎかなあ。

メモ: sort -> uniq in Python

2008-08-22 20:43:44 | プログラミング
Pythonでsortしてuniqueしたい。

今までは、
seq = sorted(list(set(seq)))
としてました。

が、2.5で動いていたスクリプトが、2.6でエラー(unhashableな故に)を出すことがあるのに気づきました。

ちょっと考えて、
seq = sorted(seq)
seq = [p for p, q in zip(seq, seq[1:] + [None]) if p != q]
というのをひねり出しました。

これなら、unhashableなオブジェクトでもオヶ!です。

注意。

seq = [None]のときは、下のやり方だとseq = []になります。
その辺は臨機応変に対処してください。
(長さ1の場合をはねるとか、Noneをseqに現れることのない値にするとか)


(2008/08/24 追記)
ちょこっとバグ見つけたのと、イテレータに対応してなかったこともあり、修正版を作りました。

import itertools
def iuniq(enu):
 ps, qs = itertools.tee(enu, 2)
 yield ps.next()
 for p, q in itertools.izip(ps, qs):
  if p != q:
   yield p

必要に応じてsort/sortedと組み合わせてください。

例えば、
print [i for i in iuniq(sorted([1, 3, 5, 3, 6, 8, 1]))]