2012 年 8 月のよしだむメモ


[最近] [トップ]

2012 年 8 月の事

<< < 2012/08 > >>
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

2012-08-01 (Wed)

無為な一日

_ 読書とか。


2012-08-02 (Thu)

無為な一日

_ 散歩とか。


2012-08-03 (Fri)

Mono

_ Mono (version 2.10.8) を使っていてサロゲートペアの扱いにいくつかのバグを見つけた。

  static void u32test() {
    var u32enc = new System.Text.UTF32Encoding(false, false, true);
    var str = "\U00029d4b";
    var chars = str.ToCharArray();
    Console.WriteLine(u32enc.GetByteCount(chars, 0, chars.Length));
    foreach (var b in u32enc.GetBytes(str)) {
      Console.Write(@"{0:X2} ", b);
    }
    Console.WriteLine();
  }

_ 文字列にサロゲートペアが含まれていると UTF32Encoding#GetByteCount(char[],int,int) が正しい値を返さない。GetBytes(string)にも余計なNULが付く。

$ mono test.exe
8
4B 9D 02 00 00 00 00 00

_ Windows の .NET Framework 4.0 では正しく動く。

C:\>test.exe
4
4B 9D 02 00

_ 二つ目。CharUnicodeInfo.GetUnicodeCategory(string,int) がサロゲートペアを正しく認識しない。

using System.Globalization;
  
  static void cattest() {
    var str = "\U00010380"; // UGARITIC LETTER ALPA
    for (int i = 0; i < str.Length; i++) {
      Console.WriteLine(@"{0:X4} {1}", (int)str[i],
                        CharUnicodeInfo.GetUnicodeCategory(str, i));
    }
  }

_ Mono はハイサロゲートに対して UnicodeCategory.Surrogate を返す。

$ mono test.exe
D800 Surrogate
DF80 Surrogate

_ Windows の .NET Framework 4.0 ではハイサロゲートに対して UnicodeCategory.OtherLetter を返す。

C:\>test.exe
D800 OtherLetter
DF80 Surrogate

_ 三つ目。StringInfo.GetTextElementEnumerator(string) でテキスト要素を取り出すとき, 基底文字がサロゲートペアの場合,結合文字シーケンスを認識しない。

using System.Globalization;
  
  static void tetest() {
    var str = "\u2042\u20dd\U00020b9f\u20dd";
    var teenum = StringInfo.GetTextElementEnumerator(str);
    while (teenum.MoveNext()) {
      var te = teenum.GetTextElement();
      foreach (var c in te) {
        Console.Write(@"{0:X4} ", (int)c);
      }
      Console.WriteLine();
    }
  }

_ U+3042 + U+20DD は一つのテキスト要素として認識するが, U+20B9F + U+20DD は泣き別れ。

$ mono test.exe
3042 20DD
D842 DF9F
20DD

_ Windows の .NET Framework 4.0 では一つのテキスト要素と認識する。

C:\>test.exe
3042 20DD
D842 DF9F 20DD

2012-08-04 (Sat)

無為な一日

_ 散歩とか。


2012-08-05 (Sun)

無為な一日

_ ミヤマカラスアゲハ。たぶんオス。

_ [ミヤマカラスアゲハ]

メールサーバログ解析

_ 7/29〜8/5 のメールサーバのログ解析。 spam 数はやや減少。

状態メール数
非受信ブロック(Spamassassin)511
隔離(ClamAV)1
切断93
一時的な失敗0
受信hamと判定ham73
false negative114
ham計187
spamと判定spam60
false positive0
spam計60
受信メール計247
852

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China33.45%
India11.38%
United States 6.83%
Brazil 5.60%
Saudi Arabia 5.08%

2012-08-06 (Mon)

無為な一日

_ 読書とか。


2012-08-07 (Tue)

無為な一日

_ 散歩とか。


2012-08-08 (Wed)

Unicode Normalization

_ Unicode Normalization ライブラリのデータテーブルに文字カテゴリを追加していくつかの機能を追加した。

_ 文字カテゴリを取得する。ブロックを指定すると一要素ずつ取得できる。

>> Unicode.abbr_categories("a9\u0393\u00B2\u00BC\u0BEF\u0BF0\u2788")
=> [:Ll, :Nd, :Lu, :No, :No, :Nd, :No, :No]
>> Unicode.categories("a9\u0393\u00B2\u00BC\u0BEF\u0BF0\u2788") do |c| p c end
:Lowercase_Letter
:Decimal_Number
:Uppercase_Letter
:Other_Number
:Other_Number
:Decimal_Number
:Other_Number
:Other_Number
=> "a9\u0393\u00B2\u00BC\u0BEF\u0BF0\u2788"

_ テキスト要素に分解する。だいたい表示上の一文字単位に分解する。 ハングル字母は初声+中声+終声の組合せを一文字として認識する。 ブロックを指定すると一要素ずつ取得できる。

>>  Unicode.text_elements("\u0061\u0300\u00C6\u1100\u1175\u11b7\u110e\u1175")
=> ["a\u0300", "\u00C6", "\u1100\u1175\u11B7", "\u110E\u1175"]

_ 固定幅フォントのテキスト端末での表示幅を計算する。 CJK のワイド文字,全角文字は幅 2,それ以外は幅 1 で計算する。 第二引数に true を指定すると東アジアあいまい幅文字を幅 2 で計算する。 ハングル字母は中声,終声を幅 0 にするだけの簡易計算。

>> Unicode.width("Abcいろはイロハ\u0061\u0300\u00C6\u1100\u1175\u11b7\u110e\u1175αД")
=> 20
>> Unicode.width("Abcいろはイロハ\u0061\u0300\u00C6\u1100\u1175\u11b7\u110e\u1175αД", true)
=> 23

2012-08-09 (Thu)

無為な一日

_ 散歩とか。


2012-08-10 (Fri)

無為な一日

_ 散歩とか。


2012-08-11 (Sat)

無為な一日

_ ゲームとか。


2012-08-12 (Sun)

メールサーバログ解析

_ 8/5〜8/12 のメールサーバのログ解析。 spam 数はほぼ横ばい。

状態メール数
非受信ブロック(Spamassassin)511
隔離(ClamAV)1
切断93
一時的な失敗0
受信hamと判定ham73
false negative114
ham計187
spamと判定spam60
false positive0
spam計60
受信メール計247
852

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China34.54%
India 7.61%
Saudi Arabia 7.23%
Vietnam 6.36%
United States 6.11%

2012-08-13 (Mon)

無為な一日

_ 散歩とか。


2012-08-14 (Tue)

無為な一日

_ 散歩とか。


2012-08-15 (Wed)

無為な一日

_ ゲームとか。


2012-08-16 (Thu)

無為な一日

_ www.yoshidam.net のデザインを少し変更。 ちょっとシンプルにしてみた。


2012-08-17 (Fri)

Windows 8

_ ようやく Windows 8 のダウンロード完了。

_ さてどうやって評価しようか。 使いにくそうだから,あまり評価する気にもなれないんだが。


2012-08-18 (Sat)

無為な一日

_ ゲームとか。


2012-08-19 (Sun)

U ターン

_ U ターンした。 帰省中にできなかった Windows Update とか。

メールサーバログ解析

_ 8/12〜8/19 のメールサーバのログ解析。 spam 数はやや減少。

状態メール数
非受信ブロック(Spamassassin)546
隔離(ClamAV)3
切断70
一時的な失敗0
受信hamと判定ham71
false negative114
ham計185
spamと判定spam73
false positive0
spam計73
受信メール計258
877

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China26.82%
India11.95%
Vietnam 9.21%
Saudi Arabia 6.62%
Brazil 4.04%

2012-08-20 (Mon)

Windows 8

_ Hyper-V 上に Windows 8 をインストールしてみた。

_ まずやらなければならないことはスタート画面から邪魔なタイルをすべて削除することだな。 代わりにコントロールパネルやコマンドプロンプトのアイコンを並べておけばそれなりに使える。

_ Windows 8 スタイルアプリは使いにくすぎる。 いまどき PC で全画面アプリはありえないだろう。 これが主流になるとは思えないな。


2012-08-21 (Tue)

無為な一日

_ ゲームとか。


2012-08-22 (Wed)

nasne

_ ようやく現金書留で代金返却された。


2012-08-23 (Thu)

無為な一日

_ ビデオの消化とか。


2012-08-24 (Fri)

Windows 8

_ 仮想マシンではなく,実機にインストールしてみた。 せっかくだから Windows 7 からのアップグレードインストール。

_ タッチパッドとサウンドのドライバが動かなくなった。 とりあえず Windows 7 用ドライバをインストールしなおしたら動いた。

_ Forefront Endpoint Protection が動かないようなのでアンインストール。 Windows Defender がほぼ同等みたいなので大丈夫だろう。

_ Pentium M の古いノートパソコンだが,Aero Glass がないので Windows 7 よりはきびきび動いているような気がする。 メモリ 2GB あればほぼ実用的に動きそうだ。


2012-08-25 (Sat)

無為な一日

_ ビデオの消化とか。


2012-08-26 (Sun)

メールサーバログ解析

_ 8/19〜8/26 のメールサーバのログ解析。 spam 数はやや減少。

状態メール数
非受信ブロック(Spamassassin)318
隔離(ClamAV)3
切断39
一時的な失敗0
受信hamと判定ham91
false negative105
ham計196
spamと判定spam65
false positive0
spam計65
受信メール計261
621

_ spam 発信 IP アドレスの国別集計の上位五ヶ国。

国名割合
China27.15%
India13.05%
Vietnam10.18%
Saudi Arabia 6.27%
Korea, Republic of 3.39%

2012-08-27 (Mon)

無為な一日

_ 散歩とか。


2012-08-28 (Tue)

無為な一日

_ 散歩とか。


2012-08-29 (Wed)

無為な一日

_ ビデオの消化とか。


2012-08-30 (Thu)

無為な一日

_ ビデオの消化とか。


2012-08-31 (Fri)

無為な一日

_ ゲームとか。


Ganerated by nDiary version 0.9.4/ym3
Yoshida Masato (yoshidam@yoshidam.net)