牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Ruby

Ruby でやってみる『機械学習 はじめよう第3回 ベイジアンフィルタを実装してみよう』メモ

若干リファクタ naivebayes.rb: 2014-06-30(ruby2.1)元ネタは Python 実装 第3回 ベイジアンフィルタを実装してみよう:機械学習 はじめよう|gihyo.jp … 技術評論社 理論 第2回 確率の初歩:機械学習 はじめよう|gihyo.jp … 技術評論社 やること ナイーブ…

Python で『書籍 "RとRubyによるデータ解析入門』 のサンプルコードを書いてみるメモ

元 『O'Reilly Japan - RとRubyによるデータ解析入門』 https://github.com/setoyama60jp/everyday/blob/master/Chapter4/restroom.rb https://github.com/setoyama60jp/everyday/blob/master/Chapter4/example4-4.rb Ruby のサンプルを Python で書き換えた…

Ruby で全角を2、半角を1として文字数を数えてみるメモ

(ruby2.1.1)間違えてたので修正 def char_bytesize_for(char) char.bytesize == 1 ? 1 : 2 end def sum_bytesize_for(text) text.each_char.map { |c| char_bytesize_for(c) }.inject(:+) end puts char_bytesize_for("日") #=> 2 puts sum_bytesize_for("日…

ruby-mode でマジックコメントの自動挿入を停止するためのメモ

Ruby2.0からマジックコメントが不要らしいけど、Emacs の ruby-mode で自動挿入されてしまう。 # -*- coding: utf-8 -*- なので停止する。 色々やってみたが下記でようやく停止できた。 (require 'ruby-mode) (defun ruby-mode-set-encoding () nil) もっと…

Emacs の ruby-mode で補完するのに『robe』を使ってみるメモ

(Emacs24.3, Ruby2.0) robe dgutov/robe · GitHub 使い方 インストール M-x package-install RET robe RET. (auto-complete.el と inf-ruby はインストール前提で) init.el (add-hook 'ruby-mode-hook '(lambda () (robe-mode) (robe-ac-setup) (inf-ruby-…

Pythonで『RとRubyによるデータ解析入門』のコードを移植してみるメモ

(python==2.7.6, ruby==2.0.0) 4章 オフィスとトイレの関係 待ち行列の人数をscvファイルで書き出す。 (example4_4 のみ。他はそのうちやるかも?) そのまま移植しようとしたら上手く動かなかったので、クラスふたつにしたり書き直した。 似たような結果に…

Ruby と Javascript の変数のデフォルト値のメモ

修正・追加 Ruby irb(main):002:0> hoge ||= 'fuga' => "fuga" irb(main):003:0> hoge => "fuga" Javascript 1 > var hoge; undefined > hoge = hoge || 'fuga'; "fuga" > hoge "fuga" 2 > var hoge; undefined > hoge || (hoge = 'fuga'); "fuga" > hoge "f…

様々なプログラミング言語で再帰の階乗を書いてみるメモ

変更 階乗 - Wikipedia Haskell fact :: Int -> Int fact 0 = 1 fact n = n * fact (n - 1) main :: IO () main = do print (fact 10) -- > 3628800 Python def fact(n): if n == 0: return 1 return n * fact(n - 1) print(fact(10)) #-> 3628800 Ruby def …

Ruby で積集合・差集合・和集合などのメモ

(ruby2.0) irb(main):001:0> a = [1,2,3,4] => [1, 2, 3, 4] irb(main):002:0> b = [3,4,5,6] => [3, 4, 5, 6] irb(main):003:0> a & b => [3, 4] irb(main):004:0> a - b => [1, 2] irb(main):005:0> a | b => [1, 2, 3, 4, 5, 6] irb(main):019:0> c = [2,…

MacPortsでインストールした rbenv のバージョンが古いので GitHub の最新版を使う場合のメモ

(MacOSX10.8) 前置き 現時点で MacPorts でインストールできる rbenv は ver.0.3(最新 ver.0.4) それから ruby-build @20121022 も古いままで、リストに 2.0.0-p0 が無い(2.0.0-devだけ) 想定以上にMacPortsとか使わないでのインストールが簡単だった。 …

『RとRubyによるデータ解析入門』で GUI ツールの shoes を使うためのメモ

(MacOSX10.8, Ruby1.9.3, Emacs24.3)gem install shoes でインストールしたが動かせず、 Shoes.app を使うことにした Download Shoes! The easiest little GUI toolkit, for Ruby. Shoes.app hoge.rb などをShoes.appで開くかD&Dすればウインドウ表示される…

Ruby で「a~z」と「あ〜ん」の表示メモ

(Ruby1.93) irb(main):001:0> [*'a'..'z'].join => "abcdefghijklmnopqrstuvwxyz" irb(main):002:0> [*'あ'..'ん'].join => "あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽま…

Rubyのブロックのメモ

(Ruby1.9.3) def foo(a) yield a end puts foo(10) {|x| x * 2} # >> 20 def bar(option) yield option end puts bar(a: 2, b: 3) { |o| o[:a] + o[:b] + 10 } # >> 15

Pythonでリスト内包表記を使った処理をRubyで書くとしたらメモ

(Python2.7, Ruby1.9) Python print [name.upper() for name in ["foo", "bar"]] # >> ['FOO', 'BAR'] これをmapで print map(lambda x: x.upper(), ["foo", "bar"]) # >> ['FOO', 'BAR'] python久々すぎて、にメソッド名の後に括弧いれるの忘れて戸惑ってし…

Rubyのmapとinjectのメモ

(Ruby1.9.3) seq = ["foo", "bar"] p seq.inject(0) { |sum, str| sum + str.length } # >> 6 p seq.map(&:length) # >> [3, 3] p seq.inject(:+) # >> "foobar" p seq.map(&:length).inject(:+) # >> 6 Rubyによる関数型プログラミング

Ruby で 1/0 のメモ

(Ruby1.9.3) p 1/0 # >> ZeroDivisionError p 1.0/0 # >> Infinity Infinity!?

Ruby で Python の sum 的なやつ忘れるのでメモ

(MacOSX10.8, Ruby1.9.3, Python2.7.3) Python print sum([1,2,3,4,5]) #=>15 Ruby puts [1,2,3,4,5].inject(:+) #=>15

Ruby で 実行速度を計測するメモ

(Ruby1.9.3) benchmark require 'benchmark' puts Benchmark::CAPTION puts Benchmark.measure { puts [1,2,3,4,5].inject(:+) } #=> user system total real #=> 15 #=> 0.000000 0.000000 0.000000 ( 0.000015)

『プログラミングClojure』2.3関数の無記名関数を Python と Ruby でもやってみたメモ

Clojure 1.4 (defn make-greeter [greeting-prefix] (fn [username] (str greeting-prefix ", " username))) (def hello-greeting (make-greeter "Hello")) (hello-greeting "world") ;;-> "Hello, world" ((make-greeter "Howdy") "pardner") ;;-> "Howdy, …

Ruby, Clojure, Python の空リストのブール値の違いメモ

(MacOSX10.8, Ruby1.9.3, Clojure1.4, Python2.7) Ruby true irb(main):010:0> [] ? "t" : "n" "t" Clojure true user> (if () "t" "n" ) "t" Python False >>> "t" if [] else "n" 'n'

Ruby のクラスメソッドと特異クラスのメモ

(Ruby1.9.3) #クラスメソッド class Foo def self.bar p "foobar" end end Foo.bar #=> "foobar" #特異クラス class Hoge class << self def fuga p "hogefuga" end end end Hoge.fuga #=> "hogefuga"

ruby-mode で rcodetools を使った補完のメモ

(MacOSX10.8, Emacs24.2, ruby1.9.3[rbenv])自分の環境で Rsense がうまく補完してくれなくなってしまった *1 ので rcodetools を使ってやってみた。 auto-complete-ruby.el もうまくいかなかったのでシンプルな感じでやってみた。 やり方 インストール $ su…

簡単なカウンタをRubyとPythonで書いてみたメモ

Ruby (Ruby1.9.3) その1 class Counter def up @count ||= 0 @count += 1 end end count = Counter.new 5.times do p count.up end #=> 1 #=> 2 #=> 3 #=> 4 #=> 5 もっと簡単に書けそうな気がする その2(追記) Google先生に聞いたら、自分のブログに書…

CotEditer で行頭にナンバリングするスクリプトを Ruby で書いてみたメモ

(MacOSX10.3, Ruby1.9.3, CotEditer1.3.1) 行頭が『-』『+』『1.』の場合、ナンバリングするスクリプト CotEditor プロジェクト日本語トップページ - SourceForge.JP For example 行頭が『-』の場合の実行結果 - hoge - fuga - foo - bar #=> 1. hoge #=> 2.…

Rails console での [Time, DateTime, Date] の localtime などの挙動メモ

(Rails.3.2.8, Ruby1.9.3) irb(main):034:0> Time.now #=> 2012-12-23 13:55:02 +0900 irb(main):035:0> Time.current #=> Sun, 23 Dec 2012 04:55:06 UTC +00:00 irb(main):036:0> Time.current.localtime #=> 2012-12-23 13:55:11 +0900 irb(main):037:0> …

CotEditor に日付を挿入する (Ruby | Python)スクリプトを追加してみた

(MacOSX10.8, CotEditor1.3.1, Ruby1.9.3, Python2.7) CotEditor プロジェクト日本語トップページ - SourceForge.JP やり方 CotEditor のメニューバーのスクリプトアイコンから「スクリプトフォルダを開く」 そのフォルダにスクリプトファイルを作成 スクリ…

Emacs の ruby-mode でマジックコメントを変更するメモ

(MacOSX10.7, Emacs24.2, Ruby1.9.3) 問題 MacOSX の Emacs で濁点が分割する問題があって、それを回避するためにエンコーディングを以下な感じで utf-8-hfs にしてたら問題が。 (require 'ucs-normalize) (prefer-coding-system 'utf-8-hfs) (setq file-nam…

Emacs で run-ruby して irbを立ち上げて日本語入力するとエラーになる場合の対処メモ

(Emacs24.2, Ruby1.9.3, MacOSX10.7) 問題 Terminalでは正常動作 $ irb irb(main):001:0> RUBY_VERSION => "1.9.3" irb(main):002:0> Encoding.default_external => #<Encoding:UTF-8> irb(main):003:0> a = "あ" => "あ" irb(main):004:0> Emacs の run-ruby で irb 立ち上</encoding:utf-8>…

Rubyのハッシュのメモ

irb(main):011:0> d = {"zero"=>0, "one"=>1, "two"=>2} => {"zero"=>0, "one"=>1, "two"=>2} irb(main):012:0> d["zero"] => 0 irb(main):013:0> d.keys => ["zero", "one", "two"] irb(main):014:0> d.values => [0, 1, 2] irb(main):015:0> d.store("thre…

Ruby の スタイルチェックを tailor 使って Emacs の Flymake でやってみた

(Emacs24.1, Ruby1.9.3) gem Install tailor turboladen/tailor · GitHub "A RubyGem that allows for checking standard styling of Ruby files. " gem install tailor init.el ;; FlymakeTailorRuby (defun flymake-tailor-ruby-init () (let* ((temp-file…

irb で補完できるようにする設定の件

pry 使おうかと思ったけど、補完できるなら irb でいい気がしてきた。 設定 ~/.irbrc 下記追加 require 'irb/completion' irb で確認 irb(main):001:0> a = 1 => 1 irb(main):002:0> a.si #<- ここでタブすると補完候補が表示される a.singleton_class a.sin…

書籍『たのしい開発 スタートアップRuby』がなかなか良書な件

『これからRubyを始める人、必読。』 『Rubyのよさがピンと来ない人、必読。』 『Rubyをもっと使いこなしたい人、必読。』 表紙にある言葉その通りな内容でおすすめ。 こういう書籍を献本してもらえるくらいのrubyistになるべく頑張りたい。

1から10の配列を作るメモ

Python >>> range(1,11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> map (lambda x: x+1, range(10)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> [n + 1 for n in range(10)] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Ruby irb(main):001:0> (1..10).to_a [1, 2, 3, 4, 5, 6, …

Rails3 の capistrano で rbenv でインストールした Ruby で rbenv rehash しないと capify できない件

現象 Gemfile : gem 'capistrano' : bundle install $ capify . bash: capify: command not found 原因 #358 Brakeman - RailsCasts rbenv rehash すればいいらしいが、 rbenv で Ruby を上書きインストールすると $ rbenv rehash rbenv: cannot rehash: /Us…

rbenv で インストールした Ruby の irb で日本語入力できない場合

(MacOSX10.7, Ruby1.9.3)irb で日本語の入力ほとんどしないので気がつかなかったのだけど。 $ irb irb(main):001:0> japanese ="\U+FFE6\U+FFA5\U+FFE6\U+FFAC\U+FFE8\U+FFAA" => "" 『japanese =""日本語"』と入力しようとすると上記のようになる 原因 Goog…

each_with_index のインデックスで『0』以外から始める場合

each_with_index の場合 ["Tanaka", "Marcus", "Tulio"].each_with_index do |name,i| p "#{name}: #{i}" end #=>"Tanaka: 0" #=>"Marcus: 1" #=>"Tulio: 2" 『0』以外から始める場合 1から始める例 each と with_index(1) の間は『.(ドット)』 ["Tanaka",…

Emacs24 の Rails 開発環境の rinari を package.el でインストールしようとしたら、 ruby-mode-1.1 is unavailable で出来ない件

Google先生に訊いたところ解答が。 ELPA Confusion · Issue #21 · eschulte/rinari · GitHub パッケージに "tromey" "http://tromey.com/elpa/" を追加すれば ruby-mode-1.1 が入るらしい。 marmalade しか追加してなかった。 init.el (require 'package) (a…

Rails3 で初期データ投入する時に seeds.rb を使い rake db:setup もしくは rake db:seed などで erb の タグを書いた yaml を指定したディレクトリからすべて読み込む場合のメモ

(Rails3.2.6, Ruby1.9.3) db/fixtures に hoge.yml を置いた場合 db seeds.rb fixtures hoge.yml fuga.yml : db/fixtures の yml を全て読み込む。 それから yml に erb のタグを書いても読み込むようにする。 ex: hoge: date: <% Date.today %> seeds.rb ex…

『第23回 Rails勉強会@東北』に参加してきました

第23回 Rails勉強会@東北 | Facebook 参加人数5名(Ruby1.9.3, Rails3.2.6) 雑談 省略 Rails3 レシピ 183 『OmniAuth でユーザ認証の仕組みを作る』P438 Facebook の認証のみ Facebook デベロッパーサイトでアプリの登録する Facebook のアカウント取得しと…

Rails3.2.6 で アプリ作成時に bundle install でエラーになる件 -- rbenv で Ruby1.9.3 インストールした場合

bundle install でこける $ rails new hogeapp create create README.rdoc : create vendor/plugins create vendor/plugins/.gitkeep run bundle install /Users/username/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation f…

『メタプログラミングRuby 1.2.1 クラス定義の中身』のオープンクラス == モンキーパッチ あたりの件

Python Pythonだとエラーになるが... class D: def x(self): return "x" class D: def y(self): return "y" obj = D() print obj.x() print obj.y() #=> Traceback (most recent call last): #=> File "qr_96298g4R.py", line 10, in <module> #=> print obj.x() #=></module>…

『メタプログラミングRuby 1.2.2 オープンクラスの問題点』でRubyのテストのやり方って? (おまけ:Pythonの場合)

Ruby の場合 Ruby1.9.3 replace.rb def replace(array, from, to) array.each_with_index do |e, i| array[i] = to if e == from end end test_replace.rb require 'minitest/unit' load 'replace.rb' MiniTest::Unit.autorun class ReplaceTest < MiniTest:…

『ハッカーと画家』第13章 オタク野郎の復習 付録:力 のアキュムレータのとこクロージャの件のメモ

Revenge of the Nerds Ruby def foo(n) lambda { |i| n += i } end f = foo(1) puts f.call(1) puts f.call(2) puts f.call(3) puts f.call(4) puts f.call(5) #=> 2 #=> 4 #=> 7 #=> 11 #=> 16 #=> nil Python Python の lambda は式しか使えない。代入は文…

RVM で Ruby1.9.3 がうまく動いてくれないので、『rbenv』に乗り換えてみた

Rails を作った HDD のいる会社 37signals の人か作ったらしい『rbenv』をつかってみる (環境: MacOSX10.7.4,) Download: rbenv $ cd $ git clone git://github.com/sstephenson/rbenv.git .rbenv Config: bash_profile or bashrc export PATH="$HOME/.rbe…

Emacs で rbenv でいれた Ruby を使う場合の設定

rbenv で Ruby1.9.3 をインストールして、Emacs の ruby-mode から run-ruby でインタプリタを立ち上げると古いバージョンが表示される。 バージョン確認 M-x run-ruby irb(main):001:0> RUBY_VERSION "1.8.7" init.el これをすればよいみたい。 Using rbenv…

『RailsによるアジャイルWebアプリケーション開発 第4版』 "10.1 もっとスマートなカートの作成" で ActiveModel::MassAssignmentSecurity::Error になる件

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: product_id 原因 ActiveModel::MassAssignmentSecurity::Error になるのは attr_accessible を定義してないかららしい fix 修正してみる app/models/line_item.rb 他…

RSpecの実行速度を速くするらしい『Spork』をいれてみる

『追記:rspec, spork, guard で自動テストをやってみる』 RSpec, Spork RSpec インストール済み、かつ既にテスト書いてある前提で Install Gemfile group :development, :test do gem "rspec-rails" gem 'spork' end shell $ bundle install : $ spork --bo…

Rails と RSpec のメモ

Railsで目指せ、情熱エンジニア 第1回 Railsを始めたきっかけ − @IT 第2回 Railsの学び方 − @IT 第3回 DojoとKataでRubyを学ぼう − @IT 第4回 忘れやすい人のためのRailsリファレンスガイド − @IT http://www.atmarkit.co.jp/fcoding/rails/articles/pas…

『RailsによるアジャイルWebアプリケーション開発 第4版』"9.3 イテレーションD3:ボタンの追加" で rake test:functionals するとエラーになる件

(MacOSX10.7.4, ruby1.9.3, Rails3.2.3) 9.3 イテレーションD3:ボタンの追加 P107 $ rake test:functionals Run options: # Running tests: .......E.............. Finished tests in 1.915650s, 11.4844 tests/s, 17.2265 assertions/s. 1) Error: test_sh…

Rubyリファレンスマニュアルをshellから調べるためのメモ

Download リファレンスをダウンロード http://www.ruby-lang.org/ja/man/archive/ 1.9.3は/sunapshot にある。 bashrc 自分の使いやすいようにエイリアス作る。 ディレクトリ名が長いので短くした(ruby-refm-1.9.3-dynamic-snapshot -> ruby-refm) alias r…