Home

memo-space

postgresql.g.hatena.ne.jpつくった

深い意味はありませんが、こっそりPostgreSQLグループ作りました。 今後PostgreSQL方面の話題は、 iakioの日記 - postgresqlグループ で。

ミックさんのSQLパズル:NULLの埋め立て

勝手に添削「PostgreSQL VACUUM FULLせずに不要領域を削除する」

そういう時はdeleteではなくtruncateを使う方法もあります。 truncateはいきなりテーブルを(不要領域を残すことなく)空っぽにするSQLです。

Continue reading

CakePHP日記:requestActionとSecurityコンポーネント

  • 2007-10-26
  • php

なるほど。viewからrequestAction()を呼びだすのか。 なかなかよさそう。 と思ってたらSecurityコンポーネントとの組み合わせでハマってしまいました。

どうやらSecurityコンポーネントのrequireAuthを使ってると、requestAction()が呼ばれた時にセッション側のトークンが書き換えられてしまうので絶対トークンが一致しない様子。うーん困った。

あと、セッションの中にはトークンのキーと同時に有効期限が セットされるんだけど、 Sessionコンポーネントの有効期限がCAKE_SECURITY * CAKE_SESSION_TIMEOUT なのに、トークンの有効期限はCAKE_SECURITYだけで決まっちゃってる気がする。

Pythonで、メソッド定義されたクラスを知る方法

それより、あるオブジェクトのメソッドがどのクラスで定義されているか調べる方法を知りたいなぁ。

と昨日書いたけど、わかった気がする。__dict__を調べればいいんじゃないだろうか。

Continue reading

「すごいリロード対策」ってトランザクショントークンのことだよね

  • 2007-10-22
  • php

いや記事いいんだけど、すごい勢いでブックマークされていることに驚いた。

Continue reading

Pythonで、メソッドがどこで定義されたか外から知る方法

sortするならusort

  • 2007-10-21
  • php

個人的には、sortをするならusort()が好きです。 Perlをはじめ他の言語を使ったことがある人ならそう思うんじゃないかな。

PHPのarray_multisort関数が激便利だったので紹介 : akiyan.com

Continue reading

phpのinclude_pathのカレントディレクトリ

  • 2007-10-15
  • php

require("foo.php")とrequire("./foo.php")って意味違うって知ってました? cliから実行する場合以外はあまり関係無いかもしれませんが。

読み込むファイルはまずカレントのワーキングディレクトリからの相対パスとしてinclude_path で探され、それから、カレントのスクリプトのディレクトリからの相対パスとしてinclude_path で探されます。 (中略)ファイル名が ./ あるいは ../ で始まっている場合は、 カレントのワーキングディレクトリからの相対パスとして探されるのみとなります。 (PHP: include - Manual)

Continue reading

間違ったRuby On Railsのはじめかた

  1. よくあるscaffoldを使ったチュートリアルをやる。
  2. scaffold :modelという一行が何なのか理解できずに悩む。
  3. 2がスタティックメソッドの呼び出しであることを知り、Rubyではクラス定義の中に任意の式を書けることに驚く。
  4. paramssessionは何故@params@sessionではないのか悩む。
  5. Module#attr_internalの存在を知り、気が遠くなる。←今ここ

どうもRubyのコードは苦手だ。

masuidrive on rails ≫ Blog Archive ≫ Railsでアプリを組むのは簡単か?

Railsでアプリを組むのは、PHPやJavaより楽だけど、Ruby/Railsが使えるようになった人間が、アプリを組むのが楽だって言うだけで、Ruby/Railsを覚えるのがPHP/Javaより簡単って訳じゃない。

なるほど。 RailsはWebアプリケーションを作るための便利な黒魔術集といったところか。

フレームワークとしてうんぬんより、script/generateは便利といった印象。 ただしそのscript/generateの使い方をどこで調べたらいいのかよくわからないけど。

PL/Proxyもおもしろいですよ

書こう書こうと思いながら3ヶ月くらい放置していたネタです。 巷ではMySQL Proxyが話題のようなので、 あえて今年のPostgreSQL ConferenceのJoshのプレゼンでもちょっと出ていたPL/Proxyをいじってみました。

Continue reading

今さらFizzBuzz(当然PostgreSQL)

色々考えたけど、まあ許せるのはこのくらいか。

-- スタンダードに
select case
  when i%15=0 then 'FizzBuzz'
  when i%5=0 then 'Buzz'
  when i%3=0 then 'Fizz'
  else i::text end
  from generate_series(1,100)as s(i);


-- ちょっとアグレッシブに(8.2以降)
select coalesce(v15.t, v3.t, v5.t, s.i::text)
  from generate_series(1,100)as s(i)
  left join(
       values(0,'FizzBuzz')) as v15(i,t) on (s.i%15=v15.i)
  left join(
       values(0,'Fizz')) as v3(i,t) on (s.i%3=v3.i)
  left join(
       values(0,'Buzz')) as v5(i,t) on (s.i%5=v5.i)

あ、valuesじゃなくて普通にサブクエリでいいのか。まあvaluesって書いてみたかっただけです。

Smartyのtruncateはfunc_overloadでいいんじゃない

  • 2007-06-15
  • php

ずいぶん前からよく見かける話題だけど、また最近見かけたので。

いちばん手っ取り早いのは、mbstring.func_overloadを設定しちゃうことだと思いますよ。自分でプラグイン書く必要とか無いです。

交換不可能な(ry

ファイルの直リンクを防止する方法をもう少し考えてみる

  • 2007-05-31
  • php

Refererを使わずに直リンクを防止する方法を考えてみます。

元ネタ: cl.pocari.org - PHP の apache_setenv と virtual を利用して,ファイルへの直リンクを防止する

この foo.php のファイル名を時間によって変えるなどすれば,まあ,直リンクを防止することができる……のかな?ちと強引ですが.

つまり、「直リンクを防止する」ことを考えるより「ある一定時間しか有効でないURLを作る」ことを考えれば良いということじゃないでしょうか。

で、foo.phpのファイル名を変えちゃうと、外部からの直リンクは防げても、内部からの普通のリンクを貼る時に困りそうです(それならぶっちゃけ、画像のファイル名そのものを時間によって変えちゃってもいいわけだし)。

なので、時刻をパラメータとして渡す方針で。

フェーズ1

  1. foo.php?t=....のようにfoo.phpにタイムスタンプを渡す
  2. foo.phpの中で$_GET['t']と現在時刻を比較し、n分以上たっていればはじく
  3. でもこれじゃ簡単に偽装されちゃうYO!

なので、フェーズ2

  1. foo.phpにタイムスタンプと、(タイムスタンプ+秘密鍵)のHMACを渡す。
  2. foo.phpの中で、(タイムスタンプ+秘密鍵)のHMACを再計算して、渡ってきたHMACと一致するかチェック。
  3. foo.phpの中で$_GET['t']と現在時刻を比較し、n分以上たっていればはじく

な感じじゃないでしょうか。本当はapache moduleとかで書いた方が楽そうですが。

Home

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

Page Top