MW211 EXIT

devlog
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++
前へ 1 2 3 次へ