MW211 EXIT

devlog
C言語/全角判定
2013年01月10日
Shift_JISの場合、1バイト目(上位バイト)が
「0x81~0x9F、0xE0~0xFC」であれば全角文字とみてよい。
分類:C/C++
C言語/文字チェック
2013年01月09日
PHPとかJavaScriptとかの今風の言語だと、正規表現で一発で判定できたりするのだが、
C言語だと地道に一文字ずつチェックしていくしか他ない。

一文字チェック関数をまとめた。
┌─────┬────────────────────────────────┐
│isalnum() │英数字(0~9[0x30~0x39]、A~Z[0x41~0x5A]、a~z[0x61~0x7A])    │
├─────┼────────────────────────────────┤
│isalpha() │英字(A~Z[0x41~0x5A]、a~z[0x61~0x7A])                        │
├─────┼────────────────────────────────┤
│isdigit() │数字(0~9[0x30~0x39])                                          │
├─────┼────────────────────────────────┤
│islower() │英小文字(a~z[0x61~0x7A])                                      │
├─────┼────────────────────────────────┤
│isupper() │英大文字(A~Z[0x41~0x5A])                                      │
├─────┼────────────────────────────────┤
│isxdigit()│16進(0~9[0x30~0x39]、A~F[0x41~0x46]、a~f[0x61~0x66])      │
└─────┴────────────────────────────────┘
┌─────┬────────────────────────────────┐
│isascii() │ASCII文字(0x00~0x7F)                                           │
├─────┼────────────────────────────────┤
│iscntrl() │制御文字(0x00~0x1F、0x7F)                                      │
├─────┼────────────────────────────────┤
│isgraph() │表示可能文字(0x21~0x7E)                                        │
├─────┼────────────────────────────────┤
│isprint() │印字可能文字(0x20~0x7E)                                        │
├─────┼────────────────────────────────┤
│ispunct() │区切文字(0x00~0x1F、0x20、0x7F)                                │
├─────┼────────────────────────────────┤
│isspace() │空白文字                                                        │
│          │→0x09(\t)、0x0A(\n)、0x0B(\v)、0x0C(\f)、0x0D(\r)、0x20( )     │
└─────┴────────────────────────────────┘
判定が真の時に0以外を返却し、偽の時は0を返却するというややこしい仕様だが、
これは速度向上のためらしい。

とにかく、該当しなかったら0ということでエラーにしていきゃいいと覚えるか。
といっても複合条件とか絡んでくると0以外で判定する場面は多々ありそう。
分類:C/C++
jQuery/表示・非表示と対象以外の指定
2013年01月08日
例えば、class属性が「xyz」の列(tdタグ)を表示・非表示させる場合は、
以下のような感じで、toggle()メソッドを使う。
┌──────────────────────────────────────┐
│$('td.xyz').toggle();                                                       │
└──────────────────────────────────────┘

では、その列以外を対象としたい場合には?

こんな感じ。
┌──────────────────────────────────────┐
│$('td:not(.xyz)').toggle();                                                 │
└──────────────────────────────────────┘
「:not()」の使い方をマスタすればいろいろ使えそうだ。
分類:jQuery
JavaScript/配列合体
2013年01月07日
配列二つを合体させる方法。
┌──────────────────────────────────────┐
│var 新配列 = 旧配列壱.concat(旧配列弐);                                     │
└──────────────────────────────────────┘
これだと「旧配列壱」の後ろに「旧配列弐」が追加される。
分類:JavaScript
JavaScript/split()メソッド
2013年01月06日
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(',');                                               │
└──────────────────────────────────────┘
split()メソッドは、指定した区切文字で配列に分割してくれる便利なメソッドだ。

で、区切文字を複数指定したい場合は?「,」と「 」とか。
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(/,| /);                                             │
└──────────────────────────────────────┘
こんな感じで正規表現を使う。

ちなみに第二引数で配列の上限数を指定できる。
┌──────────────────────────────────────┐
│var 配列 = 文字列.split(',', 3);                                            │
└──────────────────────────────────────┘
これだと分割されて四つ目以降の配列となる予定だったものは切り捨てられる。
あらかじめ、分割数が想定される場合には使えるかも。
分類:JavaScript
JavaScript/日時入力
2013年01月05日
まずは日付チェック。「年、入力値が「YYYY-MM-DD HH:II」形式の文字列で、
日時型のデータとして取り込みたい場合は。
┌──────────────────────────────────────┐
│var ymdhi = 入力値.split(/-| |:/, 5);                                       │
│if (ymdhi.length == 5) {                                                    │
│    if ((isYmd(ymdhi[0], ymdhi[1], ymdhi[2]))                               │
│     && (isHis(ymdhi[3], ymdhi[4], 0)))                                     │
│    {                                                                       │
│        出力値 = new Date(ymdhi[0],                                         │
│                          ymdhi[1] - 1,                                     │
│                          ymdhi[2],                                         │
│                          ymdhi[3],                                         │
│                          ymdhi[4],                                         │
│                          0);                                               │
│    }                                                                       │
│}                                                                           │
└──────────────────────────────────────┘
「isYmd()」と「isHis()」は先日作成したユーザ関数なので、なくてもよいかも。
ま、「new Date()」のような感じになるってことですな。
月を「0~11」で指定しなきゃならない以外は、違和感はないかも。
分類:JavaScript
JavaScript/日時チェック
2013年01月04日
まずは日付チェック。「年、月、日」を引数に指定すればtrue/falseを返却。
月はJavaScriptの世界の「0~11」ではなく現実世界の「1~12」で対応。
┌──────────────────────────────────────┐
│function isYmd(yyyy, mm, dd)                                                │
│{                                                                           │
│    var dt = new Date(yyyy, mm - 1, dd);                                    │
│    if (isNaN(dt))                   {return false;}                        │
│    if (dt.getFullYear() != yyyy   ) {return false;}                        │
│    if (dt.getMonth()    != mm  - 1) {return false;}                        │
│    if (dt.getDate()     != dd     ) {return false;}                        │
│    return true;                                                            │
│}                                                                           │
└──────────────────────────────────────┘
例)isYmd(2012,2,29)  →  true
    isYmd(2013,2,29)  →  false

続いては時刻チェック。ベタです。
「時、分、秒」を引数に指定すればtrue/falseを返却。
ま、見てのとおり24時というのはアウトです。
┌──────────────────────────────────────┐
│function isHis(hh, ii, ss)                                                  │
│{                                                                           │
│    if (isNaN(hh) || (hh < 0) || (hh > 23)) {return false;}                 │
│    if (isNaN(ii) || (ii < 0) || (ii > 59)) {return false;}                 │
│    if (isNaN(ss) || (ss < 0) || (ss > 59)) {return false;}                 │
│    return true;                                                            │
│}                                                                           │
└──────────────────────────────────────┘

そんなわけで、実はここまでもってくるのが本当は大変なのです。
ま、屏風から虎を出してくれりゃ簡単に退治できますよって話で。

さ、次は馬を川まで連れて来なければ。
分類:JavaScript
JavaScript/日時いろいろ
2013年01月03日
現在日時を求める。
┌──────────────────────────────────────┐
│変数 = new Date();                                                          │
└──────────────────────────────────────┘
そいつを「YYYY-MM-DD HH:II:SS」形式の文字列にする。
┌──────────────────────────────────────┐
│  変数.getFullYear()                                                        │
│+ "-" + ("0" + (変数.getMonth() + 1)).slice(-2)                             │
│+ "-" + ("0" + 変数.getDate()       ).slice(-2)                             │
│+ " " + ("0" + 変数.getHours()      ).slice(-2)                             │
│+ ":" + ("0" + 変数.getMinutes()    ).slice(-2)                             │
│+ ":" + ("0" + 変数.getSeconds()    ).slice(-2)                             │
└──────────────────────────────────────┘
前後にずらすのまとめ。
┌──────┬───────────────────────────────┐
│一年前にする│変数.setFullYear(変数.getFullYear() - 1);                     │
│一年後にする│変数.setFullYear(変数.getFullYear() + 1);                     │
├──────┼───────────────────────────────┤
│一月前にする│変数.setMonth(変数.getMonth() - 1);                           │
│一月後にする│変数.setMonth(変数.getMonth() + 1);                           │
├──────┼───────────────────────────────┤
│一日前にする│変数.setDate(変数.getDate() - 1);                             │
│一日後にする│変数.setDate(変数.getDate() + 1);                             │
├──────┼───────────────────────────────┤
│一時前にする│変数.setHours(変数.getHours() - 1);                           │
│一時後にする│変数.setHours(変数.getHours() + 1);                           │
├──────┼───────────────────────────────┤
│一分前にする│変数.setMinutes(変数.getMinutes() - 1);                       │
│一分後にする│変数.setMinutes(変数.getMinutes() + 1);                       │
├──────┼───────────────────────────────┤
│一秒前にする│変数.setSeconds(変数.getSeconds() - 1);                       │
│一秒後にする│変数.setSeconds(変数.getSeconds() + 1);                       │
└──────┴───────────────────────────────┘
分類:JavaScript
PostgreSQL/制約とかのまとめ
2013年01月02日
制約とかをまとめてみた。
┌──────┬──────┬──────┬─┬─┬─────────────┐
│    分類    │            │ キーワード │表│列│         関連事項         │
├──────┼──────┼──────┼─┼─┼─────────────┤
│既定値      │既定値      │DEFAULT     │-│○│                          │
├──────┼──────┼──────┼─┼─┼─────────────┤
│            │検査制約    │CHECK       │○│△│                          │
│            ├──────┼──────┼─┼─┼─────────────┤
│制約        │非NULL制約  │NOT NULL    │-│○│PRIMARY KEY               │
│            ├──────┼──────┼─┼─┼─────────────┤
│            │一意性制約  │UNIQUE      │○│△│PRIMARY KEY、UNIQUE INDEX │
├──────┼──────┼──────┼─┼─┼─────────────┤
│            │主キー制約  │PRIMARY KEY │○│-│                          │
│キー        ├──────┼──────┼─┼─┼─────────────┤
│            │外部キー制約│FOREIGN KEY │○│-│                          │
├──────┼──────┼──────┼─┼─┼─────────────┤
│インデックス│インデックス│INDEX       │○│-│PRIMARY KEY、UNIQUE INDEX │
└──────┴──────┴──────┴─┴─┴─────────────┘
分類:PostgreSQL
前へ 1 2 次へ