もた日記

くだらないことを真面目にやる

Vimメモ : splitjoin.vimで1行表記、複数行表記を切り替える

Vim

splitjoin.vim github.comこのプラグインを使うと、例えばRubyで以下のように1行で書いていたコードを puts "foo" if bar? 以下のような複数行の書き方へ簡単に切り替えることができる(逆の切り替えも可能)。 if bar? puts "foo" end

Vimメモ : vim-easy-alignでテキスト整形

Vim

テキスト整形 github.comvim-easy-alignというプラグインを使えば、例えば以下のテキストを Paul,McCartney,1942 George,Harrison,1943 Ringo,Starr,1940 Pete,Best,1941以下のように簡単にテキスト整形できる。 Paul, McCartney, 1942 George, Harrison, 19…

Vimメモ : vim-gitgutterで差分を左端に表示する

vim-gitgutter github.comvim-gitgutterというプラグインを使うと、Gitで管理しているファイル編集時に差分を表現する記号が左端に表示されるようになる。 ~が変更があった行、+が追加行、-が削除された行があることを示す。

Vimメモ : 日本語のヘルプを使う

Vim

オンラインヘルプ 下記サイトで日本語ドキュメントが確認可能。検索もできる。help - Vim日本語ドキュメント

Vimメモ : vim-speeddatingで日時をインクリメント/デクリメント

Vim

インクリメント/デクリメント Vimでは<C-a>でインクリメント、<C-x>でデクリメントができる。例えば、ノーマルモードで1の上にカーソルを置いて<C-a>を押すと2になり、<C-x>を押すと1に戻る。5つインクリメントしたい場合は5<C-a>のように数値を入力してから実行する。 この機能は日</c-a></c-x></c-a></c-x></c-a>…

Vimメモ : 挿入モードでバックスペースが効かない

Vim

挿入モードでバックスペースやCtrl-hを押しても何も反応がない場合の対処法。 下記行をvimrcに追加。 set backspace=indent,eol,start ヘルプによると以下のようなことらしい。

面白い映画の探し方

映画好きですが、面白そうな映画を探すときは「みんなのシネマレビュー」を参考にしています。以下の結果(2016/03/23時点)を見て、自分の感性と合うようなら参考にするのもよいかもしれません。 このサイトでは映画を0点から10点の間の11段階で評価してい…

Vimメモ : カラーコードをプレビュー

Vim

プラグイン Vimでカラーコードをプレビューするプラグインとしては以下のようなものがある。 vim-css-color colorizer vim-coloresque ちょっと使ってみたところ、vim-css-colorは起動が遅くなり、colorizerはblackなどの色名がプレビューされなかった。vim-…

Vimメモ : 末尾の無駄なスペースをハイライト/削除する

Vim

プラグインを使用すると末尾の無駄なスペースをハイライトして削除することができる。調べたところ下記2つのプラグインが見つかったが、vim-better-whitespaceの方は起動時にうまく有効化されなかったので、vim-trailing-whitespaceの方を使用する。 vim-tra…

Vimメモ : vim-indent-guidesでインデントを可視化する

Vim

vim-indent-guides vim-indent-guidesプラグインを使用すると図のようにインデントを可視化できる。

Vimメモ : ペーストするときにインデントされないようにする

Vim

ウェブページからサンプルコードをコピペすると以下のように変にインデントされてしまうことがある。 line line line :set paste インデントされないようにする簡単な方法はペーストする前に下記コマンドを実行してpasteモードにする。 :set paste 元のモー…

Vimメモ : filetypeの確認

Vim

filetype Vimを使っているとautocmd FileType rubyみたいな書き方を見るがFileTypeがよくわからなかったので調べてみる。ヘルプでは以下のよう書かれている。 Vimは編集しているファイルの形式を検出することができる。これはファイル名をチェ ックしたり、…

Vimメモ : switch.vimで文字列を楽々切り替え

Vim

switch.vimプラグイン github.comswitch.vimというプラグインを使うと、例えばtrueとfalseの切り替えがキー操作で簡単にできるようになる。 インストール方法 NeoBundleの場合は下記行をvimrcに追加。 NeoBundle 'AndrewRadev/switch.vim'

Vimメモ : カラースキーム変更いろいろ

Vim

構文ハイライトを有効にする まずは色を付けるために構文ハイライトを有効にする。下記設定を.vimrcに追加。 syntax enable なお、syntax onでも構文ハイライトは有効になるが、enableとの違いはヘルプによると下記とのこと。 コマンド ":syntax enable" は…

Vimメモ : コメント化/コメント化解除

Vim

Vimでコメント化/コメント化解除する方法はいろいろあるみたいなので調べてみる。 矩形ビジュアルモードを使用 Ctrl-vの矩形ビジュアルモードでテキストを選択後、Iを入力してコメント化文字列の#を入力、その後Escを押せば一瞬遅れて選択した行に編集が反…

Vimメモ : Vimをデフォルトの設定で起動する

Vim

たまにVimをデフォルトの設定で起動して動作を確認したいときがあるが、いつも方法を忘れるのでメモ。 下記オプションを設定して起動すればよい。 $ vim -u NONE -N ヘルプによると、NONEはvimrcファイルとプラグインを読み込まないようにする。NORCという設…

Vimメモ : Vim + tmuxだと<Esc>でのノーマルモード移行が遅い

Vimだけの場合は問題ないけど、Vim + tmuxで使っていると<Esc>キーを押したときにノーマルモードへ移行するのがなんか遅い。 調べたところ下記設定をtmux.confに追加すれば解決するようだ。 set -g escape-time 0OpenBSD manual pagestmuxのManual Pageによるとデ</esc>…

Vimメモ : dein.vimをNeovimで使ってみる

Vim

github.comNeoBundleの作者の新しいプラグインマネージャdein.vimをNeovimで使ってみる。NeoBundleよりシンプルで速いらしい。 インストール Quick startには、 $ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > instal…

brew updateでPermission deniedでエラーになる

Mac

Neovimをインストールしようとしてbrew installしたらエラーになり失敗した。 $ brew install neovim/neovim/neovim Cloning into '/usr/local/Library/Taps/neovim/homebrew-neovim'... remote: Counting objects: 370, done. remote: Total 370 (delta 0),…

Vimメモ : Neovimをインストールしてみる

Vim

github.comNeovimという次世代Vimがあるらしいのでとりあえずインストールしてみる。現時点でバージョンは0.1.*らしい。 インストール方法は下記ページに書いてある。Installing Neovim · neovim/neovim Wiki · GitHub

Railsメモ(33) : アプリをHerokuへデプロイする

前回Herokuへのデプロイ手順を確認したので、チュートリアルにあったサンプルアプリを参考に試作アプリをデプロイしてみる。github.com Rubyのバージョン チュートリアルではRuby 2.2.3でやっていたので、バージョンを2.2.3に変更しておく。

Railsメモ(32) : Herokuへのデプロイ手順を確認する

これまでに試作したアプリを公開するためにHeroku(発音はヘロク派が多いのかな)をデプロイ先として試してみる。 アプリの実行環境とデータベースを調べてみたが、お試しアプリ程度であれば無料枠内でできそうな感じ。 Dynos : Free 512 MB RAM 1 Web/1 Wor…

Railsメモ(31) : テンプレートエンジンをERBからSlimに変更する

今までテンプレートエンジンはデフォルトのERBを使用していたが、HamlやSlimといった別のテンプレートエンジンがあるので変更してみる。 Haml、Slimのどちらにするかだが、下記サイトの比較表によるとSlimの方が良さそうなのでSlimを試してみる。 Railsのテ…

Railsメモ(30) : DBをSQLite3からPostgreSQLに変更する

groupdateというgemを使おうとしたらSQLite3はサポートしていないとのこと。今後、似たような状況が発生すると思われるのでDBをSQLite3からPostgreSQLに変更してみる。 PostgreSQL 9.4のインストール 下記ページを参考にVagrant上のCentOS 6.6(64bit)にPostg…

Railsメモ(29) : Chartkickで簡単にグラフを描画する

Railsで簡単にグラフを描画してみたいのでgemを調べてみたところ下記gemがヒットした。Highcharts, Google Charts, Gruffといったライブラリが使えるらしい。 GitHub - ankane/chartkick: Create beautiful JavaScript charts with one line of Ruby GitHub …

Railsメモ(28) : Guard::LiveReloadでView変更時にブラウザを自動リロードする

github.comGuard::LiveReloadというgemを使用すればView関連のファイルを変更したときにブラウザを自動でリロードすることができる。 guard-livereloadのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'guard' gem…

Railsメモ(27) : Guard::Bundlerでbundle installを自動実行する

github.comGuard::Bundlerを使えばGemfileを変更したときに自動でbundle installしてくれるようになるので地味に便利。 Gemfileに下記行を追加して手動でbundle installする。 group :development do gem 'guard' gem 'guard-bundler', require: false end

Railsメモ(26) : Guardの有名なプラグインを調べてみる

Guardを使えばいろいろな処理が自動で実行できることがわかったので有名なプラグインを調べてみる。 List of available Guards · guard/guard Wiki · GitHub GithubのGuardのWikiページ。利用可能なプラグインのリストだがアルファベット順なのでどれが人気…

Railsメモ(25) : Brakemanでセキュリティチェックする

github.comRuboCopとRails Best Practicesに似たようなもので、Brakemanというセキュリティチェックに特化したgemがあるので試してみる。 Brakemanのインストール Gemfileに下記行を追加してbundle installする。 group :development do gem 'brakeman', req…

Railsメモ(24) : Rails Best Practicesでコードの品質をチェックする

Rails Best Practices - Rails Best Practices Rails Best PracticesというRailsのベストプラクティスがまとめられているサイトがあって、コードがそのベストプラクティスに沿っているかをチェックしてくれるrails_best_practicesというgemがあるので試して…

Railsメモ(23) : GuardでRuboCopを自動実行する

RuboCopで静的コード解析ができるようになったが、手動で実行するのは面倒だし忘れるのでGuardで自動実行する方法を試してみる。 Guardのインストール github.comGuardはファイルやディレクトリの変更を監視して、さまざまな処理を自動化するgemで、プラグイ…

Railsメモ(22) : RuboCopで静的コード解析を行う

github.comRuboCopというgemを使用すると静的コード解析が行えるようになる(READMEの冒頭にロボコップのセリフが書いてあるようにRoboCopとRubyをかけているのね)。 ベースになっているスタイルガイドは下記ページ(日本語訳)から確認できる。github.com

Railsメモ(21) : quiet_assetsでアセットパイプラインのログを出力しないようにする

development環境でログを見てみると以下のようなログが複数行出力されている。これはアセットパイプラインに関するログで、場合によっては邪魔なのでgemで出力しないようにしてみる。 Started GET "/assets/jquery_ujs.self-ca5248a2fad13d6bd58ea121318d642…

Railsメモ(20) : counter_cultureでカウント値をキャッシュする

Bulletを使用していたら下図のようなメッセージが表示された。どうやら原因は下記ビューのartist.songs.sizeとしている部分で、関連するモデルの件数を計算するためにSELECT COUNT(*)をデータの数だけ実行してしまっている。 … <% @artists.each do |artist|…

Railsメモ(19) : BulletでN+1問題を検出する

Bulletの設定 github.comN+1問題を検出するためにBulletというgemを試してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'bullet' end

Railsメモ(18) : rack-mini-profilerで簡単なパフォーマンスを計測する

github.com多対多のリレーションがあるモデルに対してビューを変更したら大量のSQL文が実行されるようになったので、まず現状を確認してみる。 rack-mini-profilerというgemを追加すると簡単なパフォーマンス計測ができるようになるのでこれを使用してみる。…

Railsメモ(17) : コントローラとビューを更新する

Artistモデルを作成し、SongモデルとArtistモデルの間に多対多のリレーションを作成したので、コントローラとビューも更新する。 最初に下記コマンドでひな形を作成する。今回はArtistの一覧を表示するindexページとArtist個別のshowページを作成する。 $ ra…

Railsメモ(16) : seed-fuで多対多のリレーションにデータを追加する

wonderwall.hatenablog.com多対多のリレーションを作成したのでseed-fuでデータを追加してみる(と言っても使い方はこの前と特に変わらない)。 Songモデルに対しては過去にデータを追加しているので、Artistモデルと中間テーブルのSongArtistに追加するデー…

Railsメモ(15) : rails-erdでER図を出力する

複数のモデルを作成したのでrails-erdを使用してER図を出力してみる。 Gemfileに下記行を追加してbundle installする。 group :development, :test do gem 'rails-erd' endER図を出力するコマンドを実行する。 $ rake erd Loading application environment..…

Railsメモ(14) : 多対多のリレーションをhas_many throughで作成する

これまでにSongモデルを作成しているが、今度はArtistモデルを作成する。 Songは"featuring"などで複数のArtistが関わっており、逆にArtistは複数のSongを持っているため、これらのモデルに多対多のリレーションを作成する。 Artistモデルの作成 まず、Artis…

Railsメモ(13) : simple_formでRansackの検索フォームを簡単に作成する

github.com検索フォームのコードの記述量が多いので何かよい方法がないか調べてみたところ、simple_formというgemを使用するとフォームが簡単に作成できるようなので試してみる。 まずGemfileに下記行を追加してbundle installする。 gem 'simple_form'次にg…

Railsメモ(12) : Ransackでテーブルのソート機能を追加する

Ransackにより検索機能を追加できたが、Ransackではテーブルのソート機能も追加できるようなので試してみる。 使い方はビューファイルのthタグ内をsort_linkヘルパーを使用して書き換えればよい。 <th><%= sort_link(@q, :title) %></th> これでヘッダが図のようにク…

Railsメモ(11) : Ransackで検索機能を追加する

github.comRailsで検索機能を追加するにはRansackを使用するのがよいらしいので試してみる。 Gemfileに下記行を追加してbundle installする。 gem 'ransack'まずコントローラのapp/controllers/songs_controller.rbを編集する。 class SongsController < App…

Railsメモ(10) : Springでrails, rakeコマンドを高速化する

github.comSpringというRails application preloaderを使用すると、railsやrakeコマンドの起動が高速化できる。 Rails 4.1以降では標準で組み込まれているため知らず知らずに使用していたようだ。確かにGemfileには group :development, :test do … gem 'spr…

Railsメモ(9) : kaminariでページネーション機能を追加する

2,500件分のデータを追加したのはよいが、アプリで表示してみると1ページに2,500件分全てが表示されてしまうのでページネーション機能を追加する。 kaminari 有名なページネーション機能のgemはkaminariらしいので、Gemfileに下記行を追加してbundle install…

Railsメモ(8) : seed-fuでデータを追加する

GitHub - mbleigh/seed-fu: Advanced seed data handling for Rails, combining the best practices of several methods together. Gemfileに下記行を追加してbundle installする。 gem 'seed-fu', '~> 2.3'まずディレクトリとファイルを作成する。 $ mkdir …

Railsメモ(7) : rake db:seedでデータを追加する

追加したいデータをCSVファイルとして出力したのでrake db:seedコマンドを使ってデータを追加してみる。 最初にこれまでに追加したデータを削除しておく。 $ ./bin/rails c Loading development environment (Rails 4.2.3) [1] pry(main)> Song.count (0.2ms…

Railsメモ(6) : Nokogiriでスクレイピングする

Bootswatchで見た目はよくなったがデータ数が少ないので、ここからはデータを増やす作業をする。 rails consoleで1個1個追加なんてしていられないので、NokogiriでWikipediaのページをスクレイピングした結果をCSVファイルに出力してまとめて追加する。 Noko…

Railsメモ(5) : Bootswatch(Bootstrap)で見た目を変更する

手っ取り早く見た目を良くするならBootstrapだが、今回は色々なテーマが選択できるBootswatchを使用してみる。 Bootswatch: Free themes for Bootstrap RailsでBootswatchを使うgemとしては、 GitHub - maxim/bootswatch-rails: Bootswatches converted to S…

Railsメモ(4) : コントローラとビューを作成する

rails consoleで追加した曲のデータをアプリで表示してみる。 コントローラの編集 まず下記コマンドでSongsコントローラのひな形を作成する。 $ ./bin/rails g controller Songs index create app/controllers/songs_controller.rb route get 'songs/index' …