Diary of Sacred Fox - October, 2005

The Quintetには通算 179068 人(今日:0, 昨日:0)のお客様が来場しています

2005/10/05

うがぁ

寮における洗濯
洗濯機はとうぜん複数台が洗濯室に設置されている共有
したがって, 使うときに洗濯物を持ち込んで, 終わったら速やかに回収する, それが基本, 当然だが深夜には使わない, 人間として当たり前
しかしながら洗濯の終了時間を1分1秒単位で予測できる人間は存在しないし, 洗濯の存在をとはいえ, せいぜい半日暫く忘れて放置してしまう人もいる
そういうときに後続の人が洗濯機を使えないと困るので, 当然ながら止まっている洗濯機からはつまりは前の人の洗濯物邪魔なものを排除することが当然のように行われる
そういう場合に備えて洗濯機の傍には洗濯籠を置いておくのがこの寮での不文律, 籠があれば排除先は籠になるが, 無ければ容赦なく一応土足禁止のフローリングなのでそこまで汚くは無いが, それでも普通は嫌なものだろう床に打ち捨てられる, 自業自得であり, 文句は言えない

そんなこんなで聖狐もいつものように洗濯物を持ち込む
空いている洗濯機が1台, その近くの床には無残にも床に直接打ち捨てられた洗濯物の山
どうやら打ち捨てた後続の人がさらに洗濯物を回収した後のようだ, これもよくあること
結局その洗濯機に洗濯物を入れて, 洗剤もいれて蓋を閉める, 傍にはちゃんと洗濯籠を置く, 完璧な寮における洗濯手順
これで小一時間もすれば脱水まで終わった洗濯物が回収されるのを待って洗濯機の中で待っているか, 悪くても自分の洗濯籠に押し込まれているのが予想される結果

それから暫くして, そろそろ終わっているはずの頃合
洗濯室に入って愕然, 何故か私が使っていた洗濯機の蓋が開いていて, まだ『洗い』の段階すら終わっていない
おまけに傍に置いた洗濯籠も洗濯機2つ分ほど横に放り投げられている
そして床にあった洗濯物は回収済, どうやらこいつが犯人のようだ
普通に洗濯機(稼動中)に自分の大昔の洗濯物が入っているわけはなかろうに, 傍の籠を邪魔だからと無計画に突き飛ばして蓋を開け, 中身が他人の洗濯物であると確認して床を見て, やっと事情を把握して, 現状復帰もせずに自分の洗濯物を持って帰ったというところか

行き場の無い物凄い殺意を覚えるのですが, これをどうすればよいのでしょうか
今後籠の無い洗濯物は洗濯室の床ではなく分かりやすくやってはいけません寮の廊下にでも放り投げろと仰っているのでしょうか
とりあえずこの馬鹿寮生に言いたい, 洗濯機の蓋は頼むから閉めていってください, お陰で無駄な待ち時間が30分以上伸びたのですから…

2005/10/09

さいきんのできごと

まとめ書きっぽいのはお気になさらずに…

7号館の入館システム
従来のカードキーから学生証の非接触IC方式に変更
しかし, 入館可能者のデータの管理がボロボロになっているようで, 今のところ院生はピロティ側から入れない模様
因みに設置工事日には入れたんだけどねぇ…
他にもMTBさんが述べているような問題もあるので, 微妙な感じである
とはいえ, カードキーを財布から出さなくても財布を当てるだけで入れるのは便利
因みに周囲の情報を総合するとEdyは反応なし, Suicaは反応してしまうようです

某所で携帯予測変換バトンなるものを発見, ルールは以下のとおり

  1. 自分の携帯で入力して一番最初に出てきた文字を書く
  2. 変なのが出てきても変えないでちゃんと書く

勝手にもらってきてやろうかとも思ったけど, ためしに見てみたら人名が大量にヒットして公開できないものになってしまったので諦め, 携帯の文字入力なんて番号を登録するぐらいしか使ってないからなぁ…
因みに聖狐の携帯料金無料分の使途の半分は研究室のメールの転送に伴うパケット代です

2005/10/28

ソースコード晒し

これだけ作り終えるのにむちゃくちゃ時間を食った
おまけに数式は画像資料少なすぎ & 説明なさすぎ & 数式内に5であるべき数字が1になっているところがあった誤植はやめてくれ
何をやっているかは推して知るべし

private static double[] getLUV(Color c) {
    const double Xr = 0.950456;
    const double Yr = 1.00;
    const double Zr = 1.088754;
    const double udr = 4.0 * Xr / (Xr + 15.0 * Yr + 3.0 * Zr);
    const double vdr = 9.0 * Yr / (Xr + 15.0 * Yr + 3.0 * Zr);
    double X = 0.412453 * c.R / 255.0 + 0.35758 * c.G / 255.0 + 0.180423 * c.B / 255.0;
    double Y = 0.212671 * c.R / 255.0 + 0.71516 * c.G / 255.0 + 0.072169 * c.B / 255.0;
    double Z = 0.019334 * c.R / 255.0 + 0.119193 * c.G / 255.0 + 0.950227 * c.B / 255.0;
    double yr = Y / Yr;
    double L = yr > 0.00856 ? 116.0 * Math.Pow(yr, 1.0 / 3.0) - 16.0 : 903.3 * yr;
    double D = 1.0 / (X + 15.0 * Y + 3.0 * Z);
    double ud = 4.0 * X * D;
    double vd = 9.0 * Y * D;
    double u = 13.0 * L * (ud - udr);
    double v = 13.0 * L * (vd - vdr);
    return new double[] {L, u, v};
}
private static Color getRGB(double L, double u, double v) {
    const double Xr = 0.950456;
    const double Yr = 1.00;
    const double Zr = 1.088754;
    const double udr = 4.0 * Xr / (Xr + 15.0 * Yr + 3.0 * Zr);
    const double vdr = 9.0 * Yr / (Xr + 15.0 * Yr + 3.0 * Zr);
    if (L == 0.0)
        return Color.Black;
    double Y = L > 903.3 * 0.00856 ? Math.Pow((L + 16.0) / 116.0, 3.0) : L / 903.3;
    double L13 = 13.0 * L;
    double U = 3.0 * (L13 * udr + u);
    double V = 1.0 / (4.0 * (L13 * vdr + v));
    double X = 3.0 * U * Y * V;
    double Z = ((12.0 * L13 - U) * V - 5.0) * Y;
    double R = 3.240479 * X - 1.53715 * Y - 0.498535 * Z;
    double G = -0.969256 * X + 1.875991 * Y + 0.041556 * Z;
    double B = 0.055648 * X - 0.204043 * Y + 1.057311 * Z;
    return Color.FromArgb((int) (R * 255), (int) (G * 255), (int) (B * 255));
}

元の式は多少違うけど, ECCのMathematicaに食わせたら多少簡単になったのでそっちを採用, 導出過程はわかりやすかったんだけど, そこに誤植があるんじゃぁねぇ…