MW211 EXIT

devlog
jQuery/submitボタン
2012年01月30日
「id」に「submit」という名称をふったボタンなどをクリックすると
submitが行われる処理は以下のように書ける。
┌──────────────────────────────────────┐
│$("#submit").click(function() {                                             │
│  $(this).parents("form").submit();                                         │
│});                                                                         │
└──────────────────────────────────────┘

「parents()」は直系の親をすべて遡ってチェックしてくれるので
引数に検索条件である「form」タグを指定すれば、直系の親のformにぶちあたる。
#formは入れ子ができないので、自身の直系の親のformは一つだけである。
┌──────────────────────────────────────┐
│body┬form┬button                                                          │
│    │    └button                                                          │
│    ├form─button                                                          │
│    └form─button                                                          │
└──────────────────────────────────────┘

でも、実際のところ「id」を直接指定した方が処理は速いので、
「form」タグに「id」を割り振ってしまう方が実用的かもしれない。
┌──────────────────────────────────────┐
│$("#submit").click(function() {                                             │
│  $("#form").submit();                                                      │
│});                                                                         │
└──────────────────────────────────────┘

後者だと、「id」の記述ミスに気をつけるとか、命名規則とか、
ちょっとめんどくさいのだが。
分類:jQuery
どっち?/書込のタイミング
2012年01月29日
何らかの文書を編集後、「保存」を実行し、データを保存する。
「保存」を実行せずに終了すると、データは保存されない。

これは、(処理速度の速い一時記憶装置へ逐次記録して)
処理速度の遅い永久記憶装置への書き込み回数を極力少なくしようという
制約から来ているのだと思うが
もうコンピュータ操作のルールとして広く浸透している感がある。

当然ながら、現実社会では(紙に)書いた瞬間に保存される。
「保存」処理を行ってからノートを閉じるなんてことはしない。

でも、前者のルールに慣れてしまえば、逐次保存処理が行われたりすると
勝手にデータを破壊されるようで危なっかしくてかなわない。
#そんなダンプツールをいじるときは冷や冷やする。

現実社会と同様の処理の流れとすれば操作性としては感覚的にわかりやすいが
必ずしもそれが便利だとは限らず、
コンピュータ世界の(大多数の)流儀に従ったシステムの方が
(他で慣れているので)逆に感覚的にわかりやすい場合もある。

ただし、コンピュータ世界のローカルルールを押しつけるというのは
如何なものかというのものある。

例えば、現実社会と同じように逐次記録するけど、
UNDO機能というやり直し機能が精巧に出来ていて、やり直しが効く、
保存していない状態に戻れるというのであれば、両者のいいとこ取りのような感じだ。

ただし、それでも「保存」処理に慣れてしまっていれば、
UNDOすらめんどくさいとなる。

生まれながらにそのシステムに慣れてしまえばそれが正義になるのだろう。
分類:設計、どっち?
どっち?/幹番+枝番で一意vs枝番のみで一意
2012年01月28日
「1年1組」と「2年1組」は別のクラスだ。

「1組」という名称が同じでもだ。

「年」+「組」で一意だからだ。

ただ、「1年11組」と「2年21組」としてしまえば(1学年が9組以下という前提で)
組だけで一意に判別することができる。

「11組」は学校に一つだけの組だからだ。

ってなると、「年」って何の意味があるの?ってことになる。

データベースの世界で、枝番を自動採番する主キーにすればこれと同じことが起きる。

でも、便利なことは便利だ。
いちいち二つ以上のキーで連結しなくてもよい。

枝番はなにもきっちり前詰めじゃなくてよく、スペースを大きく使ってよいってことなら
これもアリかもしれない。
分類:設計、どっち?
どっち?/入力エラーチェック
2012年01月27日
入力エラーチェックは入力直後のクライアント側におけるチェックと
データベース等に書き込む直前のサーバ側におけるチェックがある。

前者はJavaScript、後者はPHP等による処理ということになろう。

後者の方がより書き込む処理に近いので安全であるといえる。

しかし、UIの観点からは前者の方がやさしい。
入力した内容が誤っていてもそのまま画面に残っているからだ。

後者であっても、入力した内容を引き継げばそれは実現できるのだが
ちょっと煩雑な気がする。

もちろん前者だけではチェックに限界がある場合がある。
例えば、画面に表示されていない情報をデータベースに問い合わせなければ
ならない場合などは、通常のJavaScriptでは無理だ。

しかし、Ajaxを使えばそれは克服できそうだ。
分類:設計、どっち?
どっち?/LEFT JOINで名称取得vs都度名称取得
2012年01月26日
データベースでコードと名称が対になっているサブテーブルがあった場合、
メインテーブルを参照する時にLEFT JOINする方法と、
その時はLEFT JOINしないで後で都度サブテーブルを参照する方法がある。

前者はLEFT JOINができるデータベースシステムならではの方法で、
後者は単なるシーケンシャルファイルでもできる方法だ。

前者と後者の大きな違いは、ずばり、抽出と並び替えだ。

前者の場合、LEFT JOINした先の名称でも抽出や並び替えができてしまう。
分類:どっち?
設計/基点の違い
2012年01月25日
ドリー・ファンク・ジュニアの父は、ドリー・ファンク・シニアだが、
ムーミンパパの子供はムーミン子ではなく、ムーミンだ。

両者は基点違うのだろう。

前者は父と子の間に、見えない基点があって、そこからの距離で決まっている。
「-1」(子)と「1」(父)の間に「0」がある感じだ。

一方、後者はあくまで基点は子で、「1」(父)と「0」(本人)の関係だ。

結構これがごっちゃになるケースというのはあるので注意が必要だ。
#「0」オリジン、「1」オリジンの違いとも似ている。
分類:設計
JSON/配列の階層
2012年01月24日
┌──────────────────────────────────────┐
│{"a":                                                                       │
│  {"b":                                                                     │
│    {"c":"z"}                                                               │
│  }                                                                         │
│}                                                                           │
└──────────────────────────────────────┘
みたいな階層になっているデータをjsonという変数に格納した場合、
「c」の値「z」を取得する方法は、以下のように「.」をつなげて書く。
┌──────────────────────────────────────┐
│json.a.b.c                                                                  │
└──────────────────────────────────────┘
簡単、簡単。

では「b」の部分を変数にしたい場合は?
┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a.x.c                                                                  │
└──────────────────────────────────────┘
これではダメ。

┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a. + x + .c                                                            │
└──────────────────────────────────────┘
もちろんん、こんなのもダメ。

う~ん、こうならいけた!
┌──────────────────────────────────────┐
│var x = "b";                                                                │
│json.a[x].c                                                                 │
└──────────────────────────────────────┘

ってことは、ハナからこうしときゃいいってこと?
┌──────────────────────────────────────┐
│json["a"]["b"]["c"]                                                         │
└──────────────────────────────────────┘
分類:JSON
JSON/注意点
2012年01月23日
・キーは必ず「"」で囲う
例)×{a:"b"}→○{"a":"b"}

・不要な「,」は書かない
例)×{"a":"b","c":"d",}→○{"a":"b","c":"d"}
分類:JSON
PHP/年月日チェック(日付チェック)
2012年01月22日
年月日の妥当性を一発でチェックする関数は「checkdate()」、こんな感じ。
┌──────────────────────────────────────┐
│if (checkdate($月, $日, $年)) {                                             │
│  echo '正しい年月日です';                                                  │
│} else {                                                                    │
│  echo '正しい年月日ではありません';                                        │
│}                                                                           │
└──────────────────────────────────────┘
引数が「月、日、年」の順であることに注意。

また、数値型を想定しているので文字型を引数に指定するとエラー(Warning)となる。
よって、得体のしれないものをチェックしたい場合は、
「intval()」で囲った方がいいかも。
┌──────────────────────────────────────┐
│if (checkdate(intval($?), intval($?), intval($?))) {                     │
│  echo '正しい年月日です';                                                  │
│} else {                                                                    │
│  echo '正しい年月日ではありません';                                        │
│}                                                                           │
└──────────────────────────────────────┘
分類:PHP
JavaScript/alertダイアログ
2012年01月21日
JavaScriptにて「alert()」でダイアログを表示した場合の
ブラウザによる挙動の違いは以下の通り。

・InternetExplorer
→タイトルは「Windows Internet Explorer」

・Firefox
→タイトルは特になし

・Chrome
→タイトルは「(URL) says: のページ」

・Safari
→タイトルは特になし
→メッセージ上部に「(URL)」を表示

・Opera
→タイトルは「JavaScript」
→メッセージ上部に「<(URL)>」を表示

※(URL)は現在開いているページのURL
分類:ブラウザ、JavaScript
前へ 1 2 3 次へ