2009年9月10日木曜日

追記: Rainmeterのスキン、10-Foot HUDの天気予報カスタマイズ

もがわのほとり: Rainmeterのスキン、10-Foot HUDの天気予報カスタマイズ

天気予報カスタマイズだけど、weather.comのxoapのフォーマットが変わったらしく、しばらく前から表示されなくなってた。

;URL=http://xoap.weather.com/weather/local/JAXX0004?cc=*&unit=m&dayf=6
URL=http://xoap.weather.com/weather/local/JAXX0004?cc=*&unit=m&dayf=6&xoap&link=xoap&par=1003666583&key=4128909340a9b2fc

とすれば良い。
parとkeyはUbuntuから流用。
ほんとはちゃんとキーを取得すべきなんだろうけど…どうやら結構流用してる人が居るみたいだからまあ良いやで:P

2009年2月22日日曜日

DD-WRTの設定にはChromeが使えない

fonにDD-WRTを入れた。
暫く使ってなかったので、イーサネットコンバータにしようと思って色々やった。
(それは今度まとめる)

で、大きくはまったので。
DD-WRTはWebインタフェースで設定できる。
ブラウザからアクセスして使うのだが、これにGoogleのChromeが使えない。
一見普通にアクセスできるし動くように見えるんだけど、保存も設定の反映も出来ない。
ERR_INVALID_RESPONSE.
というエラーコードが出てたらソレ。素直に諦めよう。 http://code.google.com/p/chromium/issues/detail?id=1863
chromiumだとパッチが当たってるみたいだけども・・・

FireFoxだと問題ないので、そっちを使うこと。
(IEも微妙に不自然な挙動をすることがあるので)

2009年2月10日火曜日

iPod TouchでGoogle Sync

Google Syncが提供され始めました。
iPhoneとか携帯電話向けってばっかりでTouch向けの記事が無いのでやってみた。
GoogleカレンダーがPushで同期(ネットに繋いだタイミングで双方向に同期)できるのすげく便利。
(コンタクトリストは使ってないから便利さは不明)

m.google.com/sync
に繋ぐと、日本語の場合は「提供されてない」とか言われるけど、言語の選択でEnglishとか選ぶと繋がる。

PCでm.google.com/syncにつなげって言われるので繋ぐと説明のページに飛ぶ。
そこでiPhoneを選んで…とやってくと↓に行く。要はセッティングの説明。

Microsoft Exchangeを使って繋ぐみたいだ。日本語でざっくり解説。
  1. Touchの「設定」から、Mailとかのを選ぶ
  2. アカウントの追加を選ぶ
  3. Microsoft Exchangeを選ぶ
次に、アカウントの設定をする。
  1. Emailフィールドは何でも良い
  2. Domainフィールドは空白で
  3. UsernameフィールドにはGoogleのアカウントを(google.comまで含めて)
  4. PasswordフィールドにはGoogleのパスワードを
これで、上にある次へ(Next)ボタンを押す
  1. Serverフィールドに「m.google.com」と入れる

あとは完了したりOKしたりしていけばできる。(メール、カレンダー、コンタクトリストの3つのON/OFFがあるけどメールだけOFFで)
双方向同期なので、今のiPhod Touchのコンタクトリストとカレンダーは一旦全部消えます。バックアップをとってからにしよう。

びっくりするくらい便利。設定も簡単。オススメ。

2009年1月21日水曜日

Pythonで日本語文字列を扱う

Pythonで日本語文字列を置換しようとする度にググるのでいい加減まとめておく。
前提としてPython 2.6.1だと、文字列は全部Unicodeだと見なされる。で、Unicodeじゃない文字列は単なるバイト列として扱われる。
(Python 2.6.1対応。Python 3.0では未確認)

まず、日本語(たぶんマルチバイト文字全般)の処理方法。
# -*- coding: utf-8 -*-
先頭にこれを書いて、ソースはutf-8で保存する。

# -*- coding: utf-8 -*-
str = "こんにちは世界"
print str
strは当然utf-8で保存されてるし、出力もそう。
Windowsのコンソールなんかでやると文字化けする。

# -*- coding: utf-8 -*-
str = "こんにちは世界"
print str.decode('utf-8')
pythonはユニコードが標準らしい。utf-8をデコードして(ユニコードにして)やる。
Windowsのコンソールだとちゃんと表示する。

# -*- coding: utf-8 -*-
str = u"こんにちは世界"
print str
最初からハードコーディングするならこっちが簡単。uを付けるとユニコードになる。
やっぱりWindowsのコンソールだとちゃんと表示する。

# -*- coding: utf-8 -*-
str = u"こんにちは世界"
print str.encode('utf-8')
意味はないけど、ユニコードをutf-8にエンコードすることも出来る。
Windowsのコンソールだとちゃんと(?)文字化けする。(化け方はさっきと同じ)

# -*- coding: utf-8 -*-
str = "こんにちは世界"
print unicode(str, 'utf-8')
実は、ユニコードへの変換を受け持つ関数(constructor)もある。
encode, decodeよりも判りやすいかも。実は便利な機能付き。
# -*- coding: utf-8 -*-
import sys
str = "\x80こんにちは世界"
print unicode(str, 'utf-8', errors='ignore')

try:
  print unicode(str, 'utf-8', errors='replace')
except:
  print sys.exc_info()[:]

try:
  print unicode(str, 'utf-8', errors='strict')
except:
  print sys.exc_info()[:]

errorsにオプションが指定できる。
ignoreを設定すると、変なのが混じってたら無視してくれる。
replaceは、置き換え文字列(REPLACEMENT CHARACTER, U+FFFD)に置き換えてくれる。Windowsだとcp932でエンコードできねえって怒られる。
strictは、そのまんま処理する。当然デコードできねえって怒られる。(これがデフォルト値)

ファイルを読み込んだり書き出したりするときの文字コードで覚えておくのは次のくらいかな。
euc-jp, utf-8, cp932, shift-jis

個人的には、pythonの文字列に戻してやるdecodeと、書き出すときのencodeを使うのが判りやすいと思う。(変な制御コードが入ってるかもしれないから、エラー処理は必要になっちゃうけど)
文字コードの自動判別とか無理しないで、ちゃんと指定するのが良さそう。

参考: