朝これを見た。
iTermでsshするときに、接続先に応じて背景色を変える方法
http://qiita.com/k_kinukawa/items/3e5665325a4954e33019
いいなと思った。
でも普段僕はMacの標準のTerminalを使っている。
Terminalで同じこと出きないかなとぐぐったらすぐあった。
https://github.com/dlobraico/dotfiles/blob/master/bin/ssh-host-color
でも僕は透過率が75%にしていて透過率を設定したいのだけど。
osascriptで透過率の設定がよくわからない。
というか普段ターミナルの色とかはProの設定を使っているのでProの使いたいなーって思ってググってprofileを切り替えられるようにした。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
#
# ssh into a machine and automatically set the background
# color of Mac OS X Terminal depending on the hostname.
#
# Installation:
# 1. Save this script to /some/bin/ssh-host-color
# 2. chmod 755 /some/bin/ssh-host-color
# 3. alias ssh=/some/bin/ssh-host-color
# 4. Configure your host colors below.
set_term_bgcolor () {
local R = $1
local G = $2
local B = $3
/usr/ bin / osascript << EOF
tell application "Terminal"
tell window 0
set the background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255)), 32767}
end tell
end tell
EOF
}
set_term_profile () {
local profile = $1
/usr/ bin / osascript - e "tell application " Terminal " to set current settings of first window to settings set " $profile ""
}
# Host-specific background colors.
if [[ "$@" =~ production1 . com ]] ; then
set_term_profile "HomeBrew"
elif [[ "$@" =~ production2 . com ]] ; then
set_term_bgcolor 0 40 0
fi
ssh $@
# Default background color.
set_term_profile "Pro"
set term profileでプロファイルの名前を渡せばそれに切り替わる。
set bg colorも残してる。
めっちゃ簡単に出来るんですね。
全然知らなかった。
http://stackoverflow.com/questions/10418193/how-to-add-methods-to-a-has-many-collection
1
2
3
4
5
6
7
8
9
10
11
class Customer < ActiveRecord :: Base
belongs_to :store
end
class Store < ActiveRecord :: Base
has_many :customers do
def names
self . map ( & :name )
end
end
end
1
2
rails console
Store . last . customers . names # => customersの名前の配列が取れる!
javascript力が弱くて、クラス使って何か書きたくて、しかも
coffeescriptで書きたくて、
CTRL + Z
というブラウザの標準の機能があるのに、jsで戻る、やり直しを行うことができるプラグインを作りました。
正直使い道がよくわかりません。どのあたりをターゲットにしているのかもちょっとわかりません。
こんな感じでエレメントを指定してformを対象にして
1
form = new FormObserver ( 'form' );
1
2
3
4
// 一つ前の操作に戻す
form . undo ();
// やり直し
form . redo ();
って感じで、操作できます。
IE10とchromeでは動きました。
よくテストはしてません。
バグがあったらすいませんすいません。
使って見たい方はこちらからどうぞ
https://github.com/YoshitsuguFujii/form-undo.js
clearなんてあったんや。
http://ref.xaio.jp/ruby/classes/array/clear
今まで
1
2
array = [ "hoge" , "fuga" ]
array = []
ってやってたのが、
1
2
array = [ "hoge" , "fuga" ]
array . clear # => []
って書ける。より直感的ですね。
ちなみに文字列もHashもあるみたいです。
1
2
3
4
5
hash = { hoge : "fuga" }
hash . clear # {}
str = "fugafufa"
str . clar # => ""
へー。
1行で書けてすっきり。
1
values = ( option . value for option in document . getElementsByName ( "multi-select" ) when option . selected )
デバッグ文を仕込む場合に、私の環境ではインサートモードでCTRL+bするとデバッグ文を仕込むようにしています。
その際に言語毎(ファイルタイプ毎)に異なるデバッグ文を打ち込めるようにしたら便利すぎて辛いです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function! InsertDebugger ()
if & filetype == 'coffee' || & filetype == 'javascript'
let debugger = "debugger"
elseif & filetype == 'ruby'
let debugger = "binding.pry"
elseif & filetype == 'eruby'
let debugger = "<% binding.pry %>"
elseif & filetype == 'haml'
let debugger = "- binding.pry"
else
let debugger = "binding.pry"
endif
return debugger
endfunction
inoremap < expr > < C - b > InsertDebugger ()
編集中のファイルが
coffeescrptかjabascriptの場合はdebuggerを(chrome使ってるので)
rubyの場合はbinding.pryを
erbの場合は <% binding.pry % >を
hamlの場合は- binding.pryを打ち込みます。
ちなみに今編集中のファイルのファイル・タイプを知りたいばあいは該当のファイルを開いて
ってうつと表示されます
vimを使っていて。
ディレクトリはUniteBookmarkAdd使ってブックマークしてましたが。
集中的にある機能のみを重点的に編集する時に、ファイルのブックマークしたくて調べたらあった。
しかもデフォルトの機能っぽい。
Hack #16: 任意のファイルをブックマークする
http://vim-users.jp/2009/05/hack16/
例えば店舗とかっていう機能開発していて。
StoreControllerのコントロールファイルではmC
StoreのformのビューファイルではmF
StoreのindexファイルではmS
StoreのjsファイルではmJ
しとくと編集していて、すぐにコントローラ開きたい時は
`C
って押せばすぐ開く。
簡単に設定できて、即応性があるのでいい感じですね。
しかもブックマークとかにしちゃうと、設定後その機能の開発が終わったらブックマークを消さなきゃいけないと思いますが。
今なにが設定されているとか気にせずに、常に上書きで使う感じもいいです。
他にも色々便利機能ってあるのかな。
vimの本ちゃんと読まないとなー
contentモデルの下にcontent detailモデルがあって、
accepts nested attributes forしていて、fields _forを使う場合。
1
f . fields_for :content_details do | c |
って書くと、contentに紐付く全部のcontent _detailsがformとして表示されちゃう。
第二引数にインスタンスを渡せばいいみたい。
1
f . fields_for :content_details , @content . content_details . where ( state = 1 ) do | c |
ちなみに第二引数はnilがデフォルト引数なので
1
2
f . fields_for :content_details
f . fields_for :content_details , nil
は同じ意味になるので、インスタンス変数は値を入れなければnilなので
1
fields_for :content_details , @details
ってやって、editの時だけ@detailsに値を入れるとうまく変更したいレコードのみ抽出できて、処理を切り分けられる気がします。
ある月に指定日が含まれるんか判定したい
月のRangeオブジェクトは
Time #all _monthで取れる(要ActiveSupport)
含まれるってことはbetween?かな
1
2
3
Time . now . between? ( Time . now . all_month )
# ArgumentError: wrong number of arguments (1 for 2)
# from (pry):8:in `between?'
ありゃ。
あ、include?だったかな?
1
2
Time . now . all_month . include? ( Time . now )
# TypeError: can't iterate from Time
むむ。
じゃ、じゃあcovers
1
2
3
4
Time . now . all_month . cover? ( Time . now )
# -> true
Time . now . all_month . cover? ( Time . now . prev_month )
# ->false
できたヽ(`▽´)/
Mac Book Airで仕事しています。
普段はTrack pad使っているんだけど。
Excelとか使う時はやっぱりマウス使いたいってことで。
その辺に転がっていたUSBマウスを接続して作業している。
その際に他のワークスペース(デスクトップ?)に切り替えたい時はわざわざマウスから手を話して、トラックパッドの方で3本指スワイプしていた。
これが超絶面倒なので、マウスのセンタークリックでできないかとやってみたら出きた。
システム環境設定 > Mission Control
ただchrome使っててタブ消したい時はセンタークリックで消してたけど。
それが効かなくなるのが難点か・・・
欲張り過ぎかなぁ。
※Magic Mouseはお金ないので買えない人なのです