MW211 EXIT

devlog
SVN/機種依存文字は使えない?
2017年12月07日
TortoiseSVNにて「ログを表示」を実行した場合、
「サーバーに接続する際に問題が発生しました。…」というエラーが表示され
コミットしたものを参照できなくなる問題に遭遇した。

どうやら原因はファイル名などに機種依存文字(例「Ⅵ」など)が
含まれている場合に発生するようだ。

実験してみたら位置関係的には以下のような感じだった。
┌───────────────────────┐
│■機種依存文字ありルートフォルダ  →○参照可  │
│├□機種依存文字なしファイル      →○参照可  │
│├■機種依存文字ありファイル      →×参照不可│
│└■機種依存文字ありフォルダ      →×参照不可│
│  ├□機種依存文字なしファイル    →×参照不可│
│  └■機種依存文字ありファイル    →×参照不可│
└───────────────────────┘
分類:SVN
PHP/カンマ連結
2017年12月02日
「echo 'a' . 'b';」(ドット連結)と「echo 'a' , 'b';」(カンマ連結)の違い。

イメージ的に、「echo 'a' . 'b';」は
┌──────────────────────────────────────┐
│$dummy = 'a' . 'b';                                                         │
│echo $dummy;                                                                │
└──────────────────────────────────────┘
なのに対して、「echo 'a' , 'b';」は
┌──────────────────────────────────────┐
│echo 'a';                                                                   │
│echo 'b';                                                                   │
└──────────────────────────────────────┘
といった感じ。

よって、「$dummy = 'a' , 'b';」とかはできなのだけれども、
カンマ連結の方が途中にバッファを持たない分、速くて小さくまとめられる。

よって、どちらかというとカンマ連結が推奨される。
分類:PHP
ExcelVBA/正規表現のモンテカルロ法による検証
2017年12月01日
┌──────────────────────────────────────┐
│Option Explicit                                                             │
├──────────────────────────────────────┤
│Public Sub 正規表現のモンテカルロ法による検証()                             │
│    Dim REG As Object: Set REG = CreateObject("VBScript.RegExp")            │
│    Dim i As Long, 検証文字 As String                                       │
│    Dim y1 As Long: y1 = 1                                                  │
│    Dim y2 As Long: y2 = 1                                                  │
│    Cells.ClearContents                                                     │
│    Cells(1, 1).Value = "【一致】"                                          │
│    Cells(1, 2).Value = "【不一致】"                                        │
│    REG.Pattern = "^[A-Z]+$"    ' ここに検証したい正規表現を指定            │
│    Randomize                                                               │
│    For i = 1 To 60000                                                      │
│        検証文字 = ランダム文字生成()                                       │
│        If REG.test(検証文字) Then                                          │
│            y1 = y1 + 1                                                     │
│            Cells(y1, 1).Value = 検証文字                                   │
│        Else                                                                │
│            y2 = y2 + 1                                                     │
│            Cells(y2, 2).Value = 検証文字                                   │
│        End If                                                              │
│    Next i                                                                  │
│End Sub                                                                     │
├──────────────────────────────────────┤
│Private Function ランダム文字生成() As String                               │
│    Dim 結果 As String: 結果 = ""                                           │
│    Dim i As Long, iMax As Long, dw(0 To 2) As String                       │
│    iMax = Int(Rnd * 8) + 4                                                 │
│    For i = 1 To iMax                                                       │
│        dw(0) = Int(Rnd * 10)               ' 数字(0~9)                    │
│        dw(1) = Chr(Int(Rnd * 26) + 65)     ' 英大文字(A~Z)                │
│        dw(2) = Chr(Int(Rnd * 26) + 97)     ' 英小文字(a~z)                │
│        結果 = 結果 & dw(Rnd * 2)                                           │
│    Next i                                                                  │
│    ランダム文字生成 = 結果                                                 │
│End Function                                                                │
└──────────────────────────────────────┘
数値版の場合は以下の通り。
┌──────────────────────────────────────┐
│Option Explicit                                                             │
├──────────────────────────────────────┤
│Public Sub 正規表現のモンテカルロ法による検証数値版()                       │
│    Dim REG As Object: Set REG = CreateObject("VBScript.RegExp")            │
│    Dim i As Long, 検証数値 As Long                                         │
│    Dim y1 As Long: y1 = 1                                                  │
│    Dim y2 As Long: y2 = 1                                                  │
│    Cells.ClearContents                                                     │
│    Cells(1, 1).Value = "【一致】"                                          │
│    Cells(1, 2).Value = "【不一致】"                                        │
│    REG.Pattern = "^(?:0|[1-9]|1[0-2])$"    ' ここに検証したい正規表現を指定│
│    Randomize                                                               │
│    For i = 1 To 60000                                                      │
│        検証数値 = Int(Rnd * 65536)                                         │
│        If REG.test(検証数値) Then                                          │
│            y1 = y1 + 1                                                     │
│            Cells(y1, 1).Value = 検証数値                                   │
│        Else                                                                │
│            y2 = y2 + 1                                                     │
│            Cells(y2, 2).Value = 検証数値                                   │
│        End If                                                              │
│    Next i                                                                  │
│End Sub                                                                     │
└──────────────────────────────────────┘
分類:ExcelVBA
前へ 1 2 次へ