Hatena::ブログ(Diary)

ten-youの日記 RSSフィード

2010-12-21

エクスプローラーのフォルダのコンテキストメニューに「コマンドプロンプトで開く」を追加する。

フォルダアイコンの上で右クリックした時のメニューに「コマンドプロンプトで開く」を追加するということです。PCでRubyいじるのにあるととっても便利なので。

改めて教えてもらったので忘れないうちにメモ。なお対象はWindowsXPVistaとかは違うかも。

参考にされる方は自己責任で。


1)レジストリエディタを立ち上げる。

「ファイル名を指定して実行」で「regedit」と入力してOKする。

レジストリエディタが起動する。

2)「\HKEY_CLASSES_ROOT\Directory\shell」を開く。

このへんでVistaとXPの違いがありそうです。

ちなみに上記はXPの場合。

3)「shell」フォルダの上で右クリック。「新規→キー(K)」を選択。

「shell」配下に「新しいキー #1」というフォルダが出来ます。

4)「新しいキー #1」の名前を「OpenNew」に変更。

名前変更の際は大文字小文字まで正確に。

5)左側ウィンドウで「OpenNew」を選択した状態で、右側のウィンドウ、(規定)の文字をダブルクリック

「文字列の編集」というメッセージウィンドウが開きます。

6)「値のデータ(V):」入力欄に「コマンドプロンプトで開く」など、好きな文字列を入れる。入力後OKする。

これが右クリックした時に表示される文字列になります。

なので、分かりやすいのが吉。

7)「OpenNew」フォルダ上で右クリック。「新規→キー(K)」を選択。作成。
8)「新しいキー #1」の名前を「Command」に変更。

ここでも大文字小文字お間違いのないように。

9)左側ウィンドウで「Command」を選択した状態で、右側のウィンドウ、(規定)の文字をダブルクリック。
10)「値のデータ(V):」入力欄に「cmd /f:on /k "cd %L"」と入力。入力後OKする。

空白等正確に。

意味は訊かないでくださいw

11)レジストリエディタを閉じる。

閉じた時から有効になります。再起動などは必要ないとのこと。


以上です。お疲れ様でした。

2010-09-02

変数が有効な範囲?

メモというか、完全に走り書き&覚書。


こういうことをしました。

rss.items.each{|item|
  desc = item.description
  reg_desc =~ /a(.*)/
  a = &1
}

p a

これ、aの値は「nil」になっちゃうんですね。

いろいろ思うところはあったけど今は時間がないのでまたあとで。

2010-08-19

TwitterBotを作るにあたっての覚書 Ruby編

こちらはRubyについてのメモ。


書式

  • インデント幅は2
  • インデントにはスペースのみを使用し、タブは使用しない。(環境によりタブ幅が異なるため。)
  • 一行の桁数は最大80桁

結構忘れる。

テキストファイルの読み込みと配列への格納

本の方ではひとりごとを1文ずつ配列に格納し、ランダム出力してましたが、EasyBotterはひとりごとの内容をテキストファイルに分離し、実行時に読み込んで処理してます。こちらの方が「""」の閉じ忘れとか「,」忘れとか防げていいなあと思い、そういう形に改変しました。

で、最初こう書いてました。

posts_rand = [] #空の配列用意
open("テキストファイルへのパスとファイル名") {|file|
  while l = file.gets
    posts_rand.push(l) #配列に1行ずつ追加
  end
}

Rubyで面白かったのは、わざわざファイルのクローズを宣言しないでも良い書き方があること。

上の場合、「open("テキストファイルへのパスとファイル名") {」でファイルをオープンし、「}」で自動的にクローズしてくれるそうです。分かりやすくてありがたい。


……てのは置いといて。

実はこう書いても同じコトが出来るそうです。

posts_rand = IO.readlines("テキストファイルへのパスとファイル名")

これでファイルのオープンからクローズ、さらに1行ごとの配列への格納までやってくれます。

……サギだろーー!?

2010-08-18

TwitterBotを作るにあたっての覚書 Twitter編

誰でもできるTwitter Botの作り方―人気キャラにつぶやかせるを見ながら作り始めたBot作成ですが、結構本のスクリプトから変えてます。

それについて、現時点でどこを変えたかとか、作ってくうちに知ったTwitterの仕様について軽くメモ。後々増えていく可能性大。

……Twitterご存じの方には「いまさら何を当たり前のことを」なこと多数だと思われますのでご注意。


TwitterのIDとか

Twitterユーザーには数字で9桁のIDが自動的に割り振られている(これは登録数の増加によりドカドカ増えていくと思われる)。

TwitterのID取得の際などに入力する英数字の文字列は「screen_name」とに、日本語名は「name」にそれぞれ格納されている。

タイムライン

タイムラインの各ツイート情報には各ユーザーのプロフィール的な情報も含まれる。というかそっちの方が多い。

これはmention、ダイレクトメッセージなどでも同じ。

また、各ツイートにも一意の数字11桁(2010年8月現在)のIDが割り振られている。

検索(Search)

TLやmentionなどにくらべて1ツイートごとの情報が少ない。

ツイートID、ツイートされた日時、ユーザID、screen_name、ツイート、などくらい。nameはなさげ。

フォローとフォロー解除

  • フォローする。>> [Twitterクライアントクラス].friend([ユーザID又はスクリーンネーム])
  • フォロー解除する。>> [Twitterクライアントクラス].unfriend([ユーザID又はスクリーンネーム])

なお、タイムライン、mentionの情報には自分が相手をフォロー済みか否かの情報も入っている。(user下following。フォローしてる=true、してない=false)


前の記事でtwitter_oauthライブラリをfetchで落としてきてましたが、あれ、やっといてよかったと今回思いました。

本で紹介されていたTwitterのAPI Wikiで得られる知識も大事なのですが、結局はRubyと仲立ちをしているこのライブラリでどういう動作になんて名前が割り振られてるか、を知らないとTwitterに対して働きかけられないからです。

例えば「unfuriend」って言葉、wikiのどこ探しても出てきません。フォロー解除のAPIである「friendships/destroy」との仲立ちをしているメソッドの名前が「unfuriend」である、と、ライブラリのソースを直接覗いて見つけ出しました。……見ればすぐ分かる程度のことなんですが(汗)。

とにかく、そういう一手間がいります、ということで。

2010-08-16

RubyでTwitterBotをつくってサーバーにアップしたい 〜cron設定編〜

正直解消できてないことは山ほどあるんですがそれはそれとして。

ひとりごとをつぶやくスクリプトに付いてはSSHでちゃんと動くようになったので、今度はcronから動かしてみることにしました。

が、これがまた一筋縄ではいきませんでした。cronのパスの書き方にも環境変数にもくせありすぎ。

参考にさせていただいたのはno titleと、2008-07-04です。


以下、動かすのに必要になった方法のまとめ。

1)実行コマンドの設定

「CRONの設定」ページの実行コマンドから「新規項目の追加」を選ぶ。

「実行コマンド」テキストボックスに以下のように入力。

cd /home/[ユーザーID]/[Rubyスクリプトの入ってるディレクトリまでのパス] ; /usr/local/bin/ruby /home/[ユーザーID]/[Rubyスクリプトの入ってるディレクトリまでのパス]/[スクリプト名].rb

たとえば、ユーザーIDがhoge、Rubyスクリプトをアップロードしたディレクトリの名前がユーザディレクトリ直下のhoge_ruby、スクリプト名がhogehoge.rbだったら、

cd /home/hoge/hoge_ruby ; /usr/local/bin/ruby /home/hoge/hoge_ruby/hogehoge.rb

となります。


2)環境変数の設定

同じ「CRONの設定」ページにある「環境変数」へ、以下のように追加。

環境変数環境変数の値
RUBYLIB/home/[ユーザーID]/lib
GEM_HOME/home/[ユーザーID]/lib/ruby/gem

ただし「環境変数への値」に入れるパスについては、SSH接続して

%echo $RUBYLIB

%echo $GEM_HOME

と実行してみて、ご自分とこの環境変数がどうなってるか確かめてみたほうがよさげです。

で、結果が上の入力例と違ってたらそちらを優先してください。