« 2007年12月 | メイン | 2008年02月 »

2008年01月 アーカイブ

2008年01月04日

「わかる」ということ

数学を学ぶとは自分の中に一つの数学の世界を立ち上げることである。

数学に感動する頭をつくる

「わかる」ということに新しい発見がありました。

子供は意味のないものを丸暗記できますが、大人は関連づけで記憶しますよね。
頭の中には関連づけて構造化された記憶の世界があります。

未知の事項に遭遇した時、頭の中の世界には、その未知の事項についての関連づけがありません。

その時に未知の事項をシャットアウトすると、自分の頭の中の世界は守られますが、進化はありません。

未知の事項と頭の中の世界との間に関連を作ることができれば、未知の事項を自分の世界に取り込むことができます。

未知の事項を自分の世界に関連づけすることができた状態、この時の状態が「わかった」ということ。

これは数学だけに限った話ではないように思います。

数学に感動する頭をつくる
素晴らしい本でした。
本書を読んで、多くの発見がありました。

数学に感動する頭をつくる

数学に感動する頭をつくる
素晴らしい本でした。
本書を読んで、多くの発見がありました。

特に、第三章。

第三章では、数学に大切な能力の開発方法について解説されています。

  • 記憶力
  • イメージ能力
  • 発想力
  • 推理力
  • 構想力
  • 位置づけ能力
  • 洞察力

これは、数学だけに限った話ではないように思います。
プログラミングにも必要な能力です。

イメージ能力
数学では、頭の中に図形を思い浮かべて、動かしたり補助線を引いたりします。
プログラミングをする時にも、頭の中でプログラムを動かします。

発想力
数学では、問題を解く時に様々な解法を考えます。
プログラムでも同じですね。

その他の能力も、プログラミングにも必要な能力であるように思います。
数学とプログラミングは相性がいいのかも。

本書によると、将棋と数学は相性が良さそうです。
もしかすると、将棋とプログラミングも相性がいいかもしれません。

本書を読んで、数学に挑戦したくなりました。

2008年01月07日

CakePHPのModelのわかりにくいところ

CakePHP1.1を使ってみて、特にController内のModelを理解するのに時間がかかりました。
ということで、そのまとめ。

まず、Controller内の「$this->Model」はModelクラスのインスタンスということ。

idが$idのデータを読み込む方法。

$this->Model->read(null, $id);

以下のコードも同じ結果になります。

$this->Model->id = $id;
$this->Model->read();

落とし穴は、自動的にid属性が設定される場合があること。

2回続けて保存したとき、1件しか登録されません。

$this->Model->save($this->data); //新規保存
$this->Model->save($this->data); //更新保存になる

原因は、1回目の「$this->Model->save()」で保存したときに「$this->Model->id」が自動的に設定されるため。

対策は、「$this->Model->id」をクリアするか、「$this->Model」を新規にすること。

「$this->Model->id」をクリアする方法。

$this->Model->save($this->data);
$this->Model->id = NULL;
$this->Model->save($this->data);

「$this->Model」を新規にする方法。

$this->Model->save($this->data);
$this->Model->create();
$this->Model->save($this->data);

「$this->Model」はインスタンスで、状態を持っていることに気がつけば、原因に気づくことができるでしょう。

次に関連モデルの結果を取得する方法について。

findAll()の6番目の引数で、取得する関連モデルの階層を指定することができます。

$this->Model->findAll(null, null, null, null, null, 2);

ただ、この方法だと「null, null, …, 」というのが、あまり見た目が良くないように思います。

$this->Model->recursive = 2;
$this->Model->findAll($conditions);

多少は見やすいのではないかと。

モデルの定義で、$recursiveの初期値を指定することもできます。

class モデル名 extends AppModel {
  var $recursive = 2; //初期値を指定

他にも何かあったような気がしますが、忘れました。
思い出したら、追記します。

A4サイズで1年分が1枚におさまるカレンダー

A4サイズで1年分が1枚におさまるカレンダーを
手軽で使い勝手の良いCompact Calendar 2008CommentsAdd Star
で見つけました。

Excelファイルのなので、カスタマイズもできそうです。

長期計画を立てる時に役に立ちそう。

日本のお金持ち研究

日本のお金持ちの研究

年収1億円以上の人にアンケートを実施し、その結果からお金持ちの実態を研究した本です。

弁護士は儲かるというイメージがありましたが、実際には全然そんなことはないことに驚きました。
年収1億円以上の人のうち、弁護士はたったの0.4%。
実は弁護士の収入はサラリーマンとさほど変わらず、弁護士の約20%が年収500万円未満なのです。
難関の司法試験というリスクに比べて、そのリターンは割に合わないのかもしれないと思いました。

スポーツ選手や芸能人も、割合で言えば多くありません。
わずか2.2%です。
メディアがよく取り上げているので、お金持ちのイメージがありますが、実際はごく一部のようです。

お金持ちの多い職業は企業家と医師。
この2つで半分近くを占めています。

企業家は都市部に集中しており、ビジネスの成功は都市でないと難しいことを裏付けています。
一方、医師は地方でも儲かるようです。

その他、お金持ちに関する情報がいろいろと掲載されていて、参考になる本でした。

最後に、心に残った一文。

日本の高額所得者は、優秀な頭脳を持って一流の大学を卒業するというよりも、心身ともに強靱で、かつ正直で勤勉であることが重要、と指摘している。

日本のお金持ち研究

2008年01月09日

C++Builder2007で「'DesignIntf.dcu' が見つかりません」のエラーメッセージが出たときの対処法

C++Builder2007で「'DesignIntf.dcu' が見つかりません」のエラーメッセージが出たときの対処法。

CODEGEARのページに情報がありました。
DesignIntf.dcu and Proxies.dcu not found.

  1. メニューから「プロジェクト」「オプション」でプロジェクトオプションの画面を表示します。
  2. 「Delphiコンパイラ」「その他のオプション」を選択します。
  3. 「コンパイル時に使用するパッケージ」欄に「DesignIDE」と入力します。

2008年01月10日

C++Builder2007(Indy10)のBase64のデコードの方法が変わっている

C++Builder2006(Indy9)とC++Builder2007(Indy10)で、Base64のデコードの方法が変わっているようです。

C++Builder2006(Indy9)の場合、

AnsiString enc = ~; //エンコードされた文字列
TFileStream* fs = new TFileStream(fileName, fmCreate);
IdDecoderMIME1->DecodeToStream(enc, fs);

C++Builder2007(Indy10)の場合、

AnsiString enc = ~; //エンコードされた文字列
TFileStream* fs = new TFileStream(fileName, fmCreate);
IdDecoderMIME1->DecodeBegin(fs);
IdDecoderMIME1->Decode(enc);
IdDecoderMIME1->DecodeEnd();

2008年01月12日

ファルファッレ

ショートパスタ。 ファルファッレ、というらしい。

ファルファッレ

2008年01月17日

派生クラスでオーバーライドしたときにvirtualをつけると読みやすくなる

派生クラスでオーバーライドしたときにvirtualをつけると読みやすくなる。
という話が『C++ Coding Standards』にあったと思います。たぶん。

//Base.h
class Base
{
  virtual void Foo();
  …
};

//Derived.h
class Derived : public Base
{
  void Foo();
  void Bar();
  …
};

Derivedクラスのメソッド「Foo」「Bar」は、Baseクラスのメソッドをオーバーライドしているのか、 Derived.hを見ただけではわかりません。
Base.hを確認する必要があります。

時として、意図しないオーバーライドで思わぬ問題が発生することがあります。
# 特にアクセス制限の少ないrubyで。
# 明示してオーバーライドするDelphiやC#がうらやましい。

派生クラスの方にも、「virtual」をつけると多少わかりやすくなります。

//Derived.h
class Derived : public Base
{
  //Foo()は基本クラスをオーバーライドしている
  virtual void Foo();
  //Bar()は基本クラスをオーバーライドしていない
  void Bar();
  …
};

2008年01月19日

ルノワールは無邪気に微笑む

ルノワールは無邪気に微笑む』を読みました。
一流の人の言葉には学ぶものがたくさんあります。

絶好のときこそ、その波に乗って次の作品を描く、発想をまとめる最良のチャンスだったのです。よい波が来ていて、みすみすそれを逃してしまう姿を、もうそれこそ、いくつも見て来ました。

絶好のときこそ、がんばる時期。
小さな成功に満足するとそこで終わってしまいます。
慢心せず、ひたむきに努力を続けていくことが大事なのだと思いました。

飛躍は規則正しい生活のなかからこそ生まれる

多くの人が言っていますが、やはり規則正しい生活は欠かせません。
気をつけねば。

よく世界で成功する秘訣が四つあると言われます。それは1に自信、2に勇気、3が才能で、4がニューヨークに住んでいること、というのです。

住む場所も重要な条件なようです。
確かにそうかもしれないと思いました。

デッサンをするときには、自然に目に入って来た順に描く。絵を描くときには、心ひかれた描きたいものの順に描く。そしてその順を最後まで崩さないこと。これが基本です。

伝えたいメッセージをひとつに絞る。
絵もまた一つのメッセージなのです。
これから絵を描く時には気をつけようと思います。

2008年01月20日

『ハッピーになれる算数』『生き抜くための数学入門』『こんどこそ!わかる数学』

ハッピーになれる算数』『生き抜くための数学入門』『こんどこそ!わかる数学』の3冊を読みました。

それぞれレベルは違いますが、テーマは同じです。
「仕組みを理解する」ということ、これがこれらの本のテーマです。

難しい公式を暗記するような本ではありません。
基本的なことを、その仕組みから考えていきます。
かけ算とは何か?
割り算とは何か?
分数とは何か?

なるほど、こういう考え方もできるのか、
と楽しく読ませていただきました。

試験勉強にも役に立つように思います。
試験では公式を暗記すれば点が取れますが、中学・高校と進むにつれて暗記しなければならないものが難しくなりますし、どんどん増えていきます。
でも、意味を理解すれば応用できるようになりますから、暗記が必要な量は減らすことができそうです。

ですが、むしろ試験に束縛されない大人の方が楽しみながら読めると思います。

ハッピーになれる算数』は、内容は算数のレベルです。
ところが、この本の中には東大入試問題が出てきます。
仕組みを理解して考える力を養えば、東大入試問題にも挑戦できるのです。
おもしろいですね。

数学的な考え方やルールが明文化されています。

たとえば数学は、

だれが見ても「ああ、これは、あたりまえだ…」と思うことだけをつなぎあわせて、数式を使った作文を作ること。

文章題は、

最初の式には、「問題の中に出てきた数字しか書かない」

こういう基本的なルールを知らないと、たしかに大変かもしれません。

生き抜くための数学入門』は、中学の数学レベルだと思います。

この本にあった「数学的な構え」のチェック。

  1. 宝くじを買う。とくに、ジャンボ宝くじはかならず買う。(Yes, No)
  2. 献立を思いつかなくて、スーパーでうろうろする。(Yes, No)
  3. テレビで紹介された健康法はかならず試して、たいてい三日坊主で終わる。(Yes, No)
  4. 「なぜ?」と聞くと、「うるさい!」と答える。(Yes, No)
  5. 安い、と評判のスーパーまで遠出をして、使えて外食して帰ってくる。(Yes, No)
  6. ゴールデンウィークに入ってから突然どこかに行くことを思いつく。そして、渋滞に巻き込まれる。(Yes, No)
  7. ベストセラーに出てくるフレーズを使って説教をする。(Yes, No)
  8. 映画を見ると泣いているか、寝ているかのどちらかだ。(Yes, No)
  9. 1年前にはまっていたことを思い出せない。
  10. 貯金がない。(Yes, No)

半分以上がYesだとしたら、中学校以降で学んだ数学が人生に活かされていない可能性が高いようです。

ちなみに、『ハッピーになれる算数』と『生き抜くための数学入門』は漢字にルビが振ってあります。

こんどこそ!わかる数学』は上の2冊の続編といった感じ。
この本のレベルも、中学の数学レベルだと思います。

当時の文部省によると、小中学校で算数・数学を学ぶのは、論理的思考力と論理的表現力を育て活用する態度を身につけるため。

数学の証明と、裁判官が判決文を作る過程は瓜二つ、
というのは、はっとさせられました。たしかにそうかも。
普通の会社員も、プレゼンテーションに論理的思考力と論理的表現力が必要です。

気づかないところで、算数・数学を学んで養った力を使っているのかもしれません。

これを書きながら思いついたのですが、ロジカルシンキングって、もしかして数学的思考法のことでしょうか。

2008年01月21日

C++Builderで国際化

CODE GEARのTeam Japanのブログで「C++Builderにおける国際化支援機能」というエントリーがありました。
紹介されている4つのツールは、いずれも有料みたい。

他にないのかと探してみると見つかりました。

一つは、「GNU gettext for Delphiを使って国際化してみる」で紹介されている「GNU Gettext for Borland Delphi, C++ Builder and Kylix」。
もう一つは「Delphiコンポーネント:国際化対応コンポーネント IniLang」で紹介されている「IniLang
どちらも無料で使えるようです。

2008年01月26日

セーラー万年筆のインクボトル

01250001.jpg

セーラー万年筆のインクボトル。

ここまで描いて時間切れ。

大きくて、わずかに丸みのあるふたに力を入れて描きました。

2008年01月30日

人は「感情」から老化する―前頭葉の若さを保つ習慣術

人は「感情」から老化する―前頭葉の若さを保つ習慣術』を読みました。

脳は、感情を担当している前頭葉から老化していきます。
感情が老化すると、やる気や興味を失っていきます。
そうすると、出かけることが少なくなり体力が衰えます。
頭を使うことも減りますから、記憶力も衰えていきます。

では、どうすればいいのか?
寄り道をする、テレビにイチャモンをつけるなど、本書にその対策があります。

たとえば、川島隆太教授がすすめる音読や計算は効果的なのだそうです。
ニンテンドーDSの「脳を鍛える大人のDSトレーニング」も効果があります。
でも、その後の「行動」が重要。
前頭葉を刺激したら、行動に移さないと感情の老化予防には役に立ちません。
音楽が好きならコンサートに行くとか、時代劇が好きならその舞台を旅行するとか、行動が大切です。

内容とは関係ないけど、右脳について、

教育に関していうと、今、日本では「右脳教育」への関心が高い。 情報化社会になって、従来の左脳中心の教育では役に立たなくなってきたからだというのだが、私は疑問を持っている。

同意。
そういえば、川島隆太教授が『朝刊10分の音読で「脳力」が育つ―脳科学の最先端研究が明かす驚異の事実』の中で右脳の都市伝説の間違いを示していました。
ちゃんとした学者が一般の人に向けて、メッセージを伝えてくれるのは嬉しいことだと思います。

About 2008年01月

2008年01月にブログ「山本隆の開発日誌」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2007年12月です。

次のアーカイブは2008年02月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35