Ruby

デザインパターン。

何となくデザインパターンを復習。すっかり忘れてしまっていて悲しい。 とりあえず、こちらで公開されているAdapterパターン、Singletonパターンを自分なりに書き直してみた。 Adapterパターン 継承を使った場合 class Banner def initialize(str) @str = st…

YouTubeのAPIを使ってみる。

RubyGemsで「おもしろいモジュールないかなぁ」と漁っていたらyoutubeなるモジュールを発見、さくっとインストール。 gem install youtube 使ってみる。 require 'rubygems' require 'youtube' require 'pp' # http://www.youtube.com/devから取得する DEV_I…

Flickrの画像をはてなに貼り付けるためのHTMLを取得するスクリプト。

ここにFlickrにアップロードした画像を貼り付ける際、今まではFlickItというウィジェットと使っていたのですが、近頃、正常に動作しないし、一枚ずつ手作業で貼り付けるのは面倒だということで、Rubyでスクリプトを作成。 アップロードした日付で処理したか…

ディレクトリ内のファイルを再帰的に処理。

第1版とあまり内容は変わっていないらしい、衝動的に買ってしまったRubyレシピブックの第2版が届いた。 パラパラと眺めていて目に止まったのが以下の処理。 require 'find' Find.find(File.expand_path('~/')) do |path| next unless File.directory?(path) …

はてなブックマークに一括登録。

先ほどのスクリプトで誤って削除してしまったのを復元するため、涙を拭いながら急いで作成。 お勉強よりも作業速度短縮を優先でHatenaBMモジュールを使用しています。 HatenaBMモジュールはRubyGemsからインストール可能です。 gem install hatenabm ファイ…

はてなブックマークから指定されたタグのエントリを削除する。

こちらを参考に作成。 require 'net/http' require 'digest/sha1' require 'rexml/document' require 'time' $kcode = 'u' Net::HTTP.version_1_2 def x_wsse(username, password) nonce = Array.new(10){ rand(0x100000000) }.pack('I*') created = Time.ne…

2つのファイルの差分を取得。

print File.read(ARGV[0]).to_a - File.read(ARGV[1]).to_a コマンドライン引数にファイル名を設定する。

RubyGemsでインストール可能なモジュールを検索。

RubyGemsからリモートでインストール可能なモジュールを検索するには、http://docs.rubygems.org/read/chapter/に gem q -R -n module_name とするとあるけど、動かない。 面倒だけ仕方がないので、 gem q --remote -n module_name としていた。さっき気がつ…

価格.comのAPIを使って検索するモジュール。

すでに作られている方がいるけど、お勉強のために自分の今現在持っている知識で書いた。 require 'open-uri' require 'rexml/document' module KakakuAPI BASE_URL = 'http://api.kakaku.com/Ver1/ItemSearch.asp' class KakakuItem include Comparable attr…

はてなダイアリーからエクスポートしたファイルをテキストファイルに変換。

さっきのエントリの逆の処理。 ダウンロードする処理も書きたかったけど、試し書きの処理を実行してみたところ、プライベートモードに設定されていると403が返ってきてダウンロードできないようなので、そこは手動でやることにした。 require 'rexml/documen…

テキストファイルをはてなダイアリーにインポート。

MacBookのハードディスクが壊れて数ヶ月分の日記が手の届かないところに行ってしまった。 失ってしまったものをいつまで思ってもどうしようもない。前に進まないといけない。今後、こういうことを無くすためにはてなのサブアカウントを利用してはてなダイア…

Railsレシピ。

目次買い。Railsレシピ作者: Chad Fowler,長瀬嘉秀,永田渉,株式会社テクノロジックアート出版社/メーカー: オライリー・ジャパン発売日: 2006/12/19メディア: 大型本購入: 2人 クリック: 37回この商品を含むブログ (37件) を見る

RSSを読み込む。

お疲れ気味なので簡単なやつ。 #!/usr/bin/env ruby require 'rss/1.0' require 'open-uri' open('http://d.hatena.ne.jp/t-imaizumi/rss') do |http| response = http.read result = RSS::Parser.parse(response, false) result.items.each do |item| puts …

動的にメソッドを呼び出す。

携帯電話とかでメールを自動受信しているところを見ると、鶴の恩返しで鶴が機を織っているのを見てしまった場面を思い出すのは何故か。 そんなことはどうでも良いので、動的にメソッドを呼び出す。 #!/usr/bin/env ruby class Hoge public def huga puts 'hu…

Moduleクラスを拡張してごにょごにょ。

クラスを定義するとき使うpublic、alias_methodなどはModuleクラスのメソッドらしい。なので、定義機能を拡張できるとのこと。 よくわかってないのでとりあえず写経。 #!/usr/bin/env ruby class Module @@docs = { } # クラスの定義時に呼ばれる def doc(st…

Threadの同期。

カフェでラスクを食べた。ラスクを前歯でシャクシャクと食べていると、リスになったような気分が味わえるのが好きだ。 昨日に引き続きThread。Threadの同期をやってみる。ほぼ写経。 #!/usr/bin/env ruby class Counter attr_reader:count def initialize @c…

ちょっと背伸びしてマルチスレッド。

注文をタッチパネル式端末から出来る居酒屋に行ってきた。これは便利だ。 こういう端末を見ると仕事柄、ついついUIが気になり「ここはこうしたほうが良さそうだ」「なるほど、そういう理由でこうしているのか」なんて思うけど、席を共にしている人はそういう…

EmacsからRubyを実行。

CarbonEmacsを使い始めて早数ヶ月。Rubyで書いた処理を実行するためにいちいちターミナルから打ち込んでいた日々よさらば。 CarbonEmacsからスクリプトを実行する。 こんな感じで puts 'abc'と実行させたい処理を書き、実行させたい箇所を選択。 そしてComma…

繰り返しを簡単に。

メガネ男子が近頃受けているらしいということで、プロフィールに愛用メガネの画像を載せてみた。だから何だ、この野郎。 それはそうと、Enumerableなるモジュールをインクルードすると繰り返しが簡単に行えるらしいということで試してみた。 #!/usr/bin/env …

例外が発生してもやり直す。

あぁ、我が人生もやり直すことが出来たら。 #!/usr/bin/env ruby ok = false begin unless ok raise '例外発生' end puts '正常終了' rescue unless ok puts $! ok = true puts 'やり直す' retry end end結果。 例外発生 やり直す 正常終了 プログラミングRu…

catchとthrowで大脱出。

久しぶりにミスドに行きポン・デ・ライオン以外のキャラクタが居ることにビックリ。他にはどんなのが居るのだろうと調べてみたら、こんなにも居た。 私の大好きなココナッツチョコレートのキャラクタが居ないのはどういうことか。納得がいかない。 というわ…

自前でuntilのような処理。

昨日、居酒屋→カラオケ→カフェでアイス→ミスタードーナツでドーナツ2つ、なんていう糖尿病一直線コンボを炸裂させてしまったため、胃がダメージを受けてしまい家に引き籠もっていた。 体の調子が悪いと頭の調子も悪くなるのは当然で、あまり勉強進まなかった…

||=で変数初期化をする。

この動画で流れている歌が頭から離れない。ついつい口ずさんでしまう。口ずさんだが最後、人格を疑われてしまいそうなので、職場では注意しなくては。 =でちょっと便利な変数の初期化。 var = nil var ||= 1 p var結果。 1どういう理屈でこうなるかというと …

範囲演算子いろいろ。

8年ぶりくらいにカラオケ屋に行ってきた。 曲を入力する端末がタッチパネル方式になっていて、曲名、歌手名での検索が出来たり、料理の注文が出来たり、おまけにゲームが出来たりして、その発展ぶりにビックリした。 何となくこのAAを思い出した。 というわ…

ブロックの戻り値使ったり、[]を再定義したり。

プログラミングRubyを鞄に入れ近くのカフェへ。 まったりと読もうと思ったら隣の席に座ったおじさんが「バカバカバカバカ…」「しねしねしねしねしね…」と延々と呟き続けていて、注文したココアの味がしないは、本の内容はなかなか頭に入ってこないはと大変な…

動的にクラスを作ってみたり、子供の頃に思いを馳せたり。

何だか自転車に乗りたい今日この頃。自転車に乗って子供の頃に登り切れなかった友人宅前の坂道を、大人の体力と財力を持って征服したくなったから、子供の頃の無駄ながむしゃらさを取り戻してみたくなったから、お前はいつから大人になったのだと三十路にな…

lambdaをランバダと読んでしまったのは私だけではない。

lambda、始めて見た時、ランバダと読んでしまい以降、その姿を見るたびに例の音楽が頭に慣れが出してしまって困っております。同じくランバダと読んでしまった同士をGoogleで検索してみた。 google:lambda ランバダ 結構いる。味方がいるって素晴らしい。 そ…

かかかっ、買っちゃった。

プログラミングRuby 第2版 言語編作者: Dave Thomas,Chad Fowler,Andy Hunt,まつもとゆきひろ,田和勝出版社/メーカー: オーム社発売日: 2006/08/26メディア: 大型本購入: 7人 クリック: 270回この商品を含むブログ (152件) を見るプログラミングRuby 第2版 …

rails.elのrails-run-sql。

Emacsのrails.elでC-c s sと入力するとconfig/database.ymlでのadapterを元にデータベースに接続しsql-modeになるようですが、DarwinPortsでMySQLをインストールすると、MySQLのコマンドはmysqlではなくmysql5となり、そのままでは接続できないので、 sudo l…

スニペットを弄る。

Railsの開発にCarbon Emacsを使っているのですが、こちらを参考に設定したところsnippetが便利。どういう機能かと言いますと、 raと入力しTabキーを押下すると render :action => "action"と展開され、"action"のところにカーソルが移動するのでレンダリング…