骨のダイスを転がそう

2009|01|02|03|04|05|06|07|10|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|02|03|05|06|07|08|09|10|11|12|
2012|01|02|04|05|09|10|11|12|
2013|01|02|04|
2014|11|
2015|01|04|05|
2016|06|07|08|09|11|
2017|01|02|03|04|
2018|03|

2011-03-09

_ [ruby] ppメソッドの日本語

ruby1.8 では、

require 'pp'
pp "これはテストです"

"\202\261\202\352\202\315\203e\203X\203g\202\305\202\267"

を返す。ハッシュなどでも同様。これをエスケープしないようにするためには、"-Ku" をオプションで設定するか、

$KCODE = "u"

とする必要があるらしい。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ Jacques [I came here to study http://www.indiamanufacturingshow.com..]

_ Dorian [Could you transfer $1000 from my current account to my dep..]

_ Stefan [Do you need a work permit? http://www.samhardenburgh.com/v..]


2011-03-23

_ [Ruby] yield と &block

 いままで、今ひとつ違いがわからず、 yield あれば、 &block なんて方式、いらないじゃん、とか思っていたが、「Ruby ベストプラクティス」 を読んで違いが分かった。 &block は、 block を Proc オブジェクトとして、メソッドの中でさらに別のメソッドに渡す、なんてワザが使えたワケね。

 つまり、yield の方が記述が簡単で、&block の方が応用範囲が広い、と。

本日のツッコミ(全1件) [ツッコミを入れる]

_ Bradley [L9YEvJ http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com]


2011-03-27

_ [Ruby][xyzzy] windows と jruby と xyzzy で、rsense

 Visual Studio の intelisense 良いですよね。最高です。intelisense と同じインターフェースを、Emacs や vi で実現するのが、Rsense です。  ずいぶん前から気になっていたんですが、PC の切り替えを機に試してみることにしました。

 これ、Emacs や vi でしか使えないのかというと、そんなことはありません。xyzzy でも使用できるようにしてくれた方がいらっしゃいます。  また、私、仕事では主に、Jruby を使っているわけですが、rsense は、jruby で動くのか?ためしてみたところ、何個か修正が必要でした。  一つ一つ確認していきましょう。

RUBY_PLATFORM

 jruby は、

jruby -e "p RUBY_PLATFORM"

とかすると、

"java"

とだけ返してきます。rsense では、Windows か、Unix系かでいろいろ挙動を変えているため、これは痛い。これは、RUBY_PLATHORM のかわりに、 Config::CONFIG['host_os'] を使うと良いようです。

jruby -rrbconfig -e "p Config::CONFIG['host_os']"

"mswin32"

と来ます。

ポート番号

 rsense のデフォルトポートは、77637。これは、jrubyでは動きませんでした。(というか Windows って、65536 以上のポート番号を指定しても大丈夫なのか……知らなんだ) これは、単純に、7767 あたりに修正。

read_close

 148 行目の socket.read_close をコメントアウトしないと、コマンド発信のタイミングでrsenseサーバが落ちる。コメントアウトして良いもんかどうか分からんが、コメントアウト。

xyzzy

 xyzzy で使用するには、aike さんのrsense.l (参照) を、%XYZZY_HOME%\site_lisp に入れてあげて、以下のように設定。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; rsense
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-hook 'editor::*ruby-mode-hook*
   #'(lambda ()
      (load-library "rsense")                    ; rsense.lロード
      (require 'rsense)                          ; rsense.lロード
      (setq rsense-home "c:/xyzzy/rsense-0.3")   ; rsenseインストール先(必須)
      (define-key *ruby-mode-map* #\M-.  'rsense-complete)    ; キー設定例 ESC+ピリオドでコード補完
      (define-key *ruby-mode-map* #\M-\, 'rsense-type-help)))  ; キー設定例 ESC+カンマで型表示

で、aikeさんの rsense.l は、rsense 0.2 向けなので 0.3の rsense-where-is と、rsense-jump-to-definition は、自分で移植してみた。これで良いのかどうかは、はなはだ怪しいのですが。