2011/08/26

google api blogger

コード貼るしー、と思ってプリチーに見せたいわとか思ってたんで google-code-prettify 使ってました。

でもね、"all indentation for code snippets in my posts became broken" って そうなの、なんか code tag だとインデント壊れちゃってたの。

とりあえず pre に置き換えれば ok っぽかったんですが、 やっとこさ google の api 叩くことにしました。

Blogger API - Google Code まんまですわ。というかもうちょっと先に進んで Developer's Guide: Python - Blogger APIs - Google Code ここ見たんですが、

from gdata import service

blogger_service = service.GDataService('xxxxxxxx@gmail.com', 'xxxxxxxx')
blogger_service.source = 'exampleCo-exampleApp-1.0'
blogger_service.service = 'blogger'
blogger_service.account_type = 'GOOGLE'
blogger_service.server = 'www.blogger.com'
blogger_service.ProgrammaticLogin()

blog_id = '3061113982813699457'

i=1
while True:
  query = service.Query()
  query.feed = '/feeds/' + blog_id + '/posts/default'
  query.published_min = '2009-01-01'
  query.published_max = '2011-12-31'
  query.max_results = 10
  query.start_index=i
  feed = blogger_service.Get(query.ToUri())
  i += 10

  if len(feed.entry) == 0:
    break
  for entry in feed.entry:
    entry.content.text = entry.content.text.replace('<code ', '<pre ').replace('/code>', '/pre>')
    blogger_service.Put(entry, entry.GetEditLink().href)
これでとりあえず code を撲滅? できました 見れてるかな??

2011/05/17

ubuntu beep 鳴らす

Ubuntu 10.10 入れて暫く経つわけですが terminal で beep しないのに気付いていませんでした。 beep させたいな、と思ったんで何で慣らないのか調べましたところ Ubuntu日本語フォーラム / ビープ音を有効にしたい うん、これこれ、と思ったけどどうもこの方は解決してない? とりあえず冒頭にある module を調べてみると
$ lsmod | grep pcspkr
$ 
うん、無いわ。つことで
$ sudo modprobe pcspkr
としたら無事鳴りました。 なんだよー、何で load されてないんだよー、と思ったんですが、
$ grep pcspkr /etc/modprobe.d/*
/etc/modprobe.d/blacklist.conf:blacklist pcspkr
と見事に blacklisted だったので、有効にしときました。

2011/03/08

google-spreadsheet api

備忘でしかないんですがね
Google SpreadSheet の自分のブックの一覧が欲しくなって
Python で取るのがいいかしら? と思って調べました
まぁ、gdata 使えばいいんですけど、すぐなんですけど

# coding=utf8

import getpass
import sys

import gdata.spreadsheet.service


service = gdata.spreadsheet.service.SpreadsheetsService()
sys.stderr.write('e-mail: ')
service.email = raw_input()
service.password = getpass.getpass()
service.ProgrammaticLogin()

feed = service.GetSpreadsheetsFeed()

for i in [(x.updated.text, x.link[1].href, x.title.text)
for x in feed.entry
if x.author[0].email.text == service.email]:
print("\t".join(i))


これでね、
$ python kono_script.py > output.tsv
e-mail: abcdefg@gmail.com
Password:
$
とかすれば output.tsv に出ます

わーい

2011/03/04

map script interfaces wlan

暫く自宅と会社をノートPC持って往復してたんですが
Debian でローテクでやってるんで wifi の設定も貧弱で
/etc/netwerk/interfaces を手で書き直してました
コメントにしたりコメントアウトにしたり
どうなのよそれ、と

で、Debian 系だとその interfaces で mapping っつーの使います
script を走らせて状況判断させて
事前にしてある任意の設定で interface を up できる
っつーのは知ってたけど今までそこまで使い込むことなかったんですが
やるべ、と、一大決心をして、ググりました

何も見ないし何も知らない | テーマ:コンピューター・Web
ん〜、惜しい、その最後のとこに書いてある
「Address(Mac Address)をsedで抜き出したらうまくいくかもしれない。」
それが欲しいんだ!

つわけで自分で作ればいいかと考え直しました
interfaces の mapping から復習しました
$ man interfaces
したら復習できました

例えば
wlan0 という interface に対してスクリプトで動的に設定したい、
という場合
mapping wlan0
script /usr/local/sbin/my_script.sh
map spam ham
map egg bacon
みたいに書きます

で、ifup wlan0 と wlan0 を有効にしようとすると
/usr/local/sbin/my_script.sh に引数 wlan0 が渡され
更に map で始まる行の map 以外の部分が標準入力に渡されます
つまり、
$ echo -e "spam ham\negg bacon" | /usr/local/sbin/my_script.sh wlan0
したみたいになるわけです

でで、このコマンドの出力結果の文字列が
実際に設定されます

ででで、今回は wifi AP の MAC ADDRESS を登録しといて
実際に行う動作の設定へと導いてあげることにしました
/etc/network/interfaces はこんな感じにしたい
mapping wlan0
script /usr/local/sbin/my_script.sh
map XX:XX:XX:XX:XX:XX office
map YY:YY:YY:YY:YY:YY home

iface wifi-office inet dhcp
wpa-driver wext
wpa-scan-ssid 1
wpa-ap-scan 1
wpa-ssid "office api"
wpa-psk "xxxxxxxxxxxxxxxxxxxxxxxx"

iface wifi-home inet dhcp
wpa-driver wext
wpa-scan-ssid 1
wpa-ap-scan 1
wpa-ssid "office home"
wpa-psk "yyyyyyyyyyyyyyyyyyyyyyyy"
で、あとは /usr/local/sbin/my_script.sh が
出力結果として "wifi-office" か "wifi-home" を出力してくれれば
それぞれの設定を施して AP に繋ぎにいってくれるはずです

じゃぁ /usr/local/sbin/my_script.sh どうすんのよ、というと
上のサイトと Debian の examples を見たらこんな感じに
#!/bin/sh
LANG=C
set -e

# 対象 interface で scan して wifi AP の MAC ADDRESS 集め
INTERFACE=$1
ifconfig $INTERFACE up
sleep 1
MACADDRESS_LIST=$(iwlist $INTERFACE scan | sed -n -e 's/^.*Address: \([0-9A-F:]*\).*$/\1/p')
ifconfig $INTERFACE down

which=""
# read は標準入力から1行読んで変数に入れる
while read testmac scheme; do
if [ "$which" ]; then continue; fi
for MACADDRESS in $MACADDRESS_LIST; do
# 設定されてる MAC ADDRESS があれば対応する設定を $which に
if [ "$testmac" = "$MACADDRESS" ]; then which="$scheme"; fi
done
done

#仕上に出力、hit しなかったら "wifi-default" と出す
echo wifi-${which:-default}
どうも sleep が短かいのか
ちょっと調整しないと一発で成功とまではいってないんですが
これで一々設定ファイルいじらなくてもよくなりました

でもさ、どーせさ、みんな Ubuntu 使ってるからさ
こんなことしなくてもサクサク設定できちゃってるわけでしょ?
ぷんぷん

2011/02/19

sysinstall gpt fdisk

検証用の DELL のパソコンが壊れました
電源が入らなくなって電源ランプがオレンジに光ります
http://plusd.itmedia.co.jp/pcuser/articles/0809/30/news074.html
あれ、電源がそもそも弱かったのかしら、この子

で、なぜか TM8000 の載ったマザボと検証であたったケースがあり
放置してたので使ってやるかと DELL の HDD を移植などしてみることに
というか確か DELL の HDD はもともとこの TM8000 のやつに繋いであったので
戻してみただけだったのだ

つうか今更 ATAPI ですよお嬢さん

で、何で放置してたか忘れてたんだけど、
マザボをネジで止めると電源スイッチからのケーブルが届かなかったの
ひどい
とりあえずマザボは固定せずにスイッチが入ることを優先しつつ
後日 LED-30EX とやらを購入しました

しかし遅い、TM8000 が遅いのか何が遅いのか分からないけど遅い
試しに PC-BSD 8.1 と Ubuntu 10.10 を入れてみたんだけど遅い
KDE とか Gnome とかそもそも使わないのに更にこの遅さか
メモリ余ってるから完全に CPU が原因だろうにこの遅さか

というわけで Squeeze でも入れてみようかと思ったんですが
なんとなーく FreeBSD でもいってみるかと思ってまた CD 焼いて
インストールしようと思ったらインストールできないんですよ
sysinstall で Custom で設定して commit しようとすると
"Unable to find device node for /dev/ad0s1b in /dev"
みたいなこと言われちゃって slice 切ってくれないの

で、いろいろググってみたらどうやら HDD が GPT とやらで??
Ubuntu とか PC-BSD とか入れて遊んでたら何か変えられて
sysinstall からいじれなくなってしまっているらしい
Problem running fdisk via sysinstall
このスレッドが分かりやすかった

とりあえず、HDD の最後の部分に何か書かれてるからダメらしく
dd if=/dev/zero of=/dev/ad0 seek=?????????
と、seek をいくつにしたか忘れたけど
sysinstall で見れる block size くらいにしといて
とりあえず何か上書きしてみたらちゃんと sysinstall できました

解決はしたけど理屈は良く分かってないんだけど
眠いからとりあえず解決策だけ書いとくよ!!

2011/02/03

レジストリ 2003 "documents and settings" 変更

Documents and Settings なんて長いし空白入ってるし
いいとこなんて 1 つも無いわ
なんて思って昔設定変えた覚えがあるんですが、
何いじったんだか忘れてしまいました。

Documents and Settings フォルダの移動や名前の変更ができないことを通知するエラー メッセージが表示される
ProfilesDir っつー文字列があったんでこれみたいでした。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
これね、これ、多分
「特定のユーザー用に Windows をインストールした後で、Documents and Settings フォルダとして別のフォルダを指定するには、次の手順を実行します」
とか書いてあるし。

新規で user 作るときにはこの ProfilesDir の下にホームが作られて、
SID とかいうらしい ID が振られて ProfileList の下にレジストリできて
その中にホームの PATH が設定されます。
ProfilesDir で指定の PATH を途中で変えても
その影響範囲はその後に作るユーザーであって
既存ユーザーに関しては書いてあるみたいなことしないとダメみたいです。

で、更に、
All Users とか Default Users とかシステムで使うフォルダが
レジストリの ProfilesDir のあるとこに併記されてますが、
そいつらも移動かコピーしてあげないといけないみたい。

運用始めてから移動するのは嫌だなぁ、これ。

2011/01/30

"libjavaplugin_oji.so"

Java アプレット使いたいと思ったので
プラグインを! と思ったら何か上手く動かない
確か libjavaplugin_oji.so ってのを
適当なところにコピーすればいいと思ったのに!!

困ったなーと思ったら新しいのが出てるんでした
How can I configure java plugin libjavaplugin_oji.so to latest firefox 4 | Firefox Support Forum | Firefox Help
なるほど、近頃の Firefox などでは libnpjp2.so ってのを使うのか

Debian Lenny だったら sun-java6-bin って package に
/usr/lib/jvm/java-6-sun-1.6.0.22/jre/lib/i386/libnpjp2.so
がいたんで
~/.mozilla/plugins とか /opt/google/chrome とかに ln -s したら
何か上手く動いた、よかった

これで Java り放題です