WARNING: terminal is not fully functional
Mac OS X Lionを導入。いろいろ設定作業をしているとなぜかターミナルでlessやmanを使おうとすると
WARNING: terminal is not fully functional
という警告が出るように。
いろいろ調べているとどうやらApp StoreからXcodeをインストールした際にターミナルのプロファイルが削除されてしまうせいだとか。ちなみに以前のMacとは異なり, Lionはデフォルトでは環境変数$TERMがxterm-256colorに設定されている。少なくともLeopardではxterm-colorが使用されていた。このプロファイルを確認するには
$ infocmp
とする。Lion上では少なくともXcodeインストール後にこのコマンドを実行した際にエラーが出るため、プロファイルが欠けているということが分かる。
参考: marcoschuh.de » ssh and Lion’s xterm-256color terminfo
xterm系のプロファイルはMacでは /usr/share/terminfo/78/ 以下に格納されている。そのディレクトリの中身をLeopardと比較してみると確かになんだか少ない…。ともかくxterm-256colorをコピーすれば良さそう。LeopardのMacの同じ場所からコピーしてもいいけれど、ファイルのやり取りがめんどくさいので手近なCentOSマシンからscpでコピーすることに。
$ sudo scp user@centos-host:/usr/share/terminfo/x/xterm-256color /usr/share/terminfo/78/
(user, centos-hostは適宜置き換えてください)
これでようやく解決。英語フォーラムではOS Xパブリックベータの頃からアップグレードの度に悩まされて来たというポストも見られたのでご参考までに。
The next generation of MacBooks
MacBook Air 11inch (64GB)だからスペックはこんな感じ。
- Core 2 Duo 1.4(1.6?)GHz
- 2GB 1,066MHz DDR3 SDRAM
- NVIDIA GeForce 320M, 256MB DDR3 SDRAMをメインメモリと共有
- 64GB SSD
- 11.6inch LED-backlight display (1,366 x 768)
- IEEE 802.11n対応
- バッテリー持続時間約5時間
- 1.06kg
持ち運び用に欲しい!!
Perlで定数定義とファイルの行数カウント
Perlで多次元配列を作るときなどに予め入力ファイルの行数を知りたい、その行数を定数として保持しておきたいときがある。そのようなときは以下のようにしている。
#/usr/bin/perl use Readonly; my $filename = 'foo'; Readonly my $LEN => int(`wc $filename | cut -d' ' -f2`);
定数定義にはuse constantを使ってもいいがダブルクォーテーション内で変数展開できないなどのデメリットもあるため、Readonlyモジュールの方が便利なときもある。ただしReadonlyは最初からインストールされているわけではないので
# cpan cpan> install CPAN cpan> install Readonly
としておく必要がある。
Bashで複数のシンボリックリンクをまとめて張る方法
Bashを使っていてあるディレクトリにある大量のファイルへのシンボリックリンクをまとめて張りたいと思ったが、若干手こずったのでメモ。
カレントディレクトリのファイル(ここでは./*.txt)を対象とするとします。
単に
ln -s *.txt /path/to/destination
とするとワイルドカードが展開されないようで*が入ったままのファイル名でシンボリックリンクが張られ、そんなファイル知らないと怒られる。
そこで考えるのがシェルスクリプト。forループで*.txtというリストに対してlnを使えばいいんだろ、と安易に考え
for i in *.txt do ln -s $i /path/to/destination done
と書いて実行するも、絶対パスが渡されてないようで、これもリンク切れのシンボリックリンクが出来るだけ。で、やり直したのが以下の通り。
for i in *.txt do ln -s $(pwd)/$i /path/to/destination done
これは()内のコマンドが展開されるというBashの機能を使ったもの。これでカレントディレクトリ(pwdの出力)とファイル名をつないだ絶対パスが取得され、ようやく目的を達成することができた。
モデル名とテーブル名
Ruby on Railsでは基本的にはモデル名とテーブル名が対応づけられる。
しかし既存のテーブルを利用する、テーブル名に日本語が入っているなどの理由で任意のテーブル名を利用したいときはset_table_nameを呼び出す。
例えばFooというモデルをテーブルbarに対応させたいときはfoo.rbで以下のように書く。
class foo < ActiveRecord::Base set_table_name :bar ... end