matriXscan というメール関連製品のログをチェックしたことがありました。 そのときに使ったテキストファイルを分割するスクリプトを紹介します。 ログのチェックはテキストエディタで開けばできるのですが、 そのときのログは 1.3 GB あり、テキストエディタでは開けない巨大なファイルになっていました。
環境
- Windows
matriXscan というメール関連製品のログをチェックしたことがありました。 そのときに使ったテキストファイルを分割するスクリプトを紹介します。 ログのチェックはテキストエディタで開けばできるのですが、 そのときのログは 1.3 GB あり、テキストエディタでは開けない巨大なファイルになっていました。
過去に書いていた VBA のファイル名に関連した文字列操作の記事をまとめました。
1 2 3 4 5 |
''' ファイル名から拡張子を取り除く ''' ファイル名からディレクトリ名を取得する。 Private Function GetDirectoryFromFileName(ByVal Filename$) GetDirectoryFromFileName = Left(Filename, InStrRev(Filename, "")) End Function |
ファイルパスから一番右のバックスラッシュの位置を探して、ファイルパスのそれより左の部分を抽出します。 バックスラッシュが見つからなかった場合(ディレクトリがファイルパスに含まれない場合)は、空文字列が返ります。
1 2 3 4 5 6 |
''' ファイル名から拡張子を取り除く Private Function RemoveExtension(ByVal Filename As String) As String Dim dotIndex& dotIndex = InStrRev(Filename, ".") RemoveExtension = Left(Filename, dotIndex - 1) End Function |
InStrRev
が返す文字位置は 1 から始まります。 (配列インデックスのように 0 から始まるわけではありません。)
ファイル名に “.” が含まれない場合は Left
の第2引数に負の数が渡るため、例外が発生します。 これを解消するには次のようにします。
1 2 3 4 5 6 7 8 9 |
''' ファイル名から拡張子を取り除く Private Function RemoveExtension(ByVal Filename As String) As String Dim dotIndex& dotIndex = InStrRev(Filename, ".") If dotIndex < 1 Then dotIndex = dotIndex + 1 End If RemoveExtension = Left(Filename, dotIndex - 1) End Function |
Right
を使って拡張子を取得することもできます。
ここでは、あるところで使われていたコードを見てみます。
1 2 3 4 5 6 7 8 9 10 |
Private Function GetFileExtention(Fnm As String) As String 'ファイルの拡張子を文字列操作で求める。 'すべて小文字に変換する。 Dim st$ st = Fnm If InStr(1, st, "") >= 1 Then st = Mid$(st, InStrRev(st, "") + 1) If InStr(1, st, ".") >= 1 Then st = Mid$(st, InStrRev(st, ".") + 1) Else st = "" GetFileExtention = StrConv(st, vbLowerCase) End Function |
与えられた文字列にバックスラッシュがあればそれより後ろの文字列にして、 その後ピリオドがあればそれより後ろを抜き出しています。 ピリオドがなければ空文字列が返ります。
ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です。 引数 start を省略すると -1 が使用され、最後の文字位置から検索を開始します。 compare は比較するモード(テキスト/バイナリ)を指定します。省略時はバイナリモードになります。
検索文字列が見つからなければ 0 が返ります。
与えられた文字列の左端から指定された長さの文字列を抽出します。 Length が 0 より小さいと例外が発生します。
与えられた文字列の部分文字列を返します。 start には先頭の文字を 1 として文字位置を指定します。
与えられた文字列の右端から指定された長さの文字列を抽出します。 Length が 0 より小さいと例外が発生します。
Yesterday, Aug. 21, 2011, over 20,000 people gathered at Odaiba Tokyo and held demonstration against distortion by Fuji TV Network. The number of perticipants, 20,000 is estimation by one, while organizer says 6,000.
These days, Fuji TV doesn’t report the moment of Japanese win in several tournament, doesn’t report critical Diet issue, doesn’t report what is happening in striken area of disastrous, on the contrary criticizes innocense people, blames athletes, and structs the TV program table for only Fuji TV’s profit. Participants criticized it.
Many sites report its demonstration as against Korean boom, but its not correct. Concern between Korean boom and Fuji TV or other medias are based on profit of Fuji TV. Nowadays, you can here “Korea boom” in Japan because all of medias create it intentionally, for their profit. For example, Fuji TV has got the right to sell music composed/sung by Korean artists and Korea boom artificially created gathers money. So, Fuji TV and other media broadcast Korean drama only, on daytime. The point is not Korea boom.
In Japan, it has never been reported on Television News. Only a few web sites wrote articles. Though this is the largest demonstration in decades.
PHP をちょっとやってみたい人におすすめです。本当に初心者向けなので、勉強熱心な人は買わないでください。
私の場合、役に立ったのはサンプル集です。というのもこの本、サンプルを解説するというスタイルで書かれているから、使いたいサンプルがあったらそこから読めばいい! っていう読み方ができるんです。
Amazon の評価では、eclipse の機能についての解説が薄い、という酷評が書かれていますが、それは eclipse についての話。PHP については初心者向けのいい本です。
ではどんなサンプルがあるの? ということですが……
こういうサンプルは初心者にとってはとても役に立ちますね。 結構利用させてもらいました。
『EclipseではじめるPHP(翔泳社)』(NRIラーニングネットワーク株式会社 )
特に今 eclipse で PHP といえば、Zend が出している PDT が有名ですね。