読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

RubyDropを試してみようと思ったら・・・

GitとRubyの組み合わせでDropboxみたいなの作れるって書いてあるから、会社でさくっと環境作って試してみようと思ったら・・・。 http://www.moongift.jp/2010/11/20101129/起動のスクリプト見たら、こんなことが書いてあった。 puts "Sorry, RubyDrop is cu…

ハッシュをソートしたい

一旦配列にしてsortを呼ぶとよさげ。 h = {"4" => "d", "1" => "a", "2" => "b", "10" => "aaa" } sorted = h.to_a.sort do |a, b| a[0] <=> b[0] end p sorted # [["1", "a"], ["10", "aaa"], ["2", "b"], ["4", "d"]] 1つ賢くなった。

プログラムに日本語を使うときのおまじない

しばらく触ってないとすっかり忘れてた・・・SHIFT_JISでプログラムを書く場合はプログラムの先頭に以下のようなおまじないを書いておく。 #! ruby -Ks # -*- coding: sjis -*- たぶん一行目が1.8系で二行目が1.9系用。間違ってたら誰かコメントください。

郵便番号のCSVをオレオレXMLに変換

ちょっと郵便番号の一覧の書かれたXMLが欲しくなったのでCSVから変換してみた。 CSVのダウンロードは↓からしました。 http://www.post.japanpost.jp/zipcode/download.htmlこのCSVを下のRubyスクリプトで食わせて完成。 一度メモリ上の配列に、必要な列だけ…

コンストラクタの引数に渡したハッシュでプロパティを初期化したい!

って機能あるよね?ActiveRecordとかそこらへんに。 ということで、自分でどうやってやってるのか考えてみた。ハッシュを受け取って、そのkeyをもとにセットするメソッド呼べばいいので… module HashInitializable def initialize hash = nil unless hash re…

メソッド名の後のスペース

このサイトを見ていて「ん?」と思ったのでメモ。今までずっとメソッド名と引数の間にはスペース(or括弧)がいるものと信じてきてた。 そうじゃなかった!!!!引数がシンボルの場合は、そうでもないみたい。 ほかにもそういうのあるのかもしれないけど…と…

RedRailsってどうなんだろ?

EclipseベースのRails用開発環境みたい。 ちょいと今度使ってみよう。 http://www.radrails.org/download_rails_rdt.php というわけで入れてみた RedRailsをインストールするんじゃなくて、自前のEclipse3.3にインストールをしました。 まだ使ってないけど、…

Rubyスクリプトをexe化してみよう

Exerbというものを使うとできるらしい。 早速やってみよう。 公式サイトからさくっとダウンロード。 今日の段階では4.2.0が最新みたいだ。ダウンロードして解凍したフォルダで下のコマンドを実行してインストールをする。 $ ruby setup.rb お試し 単一のRuby…

ERBしてみよう

RailsやってたらViewがERBのテンプレートだっていうじゃない? ってことでERBをやってみた。使ってみて感じたことは、これはなかなかいいものだ。 ということで入門!! ERBテンプレートの書き方 基本的にはで囲まれたところにRubyのコードを書いて、残りは…

RailsのController部とView部を触り始める

さて、Ruby on Rails!! この間はscaffoldを作って満足して終わった。 これをベースにごちょごちょ弄くってるだけでも、それっぽいサイトは出来そうな感じになってる。でも、やっぱ色々使いこなしたいよね?ってことでActiveRecordは使わないで純粋にViewとCo…

ブロック付きメソッドを定義するときに使うもの

block_given?を完全に忘れてた(あるのは知ってたけどスペルを忘れてた) メモ!! def hoge yield 10 if block_given? end

Proxy越しにgemを使う

前回散々出来ないと愚痴ってたけど出来ました。結論から言うとHTTP_PROXYという環境変数にPROXYのアドレスを設定してからgemを使うとうまくいきました。 D:\>set http_proxy=http://プロクシーのアドレス:8080 D:\>gem install rails -y Successfully instal…

rails.vimを入れてみた

何に惹かれたかというと ]fや[fでコントローラ テスト間やコントローラ view間を移動できること! 後の機能はおいおい覚えていこう。とりあえずこのサイトからrails.vimの最新版を落としてくる。 上のサイトを下にスクロールしていくとダウンロードするため…

Ruby on Railsのセットアップ(iconv.dllが必要って言われた場合)

家ではgemでさくっとインストール 会社ではRubyForgeから1つ1つダウンロードコマンドラインからプロジェクトの雛形を作ろうとすると、iconv.dllがないって言われる。 これを解決するのにこのサイトを参考にした。このページからDL出来るiconvアーカイブを…

gemにproxyの設定が出来ない

やり方が悪いのだろうか。 昔の自分の日記を見る限りだと-pで指定してやればうまくいってたみたいだ。 んで、自分がproxy通さないといけない環境ってのは会社しかないので会社で試したはず。でも、最近出来ない。 とりあえず-pを指定しないでやると下みたい…

ついにRuby on Railsに!

ActiveRecordで軽く遊べるようになってきたので、次はWebアプリにチャレンジしてみようと思う。 ついにRailsと呼ばれるものに触れれる!!DBは引き続きemployeesテーブルとdepartmentsテーブルをしようする 念のためDDLを示す。 create table departments ( …

普通にActiveRecordしてみた

JRubyでActiveRecord使ったりしてみたけど、普通のRubyでも使ってみた。 とりあえず、RubyをDLしてきてインストール。 gem install railsを実行して一通りインストール gem postgres-prを実行してPostgreSQLにつなげるのに必要なものをゲット実験に使ったテ…

FizzBuzz問題再び

いろんな人が色んな方法で短く!とか書いてるけど自分でちょびっと書いてみた。 ほかの人がどうやってるのかは知らないけど、簡単に思いつく方法で書くとこう? a="Fizz";b="Buzz";puts (1..100).map{|i|i%15==0?a+b:i%3==0?a:i%5==0?b:i}.join(",")

Fizz-Buzz問題 どうしてプログラムが書けないの?

モトネタはここ!! どうしてプログラマに・・・プログラムが書けないのか?なんていうか、プログラム書けないのにプログラマ(SE)を名乗るな!って言いたくなってくる。 でも、現実を見てみると情報系の学科を出た人で、↑のサイトにある問題を解ける人はほ…

三人の学生の合計・平均・最高・最低点

ある掲示板でこんな質問があった。 学校で出された課題です。自分でいろいろやってみたのですが上手くいきません。条件分岐の問題です。 プログラム作成内容 A,B,Cの3人の学生のテストの点数を入力して、 ・3人の点数の合計 ・3人の点数の平均点 ・…

どれにしようか

今自分が使える言語は下にあるとおり。 C++ C# Ruby Java JavaScript 習熟度順に並べるとこんな感じかな。 C#, Java C++ Ruby, JavaScript 各言語に特徴があって向き不向きがあると思う。 LL系の言語に分類されるRubyやJavaScriptは、やりたいことをやりたい…

RDE on Vista

前に「RDEがVista上でうまいこと動かない - かずきのBlog@Hatena」を書いたけど、とりあえず動くようになった。 RDEのインストールフォルダにUsersに対してフルアクセスを許可。今のところ大丈夫。

RDEがVista上でうまいこと動かない

VistaにRubyを入れ込んだ。 開発環境は、RDE!! インストーラを落としてきてインストールしたが、各種設定ファイルをインストールフォルダ以下に書こうとするのでエラーが出てご丁寧に終了できなくなる。 Rubyの実行とかは問題ないけど、終了できないのは痛…

VimでRubyをするための設定

Windows PowerShell使ってたけど、サクラエディタをいちいち起動するのがめんどくさくなってきた。 なので、Vimを導入!! 香り屋 — KaoriYaからVimをダウンロード vimでrubyプログラミング S.S.S. blog/ウェブリブログでRuby用の設定 Route 477 - Vim覚え書…

メソッド内でアクセサメソッドを呼ぶ

こんなコードを動かすと class Hoge attr_accessor :val def set_val a val = a end end h = Hoge.new h.set_val 10 p h.val 結果は nilになる。 俺が思ってる感じだとset_valメソッド内でval=メソッドが呼ばれて@valに10が入っているだったんだけどなぁ。 s…

YAMLやってみよう

今まで名前は知ってるけど具体的な書き方は知らなかったYAML。 とりあえずやってみる。RubyでYAMLを読み込むのはすごい簡単にできる。 大体以下のような感じ require 'yaml' obj = YAML.load("a") p obj loadの引数に、YAMLの文字列かIOのオブジェクトを渡す…

ClassクラスとModuleクラス

クラスはClassクラスのインスタンス モジュールはModuleクラスのインスタンス って理解でOKかな?試しにこうしてみると module M puts self.name puts self.class end puts "===============" class C puts self.name puts self.class end こうなる M Module…

Moduleクラスと自前のクラスの違い??

ちょっとわからないことが出てきた。 class Module def hoge puts "Module::hoge" end end class MyClass hoge end これはModule::hogeと表示される。 class Base def moge puts "Base::moge" end end class Drived < Base moge end これはエラーになる。 Mo…

ブロック

ブロックって引数の最後に&つきの変数で受け取れるってことで実験。 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 # …

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を得点順にソート…

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…

委譲してみよう

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…

eval

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

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…

めもめも

Module#attr

既存のクラスのメソッドを置き換えちゃう

タイトルみたいな事が出来るようだ。 どういう名前のつけられてる機能かは知らない!!! 早速やってみよう。 エラーが出るバージョンから s = nil s.hogenilに対してhogeメソッドを呼ぶ。 当然エラー! nilってのは、NilClassのインスタンスらしいので、Nil…

正規表現するわ

スクリプト言語の強みの1つ!正規表現。 早速やってみよう。 Regexpを使うようだ。早速!!! # 正規表現を用意して r = Regexp.new("^foo") # コンソールから読み込んで s = gets.chomp # マッチング if r.match(s) puts "マッチした" else puts "マッチし…

JRubyにしてみた

今までRubyのサイトからDLしてきたインタプリタ+RDEを使ってきたけど、これをJRuby + RDEにしてみた。 だってJavaが使えるんですから。RDEの設定でちょっと悩んだのが、ruby.exeへのパス。JRUBY_HOME\binの中に無いですから!! とりあえず、JRUBY_HOME\bin…