twitter4r cheet sheet

twitter4rのチートシートです。
追加したほうがいいことがあったらコメントください。

twitter4rについて

Twitter APIRubyラッパです。gemで提供されています。

作者 Susan Potter http://susanpotter.net/

リポジトリ Rubyforge http://twitter4r.rubyforge.org/

Google User Group http://groups.google.com/group/twitter4r-users

インストール

$ sudo gem install twitter4r

クライアント生成

 require 'time'
 require 'rubygems'
 require 'twitter'
 client = Twitter::Client.new(:login => 'YourAccount', :password => 'YourPassword'))

その他、コードに直接かかずにfrom_configメソッドなどで認証することもできます。

require 'time'
require 'rubygems'
require 'twitter'

の部分はおまじないだと思ってOK

API制限を取得

 limit = client.account_info
 limit.hourly_limit
 => 150 (とか)

その他の情報は、下記、「API制限情報として取得可能な情報」を参照

ユーザ情報等を取得

自分をフォロー(followers)しているアカウントを取得
 friends = client.my(:followers)
自分がフォローしているアカウントを取得
 friends = client.my(:friends)


取得個数を指定する。

 friends = client.my(:friends, :count=>10)


to_hashする。

 friends = client.my(:friends).map { |f| f.to_hash }

タイムライン取得

自分のタイムラインを取得する(認証必要)
 tl = client.timeline_for(:me)


取得個数を指定する。

 tl = client.timeline_for(:me, :count=>10)


to_hashする。

 tl = client.timeline_for(:me).map {|s| s.to_hash }
友達のタイムラインを取得
 tl = client.timeline_for(:friends)


順に処理する。

 tl = client.timeline_for(:friends) {|status| statusに対する処理(下記、「ステータスから取得できる情報」参照) }
 


ステータスを処理する。

 tl = client.timeline_for(:friends) {|status| p status.text }


ステータスからユーザ情報を取得する。

 tl = client.timeline_for(:friends) {|status| p status.user.name }
特定のユーザのタイムラインを取得(認証不要)
 tl = Twitter::Client.new.timeline_for(:user, :id=>"login name")


取得個数を指定する。

 tl = Twitter::Client.new.timeline_for(:user, :id=>"login name", :count=>10)

検索

たぶん自分のだけ

 client.search(:q => "バルス", :lang => 'ja')

参考 twitter4rでtwitter検索するのに思ったより苦戦 そしてtwitterの仕様

つぶやき

つぶやく
 client.status(:post, 'つぶやき内容')

詳細情報

API制限情報として取得可能な情報
 hourly_limit: 150
 remaining_hits: 136
 reset_time: Sun Nov 22 04:30:03 +0000 2009
 reset_time_in_seconds: 1258864203
ステータスから取得できる情報
 created_at: 2009-11-22 13:17:18 +09:00
 favorited: true/false
 id: 投稿ID
 in_reply_to_screen_name: 
 in_reply_to_status_id: 
 in_reply_to_user_id: 
 source: <a href="http://www.tweetdeck.com/" rel="nofollow">TweetDeck</a>(例です)
 text: "ついっと内容(日本語はエンコードされるので文字化けするかも)"
 truncated: true/false
 user: ユーザ情報(下記「ユーザ情報から取得できる情報」参照)
ユーザ情報から取得できる情報
 created_at: Thu Dec 20 04:21:50 +0000 2007
 description: "あまりにもまとまった情報がないから自分用にチートシート作り中"
 favourites_count: 少ないw
 followers_count: 少ないw
 following: true/false
 friends_count: 少ないw
 id: ユーザID
 location: "" (これなんのlocationだろ?geoじゃないよね?空なのはyourfilehost対策じゃないです。ほんとです。)
 name: yoshi
 notifications: false
 profile_background_color: 9ae4e8
 profile_background_image_url: http://s.twimg.com/a/1258674567/images/themes/theme1/bg.png
 profile_background_tile: true/false
 profile_image_url: http://a3.twimg.com/profile_images/279683789/green_1105_8_480_normal.jpg
 profile_link_color: 0000ff
 profile_sidebar_border_color: 87bc44
 profile_sidebar_fill_color: e0ff92
 profile_text_color: "000000"
 protected: false
 screen_name: yotena
 statuses_count: 653
 time_zone: Tokyo
 url: http://quuzu.jp (うちのサイトです。よかったらどうぞ。)
 utc_offset: 32400

仮想マシンマネージャでKVMイメージを作ってみる。

前提

事前にKVMlibvirtvm-managerなどがインストールされていることを確認
参考)
↓の「Ubuntu オフィシャルのドキュメントのやり方を試す。」部分より下。
http://d.hatena.ne.jp/yotena/20091120/1258722085

特に、GUIでやる場合は、上のURLのエントリーで書いてある、
/etc/vmbuilder/libvirt/libvirtxml.tmpl の編集はkeymap指定意外、必要なかった。

開始

仮想マシンマネージャを開いたところ


[localhost (System)]の部分をダブルクリックするとActiveになる。


もし既存のVMがいるとここに表示される。


[新規ボタン]で新しいVM作成が始まる。


最初の画面。


汎用的に、Imageからインストールする。(vmbuilderを使うとUbuntuなどはImageなしでいけるけど、FTPサイト探したりするのはディストリによっては探しにくいかもしれないので。)

自分のVMにわかりやすい名前を入れ、[Local install media]を選択する。(これはUbuntu 9.10の64ビット版のサーバという意図で適当につけた。


次にImageとOSの種類選択。


Imageは必須。[OS Type]と[Version]は可能な限り特定しとくべきだと思う。


[Memory]と[CPUs]を選択して進む。


ディスクサイズの選択。


[Allocate entire disk now]を外すと、ゲストOSで使った分しかディスクは使用されないのでディスク容量は余裕を持った設定にする。


確認画面。すぐに[Finish]を押さずに次を参照。


ブリッジ接続が必要な場合は[Advanced options]で[bridge br0]が設定できるので、[Advanced options]も必ず確認する。


インストール開始。言語選択。






















SSHサーバだけはどうせ必要になるのでインストールしておいた方が無難。


インストール完了


再起動ですが、自動では再起動しません。ので[Run]ボタンを押してください。


起動画面。


仮想マシンマネージャでも動いているのを確認。


自分で設定したユーザIDとパスワードでログインしてください。

ログイン後、以下を実行すると少しだけ幸せになれる。

$ sudo apt-get install acpid


ここで作った結果は、
/var/lib/libvirt/images配下にイメージディスクが保存される。
あと、/etc/livirt/qemu配下に設定ファイルが保存される。

Ubuntu 9.10 Karmic Koalaでkvm

UbuntuEucalyptusとか試したいのもあるし、KVMを使ってみる。ちなみに初めて使っています。

まずは、以下のような手を使ってインストールしてみました。
(結論からいうとうまくいかなかった。)

KVM単体でイメージを作ってみる。

http://www.atmarkit.co.jp/flinux/rensai/kvm02/kvm02a.html
のやり方で試してみました。

準備
$ sudo apt-get install kvm
$ sudo adduser yosinori kvm
$ sudo reboot
イメージディスク作成
$ kvm-img create -f qcow2 u910.img 10GB
OSインストール
$ kvm -hda u910.img  -cdrom /dev/cdrom -boot d -m 512 -monitor stdio
起動

Desktop版

 kvm -hda u910.img -boot c -m 512 -k ja


Server版

$ kvm -hda u910.img -boot c -m 512 -curses -k ja

注)-k ja 指定しないと日本語キーボードでアンダースコアが入力できない。


これで一応NATによる外部への接続が出きるが、内部への接続はまだできない。


次にブリッジネットワークを作ろうとしたところうまくいかない。
bridgeの設定方法がうまくいかない。kvm起動コマンド中の-netオプション中のscript=/etc/kvm/kvm-ifupの部分とかも、/etc/qemu-ifupとかだったり微妙にディストリが違えば動作環境も違うみたい。

Ubuntu オフィシャルのドキュメントのやり方を試す。

以下を参考にやりなおし
https://help.ubuntu.com/community/KVM
目標はブリッジ接続ですべてのゲストを透過的に同じIPアドレス帯に配置する方法です。


やっぱり対象はホストOS、ゲストOSともにUbuntu 9.10 Karmic Koalaです。

環境チェック

$ grep ' vmx ' /proc/cpuinfo (Intel)
$ grep ' lm ' /proc/cpuinfo
でなにか表示されたらVMサポートされているということ。
ちなみにうちのCore 2 Duoマシンで試した結果は

$ grep ' vmx ' /proc/cpuinfo 
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr \
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm \
pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni \
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm \
ida tpr_shadow vnmi flexpriority
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr \
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm \
pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni \
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm \
ida tpr_shadow vnmi flexpriority

$ grep ' lm ' /proc/cpuinfo 
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr \
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm \
pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni \
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm \
ida tpr_shadow vnmi flexpriority
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr \
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm \
pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni \
dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm \
ida tpr_shadow vnmi flexpriority
インストール
$ sudo apt-get install kvm libvirt-bin ubuntu-vm-builder virt-manager bridge-utils
$ sudo adduser `id -un` libvirtd
$ sudo adduser `id -un` kvm
$ sudo reboot
virshのチェック
$ virsh list --all
Connecting to uri: qemu:///system
 Id 名前               状態
----------------------------------
ネットワークの設定
$ sudo invoke-rc.d networking stop
$ sudo cp /etc/network/interfaces /etc/network/interfaces.original
$ sudo vi /etc/network/interfaces

以下のように編集する。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.0.10
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0


ネットワークの再起動。

$ sudo /etc/init.d/networking restart


ブリッジ接続のみでよくて、vmbuilderでのみ作成する場合は、以下のような設定をしておくと便利。

$ sudo cp /etc/vmbuilder/libvirt/libvirtxml.tmpl /etc/vmbuilder/libvirt/libvirtxml.tmpl.original
$ sudo vi /etc/vmbuilder/libvirt/libvirtxml.tmpl 


オリジナルは以下のとおり。

<domain type='kvm'>
  <name>$hostname</name>
  <memory>#echo int($mem) * 1024 #</memory>
  <vcpu>$cpus</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
#if $bridge
    <interface type='bridge'>
      <source bridge='$bridge'/>
#else
    <interface type='network'>
#if $mac
      <mac address='$mac'/>
#end if
      <source network='default'/>
#end if
#if $virtio_net
      <model type='virtio'/>
#end if
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' listen='127.0.0.1'/>
#for $disk in $disks
    <disk type='file' device='disk'>
      <source file='$disk.filename' />
      <target dev='hd$disk.devletters()' />
    </disk>
#end for
  </devices>
</domain>


これを以下のように編集。

<domain type='kvm'>
  <name>$hostname</name>
  <memory>#echo int($mem) * 1024 #</memory>
  <vcpu>$cpus</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <interface type='bridge'>
      <source bridge='br0'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' listen='127.0.0.1' keymap='ja'/>
#for $disk in $disks
    <disk type='file' device='disk'>
      <source file='$disk.filename' />
      <target dev='hd$disk.devletters()' />
    </disk>
#end for
  </devices>
</domain>

ポイントは、ネットワークのブリッジ設定のところ。


あと、keymap。


次のエントリーにある、仮想マシンマネージャでKVMイメージを作る場合も以下のようにkeymapの設定はしておいた方がいい。

<graphics type='vnc' port='-1' listen='127.0.0.1' keymap='ja'/>
ゲストOS(Ubuntu 9.10 server)をインストール
$ sudo ubuntu-vm-builder kvm karmic --arch 'amd64' --mem '512' \
--rootsize '10240'  --swapsize '2048'  --kernel-flavour 'generic' \
--hostname 'ubuntu'  --mirror 'http://archive.ubuntu.com/ubuntu' \
--components 'main,universe'  --name 'ubuntu'  --user 'ubuntu' \
--pass 'ubuntu' --libvirt qemu:///system --domain u910s64


この面倒くさいパラメータは下記ツールで生成するとよい。
http://people.canonical.com/~kirkland/ubuntu-vm-builder.html
このツールで生成したものに、以下の変更をする必要がある。
" --libvirt qemu:///system"パラメータを追加する。
"hardy" などのUbuntuバージョン名を"karmic"に変更する。


上記パラメータでしばらく待つと、以下が生成される。
{コマンド実行ディレクトリ}/ubuntu-kvm
{コマンド実行ディレクトリ}/ubuntu-kvm/disk0.qcow2
/etc/libvirt/qemu/ubuntu.xml

Qemuでチェック
$ virsh list --all
Connecting to uri: qemu:///system
 Id 名前               状態
----------------------------------
  - ubuntu               シャットオフ

$ virsh
virsh # start ubuntu
ドメイン ubuntu が起動されました。


と、ここで、どーやってサーバに入ればいいんだろう?w
[アプリケーション] > [システムツール] > [仮想マシンマネージャー]でNameがubuntuになっているところをダブルクリックするとコンソールが出る。(よかった)
とりあえず仮想マシンマネージャからOSにアクセスできるようにはなったけど、SSHとかでも使えるようにとりあえず、設定したアカウントでログインする。

ubuntu@ubuntu:~$ ifconfig

でホストと同じネットワークにいることが確認できる。
IPアドレスが判明したところで...。

ssh, acpidは入れとこ
$ sudo apt-get install ssh acpid

ちなみにacpidは仮想マシンマネージャーから電源off/rebootするのに必要。


これでなんとか普通にKVMが使えるようになったはず。


とにかく、困ったのは、
ブリッジの仕組みが分かってなくて、設定がうまく動かなくて何度もやり直したこと。分かってない上にどっかで記述をミスってたのもあったんだと思う。
あと、" --libvirt qemu:///system"パラメータを追加するのを忘れてて、/etc/libvirt/qemu配下にxmlファイルが出来てくれなかったこと。


参考)
全般
https://help.ubuntu.com/community/KVM
acpidについて
http://d.hatena.ne.jp/kiyotakak/20090102/1230945559


ここまで設定できたら下のようなことができるのかな?

virt-manager を使って新規の仮想化ドメインを作成時に、ブリッジが選択できるようになる。
http://moimoitei.blogspot.com/2008/07/ubuntu-kvm-libvirt.html

Bye Unquit Firefox CTRL+W

FirefoxでCtrl+wでタブを閉じる場合、ついつい最後のタブまで閉じてしまい、もう一回Firefoxを起動することがある。これを防止するために、Unquit Firefox CTRL+Wというアドオンを入れていたのだが、どうやらabout:configで出来るらしいので今後はこちらで対応することにした。


(参考)

about:config http://aquapple.com/2009/07/firefox-35-tab/

Unquit Firefox CTRL+W https://addons.mozilla.org/ja/firefox/addon/13017

Ubuntu Oneを使ってみる。


メインメニューから[アプリケーション] > [インターネット] > [Ubuntu One]を選択すると、ブラウザでUbuntu OneへのLaunchPadのサインアップ画面が表示される。メールアドレス、パスワードなどを登録するとこれでUbuntu Oneの使用準備はOK。


インストール直後など、システムのUpdateをしていない状態だと、"Ubuntu One Capability mismatch"というエラーが出るが、[システム] > [システム管理] > [アップデートマネージャ]を起動し、最新の状態に更新すると解決される。


Ubuntu One Capability Mismatch by Google


Web版のサイト自体は英語だが、Notesの編集なども日本語でもOKで使用感は良好。
ただし、このNotes機能の編集では明示的なSaveという動作が見当たらないんだけど、これはwebだけを使用している場合は常時同期されているような動作をしているみたい。


Tomboy との連携については以下のリンクに書かれているようなメモの同期が可能となる。ただ、気になったのは、Webで更新された場合とTomboyで更新された場合で若干挙動が違う気がすること。Web上で入力したメモがうまくTomboyに同期されないときがあるので、同時に両方で編集する可能性がある場合は要注意かもしれない。


Tomboyで更新されたメモについては、[ツール] > [メモの同期]を実行することで即座にWebに対しても反映されているように思う。が、この辺の同期タイミングは若干不安。

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0094?page=2

Ubuntu 9.10 Karmic KoalaでSMARTがエラー?

one or more disk has many bad sectors
(1つまたはそれ以上のディスクが破損しています。
  / ディスクに多くのバッドセクタがあります。)

Ubuntu 9.10のインストール後に上記のようなエラーが出る可能性があるようです。参考URLのスレッドの流れから、多くの人が困っているみたいですが、いまいち確かなことは明らかになっていないように思います。ただ、全体のコンセンサスとしてこれはコアラのバグだろうということになっています。気になる方は、念のため、HDDベンダ等が提供しているディスクチェックツールでチェックすることもおすすめかと。

http://ubuntuforums.org/showthread.php?t=1300590

私の場合も同様のSMARTのアラートが上がりました。私の経験したのは500個ぐらいのbad sectorが検出されたと言うようなものですが、たぶん、普通に動いてたしなかなか考えつらいと思い、まあ、検証マシンなので放置してます。

現象が現れるのが、どれぐらいの頻度なのかは不明ですが、今のところKoalaマシンは3台(IBMのX、Tシリーズ、DELLのVOSTRO1400)でDELLのマシンで症状が出ました。