kaeruspoon

今読んでいる本

アート・オブ・SQL ―パフォーマンスを引き出すSQLプログラミング手法

Code Craft ~エクセレントなコードを書くための実践的技法~

こんなのとか。

シマウマ本をまだ読めてないです。最近、ちょっと脳の活動が低調気味でいろいろもやもやと止まっている感じ。ちょっと違うことでもしないとダメかな。バイクのったりとか。もっとおもしろいことしたいのにできていなくてつまらない感じ。Rubyばかりやってたらダメですね。もっと低レベルなことやりたいな。C++でも再チャレンジするか。

コマンドラインからtwitterに書き込む

参考
http://www.ibm.com/developerworks/jp/linux/library/l-friendfeed/?ca=drs-jp

参考というかそのままですね。

#!/bin/sh
curl -u tsukasa@example.com:password -d status="$1" http://twitter.com/statuses/update.xml

twitというファイル名で保存して実行権限を与えてPATHを通せば

twit はらへった

twitterに書き込めます。気軽に書けるね。

最近のケータイはすごい

EXILIMケータイ W63CA | CDMA 1X WIN | KDDI株式会社

最近、携帯を機種変更しました。2年振りに替えたけど、すごく使いやすくなっていてびっくりした。800万画素のカメラ機能もきれいだけど、長時間いい品質で撮れる動画とか(しかも簡単にyoutubeにアップできる)もある。一番気に入っているのがマルチタスクで動くソフトウェア。音楽を聴きながらメールを書いていて途中でネットを見て写真を撮ってまた書きかけのメールに戻る、なんてことがとてもスムーズに行える。それぞれのソフトウェアが起動した状態のままなのでストレスがないのだ。ランチャーもあって起動中のソフトを簡単に選べるしメニューへのアクセスも簡単。ブラウザは複数ウインドウが立ち上がるのでタブブラウザのような感覚で操作できる。ブラウザのUIもウインドウがスライドしたり、メニューが浮かび上がって表示されたりして気持ちいい。唯一の不満が、電話系の操作がもっさりしているところくらい。どうしてだかわからないけど。ソフトウェアのアップデートに期待しておこう。

IEではscript要素にinnerHTMLが使えない

題名のとおり。

  var div = documtnt.createElement('div');
  div.innerHTML = "test";
  $('sample').appendChild(div);  // => OK
  var js = document.createElement('script');
  js.innerHTML = "alert('test');";  // => NG
  $('sample').appendChild(js);

外部ファイルの読み込みは大丈夫なので、それで対応した。

ところがいくつかの外部JSファイルを読み込んでいて、さらに実行する順序に決まりがある場合、後に読むべきJSが先に読まれてエラーになったりした。
なので、以下のように対処。

  function A() {
    // 外部JSファイルの読み込みと実行
  }

  function B() {
    if (typeof Aで宣言される変数 == "undefined") {
      setTimeout(argument.callee, 100);
      return;
    }

    // 外部JSファイルの読み込みと実行
  }

さらっと書いたけど、2時間もこの問題の解決にかかってしまった。javascriptを書いていると、IEにはいつもやられるのだ。

なぞのスロークエリログ

ひさしぶりにkaeruspoonのスロークエリログを見てみた。最近はほとんどログに吐かれるクエリはなかったんだけど、こんなのが出ていてビビった。

# Time: 081220  9:33:18
# Query_time: 4294967292  Lock_time: 0  Rows_sent: 0  Rows_examined: 0

なんだ、このクエリタイムは…。4294967292秒って、136年以上なんだけど。
クエリ自体は単純なcount(*)文で瞬時に返ってくるものなので、当然こんな時間にはならない。

【追記】
今きづいたけど、これって16進数にしたらFFFFFFFCだね。もしかして-4だったのがunsingned intにキャストされたのかも。-4っていうのもよくわかんないけど。

コーディング時の行の折り返しについて

コーディング時の行の折り返しですが、仕事ではけっこう意識して80字以上にならないようにしています。でも最近、この折り返しを意識することがけっこうオーバーヘッドとして馬鹿にならないなと感じています。仕事していてどうもいまひとつコーディングに乗れてないし、いつも自分の仕事を遅く感じる理由がここにあるという気がしてきました。
個人的に趣味でプログラミングしているときは全然行の折り返しをやっていません。vimはかってに画面の端で折り返してくれるし。実際、1行がすごく長くなることってあまりないんだよね。どうして仕事のコードはあんなに長くなるんだろう? 謎だ(本当は謎ではない)。

今年の目標

思えば世の中にブログというものが現れる前から(21歳くらいから)、ぼくはずっと毎日web日記を書いていたわけですが、最近は週に一度くらいのペースでしか書いていません。ネタがないのですが、昔はネタがなくても毎日なにかを書いていました。
というわけで今年の目標として、毎日なにかを書いていこうということに決めました。こうしてまたweb上にどうでもいいゴミデータが増える今日この頃、夜も更けていきます。

暴れん坊将軍を見ながら日本酒とイカの塩辛を楽しんでいました。イカの塩辛は味が濃すぎて日本酒に合わないことが判明したりしています。年を取るほどになにかを学んで成長していくのです。暴れん坊将軍はラスト15分を見れば満足できるので、今はこうして日記を書いていたりしています。

先日は下北沢のマジスパにいってスープカレーの食べ納めをしてきました。汗をめちゃくちゃかいていて、今はきっと自分は見るからにキモい男なのだろうと客観視したりしていました。つきあい始めたばかりのデートではぜったいに食べれない。

ちょっと前に携帯を新しくしたのですがauからだとtwitterが文字化けしてしまいます。ラッパーサイトでも作ろうかとかんがえていたりします。

Erlangの勉強その1

Erlangの変数は先頭大文字で表す。

Pi = 3.14159

Erlangの変数は単一代入変数なので、一度決定した(束縛済み)変数は変更できない。無理矢理変更しようとすると怒られる。

1> Pi = 3.14159.
3.14159
2> Pi = 3.14.

=ERROR REPORT==== 30-Dec-2008::07:59:21 ===
Error in process <0.30.0> with exit value: {{badmatch,3.140000e+00},[{erl_eval,expr,3}]}

** exited: {{badmatch,3.14000},[{erl_eval,expr,3}]} **

さらにいうと、「=」という記号は代入ではない。これはパターンマッチを意味する。
変数は最初、未束縛状態なので不定だけど、

Pi = 3.14159

というように書くと、3.14159とマッチさせるためにPiが3.14159になる。代入しているわけではないと考えたほうがいいのかも。

x = x + 1

というのは他のプログラミング言語ではよく見られる形だけど、Erlangではエラーになる。さらにいうと、Erlangはずっと数学的表現に近い。上記の式は数学として考えると間違っている(X と X + 1 が等しくなることはありえないから)。なのでエラーなのだ。一度決定した変数の値が変更できないのも数学の表現に近い。

Rubyでいうシンボルに近いものにアトムがある。これは小文字で始まる形で表す。大文字で始めたいときはシングルクォーテーションでくくるとアトムとして認識される。

1> book.
book
2> Pen.
** 1: variable 'Pen' is unbound **
3> 'Pen'.
'Pen'


ハッシュに近いものにタプルがある。でもハッシュというよりはRindaで使うタプルに似ている。タプルは{}でくくる。

{index, {age, 33}, {tel, 0399999999}}

パターンマッチを利用してタプルの内容を取得できる。

1> Address = {index, {age, 33}, {tel, 0399999999}}.
{index,{age,33},{tel,399999999}}
2> {index, Age, Tel} = Address.
{index,{age,33},{tel,399999999}}
3> Age.
{age,33}
4> Tel.
{tel,399999999}


リストと呼ばれる配列もある。

[1, second, {age, 33}]

リストに要素を追加するときは... | Tの形を利用する。

1> List = [1,2,3].
[1,2,3]
2> List2 = [4,5 | List].
[4,5,1,2,3]


文字列は実はリストである。ダブルクォーテーションで表すこともできる。

Eshell V5.5.2  (abort with ^G)
1> Name = "Tsukasa".
"Tsukasa"
2> [84, 115, 117, 107, 97, 115, 97].
"Tsukasa"

大掃除とお買い物

今日は朝Erlangの勉強をちょっとしてからユルさんと一緒に大掃除をしました。ふたりで手分けすれば、てきぱきあっという間。天気がよくて暖かかったので気分がいいです。
お買い物にいってひさしぶりにケンタも食べました。旨辛チキン。なぜかケンタの期間モノのチキンはいつも衣が固くておいしくないのです。それでも食べてしまうところが問題か。実はマクドを食べる気になっていたのはご内密です。
スーパーですごくいいお肉を買ってきました。おおいし家では大晦日はいつもいいお肉ですき焼きなのです。早く食べたい。今日はパスタを作りました。パスタはおいしいね。