ruby

Thingsのプロジェクト期限をGoogleカレンダーに登録する

Nozbeの良いところはGoogleカレンダーの同期で、悪いところはWebベース(Macのアプリもあるがあんまり良い出来とはいえない)。Omnifocusの良い所はたくさんあるけど、悪いところは異常に値が張るところ。Org-modeの良い所はEmacsで使えるという点で、悪いと…

Pathname

Ruby標準ライブラリのPathnameは「パス名をオブジェクト指向らしく扱うクラスです」とのこと。

SyntaxErrorはScriptErrorを継承している

タイトルの通り。StandardErrorを継承しているわけではないので、rescueで例外クラスを指定しなかったときに捕捉できない。こういうことを書いたってことは普段からエラー処理が適当だってことがよく分かる。しっかりしたい。ちなみにScriptErrorのサブクラ…

Module.included

7つの言語 7つの世界作者: Bruce A. Tate,まつもとゆきひろ,田和勝出版社/メーカー: オーム社発売日: 2011/07/23メディア: 単行本(ソフトカバー)購入: 6人 クリック: 166回この商品を含むブログ (52件) を見る 「7つの言語 7つの世界」を読んでいて、 Ru…

RubyのMethodクラス

Twitterを眺めてたら、Method#source_locationというものを知ったのでclass Methodを読んでた。メソッドのオブジェクト化は 12.method(:"+") のように Object#method を使う。 #任意のキーとメソッドの関係をハッシュに保持しておく methods = {1 => obj.met…

「新潟の Rubyist が集まるイベント」に参加したです

新潟の Rubyist が集まるイベント : ATND に、僭越ながらイベントを仕切る側で参加しました。 イベント開催の動機 こんなイベントをやろうと思ったきっかけは、 Twitterとかそういう感じのところで新潟のRubyのイベントはないの〜????的な書き込みを見た…

ARGF

Ruby の組み込みライブラリにある ARGF は スクリプトに指定した引数 (Kernel::ARGV を参照) をファイル名とみなして、 それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクトです。 ARGV が空なら標準入力を対象とします。 ARGV を変更すればこ…

Pry で次のブレークポイント

binding.pry でデバッグするとき、次のブレークポイントへ飛ぶみたいなことをする時は、 pry-nav を読みこめば良い。step, next, continue が利用できるようになる。いつも忘れる。

autodetect': Could not find a JavaScript runtime.

久々に Rails を触っている。generate しようとしたら autodetect': Could not find a JavaScript runtime.JavaScriptエンジンが必要らしい。Ruby に V8 を組み込んだ therubyracer というものがあるのでそれをインストールしたら解決。

ローカル変数一覧

ruby でローカル変数一覧を取得するには Kernel#local_variables を呼ぶ。あるメソッド内の変数一覧を返すようなメソッドを作りたい時は、 binding を渡して eval してあげれば良い。

Enumerable#cycle

Enumerable#cycle をブロックなしで呼ぶと無限ループの機能を持った Enumerator が返ってくる。zip の例のように使うと便利。

メモ化の方法

てきとうに手にとった逆引き本に、メモ化の例が書いてあった。ネストが気になるなら、コメントアウトしてある後者の方法をとる。

TRENDONAU

TRENDONAUTwitter Trends や buzztter とか見ていると面白い。でも、そのトレンドがなぜトレンドになっているのか知るためには、トレンドに関連する呟き一覧を見なければ分からないということが多く、リンクをクリックしたりするのが面倒だと思った。なので…

Rake : タスクを動的に生成して並列に実行

タスクにパラメータを渡して並列実行したかったのだけど、他に良い方法が思いつかなかった。

Rake : Task 内で別の Task を呼ぶ

Rake::Task に対し、execute で実行できる。引数も渡すことができるので、パラメータを変更する実験等で使える。一回だけ実行させたい場合は invoke。

HOT-COLA

SONYのイヤホンをつけて作業をしていると周りの音が聞こえない。新しく研究室に来たB3が声を掛け辛いかもしれないので、用があるときに押してもらうことで僕を呼び出せるWebアプリを作った。 ソフトウェアインストールの対応などをしないといけないので、か…

要素の存在をチェックするための Hash を作りたい

自然言語処理等では、ストップワードリストにこれから処理する語が含まれているか?というチェックをすることが多い。 これを Ruby で書くとき、リストが大きいと Array#include? では遅い場合があるので、 stop_words[ word ] = true のようにしてチェック…

文字列の to_yaml での挙動

最近は簡単なデータ構造をほとんど YAML で扱っている。 標準ライブラリの yaml では UTF-8 な文字列をバイナリデータ扱いするので to_yaml すると日本人の人間様には読み辛い。gem で yaml_waml をインストールして require すると便利に使用できた。

ruby/stanfordparser

stanfordparserのrubyラッパーをインストールするために、RubyJavaBridge(rjb)が必要となる。 sudo JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 gem install rjbで「ERROR: Failed to build gem native extension.」と言われたので、java-1.6…

DWMスケジューラ

DWM(Day,Week,Month)の単位で復習をすると暗記の効率が良いという、よくある感じの記事が流行っていた。そういう記事を見ても、スケジュール表を組むスクリプトを組み始めるだけで、やる気が空回りするのがオチ。 以下は英単語学習本で好評な DIALOGUE 1800 …

StopIteration 例外

Enumerator#next は、次の要素がないと StopIteration 例外を発生させる。 loop メソッドは StopIteration 例外が発生すると終了するので、 loop { p e.next } のように使える。

define_method について

動的にメソッド定義ができる define_method は便利だけど、多用するというものではないので、プライベートメソッドだということをすぐに忘れてしまう。以下は Array のインスタンスにインデックスみたいなものを張る例。

ディレクトリの存在確認

File.exist?("dir_path") はディレクトリの存在も確認できる

du -h をソート

du -h を降順にソートする。遅い。

RSpec ちょこっと触ったメモ

Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編) を参考にしつつ RSpec を使ってみた。テストとか言ってるとプロっぽい。 Behaviour Behaviour は example という論理的なまとまりを指し、describe メソッドの…

破壊的メソッドを作る

配列の各要素を n 足す破壊的メソッドを作りたいとする。 self = self.map{ |e| e+n } じゃなくて replace メソッドを使う。 class Array def plus!(n) self.replace( self.map{ |e| e+n } ) end end arr = [1,2,3,4] arr.plus!(2) p arr # => [3,4,5,6]

メソッド内の Proc オブジェクト

メソッド内で Proc.new したときに、ブロックの指定が無ければ、メソッドに伴うブロックを Proc オブジェクトとして生成する。 def kuma pr = Proc.new pr.call( 10 ) end p kuma{ |n| n+1 } # => 11

コマンドラインから Google 翻訳

何番煎じか知らないが、コマンドラインから Google 翻訳できると便利かもしれない。 jewel12's gist: 622403 — Gist を好きなところに置いて、zsh を使ってる人は のパスを書き換えて、.zshrc などに追記する。 使い方 カーソルから右の文字列を C^t で英日…

単語 n-gram カウンターと Tokyo Cabinet

単語 n-gram カウンターを作った。 今のところ、高速化のためのアルゴリズムを考えるほど手間をかける部分じゃないが、Hash で単にカウントするだけだと少し待たされる。そこで Tokyo Cabinet を使ったら、1/5 くらいの速さになった(単語数約 5 万)。 http:/…

メソッドの呼び出し

[http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/46396:title=[ruby-list:46396] 高階関数的なメソッドの使い方について]よりオブジェクトのメソッドは send メソッドで呼び出す事ができる。 "hello".send :upcase # => "HELLO" __send__ は …