MW211 EXIT

devlog
PostgreSQL/0を除く最小値(1)
2012年05月29日
0を除く最小値を求める方法。
┌──────────────────────────────────────┐
│SELECT COALESCE(MIN(CASE                                                    │
│                        WHEN 列 = 0 THEN NULL                               │
│                        ELSE             列                                 │
│                    END), 0) AS 列                                          │
│    FROM 表                                                                 │
│    GROUP BY キー                                                           │
└──────────────────────────────────────┘
ただし、NOT NULL制約の列にしか使えない。。。
分類:PostgreSQL
SQL/NULLと条件式
2012年05月28日
列がNULLだった場合、以下には該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE 列 > 0;                                              │
└──────────────────────────────────────┘
これはわかる気がする。

で、ほぼ反対の以下にも該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE 列 < 1;                                              │
└──────────────────────────────────────┘
つまり、0ではない。これもわかる。

そして、最初の正反対である以下にも該当しない。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE NOT(列 > 0);                                         │
└──────────────────────────────────────┘
もう、何にも該当しないみたい。

つまり、これでも該当なし。
┌──────────────────────────────────────┐
│SELECT * FROM 表 WHERE (列 > 0) OR  (NOT(列 > 0));                          │
└──────────────────────────────────────┘

NULLについては、WHERE句に列を指定した時点で負けみたいだね。
分類:SQL
PostgreSQL/関数実行
2012年05月27日
pgAdminとかでSQL文を発行して関数を実行する方法
┌──────────────────────────────────────┐
│SELECT 関数();                                                              │
└──────────────────────────────────────┘
え?SELECT?
分類:PostgreSQL
PHP/private宣言忘れ
2012年05月23日
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
「$this->変数」の場合、「public」や「private」が宣言されていないと
エラー(Notice)になる…、と思っていたのだが、参照(echoとか)は確かにエラーとなる。
しかし、代入する分にはエラーとならない。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│//private $変数;                                                            │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
しかも、代入して以降は参照もできてしまう。
なんと、外部からも参照できてしまうのだ。
つまり、下記のようにpublic宣言したのと同じような動きとなるわけだ。
┌──────────────────────────────────────┐
│class クラス {                                                              │
│  public $変数;                                                             │
│  public function メソッド() {                                              │
│    $this->変数 = '値';                                                     │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
てっきり、エラー(Notice)で警告してくれるものだとばかり思っていたから
かなり意外だった(気をつけなければ)。
分類:PHP
(無題)
2012年05月22日
Go Fu Fu No Hi
PostgreSQL/地域の設定
2012年05月21日
「CREATE DATABASE」を行う時、以下を指定することにより地域を設定できる。
┌──────┬─────────┐
│LC_COLLATE  │並替順            │
├──────┼─────────┤
│LC_CTYPE    │大文字小文字の区別│
├──────┼─────────┤
│LC_MESSAGES │メッセージ        │
├──────┼─────────┤
│LC_MONETARY │通貨書式          │
├──────┼─────────┤
│LC_NUMERIC  │数字書式          │
├──────┼─────────┤
│LC_TIME     │日時書式          │
└──────┴─────────┘
「C」を設定すると、地域を設定しないのと同等になる。

「ja」(日本語)とかを設定すると、並替など、
その言語(日本語)に特化した機能となるが、その分遅かったり、
他言語には影響がなかったりする。

とりあえず「C」(設定なし)としておく方が無難か。
分類:PostgreSQL
jQuery/ツリー開閉機能
2012年05月20日
HTML側で以下のような感じで、プラス・マイナスアイコン(img)と、
開閉領域(div)を定義してあげる。
┌──────────────────────────────────────┐
│└<img id="T1" src="minus.jpg"/>親<br/><div id="_T1" style="display:block;">│
│  └子<br/></div>                                                           │
└──────────────────────────────────────┘

そして、jQuery側では以下のようにtoggleメソッドを定義してあげればよい。
┌──────────────────────────────────────┐
│$('img').toggle(                                                            │
│     function() {                                                           │
│         $(this).attr('src', 'minus.jpg');                                  │
│         $('#_' + $(this).attr('id')).css('display','block');               │
│     },                                                                     │
│     function() {                                                           │
│         $(this).attr('src', 'plus.jpg');                                   │
│         $('#_' + $(this).attr('id')).css('display','none');                │
│     }                                                                      │
│);                                                                          │
└──────────────────────────────────────┘

ただ、toggleメソッドは頭が固くて初期表示時に開閉が混在していると役に立たない。
ってことで、以下のようにif文で地道にやるのも全然悪くない。
┌──────────────────────────────────────┐
│$('img').click(function() {                                                 │
│    if ($(this).attr('src') == 'plus.jpg') {                                │
│         $(this).attr('src', 'minus.jpg');                                  │
│         $('#_' + $(this).attr('id')).css('display','block');               │
│    } else {                                                                │
│         $(this).attr('src', 'plus.jpg');                                   │
│         $('#_' + $(this).attr('id')).css('display','none');                │
│    }                                                                       │
│});                                                                         │
└──────────────────────────────────────┘
分類:jQuery
セッション情報の盗み見を試みたが…
2012年05月19日
┌──────────────────────────────────────┐
│session_start();                                                            │
│var_dump($_SESSION);                                                        │
└──────────────────────────────────────┘
上記のようなphpソースを実行させれば、セッション情報が表示できるはず。
だったら、これを自分のところに送信させれば悪用できるんじゃない?と思った。

例えば、どこかのサイトにログインしてセッション情報が生成されていた時に
これを使ってそのセッション情報を取得すれば
そのサイトになりすましでログインして…みたいなことができてしまうのでは…
というか、そんなことされたら怖いなと思った。

でも、よく考えてみると、ここで表示されるセッション情報の内容は
これを仕込んだサーバのセッション情報であり、
他サーバのセッション情報でなく、それは取得できないのであった。
めでたし、めでたし
HTML/文字列の表示の不思議
2012年05月18日
なんだかわからんが、「-」が混じってるとそこで改行されしまうんだよね。

音節の区切りだからなんだろうけど…。

他にこういう文字ってないのかな?

対処法(改行させない方法)としては
「div {white-space:nowrap;}」みたいなスタイルにするとからしい。
分類:HTML
UTF-8/マルチバイト文字の長さ
2012年05月17日
マルチバイト文字(日本語文字)について、
「SHIFT_JIS」は「2バイト」、「UTF-8」は「3バイト」…などと
誤って覚えちゃダメです。
UTF-8のマルチバイト文字は(一文字当たり)、「1バイト~4バイト」なのです。

各バイトの先頭ビット辺りにバイト長の識別子が付加され、
その残りで文字を識別する。
┌────┬──────────────────┐
│1バイト │0_______                            │
├────┼──────────────────┤
│2バイト │110_____ 10______                   │
├────┼──────────────────┤
│3バイト │1110____ 10______ 10______          │
├────┼──────────────────┤
│4バイト │11110___ 10______ 10______ 10______ │
└────┴──────────────────┘

ざっとこんな感じ(なのか?)
┌──────────────────┐  ┌─────────────┐
│0AAAAAAA                            │→│                  0AAAAAAA│
├──────────────────┤  ├─────────────┤
│110AAAAA 10BBBBBB                   │→│         00000AAA AABBBBBB│
├──────────────────┤  ├─────────────┤
│1110AAAA 10BBBBBB 10CCCCCC          │→│         AAAABBBB BBCCCCCC│
├──────────────────┤  ├─────────────┤
│11110AAA 10BBBBBB 10CCCCCC 10DDDDDD │→│000AAABB BBBBCCCC CCDDDDDD│
└──────────────────┘  └─────────────┘

なにかとサニタイズで話題の「/」ですが…。

「/」は「0x2F」なわけだが、以下の四つはすべて「0x2F」=「/」を表すことになる。
上記の法則に照らし合わせてみれば、以下の様々なパターンが該当する。
┌──────┬──────────────────┬
│2F          │00101111                            │
├──────┼──────────────────┼
│C0 AF       │11000000 10101111                   │
├──────┼──────────────────┼
│E0 80 AF    │11100000 10000000 10101111          │
├──────┼──────────────────┼
│F0 80 80 AF │11110000 10000000 10000000 10101111 │
└──────┴──────────────────┴
                                      ┬──────────────────┐
                                      │                           _0101111 │①
                                      ┼──────────────────┤
                                      │                  ___00000 __101111 │②
                                      ┼──────────────────┤
                                      │         ____0000 __000000 __101111 │③
                                      ┼──────────────────┤
                                      │_____000 00000000 00000000 __101111 │④
                                      ┴──────────────────┘

で、①②③は「bin2hex()」で「/」に変換できたが、④は変換できなかった。
「/」を「hex2bin()」で変換すると「2F」となった(最短優先みたい)。
分類:文字コード
前へ 1 … 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 … 156 次へ