ももらぼっ!にっき


2006年07月07日 [長年日記]

_ [Maven] ドキュメントのURL。

何度となくサイト内で迷子になってしまっているので、覚書として。

_ あ。

30万hitsを超えましたねー。


2006年07月11日 [長年日記]

_ [WM5][W-ZERO3] mememo Ver.0.01 リリース。

引数の内容を、指定したファイルにメモとして保存するだけのソフト、mememoをリリースします。 memory memoってことで、mememoと名付けてみました。

何に使うんだ…?ってのは、もう少々お待ちください。

コレ単体だと、役に立つところは無さそうに見えますが、別のソフト(これから作成予定)を組み合わせると役に立つものになるハズです。多分。きっと。


2006年07月25日 [長年日記]

_ 立方体切断パズルを解いてみる。

結城さんのブログに、立方体切断パズルがあったので解いてみました。

(1) 断面が正六角形になる切り方は何通りあるでしょうか。

断面が正六角形になるということは、元が正六面体なので、 全ての面を通るように切っているということになります。 ということで絵を書いてみると、こんな感じになりました。 立方体の図1

なので、切り方は4通り。

一応、

  • 隣り合う2辺のそれぞれの中点を結ぶ直線は1面4本
  • それが6面あるので、4 × 6 = 24
  • 六面体なので、6で割って、 24 ÷ 6 = 4
  • というわけで、切り方は4通り。

なんてことを最初に考えたわけだけど、一番最初の前提を 証明する術を思いつかなかったので、絵を書いて納得しちゃいました。

(2) その切り方をすべて使って立方体を切り刻んだとき、全部で何個の「かけら」に分解されることになるでしょうか。

一回で全ての面を通るように切っているので、毎回かけらは倍に増えるだろうから、

2 ^ 4 = 16

で、16個に分解されるのかな。 「だろう」が基準なので怪しいですが、この後の問いで 実際に絵を書いて分割してみれば証明できるでしょう。

(3) どのような形の「かけら」が何個できるか、内訳を簡単に説明してください。

全ての切り方は正六面体の中心を通っているので、真中に向かって錐の形になると想像。 これまた絵を書いてみます。

立方体の図2

それぞれの六面体の頂点から正六面体の中心に向かって(ちょっと見にくいですが) 線を引いてみました。 これによると、三角形6個で構成される六面体が8つと、四角錐が6つできるようです。 なので、二番目の問いは間違ってましたねorz 14個が正解だったようです。

ということで内訳は

  • 三角形6個の六面体が8つ
  • 四角錐が6つ

の計14個になります。

(4) 「かけら」の体積を計算して、その総和が立方体の体積(つまり1)に一致することを示してください。

まずは、簡単そうな四角錐から求めます。

  • 四角錐の底面の面積は、元の正六面体の一面の面積の半分なので 1/2
  • 高さは正六面体の中心までなので、一変の長さの半分で 1/2
  • 錐の求め方に従って、 1/2 × 1/2 × 1/3 = 1/12
  • これが6つあるので、 1/12 × 6 = 1/2

次に六面体の面積を求めます。 このままだと求めるのが大変なので、元の正六面体の頂点側の三角錐と 中心側の三角錐の二つに分割して考えます。

まずは、頂点側の三角錐を求めます。 正六面体の1面だったところを底面として考えます。

  • 面積は 1/2 × 1/2 × 1/2 = 1/8
  • 高さも 1/2
  • 錐の求め方に従って、 1/8 × 1/2 × 1/3 = 1/48
  • 全部で8つあるので、 1/48 × 8 = 1/6

最後に、中心側の三角錐を求めます。

  • 二つに分割したところを底面とすると、一辺が Sqr(2)/2の正三角形となるので*1 Sqr(2)/2 × Sqr(2)/2 × Sqr(3)/4 = Sqr(3)/8
  • 高さは、(正六面体の対角線の長さ/2) - 頂点側の三角錐の高さ として求めます。
    • 正六面体の対角線は三平方の定理より、 Sqr(1^2 + (Sqr(1^2 + 1^2))^2) = Sqr(3)
    • 頂点側の三角錐の高さは先ほど求めた体積より、 Sqr(3)/8 × ? × 1/3 = 1/48 これを解いて、 1/48 × 3 × 8/Sqr(3) = 1/2*Sqr(3)
    • ということで、 Sqr(3)/2 - 1/2*Sqr(3) = 1/Sqr(3)
  • 錐の求め方に従って、 Sqr(3)/8 × 1/Sar(3) × 1/3 = 1/24
  • 全部で8つあるので、 1/24 × 8 = 1/3

最後に求めた3つを足すと、1/2 + 1/6 + 1/3 = 1

ということで、無事1になりましたとさ。

*1  Sqrは平方根の意味ね。VBより


2006年07月29日 [長年日記]

_ [W-ZERO3] メールのバックアップ。

…を行うソフトをちょこちょこと作っていたんですけど。

ごめんなさい。挫折してもいいですか?orz

現状のソースはeximailという名前でこのあたりに置いています。 なんとなーく動いているんですが、現在以下の問題が発生しています。

送信済みアイテムがexportできない。

受信済みアイテムフォルダとか、振り分けフォルダとかのメールはexportできているんですが、送信済みアイテムフォルダがexportできません。 試してないけど、下書きフォルダもダメかも。

exportはPR_CE_MIME_TEXTプロパティから取ってきているだけなのですが、受信メールと送信メールでは扱いが違うのかもしれません。

\Windows\Messagingフォルダ以下にPR_CE_MIME_TEXTで取ってきたデータと同様のデータが入っているわけですが、受信メールと送信メールではデータ形式が違っています。この辺と関係あるんでしょうかねぇ?

あ、そうそう。

上記\Windows\Messagingフォルダの内容について、皆さんの環境ではどうなっているか教えてください。

私の環境では、受信メールのファイル名は「xxxxxxxx1000001f.mpb」、送信メールのファイル名は「xxxxxxxx81030102.mpb」となっています。 で、受信メールはヘッダも含まれた情報が、送信メールは本文の内容だけが入っています。

このファイル名の命名ルールと内容について、みなさんの環境でも同じでしょうか?

importすると、pmailのメール一覧に情報が表示されない。

importすると、メール一覧には[送信者なし]、[件名なし*1]、今日の日付がそれぞれ入ってしまいます。 メールの内容を見るとちゃんと件名も送信者も日付も入っているんですけど。 どうも、一覧とメール本文ではデータの参照の仕方が違うようですね。

importするときもPR_CE_MIME_TEXTに値をセットしているだけなのですが、これだとPR_CE_MIME_TEXTだけにしかデータが入らないようで、それ以外のPR_SUBJECTとかPR_MESSAGE_DELIVERY_TIMEとかには連動して値が入ってくれないようです。 個別でSetPropsするとちゃんと値が入ったので、頑張ってメールヘッダを解析して値をセットすれば解決しそうです。

…ということで。

2番目の問題はなんとなく解決できそうなんですけど、1番目の問題の解決策が見つかっていません。

誰か助けて!

*1  「懸命な死」とか変換しやがったorz

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ ももたろ [星羽さん> そーなんですよ…。 これらの問題が解決せず、ずーっと苦戦しとります。 ファイル名の命名ルールが同じとのこ..]

_ 星羽 [「送信済みアイテムフォルダがexport出来てない」というのは、exportしたものをimportしてみて分かったの..]

_ mo39024 [何のお役に立てませんが…私の環境も同じファイル名のルールでした。]


2006年07月31日 [長年日記]

_ [W-ZERO3] kickmailの不具合?

先ほどメールで、

kickmailの/dirが003ESでは正しく動作しないみたいです

との報告を受けました*1

一度ツリーがチラット表示されて受信済みに変わります。そしてなぜか二度起動するとツリーが表示されます。

とのことなのですが、esを持っている方、同じ現象が発生しますでしょうか?

まだ、esを手に入れていないので、調査ができないのです…。

#es持っててVS2005も持っている開発者な方、パッチ作ってくれないかなー(超他力本願)

*1  転載の許可は頂きました。

_ [JavaScript] submitのキャンセルができない。

いつもJavaScript関連とかとかとかで参考にさせてもらっている回転と脱線さんとこに、 「ダブルサブミットというか連打対策」というエントリがありました。

そこで、

submitをキャンセルできるかと思ってたんだけどできねーのね。

と書かれていたんですが。

<html>
<head>
  <title>submitキャンセルテスト</title>
  <script>
  function testForm_submit() {
    var f = document.testForm;

    if (f.isCancel.checked) {
      return false;
    } else {
      return true;
    }
  }
  </script>
</head>
<body>
<form name="testForm" onsubmit="return testForm_submit()">
  <input type="checkbox" id="isCancel" name="isCancel" value="1" /><label for="isCancel">キャンセルする</label>
  <input type="submit" value="さぶみっと" />
</form>
</body>
</html>

こんな感じでキャンセルできてますが、こーゆーことじゃないのでしょうか…?