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

にしもと.blog

色々してます。

で囲まれた部分をaタグに変換するのをRubyで

Wikipediaとかで"["と"]"で囲まれた部分をaタグに変えるのをRubyで書いた.

その後redcarpetというgemがあるのを知り、そちらを採用

https://gist.github.com/nishimoto/f0e743dff91bf6eecf0606ea2d4f0270 Gistのリンク

コードは以下

gist.github.com

Railsで"wrong argument type symbol(expected Module)"

DBの先読みで 

@comments = @micropost.comments.include(:user)

をしたらハマった。

 

Moduleが来るはずのところにSymbolが来てるよ、というエラー。

includeはモジュールを読み込むとに使うやつで、DBの先読み時に使うのはincludesでした。

 

ということで

@comments = @micropost.comments.includes(:user)

としたら解決

Rails tutorialで「DEPRECATION WARNING: Sprockets method `register_engine` is deprecated.」

Waningの続きを見るとsprocketsが悪いと書いてあるが、Gemfileにはsprocketsないやん!! と思った。

 

Gemfile.lockにてsprocketsを調べると、sass-railsの中で使われているようだ。

↓ 

f:id:no-ku-ma:20160924152026p:plain

 

sass-railsのバージョン指定をなくして bundle installのあとbundle updateをしたら治った。

 

 

AtomのPlatformIO IDE Terminalでエディタにターミナル機能を付加する

Rstudioのbash版が欲しいと思っていたらAtomにあった。

atom.io

 

なにこれめっちゃ便利

Googleスプレッドシートからjsonを取り出してcsvにconvertする

意外と落とし穴があるのでメモ

1. スプレッドシートを公開する

ハマったポイント^^;

f:id:no-ku-ma:20160811155153p:plain

 

2. URLの調査

https://spreadsheets.google.com/feeds/cells/#{spread_sheet_id}/od6/public/values?alt=json

ただし、od6の部分は複数シートある場合はちょっと違う。

spread_sheet_idはスプレッドシートのURL見れば長い文字列があるからわかると思う

 

3. jsonからcsvにコンバートする

個人的にはtsvの方が好きなのでtsvにコンバートするRubyのプログラムをちゃちゃっと書いた

 

終わり

Rubyでtsvファイルをhashに収める

最初はこれだった

def file_to_hash(file_name=ARGV[0])
    file = File.open(file_name,"r")
    hash = Hash.new()
    file.each do |line|
        line.chomp!
        hash[line.split("\t")[0]] = line.split("\t")[1]
    end
    file.close
    return hash
end

start_time = Time.now
hash = file_to_hash(ARGV[0])
p "take time is  #{Time.now - start_time}s"

ただ最近ひらめいて

def file_to_hash(filename)
    file = File.open(filename,"r")
    arr1 = file.read.split(/\n|\t/)
    file.close
    return Hash[*arr1]
end
start_time = Time.now
h = file_to_hash(ARGV[0])
p "処理概要 #{Time.now - start_time}s"

に変えた

結果として100万行処理するのに15秒かかる処理が2秒で終わった。はやっ。

Rですべての行に関してapply関数を用いてt検定

↓のコードをコピペで1行ずつ動かせば理解できる。

gistebe7cd16dbeed0453106

apply関数は

apply(<使いたいデータ>、 <1なら行について 2なら列について>、 <やりたいこと>)

という感じで使えるのは知っていたが、具体的なやり方がわからなかった。

ただ今回ので function(x) がrubyとかpythonでの↓と同じなんですね!! というのがわかった。今さら過ぎる。。。

x = file.gets.to_vec

(.to_vecはそんなのないけど、行をベクトルに変換するメソッドだと思ってもらえれば)