MW211 EXIT

devlog
PHP/BOMコードとPHPソース
2013年08月11日
PHPソースファイルをうっかりメモ帳で開いて保存してしまうと大変なことが起きる。
#UTF-8で作成している場合の話ね

メモ帳はBOM付きで保存してしまうのだ。

では、BOM付きPHPソースファイルの影響はというと…。

┌──────────────────────────────────────┐
│あ<?php                                                                     │
└──────────────────────────────────────┘
単純な話、上記のようにうっかりPHPソースの外に
変な文字を混入させてしまった場合と同じだと考えていい。
┌──────────────────────────────────────┐
│(BOM)<?php                                                                  │
└──────────────────────────────────────┘

【画面表示の場合】
作成されるHTMLソースの先頭にBOMコードが付加されるので、
UTF-8(BOM無し)ソースではなく、UTF-8(BOM付き)ソースとなる。
但し、これは何の問題もない。
しかしながら、インクルードするファイルが二つ以上BOMに侵されていると
BOMが二重に付加された方にになり、二つ目のBOMが半角スペースのようになり
悪さをしてしまう。

【ダウンロード機能の場合】
画面表示ではなくダウンロードに使う場合、出力されるデータの先頭に
BOMが付加されてしまう。
UTF-8のデータとしてダウンロードするなら影響はないが、
シフトJISのCSVファイルとかに変換してダウンロードする場合は、
シフトJISの中(正確には先頭)にBOMが混在するので文字化けを誘発する。
もちろん、UTF-8のデータだとしても、前述のように二重にBOMがあれば
二つ目が悪さをしてしまう。
分類:PHP
BOMコードと空っぽ
2013年08月10日
(UTF-8の)BOM付きで空っぽのファイルを保存すると、
「EF BB BF」のみの3バイトの空ファイル(?)が作成される。

つまり、0バイトの空ファイルではない。

この挙動は、メモ帳、秀丸エディタ、サクラエディタで確認した。
分類:設計
BOMコードとエディタ
2013年08月09日
各エディタにおけるファイル保存時のBOM指定を調べてみた。

メモ帳の場合、BOM指定がない。つまり強制的にBOM付きになってしまう。
┌──────────────────────────────────────┐
│                  ┌────┬─┐                                          │
│文字コード        │UTF-8   │▼│                                          │
│                  └────┴─┘                                          │
└──────────────────────────────────────┘

秀丸エディタの場合、チェックボックスがある。
┌──────────────────────────────────────┐
│                  ┌────────┬─┐                                  │
│エンコードの種類  │Unicode(UTF-8)  │▼│  □BOMを付ける                   │
│                  └────────┴─┘                                  │
└──────────────────────────────────────┘

サクラエディタの場合も、チェックボックスがある。
┌──────────────────────────────────────┐
│                  ┌────┬─┐              ┌─────┬─┐          │
│文字コードセット  │UTF-8   │▼│  改行コード  │変換なし  │▼│  □BOM   │
│                  └────┴─┘              └─────┴─┘          │
└──────────────────────────────────────┘
分類:設計
Linux/timeコマンド
2013年08月08日
「time」コマンドを使うと、コマンドの実行時間を計測することができる。
┌──────────────────────────────────────┐
│$ time コマンド                                                             │
│real    0m 00.00s                                                           │
│user    0m 00.00s                                                           │
│sys     0m 00.00s                                                           │
└──────────────────────────────────────┘

例えば、「ls」コマンドの実行時間を測る場合にはこんな感じ。
┌──────────────────────────────────────┐
│$ time ls                                                                   │
└──────────────────────────────────────┘

結果をログに記録したい場合には、括弧で括って、「2>」で出力すればよい。
#「>>」であれば追加出力(「>」は上書出力)
┌──────────────────────────────────────┐
│(time ls) 2>> log.txt                                                       │
└──────────────────────────────────────┘
「2>」の指定は標準エラー出力の向き先の指定を行うものだから、
実行時間は標準エラー出力に出力されるってことらしい。
分類:Linuxシェル
JavaScript/添字配列と連想配列
2013年08月07日
JavaScriptで配列(添字配列)を定義する場合は「new Array()」を使う。
┌──────────────────────────────────────┐
│var 配列 = new Array(                                                       │
│    'A', 'B', 'C'                                                           │
│);                                                                          │
└──────────────────────────────────────┘
配列というオブジェクトを作成するということになる。

これを以下のように書き換えることもできる。
┌──────────────────────────────────────┐
│var 配列 = [                                                                │
│    'A', 'B', 'C'                                                           │
│];                                                                          │
└──────────────────────────────────────┘
だいぶ配列っぽい感じになる。

始めは値が決まっておらず、領域だけ確保したい場合には以下のような感じとなる。
┌──────────────────────────────────────┐
│var 配列 = new Array(3);                                                    │
│配列[0] = 'A';                                                              │
│配列[1] = 'B';                                                              │
│配列[2] = 'C';                                                              │
└──────────────────────────────────────┘
配列要素が数字3だけという配列の初期定義と間際らしいが、
配列要素が数字3だけという配列の初期定義はできないことになる。

連想配列の場合は、以下のようなハッシュ定義となる。
┌──────────────────────────────────────┐
│var 連想配列 = {                                                            │
│    'A': 1, 'B': 2, 'C': 3                                                  │
│};                                                                          │
└──────────────────────────────────────┘

配列の方は添字配列なので、欠番を間に挟んで、突然飛び番に値を格納すると、
そこまでの配列は勝手に空で埋められてしまう。

連想配列はハッシュでということになる。
分類:JavaScript
PHP/文字コード変換とBOMコード
2013年08月06日
「mb_convert_encoding()」で文字コード変換を行い、
「UTF-8→シフトJIS」変換をする場合、以下のような感じとなる。
┌──────────────────────────────────────┐
│$変換後SJIS = mb_convert_encoding($変換前UTF-8, 'SJIS-win', 'UTF-8');       │
└──────────────────────────────────────┘

だが、ここで「BOM付きUTF-8」だった場合には、「BOM」が除去されないので
「BOM付きシフトJIS」(?)になる。

当然ながら、そんなものはないので文字化けとなる。
ファイルの先頭が「EFBBBF」だとそのケースだ。

で、「BOM付きUTF-8」を「mb_convert_encoding()」で変換する機能………が、
あったら便利なのだが、見当たらない。

そこで手作業。
┌──────────────────────────────────────┐
│if (($変換前[0] == chr(0xEF))                                               │
│ && ($変換前[1] == chr(0xBB))                                               │
│ && ($変換前[2] == chr(0xBF)))                                              │
│{                                                                           │
│    $変換前 = substr($変換前, 3);                                           │
│}                                                                           │
└──────────────────────────────────────┘
まあ、こんな感じだわね。

なんかもっとすっきりする解決方法はないものか。
分類:PHP
ExcelVBA/代入する
2013年08月03日
特定のセル(セル(1,1))に値を代入する
┌──────────────────────────────────────┐
│Cells(1, 1).Value = "値"                                                    │
└──────────────────────────────────────┘
特定のセル(セル(1,1))に数式を代入する
┌──────────────────────────────────────┐
│Cells(1, 1).Formula = "=数式"                                               │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/塗る
2013年08月02日
特定のセル(セル(1,1))を黒く塗る。
┌──────────────────────────────────────┐
│Cells(1, 1).Interior.Color = RGB(0, 0, 0)                                   │
└──────────────────────────────────────┘
特定の行(1行目)を黒く塗る。
┌──────────────────────────────────────┐
│Rows(1).Interior.Color = RGB(0, 0, 0)                                       │
└──────────────────────────────────────┘
特定の列(1列目)を黒く塗る。
┌──────────────────────────────────────┐
│Columns(1).Interior.Color = RGB(0, 0, 0)                                    │
└──────────────────────────────────────┘
分類:ExcelVBA
IE/ダウンロード進捗状況の×に注意
2013年07月31日
┌───────────────────┌─────┐┌─────────┐─┐
│■MB/■■■■ ダウンロード済み        │キャンセル││ダウンロードの表示│×│
└───────────────────└─────┘└─────────┘─┘
ダウンロード中にダウンロード表示ダイアログがブラウザの下の方に表示される。
ここに「キャンセル」と「×」(閉じる)があるが、
「×」はキャンセルとはならないので注意。

単純に進捗状況を表示しないというだけなのだ。

キャンセルしたい場合には進捗状況を再表示して、キャンセルを実行せねばならない。

再表示の方法だがツールバーから「ツール→ダウンロードの表示」だ。

ダイアログの様式が違うが、内容的には同じようなことができる。
分類:ブラウザ、注意
ブラウザ/ダウンロード時の一時ファイル
2013年07月30日
Web画面からダウンロードする場合、ダウンロードフォルダに
そのファイル等がダウンロードされる。
普通は一瞬のうちにダウンロードされることが多いので気にならないが
途中、ダウンロードフォルダに一時ファイルができる。

名称は「ダウンロードファイル名.*******.partial」(*の部分は英数字)みたいな感じ。

ダウンロードが完了すると所定のダウンロード名になり
キャンセルすると削除される。

これを制御する(表示しないようにするなど)術はないようだ。
分類:ブラウザ
前へ 1 … 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 … 156 次へ