ruby

URLエンコード

さっと調べたい時があるのでメモ。 irbを起動して、 require 'cgi' p CGI.escape("あ&い") これで %82%A0%26%82%A2 と出力されます。 逆に、 p CGI.escape("%82%A0%26%82%A2") とやれば、 あ&い となります。

パターンマッチングした部分の抽出

rubyの例から。 str = "hello, world" if str =~ /hello, (.+)/ puts $1 end これで、「world」が出力されます。 これと同じことをjavascriptでどうやるか、ずっと分からなかったんだけど、ひょんな事から知ることが出来ました。 var str = "hello, world"; …

空白で区切るんだけど、"で囲まれている中の空白は無視する

@kompiroさんのつぶやきに触発されてtryしてみた。 growlnotify -n "Quick JUnit"」をProcessBuilderに食わせるために"growlnotify","-n","Quick JUnit"と分割して上げたいのだけれど、いい方法が見つからない><。もしかしてさくっと出来たりしないのかな…

Set#join

rubyのSetはArrayみたくjoinってないんやー。。残念! ・・・と思ったら、こんな風に出来た。 set = Set.new set << "hello" << "world" puts set.to_a.join(", ") # hello, world

文字のバイト列の表示

文字コードを勉強するにあたって、バイト表現が簡単に分かった方が便利だったので。 もう何度も同じようなのを作っているんだけど、改めて。 def print(str, cs) str.encode(cs).each_char do |c| puts "#{c} : #{c.bytes.map{|b| b.to_s(16).upcase}.join('…

文字コード順でのソートはやっぱだめだ

文字コード順でソートして表示しているところがあって、「第一グループ」「第二グループ」「第三グループ」というレコードを表示すると、「第一」「第三」「第二」という順で並んだ。 一応確認のためのプログラムを作って、 # -*- encoding: Windows-31J -*-…

Google Collections Libraryステキというお話。

Javaしか知らなかった時はまぁ多少冗長だなー位にしか思っていなかったんですが、rubyを知ってからはJavaプログラミング中に「rubyならもっと簡潔にかけるのに・・・」なんて思ったりすることが増えてきました。 例えば、 List<String> animals = new ArrayLists<String>(); </string></string>…

範囲内の数字化どうか

久々にrubyプログラミングをしました。 変数numが5〜10の値かどうかを判断する書き方をメモしておきます。 ■その1 num.between?(5,10) ■その2 (5..10).include? num

redmine移行

あるサーバーで動作していたredmineを別のサーバーに移動しないといけなくなった。 新規にインストールしてDBのデータだけ移行するってのが普通のやり方なんだろうけど、横着して圧縮して解凍したら動かないかなーと思ってやってみた。 すると普通に動きまし…

各文字符号化方式のバイト列の確認

自分の勉強用に作ってみました。 # -*- coding: windows-31j -*- w = (ARGV[0] || "あ").encode(ARGV[1] || "windows-31j") puts "バイト数: #{w.bytesize}" puts "バイト列:#{[].tap{|ary| w.bytes{|b| ary << '0x' + b.to_s(16)}}.join(", ")}" 実行及び…

コマンドプロンプトからの標準入力の文字コードは?

昨日も同様の記事を書きましたが、コマンドプロンプトからの標準入力の文字コードは何か?という問題。 というのも、こんなプログラムを作って、標準入力から「あいうえお」と打ちみます。 # -*- coding: Shift_JIS -*- puts $1 if gets =~ /あ(.*?)お/ 期待…

ruby1.9.1の文字化け

Windowsのrubyを1.8.7から1.9.1にあげてみた。するとこんな簡単なプログラムですら文字化けするようになった。 # -*- coding: utf-8 -*- puts "あいうえお" プログラムファイルはもちろんUTF-8で保存している。事実、次のようにしてもUTF-8と表示されるので…

Joshua Bloch

本blogでも何度か取り上げたEffective Javaですが、その著者のJoshua Blochさんが実際にauthorになっているプログラムを見つけてびっくり! Java5からenumが導入されましたが、enum型の集合を表すのに特化したjava.util.EnumSet(もちろんSetインタフェース…

Windows環境にredmine0.8.4インストール

基本は以下を参考にしながら進めた。 http://redmine.jp/tech_note/install/ Rubyインストール 今回のrubyのバージョンは1.8.7 SQLite3 まずは下記URLからhttp://www.sqlite.org/download.html sqlite-3_6_14_1.zip sqlitedll-3_6_14_1.zip をダウンロード。…

さくらインターネットでrails環境の作成

ちょっとしたWEBアプリケーションを作ろうと思って、さくらインターネットのスタンダードプランを契約しました。 SSHによるリモートログイン、MySQL、ruby等の環境が揃っているし、月額500円だし、ということで。 とりあえずrails環境の作成を。 以下のサイ…

ヒアドキュメント

複数行に渡る文字列なんかを扱うときに便利。 ってだけでなく、シングルクォートやダブルクォートが混在する文字列を扱うときもエスケープしなくて済むから便利。式展開までできちゃう。 index = 0 str = <<EOS <INPUT type="text" name="name_#{index}" onclick="alert('こんにちは');"> <INPUT type="text" name="age_#{index}" onclick="alert('こんばんは');"> EOS javascriptにヒアドキュメントがないのが意外</eos>…

eval

今日初めてJavaを組んでいる時に、JRubyもしくはJava6のVM上でjavascriptが動くやつが使いたいと思った。理由はタイトルにあるように、Javaでevalが使いたい!と思ったから。eval相当を自分で組むのは嫌だ〜。

基数変換

rubyがインストールされていると、ちょっとした時にirbを起動してすぐ確認できるので便利です。 10進数からの変換 256.to_s(2) # 100000000 256.to_s(8) # 400 256.to_s(16) # 100 10進数への変換 8進数と16進数はStringに専用メソッドがある。 Integer("0b1…

linuxにrailsインストール(Proxy環境にハマる・・・)

railsをインストールする時はrubyGemsというパッケージ管理ツールを使ってするんだけど、うまくいかず。以下のようになる。 #gem install rails ERROR: http://gems.rubyforge.org/ does not appear to be a repository ERROR: could not find gem rails loc…

linuxにrubyインストール(自分でビルド)

linuxにruby1.8.7をインストールすることにしました。 まずはここ(http://www.ruby-lang.org/ja/downloads/)からruby-1.8.7-p72.tar.gzを入手 次に解凍。 tar xvzf ruby-1.8.7-p72.tar.gzで、解凍後にできたruby-1.8.7-p72に移動して以下を実行。最初の2つ…

httpリクエスト発行

rubyで簡単にhttpリクエストを発行する方法が分かったので、メモ。 require 'open-uri' open("http://localhost:5555/sample/index.html"){|f| puts f.read } こんな感じ。結果としてのHTMLが出力されます。ただし、文字化けが起こったので、次のように文字…

偏差値順に並び替え

http://kintaro.boy.jp/AW04-010/sozai/html/sinnhennsati%20kagawakenn.html ひょんなことから、このページを見つけました。香川県の高校の偏差値一覧が掲載されたサイトです。五十音順に並んでいたんですが、ついつい偏差値順に並び替えてみたくなり、いつ…

初めてのRuby

初めてのRuby作者: Yugui出版社/メーカー: オライリージャパン発売日: 2008/06/26メディア: 大型本購入: 27人 クリック: 644回この商品を含むブログ (246件) を見る 本書のターゲットは「プログラミングの経験はあるが、Rubyは初めて」の人です。おかげで200…

要素の入れ替え

ソートアルゴリズムを解く時なんかによく出てくる入れ替え処理。以下はJavaで書いた。 int tmp = ary[i]; ary[i] = ary[j]; ary[j] = tmp; rubyだとこんな風にかける。 ary[i], ary[j] = ary[j], ary[i]

配列の長さゼロの表現

よくある記述としてこんなのがある。以下はJavaで書いた。 if (ary.length == 0) { return; } rubyだとこんな風にかける。 return if ary.length.zero? 追記 rubikitchさんにコメントいただきました! return if ary.empty? 確かにこう書くと更にシンプルに…

プログラマの道は険しい

どう書く.orgの問題にまたまたチャレンジ。 問題文 2^i * 3^j * 5^k の形で表される整数を小さい方から順に 100 個列挙するプログラムを書いてください。 i, j, k は 0 以上の整数です。 例えば最初の 10 個は次のようになります: 1 2 3 4 5 6 8 9 10 12 ※解…

文字列から2次元配列を作る

どう書く.orgの「島の数をカウントする」にトライしていて、以下のような文字列が与えられたとき、扱いやすく2次元配列に変換しようとしてたんだけどちょっとハマッた。 area_str = "□■■□ □□■□ □■□□ □■■□" 結論を先に書いておくと、次のようにするといけた。…

繰り返し処理のまとめ

久々にrubyでプログラミングをすると、基礎中の基礎なのに忘れていることがあるので、まとめました。 基本のfor文 他の言語では基本中の基本だけど、rubyではほとんど使わない(と思う)。 for x in 1..3 puts x # => 1 2 3 end # これは3を含まない for x i…

Becky!×ruby

会社であるイベントを行い、そのアンケートを回収することになった。 こちらからExcelで作ったアンケートファイルを送り、それに記入して返信してもらう。面倒な集計作業自体は昨日日記に書いたようにExcelファイルをプログラムで処理するとして、その前にも…

rubyでExcel操作

既存のExcelデータを読み込んで色々やるってのは結構情報があった。特に以下のものが分かりやすかった。 Rubyist Magazine Win32OLE 活用法 【第 2 回】 Excel しかし、新規にExcelファイルを作って保存するというのがなかなか見つからなかったのでちょっと…