MW211 EXIT

devlog
PHP/再帰的なmkdir
2017年01月31日
Linux上のPHPにおいての話。

mkdir()の第三引数にTRUEを指定すると
「mkdir -p」コマンド相当のmkdir()を実行できる。
つまり、「mkdir(第一階層/第二階層)」と指定した場合、
第一階層がないとエラーとなるが、
「mkdir(第一階層/第二階層,,TRUE)」と指定すれば、
(第二階層に加え)第一階層もmkdir()してくれる。
分類:PHP
PHP/mkdirのパーミッション指定の注意点
2017年01月30日
Linux上のPHPにおいての話。

mkdir()の第二引数にパーミッション(0777など)を指定できるが
「umask」設定の影響を受けるので、その直後にchmod()で設定し直す方が安全である。

「umask」設定値は、「umask」コマンドで確認できる

umask()で、「umask」設定自体を変更することもできるが
元に戻す必要があったり、他への影響も大きいのでこちらは避けた方がよい。
→chmod()の方を推奨
分類:PHP
PostgreSQL/トランザクション中のエラーメッセージ
2017年01月20日
トランザクション中で何らかの例外が発生すると、
後続のSQL文が軒並みエラー(中止)となってロールバックへ突き進む。

この場合、後続のSQL文ごとに以下のようなメッセージが出力される。
┌──────────────────────────────────────┐
│current transaction is aborted,                                             │
│commands ignored until end of transaction block                             │
├──────────────────────────────────────┤
│現在のトランザクションは中止され、                                          │
│トランザクションブロックの終了までコマンドは無視されます                    │
└──────────────────────────────────────┘
上記のようにGoogle翻訳すると意味はわかり、
正常なメッセージであることが認識できるのだが
勘違いして「end of transaction block」(トランザクションの末尾)が
「ignored」(見当たらない←明らかな誤訳)と誤ってとらえてしまい
トランザクション処理の構造がおかしいとあわてないように!(←実体験)
分類:PostgreSQL
ExcelVBA/MSSQL小数のプレースホルダ
2017年01月17日
┌──────────────────────────────────────┐
│CREATE PROCEDURE [dbo].[PROCEDURE_小数]                                     │
│    @引数小数               [decimal](8, 2)                                 │
└──────────────────────────────────────┘
MSSQLのストアドプロシージャの引数をdecimal型の小数で定義した場合
ExcelVBAのプレースホルダ的には、以下のような形式で値を指定してあげる。
┌──────────────────────────────────────┐
│Dim SQLコマンド As New ADODB.Command                                        │
│With SQLコマンド                                                            │
│    .ActiveConnection = mデータベース                                       │
│    .CommandType = adCmdStoredProc                                          │
│    .CommandText = "PROCEDURE_小数"                                         │
│    .NamedParameters = True                                                 │
│    .Parameters.Append .CreateParameter("@引数小数", adDecimal, adParamInput)
│    With .Parameters("@引数小数")                                           │
│        .Precision = 8                                                      │
│        .NumericScale = 2                                                   │
│    End With                                                                │
│    .Execute                                                                │
└──────────────────────────────────────┘
分類:ExcelVBA、MSSQL
消費税の端数処理
2017年01月16日
小数を四捨五入した税込金額(税率は8%)があった場合、
1.08で割って「小数を四捨五入する」と、元の値に戻るようだ。

ちなみに小数を切り上げした税込金額(税率は8%)があった場合、
1.08で割って「小数を切り捨てする」と、元の値に戻るようだ。

さらに小数を切り捨てした税込金額(税率は8%)があった場合、
1.08で割って「小数を切り上げる」と、元の値に戻るようだ。

乗算した端数処理と除算した端数処理が同じなら
元の値に戻るような何か理論でもあるのだろうか?
#例外がみつからないだけ?

ちなに税込7円を1.08で割って6.48円として、小数を四捨五入すると税抜6円となり
これを1.08でかけても6.48円で、小数を四捨五入しても7円にはならず6円のままとなる
分類:経営学
PHP/未定義変数のNULL化
2017年01月12日
未定義の変数をエラーを伴わずに「NULL」に置き換える方法
┌──────────────┬───────────────────────┐
│isset($変数) ? $変数 : NULL │基本だが、「$変数」を二回記述で冗長的         │
├──────────────┼───────────────────────┤
│$変数 ?? NULL               │PHP7.0以降で使用可能(*1)                      │
├──────────────┼───────────────────────┤
│!empty($変数) ? $変数 : NULL│NULL・0・空文字などもNULLになる               │
├──────────────┼───────────────────────┤
│!$変数 ? $変数 : NULL       │empty()と同じでNULL・0・空文字などもNULLになる│
├──────────────┼───────────────────────┤
│@$変数                      │簡潔だが、エラー制御演算子(@)は避けた方がよい │
└──────────────┴───────────────────────┘
  *1:「isset($変数) ?? $変数」と誤認しがちなので注意
      もし誤用すると「isset()」の結果(「TRUE」か「FALSE」)がそのまま返却される

$_GET['xxx']、$_POST['xxx']などでも使える。
分類:PHP
PHP/mb_convert_encoding()とNULL
2017年01月11日
「mb_convert_encoding()」に「NULL」を渡すと、空文字「''」に変換されるので注意。
┌──────────────────────────────────────┐
│mb_convert_encoding(NULL, 'SJIS-win', 'UTF-8'   );                      →''│
├──────────────────────────────────────┤
│mb_convert_encoding(NULL, 'UTF-8'   , 'SJIS-win');                      →''│
└──────────────────────────────────────┘
「NULL」のままにしたい場合には事前に迂回する必要がある。
分類:PHP
JavaScript/プロトタイプなど
2017年01月10日
┌──────────────────────────────────────┐
│var グローバル変数;                                                         │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│function グローバル関数(引数) {                                             │
│     var ローカル変数;                                                      │
│     return 戻り値;                                                         │
│}                                                                           │
├──────────────────────────────────────┤
│var グローバル関数 = function(引数) {                                       │
│     var ローカル変数;                                                      │
│     return 戻り値;                                                         │
│}                                                                           │
├──────────────────────────────────────┤
│グローバル関数(引数);                                                       │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│function コンストラクタ関数(引数) {                                         │
│     this.公開メンバ変数 = 引数,                                            │
│     this.メソッド = function(引数) {                                       │
│         var ローカル変数;                                                  │
│         return 戻り値;                                                     │
│     };                                                                     │
│}                                                                           │
├──────────────────────────────────────┤
│var オブジェクト = new コンストラクタ関数(引数);                            │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│名前空間 = {                                                                │
│     公開メンバ変数:値,                                                     │
│     メソッド:function(引数) {                                              │
│         var ローカル変数;                                                  │
│         return 戻り値;                                                     │
│     }                                                                      │
│};                                                                          │
└──────────────────────────────────────┘
分類:JavaScript
前へ 1 次へ