MW211 EXIT

devlog
SQL/アクセス修飾子
2012年08月19日
viewの内部で使用するviewにはprivateアクセス修飾子をつけたいものだ。
publicなviewを生成する過程なんだから、非公開でいいじゃんという。
publicなviewとprivateなviewを明示的に選別できれば
制作者の意図がある程度明快になる。
今のところそんな動きはないが、そのうちそういう仕様になってくれないかな。。。
分類:SQL
SQL/define定数
2012年08月18日
SQL文実行や、VIEW定義でdefine定数は使えない。
ま、べた書きの数字にコメントつけろってこった。
分類:SQL
VBS/ショートカットを実行させる方法
2012年08月17日
以下のような感じ。
┌──────────────────────────────────────┐
│Option Explicit                                                             │
├──────────────────────────────────────┤
│Call runShortCut()                                                          │
├──────────────────────────────────────┤
│Sub runShortCut()                                                           │
│    Dim x                                                                   │
│    Set x = CreateObject("Shell.Application")                               │
│    x.ShellExecute "C:\xxxx\xxxx\aaaa.lnk"                                  │
│    Wscript.Sleep(1000)                                                     │
│    x.ShellExecute "C:\xxxx\xxxx\bbbb.lnk"                                  │
│    Set x = Nothing                                                         │
│End Sub                                                                     │
└──────────────────────────────────────┘
分類:Windows
CSS/影付きタイトルの作り方
2012年08月16日
HTML側で、影→本体の順に同じ文言を定義する。
┌──────────────────────────────────────┐
│<div id="titleShadow">タイトル</div>                                        │
│<div id="title">タイトル</div>                                              │
└──────────────────────────────────────┘

本体と影を以下のような感じに定義すればOK。
┌──────────────────────────────────────┐
│div#title,                                                                  │
│div#titleShadow {                                                           │
│    position            :absolute;                                          │
│    top                 :2em;                                               │
│    font-size           :4.0em;                                             │
│    text-align          :center;                                            │
│}                                                                           │
├──────────────────────────────────────┤
│div#title {                                                                 │
│    width               :1000px;                                            │
│    color               :#FFFFFF;                                           │
│}                                                                           │
├──────────────────────────────────────┤
│div#titleShadow {                                                           │
│    width               :997px;                                             │
│    padding-top         :3px;                                               │
│    padding-left        :3px;                                               │
│    color               :#000000;                                           │
│}                                                                           │
└──────────────────────────────────────┘
これは、画面サイズが全体で1000pxの例。
分類:CSS
PostgreSQL/今日まで連続して…(2)
2012年08月15日
この前の命題の続き。
まず、連続日数を算出してから、判定。
これなら速いしすっきりする。
┌──────────────────────────────────────┐
│SELECT 表.キー1,                                                            │
│       表.キー2                                                             │
│    FROM (SELECT 表.キー1,                                                  │
│                 表.キー2,                                                  │
│                 COUNT(*) AS 数                                             │
│              FROM 表                                                       │
│              WHERE 日付 > COALESCE((SELECT MAX(別表名.日付)                │
│                                         FROM 表 AS 別表名                  │
│                                         WHERE 別表名.キー1 =  表.キー1     │
│                                           AND 別表名.キー2 =  表.キー2     │
│                                           AND 別表名.判定  <> TRUE         │
│                                    ),                                      │
│                                    '-infinity'::timestam)                  │
│                AND 表.判定 = TRUE                                          │
│              GROUP BY 表.キー1,                                            │
│                       表.キー2                                             │
│         ) AS 別々表名                                                      │
│    WHERE 数 >= 規定数                                                      │
└──────────────────────────────────────┘

念には念を入れて、MAX()をORDER BYにすると若干速くなる。
┌──────────────────────────────────────┐
│SELECT 表.キー1,                                                            │
│       表.キー2                                                             │
│    FROM (SELECT 表.キー1,                                                  │
│                 表.キー2,                                                  │
│                 COUNT(*) AS 数                                             │
│              FROM 表                                                       │
│              WHERE 日付 > COALESCE((SELECT 別表名.日付                     │
│                                         FROM 表 AS 別表名                  │
│                                         WHERE 別表名.キー1 =  表.キー1     │
│                                           AND 別表名.キー2 =  表.キー2     │
│                                           AND 別表名.判定  <> TRUE         │
│                                         ORDER BY 別表名.日付 DESC          │
│                                         LIMIT 1                            │
│                                    ),                                      │
│                                    '-infinity'::timestam)                  │
│                AND 表.判定 = TRUE                                          │
│              GROUP BY 表.キー1,                                            │
│                       表.キー2                                             │
│         ) AS 別々表名                                                      │
│    WHERE 数 >= 規定数                                                      │
└──────────────────────────────────────┘
分類:PostgreSQL
PostgreSQL/今日まで連続して…(1)
2012年08月14日
毎日一件判定した履歴があって、これがキーごとに混在している表があるとする。
しかもキーが複合キーだったりして。
┌──────────────────────────────────────┐
│1-1 2012/05/31 ○                                                           │
│1-1 2012/05/30 ×                                                           │
│  :                                                                        │
│1-2 2012/05/31 ○                                                           │
│  :                                                                        │
│2-1 2012/05/31 ○                                                           │
│  :                                                                        │
└──────────────────────────────────────┘
ま、こんな感じ。

さて、直近の数日間、連続して○だったもの(キー)を抽出したい場合のSQL文とは?
┌──────────────────────────────────────┐
│SELECT キー1,                                                               │
│       キー2                                                                │
│    FROM (SELECT t1.キー1,                                                  │
│                 t1.キー2,                                                  │
│                 t1.判定                                                    │
│              FROM 表 AS t1                                                 │
│              WHERE         (t1.キー1, t1.キー2, t1.日付)                   │
│                  IN (SELECT t2.キー1, t2.キー2, t2.日付                    │
│                          FROM 表 AS t2                                     │
│                          WHERE t2.キー1 = t1.キー1                         │
│                            AND t2.キー2 = t1.キー2                         │
│                      ORDER BY t2.日付 DESC                                 │
│                      LIMIT 規定数                                          │
│                     )                                                      │
│         ) AS 別表名                                                        │
│    WHERE 判定 = TRUE                                                       │
│    GROUP BY キー1,                                                         │
│             キー2                                                          │
│    HAVING COUNT(*) = 規定数                                                │
└──────────────────────────────────────┘
相関問い合わせの複合キーバージョン。
う、う、う、遅い。
分類:PostgreSQL
SQL/条件の組合せ
2012年08月13日
○=TRUE(一致)、?=UNKNOWN(NULL混在)、×=FALSE(不一致)
    ┌─┐    ┌─┬─┬─┐    ┌─┬─┬─┐
    │!│  &│○│?│×│  OR│○│?│×│
┌─┌─┐┌─┌─┬─┬─┐┌─┌─┬─┬─┐
│○│×││○│○│?│×││○│○│○│○│
├─├─┤├─├─┼─┼─┤├─├─┼─┼─┤
│?│?││?│?│?│×││?│○│?│?│
├─├─┤├─├─┼─┼─┤├─├─┼─┼─┤
│×│○││×│×│×│×││×│○│?│×│
└─└─┘└─└─┴─┴─┘└─└─┴─┴─┘
分類:SQL
Apache/localhostと自身のIPアドレスの違い
2012年08月12日
localhostが127.0.0.1、自身のIPアドレスが192.168.x.xだとして、
サーバ(PHP)からCGI(Cとか)をjQueryのAjaxで呼び出す場合、
組み合わせによって、うまくいかない場合がある。

  ○サーバ=127.0.0.1    CGI=127.0.0.1
  ○サーバ=192.168.x.x  CGI=192.168.x.x
  ×サーバ=127.0.0.1    CGI=192.168.x.x
  ×サーバ=192.168.x.x  CGI=127.0.0.1

127.0.0.1と192.168.x.xには高い壁があるようだ。

なぜだろう。
分類:PHP、jQuery、Apache、【未解決】
Apache/セッションファイル
2012年08月11日
同一ブラウザで同一サイトを見ている場合には、
タブやウインドウがいくつ上がっても、同じセッションファイルを共有する。

だが、それに例外が。

localhost(127.0.0.1)を経由した場合と
自身のIPアドレス(192.168.x.x)を経由した場合とでは、
別のセッションファイルとなるのである。

………、同一サイトじゃないということか。。。
分類:PHP、Apache
Apache/localhostとは
2012年08月10日
Apacheで、「http://localhost/」が「http://127.0.0.1/」を指すのは
「C:¥WINDOWS¥system32¥drivers¥etc¥hosts」とかで定義されているから。
┌──────────────────────────────────────┐
│# localhost name resolution is handled within DNS itself.                   │
│127.0.0.1       localhost                                                   │
│#   ::1         localhost                                                   │
└──────────────────────────────────────┘
っていうか、実はコメントアウトされていて
既定値が上記って話だったりするわけですが。。。
分類:Apache
前へ 1 2 3 次へ