start

C#のstring.Trim()は全角スペースまで削って下さりやがる

C#のstringクラスにあるTrim()メソッドは、C#の三大便利関数の1つと言って良いくらい便利な関数だ。

言わずもがな、文字列の先頭と末尾に付随する空白を削除してくれる関数であるが、空白って一体なんなのよというと「Unicodeが定める空白文字」である。従って、Trim()は文字列の前後からUnicodeが定める空白文字を削除する関数という事になる。(更に言うと.NET Frameworkのバージョンによって細部の挙動が違う。詳細はMSDNを参照の事。)

んじゃんじゃUnicodeの空白文字ってなんぞ?というと、C#的にはChar.IsWhiteSpace(letter) == trueとなる文字である。詳細はUnicodeの規格書なりWikipediaなりを見て頂くとして、true判定になる文字には半角スペース(U+0020)やタブ文字(U+0009)は然ることながら、全角スペース(U+3000)も含まれるのだ。つまりTrim()を使うと全角スペースも奇麗さっぱりなくなっちゃう。なんというか、C/C++の非WIDE文字な文字列操作に慣れている身からすると、直感とは異なる挙動なわけ。

今回はこれにハマった。削られちゃマズい全角スペースが見事になくなってて、Trim()の挙動を初めて知ったという(´・ω・`)

回避策は引数ありバージョンのTrim()で、全角スペースを除いた空白文字配列を渡すしかない模様。↓こんな感じで拡張メソッド化しておくと便利に使えるよ(`・ω・´)

public static class MyStringAdditions
{
    static char[] WhiteSpaceDelimiters = new char[] {
        '\u0009',  // CHARACTER TABULATION
        '\u000A',  // LINE FEED
        '\u000B',  // LINE TABULATION
        '\u000C',  // FORM FEED
        '\u000D',  // CARRIAGE RETURN
        '\u0020',  // SPACE
        '\u00A0',  // NO-BREAK SPACE
        '\u2000',  // EN QUAD
        '\u2001',  // EM QUAD
        '\u2002',  // EN SPACE
        '\u2003',  // EM SPACE
        '\u2004',  // THREE-PER-EM SPACE
        '\u2005',  // FOUR-PER-EM SPACE
        '\u2006',  // SIX-PER-EM SPACE
        '\u2007',  // FIGURE SPACE
        '\u2008',  // PUNCTUATION SPACE
        '\u2009',  // THIN SPACE
        '\u200A',  // HAIR SPACE
        '\u200B',  // ZERO WIDTH SPACE
//      '\u3000',  // IDEOGRAPHIC SPACE -- これが所謂全角スペース
        '\uFEFF' // ZERO WIDTH NO-BREAK SPACE
    };
 
    public static string TrimWithoutZenkakuSpace(this string str)
    {
        string s = str.Trim(WhiteSpaceDelimiters);
        return s;
    }
}

この件とは直接関係ないけど、TrimStartTrimEndなんてメソッドもあったんだね。取り除きたい文字の配列を渡すと、対象文字列の先頭もしくは末尾から除去してくれる。Trimの分割バージョンみたいなやつ、というよりもTrimTrimStartTrimEndの合体技と言った方がいいか。覚えといて損は無さそう。

TOSHIBA MQ01ABB200R購入

家鯖のHDDが手狭になってきたので、東芝の2.5インチで2TBなHDD、MQ01ABB200のリファービッシュ品MQ01ABB200Rを購入した。

モノ自体は傷・汚れはなく、至って普通のバルクHDDという感じ。RMAで送られてくる如何にもなリファービッシュ品とは雲泥の差だ。ベンチマークとS.M.A.R.T.なんぞ載せてみる。USB 3.0変換なので参考程度に。

一応、リファービッシュ版専用のファームが書かれているようだが、モデル名が違うだけな気がする。AY000Uというファームバージョンも同一みたいだし。

ついでに、WD DLGDIAGで検査したあとのS.M.A.R.T.も載せてみる。

うむ、温度、使用時間、ロードイン時間がそれなりに変化しただけだな。尚、検査は無事に通過した。

あ、そうそう、念のため書いておくけど、このHDDは15mm厚なんで要注意。Seagate以外からも9.5mm厚の2TBが出て欲しいんだがなー。

com.hp.help.tocggeneratorのエラーログを止める

OSXのコンソールログを見ていたら2015/08/01 9:10:26.559 com.apple.launchd.peruser.501[188]: (com.hp.help.tocgenerator) Throttling respawn: Will start in 10 secondsこんなログが延々出続けていた。

ウザいのでどうにかすべくググった所、HPのフォーラムに解決方法が載ってた。ターミナルで以下のコマンドを実行せよとの事。

launchctl unload /Library/LaunchAgents/com.hp.help.tocgenerator.plist
sudo rm -f /Library/LaunchAgents/com.hp.help.tocgenerator.plist

無事、出なくなった。

LED照明HLDZD1251を買ったのでHf蛍光灯と比較

LED照明には以前から興味があったが、普通の蛍光灯ならまだしもインバータ式を置き換えるに足る理由がなく、今まで無縁の生活を送っていた。

しかし連日の酷暑で部屋の温度も急上昇。蛍光灯からの熱線がジリジリと熱いような気がしないでもなかったので、赤外線を殆ど含まないというLED照明に俄然興味が出てきた。

冷やかし半分に価格.comを見ていたところ、NECのLEDシーリングライトHLDZD1251がスペックも値段も他の同クラスの製品より頭一つ出ており、楽天の期間限定ポイントもあったため、そのままお買い上げ〜。部屋のサイズ的には〜8畳までのHLDZB0849でも大丈夫そうだったが、「スペックの割に暗く1つ上のモデルで丁度良い」というレビューがあったのと、大は小を兼ねるって訳でHLDZD1251を選んだ次第。

折角なので今まで使っていたインバータ式蛍光灯HHFZ4160と色々比較してみた。

HLDZD1251(LED) HHFZ4160(蛍光灯)
畳数 〜12畳 4.5〜8畳
光源 LED Hf蛍光ランプ 70型
[使用ランプ:FHD70ECW/H]
定格寿命 40000時間
(光束維持率70%)
16000時間
(光束維持率80%)
色温度 6500K 7200K
平均演色評価数 Ra85 Ra84
消費電力 42W 62W
全光束 5100lm 6300lm (周囲温度40℃時)
エネルギー消費効率 121.4 lm/W 101.1 lm/W
寸法 幅φ580mm 高118mm 幅φ500mm 高108mm
質量 2.2kg 2.1kg(多分ランプ含まず)
Webサイト https://www.nelt.co.jp/navi/led_hldzd/hldzd1251/l.html http://panasonic.jp/light/p-db/HHFZ4160_spec.html
購入価格 7190円 0円(もらい物)

スペックを見比べると、最近のLED照明は数値の上でも蛍光灯に匹敵する性能を有している事が分かる。LED照明と蛍光灯では全光束の定義が違う1)ため、数値が小さい=性能が劣っているという訳ではない。だが、一般消費者はそんなムツカシイ事を知っているわけもなく、数値の単純比較でLEDの方が劣っていると判断してしまうだろう。

数値的にも蛍光灯に追いついたことで、こうした不本意な比較による購入機会の損失は避けられるし、実際の性能もそれだけ上がっていると言える。演色性も蛍光灯と遜色なくなっており、Raが70台で「LEDは色が悪い」と言われていた頃とは隔世の感がある。

ワットチェッカーで消費電力を計測した。

(単位:W) HLDZD1251(LED) HHFZ4160(蛍光灯)
最小 4 15
普段使い 15 32
最大 42 72

明るさ最小の時で11W、最大の時で30Wもの差が出た。ただし、LEDの最小は蛍光灯より明らかに暗く、割と暗めが好きな自分でも暗いと思ってしまうレベルなので実用にならないと思われる。一方で、蛍光灯の最小も暗いは暗いが、何とか実用になるレベルの明るさはある。

普段使いは、自分が定常的に使っている明るさでの消費電力。感覚合わせなので厳密に同じ光量ではないだろうが、LEDの方が17Wの節電という結果になった。これで元を取ろうと思うと、1週間あたりの使用時間を36時間(平日5日×4時間+休日2日×8時間)として、1年間52週の節約電力は31.8kWhとなる。24円/kWhとして年間の節電料金は763.7円/円なので、9.3年という計算に…。一人暮らしだとこんなもんすかね。

グラフのサンプル数の違いは調光機能の差によるもの。

HLDZD1251 (LED)は5段階調光の値で(連続調光も可能だが面倒なのでやってないw)、逆にHHFZ4160 (蛍光灯)は連続調光しかないので調光ボタンを1度押した時の値を記録している。手動押下なので若干のバラつきがあると思われる。

照度計などというハイテク機械は持ってないので、一眼レフカメラで露出を固定し撮影した。

撮影条件:PENTAX K-5, 1/20, F4.0, WB=N:昼白色, JPEG縮小加工のみ

スペック上はHLDZD1251 (LED)の方が演色性が高く色温度は暖色寄りとなっている。

しかし実際の色味感覚としては、明らかにHHFZ4160 (蛍光灯)の方が演色性が良い。HLDZD1251は青白い光で、物が淡泊な色合いに見える。肌色が特に顕著で、HLDZD1251の下では青白く不健康な見え方になる。黄色あたりのスペクトルが抜け落ちてる感じ?これはちょっと頂けない。


1)
LED照明は製品の実際の明るさで、蛍光灯は蛍光管が発する全ての光の明るさ。蛍光灯はカバー等を装着した時のロスが考慮されていないので、典型的にLED照明より良い数値になる

ブレーカー落としたらマザボのBIOSが飛んだでござる

ブレーカーを間違って落とした(電気使いすぎとかじゃなくて本当に間違ってスイッチを落とした)ら、家鯖のマザボZ77A-GD65のBIOSが飛んだ(´・ω・`)

電源入れていつまで経ってもサーバに繋がらず、モニタを繋げてみると「No Signal」。コールドブートしても「No Signal」。

マザボのデバッグ用LEDのコードを見ると、55と表示された後に03に戻る事を繰り返していて、コード表と照らし合わせるとメモリの初期化段階で落ちてるっぽい。ならば必殺メモリ抜き差し!をしてみるも「No Signal」。ああ無情。

メモリ交換か、はたまたM/B交換か…と考えつつ、ふとBIOSの切り替えスイッチでBIOSを切り替えてみたら起動した!

予期せぬ電源断でBIOSが飛ぶことがあると噂に聞いたことはあるが、本当にあるとはねぇ…。まぁ、元々BIOSのフラッシュROMがヘタってて、このタイミングでお亡くなりになったという可能性もあるけど。頻繁に書き換える物でもないし、そう簡単にROMがヘタるか?という疑念はあるけども。何度か再プログラムを試みるも症状は改善しないので、マジ死亡っぽい。

とりあえず、デュアルBIOSで助かったぜ、というお話。

  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo