simanのブログ

ゆるふわプログラマー。競技プログラミングやってます。Ruby好き

Rubyで日本語関数名&変数名

前からRubyは日本語の関数が書けるのは知っていたのですが、変数も日本語にできるんですね。 def 挨拶(名前) puts "こんにちは" + 名前 + "さん" end 挨拶("山田") こんにちは山田さんこれで何か面白いことできないかなーと思ったのですが、なかなか良いのが…

Rubyでユークリッドの互除法

アルゴリズムの勉強中なのですが、せっかくなのでRubyで書いたコードを残していこうかなと思っています。今回はユークリッドの互除法です。最大公約数を求める時に使います。Rubyには元からgcdメソッドがあるので、わざわざ再開発する必要はないのですが。。…

Shoesでログの出力

ShoesでGUIプログラミングしていると、デバッグの際に中の値を見たくなる時があるので、それを出力する方法です。出力にはinfoメソッドを使用します Shoes.app { radius = 40 oval( left: 10, top: 10, radius: radius) info("radius size = #{radius}") } …

沖縄Ruby会議01に参加してきた!

「沖縄Ruby会議01」に参加&LT発表してきました! http://regional.rubykaigi.org/okrk01/発表資料 「琉大図書館にRuby本を!」 http://www.slideshare.net/_siman/ruby-31905851 ※ 発表資料に関しては少し修正が入っています。 まさかのトラブル 今回、琉球…

Rubyの変数宣言で少しハマった話

よくRubyで多重代入とか使うんですが、この仕様は知らなかった... a = 1,2,3 [1, 2, 3]こうなって欲しい時はaの前に*をつけるので、ちょっと予想外でした *a = 1,2,3 [1, 2, 3]というのも x = 3, y = 4 このように宣言して x = [3, 4] y = 4となったのが事の…

RubyのFixnumの最大値と最小値

気になったので調べてみました。 Rubyではある値を越えた時にFixnumからBignumへと変わります。 p (2**0).class #=> 1 p (2**10).class #=> 1024 p (2**100).class #=> 1267650600228229401496703205376 p (2**1000).class #=> 略 Fixnum Fixnum Bignum Bign…

RubyのShoesで計算機

ShoesはRubyでGUIを作るためのツールです。前回のHello Worldに続き、今回は簡単な計算機を作ってみました。ソースコード https://github.com/siman-man/calculator/blob/master/calculator.rb完成品 ボタンの縦のサイズが自由に決められないのは少し残念で…

Rubyでワンライナーおみくじ

Rubyで今年の運勢を占いましょう ruby -e 'puts %w(大吉 中吉 小吉 吉 末吉 凶 大凶).sample' 中吉中吉でした

今年の目標(2014)

競技プログラミングを頑張る topcoderのrateを上げる。 ・アルゴリズム1500以上 ・マラソン2000以上 モバイルアプリに挑戦 何かアプリを1つ作る 新しい言語に挑戦 達人プログラマー的な 今年もいい年になりますように

去年を振り返って(2013)

2013年のうちに書いとくべきだったけど忘れてました。 競技プログラミングな年 2013年は競技プログラミングの年でした。 今までは趣味でアプリ開発とかしてましたけど、違った面白さがあったハマりました。今年のレーティングはアルゴリズムのほうが1128(緑)…

RubyでShoesを使ってGUIプログラミング - Hello World

RubyでGUIプログラミングしたいなと思い検索してみると、一番最初にShoesがヒットしたので少し触ってみました。ダウンロードはこちらから http://shoesrb.com/downloads.htmlとりあえず簡単なHello Worldを作ってみました。 Shoes.app do button "Click me!"…

RubyでHashのsortの返り値をHashにする

RubyのHashのsortは返り値がArrayになっています。 hash = { a: 30, b: 66, c: 45, d: 100, e: 80 } p hash.sort_by{|k,v| v } [[:a, 30], [:c, 45], [:b, 66], [:e, 80], [:d, 100]]ArrayではなくHashで受け取りたい場合は、この値をそのままHashに入れてあ…

Rubyのcompact

Array#compactメソッドは配列の要素からnilを取り除くメソッドです。compact!だと自身も変更します。 array = [ 1, nil, 3, nil, 5 ] p array p array.compact p array array.compact! p array [1, nil, 3, nil, 5] [1, 3, 5] [1, nil, 3, nil, 5] [1, 3, 5]…

2013年に買って良かったもの

27inchのディスプレイです。 アニメ観るのに非常に役に立ちました!

RailsでRubyのハッシュをJavascript側に渡す

忘れないようにメモ @sample = { a: 1, b: 2, c: 3 } var test = <%= @sample.to_json.html_safe %>; console.log(test); #=> Object {a: 1, b: 2, c: 3} console.log(test.a); #=> 1 参考サイト http://stackoverflow.com/questions/6272201/rails-hash-of-…

マラソン練習会( TCO2010 FILNAL )

今週土曜日、診断人さん主催で12時間マラソン練習会が行われました。今回使用した問題は「TCP2010 CollapsingMaze」 http://community.topcoder.com/longcontest/?module=ViewProblemStatement&rd=14411&pm=11140内容はざっくり説明すると 「コインがばらま…

「git勉強会 in Okinawa」参加録

こちらの方に行ってきました。「git勉強会 in Okinawa」 http://atnd.org/event/E0019796/0自分はGithubは使っていたのですが、「Githubを使った開発フロー」というワードに惹かれて参加してみました。 ・午前の部 午前の部はGit Handson その 1を進めながら…

Rubyでハッシュのデフォルト値を配列にする

RubyではHashのデフォルト値をHash.newの引数として渡すことで実現できますが、配列を渡すと同じ参照になってしまうのでうまくいきません。 list = Hash.new([]) list[:even] << 2 p list[:even] #=> [2] list[:odd] << 3 p list[:odd] #=> [2,3] [2] [2, 3]…

rubyで数値を日本語表記に変換するgem「yen」を作った

「Rubyで数値を日本語表記に変換」 http://simanman.hatenablog.com/entry/2013/03/15/224727半年前ぐらいに作ったメソッドにちょっと変更を加えてgemにしました。 使い方 gem install yenrequire 'yen' puts 10000.to_j #=> 1万 puts 10000.to_j(:all) #=> …

Rubyのオブジェクトの継承関係をtreeコマンドっぽく表示するgem「object_tree」を作った

gem「object_tree」作りました。 https://github.com/siman-man/object_treeRubyでクラス継承やら、モジュールのincludeなどをしたときに、ancestorsメソッドなどで継承関係を調べることができるのですが、これをtreeコマンドっぽくして視覚的に見やすくしま…

Rubyで文字列を1文字ずつ分割する。

Rubyでは文字列に対してcharsメソッドを使用すると1文字ずつ分割してくれてます。 p "hello".chars ["h", "e", "l", "l", "o"] 文字列が数字だと、他のメソッドと組み合わせることで「各位を足しあわせた合計値」なんて操作もできるようになります。 list = …

Rubyで複数行のコメントアウト

Rubyでは=begin, =endで囲むことで複数行のコメントアウトが出来ます。通常ver # puts "Ruby" # puts "Java" # puts "JavaScript" 複数コメントアウトver =begin puts "Ruby" puts "Java" puts "JavaScript" =end 覚えておくと便利です。

RubyのOpenStructソース読み

Rubyの標準ライブラリを読んでみようってことで今回は「OpenStruct」を読むことにしました。 OpenStructとは OpenStructを使えばJavaScriptみたいにオブジェクトへの要素の追加や削除が簡単に出来るようになります。 require 'ostruct' pos = OpenStruct.new…

ハッカーズチャンプルー前夜祭・カンファレンス

今週末はハッカーズチャンプルーに参加していました。http://hackers-champloo.org/ 前夜祭 前夜祭のほうはLT発表者として参加して、ゲストの方々の前で喋らせてもらいました。発表前にディスプレイテストしたにもかかわらず本番で「何も映らない!」ってな…

Rails + RSpec + Capybaraでbasic認証をパスする

コントローラ内でbefore_filterを使って実装されたBasic認証をパスするのにやたら時間をかけてしまったので、自分用にメモを残しておく。 page.driver.browser.authorize('username','password') これをvisitとかの前に宣言しておくと、Basic認証をパスする…

Rubyで状態遷移を管理するgemを作った(state_transition)

https://github.com/jakesgordon/javascript-state-machineこのjavascript-state-machineが便利だったので、Rubyでも使いたいと思い、Ruby versionを作ってみました。 https://github.com/siman-man/state_transitiongemのインストール gem install state_tr…

勘違い

Herokuにpushしようとした時のこと「そういえばHerokuはpostgresql」だったなと思い、Gemfileの設定を下のように変更していざpushしてみたら全く変更が反映される気配がない。 group :development do gem 'sqlite3', '1.3.7' end group :production do gem '…

xhago4参加録

8/10(土)に開催されたxhago4にスピーカーとして参加してきましたーhttp://hago.doorkeeper.jp/events/4396自分は「僕らの開発日記 24」というタイトルでクックパッド主催の「第4回 開発コンテスト24」に参加したときの様子を発表したのですが、技術的な話は…

CODE VS2.1予選終了

CODE VS2.1の予選が終了しました。前回のCODE VS2.0では学生ランク28位だったのですが、今回はなんとGOLDランクに入ることが出来ました。わーhttp://codevswc.jp/jpn/ranking-total.htmlここまで来たからには優勝目指して頑張ります。

Rubyで二次元配列の初期化

Rubyで二次元配列を初期化するときは注意が必要です。 ・3x3の2次元配列を作るときのよくある間違い a = Array.new(3, Array.new(3, 0) ) これで配列の初期化が出来たと思うのですが、実は出来ていません。実際に配列の状態を変更してみると明らかになります…