2008/01/14

Bloggerプロフィールの干支

Bloggerのプロフィールは生年月日を入力して[星座を表示]にチェックを入れるとなぜか干支まで出てきます。

ただ、私は1980年(申年)の1/24生まれなので、「申」と表示されるのかと思っていたら「未」とでました。年じゃなく年度で区切られているのかと思ったのですが、つい最近「干支は節分から切り替わる」という話しを聞いたので調べてみました。

結果からいうと、節分(新暦の2/3前後)ではなく、旧正月(旧暦の1/1)から切り替わります。1980年の旧正月は2/16なので、1980/02/15までは未、1980/02/16からは申年になります。

日本人より日本に詳しいBlogger…

以下大雑把に調べた結果です。細かいところは端折っています。

太陰暦
旧暦。月の運行に基づいている(一ヶ月が29.5日、一ヵ年が12ヶ月・354日)
太陽暦
新暦。太陽の運行に基づいている(一ヶ月が28~31日、一ヵ年が12ヶ月・365.24日)
節分
春夏秋冬の開始日を立春、立夏、立秋、立冬と言い、その前日を節分と言う。ただし、近年の「節分」というと立春前の節分を指す。
立春
立春の基準日は冬至(一年で最も夜が長い日)と春分(昼夜の時間が一緒になる日)の中間。旧暦では正月(旧暦の1月1日)前後に立春が来る。ただし、旧暦は月の運行基準で、立春が太陽の運行基準で決まるため、当然ずれる。新暦は太陽基準のため概ね2月3日前後に節分と立春が来る。これらのずれ(=暦と季節のずれ)を調整するのが閏年。
干支
干支は旧暦使用中から適用されていたので、本来は新暦ではなく、旧暦基準で決める。
干支の切り替えが「節分」と言われる説は、新暦の節分が旧暦の正月近くになるためかと思われる。ただし、旧正月と新暦の節分(2月3日)は毎年わりとずれが発生する。
例えば今年(西暦2008年)の旧正月は新暦上の2/7(新月の日)。そのため、旧暦基準で考えるなら2008/02/06生まれは亥年。2008/02/07生まれは子年になる。
干支が新暦の節分基準であれば、~02/03生までが前年の干支、02/04~生が今年の干支と考えて差し支えない(若干ずれる年もある)。
旧暦の正月基準であれば、毎年異なるので要調査。以下は私の知り合いの生まれ年の旧暦基準の晦日と正月。
2008~02/06亥年02/07~子年
2007~02/17戌年02/18~亥年
1995~01/30戌年01/31~亥年
1986~02/08丑年02/09~寅年
1987~01/28寅年01/29~卯年
1982~01/24酉年01/25~戌年
1980~02/15未年02/16~申年
1978~02/06巳年02/07~午年
1968~01/29未年01/30~申年
1954~02/03巳年02/04~午年
1950~02/16丑年02/17~寅年
1934~02/13酉年02/14~戌年
1921~02/07申年02/08~酉年
こよみのページ 節分の日取り

2008/01/01

Shared stuffのローカライズ(日本語化)

Googleのその他多くのサービスと同様URLの後ろに

&hl=ja

を付けると日本語表示されました。ほぼ機械翻訳のままですが

ひょっとしたら私がGmail他の設定を英語表示にしていたので、Shared stuffも英語だったのかもしれませんが、メンドイので調べません。

最近ソーシャル機能にダメだしを食らうことが多いGoogleですが、それにしてもShared stuffネタは少ないですね。温度が低いというか。確かにいじれるところが(まだ)少ないですが。

WSHの暗黙の最上位オブジェクトはscriptlet

a.hanai 公開モノ置き場 | scriptletオブジェクト
WSHにおける最上位オブジェクトとして「scriptlet」オブジェクトというモノが存在します。

HTMLの(中でJavaScriptを使う)場合、宣言なしにwindowオブジェクトが使えますが、JScriptの場合このwindowオブジェクトはありません。

JScriptの場合、WScriptが最上位のオブジェクトと説明するサイトもありますが、windowと同様の暗黙オブジェクトとされるなら、echoを書くたびにWScriptのSを小文字で誤タイプしてキレたりする必要はなくなりそうなもんですし、関数がWScriptのメンバになっても良さそうなもんです。

function main(){} WScript.echo(typeof WScript["main"]); // undefined

つまりこのコードでundefinedではなく、functionが返ってきて欲しいわけです。

で、実際に上記のサイトどおりscriptletを参照するとそのような動きになります。

<job> <script language="JScript"> function main(){} WScript.echo(typeof scriptlet["main"]); // function </script> </job>

ただし、これはwsfの場合でjsの場合、やっぱり使えません。

function main(){} WScript.echo(typeof WScript["main"]); // undefined WScript.echo(typeof scriptlet["main"]); // error('scriptlet'は宣言されていません)

ラッパークラスを作るような、ある程度の規模のコードならどっちにしろJScript単体では無理があるので、wsfの方を使えということでしょうか。ただ、複数ライブラリを読み込むようなある程度の規模のwsfファイルでグローバルな名前空間は逆にあんまり使いたくないですね。