2013/01/24

macにtreeコマンドをインストール

ディレクトリ階層を確認するために便利な tree コマンドを Mac で使用したい。
というわけで Homebrew でさくっとインストール。

% brew install tree
==> Downloading http://mama.indstate.edu/users/ice/tree/src/tree-1.6.0.tgz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/tree/1.6.0 MANDIR=/usr/local/Cellar/tree/1.6.0/share/man/man1 CC=cc CFLAGS=-fomit-frame-pointer LDFLAGS= OBJS=tree.o unix.o html.o xml.o hash.o color.o strverscmp.o install
/usr/local/Cellar/tree/1.6.0: 7 files, 120K, built in 4 seconds

簡単です。

使用も簡単です。

% tree
.
├── dir1
│   └── file1-1.txt
├── dir2
│   ├── dir3
│   │   └── file3-1.txt
│   ├── file2-1.txt
│   └── file2-2.txt
└── file1.txt

3 directories, 5 files

ディレクトリ指定。

% tree dir2
dir2
├── dir3
│   └── file3-1.txt
├── file2-1.txt
└── file2-2.txt

1 directory, 3 files

ディレクトリ表示のみ。

% tree -d
.
├── dir1
└── dir2
     └── dir3

3 directories

全ファイル表示。

% tree -a
.
├── .dotdir
│   └── .dotfile2
├── .dotfile
├── dir1
│   └── file1-1.txt
├── dir2
│   ├── dir3
│   │   └── file3-1.txt
│   ├── file2-1.txt
│   └── file2-2.txt
└── file1.txt

4 directories, 7 files

2012/12/07

git config --global push.default simple したら neobundle.vim でエラーになった

git push したらwarningがでた

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

そういえば git の push.default を設定していなかったので、simpleに設定しておいた。

git config --global push.default simple

vimを起動したらwarningがでた

This is old version of neocomplcache-snippets-complete.
This is no longer maintained.
You should use neosnippet plugin instead of it.
https://github.com/Shougo/neosnippet

neocomplcache-snippets-complete は古いから neosnippet 使えよということらしい。
.vimrc から

NeoBundle 'Shougo/neocomplcache-snippet-complete'

を削除して

NeoBundle 'Shougo/neosnippet'

に変更して:NeoBundleInstallを実行した。

エラーになった

/Users/pinzolo/.vim/bundle/neosnippet
error: Malformed value for push.default: simple
error: Must be one of nothing, matching, tracking or current.
fatal: bad config file line 22 in /Users/pinzolo/.gitconfig
Cloning into /Users/pinzolo/.vim/bundle/neosnippet...

simple は push.default の値として不正だからnothing, matching, tracking, currentのどれかにしろと。
普通にgit pullするのは問題ないのになぁ。

simple から currentへ

git config --global push.default current

にして、:NeoBundleInstallしたら成功した。
挙動としては simple の方が好きなんだけど、とりあえず current にしておくか。
neobundle側での原因と対策も調べないとな。

2012/12/06

mac(Mountain Lion)にEclipseをインストールした

これまで事情があって Parallels 上の eclipse で開発していたけど、mac にも eclipse を導入しようと思い立ったので作業メモ。

Eclipseのインストール

  1. Eclipse DownloadからEclipse IDE for Java EE Developers」の「Mac OS X 64bit」をダウンロード
  2. ダウンロードしたファイルを解凍する
  3. 解答してできたeclipseフォルダをアプリケーションフォルダに移動

日本語化

  1. Pleiadesから「64bitのStandard Edition」をダウンロード(JavaだけでいいならJavaを、PythonやPHPの環境が欲しければUltimateを)
  2. ダウンロードしたファイルを解凍する
  3. 解凍したpleiades/eclipse/dropins/MergeDoc/Applications/eclipse/dropins内にコピーする
  4. 下記のコマンドを実行して、eclipse.iniに設定を追加する。

     echo "-javaagent:/Applications/eclipse/dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar" >> /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini
    
  5. /Application/eclipse/eclipse -cleanを実行してeclipse起動

これで、macで日本語化したeclipseが使えるようになった。

「'fenc' を空にしてください」エラーが出たら

vimを使っていてこんなエラーが出た。

E513: 書き込みエラー, 変換失敗 (上書きするには 'fenc' を空にしてください)

実際:set fenc=して保存したら保存できたけど、sjis だったのが utf8 になって文字化けしてしまった。
原因は×の代わりに☓(機種依存文字)を使っていたからだった。
このエラーが出たときは、機種依存文字や、現在の文字コードにない文字を使用していないかどうか確認しよう。

2012/11/17

Office2010のスクリーンショット挿入がとっても便利

最近 Office2010 を使い始めたんだけど、スクリーンショットを直接挿入できるようになってた。

[挿入]→[スクリーンショット]でウィンドウが列挙されて(自分自身のウィンドウは表示されない)

ウィンドウを選択すれば

スクリーンショットが挿入される。

領域を指定しての貼り付けも簡単。

[挿入]→[スクリーンショット]→[画面の領域(C)]をクリック。

画面がホワイトアウトして、領域が選択できる。

選択完了と同時に貼り付けられる。
範囲指定して確認とかは出来ないので注意。

操作マニュアル作る時など、いろんな場面で役立ちそうですね。

2012/11/14

Google Calendar で新しく作ったカレンダーがJorteに読み込まれない

PC から Google Calendar に新規カレンダーを作成したが、何をどうしても Jorte が読み込んでくれない。
Jorte の利用するカレンダーの候補に現れない。
Android設定 -> アカウントと同期 -> google のアカウント -> カレンダーの同期 を手動で同期させても、いっこうに候補に現れない。

あれこれ調べて試したところ、デフォルトのカレンダーアプリを凍結していたのがまずかったみたい。
凍結を解除して、デフォルトのカレンダーアプリで同期するカレンダーに設定すると、Jorte 側で利用するカレンダーの候補に現れた。
Jorte が Google Calendar に接続してデータ取得しているわけじゃないのね。
基本的にシステムが同期したデータを利用しているわけだ。なるほど

2012/11/07

ParallelsとWindows7とOfficeのインストール

Parallels のインストール

インストールメディアを突っ込んで、インストール.appをクリックすればインストールされる。

Windows7のインストール

Windows7のインストールメディアが入っている状態で、paralles を起動し「DVD/イメージファイルからWindowsをインストール」からインストールする

Officeのインストール

Officeのインストールメディアを入れてから仮想マシン上でSETUP.EXE を叩いてもインストール出来ない。「○○\setup.exe は有効な Win32 アプリケーションではありません」とエラーになる。
調べてみたらどうやら Finder でも認識されているからそうなるらしい。
それってどうあがいてもメディアからはインストール出来ないんじゃ??

というわけで、iso を作ることにした。
ディスクユーティリティを起動し、表示されたインストールメディアを選択し、[ファイル] -> [新規] -> [○○からのディスクイメージ]を実行すれば iso イメージが作成される。

Officeのインストールメディアをアンマウントし、Parallels のメニューから [デバイス] -> [CD/DVD] -> [イメージの接続]を実行し、さっき作成した iso を選択すればマウントでき、自動的にインストールが始まった。

Officeのインストール時に行った手法は、今後何度も使いそうなのでメモとして残しておこう。
惜しむらくは深夜に作業したため、スクリーンショットをまったく取ってなかったことだ

2012/10/15

define_method で可変長引数のメソッドを定義する

色々試してみたけど、こうすればいいみたい。
ポイントは7行目の *params と 9行目の *args かな。

2012/10/12

RSpec で undefined method `fixtures'

RSpec で fixtures が動かない

rspec でテストデータを用意して、fixtures メソッドを使用したら、そんなメソッドねーよ。と言われた。

/Users/pinzolo/projects/mastar/spec/mastar/name_value_pair_spec.rb:30:in `block (2 levels) in <top (required)>': undefined method `fixtures' for #<Class:0x007faa888623a8> (NoMethodError)
    from /Users/pinzolo/projects/mastar/vendor/bundle/ruby/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `module_eval'
    from /Users/pinzolo/projects/mastar/vendor/bundle/ruby/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `subclass'
...

TestFixtures を include してみる

spec_helper.rb に下記を追加してみる。

require 'rspec'
RSpec.configure do |config|
    config.include ActiveRecord::TestFixtures
end

実行してみる。

/Users/pinzolo/projects/mastar/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/fixtures.rb:728:in `block in <module:TestFixtures>': undefined method `setup' for #<Class:0x007fb3c20527d8> (NoMethodError)
    from /Users/pinzolo/projects/mastar/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.8/lib/active_support/concern.rb:119:in `class_eval'
    from /Users/pinzolo/projects/mastar/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.8/lib/active_support/concern.rb:119:in `append_features'
...

こんどは setup がないと。

調べてみると

https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/fixture_support.rbを見ると RSpec::Rails::FixtureSupport を include していて、その時に各種設定メソッドが追加されている。

結局

rspec-rails をインストールしないと fixtures は使えないのか。
できれば、関連 gem を増やしたくないので、他の手段を考えよう。
factory-girl がいいのかな。

2012/09/21

vimで保存するときにマジックコメントを埋め込む

最近ちまちまと.vimrcを再構築している @pinzolo です。

Ruby1.9+Railsで開発しているとちょくちょくやらかすのがのがエンコーディングの指定忘れ。 rails gで作られるファイルはマジックコメントがないので日本語入力して実行したらエラーになるわけですな。

んで世のエンジニアはそれをどう解決するかというのを調べてみた。

  1. ショートカットで先頭にマジックコメントを埋め込む
  2. magic-commentermagic-encodingのようなツールで一括付与

というのが結構多かった。 でも、1.は忘れることがあるし、2.はジェネレートするたびに行うのはめんどくさい。 じゃあどうするのが一番いいかと考えたら、保存時に追加されるのが一番だと思った。

エディタで保存を実行しないファイルは編集をしないのだからマジックコメントなくても問題無いわけだ。

class HogeHelper
end

こんなファイルはマジックコメントをいちいち付けなくていいや。というスタンスです。 というわけで、.vimrcに保存時にマジックコメントを追加する処理を書いてみた。

vimscriptなんて今までろくに書いたことがなかったからなかなか大変だった。以下、気にしたポイント。

  • 対象とするのは ruby, ERB, Haml の三種類。
  • ruby の場合は shebang の存在も考慮する。
  • すでにマジックコメントが存在する場合は付与しない。
  • マジックコメントは 1 行目。shebang があるときは 2 行目。
  • マジックコメントの形式は emacs 形式にしようか迷ったけど、自分の環境では vim しか使わないからまあいいや。

ソースコードは間違ってないと思うのだけど、いざ保存すると必ず E488 エラーがでる。
正直なんでかわからん。有識者の方々教えてください。
動作に影響はないからとりあえずこのままにしてる。エラーメッセージがうざかったらとりあえず :silent! つければいいや。

とまあ、微妙に不完全なシロモノですがよければお試しください。