2006-01-01から1年間の記事一覧
ブロックって引数の最後に&つきの変数で受け取れるってことで実験。 class Button attr_accessor :text def initialize text self.text = text end def add_event &event @events = [] unless @events @events << event end def fire_event @events.each { |…
友達の一人にRubyを教えてる。 オブジェクト指向を教えるのはどうやろうかな・・・ name = "Tarou" pet_name = "Pochi" puts "Hello! My name is #{name}. My pet's name is #{pet_name}." を題材にしてみようかなぁ・・・書き直すとこんなん? class Person…
Observableのコード読んでたらこんな風に使われてた。 module Observable def add_observer(obj) @observers = [] unless defined? @observers @observers << obj end def notify_observers *args @observers.each { |obs| obs.update(self, *args) } end en…
defined?演算子 演算子だったんだねこれって。効能 定義されてるかどうか調べてくれる 定義されてない場合はnil 定義されてる場合は種別を表す文字列を返す ほお。 実験!! こんなコードをば class A attr_accessor :name def public_method end private # …
今までドキュメントも無くて使い方さっぱりわからなかったなぞの物体DoltengとUuji。 WEB+DB PRESSに記事があったので試してみる。 今回は、家でサクッと試すのでDBの使用は却下! ということでUujiはお預け。(Uujiの基本的な所意外の使い方がさっぱりわか…
とりあえずコードだけ! Rangeとして使うにはsuccと演算子が使えないと駄目だ! class Hoge attr_reader :value def initialize value = 0 @value = value end def succ @value += 1 self end def <=>(other) @value <=> other.value end end h1 = Hoge.new …
επιστημηさんのBlog東方算程譚にちょっとした問題のC++版、C#版があったのでRuby版を。 #学籍番号と得点(成績)の組: #record (7, 345), (8, 678), (1, 123), ... # #それと学籍番号の列: #target { 4, 5, 3, 1, 2 }; # #があるとき、targetを得点順にソート…
とりあえず、outlineにプロパティがなかなか表示されないバグが厄介だ。 ここに認識されないと、画面のデザイナ上でも認識されない。 そのため、実行したらちゃんと動くのに、デザイナ上ではそんなプロパティね〜よ!っていう感じのエラーが出る事が多々ある…
Tableのタグの中に、facetタグを埋め込めばOK。手順 テーブルにおきたいコンポーネントをページ上に置く JSPのコードエディタを開く テーブルタグの直下にfacetを以下のように記述する この時、先ほど置いたコンポーネントをfacet内に持っていく(style属性は…
この1つ前の投稿は簡単すぎたので、もうちょいひねってみる。 最終的にこんな画面を目指す。 まずは、適当にデータプロバイダを作ってバインドした表を作る。 TableにTableRowGroupをドラッグアンドドロップで追加する。 んで、こんなBeanをDataProviderを…
今日の目的は こんな画面で、ボタンを押すと こんな風に給料の合計を出すというもの。 最初にこういうのを見たときはどうやってるのかわからんかったけど、やり方は簡単だった。 TableColumのfooterTextにデータを流し込んでるだけでした。適当なデータプロ…
たとえば、nameっていうプロパティを持ったクラスをいっぱい定義したいとすると… def define_class *args args.each do |name| eval <<-E class #{name} attr_accessor :name end E end endこんなメソッドを用意しておいて define_class( "Person", "Departm…
ボタンを押すとグループパネルにボタンをガシガシ追加していくようなものを作る! ついでなので、動的に追加したボタンをクリックしたときに呼ばれるメソッドの関連付けの仕方も盛り込んでみた。 まず、デザイナで以下のような画面を作る。コントロールのID…
sendとmethod_missingをつかって委譲(丸投げ)するクラスを作ってみた。 Adapterパターンとかが簡単に出来そうだ。丸投げクラス class Marunage def initialize(target, map = {}) @target = target @map = map end def method_missing(method, *args, &blo…
undefを使ってメソッドを消せるらしい。 やってみる! class Hoge def method_missing obj, *args, &block puts "missing" end end h = Hoge.new puts h.to_s実行結果 #<Hoge:0x29383c0>ちゃんと出てる。これでto_sをundefすると class Hoge undef to_s def method_missing o</hoge:0x29383c0>…
なんか一緒っぽい。 本にも、継承ツリーに入るみたいなこと書いてあった。 実験だ!! class Base attr_accessor :base def initialize base = "default base" puts "Base::initalize" self.base = base end end class Drived < Base def initialize super e…
class Observable def initialize super @observers = [] end def add_observer observer @observers.push observer end def notify *args @observers.each do |obs| obs.update(self, *args) end end def self.attr_notify_accessor *params params.each do…
メソッドの引数の最後に&つきの引数を定義するとブロックが入ってくる。 def hoge &block p block.class end puts "blockなし呼び出し" hoge puts "block有り呼び出し" hoge { }実行結果は blockなし呼び出し NilClass block有り呼び出し Procになる。 ふ〜…
いまさらって感じもあるけど可変長引数を… *をつければ可変長引数になる! def hoge *args p args end hoge 1, 2, 3実行結果は [1, 2, 3]
ブロックは、本で斜め読みして使ってみただけで理解があさかったのでちょっと書いてみる。 ブロックを受け取るメソッドを作るのは簡単。普通に書けばOK def func puts "Hello world" end func { # block }実行結果 Hello world部通のメソッドでもブロックを…
eval 普通のeval instance_eval オブジェクト内部のコンテキストでeval class_eval/module_eval クラス/モジュール内部のコンテキストでeval
Railsによるメタプログラミングを読んでみた。 気になったところをメモ! 存在しないメソッドを呼んだときに呼ばれるメソッド method_missingというメソッドがそうらしい 早速実験 class Hoge def method_missing(method, *args, &block) puts "missing" end…
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=35422&forum=7&start=0
Java SE 6.0が出たので実験 とりあえずメモ package jp.co.ffc; import java.io.StringReader; import javax.script.Bindings; import javax.script.ScriptContext; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public cla…
久しく触ってなかったRuby。 ちょっとした事情で触ることに。 evalを使ってみました。文字列でrubyのプログラムを渡してやれば実行してくれる代物っぽい? 試しに eval "puts \"Hello world\""と書いて実行するとHello worldが出た。 ふむ attr_accessorみた…
genericがJavaよりC#の方が手に馴染む。 newしたり出来るのがいいね! class Hoge<T> where T : new() { // コンパイルエラーにならない public T Create() { return new T(); } }確かJavaだとこういう風にnewは出来なかったはず。 yield returnもJavaにはないC</t>…
同僚の人が発見してきてた。 ダウンロードしてきたexeを貰ってインストール。テクノロジプレビューは使っているとバグバグだな〜と思えたけど、バグだな〜くらいにはなってました。 こんなBeanを作って public class Emp { private int id; private String n…
IEを使ってみる PS C:\Documents and Settings\k-oota> $ie = New-Object -ComObject InternetExplorer.Application PS C:\Documents and Settings\k-oota> $ie.Visible = $true PS C:\Documents and Settings\k-oota> $ie.Navigate("http://www.google.co.j…
rubyclrのgemをDLしてきて gem install ruby.... gem install text-formatこれで使えるようになる。requireとRubyClr::referenceとincludeをやると普通に使える。 require 'rubyclr' RubyClr::reference 'System' RubyClr::reference 'System.Drawing' RubyC…
デフォだとMAX256M起動オプションに -J-Xmx***m -J-Xms***m -Jがいるのがポイントと思ったらNetBeansのインストールフォルダのetc\netbeans.confに以下のような記述があるので、そこを書き換えればOKみたいだ。 netbeans_default_options="-J-Xms32m -J-Xmx2…