MW211 EXIT

devlog
設計/緊急度文言
2013年07月08日
緊急度順に以下の文言を使用するとよい。
・「直ちに」対応する
・「速やかに」対応する
・「計画的に」対応する
分類:設計
PHP/便利な関数いろいろ
2013年07月06日
変数一覧
print_r(array_keys(get_defined_vars()));

定数一覧
print_r(get_defined_constants(true));

関数一覧
print_r(get_defined_functions());

クラス一覧
print_r(get_declared_classes());
分類:PHP
jQuery/チェックボックスがチェックされてアナザー
2013年07月05日
対象となるチェックボックスにチェックがされているか否かを判断する方法は
いろいろある。
いろいろありすぎて、どれが正解かわからない(困ったものだ)。

チェックボックスが「id="a"」だった場合、
真ならチェック有り処理を行うようなif文は、以下のパターンがありうる
①「if ($('#a').is(':checked'))」
②「if ($('#a').prop('checked'))」
③「if ($('#a').prop('checked') == true)」
④「if ($('#a').attr('checked'))」
⑤「if ($('#a').attr('checked') == true)」
⑥「if ($('#a').attr('checked') == 'checked')」
⑦「if ($('#a')[0].checked == 'checked')」


チェックボックスが「id="a"」と「id="b"」の二つで場合、
一方でもチェックがあればってパターンとなる、以下のような感じか
⑪「if ($('#a,#b').is(':checked'))」
⑫「if (($('#a').prop('checked')) || ($('#b').prop('checked')))」


ま、結論ありきで記載したが、
最速は②、汎用性では①⑪ってことになる。

「.is(':checked')」(①⑪)に(単純化して)統一するか、
セレクタの単独が保証されている場合(「$(this)」の場合など)は
「.prop('checked')」(②)を使い分けるってのがベストな選択だろう。
分類:jQuery
CSS/絶対位置指定とtableタグの関係
2013年07月04日
「positon:absolute;」により絶対位置でオブジェクトを配置する場合、
それを乗っけるお盆みたいな存在が必要だ。
その役割をするのが、「positon:relative;」の親オブジェクトとなる。
(厳密には「positon:fixed;」とかでもいいけど)
┌──────────────────────────────────────┐
│<div style="positon:relative;">                                             │
│  <div style="positon:absolute;">■</div>                                   │
│</div>                                                                      │
└──────────────────────────────────────┘
ま、こんな感じで「positon:absolute;」を
「positon:relative;」中に内包させればよい。

じゃ、divタグじゃなくてtdタグでも…ってことで、以下のようにやりがちだ。
┌──────────────────────────────────────┐
│<table><tr><td style="positon:relative;">                                   │
│  <div style="positon:absolute;">■</div>                                   │
│</td></tr></table>                                                          │
└──────────────────────────────────────┘
不思議なことにFirefoxだけおかしく表示される。

Firefoxのバグ?いやいやこれが正式、W3Cのルールなのだ。
(他ブラウザは見逃しているが、Firefoxは忠実なのだ)

つまり、table系タグには「positon:relative;」は効かない!のだ。

ということで、回避策はdivタグを一個余分に噛ませてやればよい。
┌──────────────────────────────────────┐
│<table><tr><td><div style="positon:relative;">                              │
│  <div style="positon:absolute;">■</div>                                   │
│</div></td></tr></table>                                                    │
└──────────────────────────────────────┘

こういうルールにぶち当たると、tableタグによる(不要な)段組みはやめようかなと
思えてくるのだろう。
分類:CSS
Excel/CSVと整数部3桁毎のカンマ区切り
2013年07月03日
(CSV読み込みやセルへのコピペ入力において)
文字列「'01'」と入力したつもりでも、数値の「1」と認識してしまうExcelだが
整数部3桁毎のカンマ区切りについてはまた特別な挙動を示す。

Excel(Excel2010)における挙動は以下のような感じである
・3桁毎カンマ区切りのないデータを読み出した場合、
  3桁毎カンマは付加されず表示される
  →自動で付加されたりしない
・「1,234」と(数値)入力した場合、CSVデータ上は「"1,234"」で保存される
  →CSVの特性上カンマを野放しにできないので「"」で囲われる(基本中の基本)
・「"1,234"」(3桁毎カンマ区切りのあるデータ)を読み出した場合、
  セルの書式が「通貨」となり、「1,234」の形式で表示される
  →数値であれ、文字列であれ、セルの書式は「標準」で微動だにしないのに比べて
    書式が自動で切り替わるのは異例の事態
・エディタ上などからの手入力で(「"」による囲いなしで)
  「1,234」と入力した場合には、Excelで読み出す際、
  「,」を境に別データ(列)だと認識される
  →CSVの仕様通り(「1,234」を数値的に入力しようとしても「"」は避けられない)
・(セルの書式を文字列にして)文字列として「1,234」と入力して保存した場合でも、
  CSVデータ上は「"1,234"」として保存され、
  それ以降は数値として入力した場合と同じことになる
  →整数部3桁毎カンマ区切りのあるデータ(数値)は、
    数値とか文字とか超越した別の何か扱いのような感じだ
・「1,34」と3桁毎じゃないカンマ区切りで入力した場合は、文字扱いとなる
  →やはり3桁毎のカンマ区切りは特別
分類:Excel
jQuery/子孫を全て選択したい場合
2013年07月02日
「$('#abc').children()」で子供の全選択が可能だが
「$('#abc').find()」による子孫の全選択はできない。
「find()」メソッドには条件式が必須なのである。

どうすればよいか?

「$('#abc').find()」的なことを実現するには
「$('#abc').find('*')」とすればよい。

「$('#abc *')」とするのもあり。
分類:jQuery
C/排他制御と書込オープン
2013年07月01日
「w」もしくは「w+」でfopen()する場合、
排他制御を「flock()」で行うと、「fopen()」→「flock()」の順なので
「flock()」前に更新(全クリア)が発生してしまい、うまく排他制御ができない。

「open()」のレベルで考えると、全クリアは「O_TRUNC」モード指定が該当する。
つまり、以下のような感じとなる。
┌──────────────────────────────────────┐
│fd = open(ファイル名,                                                       │
│          モード | O_TRUNC,                                                 │
│          権限);                                                            │
├──────────────────────────────────────┤
│if (flock(fd, LOCK_EX) == -1) {                                             │
│    排他制御中                                                              │
│}                                                                           │
└──────────────────────────────────────┘

この場合は、全クリアを「ftruncate()」にまかせて
「open()」の時点では全クリアをしないようにするのが鉄則ということだ。
┌──────────────────────────────────────┐
│fd = open(ファイル名,                                                       │
│          モード,                                                           │
│          権限);                                                            │
├──────────────────────────────────────┤
│if (flock(fd, LOCK_EX) == -1) {                                             │
│    排他制御中                                                              │
│}                                                                           │
├──────────────────────────────────────┤
│ftruncate(fd, 0);                                                           │
└──────────────────────────────────────┘
分類:C/C++
CSS/Firefoxの文字間隔
2013年06月30日
Firefoxと他のブラウザを比較すると、Firefoxだけ若干縦に間延びしているように
感じる場合がある。特に文章のところが。

これは、行と行の間にデフォルトで若干間隔が設定されているからだ。

これを他のブラウザと合わせてなくすには以下の指定をすればよい。
┌──────────────────────────────────────┐
│* {                                                                         │
│    line-height:100%;                                                       │
│}                                                                           │
└──────────────────────────────────────┘
もちろん、局地的(divタグ単位など)に設定することも可能。

また、以下のように指定する方法もある。
┌──────────────────────────────────────┐
│* {                                                                         │
│    line-height:1em;                                                        │
│}                                                                           │
└──────────────────────────────────────┘
(こちらはフォントサイズが16pxの場合限定)
┌──────────────────────────────────────┐
│* {                                                                         │
│    line-height:16px;                                                       │
│}                                                                           │
└──────────────────────────────────────┘
分類:CSS
CSS/段組(横二列)
2013年06月29日
【可変】
  (1) テーブルタグを使うパターン(段組としては忌嫌われるが便利)
┌──────────────────────────────────────┐
│<table><tr>                                                                 │
│  <td>列一</td>                                                             │
│  <td>列二</td>                                                             │
│</tr></table>                                                               │
└──────────────────────────────────────┘
  (2) divタグを二階層にするパターン(階層が深くなる点が難だがわかりやすい)
┌──────────────────────────────────────┐
│<div style="height:16px;">                                                  │
│  <div style="float:left;">列一</div>                                       │
│  <div style="float:left;">列二</div>                                       │
│</div>                                                                      │
└──────────────────────────────────────┘
  (3) 「clear:both;」を使うパターン(階層は浅いが列幅指定に難あり(後述))
┌──────────────────────────────────────┐
│<div style="float:left;">列一</div>                                         │
│<div style="float:left;">列二</div>                                         │
│<div style="clear:both;"></div>                                             │
└──────────────────────────────────────┘
【固定】
  (4) 「position:absolute」で位置固定で前面に乗せる感じにする
┌──────────────────────────────────────┐
│<div style="position:relative;">                                            │
│  <div style="position:absolute;left:0;width:■px;">列一</div>              │
│  <div style="margin-left:■px;">列二</div>                                 │
│</div>                                                                      │
└──────────────────────────────────────┘
  (5) 「float:left」で前面に乗せる感じにする
┌──────────────────────────────────────┐
│<div style="float:left;width:■px;">列一</div>                              │
│<div style="margin-left:■px;">列二</div>                                   │
└──────────────────────────────────────┘
【画面全体を縮小した場合の挙動】
  (1)→左列、右列とも同じ幅となり、それぞれ改行される
  (2)→右列全体が改行されて次行に回り込む形となる
  (3)→右列全体が改行されて次行に回り込む形となる
  (4)→左列は列幅指定されているので固定となる、右列がその割をくらって改行に
  (5)→左列は列幅指定されているので固定となる、右列がその割をくらって改行に
  それぞれに列幅を固定で指定すれば、改行や回り込みは発生しない
  但し、(3)は全体を統括する幅が指定できないので、
  おのおの(左列、右列)の幅を指定しても回り込みとなってしまう
分類:CSS
CSS/画像の隙間
2013年06月28日
┌──────────────────────────────────────┐
│<table><tr><td style="border:1px solid #000000;">                           │
│<img src="画像.jpg" alt=""/></td></tr></table>                              │
└──────────────────────────────────────┘
画像imgタグをtdタグの中に入れると、下の方に隙間ができてしまう。
tdの縦幅(height、padding、border、margin)を調整しても隙間を解消できない。
Firebugで調査しても、不思議な余白分、縦幅が追加されている。

これを解消するには、以下のスタイルを適用させればよい。
┌──────────────────────────────────────┐
│img {                                                                       │
│    vertical-align  :bottom;                                                │
│}                                                                           │
└──────────────────────────────────────┘
「g」とか「j」のような、下に若干出ている文字向けに、若干下に隙間があり
その分、隙間があいてしまうので、下端に合わせるように指定してやれば
隙間がなくなるといった感じだ。
分類:CSS
前へ 1 … 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 … 156 次へ