Hatena::Grouprubyist

雲雀は高く空を舞い RSSフィード

|

2007-06-10

しかし 17:18 しかし - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - しかし - 雲雀は高く空を舞い しかし - 雲雀は高く空を舞い のブックマークコメント

やはりRailsですなぁ。

文字列にアクセスする 16:55  文字列にアクセスする - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  文字列にアクセスする - 雲雀は高く空を舞い  文字列にアクセスする - 雲雀は高く空を舞い のブックマークコメント

文字列中の特定の場所の文字にアクセスするには配列と同様に角ブランケットインデックスを使用する。このとき返されるオブジェクトは「文字コード」。文字列に治すには.strを使う。

str= "abcdef"
p str[0] #=> 97
pstr[0].chr  #=> "a"

日本語の場合は以下。

str ="あいうえお"
p str.split(//s)[2]  #=> "う”

文字コードシフトJISのときは//s、UTF-8のときは//u、EUC-JPのときは//e

文字列を1文字ずつ処理する 17:16  文字列を1文字ずつ処理する - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  文字列を1文字ずつ処理する - 雲雀は高く空を舞い  文字列を1文字ずつ処理する - 雲雀は高く空を舞い のブックマークコメント

String#each_byteを使う。

以下は、数字文字列を一文字ずつ数値として配列に割り当てる例。

str = "12345"
arr = Array.new

str.each_byte{|elem|
  arr << elem.chr.to_i
}

p arr #=> [1,2,3,4,5]

2007-06-07

ハッシュ (2) 10:21 ハッシュ (2) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ハッシュ (2) - 雲雀は高く空を舞い ハッシュ (2) - 雲雀は高く空を舞い のブックマークコメント

Rubyレシピブックより。

Ruby本を読んだほうがいいのかも。

要素の追加 Hash#store

h = Hash.new
h.store("MacBookPro", "2007June")
p h #=> {"MacBookPro", "2007June"}

ハッシュ内にキーが存在するか Hash#key?

h = {"a" => "nill}

p h.key?("a") #=> true
p h.key?("b") #=> false

ハッシュの要素を削除 Hash#delete

h = {"a" => "b"}
p h  #=> {"a" => "b"}
p h.delete("a") #=> "b"
p h  #=> {}

ハッシュの条件を満たす要素を削除 Hash#delete_if, Hash#reject!, Hash#reject

Hash#delete_ifHash#reject!は同じ動作。Hash#rejectは該当する要素を削除して新たなハッシュを作る。

h = {"a" => 10,"b" => 15,"c" => 100}

h2  = h.reject{|key, value|
  value%10 == 0
}
p h2 #=> {"b" => 15}
p h  #=> {"a" => 5, "b" => 15, "c" => 100}

h3  = h.reject!{|key, value|
  value%10 == 0
}
p h3 #=> {"b" => 15}
p h  #=> {"b" => 15}

ハッシュの全要素を削除 Hash#clear

h = {"a" => 10,"b" => 15,"c" => 100}

h.clear
p h |=> {}

2007-06-06

ハッシュ 18:13 ハッシュ - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ハッシュ - 雲雀は高く空を舞い ハッシュ - 雲雀は高く空を舞い のブックマークコメント

定義する

h = {"apple"=>150, "banana"=>300, "lemon"=>300}
 pp h
{"apple"=>150, "banana"=>300, "lemon"=>300}
=> nil

キーに関連付けられた値を取得する

Hash#[]メソッドかHash#fetchメソッド。

p h['apple']
150
p h.fetch('apple')
150

要素の追加

h = {"apple"=>150, "banana"=>300, "lemon"=>300}

h["mellon"] = 230

つづく!

2007-06-05

YAML (1) 15:08 YAML (1) - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - YAML (1) - 雲雀は高く空を舞い YAML (1) - 雲雀は高く空を舞い のブックマークコメント

とりあえずrequire 'yaml'が必要。


RubyオブジェクトからYAML文字列への変換

obj.to_yaml    # YAML へ変換

YAML::load によって、to_yaml した結果の文字列を Ruby オブジェクトに復元。

obj = ...
decoded_obj = YAML::load(obj.to_yaml)

ついでにMarshalも。

Marshal

MarshalRubyオブジェクトをある一定の方式でバイナリへ変換したり、それを復元したりするためのもの。

obj = ... # 略

bin = Marshal.dump(obj)        # オブジェクトからバイナリへ
loaded_obj = Marshal.load(bin) # バイナリからオブジェクトへデコード

require 'yaml'
yml = obj.to_yaml              # オブジェクトからYAML へ
loaded_obj = YAML::load(yml)   # YAML からオブジェクトへデコード

続けて読む

2007-06-04

xml-rpcをいじる。 15:03 xml-rpcをいじる。 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - xml-rpcをいじる。 - 雲雀は高く空を舞い xml-rpcをいじる。 - 雲雀は高く空を舞い のブックマークコメント

参考にしたサイト

livedoor weather hacksはREST. RESTが何かはまだわからない。

こちらを参考にしつつとりあえずはてぶからブックマーク数を取得。

require 'xmlrpc/client'
 
class HatenaBookmark
  @@URI = "http://b.hatena.ne.jp/xmlrpc"

  def initialize
    client = XMLRPC::Client.new2(@@URI)
    @bookmark = client.proxy("bookmark")
  end
 
 # urlの最大50件まで
  def getNumOfBookmarks( urls )
  # *:不定個の引数を配列に格納した形で受け取ります
    response = @bookmark.getCount( *urls )
    return response
  end
end
urls = ["http://d.hatena.ne.jp/",
    	"http://b.hatena.ne.jp/",
    	"http://www.hatena.ne.jp/",
    	"http://kazuhiro.ty.land.to/blog/"]

bm = HatenaBookmark.new
result = bm.getNumOfBookmarks(urls)

# 結果がどのように入っているのか確認する
p result

# 結果を取り出して表示する
result.each do |url, count|
	puts "#{url} : #{count}"
end

xml-rpcwordpress投稿 15:03 xml-rpcでwordpress投稿 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - xml-rpcでwordpress投稿 - 雲雀は高く空を舞い xml-rpcでwordpress投稿 - 雲雀は高く空を舞い のブックマークコメント

WordPressに投稿してみた。

Wordpressが対応しているAPIBlogger APIと metaWeblog APIMovableType APIあと、wordpressAPI

wordpress2.2で追加されたwordPress独自のxmlrpc apiについてはこちらが詳しい => Notes: WordPress XML-RPC API | ppmweb

一覧はどこかにあるんだろうか。後でとりあえず読む。

コードは以下。

require "xmlrpc/client"

content={"title" => "記事のタイトル", "description" => "本文の内容"}

server = XMLRPC::Client.new2("http://www.example.com/wordpress/xmlrpc")
result = server.call('metaWeblog.newPost','1','ユーザID','パスワード',content,true)

xmlrpc on WordPress続き 16:46 xmlrpc on WordPress続き - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - xmlrpc on WordPress続き - 雲雀は高く空を舞い xmlrpc on WordPress続き - 雲雀は高く空を舞い のブックマークコメント

WordPress 2.2て先月中旬に出たばっかだった。僕のとこはゴールデンウィーク前に入れた気がしたのでver2.1。入れたばかりだから最新版だと思ったんだけどなぁ。あおれんじゃさんとこはどうかしらと思ったらヴァージョン明記してなかった。

というわけで、僕のところでwp2.2 xmlrpc apiは使えなかったので、mt apiでいじってみた。参考にしたのは以下の二ページ。

先ほどのエントリで投稿には成功したので、カテゴリセットしてみた。


irb(main):002:0> require "xmlrpc/client"
irb(main):003:0> client=XMLRPC::Client.new2("ttp://wprdpresspath/xmlrpc")
irb(main):011:0> r = client.call('mt.getCategoryList','BLOGID','USERID','PASS')
irb(main):016:0> r = client.call('mt.getRecentPostTitles','BLOGID','USERID','PASS',
'情報を入手するポストの数')
irb(main):022:0> r = client.call('mt.getPostCategories','ENTORYID','USERID','PASS')
irb(main):040:0> r = client.call('mt.setPostCategories','ENTORYID','USERID,'PASS',
{'categoryId'=>'id','isPrimary'=>'1'}) 
#isPrimaryは第一カテゴリーにするかどうか(?)

mt.setPostCategoriesはカテゴリーを構造体で指定する。複数カテゴリーを指定するときはどうするんだろう?

isPrimaryを変更して他のカテゴリーを割り当てたらカテゴリーを二つセットすることが出来た。では、カテゴリーを三つ以上指定する場合は?

|