django1.5にアップデート時のurl

自分の開発環境のubuntuを13.04にアップデートしたら、
pythonのvirtualenv環境が変になった。

virtualenv環境を新しくして、pipでdjangoをインストールしたところ
1.4から1.5に上がってしまい若干の修正が必要だった。

こんなエラーが表示される。

調べたところ、template内の、{% url foo.bar %}が問題らしい。

ここを

 

 

 

とクオートで囲んであげれば、現象回避できる。

自分の場合は、さほど数が多く無いので手動で行ったが、
多い場合は、スクリプトで対処が必要かと。

http://stackoverflow.com/questions/13590699/migrate-url-tags-to-django-1-5

テンプレートの、拡張子がhtmlならこんな感じでしょうか。(未検証)

(一応sed時に*.BKでバックアップも残して)

vimのNERDTreeで特定のファイルを表示しない方法

なんてことはない、.vimrcにNERDTreeIgnoreを指定するだけ。

pycファイルを表示しない場合は、

複数指定したい場合は、カンマで区切る

山中慎介選手のトランクスに秘められた名前

続編あり

 

2013年4月8日(月) 山中慎介 vs マルコム・ツニャカオ を国技館で観戦した。試合内容は、色々な記事で取り上げられている通りすばらしく大満足だった。また他の世界戦2試合も十分の内容で、ボクシングの醍醐味を堪能した一日だった。

国技館という会場も、2階席からでも角度があって非常に見やすかった。あの~国際フォーラムやめませんか。。。

山中選手のトランクスだが、以前から一人の氏名が刺繍されている。

辻昌建

リング上での悲しい事故で亡くなられた方の名前で、山中選手と同じ帝拳ジムに所属していた。

おそらく一緒に切磋琢磨した仲間で、特別な思いを込めて刺繍しているのだろう。

こういった美談だと、テレビなんかが食い付いて紹介しそうなものだが、私が見逃しただけかもしれないが、取り上げられたことが無いように思う。

多くを語らず、行動で示す、いぶし銀なところが、ボクシングの魅力だけでなく人間的な魅力も感じさせてくれる。

その山中選手のトランクスだが、今回の試合でまた一人の氏名が刺繍されている。

http://ameblo.jp/stanbox7/entry-11507983519.html

こちらの記事をよく見ると、トランクス右後ろに

上西孝幸

と読める。

ネットで調べてもまったく情報がないのだが、名前だけで検索してみると滋賀県障害者スポーツ協会のページがヒットする。

滋賀県といえば、山中選手の出身地で、また何か秘められた思いがあるのだろうと想像を膨らましてしまう。

今後も、ボクサー山中選手、人間山中慎介を応援し続けたい。

etckeeperでLinuxサーバのコンフィグバージョン管理

長年悩んでいたが、linuxサーバのコンフィグ(/etc以下)のバージョン管理について良さげなのを見つけた。

その名もetckeeper

gitやbzrなどのバージョン管理と連携してくれる見たいで、おそらく要望通り。

動作としては、/etc/内にリポジトリを作り、一日一回更新してくれる模様。yum実行後にも更新してくれるらしい。

CentOS6でのインストールはepelが追加されていればyumで一発

 

 

 

インストール後、初期化して上げます。

 

 

 

とりあえず最初のcommitをします。

 

 

あとは、定期的に自動でcommitされるはずです。
基本gitなんで、ステータスとかログは、gitコマンドで見れます。

まだインストールしただけなんで、感想とかは無いです。

scpのETAって何?

scpしていると右下に、ETAと時間らしきものが表示される。

どうやら(Estimated Time of Arrival)の略らしい。

翻訳サイトで確認すると、(到着予定時刻)らしい。

まー予想通り。

fallocateで素早く仮想化ディスクを用意する

今まで、仮想環境のディスクファイルなんかで使う大きめのファイルといえばddでzero fillをしていたが、

実際にディスクにzeroを書き込むので遅くて困っていた。

1Gファイルを作るとき

最近だとfallocateの方が良いっぽい。

同じく1Gファイルを作るとき

sparse fileじゃなくてちゃんと確保してくれている模様。

ext4からの機能らしい。

bashのeオプションを一時的に無視する

シェルスクリプトを書いていると、エラー処理を書くのが面倒で、とりあえずbashをeオプションで起動しておけばいいや程度に思っていたりします。シェルスクリプト中のどこかでエラーが出ればスクリプト自体を終了してくれるので何かと便利なんですが、途中無視できる程度のエラー処理で止まって困ることもあるので、そこを何とか無視する方法を調べました。まーmanに書いてあったんでちょっと読めば気付くんでしょうが自分は結構時間かかりました。

-e      単純なコマンド (前述の シェルの文法セクションを参照) が 0 でないステータスで終了した場合、即座に終了します。ただし 失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または ││ リストの一部である、コマンドの返り値が !  で反転されている、のいずれかの場合にはシェルは終了しません。

上の条件に当てはめてしまえばいいだけです。

サンプルとして、以下のようなスクリプト。

 

最初のfalseでは、止まらず次のfalseで止まって、最後のechoは処理されないはずです。

メモリをメッチャ使ってみる

前回cpuに負荷をかけてload averageをメッチャ上げてみたが、今度は、メモリをひたすら消費するとどうなるか見てみます。

今回もwatchdogタイマーの動作具合を見るのが目的です。

まず、以下のようなコードを書いて

 

 

 

コンパイルして、

 

 

 

実行します。

 

 

メモリをジワリジワリと消費して行って、そのうち強制終了されると思います。

その間、経過を見るため他のコンソールでtopします。

 

 

 

RESの値が搭載メモリ近くになると、強制終了すると思います。このRESの値が実際に確保する値です。malloc時に

もっと多めに取れば、早く確保出来ると思ったのですが、あまり値が大きいと仮想メモリ(VIRT)ばかり増えて、

実メモリ(RES)が少ししか増えなかったので、小さめにしていっぱい回します。

RESが搭載メモリ近くになると、コンソールの反応とかも悪くなりますが、しばらくすると対象プロセス(mem_full)が

強制終了されます。この強制終了は、有名なoom-killerさんが行なってくれます。

syslogを見ればそんなメッセージがあると思います。

ただ、必ず予想していたプロセス(mem_full)とは限らず、他の正常プロセスも落とされる可能性があります。

ここまでやってメモリを食い尽くすプロセスがいても、きっとoom-killerさんが良きに計らってくれるので

watchdogタイマーで落ちることは無さそうです。

せっかくなので、今度は、メモリ食い尽くしプログラムを同時多発的に実行してみます。

 

 

 

とりあえず100個実行します。topで見るとわんさかプロセスがいます。

コンソールのレスポンスも激遅になり、topの表示も更新されなくなるが

地味にoom-killerさんも動いており、watchdogのリセットが実行される形跡はありません。

watchdogデバイスに定期的に書き込んでいるのは、CentOSにあったその名もwatchdogな

パッケージでインストールしたデーモンなんですが、こいつが何とか頑張っているようです。

この状況だとコマンドも打てないので、強制的に電源を落とすしかありませんでした。

watchdogの意味なし。

一応CentOSのwatchdogでは、load averageにしきい値を設定出来そうなので

それで対処するのもありかと思います(未検証)。

ただしきい値の設定は頭の痛いところです。因みにこのテスト実施時は160くらいいってました。

また、デーモンタイプのwatchdogでは性能が良すぎるのかとも思います。都度コマンドを実行して

デバイスに書き込むタイプの簡易的なものなら、おそらくコマンドの実行が出来ずwatchdogからリセットがかかる可能性が高い気がします。

うーん。watchdogに期待しすぎなのかもしれません。

load averageをメッチャ上げてみる

watchdogタイマーとか仕込んでみて、ふとload averageメッチャ上がってる時に、書き込めなくて落とされたりしないのだろうかと思って
load averageをこれでもかって上げてみた

 

 

 

/dev/urandomをひたすらddで取ってくるだけ。

 

 

load average 100超えてるけど、とりあえず落とされることはないですね。
本番環境だと、何が原因で上がってるのかアタフタしますが、
上げる気になれば簡単に上げられますね。
ただこれだと、CPUには負荷かかってるけど、メモリやI/Oは全然使ってないので
その点も検証する必要がありそう。

シェルでMACアドレスをランダムに生成

ちょっと悩んだので自分用にメモ。
表題の通り、シェルでMACアドレスをランダムに生成する方法。仮想化なんかで、ゲストを自動作成するスクリプトを書いていると、固有のMACアドレスが必要だったりするのでそのメモ。

 

 

 

エレガントでは無いけど、これだけ。
%Xを%xと小文字にすれば、小文字のアドレスが生成される。OUIを指定したかったら、最初の3オクテットを固定にするだけ。