ruby
前提 rubyの条件文ではnilとfalse以外はすべてtrueとして扱われてしまう condition = 'false' puts "TRUE" if condition # => TRUE condition = 0 puts "TRUE" if condition # => TRUE condition = 'nil' puts "TRUE" if condition # => TRUE # ちなみにnull…
問題 TCP socketで送ったコマンドのレスポンスが複数行にわたる時とかに、データを全部取得したいんだけどgetsだと1行ずつしかとれないし、ループを回しても次の入力待ちになって帰ってこない。 今までは、、 問い合わせ先で終了文字を設定して送り返すよう…
個人的第四章のキーワード class_eval() クラスインスタンス変数 特異メソッド 特異クラス Extend アラウンドエイリアス カレントクラス クラス定義の中ではselfは定義されたクラスである defで定義されたメソッドはすべて、カレントクラスのインスタンスメ…
問題点 Cookieの:valueにHashをいれても、取り出すときにStringになってしまう 先日のブログで書いたとおり、セッション毎に別々のexpire timeを持たせるためにcookieを利用することにした. [Ruby] sinatraでそれぞれのセッションに別々のexpiration timeを…
sinatraでセッションのデータにexpiration dateを持たせて、ある一定時間たったら自動で消えるっていう処理を書きたかった。 Session すごいはまって結構がんばったけど、思い通りの実装は出来なかった。。 sinatraのsessionにも、expiration dateはある get…
Rubyにはprependはあるがappendはない。 だから後方に追加したかったらconcatとか「+=」を使う。 h = Hash.new puts h.store(:alphabet, "b") # => b # append puts h[:alphabet].concat("c") # => bc # prepend puts h[:alphabet].prepend("a") # => abc 一…
sinatraでAPIを作っていてはまったのだが、現在のブラウザはGETとPOSTの通信方式にしか対応していないらしい。 失敗例 <form method="delete" action="/"> <input type="text" name="textArea"> <input type="submit" value="delete!!"> </form> ↓ 192.168.33.1 - - [22/Jul/2015:03:08:16 +0000] "GET /?textArea= HTTP/1.1" 200 198 0.0008 こうやってdeleteを指定したにも関わ…
Sinatraで、入力した値を表示させるだけの超簡単なアプリをつくる方法を手順化して説明します。 1.環境作成 yum install openssl-devel httpd gem install sinatra gem install thin まずはApacheの設定やsinatraのインストールをします。 sinatraはそれだ…
RubyではPHPのようにデフォルトで多重Hashを利用することが出来ません。 以下のようなエラーになります。 single_h = Hash.new single_h["first"]["second"] = "value" # => hash.rb:13:in `<main>': undefined method `[]=' for nil:NilClass (NoMethodError) こ</main>…
第三章でのキーワード ブロック 束縛 クロージャ proc lambda 遅延評価 ブロック ブロックを定義できるのはメソッドを呼び出すときだけ ブロックを受け取ったメソッドはyieldでブロックをコールバック(展開して利用)する ブロックとはメソッドに渡す無名引数…
ちょっとはまったのでメモに・・・ Sinatra: README (Japanese) このsinatraの日本語サイト通りに gem install sinatraして、 gem install thinして、 myapp.rbを作って、 # myapp.rb require 'sinatra' get '/' do 'Hello world!' end 起動して、 $ ruby my…
ブロックをオブジェクト化する代表的な方法としてProcとlambdaがあるが、その違いに関して簡単に説明 returnに対する挙動の違い lambda 普通にlambdaから返る(メソッドのreturnと同じ挙動) def double(lambda_blk) lambda_blk.call * 2 end l = lambda{retur…
Rubyのoptionを扱うOptionParserの使い方を簡単に書きます。 OptionParser コマンドラインのオプションを取り扱うためのクラスです。 class OptionParser (Ruby 2.1.0) 使い方 公式ドキュメントにも書いてありますが、使い方の流れは以下になります。 1. Opt…
2章のキーワード 動的ディスパッチ パターンディスパッチ define_method() Method Missing ゴーストメソッド ブランクスレート はじめに メタプログラミングの第二章は動的メソッドについて書かれている。 Javaなどは静的言語 RubyやPythonは動的言語 重複メ…
メタプログラミングRubyの第1章を読んで、自分が興味あったとこのまとめ クラスとモジュールの違い classクラスはnew(), allocate(), superclass()を追加したmoduleにすぎない includeされるものにはmoduleを使う モジュールはクラス名が被らないようにネー…
Ruby Warrior ゲーム感覚でRubyを学べるサイトです。 これをやるだけでRubyが完全に書けるようになるわけではないですが、とっかかりとしてはいいと思います。 英語は全く難しくないので大丈夫です。 公式HP(かなり大きいBGMが流れるので注意)Ruby Warrior -…
Rubyでコーディングする際のはまりポイントしてスコープの範囲がありますが、Rubyのif文はスコープを作りません。 確認 if true a = 1 end puts a #===> 1 上記のコードは問題なく動きます。 これはif文がスコープを作らないため、if文内で宣言された変数aが…
RVM等でRubyをインストールした場合にdefaultインストールされているgemを無理やりアンインストールする方法です。 結論から言うと RVMのgemsetに関するファイルを削除すればアンインストールできるようになります。 説明 準備 まずはdefaultのgem しかイン…
な… 何を言っているのか わからねーと思うが おれも 何をどう表せばいいのか わからなかった… 頭がどうにかなりそうだった… メタプロだとか超スピードだとか そんなチャチなもんじゃあ 断じてねえ Rubyのもっと恐ろしいものの片鱗を 味わったぜ… つまり Ruby…
Rubyの組み込みライブラリであるStructの説明です。 http://docs.ruby-lang.org/ja/2.0.0/class/Struct.html Structとは 構造体クラスらしいです。 Classクラスに似た感じですが、Classクラスにさらに情報を付加できるといった感じでしょうか 特徴 ①最初から…
RVMのリストをupdateする方法 RVMをupdateして、`rvm list known`で表示されるinstall可能なパッケージを増やす方法 最新のversionを入れたい場合など。 コマンド 最初にコマンドだけご紹介 $ rvm get stable $ rvm install #{インストールしたいversion} 説…
第二回Ruby技術者認定試験合格者ミーティングRuby認定試験(http://www.ruby.or.jp/ja/certification/examination/)のgold、もしくはsilverに合格した人向けのミーティング。主に、事前に質問を集めてMatzと前田さんがそれに回答するというスタイルで進みまし…
Levenshtein距離とJaro-Winker距離両方とも、二つの単語、文章の間の違い(距離)を調べる方法です。Levenshtein Distanceレーベンシュタイン距離 - Wikipedia 1文字削った文字列の末尾にどのような文字を追加すれば一致するか見ることで、1文字削った文字列と…
Rubyの条件式に多重代入を入れるとエラーになる。 例えば以下みたいな。 if (res1, res2 = multi_return_method) && res1 == 'hoge' puts 'success!!' end def multi_return_method return 'hoge', 'fuga' end 結論から言うと、仕様で意図的にエラーにしてい…
gem installしたライブラリがどこにインストールされているか調べる方法gem installでライブラリをインストールしたはいいけど、中身を確認したかったり、ちょっと書き換えたいときにどこに実際にライブラリがありるか確認する方法。コマンド $ gem which #{…
curbの使い方curbとはrubyのコード内でcurlコマンドを使えるようにするgemです。taf2/curbgithub.comなかなか日本語ではドキュメントがないので、APIに接続する際のコードを例にあげておきます。GET require 'curb' endpoint = 'https://hogehoge.com' # cha…
RVM(Ruby Version Manager)の使い方rbenvと覇権を争っている、Rubyのversion管理システムであるRVMの使い方です。 今回は試しにRuby2.1.5とRuby2.2.1をinstallします。 " rvm installation " # curl -L https://get.rvm.io | bash -s stable # source /etc/p…
勉強会やカンファレンスなどでプレゼンを作る際に他社のロゴをppt等に載せることがあるかと思いますが、大抵はそれぞれの会社がtrademark policyという形で使用方法を決めています。各会社毎に注意点を簡単にまとめます。全てをここには載せきれませんので、…
RubyのテストフレームワークRubyにはデフォルトでテストフレームワークが入っていますが、versionによってその中身が変移していっているのでその説明です。 はじめにこれは以下のクリアコードさんのページを自分なりに噛み砕いたものになっています。 http:/…
Ruby Association Certified Ruby Programmer Goldに合格したので、そのときの勉強方法をご紹介します。[前提条件] 1年前にSilverを取得していた。 [使った参考書・学習サイト]1. Rubyの絵本(Silver用) Rubyの絵本 スクリプト言語を楽しく学ぶ9つの扉 …