MW211 EXIT

devlog
Highchats/Highcharts.dateFormat()における書式
2012年09月24日
情報がないから地道に調べてみた。
┌─┬───────┬────────────────────────────┐
│%A│曜日(フル桁)  │Sunday、Monday、Tuesday、Wednesday、Thursday、Friday、  │
│  │              │Saturday                                                │
├─┼───────┼────────────────────────────┤
│%a│曜日(略称)    │Sun、Mon、Tue、Wed、Thu、Fri、Sat                       │
├─┼───────┼────────────────────────────┤
│%B│月名(フル桁)  │January、February、March、April、May、June、July、      │
│  │              │August、September、October、November、December          │
├─┼───────┼────────────────────────────┤
│%b│月名(略称)    │Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、 │
│  │              │Dec                                                     │
├─┼───────┼────────────────────────────┤
│%d│日(2桁)       │01~31                                                  │
├─┼───────┼────────────────────────────┤
│%e│日(1~2桁)    │1~31                                                   │
├─┼───────┼────────────────────────────┤
│%H│時(2桁)       │00~24                                                  │
├─┼───────┼────────────────────────────┤
│%I│              │                                                        │
├─┼───────┼────────────────────────────┤
│%L│              │                                                        │
├─┼───────┼────────────────────────────┤
│%l│              │                                                        │
├─┼───────┼────────────────────────────┤
│%M│              │                                                        │
├─┼───────┼────────────────────────────┤
│%P│午前午後(小)  │am、pm                                                  │
├─┼───────┼────────────────────────────┤
│%p│午前午後(大)  │AM、PM                                                  │
├─┼───────┼────────────────────────────┤
│%m│月(2桁)       │01~12                                                  │
├─┼───────┼────────────────────────────┤
│%S│秒(2桁)       │00~59                                                  │
├─┼───────┼────────────────────────────┤
│%Y│西暦年(4桁)   │0000~9999                                              │
├─┼───────┼────────────────────────────┤
│%y│西暦年(下2桁) │00~99                                                  │
└─┴───────┴────────────────────────────┘
HTML/【未解決】空のGETパラメータ
2012年09月23日
URI上のGETパラメータを空にしても大丈夫なのか?

「index.php?a=1&b&c=3」の「b」みたいな感じで。

「isset($_GET['b'])」で判定できるが、これが正しい形なのかちょっと不安。

「b=true」とかいちいち書くのがめんどうな時に使えそうだが、
ブラウザによってはダメだったりしないのかなぁ?
分類:HTML、【未解決】
HTML/空のspan
2012年09月22日
┌──────────────────────────────────────┐
│<td><span><br/></span></td>                                                 │
└──────────────────────────────────────┘
上記みたいにHTMLに仕込んでおいて、下記のようにそこに文字を表示させる。
┌──────────────────────────────────────┐
│$('span').html('出現');                                                     │
└──────────────────────────────────────┘
こんな場面に遭遇することはないだろうか?

でも、上記の「<span></span>」はHTMLの文法上よくないらしく
HTML Validator様には「警告」をいただくことになる。
中身のないspanはよろしくないのだ。

でもね、大人の事情ってのがあるのだよ、ってことで、こんな風にしてごまかしてみた。
┌──────────────────────────────────────┐
│<td><span><br/></span></td>                                                 │
└──────────────────────────────────────┘
でも、これって一部ブラウザ(IE8とか)で改行されてしまったりする。

こういうのは以下が正しいんだよ、っていう人とはお友達になれないだろう。
┌──────────────────────────────────────┐
│$('td').html('出現');                                                       │
└──────────────────────────────────────┘
spanの中に出したいんだもん。

なんかいい方法はないものやら。
#ご指摘は「エラー」じゃなくて「警告」だから、
  そこら辺の事情はわかってらっしゃるんですかね、HTML Validatorさん
分類:HTML、【未解決】
正規表現/先頭部分のみ置換
2012年09月21日
先頭に0以上の半角スペースが並んでいる文字列について、
先頭の部分の半角スペース二つを全角スペースに置換したい。
もちろん先頭以外の半角スペースは対象外。
(以下、全角スペースを△で表記)
・「   abc」       →○「△ abc」
・「     abc」     →○「△△ abc」
・「   abc  def  」→○「△ abc  def  」
・「   abc  def  」→×「△ abc△def△」
これって、正規表現だけで実現可能なもんなのかね?
分類:正規表現、【未解決】
JavaScript/コールバック関数の変数スコープ
2012年09月20日
以下のようにコールバック関数にグローバル的な変数valueを引き渡すことは
直書きだと可能だ。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              function(json) {                                              │
│                  alert(value);                                             │
│              }                                                             │
│    );                                                                      │
│}                                                                           │
└──────────────────────────────────────┘

しかし、コールバック関数を外に出すと、引き渡すことはできない。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              sub                                                           │
│    );                                                                      │
│}                                                                           │
├──────────────────────────────────────┤
│function sub(json) {                                                        │
│    alert(value);                                                           │
│}                                                                           │
└──────────────────────────────────────┘

本格的にグローバル変数にしてしまえばなんとでもなるが、
安易な濫用は避けたいところ。

ってことで、妥協案は以下の通りか。
┌──────────────────────────────────────┐
│function main() {                                                           │
│    var value = 1;                                                          │
│    $.getJSON(url,                                                          │
│              function(json) {                                              │
│                  sub(json, value);                                         │
│              }                                                             │
│    );                                                                      │
│}                                                                           │
├──────────────────────────────────────┤
│function sub(json, value) {                                                 │
│    alert(value);                                                           │
│}                                                                           │
└──────────────────────────────────────┘
コールバック関数に長々と記述するのを避けることはできる。

もっといい方法があるんだろうな、きっと。
分類:JavaScript、jQuery
CSS/自動改行
2012年09月18日
tdタグとかに適当に文字を出力して、いい感じに改行して欲しい場合、
その指定が結構ややこしいことに気づいた。

結論から言えば、以下の通り。
┌──────────────────────────────────────┐
│td {                                                                        │
│    white-space         :normal;                                            │
│    word-break          :break-all;                                         │
│}                                                                           │
└──────────────────────────────────────┘
Firefox向けに「word-break:break-all;」も付けてやんないとダメみたい。
分類:CSS
PostgreSQL/列幅縮小
2012年09月17日
例えば16バイトの文字列を8バイトとする場合は、以下のような感じ。
┌──────────────────────────────────────┐
│UPDATE 表                                                                   │
│    SET 列 = SUBSTR(列, 1, 8);                                              │
├──────────────────────────────────────┤
│ALTER TABLE 表                                                              │
│    ALTER COLUMN 列                                                         │
│    TYPE character varying(8);                                              │
└──────────────────────────────────────┘
UPDATE文で事前にデータを切り捨てておけばスムーズに移行できる。

もちろん、サイズを大きく変更すれば列幅拡大ができる。
この場合は、当然ながら切り捨ては不要だ。
分類:PostgreSQL
jQuery/append()メソッドの要素指定の罠
2012年09月16日
┌──────────────────────────────────────┐
│.append($('<input>').prop('type','hidden'))                                 │
└──────────────────────────────────────┘
とかで、hidden属性とかを追加する訳だが、
セレクタのタグがいらねぇんじゃね?どうせタグ要素を指定するんだし、
とか思い、タグを取っ払った。
┌──────────────────────────────────────┐
│.append($('input').prop('type','hidden'))                                   │
└──────────────────────────────────────┘
するとsubmit時、他のPOST項目がクリアされてしまった。

大変だこりゃ(もちろん元に戻した)。

どういう仕組みなんだろう?
分類:注意、jQuery
jQuery/値を設定する場合の罠
2012年09月15日
┌──────────────────────────────────────┐
│.append($('<input>').prop('type', 'hidden')                                 │
│                    .prop('name', 'command')                                │
│                    .val(xyz)                                               │
│)                                                                           │
└──────────────────────────────────────┘
上記のような書き方は、以下のような書き方で代用できそうな気がする。
┌──────────────────────────────────────┐
│.html('<input type="hidden" name="command" value="' + xyz + '"/>')          │
├──────────────────────────────────────┤
│.append('<input type="hidden" name="command" value=" + xyz + '"/>')         │
└──────────────────────────────────────┘
こっちの方がHTML文に近いからわかりやすいし…。

実は怖い落とし穴があるのです。

変数xyzに「"」とかが入った場合。

サニタイズしていないので、valueに「"」が入らないのです。

ってことで、前者を使う方がいいみいたい。
但し、変な値が入らない場合は後者の方がわかりやすいかも。
とにかく、valueは文字列結合なんか使わないで、val()を使いましょうって話。
分類:注意、jQuery
jQuery/[0]を使ってなんとかやってたよ改善集(4)
2012年09月14日
┌──────────────────────────────────────┐
│$('tbody')[0].rows.length                                                   │
└──────────────────────────────────────┘
  ↓
┌──────────────────────────────────────┐
│$('tbody').children('tr').length                                            │
└──────────────────────────────────────┘
テーブルの行数を取得するには、children()を使うといいかも。
「tbody」の直下は「tr」しかないから、「children()」だけでもいいのかもね。
分類:jQuery
前へ 1 … 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 … 156 次へ