かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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…

defined?の使いどころ

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?

defined?演算子 演算子だったんだねこれって。効能 定義されてるかどうか調べてくれる 定義されてない場合はnil 定義されてる場合は種別を表す文字列を返す ほお。 実験!! こんなコードをば class A attr_accessor :name def public_method end private # …

Doltengやってみる

今までドキュメントも無くて使い方さっぱりわからなかったなぞの物体DoltengとUuji。 WEB+DB PRESSに記事があったので試してみる。 今回は、家でサクッと試すのでDBの使用は却下! ということでUujiはお預け。(Uujiの基本的な所意外の使い方がさっぱりわか…

RangeだRange

とりあえずコードだけ! 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を得点順にソート…

Visual Web Packの使用感

とりあえず、outlineにプロパティがなかなか表示されないバグが厄介だ。 ここに認識されないと、画面のデザイナ上でも認識されない。 そのため、実行したらちゃんと動くのに、デザイナ上ではそんなプロパティね〜よ!っていう感じのエラーが出る事が多々ある…

VWPのTableの要所要所に好きなコンポーネントを置く

Tableのタグの中に、facetタグを埋め込めばOK。手順 テーブルにおきたいコンポーネントをページ上に置く JSPのコードエディタを開く テーブルタグの直下にfacetを以下のように記述する この時、先ほど置いたコンポーネントをfacet内に持っていく(style属性は…

VWPのテーブルに集計結果を表示してみよう

この1つ前の投稿は簡単すぎたので、もうちょいひねってみる。 最終的にこんな画面を目指す。 まずは、適当にデータプロバイダを作ってバインドした表を作る。 TableにTableRowGroupをドラッグアンドドロップで追加する。 んで、こんなBeanをDataProviderを…

VWPのTableに集計結果でも出してみよう

今日の目的は こんな画面で、ボタンを押すと こんな風に給料の合計を出すというもの。 最初にこういうのを見たときはどうやってるのかわからんかったけど、やり方は簡単だった。 TableColumのfooterTextにデータを流し込んでるだけでした。適当なデータプロ…

evalでクラス定義

たとえば、nameっていうプロパティを持ったクラスをいっぱい定義したいとすると… def define_class *args args.each do |name| eval <<-E class #{name} attr_accessor :name end E end endこんなメソッドを用意しておいて define_class( "Person", "Departm…

Visual Web Packで動的にコントロールを追加

ボタンを押すとグループパネルにボタンをガシガシ追加していくようなものを作る! ついでなので、動的に追加したボタンをクリックしたときに呼ばれるメソッドの関連付けの仕方も盛り込んでみた。 まず、デザイナで以下のような画面を作る。コントロールの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>…

moduleとclass

なんか一緒っぽい。 本にも、継承ツリーに入るみたいなこと書いてあった。 実験だ!! 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…

暇つぶしにObserverパターンしてみる

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 普通の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でJavaScript使ってみよう

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…

eval

久しく触ってなかったRuby。 ちょっとした事情で触ることに。 evalを使ってみました。文字列でrubyのプログラムを渡してやれば実行してくれる代物っぽい? 試しに eval "puts \"Hello world\""と書いて実行するとHello worldが出た。 ふむ attr_accessorみた…

言語的にはJavaよりC#

C#

genericがJavaよりC#の方が手に馴染む。 newしたり出来るのがいいね! class Hoge<T> where T : new() { // コンパイルエラーにならない public T Create() { return new T(); } }確かJavaだとこういう風にnewは出来なかったはず。 yield returnもJavaにはないC</t>…

Visual Web Packリリース

同僚の人が発見してきてた。 ダウンロードしてきたexeを貰ってインストール。テクノロジプレビューは使っているとバグバグだな〜と思えたけど、バグだな〜くらいにはなってました。 こんなBeanを作って public class Emp { private int id; private String n…

Windows PowerShell

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…

Ruby CLR

rubyclrのgemをDLしてきて gem install ruby.... gem install text-formatこれで使えるようになる。requireとRubyClr::referenceとincludeをやると普通に使える。 require 'rubyclr' RubyClr::reference 'System' RubyClr::reference 'System.Drawing' RubyC…

NetBeansの使用メモリを増やす

デフォだとMAX256M起動オプションに -J-Xmx***m -J-Xms***m -Jがいるのがポイントと思ったらNetBeansのインストールフォルダのetc\netbeans.confに以下のような記述があるので、そこを書き換えればOKみたいだ。 netbeans_default_options="-J-Xms32m -J-Xmx2…