Karabiner というMacのキーリマップアプリが便利だった件
メモしたいので久々の日記更新むんむん
あんまり使いこなしてないけど個人的に開発するときはVimをよく使っています。慣れるとこのhjklの動きが楽なので普通のCotEditorなどでもVimの動作をしたくてどうにかならぬものかと思いつつ長年放置していたのですが、偶然発見。
これね。すばらしいほんと。
まだ慣れてないけど、はてなブログを更新するときもVim操作で書けるなんて素晴らしすぎるっ。
これで僕が何を設定しているかメモっておきます。
ちなみにMacBookAirはUS配列を使ってます。
Change Key
検索窓に該当の文字を入れればソートしてくれるはず。ということで画像はないよっ。
Ubiquitous Vim Bindings
Esc toggles Normal Mode
Holding Esc sends raw Esc
これをチェックしておくとVimを使っているかのごとくEscを押すとVimモードになります。Shift+$で行末にいったり、c->Shift+$で行末まで削除とかまで出来ちゃいます。
For Japanese
Command_L to Command_L
(+ When you type Command_L only, send KANA/EISUU(toggle))
これをチェックしておくと左コマンドを単体で押すだけで英数=>かな=>英数と変更することができます。なんて便利な!(まだ使い慣れてないけど
Custom Shortcuts
これは後で書くprofilesのショートカットを有効にしています
MenuBar
ここでprofiles的な設定ができます。
ショートカットは上にも書きましたが、fn + 1 とか fn + 2 とかです。
HHKpro2が欲しくて
そう。もともと happy hacking keyboard professional2 type-s のUS配列が欲しくて、カーソルキーないんだなー使いにくそうだなーとか思ってググったりしていたらこのソフトを偶然発見しました。
とりあえずこれで文字入力には困らなそうなので一歩前進。でもターミナルでカーソルキーとか使う場面って必ずある気がしているので結局ある程度 fn + 何か でカーソルキー動かすのを覚えないといけないんだなーと思った今日の夜。
あーねむい。
Mac に hubot をいれてみた
macへのセットアップは以下で
hipchatとの連携は以下で
Hubotの導入とHipChat Adapter設定方法 - Devlog
うまく起動できると @hubot が green になる
export HUBOT_HIPCHAT_TOKEN="GROUP ADMIN の API Token"
export HUBOT_HIPCHAT_JID="HUBOT の JID"
export HUBOT_HIPCHAT_PASSWORD="HUBOT のパスワード"
export HUBOT_HIPCHAT_ROOMS="hubot roomとか適当に"
export HUBOT_LOG_LEVEL="debug"
@hubot pug me
とか
@hubot animate me kitty
はい
xcode でエラー nib must contain exactly one top level object which must be a UITableViewCell instance
invalid nib registered for identifier (CELLNAME) - nib must contain exactly one top level object which must be a UITableViewCell instance
何をやろうとしたかというと .xib ファイルに複数の UITableViewCell を作ってみました
きっかけは .xib ファイル1枚で複数のViewを定義できたらファイル数減るし便利そうだなーと思ったのため
stackoverflow の回答では single table view で作れば云々書いてあるけど、なんかそれはちょっと違うのでとりあえず複数ファイルに分けることにしました
opsworks で deploy できなくなったYo
えーやだopsworksでエラーやめてー用意してもらったインフラだしわからなそーwえーなにこれ詰んだかもーYo!
と思ったけど、該当のエラーを一生懸命ググったら、
================================================================================ Error executing action `create_if_missing` on resource 'remote_file[/tmp/opsworks-ruby19-1.9.3-p547-1.x86_64.rpm]' ================================================================================ Net::HTTPServerException ------------------------ 403 "Forbidden"
aws forum に(おそらく)まったく同じ状況の人発見
https://forums.aws.amazon.com/thread.jspa?threadID=154913&tstart=175
custom json に以下を追加したらちゃんとデプロイ出来るようになった
{ "ruby": { "patch": "p545" } }
aws関連のエラーはforumで検索するとよさそう
この対応を使う人はforumの内容をよく読んでから使ってください
検索フォームを作るにあたってransackを使ったら非常に便利でしたというお話
いやー最近まんぼうよく死んでますね。
ということで、お仕事で検索機能を作りたくて twitter につぶやいたら @patorash さんに ransack という gem を教えてもらって素直に使ってみました。
@kamip1230 ransackを使うと色々捗りますよ。
— 尾古 豊明(パトラッシュ) (@patorash) 2014, 6月 10
使い方は以下でわかるのでわからなくなったら見るといいです。説明とか出来ないので見るといいですうん。
Rails - Ransackのススメ - Qiita
Basic Searching · activerecord-hackery/ransack Wiki · GitHub
ちょっとタグをカスタマイズしたいときは radio_button_tag だったら以下のように ransack が動作する key(以下の場合は params['q']['hoge_eq']) で post すればちゃんと動きます。controller でごにょごにょするのはめんどくさいのでこんな感じがいいかなーと。
radio_button_tag_c params, :hoge_eq, '1', true
def radio_button_tag_c(params, name, value, default_checked=false) check_flag = params.key?('q') && params['q'].key?(name) && params['q'][name] == value ? true : false check_flag = true if default_checked && params.key?('q') == false radio_button_tag "q[#{name}]", value, check_flag end
そもそも radio_button_tag どうやって書くねんって調べまくったメモでした。
ソースが長いのでもっと短くならないですかねー (((((((((((っ・ω・)っ ブーン
いやーそれにしても便利だなー。ほんと捗る。オレオレ糞コードかくところでした。ぱとさんありがとうございました!
vim を使う時 :e で開く癖があった僕が unite.vim を頑張って使うためにやった1つのこと
nnoremap <silent> :e :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
とりあえず実行したあと RAILS_ROOT からはじまるようにしたいけど出来るのかな
毎回controllerとか ctrl + w で消すのめんどくさい
<追記1>
help調べたらあった
:help unite-source-file nnoremap <silent> :e :<C-u>UniteWithCurrentDir -buffer-name=files file<CR>
縛りプレイ楽しい
<追記2>
まずい :e# 使いたいのに使えない
<追記3>
nnoremap <silent> :E :e#<CR>
とりあえずこんな感じにしておく
でもunite.vimやっぱりいいね!
ruby で module を override したくて探したメモ
そもそも、使おうとした gem が module になってて、その中のクラスメソッドを override したくてぐぐったメモ。
やりたいことは簡単。
module Hoge のクラスメソッド (method1) を override し、クラスメソッドmethod2 を呼び出した時に override 後の内容が表示されればOK.
module Hoge def self.method1 puts 'Hoge.method1' end def self.method2 self.method1 end end Hoge.method2 #=> Hoge.method1
以下2つ、どちらも再定義する形だけどこれでいいのかなー?
def Hoge.method1 puts 'Override! Hoge.method1' end Hoge.method2 #=> Override! Hoge.method1
module Hoge def self.method1 puts 'Override! Hoge.method1' end end Hoge.method2 #=> Override! Hoge.method1
でもこれだと当ファイルを読み込んだら、どこで Hoge.method1 を呼び出しても override したクラスメソッドが実行されるようだから あとあと地雷にならないか心配だ。もっとスマートに書けないのか。
railsやったりobjective-cやったりちょっとよくわかんない今日この頃。
あんまり関係ないけど以下の mix-in の説明すごく分かりやすい。
Rubyのmoduleをmix-inする際のincludeとextendの違いをシンプルな例で理解する - memo.yomukaku.net