2014-05-01から1ヶ月間の記事一覧
バイナリダンプは指定したファイル・標準出力の結果を16進数として吐き出すものです。 メモリの状態やバイナリファイルのヘッダを確認するときに重宝します。 組込み業界で仕事をしていた頃よく使いました(遠い目 odコマンド まずはodコマンドから。 タイプ…
$ colrm {削除をはじめる番号} {削除を終える番号}といった形でつかいます。cutでやると $ for i in {1..9}; do printf $i; done | cut -b 1 -b 5-9 156789となるところ、colrmだと $ for i in {1..9}; do printf $i; done | colrm 2 4 156789となります。残…
<%= link_to_if(user_signed_in?, "編集", edit_hoge_path(@fund), class: 'btn') %> とやれば、deviceでサインインしている場合*1リンクを表示、 なければただの文字列を表示します。非ログイン時に何も表示したくない場合は空のブロックを渡します。 <%= l…
Objectクラスに付属しているsendメソッドは、引数に文字列かシンボルを与えてやると同名のメソッドを引っ張り出してくれる凄い子です。 %w(pop push slice).send(:to_s) #=> "[\"pop\", \"push\", \"slice\"]" 引数つきで実行する事も当然可能です。 %w(pop …
link_toとやる場合、よくある記法だと <%= link_to "新規作成", :controller => "pages", :action => "new" %> ですが、railsは賢い子なので <%= link_to "新規作成", new_page_path %> とやってあげると、pageコントローラーのnewメソッドを呼び出してくれ…
keep_ifメソッドはブロック内の条件に一致した内容を抽出してくれるメソッドです。 似たものに一致した内容を削除するdelete_ifがあります。 使い方 > (1..100).to_a.keep_if {|a| a % 9 == 0} => [9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 99] > ('a'..'z')…
rawでerb系でタグを含んだ文字列をHTMLとして出力させるたとえば以前紹介したdiffyのようにhtml形式で出力するものも余計な細工をせずそのまま出力できます。 ## controller @diff = Diffy::Diff.new("alpha\nbeta","alpha\ngamma").to_s(:html_simple) ## s…
bannerというコマンドを使うと、 昔懐かしな電光掲示板風のAsciiアートを標準出力に表示できます。 $ banner -w 40 "as you like" ### ####### ## ######### #### ## ## # ## # ## # ## # ## ############### ############## # #### ## #### ###### ## #####…
diffyはRubyのStringクラスのdiffを扱うGemです。出力パターンも相当に頑張ってます。 文字 >> puts Diffy::Diff.new("alpha\nbeta","alpha\ngumma").to_s alpha -beta \ No newline at end of file +gumma \ No newline at end of file シンプルなhtml出力 …
"git log -p"は変更履歴つきで編集ログを見せてくれるコマンドです。 これに具体的なファイル名を指定してあげれば、特定ファイルのみの変更履歴を確認することができます。 $ git log -p app/view/hoge/show.html.erbとやれば commit xxxxxxxxxxxxxxxxxxxxx…
Modelの差分を残してくれる便利なgem、paper_trailですがデフォルトだと何でも保存対象にしてしまいます。 特定のカラムだけ保存したい場合は:onlyオプション付きで呼び出します。 has_paper_trail :only => [:name] カラムの内容に動的に対応したい場合はPr…
mroongaで論理積・論理和の検索条件を扱う - Bye Bye Mooreではmroonga_commandを使う方法を採用しました。 今回はMySQLの全文検索方式に倣ってBoolean modeによる論理積を実装してみます。当該modelの末尾あたりに scope :search_with, ->(name) { where(%Q…
rails cを使うと、わざわざブラウザを使わなくともメソッドの挙動lを検証をする事ができます。 ただ、実行中にmodelを弄っても反映してくれません。弄った結果をすぐ反映したい場合は >> reload! とやればよいです。 これで毎度毎度rails cとやらずとも同じ…
5/20追記:mroonga_command以外のバージョンも作りました mroongaで論理積・論理和の検索条件を扱う(Boolean mode編) - Bye Bye Moore 前回に引き続きmroongaの検索条件について。 前方一致(??) 本来なら、その言葉から始まる言葉に一致するのですが... …
mroongaで論理を扱う場合、mroonga_commandでラッピングしてしまうのが手っ取りバ早そうです。 ...もっとスマートな方法をご存知の方はお気軽にトマホークを御投擲下さい(震え声 AND(論理積)検索 両方一致のAND検索 mysql> select mroonga_command("select …
基本的にGmailと同じくto:やfrom:、before:なんかがつかえます。 それに加えて、ファイルタイプの指定も可能です type: ドキュメントの種類で検索します。 指定できる種類は、 document spreadsheet presentation drawing image video image_or_video pdf te…
wcは"word, line, character, and byte count"との説明通り、文字数や行数を数えるコマンドです。 原則オプションと組み合わせて使います。 -m The number of characters in each input file is written to the standard output. If the current locale does…
まず、git ls-filesというコマンドを使うとファイル名一覧を出す事が出来ます。 $ git ls-files .gitignore .magnum.yml .rspec Gemfile README.rdoc Rakefile app/assets/images/.keep app/assets/javascripts/application.js app/assets/javascripts/boots…
今迄無批判に $ rake db:migrate:reset $ rake db:resetとしていました。 これでDBを弄りつつseedを配置していた訳ですが... Engineをmroongaに設定したところ、今迄の手法が通じませんでした。 というのも、db:resetは 削除=>作成=>schema.rbから復旧と…
たとえば、検索エンジンにmroongaを追加したい場合は 既存のdb/migrationの当該ファイルにoptions: "ENGINE = mroonga"を追加します class CreateProfessors < ActiveRecord::Migration def change create_table :professors ,options: "ENGINE = mroonga" d…
FindライブラリはRubyに標準装備されている検索用コマンドです。 `find ...`とかやらなくとも良いのです。 その上、標準添付なのでプラットフォームの差分を吸収してくれるのが良いです。記法はfind(1)に則るので、フツーに使えます。 $ ruby -rfind -e 'Fin…
brew editはRubyで記述されたインストール手法を編集することが出来るコマンドです。 単に確認したいだけであればbrew catという奴もあります。また、 $ brew log #{アプリ名}とやれば、Gitで管理されたアプリの編集ログを見ることもできます。 log [git-log…
Linux環境下のネットワークカードでは仮想的に複数のアドレスを運用(エイリアス方式)する事ができます。 極力NICは分けておいたほうが良いのですが、「仮アドレスの試験」や「新環境への移行期間」では有効に使う事ができます。 具体的な手法 今回は アド…
二日連続でgroongaの失敗記事です( mysql> select mroonga_command("tokenize TokenMecab 'alpha'"); とやって ERROR1123(HY000) failed to open database: syscall error Can't initialize function 'mroonga_command' 等々が出たら、エンジンを正常にmroo…
groonga導入済の環境で、mroongaをmecab付きで導入しようとしたところ、ダメっぽい感じでした。 $ groonga > register normalizers/mysql [[-3,1399468383.43181,0.00655889511108398,"cannot find plugin file: </usr/local/Cellar/groonga/4.0.1/lib/groonga/plugins/normalizers/mysql.so>",[["grn_plugin_register","plugin.c",507]]…
前回の例と同様、サンプルデータsampledata.logを用意します。 data [alpha] data [beta] data [gamma] data [delta] deta [epsilon] 切り出す dでカラムを切り出す記号を選び、-f NUMで何番目を抽出するか決めます $ cut -d '[' -f2 sampledata.log | cut -…
YAMLデータをBashスクリプトのみでパースする - Bye Bye Mooreなどで扱ったtrコマンドについて理解が深まったのでメモ。仮に、sampledata.logとして以下のようなテキストデータがあったとします。 $ cat sampledata.log data [alpha] data [beta] data [gamm…
導入済みなgemの名前だけ欲しい場合ってありますよね。 awkやrubyのワンライナーで片付けるのも手ですが、 gem listのオプションを使えば余計な手間はかかりません。 $ gem list --no-versionsとすると *** LOCAL GEMS *** actionmailer actionpack actionvi…
既存のrailsプロジェクトにgroongaを追加する方法です。 今回はprofessorsというモデルのnameカラムに対して全文検索をかけるシステムを想定しています。 gem 'rroonga' と追記し $ bundle installして導入します。 コンパイルが入るので若干時間が掛かりま…
正規表現のパターン一致を引っ張り出す時、どうしてますか? 私は$1を使う軟弱ものです。 /(as).*(you).*(like)/.match('as you like') #=> #<MatchData "as you like" 1:"as" 2:"you" 3:"like"> > $1 #=> "as" > $2 #=> "you" > $3 #=> "like" > $4 #=> nil 毎度お馴染みコーディング規則からすると、 上のよ</matchdata>…