MW211 EXIT

devlog
剰余計算プラス
2012年09月03日
剰余計算で剰余ゼロの場合、割った数が欲しいケースってありますよね。
例えば、3の剰余を求める場合
  1  →  剰余1  →  解1
  2  →  剰余2  →  解2
  3  →  剰余0  →  解3
  4  →  剰余1  →  解1
  5  →  剰余2  →  解2
  6  →  剰余0  →  解3
こんな感じ。
これを行う最適な方法とは?
分類:【未解決】
PostgreSQL/条件でログを削除する
2012年09月02日
年月日時分秒ごとにデータを記録しているログデータについて、
翌日になったらクリアしてから追加していくトリガ関数は以下のような感じ
┌──────────────────────────────────────┐
│DECLARE                                                                     │
│    pl_yyyymmdd CHAR(8);                                                    │
│                                                                            │
│BEGIN                                                                       │
│    SELECT INTO pl_yyyymmdd                                                 │
│                SUBSTR("yyyymmddhhiiss", 1, 8) AS "yyyymmdd"                │
│        FROM 表;                                                            │
│                                                                            │
│    IF TG_OP = 'INSERT' THEN                                                │
│        IF SUBSTR(NEW.yyyymmddhhiiss, 1, 8) <> pl_yyyymmdd THEN             │
│            DELETE FROM 表;                                                 │
│                                                                            │
│            RETURN NEW;                                                     │
│        END IF;                                                             │
│    END IF;                                                                 │
│                                                                            │
│    RETURN NEW;                                                             │
│END;                                                                        │
└──────────────────────────────────────┘
こいつをトリガとして登録すればOK。
┌──────────────────────────────────────┐
│CREATE TRIGGER トリガ                                                       │
│  BEFORE INSERT                                                             │
│  ON 表                                                                     │
│  FOR EACH ROW                                                              │
│  EXECUTE PROCEDURE トリガ関数();                                           │
└──────────────────────────────────────┘
これってINSERTの度に判断するんだろうけど、負荷がかかるのだろうか?

DELETEに代えてTRUNCATE TABLEにしようとしたら、エラーとなった。
┌──────────────────────────────────────┐
│DECLARE                                                                     │
│    pl_yyyymmdd CHAR(8);                                                    │
│                                                                            │
│BEGIN                                                                       │
│    SELECT INTO pl_yyyymmdd                                                 │
│                SUBSTR("yyyymmddhhiiss", 1, 8) AS "yyyymmdd"                │
│        FROM 表;                                                            │
│                                                                            │
│    IF TG_OP = 'INSERT' THEN                                                │
│        IF SUBSTR(NEW.yyyymmddhhiiss, 1, 8) <> pl_yyyymmdd THEN             │
│            TRUNCATE TABLE 表;                                              │
│                                                                            │
│            RETURN NEW;                                                     │
│        END IF;                                                             │
│    END IF;                                                                 │
│                                                                            │
│    RETURN NEW;                                                             │
│END;                                                                        │
└──────────────────────────────────────┘
これからINSERTしようとする表をDDLのレベルでは操作できないようだ。
ま、全件削除ってより、1ヶ月過ぎたのを削除とかが普通かも。
分類:PostgreSQL
jQuery/closest()は便利
2012年08月30日
まずは、それぞれが指し示すもののおさらい。
  ①$(this).parent().parent('tr')
  ②$(this).parents('tr')  または$(this).parents().find('tr')
  ③$(this).closest('tr')
┌──────────────────────────────────────┐
│└tr          ←②                                                          │
│  └td                                                                      │
│    └table                                                                 │
│      └tr    ←①②③                                                      │
│        └td                                                                │
│          └this                                                            │
└──────────────────────────────────────┘
帯に短し(parent()=厳密に指定する必要あり)、
襷に長し(parents()=余計なものも拾ってくる恐れあり)。
closest()さんは便利なのです。

┌──────────────────────────────────────┐
│└tr                                                                        │
│  └某                                                                      │
│    └this                                                                  │
└──────────────────────────────────────┘
なのか
┌──────────────────────────────────────┐
│└tr                                                                        │
│  └某                                                                      │
│    └某                                                                    │
│      └this                                                                │
└──────────────────────────────────────┘
なのか、微妙な時に、parent()じゃ無理だけど、parents()じゃ心もとない。
そんな時にはclosest()さん。
分類:jQuery
jQuery/.attr()と.prop()の違い
2012年08月29日
毎度、毎度、混乱すると「.attr('disabled', 'disabled');」
「.prop('disabled', true);」の違い。

いい加減まとめておかねば、また混乱しそう。

まずjQuery1.6で「.prop()」が追加されたらしい。

inputタグとかでは、「.attr('value')」は初期値(既定値)を取得するけど
「.prop('value')」は入力中の値を取得できるらしい。

ま、これが両者の個性を端的に示す一例ってことだろう。

ま、当初は明確に分離しようとしてたらしいけど反発をくらって
「.attr()」が後方互換を維持することになり、
「.attr()」⊃「.prop()」ってことらしい(だからややこしい)。

基本、HTML属性は「.attr()」、JavaScriptプロパティは「.prop()」って
覚えればいいらしく、「.attr('disabled', 'disabled');」より
「.prop('disabled', true);」が推奨みたい。

う~ん、disabledってHTML属性じゃないのか。。。?

あ、動的に変化するやつ、させるやつは「.prop()」なんだ。

静的=「.attr()」、動的=「.prop()」なのだね、納得。
分類:jQuery
JSON/$.get()で取得…できてんの?
2012年08月28日
┌──────────────────────────────────────┐
│$.getJSON(宛先,                                                             │
│          function(配列) {                                                  │
│          }                                                                 │
│);                                                                          │
└──────────────────────────────────────┘
と書くべきところ、何を勘違いしていたのか以下のように書いていた。
┌──────────────────────────────────────┐
│$.get(宛先,                                                                 │
│      function(配列, status) {                                              │
│      },                                                                    │
│      'json'                                                                │
│);                                                                          │
└──────────────────────────────────────┘
マニュアルそんな構文はない(みたい)。
でも、動くんだよなぁ。


追記:あ、一部のマニュアルに受信データのタイプも指定できるって載ってた。。。
分類:JSON
JSON/$.getJSON()の第二引数
2012年08月27日
┌──────────────────────────────────────┐
│$.getJSON(宛先,                                                             │
│          function(json) {                                                  │
│          }                                                                 │
│);                                                                          │
└──────────────────────────────────────┘
で、いいところ、ご丁寧に以下のように書いていた。
┌──────────────────────────────────────┐
│$.getJSON(宛先,                                                             │
│          {},                                                               │
│          function(json) {                                                  │
│          }                                                                 │
│);                                                                          │
└──────────────────────────────────────┘
そりゃね、リファレンスで正式なのは引数三つのバージョンですから。

で、第二引数って何?キーと値の組み合わせ?

キーと値の組み合わせ?ってことは、JSON?

JSONってことは、コールバックで受け取るJSONデータを疑似れたりするの?

ってことは、空データを定義したりすると、
受け取ったJSONデータを空データと置き換えたりしないの?

って思った心配になったけど、どうやら、
第二引数は宛先のGETパラメータになってくれるものらしい。

だから空データでも問題なかったのか。
分類:JSON
JSON/JSONデータの行方(2)
2012年08月26日
送信側(PHP)はJSON形式で生成して出力。
┌──────────────────────────────────────┐
│echo <<<___JSON___                                                          │
│{                                                                           │
│    "col1":{$num},                                                          │
│    "col2":"{$str}"                                                         │
│}                                                                           │
│                                                                            │
│___JSON___;                                                                 │
└──────────────────────────────────────┘

受信側(JavaScript)は配列として受信。
┌──────────────────────────────────────┐
│$.getJSON(宛先,                                                             │
│          function(配列) {                                                  │
│          }                                                                 │
│);                                                                          │
└──────────────────────────────────────┘
$.getJSON()だと、配列として取得したくれるらしい。
分類:JSON
JSON/JSONデータの行方(1)
2012年08月25日
送信側(JavaScript)はJSON形式で生成してPOST。
┌──────────────────────────────────────┐
│$.post(宛先,                                                                │
│       JSONデータ,                                                          │
│       コールバック関数,                                                    │
│       'json'  ←★                                                         │
│);                                                                          │
└──────────────────────────────────────┘

受信側(PHP)は配列として受信。
┌──────────────────────────────────────┐
│$_POST[配列]                                                                │
└──────────────────────────────────────┘

$.post()でJSON形式だよと宣言(★の部分)しておけば、配列になってくれるらしい。
分類:JSON
PHP/PHPバージョンの取得
2012年08月24日
┌──────────────────────────────────────┐
│phpversion()                                                                │
└──────────────────────────────────────┘
の一択だろう。

でも、他にもいろいろ。

Apache関数を利用する例1。
┌──────────────────────────────────────┐
│preg_replace('/^.* PHP\//', '', apache_get_version())                       │
└──────────────────────────────────────┘

Apache関数を利用する例2。
┌──────────────────────────────────────┐
│preg_match('/(?<=PHP\/)\d(?:\.\d+)*/', apache_get_version(), $v);           │
│$v[0]                                                                       │
└──────────────────────────────────────┘
PHP/Apacheバージョンの取得
2012年08月23日
┌──────────────────────────────────────┐
│apache_get_version()                                                        │
└──────────────────────────────────────┘
上記のApache関数を使うと「Apache/2.2.22 (Win32) PHP/5.3.13」のような
文字列を取得できる。

後は、正規表現で…。
┌──────────────────────────────────────┐
│preg_replace('/^Apache\/| .*$/', '', apache_get_version())                  │
└──────────────────────────────────────┘
→「2.2.22」

┌──────────────────────────────────────┐
│preg_match('/(?<=Apache\/)\d(?:\.\d+)*/', apache_get_version(), $v);        │
│$v[0]                                                                       │
└──────────────────────────────────────┘
→「2.2.22」
分類:PHP
前へ 1 … 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 … 156 次へ