Home

memo-space

消しゴムフェア

大丸藤井セントラル2Fで「消しゴムフェア」やってました。

超ビッグサイズ消しゴム「レーダーS-10000」

実物見てきました。大きさよりも重さのインパクトがすごいです。

数式いじり

久しぶりにオイラーの贈り物を開いてみた(P42あたり)。

のとき

となるらしい。

こっちは簡単。

これは和と差の積ですね。

中学校数学 3年生-数量/式の計算 - Wikibooks

中3レベルか、、、

ところで、

なので

、、、元に戻った。

あーあとP26のパスカルの三角形とフィボナッチ数列の図の意味がやっとわかった。左に30度傾けて見れば良かったのか。

SERIAL型のsequence名を取得する

PostgreSQLでは、SERIAL型とはsequenceをデフォルト値とするinteger型で、SERIAL型の列を持つテーブルを作成すると自動的にsequenceが作られます。 またこの時のsequenceの名前は、{表名}_{列名)_seqとなります。

なんだけど表や列をRENAMEした場合にsequenceの名前もあわせて変わるわけではないので、フレームワークなんかでこの命名規則に依存していると悲しい思いをすることがあります。

Continue reading

ミルカさん派です

ミルカさん派ですよミルカさん派。内容は全然理解できてませんが。

『数学ガール』出版記念インタビュー

ファンタジーの法則ですか。 プログラマの数学は読んでませんが、ミルカさんを読んだ時に感じたのはまさに、 これは冒険物語だということでした。

というわけで、数学ガールに絶対でてきそうにない台詞を勝手に想像してみる。

僕「テトラちゃん!そっちにいっちゃダメだ!」

ミルカ「どうやら間に合ったようだね」

何の話だか。

CakePHP日記:PostgreSQLのportを指定する

  • 2007-04-16
  • php

app/config/database.phpのコメントに惑わされてはいけません。

/*
 ...
 * host =>
 * the host you connect to the database
 * MySQL 'localhost' to add a port number use 'localhost:port#'
 * PostgreSQL 'localhost' to add a port number use 'localhost port=5432'
 *
 */

実は'host' => 'localhost port=5432'ではなく'port' => 5432を追加すればOK。

CakePHP日記:CakePHPでSmartyを使う時のTips

  • 2007-04-11
  • php

2007-04-12 追記:※注意!結論の「バッククォートで括ると便利」というのはあってますが、そこまでの過程はほとんどウソでした。そのうち直します。

CakePHPでViewにSmartyViewを使う時、おおざっぱにいうとこんな動きになっています。

  • コントローラがビューに変数を渡す
  • ビューがSmartyに変数を渡す(ついでに自分自身をviewというSmarty変数に登録する)
  • レンダリング

このように、変数のコピーが2度発生します。

{$post.id}   // これはSmartyの変数
{$html->link('linkto', $post.id)}  // この$postはPHPの(SmartyViewがセットした)変数

ここで困るのは、レンダリング中にセットされた変数はSmartyの世界からしか見えないこうことです。 典型的な例としてはループで使われる変数です。

Continue reading

CakePHP日記:Model,View,Controllerを共有する

  • 2007-04-09
  • php

同じmodel/actionに対して、一般ユーザ向け画面と管理者向け画面を分けたい時、CakePHPではAdmin Routingという選択肢があります。

4.4. 高度な Routing 設定: Admin Routing と Webservices

なんだけども、アプリケーションを分けてしまった方がすっきりする場合もあります。 分けてしまった場合でも、特にModelのクラスは同じもの使うことが多いです。こういう場合はファイルをコピーしなくても、app/config/bootstrap.phpでModelを検索するパスを$modelPaths 複数指定することができます。

Continue reading

blosxom starter kit + Vicuna

ちまちまと、blosxom starter kit + Vicunaという微妙なものを作っています。

まだあちこちちゃんと動いてませんが。 欲しい人がいるとはあまり思いませんが、いたら公開を考えます。

文字列の先頭と末尾を表わす正規表現

  • 2007-04-08
  • php

そういう時は普通、\zを使うんだと思う(元記事のコメント欄でも言及されてるみたいだけど)。

という話を書こうと思ったらPerl6では\Aと\zは廃止だそうです。

^と$が\Aと\z相当の動作をするらしい。

CakePHP日記:insertかupdateか

  • 2007-04-05
  • php

Model#save()は、idがセットされているかどうかでinsertかupdateかを判断しているようです(さらに、lidがセットされていれば、本当に存在するかをSELECTしてみています)。

ですが、一般的なコントローラのeditアクションは、

A.12. Posts の編集:CakePHP プログラマーズ リファレンスガイド

    function edit($id = null)
    {
        if (empty($this->data))
        {
            $this->Post->id = $id;
            $this->data = $this->Post->read();
        }
        else
        {
            if ($this->Post->save($this->data['Post']))
            {
                $this->flash('投稿を更新しました。','/posts');
            }
        }
    }

こんな感じで、データがpostされた場合はidをセットしていません。 ではなぜこれをupdateと判断するかというと、URLの1つめのパラメータは暗黙でデフォルトのモデルのidにセットされるからです。 じゃなくってこのドキュメントの例では、idをhiddenで渡しているからでした。 で、このhiddenが無い場合の話が以下に続きます。

しかし、コントローラでvar $uses = array('Model1', 'Model2')などと明示的に使うモデルを指定していると、この暗黙のidのセットは動作しないようです。

なので、uses を指定している時や、URLの1つめのパラメータをデフォルトのモデルのidとして使いたくない場合は、明示的にidをセットしましょう。

CakePHP日記:SmartyからHTMLヘルパーの属性を指定する

  • 2007-04-03
  • php

前回の続き。 実は、

<p>Title: {$html->input('Post/title', $view->aa('size', 40, 'class', 'classname'))}</p>

こんなことしなくても、HTMLヘルパーのメソッドはたいてい、attributeにarrayじゃなく文字列を渡すこともできるらしく、

<p>Title: {$html->input('Post/title', 'size="40" class="classname"')}</p>

でいいんじゃないかということに気づいた。

2007-04-03 追記

やっぱダメだった。inputみたいなフォームの部品に関しては、valueとかidを付けてくれない。$html->image() なんかには使ってもいいかもしれない。

Home

Search
Feeds
Profile
石田@苫小牧市と名乗りつつ札幌の某社に勤務するプログラマ
書いた本
Links

Page Top