こんなふうにファイルを読み込むと標準では改行が入ってしまいます。
File.open(filename,"r") do |f| f.readlines end 解決策 改行はいらないので消しちゃいましょう。
File.open(filename,"r") do |f| f.readlines.map &:chomp end
wc -lは改行を数えるので最終行に改行がなかったら実際の行数よりも1行少なく数えられるそうだ。へえ。
array1 | array2 で (array1 + array2).uniq と同じように配列を重複なしで結合してくれます。ステキ!
例えば foo.rbというRubyスクリプトの実行時間をシェル上で知りたかったらtime foo.rbとすればいいわけですが、残念ながらirb上ではtimeコマンドをそのまま使うことができません。
解決策 標準で用意されているBenchmarkライブラリを使えばOK.
irb(main)> require 'benchmark' irb(main)> puts Benchmark.measure { "a"*1_000_000_000 } 0.350000 0.400000 0.750000 ( 0.835234) こんな感じで表示されます。
0.750000がCPUを使った時間で0.835234が実際にかかった時間。
気にしないといけないのはCPUを実際に使ってたじかんなので前者のほうになります。
ちなみに自分の環境だと裏で動画のエンコードを走らせながらVirtualBox上のOSでやってたのでCPU使用時間の50倍ぐらい実際にかかってしまってました。
参考 [Module: Benchmark (Ruby 2.1.1)][1]
[When benchmarking, what causes a lag between CPU time and “elapsed real time”? – Stack Overflow][2]
基礎知識 コンソールとシェルは別物です
bashとかnyaosとかコンソールウィンドウの中で動くものがシェルです。この用語の違いをわかってないとそもそもコンソールというものを探すことができないので必須の知識になります。
シェルは nyaos がオススメ Windows上で使うシェルはcygwinのbashとかGit付属のbashとかMSYSあたりのbashとか試してみましたが、結局はちゃんとWindows用に作られてるnyaos が一番便利だという結論にたどり着きました。
コンソールを変えよう 標準のcmd.exeで起動するコンソールウィンドウは文字幅が固定でコピペもまともに出来ない何かの罰ゲームではないかという出来なので別のものを探します。
候補はこんな感じ
ConEmu Console 2 ckw-mod ColorConsole PowerCmd ConEmu 現在一番よさそうなコンソールです。タブが使えて、新しいタブを開くときに現在のディレクトリを残したまま開けるのもポイントが高い。
Ctrl-aで行頭に移動とかそういうのも実装されてるし日本語も使えるし開発もさかんでStackoverflowに質問すると製作者が該当タグをウォッチしてるらしく直接回答をもらえる率が高いです。
ただ、何故か自分の環境だと時折動きがカクカクしだしビープ音が連続で鳴り響く時があります。間違えて大量にイベントが飛んでるくさいんですが、これが発生するとイライラするので使うのを控え中。
Console 2 動作も安定してるしタブも使える海外では定番のコンソールのようですが日本語が使えません。はい詰んだ。
ColorConsole, PowerCmd この2つはそもそもシェルの変更ができませんでした。
ckw-mod 日本人が作られてるらしいので日本語周りのバグはなさそうなのですが、いかんせんタブがない。古くからのタブ信者である自分には使いづらい。
結論 誰かよいWindows上で使えるコンソールを教えてください。
$ git push -u origin master error: src refspec master does not match any. という見たことないエラーが出てビビる。
原因と対策 原因:コミットしてない
対策:コミットする
以上!
参考 [src refspec master does not match any when pushing commits in git – Stack Overflow][1]
RailsでPostgresqlを使うときに毎回そのためのユーザーの作成方法を忘れてしまうのでメモ。
まずユーザーを作成 WindowsでChocolateyを使ってpostgresqlをインストールしてると初期パスワードはPostgres1234になってるので、
$ psql.exe -U postgres ユーザ postgres のパスワード: ←ここでパスワードを入力 psql (9.2.1) "help" でヘルプを表示します. postgres=# create user deployer; CREATE ROLE postgres=# alter user deployer with superuser; ALTER ROLE これでパスワード無しのdeployerユーザーが必要な権限付きで作成される。
※ Linux系のOSならsudo -u postgres psqlでpsqlコマンドを使いましょう。
パスワード無しユーザーでもOKにする これだけだとfe_sendauth: no password suppliedというエラーが出てしまうので
C:\PostgreSQL\data\pg_hba.confを開いて
# IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 を
# IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust に書き換える。
cygwinはWindows上で作成されたファイルを全て755の実行可能ファイルとして扱ってしまうので、そのままgitで扱うとすべてのファイルが実行可能権限を持ったなんとも危なっかしい構成になってしまいます。
対策 $ git config core.filemode false でfilemodeの変更を無視するように設定しておきましょう。
参考 [Windows Git users: Please check your core.fileMode setting – Google グループ][1]
twitter-bootstrap-railsを普通にWindowsで使おうとするとlibv8がないからアカンで~的なエラーが出てきてインストールに失敗します。
対策 特定のバージョンはインストールできるのでそれをインストールしましょう。
gem install libv8 --version 3.11.8.0
あとはGemfileにgem 'therubyracer', platforms: :rubyのコメントアウトを外してgem twitter-bottstrap-railsを追加すれば万事OK!
追記、より良い解決策 そもそもbootstrap-sassを使えばよいのでは?
RailsのDBからGETでデータの呼び出しはできるけど、PUTで値の追加ができなくてこんなエラーに成った時の対処法
Completed 422 Unprocessable Entity in 126ms ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken: 原因 CSRF対策です。
ダメな対策 モデルにこれを追加
skip_before_filter :verify_authenticity_token サイバーノーガード戦法です。おすすめしません。
良さそうな対策 gem の<a href="https://github.com/xrd/ng-rails-csrf">ns-csrf-rails</a>を使う。わからないことは全部gemにまかせてしまいましょう。