• 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

いくつか前のOSアップデートのころから

   1  % ping localhost
   2  ping: cannot resolve localhost: Unknown host

という状態になっていたて原因が分からず放置していましたが、 /etc/hosts の中に IPv6用の設定があるのが原因のようです。

   1  ::1             localhost

これをコメントアウトすると正常な動作に戻りました。

posted by Png genki on Sun 31 Jul 2011 at 18:16

今後のためのメモ。
CopyOnSelectやっぱり便利ですね

[メモ: 2012.4.6] Terminalを更新した際に、CopyOnSelectをupdateしようとして手間取ってしまったので、ステップ5と(注)を追加しました。

CopyOnSelectについて

Terminal.appで選択時にコピーするSIMBLプラグインを作りました
http://blog.s21g.com/articles/1075

TerminalのBundleVersionをチェック

About Terminalで:

Version 2.2 (297)

CopyOnSelectのビルド

  1. gitをチェックアウト
  2. Info.plist内のMaxBundleVersionを297にして保存
  3. ビルド
  4. TerminalCopyOnSelect.bundleを~/Library/Application Support/SIMBL/Plugins/にコピー
  5. Terminalを再起動し、メニューのPreferencesの下に"Copy On Select"が表示されれば完了

(注) ビルド時、Analyzeを選ぶとRelease版の.bundleも生成されます。ステップ4時には、必ずRelease版の.bundleをコピーすること。

詳細は下記を参照

Macのターミナルで選択するだけでCopyする
http://www.barasu.org/pc/mac/5598.html

posted by Png satoko on Fri 29 Jul 2011 at 14:48

LionにするにあたってCode Snippetsを移動する必要があるのかなと思ったのですが、Code Snippetsはちゃんと〜/以下に格納されているので意識する必要はなさそうです。

ただ、新しいマシンに以降するとき等は作業をする必要があります。

Xcode 4のCode Snippetsを別のマシンに移動する stackoverflow

How Can One Transfer Xcode 4 Code Snippets from One Machine to Another
http://stackoverflow.com/questions/5261076/how-can-one-transfer-xcode-4-code-snippets-from-one-machine-to-another

上で見つけたんですが、こんな感じにsnippetsが格納されています:

   1  % pwd                                          
   2  ~/Library/Developer/Xcode/UserData/CodeSnippets
   3  % ls -1
   4  104B0BF3-0D45-4663-B56A-8DA5DB05A80B.codesnippet
   5  1F92BFD6-8936-4DD8-9AC6-98757661A9FE.codesnippet
   6  206B6C3E-457A-4BEE-A679-C31DB7126C66.codesnippet
   7  20D4FA3F-B205-4EBD-BCCA-568046C1D8F8.codesnippet

自作の.codesnippetファイルを追加してみる

1つのファイルをコピーして、IDECodeSnippetIdentifierを他と被らないように適当に編集後、Xcodeを立ち上げて見てみましたがちゃんと追加されていました。ファイル名は人間に分かりやすい名前にしていたのですが、無事認識されていました。

   1  add_action_sheet.codesnippet

で、~/Library/Developer/Xcode/UserData/CodeSnippetsをgitリポジトリに格納してみました。 運用的には下記のように:

  1. Code Snippets用のgitリポジトリを作成
  2. 新しいXcodeをインストールする前にgit push
  3. Xcodeをインストール
  4. Code Snippetsディレクトリにgit clone
  5. XcodeのCode Snippetsで移行されているかを確認

下記の記事も参照ください:

[git] 共有リポジトリを作る:git init --bare --shared=true
http://blog.s21g.com/articles/1312

[追記 2011.07.22]
@Seasons さんに教えて頂きました!Dropboxもいいですね。
ついでにDropboxでMac内の任意のフォルダを同期できるようにできるアプリ「MacDropAny」掲載されていました。便利♪:

Xcode 4のスニペットをDropboxで同期する - Seasons.NET
http://d.hatena.ne.jp/Seasons/20110328/1301300189

posted by Png satoko on Fri 22 Jul 2011 at 13:54

Rubyのリファレンスを参照するときは、いつもGoogleで検索していたのですが、なぜか検索結果からのリンクがリンク切れに。 昔のリファレンスは

  • http://www.ruby-lang.org/ja/man/html/*

にあったのですが、以下のように新しいURLに移動したようです。

旧版は以下に移動した模様。

検索インデックスが新しくなるようにGoogle botに頑張って欲しいです。

See Also

posted by Png genki on Thu 21 Jul 2011 at 13:29

bundlerを使ってnative extensionを含むGemをインストールする場合に、 オプションの指定が必要な場合は ~/.bundle/config などを使いますが、 例えば Mac 環境で do_postgres をbundle installするには、以下のように 設定します。

   1  BUNDLE_BUILD__DO_POSTGRES:
   2    --with-opt-dir=/Library/PostgreSQL/9.0
   3    --with-opt-include=/Library/PostgreSQL/9.0/include/postgresql/server

posted by Png genki on Wed 20 Jul 2011 at 19:09

古いバージョン(1.2.6)ではこの問題は起こらなかったのですが、 ubuntu-11.04の1.4.5では、しばらく使っていると/tmp/tmp.XXXXX というディレクトリが大量に残るという問題があるようです。 調べてみたのですが、あまり似たような報告がなかったので、 特定の条件が揃った場合だけ発生する問題なのかもしれません。

とりあえず、以下のような力技で対処。

cleanup_munin_tmp

   1  #!/usr/bin/env ruby
   2  require "etc"
   3  
   4  Dir['/tmp/tmp.*'].each do |path|
   5    uid = Etc.getpwuid(File.stat(path).uid).name
   6    gid = Etc.getgrgid(File.stat(path).gid).name
   7    next if uid != 'nobody'
   8    next if gid != 'munin'
   9    system "rmdir --ignore-fail-on-non-empty #{path}"
  10  end

これをcronで@hourlyに実行してます。

追記

シェルスクリプト版も用意してみました。

   1  #!/bin/sh
   2  
   3  for d in /tmp/tmp.*
   4  do
   5    if [ `stat -c %U $d` = "nobody" ]  
   6    then
   7      if [ `stat -c %G $d` = "munin" ]
   8      then
   9        rmdir --ignore-fail-on-non-empty $d
  10      fi
  11    fi
  12  done

posted by Png genki on Thu 7 Jul 2011 at 21:05

ActiveRecordを読み込んだ状態でirbを使っているときに、TAB補完をしようとすると落ちることが結構な頻度でありました。 原因を調べてみると、補完候補のArrayをsort使用としているところで、Symbolに対して <=> 演算子を呼びだそうとしてエラーが発生しているようです。 補完候補は Object#instance_methods から得ているようなので、なぜSymbolが要素として混入するのかが謎だったのですが、どうやら Arel::Attribute::Predications クラスが犯人のようです。

   1  PREDICATES = [
   2    :eq, :eq_any, :eq_all, :not_eq, :not_eq_any, :not_eq_all, :lt, :lt_any,
   3    :lt_all, :lteq, :lteq_any, :lteq_all, :gt, :gt_any, :gt_all, :gteq,
   4    :gteq_any, :gteq_all, :matches, :matches_any, :matches_all, :not_matches,
   5    :not_matches_any, :not_matches_all, :in, :in_any, :in_all, :not_in,
   6    :not_in_any, :not_in_all
   7  ]
   8  
   9  Predications = Class.new do
  10    def self.instance_methods *args
  11      warn "this module is deprecated, please use the PREDICATES constant"
  12      PREDICATES
  13    end
  14  end

このコードを書いた人は instance_methodsはStringの配列を返すという事を失念していたようですね。 irb/completeはObjectSpaceから補完候補を拾ってくるので、上述のコードがあるせいでSymbolが補完候補配列に混入してしまいます。

回避策としては、irb起動時に以下のようなコードを読み込むなどがあります。

   1  module Arel
   2    class Attribute
   3      class Predications
   4        def self.instance_methods
   5          require 'arel/algebra/attributes/attribute'
   6          Arel::Attribute::PREDICATES.map(&:to_s)
   7        end
   8      end
   9    end
  10  end

追記

この問題は 1.8.x系のRubyでのみ発生するようです。 thanks @a_matsuda!

posted by Png genki on Thu 7 Jul 2011 at 12:47

isoファイルを直接mountするには、以下のようなコマンドを実行すれば良いようです。

   1  mkdir -p /media/cdrom
   2  mount -t iso9660 -o loop /path/to/file.iso /media/cdrom

posted by Png genki on Thu 7 Jul 2011 at 06:22
5th Tue

Slim雑感

Sinatra 1.2からサポートされたSlimについての調査メモ。

  • http://slim-lang.com
  • 基本的にHamlの亜種的な立ち位置でもっとシンプル。
  • 拡張子は.slim
  • a href=foo のようにquoteされてない場合は右辺値がrubyコードとして評価されるのがcool。
  • = はデフォルトでHTML escapeされる。escapeしない場合は ==
    • inline形式では #{{hoge}} でエスケープしない。
  • #my_id.my_class はhamlと一緒。tag省略はdivも一緒。
  • 行末 \ や行頭|で複数行など、複数行のサポートが充実
  • filterは coffee: のように:を後置。hamlとは逆
posted by Png genki on Tue 5 Jul 2011 at 00:13