年別アーカイブ: 2012年
cronでRVMのRubyを使う
RVMで複数のRuby環境がある場合に、Railsアプリケーションのためのcronをどうするか? Rubyのパスはフルパス指定すればいいが、gemがRVMのgemを見に行かないのが問題。RVM環境でcronを実行する必要がある。
RVM: Ruby Version Manager - Using Cron with RVM
cron用のシェルスクリプト内で使用するRVM環境をロードするには以下のようにする。
まず、環境ファイルのパスを確認
$ rvm env --path -- ruby-version[@gemset-name]
実行例
$ rvm env --path -- 1.8.7-p371 /Users/pistolfly/.rvm/environments/ruby-1.8.7-p371
cron用のシェルスクリプトで環境ファイルを読み込む
例
source /Users/pistolfly/.rvm/environments/ruby-1.8.7-p371 /home/pistolfly/app_dir ruby script/runner -e production "ActiveRecord::SessionStore::Session.delete_all(['sessions.updated_at < ?', 6.hours.ago])"
iTerm2でoptionキーをmetaキーにする
iTerm2でEmacsを使う時、optionキーをmetaキーとして使用したい。
Preference > Profile > Keys の下の方にある、
Left option key acts as:
Right option key acts as:
で、+Esc を選択すると、optionキーをmetaキーとして使用できる。
ちなみに、Mac OS Xの標準のターミナルの場合は、環境設定 > プロファイル で選択したプロファイルの、「キーボード」タブで、「メタキーとして Option キーを使用」にチェックを入れればよい。
MacPortsでbash-completionを使う
MovableType Perlのパスを一括変換
find -exec で sedで置き換えをすればいいのだが、sedの実装によって -i オプションの動作が異なるのでちょっとはまった。
Linux(GNU sed)の場合
バックアップを作成しない場合
$ find . -name "*.cgi" -exec sed -i 's/\/usr\/bin\/perl/\/usr\/local\/bin\/perl/' {} \;
バックアップを作成する場合は、-iに拡張子を指定。
$ find . -name "*.cgi" -exec sed -i.bak 's/\/usr\/bin\/perl/\/usr\/local\/bin\/perl/' {} \;
Mac OS X(BSD sed)の場合
Mac OS X のsedは、-i オプションに引数(バックアップファイルの拡張子)の指定が必須なので、-iに何も指定しないと、
sed: 1: "./mt-add-notify.cgi": invalid command code . sed: 1: "./mt-atom.cgi": invalid command code . sed: 1: "./mt-check.cgi": invalid command code . ...
というエラーになってしまう。
なので、バックアップを作成しない場合は、-i ''を指定する。
$ find . -name "*.cgi" -exec sed -i '' 's/\/usr\/bin\/perl/\/opt\/local\/bin\/perl/' {} \;
バックアップを作成する場合は、
$ find . -name "*.cgi" -exec sed -i '.bak' 's/\/usr\/bin\/perl/\/opt\/local\/bin\/perl/' {} \;
MovableType Perlのパスを一括変換:Jays Room.
Sed: ‘sed: 1: invalid command code R’ on Mac OS X at Mark Needham.
WebサーバにSSLの証明書が正しくインストールされているか確認する
WebサーバにSSLの証明書が正しくインストールされているか確認する - @IT.
各証明書ベンダが提供しているSSLチェック・ツール
システムのログオフやシャットダウンを検出して処理を行う
log4netでログ出力先パス、ファイル名の取得、設定
log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories(); foreach (log4net.Repository.ILoggerRepository repository in repositories) { foreach (log4net.Appender.IAppender appender in repository.GetAppenders()) { log4net.Appender.FileAppender fileAppender = appender as log4net.Appender.FileAppender; if (fileAppender != null) { appender.File = "log.log"; //出力先ファイルを設定 appender.ActivateOptions(); } } }
※ 上記のようにコードでFileを設定する場合も、依然としてXMLの設定にはFileの指定は必要だった。
log4netで設定したログ出力先パス、ファイル名の取得: DOBON.NETプログラミング掲示板過去ログ
log4netでのログ出力について - Insider.NET - @IT)
C言語のマクロの #、 ##
# は、引数を文字列に変換する。
## は二つの識別子を連結させる。
C 言語 マクロ講座 # ## 編: uyota 匠の一手