2009年4月アーカイブ

lenovoのサポートセンターに電話したのは、4月27日のこと。
昨日キーボードが届きました!

早速交換。
か、簡単すぎる。。
ThinkPad240の時はもう少し手間がかかった気がするので、いろいろ改良されてるんだなぁ。

「キーボードの取り外し/取り付け - ThinkPad X200, X200s」
http://www-06.ibm.com/jp/domino04/pc/support/Sylphd03.nsf/jtechinfo/MIGR-71226

Nキー、快適です。:-)

X200キーボード代えた

RSSの読み方(暫定案)

| トラックバック(0)
RSSを77つ購読しているのですが、News系のサイトのRSSなどは毎日大量に投稿されるため、1日2日ほっとくと、あっという間に未読数が何百となります(先程見たら今日一日で347が未読投稿)。

RSSの購読にGoogle Readerを利用しているのですが、読んでない件数とかが、news(1000+)なんて表示されると、うげっと軽く心理的プレッシャになり、余計に読みたくなくなります。悪循環。

これはまずいなぁ、何かいい方法ないかなぁとおもっていたら、佐々木俊尚氏のメルマガ、「ネット未来地図レポート 2009.4.27 Vol.037」にヒントが。

>(4)Google Readerで、「これは読む必要があるだろう」と思った記事には、スターマー
> クを付けていき、後から読み返せるようにしていく。(C 整理する)

なるほど。スターマークがあったか。
これで気付きを得て、次のように読むことにしました。

1. Readerで未読投稿の一覧を、タイトルにざっと目を通していく。
2. 読みたいなと思う記事があったら、「詳細は開かずに」スターマークをONにする。
3. 未読投稿すべて目を通し得るまで、1,2を繰り返す。
4. 未読投稿のタイトルに目を通し終えたら、未読投稿を一括して既読にする。
5. スターマークのついた投稿一覧を選び、詳細に読む。

プロセスを見直したことで、結構時間の削減につながりました。

気づいてみれば、なんてことないけれど、こういう些細な問題(一瞬、うげっと心理的プレッシャになる小さな問題)って「おっしゃ。解決すっぜ」と意識的に思うことはほとんどなく、「ま、いっか」とスルーしてしまいがちだよなぁ。無意識的な問題というわけではないけれど、なんというか半意識的問題とでも呼びますか。今回のRSSについていえば、登録しているRSSの数が少ないときにやるような読み方であっても(気になるタイトルを見て、詳細を読んで、なんならサイトへ飛んで、終わったらReaderに戻って...)、「時間はかかるけれど」問題は解ける。すでにある問題の解き方(読み方)を知っているから、別の解き方(読み方)を敢えて考えようとしないとでもいえるのかな。こういう問題って意識的にひろうように心かけないとなぁ。
今この記事を書くのに使っているX200は、実はキーボードが破損しています。
"N"部分。
よく使うだけに、ここが破損すると痛い。。。(アドレスにNが複数あるしね。:-)

まだ保証期間内だし、軽く打てば使えるし、修理に出せばしばらく使えないし、そういえば保証書どこやったっけ、とネガティブ要素がいっぱいで修理に出すのをやめ、だましだまし使っていたのですが、
  • そろそろ有給消化が終わる(サポートセンターは日中電話する必要がある)
  • 仕事が始まったら、平日はしばらく使うことがないので我慢できる
ということで、IBMサービス・センター(IBMスマートセンター?)に電話しました。

すると:
  • 保証書は必要なかった(そもそもマシンの販売開始が去年の8月ぐらい)
  • 修理にマシンを出す必要はない!!(交換用のキーボードが送付されてくるので、こちらでキーボードを交換し、壊れた方を送り返す。)
とのこと。

なんだ。もっと早めに頼んでおけばよかったよ。
ほかのメーカも同じように対応してくれるのかな。
この対応、うれしかったです。
ありがとう、lenovoさん。

X200キーボードとれた
今更ながら、Pythonのサードパーティモジュールを追加する方法を。

easy_installのダウンロード
    http://peak.telecommunity.com/dist/
    ここでez_setup.pyをダウンロード

easy_installのインストール
    コマンドプロンプトにて、次のコマンドを打つ。
    (Pythonを複数インストールしている場合は、インストールするPythonで実行する)
    c:\python26\python.exe ez_setup.py

mechanizeをダウンロード
    http://wwwsearch.sourceforge.net/mechanize/

mechanizeをインストール
    c:\python26\python.exe setup.py install


い、今更だよね。。(-_-;
lxmlを使ってパースするのもいいです。下記にまとめました(2011/1/30)。
Pythonで日本語ページのパース:lxmlでの日本語文字化け回避
BeautifulSoupは、タグ内に'<'があると挙動がおかしくなる。
たとえばアクセス解析用とかにみるスクリプトタグかな。(GoogleAnalyticsはそこらへんちゃんとしてるね。)
たとえば次のような場合:
<script type="text/javascript">
<!--
document.write('<scr' + 'ipt type="text/javascr' + 'ipt" src="http://gavit.nikkei.co.jp/js.ng/cat=frttll?time=' + new Date().getTime() + '"></scr' + 'ipt>');
-->
</script>
こんなのがあると、
HTMLParser.HTMLParseError: bad end tag: u"", at line 186, column 141
なんて感じ。
html5libはちゃんと喰ってくれるね。
#!C:\Python25\python.exe
# coding:utf-8

from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
from html5lib import HTMLParser
from html5lib import treebuilders
import traceback

def useBeautifulSoup(url_path):
    page = urlopen(url_path)
    try:
        soup = BeautifulSoup(page.read())
        print soup.head.title
    except:
        print '** Error **'
        print traceback.print_exc()

def useHtml5lib(url_path):
    page = urlopen(url_path)
    parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
    soup = parser.parse(page.read()) 
    print soup.head.title

if __name__ == '__main__':
    url = 'http://www.nikkei.co.jp/'
    useBeautifulSoup(url)
    useHtml5lib(url)

MTサルベージ

| トラックバック(0)
MTから過去のブログ記事をサルベージする。
とはいってもSQLiteは死んでいるのでSQLでの作業は無理。。
ので、構築されたhtmlファイルから該当部分を取り出すという地味な作業。
手動でやってもいいけど、せっかくなのでPythonでやることに。

Python用のhtml purseモジュールのBeautifulSoapで喰らうとパースエラー。
下記のようなエラーが出る。
HTMLParser.HTMLParseError: malformed start tag, at line 13, column 78
ぐぐってみると、html5libがあるよということ。

html5lib - Google Code

ダウンロードしてC:\Python25\Libにhtml5libを突っ込む(めんどくさいから。。)。

すると今度は日本語の処理で詰まる。
いろいろと調べていると、unicodeはuft-8とはイコールではないと言うことですね。
unicodeはあくまで単なるバイトであって、それを表現するときにutf-8でエンコードするということですな。

参考にしたサイト:
PythonのUnicodeEncodeErrorを知る - HDEラボ

Universal Encoding Detector
これはいい!!

やっちまっただ

| コメント(6) | トラックバック(0)
やっちまいましたよ。
MTのバージョンをアップグレードしようかなとふと思い至ったのが運の尽き。

アップグレードって時点で何かが起こりそうだと思い、念のため、すべてのファイルをftpでローカルPCにダウンロードして保存。
これで問題起こってもOKだと、早速挑戦。

やっぱり、うまくいかない。
途中でこける。
原因の1つは、mtディレクトリをrootに置いていたからかな。そっかだからmtディレクトリが必要なのね。
なんて思いながら、うまくいかないから、元に戻すべと、ダウンロードしていた全ファイルを再度アップ。

どうよ、と管理画面へアクセス。

うお。
DBD::SQLite::db prepare failed: database disk image is malformed(11) at dbdimp.c line 271 at lib/MT/ObjectDriver/DDL/SQLite.pm line 99.
なにそれ。
イヤーな予感がして、ローカルPCにダウンロードしている.dbファイルを、SQLite Studioで開いてみる。。開けない。。(TT)
ファイル、壊れた?
もしや、、、FileZillaの転送をモードを見ると、、アスキー。。。おい、俺。。

いろいろ調べてみると、MTはデフォルトでバックアップ機能を持っているという。。調べとけよ、俺。。orz

仕方がないので、MTで構築されたファイルから必要部分を新しく準備したMTに登録。。。
ついでにアップグレードして、ついでにディレクトリ構造も作り直す。。
投稿が少なくてよかったね、俺。