2013/07/31

Cool Runnings

クール・ランニング」見ました。たしかBSでやってたかな?
ジブリをヘビーローテーションするくらいならこういう普通の良作映画を地上波でやりゃー良いのにね。
実話を元にしてるだけあっていたって普通の展開しかしないけど面白く見れた。
これは日本語吹き替えで良かった 。
♪し、ん、じ、られないかもね♪♪ジャマイカ生まれのボブスレィティーム♪

ステロイド合衆国」見ました。プロメテウスと同時レンタルで。
監督が自分の疑問を解きたいために撮ってるのがよく分かる。スーパーサイズミーみたいに結果分かりきってるじゃん、みたいなんじゃなくかなり本気で取材してるのが分かるので面白い。 家族の健康がかかってて切実だもんね。
面白かったのは「ステロイドな」 というのが強いという意味の形容詞になってるということ。そんな感覚だとは知らなかった。
あと「消費期限は缶底に記載」とあって缶の底は真っ白という健康食品w
いい加減だなぁ

2013/07/27

Prometheus

プロメテウス」見ちゃいましたー。近所唯一のDVDレンタル屋がどことなく店仕舞いの準備を始めてる雰囲気だったので応援のため借りて見ました。(旧作が一つ350円じゃぁ、オンデマンドとかツタヤとかに勝てないよね)
で、
いやぁ~良かったですw
以下ネタばれ注意です。
始めは「2001年」風のハードSFなのか「エイリアン」風な宇宙モンスター映画なのか知らずに見始めて、どっちかなーと思ってたんですが、、

静かで巨大な宇宙船にピシっとした格好の落ち着いた乗組員がたった一人、そして宇宙船のコンピュータから無機質な声で話しかけられる第一声
「…デイヴィット」

キター!2001年キタこれ!
宇宙ものSFが大好きなのでこの一声で一気に引き込まれました。HALはデイヴィットでなくデイブと呼んでましたね。
人類誕生の秘密、さぁどういう展開になっていくのか楽しみで楽しみで。。。
そして唐突に現れる怪しい形の未知の生命体。何の警戒感も無く近づく面白乗組員。
「ギヤァ~!」
宇宙モンスター映画始まったコレ!!
それが分かった時点で一気に緊張感が抜けちゃって、あとはなんとなくグロい感じのエイリアン映画になっちゃいまいしたねぇ。。主役の女性研究者もあんまり良いキャラじゃなかった気がするしなぁ。リプリーだったら絶対「(私ごと)殺して!」とか「地球には持ち帰らせないわ!」とか言いながら溶鉱炉に飛び込むシーンがあるんですが、そこで最新の手術マシンで麻酔かけてエイリアンを取り出すとかがちょっと…
いやいいんです。人間ですから。痛いの嫌だし出来れば生きて帰りたいでしょう。
全体的に楽しめたんで良いですが、しかしただのパニックホラーなB級映画を大げさなCMして売り込むってのはあまり良くないですよー
でも宇宙SFものが好きならまぁ普通に面白く見れるハズです(でもSF映画としては「スフィア」とかの方が面白いよ )。

ついでに日本語吹き替えも少し見てみました(初見は英語と日本語字幕)。一気にテレ東平日の午後のロードショー風に変わったw
いや午後のロードショーだって普通にうまい声優さんなんですが、なんか主役の声優の下手さと映像の完成度の高さがうまくバランス取って普通の午後のロードショーみたくなってました。

も一つついでに、最初の方でルービックキューブ型のインターフェースで映像を出すっていうSFアイテムが出てくるんですが、これ凄く懐かしくて、多分、天地無用の美星さんが持ってたやつが元ネタかな?多分だけど…

2013/07/22

The Cat Returns

「猫の恩返し」見ました。テレビで。
子供向けアニメに特化して作れば良いものを。ジブリだからってなんか中途半端に大人向け要素入れちゃって両方から嫌われるタイプですね。
完成しちゃった猫の恩返しは好きじゃない映画だけど同じストーリーで子供向けに作ってたら絶対面白くなると思うんだけどなー。ところどころ気持ち悪い描写があるのを全部削って、気味悪い登場人物減らしてギャグ要素増やして。

「耳をすませば」今回のジブリ特集では見逃したけど何度も見てるので。
そんなに嫌ですか?別に良いじゃないですかと思いますw
いや実際ストーリーどうのこうのより、登場人物のヤバすぎる名前の方が気になって気になって…それどころじゃない。

今日(?)は土曜の牛の日だそうです。はっきり言って今も昔も意味がよく分かりません。
しかし昔からの習慣で「じゃー鰻でも食べるか~」となる日のようです(牛を食べろ牛を)。
てかね、みんなテレビ見ないんですか? 帰り道の商店街でウナギがたっくさん焼かれて並んでるの見てびっくりですよ。
絶滅危惧種だってあれだけ言ってるでしょ!!どうしてそういうことするの?!
「じゃー鰻食べるのは止めとくか~」ってなるのが普通でしょ!

まぁ今回沢山売れ残って来年から「鰻売っても売れないしな~」ってなれば良いですが…

SQL、その読み方はシークェル

シークェルブートキャンプにでも参加させられたのかと思うくらい最近シークェルを見てました(日本人なら大人しくエスキューエルと読みなさい)。
 というわけでSQLのポイント、SQLのSELECTとかでレコードを取得する際、Order by句を付けないと順序は気まぐれに変わる。Order byが付いていても重複データとかは順序の保証は無い。まぁ常識っぽいけど、大抵の場合はインサート順に取得できるので勘違いしがち。そしてインサート順に取れると思い込んでSQL組むと大抵の場合は動作OKだがたまに順序が変わってバグる、という見逃されやすい問題になる。

 インサート順で取れると思い込んでテーブルを作っちゃってる場合、運良く既存のカラムでOrder byやって意図した順序を指定出来るなら直せるんだけど、既存のカラムだけでは出来ないってこともある。これを直すにはOrder byのためのカラムを追加する以外手は無いってことです✝アーメン✝。
 RoRでCreate_date、Update_dateとかいうカラムが勝手に出来るのがちょっと邪魔っぽかったけどこういうときにはさりげなく役に立つんでしょうね。

ポイントその2
あるカラム(例えばcol01)のデータがnullのとき、「col01 = 0」は当然False判定(nullは0じゃないので)、しかし「col01 <> 0」もFalse判定!
コインの裏と表のはずなのに、さにあらず。SQLよお前もか…
0であり、かつ0でない値。それがnull
ま、そいうもんだって分かっちゃえばなんてことは無いんですが(nullに対しては「cal01 IS NULL」とか「col01 IS NOT NULL」とかで判定する)。

SQLかぁやだなぁ怖いなぁと思ってましたがこういう風に追い込まれると意外とすぐ出来るようになります。しかも定時上がりでしたので一日8時間x2週間、実働10日ほど?
定期的にこういう風に学習する機会があると良いかもなぁ

2013/07/12

ターメリック

♪ウコンのチカラ♪を飲むくらいならカレーでも食べればいいんじゃないでしょうか
カレールー(日本式)のターメリックは秋ウコン、薬のウコンは春ウコン、でもウコンのチカラはやっぱり秋ウコンらしい。
まぁどーでもいいです。
 ちゃんと調べてみるとウコンのチカラ一本にはカレー約5杯分のクルクミンが含まれているそうです。 カレー約5杯分というとカレールーの大きな箱が11皿分なのでその半分、カレールー四カケ分になります。これを全部食べるとするとすごいしょっぱそうですね。そんなに塩分取るくらいならやはりウコンのチカラを飲めば良いと思います。そもそもクルクミンにそんなに効能があるんでしょうか。

 今でもJavaが一番好きだと思ってるプログラマなんですがブログにJavaのラベルを用意してません。InstallShieldでインストーラを作るとか、C/C++とかはびっくりするようなノウハウとか、馬鹿みたいと思える仕様とかがあるんですが、Javaについてそういうのってあんまり無いんです。というか変な仕様だと感じてもすぐにそれが正しいなら正しいと無意識に補正しちゃうんでしょう。日本語って難しいとか変な言語だと言われても母国語だからピンとこないというのと同じかな。母国語のようにJavaを書ける分けじゃないけど。

もう何年も前だけど、ある言語のファンから見た他の言語のイメージっていう画像がすごく面白かったので今更ながら転載。
http://www.kevin-fischer.de/blog/2010/04/javacphp-as-seen-by/
Javaファンから見たJava言語のイメージがその通り、スゲー理解できるw Rubyのイメージもその通りwあんな感じに見えるw 
てかhaskellwww
これにLispを加えた画像も作られてるね

2013/07/09

Pointerについて

C/C++のポインタについて、もっかい纏めておく。
ポインタが難しいとか言う話よりも「オート変数を戻り値に使えない」という話の方が重要で簡単だと思う(まぁどの話でピンと来るかは人それぞれだけど)。

メモリ


スタック領域:ローカル変数、オート変数と呼ばれる。高速、容量は少ない(PCで動かすプログラムならそんなに気にすることもない)。ローカル変数なので関数を抜けると勝手に消える。なのでスタック領域へのポインタを戻り値としては使えない。(スタックという名称から想像出来る)
ヒープ領域:new(alloc関数)で確保する、遠くの大容量メモリ。遠くのメモリなので(ほんの少し)低速だが大容量。遠くのメモリなので勝手には消えない。戻り値に使うならこっち。ただし勝手に消えないので誰かがdeleteする必要がある。
int * getIntPointer()
{
    int i = 5; // ローカル変数でポインタでない。スタック領域を確保してる。
    int * pi = NULL// ポインタ、まだ領域確保してない。

    pi = &i; // ポインタpiは、iが確保してるスタック領域へのアドレス。
 
    return pi;
}
スタック領域を指してるポインタは関数を抜けると同時に消されても文句言えない。
なのでこのポインタを返すのは誤り。
int * getIntPointer()
{
    int * pi = NULL// 同じく、まだ領域確保してないポインタ。
    pi = new int(5); // ヒープ領域にintの5を確保し、そのアドレスをpiに入れた。

    return pi;
}
ヒープ領域に確保したメモリのポインタなので関数を抜けても消されない。呼出し元で戻り値を使うことが出来る。
代わりに使い終わった後のdeleteは呼出し元でやってね。

*と&


しっかりと理解している分けではない、というか覚えてない、というか、動くコードが作れればいい、というかもう無茶苦茶。
 int * pi;
 int i = 5;
 &i; // &iでiのアドレス値を取得。
 i;  // iでは変数の値を取得(というかまんま)。

 pi = &i;

 *pi; // piの指す所の値を取得。
 pi;  // pi と書いただけではアドレス値でしかない。

 // 直の変数なら&でアドレス取得、ポインタなら*でアドレス取得

 // ↓関係ないがw
 j = 2 * 5; // 2x5 の意味。10。
 bool b = true & false// 論理演算。この場合はfalse。ORは「|」。

C/C++にはプリミティブ型とオブジェクト型、というような区別は無いらしいが、Javaで言うプリミティブ型はアドレス値、実際の値、と区別しないと面倒なことになる。
しかし、オブジェクト型の場合はもうちょっと話が変わる(様な気がする)。
   Person * p = new Person("Jhon Smis");
   p->getName();
   p->getAge();

   Person p("Jhon Smis");
   p.getName();
   p.getAge();

上がポインタを利用した例。下がオート変数の例。オブジェクトへのポインタで、関数呼び出しをするのは「->」(変な演算子)。ポインタじゃなくてオブジェクトを直にスタックに確保し(これはJavaでは無い概念)、その関数を呼び出す場合は「.」。
あとnew演算子を使わないでもメモリに領域確保される、というのもJavaではありえないことなので驚愕するだろう。変数名に直に括弧を付けてコンストラクタ呼出し、という文法もJavaでは無いので少し驚く。

実感としてメモリの場所の違いがイメージできれば、int型のポインタなんて使い道があまり無いってことと、オブジェクト型のポインタは関数呼び出しの演算子が「->」に変わる、って理解で大抵の場合はこと足りる。
この辺を頭に置いとくとかなりギャップが小さくなるかと思う。

ギャップについて、こんな記事を見つけた。
C++を使い慣れた方からすれば、あり得ないような誤解もあります。
例えば、int 型や double 型のようなC言語にもあるような型はともかく、
クラス型のオブジェクトは常に new で動的に割り付ける必要があるとい
うものです。おそらく、Javaか何か別の言語からの類推によるものでしょう。 
つまり逆の立場から書いてるんですが、「あり得ないような誤解」ですかぁ…
Java的には当たり前すぎて間違ってることに気付きもしなかったです

2013/07/04

C++のBOOL型について

BOOL frog = -1;
この frogはどういう状態かと言うと
「偽でない」かつ「真でもない」という値になっている。じゃあ誰なんだお前は、と。
if(frog == TRUE) ← NO!!
if(frog == FALSE) ← NO!!
お前BOOLじゃねーのかよとw カエルかよとw

C/C++の常識だけどBOOL型というのは数値の「1」がTRUEで「0」がFALSEで if文では「0」以外は全部TRUE判定(だったかな?)になる。
実際は真を期待して「if(frog)」とか逆に「if(!frog)」って書くことが多いから問題にはなることは少ないが、frogが実は「frog != FALSE」なのにif文では偽「frog != TRUE」なのにif文では真、となる値となることを知ってないと混乱する(逆に書いてた)。
Javaから入ったプログラマにこの言語壊れてる、と思われてもしょうがないんではないか…

無駄な抵抗だと思いますが、BOOL型、TRUE、FALSEは一切使わずbool型、true、falseを使うようにしてます。しかしbool型に数値を代入出来たり、true、falseを1、0の数値として使えてしまうので完ぺきではありません…

Cで良く見る「if(!somePtr){/* ぬるぽ */}」というNULLチェックは「ポインタも実は数値」なことと「数値が真偽値として使える」ことと「NULLがFALSEと同じ0で定義されてる」ことを利用して行われてます。
酷い方法だと思いますw
無駄な抵抗だと思いますが自分で書く場合だけは「if(somePtr == NULL){/* ぬるぽ */}」 としてます。(無駄ジャンと言われて消されるような気もしますが…)

2013/07/03

中性洗剤の香り

食器洗いの中性洗剤に香料を配合するって感覚が分かんないんだなー

かなり強いライムの香りの食器洗い洗剤使ったけど木のお椀とかは匂いが付くんじゃないかな~と思った
ライムの香りのお味噌汁になるよなー

そんなあなたにもヤシノミ洗剤
正直なところこの洗剤は他の合成洗剤に比べて泡立ちが良くなくて、ジョイ君とかと比べると2倍くらい使わないと同じ感覚で洗えない感じ。
ちょっと良いスポンジと一緒に使うとジョイ君みたいな感じで使えるようになった。
これとか。
実はパーム油を取るためのプランテーションこそがオランウータンの住む森を狭くしてる原因だという。だったらヤシノミ洗剤なんか買わない方が良いんじゃないかと思うかもしれないが、ヤシノミ洗剤はオランウータンと共生するように考えて作られているパーム油を使っているらしい。
ポテトチップスとかの方がオランウータン的にやばいかもしれない