観察日記 2012-08-24

Flonumと不変オブジェクト

r36798 で flonum が入ったわけですが。Feature #6763

あー、flonum導入で32bit環境と64bit環境でFloatのインスタンス変数やtaintの挙動が異なるようになったのか
なんか不味いことになりそうですか
その辺考えたつもりなんだけど
taint は考えてなかったな
Float って taint な可能性ってあるんかな
インスタンスメソッドメソッド上書きしてたりすると思いっきりtaintですね
それは32/64で共に禁止したから良いが (注: 元から禁止されている)
> 09:59 nurse > インスタンスメソッドメソッド上書きしてたりすると思いっきりtaintですね
taint の定義ってそれだっけ
s/taintですね/汚れてますね/g
汚れるの定義は難しそうな
そうですね

flonumってFloatは別クラスなの? ←いまさら
どちらもFloatですよ
じゃあ差異は0じゃないといけないのか
FixnumとBignumみたいにクラス別なら多少は挙動が違っててもいいのかなとか思って
Floatの挙動かえてもどうせ非互換なんだから、Flonumクラスつくって、スクリプト中の浮動小数即値はFlonumになるというルールにしてtaint欲しい人は明示的にFloatオブジェクトつくってねとしたらだめなのだろうか
うつくしくない
C#のボクシングみたいに内部的にオブジェクトができてほしい?
あーまあそれでもいいですよ > へんなことしたやつはboxing
boxingは object space で object id が見えてしまっているので、そこらへんを考えないと穴がありそうだ
Rubyは常にオブジェクトがあるのでboxingもなにも
taintが欲しいかじゃなくて、taintが保持されるべき状態になることがあるかと申しましょうか
C#にも常にオブジェクトはある。
C#だとvar a=1.0; var b=1.0; とあるときに、b固有の何かってありませんよね
JavaScriptだとオブジェクトにすればなんかあった気がするが
a=new Number(1.0)とかか
Java でいう primitive 型と Object 型,だろうか
Javaも7からauto boxingはいるんだっけか。わすれたけど
7 からだっけ?
(知らない)
C#はなんでもオブジェクトだがオブジェクトがスタックに乗ったりヒープに確保されたりする
var a = 1.0;ってやるとスタックに乗る
Object a = 1.0;ってやるとヒープに逃げる
それはオブジェクトモデルとは関係無さそうな
どうかな。オブジェクトモデルそのものではないと思うが関係ないかというと
そもそもboxing/unboxingとスタックに乗るか乗らないかは根が深い関係があると思われるので。
そこはそうだけど、オブジェクト固有のデータを持てるかとはジャンプがあるな
auto unboxingがある時点で持てない気がする
ジャンプがあるのは認める。いまのケースだと auto unboxing はありえないものね
unboxしたいシーンもないし
特異クラスと同じく、一回特異クラスになってしまったら、もう普通の世界にはもどれない
というか、オブジェクトじゃないとRubyの世界に存在できないので、unboxできるはずがない
それはオブジェクトとは何かという根源的な問題に触れているように思う
ここでオブジェクトと値という対比がboxingだと立場になっているのでそういう反論が出てくるのだとおもう。一般的にはこっそりproxy objectが生成されるしかけのことなので私的には矛盾しない
Fixnuは常にこっそりproxy objectが存在するんだろうか
どうなんだろう
unboxingされた値さんがその言語に存在しなければそれunboxingじゃねーだろ感がある
で、RubyにオブジェクトでないC#的な「値」はない
Rubyにおける「値」ってのはインスタンス変数が共有されちゃうやつかなぁ
unboxingにこだわるなあ
unboxingというか、値とは何か、オブジェクトとは何かってのはとても重要なことですから
オブジェクトとはなにかだけで1年は議論できる、もちろん結論は出ない
まず、わたしの主張となるせさんの反論はかみあってないと思っている
わたしはunboxingさせろとはいってなくて、さっきと違う言葉でいいなおすと、ある操作をしたときに proxy object が自動的に生成されて taint を持つことを許すのはありやなしや
それはなんというかtaintさせることが目的になっているので本末転倒である
特異メソッドもできるよ
普通のオブジェクトじゃないというのが制限の由来でしょ
非即値化ですね
うん

特異メソッドは前から定義されないのでいいのだが、
インスタンス変数は持てるのがひっかかる
特異メソッド持てるようにしたとして、
a=1.0; b=a; c=1.0; def a.foo;end; a.foo; b.foo; c.foo
むりじゃないかこりは
やだやだできなきゃやだ
しかしどう考えても現実的じゃなかった。
taintに自然に拡張したいならb とcにfooはできてはだめなんだよな
つまり、この世には無数の1.0があるという宗派に改宗しないといけなくなる。
それもやだ。
taintが目的じゃなくて
両方却下されたのでこの件はおひらき
taintされなければならいないような例が存在するかってのが求めている答え
non flonumだと特定のfloatが独自のインスタンス変数を持てるので、そこが懸念ポイント
ああ、即値のtaintってなんじゃらほいってこと?
Webフォームから入力された数値をDBに登録したいお^^
数値に変換できてる時点でサニタイズ終わっているはずだもんな
で、即値は常にサニタイズ済みだろうと考えられている
bignumやnon flonum floatはあやしい
rational/complexあたりはアウトだと思っている
rationalはサニタイズ済みと仮定できないということ? > なるせさん
インスタンス変数のほうの話かな
いや、実は仮定できるのかな
とりあえず特異メソッドは持てなかった
72.to_s #=> "千早" とかしたいよ?
途中から見たのでよくわからんけど、即値オブジェクトが云々というより、不変オブジェクトが云々という観点で考えるべきなのではないか。
その指摘は正しいような、実装と理念を混ぜてるような
rubyのオブジェクトモデルにimmutableって概念はあるのだろうか
たまたまない。
あんまり明には書かれてない気がする
ので、混同が生じているのではないだろうか。
ない、ってあれだな、あるんだけど、影が薄い。
Timeはimmutableだな
オブジェクトモデルにはないんだけど、特定のクラスの設計においてimmutableにしていることはある
BignumとかFloat(not flonum)とかRationalとかComplexとかは
いまその混乱の狭間に置かれているという感がある。
しかし Stringがimmutableだけど taint ありな言語はいくらでもあるわけで、symbol みたいに immutable でかつオブジェクト共有してるから即値としてつかえるよん的なクラスでないと議論がすれちがうな
変更不能、と、不変、はちょっと違う。
無窮オブジェクト
普遍オブジェクトという観点では、a=1<<128; def a.foo;9;end (1<<128).foo #=> 9 とかなってほしい
なってほしいかなあ。あんまりそんな気がしないんだけど
実用じゃなくて理念の話なので> 1<<128

理念から入ってますが、
(1) 初めからあって永遠にあって決して変わらないという種類のオブジェクトがあるはずである。これをとりあえず不変オブジェクトと呼ぶ。
それは不変じゃなくて普遍ではないか
かもしれない。
呼称は適当なのでとりあえず受け入れてくれ。
不変だとはじめからあるは条件になくても使っていいイメージ
see also http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/33832
(2) 具体的な例としては true false nil なんかは間違いなくそれである。
(3) 「数値」というのもそれに該当されるのではないか。つまり、1はどこにいっても1であり、どこに現れる1も全て同じオブジェクトのはずである、ということ。
(4) 「不変オブジェクト」が特異メソッドなりtaintされたりしちゃいけないという道理はあるかもしれないしないかもしれない。ただし、どこかで1がtaintされうるとしたら、他の1も(同じオブジェクトなので)taintされることになることに留意。
その立場だと特異メソッドもtaintも、そんなんあるはずないだろ。はい解散。でおわりな気がする
どこかのアホが即値の1をtaintしたら全スクリプトが汚れるとかありえんし
4.taint; 13.taint
別にあって悪くはない。
(5) 「不変オブジェクト」の実装には、たまたま、VALUE埋め込みというテクが使える^^
(6) 一方、VALUE埋め込み以外で「不変オブジェクト」を実装するのは相当困難である。
とりあえずこんなあたりは前提として共有されたい。
floatが普遍オブジェクトであるべきかってのには若干の議論の余地はある気はしないでもなかりけり
6なんだけど不変なんだから別にふつうにオブジェクトつくってヒープにおいてもいいはずである。変更されそうな操作をことごとく蹴るという話に帰着するだけなので
うん。
で、Bignumとか一通り禁止されているのだが、インスタンス変数が漏れてる
というわけで、今はそういう方向なわけです。
2.0から禁止で(^^
で、ある1をtaintしたいけど他の1がtaintされるのおかしくね? っていうのはオラも十分理解できるんだけど、
それはつまり「ある1」は値としての1ではなくて何か特別な意味・意図を付与された1なのであり、
なのでそれはNumericの1ではなくて、1という値を持つ別のオブジェクトなんでないの、
ゆえにラッピングして扱って、そのラッピングの方にtaintをつけるべきじゃないの
と思うわけです。
なるほど。
var a=1; a.taint じゃなくて
var a=new Number(1); a.taint しろと
思うんですが、それってつまりboxing/unboxingを自前でやれフハーハッハッハっていうことなので
なんだか悲しい気もする。
特別なぼくだけの72を作りたいって話なんだから、自前でやるのは当たり前な気もする
やー、ぼくは自前でやれに傾いてますよ
taint必要な状況がほぼないんじゃね。という意見に説得された
というわけで、理念は理念としておいといて、利便性という観点から適当に妥協するという考え方はなくもないかもしれにゃい。
まぁ、fixnuやflonum floatはおいておいて、non flonum floatが目下の問題。
FixnumとBignumは明らかにクラスが違うことが見た目でわかっちまうので、ちょっと挙動が違ってもしゃーないかもしれない。
flonum/non flonumはそうでないので、許しにくい。
モヒカンに全部禁止していくと非互換になる。というのが課題だとおもっていい?
Integerに統合したい
非互換になるのはどうでもよくて(マテ
どうでもいいのか
どうあるべきかの方が問題
まあ、できる/できないの観点から考えても、全部禁止に倒すしかなかろ、とは思う。
うん。他に選択肢ってあるのかな?
その「全部」の洗い出しが十分じゃないかも、という感じはある。インスタンス変数が漏れてるとか、Rational/Complexあたりがどうなのかいまいちわからんとかいうのはそういうことかと。
なるほろり
Rationalは特異メソッド禁止してた
Complexもだな
Numericで禁止されてるので、その子孫はみんな禁止されてると思う。
で、えーと、全部禁止してもたらされる非互換についてはですね、
「理念から言ってできるはずないのにそんなことしてたおめーが全部悪い」
でいいんじゃないかと。
そうですね。

Rational(1,2).extend Module.new できるのっていいのかな
module Foo;def +(b);9;end;end;(r=Rational(1,2)).extend Foo;r+1 #=> 9
おい
特異メソッドナシナシにするのが正しい方向な気がしてきたので、extend 禁止がいいのかなあ
しかし特異クラスができた時点でもうRationalじゃないんだから、ゆるされるはずという立場もあるのか
r=Rational(1,2); s=r; r.extend Foo; s+1 とか
破壊的にクラスが変わるってのはちょっと聞いたことがない
禁止候補:特異メソッド、特異クラス、インスタンス変数、オブジェクトフラグ(taintなど)
他なんかあったら、あるいは反論あったらどうぞ。
そうね
obj.extendした時って、obj側は何も呼ばないのか
Numeric#extend定義して禁止すればいいか
てっとりばやいね。
デザイナmatzの見解は聞きたいところではあるな。
そもそも class < 特異クラス作成禁止APIが必要
普遍オブジェクトのクラスとして登録、とかか。
FrozenCore.register_universal_class :Rational
ObjectSpaceのメソッドであろう。
Classクラスのメソッドかもしれないが。
不変=immutable 普遍=universal か
ObjectSpaceかも
universal_classはクラスがuniversalな気がしてしまうのでやや微妙
Classに登録というよりは、世界に対しての登録なので
ふむ、まあそうね。
深淵というニュアンスでFrozenCoreだったんだけど、ObjectSpaceの方が適切かも
Classのメソッドなら、Class#declare_univeral みたいに「俺がガンダムだ」的に叫ばせる感じ。
叫んで登録されるような安っぽいメソッドではないのです
まあ、ObjectSpaceでいいと思います。
そもそも、declare_universalがあるクラスしか登録できないのはおかしい。

日本におけるジュラルミン史

ヒンデンブルク号爆発事故 - Wikipedia
{unak_} 同事故現場にたまたま居合わせた日本の住友金属の技術者が、ヒンデンブルク号の破片を拾得し(中略)
超々ジュラルミンを開発するきっかけとなった。
要出典だなあ。
超々ジュラルミンの開発は1936年、ヒンデンブルク号の事故は1937年。
ちょっと調べりゃ一瞬でデマだと分かる。
これはひどかったw
あ、ノートにも書いてあるね。

http://gatefold.blog33.fc2.com/blog-entry-79.html
{wakamu} title bot: 零戦(ゼロファイター)99の謎 渡部真一 | 歴史と時代小説 読みものログ
ヒンデンブルグ号じゃなくてツェッペリン号だという説が
関東電化工業株式会社 社史 創立前史 にもそうあるな
特定の機体っつーよりも、硬式飛行船のシリーズ、っつーか
飛行船による空襲か
ロンドンで撃墜されたツェッペリンはないような気がするんだが。
ツェッペリン飛行船一覧 - Wikipedia を眺めている
> なお、第一次世界大戦においては、ツェッペリン飛行船は119隻建造されて、偵察目的のほか、英国に対する長距離爆撃にも使用された。しかし、戦術的に有効な打撃を与えることはなく、主に空を舞う威圧的な飛行船を見せて敵国の市民の戦意を削ぐ心理的な効果を狙ったものであった。
フランスには落ちてるからそれかねえ。
いずれにせよ眉唾
攻撃はした、っつーことは
冶金屋が分析するに十分な量の破片ぐらい落ちてきていても、ってぐらいはあるんでない、とか

テムズに落ちたやつがいるようだ。
ちょっと信憑性が出てきた。
ひんでんぶるぐのきじはへんしゅうした
LZ48
テムズに落ちたやつですね
ちうか1936年だともう極秘でもないんじゃないかと言う
うん。
ん、ツェッペリン号のジュラルミン採用から今年で100年ですね
おめでとう
おめでとう
おめでとう
てか、飛行船の時代って結構あったんだな
飛行機とかワロス
という時代だったのです。
あんな鉄の塊がwうくわけww
大西洋横断してみろやwww
鉄の塊ならよかったけど、布の塊っていう。
いや、当時は、飛行機はまだ非金属でしょう
とうじっていつ
硬式飛行船は、塊じゃないけど
飛行船の時代。
1925年+-10
零戦以前は木?
木も結構使われたようですね。
北の国では今でも現役だそうですが
もうちょっと前に、日本軍の全金属機が
七試だっけかな?
96式っすね。
名無し
ああ、試験機なら
もうちょっと前にあるんじゃないかと思うが
七試がどうだったかは知らない。
陸軍の92式があるか?
海軍制式だと96が最初、っぽいですね
そしてあれだ、木で作った飛行機というと、デ・ハビランド モスキート - Wikipedia とか
残念ながら、チャーチルの『第二次世界大戦』には出てこなかった。
http://www.spp.co.jp/history/index.html
{wakamu} title bot: 住友精密工業
大正 5年 (1916) 住友伸銅所でジュラルミンの研究を開始
http://www.b-b.ne.jp/kaigun/cgi-bin/tree/data/1213.res
「日本でのジュラルミン製造の始まりは、山下誠一機関少佐が第一次世界大戦中イギリスで撃墜された
ドイツの飛行船「ツェッペリン」の破片をイギリス海軍省から貰い受け、住友伸銅所で分析、大正八年に完成したのが最初といわれます
個人名北
これはリアリティあるな。
七試が全ジュラルミン製ってことも書いてあるですね。
大阪朝日新聞 1917.6.1(大正6) 最近欧洲の航空機 山下機関少佐談
すごいのが出てきた
おおお
確かにその時期に渡欧して、航空関係の情報をどっちゃりもって帰ってきてる
なるほどー
{unak_} 航空機の軍事的価値は益々重要視せられ目下の状況は航空機の効果の程度を云々するの時機を過ぎ航空機の援助なく軍事的活動は絶対に不可能と認められつつあり
大正6年は、ええと
1917年か。
今年で大正101年ですよ

観察日記 2012-05-15

原始オブジェクト

変なオブジェクトを見つけた時に、そのオブジェクトがどこで作られたか知りたいという話を受けて、

しかし、先日踏んだ謎のオブジェクトはFixnumだったのであった
Fixnumはこの世の開闢からあるのです^^
はじめにFixnumがあった
<__mrkn__> nil じゃないんだ
Fixnumはnilとともにあった
Fixnuはnilであった
マテ
nilは何もないがあるみたいなそういう
うむ。
nilはこの世の開闢以前からあるのです。概念として。
true/falseも
true/falseも概念だから他のオブジェクトと関係なく存在する的な。
TrueClassとtrueどっちが先にあるって、これはtrueだと決まっている。
すべてが nil になる
この世とはObjectSpaceである。
彼岸は
<__mrkn__> なるほど。true と false を認識した者が分類したことで TrueClass と FalseClass が生まれたんですね
いや三途の川が
GC
彼岸は例えばsocketの向こう、Marshalの向こう
しかしシングルトンメソッドが定義されていたので marshal できず
成仏できないことに
自縛オブジェクト
初めに、インタプリタがObjectSpaceを創造した。ObjectSpaceは形がなく、何もなかった。そのとき、インタプリタが「Objectよ。あれ。」と仰られた。するとObjectができた。
始めにクラスありき
インタプリタはそのObjectをよしと見られた。そしてインタプリタはtrueとfalseとを区別された。
目も鼻も口もなくてかわいそうだから穴を開けてあげよう
(そして死んでしまう
trueとfalseは区別する前から別物じゃない
trueをtrueだとみなすのが区別かなぁ
もともと別物だったけど、名前を付けた的な。
どうでもいいけどnil言い忘れた。
Fixnumもあるしな
TRUEをtrueと名付け、FALSEをfalseとされた。
nilがありFixnumがあった。
第一clock目のことである。
ついでインタプリタは「Classよ。ObjectSpaceにあれ。型と型の間に区別があるように。」と仰せられた。

そしてインタプリタは非nilnilとを区別された。
にすればよかったんだな。
nil, false, それ以外説も
Qundef, Qnil, Qfalse, それ以外説もあるな
nilやtrueはObjectSpaceにいないのではないか。
少なくともQundefはいないな...
Qundefがいないのはまぁいいけど
nilはいないがいるんだよ!
Fixnumは遍在する――いや、いないだろ
偏在してます。
なおFixnum Fixnumゆーとるけど、Bignumだって概念的には最初から存在しとるんやでー
同じ数値なのに別のオブジェクトだからなぁ
貴族じゃなくて平民な気がする
主なるインタプリタはBignumに言われた。「おまえは、この事をしたので、すべてのオブジェクトのうち、最ものろわれる。おまえは通常オブジェクトのように生成され、しかもnewもdupできないであろう。」

Fixnum は最初からあるってのは元ネタがあるんですが、誰が言ったんだったかな…。

観察日記 2012-03-22

教養ちゃんねる %ruby です。三種の神器とは鉄器のことではないか、という話。

「日本」はいつできたか

「日本」という国が本当は何者で、いつできたのかには色々と謎が多くて、この国が「日本」を名乗り始めたのは天智天武の頃だと各国歴史書が示しているんですが…。なお、旧唐書に改名の経緯が出ていることは前提としています。

http://www.bell.jp/pancho/k_diary-6/2012_03_10.htm 670年には日本を名乗っていたのか
{znz_v} title bot: 百済人将軍「袮軍」の墓誌に記された日本という国名
すると、不改常典同様天智天皇が定めたのかなぁ
ほう<国号問題
こうなると、近江令で国号を定めたという(比較的賛同者の少ない)説が有力になるのかな。

天皇」の起源

三皇五帝は前提としております。

実は「天皇」の呼称の最初も天智だったりしてね
その可能性は高いんじゃないですかねえ。
...
いや、674年か、唐の君主号が天皇になったのは。
それより先ってのは考えにくいかねえ。
なるほど
ん?
武則天 - Wikipedia
{unak} 武則天は改名を非常に好み、660年(顕慶4年)には皇帝と皇后をそれぞれ「天皇」と「天后」に改名している。
これはバグだと思うのだが、なんか論拠あるのかな。
上元 (唐高宗) - Wikipedia
{unak} 元年:高宗・武則天が称号をそれぞれ皇帝から天皇、皇后から天后とした。
ムジュンしている!
そういえば武則天もなんかいろいろやってたな
やりたい放題ですあの人は。
4文字年号も彼女の発明。
なので、日本でも女帝の時代に流行っている。
とすると、天智時代の可能性もありそうだ
いやあ
660年は明らかに間違いだと思う。出典が出てこない限り。
で、(1)ほぼ同時代に唐と日本でそれぞれ同じ表記の君主号が偶然に成立した (2)日本で成立した天皇号を唐でも同じ表記で採用した の2つの仮説は共に信じがたい。

天智と天武

http://mdenka.blog85.fc2.com/blog-entry-1187.html ほぅ?
{znz_v} title bot: 「天皇」号と武則天〜或いは何故唐から先は「ナントカ帝」と表記しないのか - 殿下執務室2.0 β1
http://kodaishi-21.web.infoseek.co.jp/gimon-t-5.html
{znz_v} title bot: 天皇 5
そうだよな、なんで天智と天武には「天」がついてるのか不思議だった
それは
えーと
森鴎外だったかが
解説している。
ほう
意外な名前がでてびっくりでしょ?
うむ
実は、森鴎外は『帝謚考』という論文を書いてましてね
「天智」とは殷の紂王が身に着けていた玉。
ふむ、読んだ
あ、じゃあ以下略で。
ま、そういうことなのです。
しかし二人だけ天で始まる理由にはなってないな
森鴎外の説明では、「天」についてはたまたまですね。
ところで彼らの諡号をつけたのは淡海三船ですが
ちょうどそこにつっこもうとしていた
淡海三船は天智側だよね
弘文天皇(=天武に殺された大友皇子)の曾孫
彼は天武朝で生き残るためにそういうおべっかが必要だったんじゃないですかね。
時の情勢も天武側から天智側に振れ直した時期じゃなかったっけ?
どうなんだろう
天武朝終了後だったと思う
なので余計によくわからない
聖武天皇期だと思うんだが。
なぜかというと、聖武天皇の前の元正天皇までの諡号をつけているから。
天皇系図38-50代
記憶通りである
ちうか実質天武朝2代だな
一般に、天武朝の終わりは光仁天皇の即位ですね。
ただ、言われるほど天智系と天武系という対立があったわけではないという説もある。
あり
あぁ、まだ天武の男系か
はい。
持統天皇は天智の娘なので、どちらかというと持統が自分の血統に拘っただけという...
淡路廃帝こと淳仁天皇はご覧の通り持統の血統ではないのだが、故に一度は即位したもののちょっと情勢が傾いただけで廃位されている。
結局そこと天智本流が合流するまで続くと
結果的には持統が仲裁した感じになるのか、うまくたちまわったのか
いやあ
持統天皇は天武系とか天智系とか関係なく、自分の血統以外を敵とみなしていたんじゃないでしょうかねえ。
まぁ、理解できなくもない
例えば、葛野王という人がいます。
どういう人かといいますと
弘文天皇こと大友皇子の第一皇子。淡海三船の祖父です。
つまり、壬申の乱がなければ天皇家嫡流ですね。
しかし、壬申の乱があったので皇子と呼ばれず王と呼ばれる傍流皇族としての地位に甘んじることになります。
弓削皇子は殺されずに済んで良かったねという話か
さて、天武天皇の第一皇子である高市皇子は、壬申の乱時に唯一の成人(当時の)の天武の子として天武軍を率いて勝利しました。
っとおもったらしんでた
つまり、高市皇子は第一皇子であると同時に壬申の乱の最大功績者であり、ゆえに即位は確実だったのです。
ところが、彼の母は持統天皇ではありませんでした。
本来は天武崩御後に即位できたはずなのに、持統が待ったをかけて自分が即位してしまったわけです。
高市皇子自身は持統の元で太政大臣として遇されました。
この太政大臣というのは人臣最高位...ではなくて、天智天皇時代に大友皇子が就いていた職であり、つまり皇太子・共同統治者相当です。
つまり、持統は自分が即位したものの、高市皇子に対しては「次はあんただからね」というポーズを取ったわけですね。
しかし、持統が10年粘った結果、高市皇子は持統より先に病死してしまいます。
そこで、持統は皇族を集めて、次の皇太子を誰にすべきかを問いかけました。
やっぱり長生きしないとダメだのぅ
この時、年長の他の天武の皇子のをのけて、持統の子である軽皇子を推したのが、
件の葛野王なのであります。
持統は大喜びで葛野王の意見を取り入れました。
高市皇子の没後半年で軽皇子立太子、さらにその半年後には持統は軽皇子に譲位しました...
葛野王はおそらくこの功績によって式部卿に取り立てられることになります。
つまり、葛野王は持統に媚びることによって、なんとか朝廷内での生き残りに成功した、というわけですね。
てなわけで、その孫淡海三船の行動も、そういう血統を考慮して考える必要があるのではないかと思うわけです、ええ。
なるほろ
(おしまい)
なるほろ?
天智を紂王に喩える理由になってねーぞ!
つまり天智系嫡流なので天武系皇族に警戒され、よって持統一族の自己血統保持欲に媚びへつらうことによってしか生き残れなかった一族、というわけです。
なので持統に媚びなければいけないのに天武に媚びても違うような
持統のとーちゃん天智だし
当時の天皇聖武天皇であると考えると、
持統にだけ配慮して天智を持ち上げると、つまり自分(彼は天智嫡流であることをお忘れなく)を持ち上げることになるので、危険なのです。
なので、
天武えらいっす。天智はだめだと思うけど、持統さんは特別です。
とかいうポーズが必要だったのではないかと。
なお持統は言うまでもなく「血統を保持」の意味なので
へへへ、みなさんはこちらのご血統ですよね^^ という媚が込められています。
たぶん。
なるほろ
持統の血統が途切れた後、光仁天皇の即位で天智男系が復活するわけですが、
光仁天皇大友皇子の系統ではなくその弟の系統でした。
思うに、大友皇子系で朝廷内で生き残れたのは葛野王の系統くらいで、
持統の血統に媚び続けすぎたために逆に皇位を遠ざけることになったのではないですかねえ。
まぁそうなんでしょうねぇ
なお光仁天皇(即位前は白壁王)は当初は最も皇位に遠い皇族の一人と考えられていて(そりゃ天智系じゃあねえ)、
孝謙天皇の異母妹である井上内親王は、孝謙天皇に睨まれることを恐れて、あえて皇位争いに絡まない白壁王に嫁いだ、という説があります。
朝廷の権力争い怖いわー
さて、井上内親王は白壁王と結婚して他戸王という男の子を生みますが、
いざ称徳天皇(=孝謙天皇重祚)が亡くなってみると、持統の血統でかつ皇族の男子というのは
なんとこの他戸王しかいないという状況だったのでした。
なので、他戸王の父である白壁王が急遽即位することとなったのであります。
いやー、世の中、何が起こるかわかりませんね。
なんで持統の血統はそんなに強かったのじゃ
藤原のご加護?
さあ...
藤原氏もいろいろ内紛してるのでわからんっすね。
なお、光仁天皇は即位後1年もすると皇后であった井上内親王および皇太子であった他戸親王をそれぞれ廃し、3年後には二人とも殺してしまうのであります。
やっぱあっちの系統に対しては恨みがあったんですねえ...

不改常典の今

なんで聖武天皇とかも不改常典使ってるんだろう
そういえば、不改常典って今も伝わってるの?
不改常典に拘るのは、簒奪者一族の引け目だからですかねえ。
万世一系! 正統! とかやたらと天武系で強調されたのはそういうことではないかと。
天武天皇天智天皇の正統な後継者! みたいな。
でも天智に戻っても言及してる辺りがなぞなぞ
本当に正統だからじゃねw
まあ、天武系が言い続けたので定着した、ということかもしれない。
そういえば、不改常典は今も社長就任の際に踏襲され、
前社長がやれといった、わたしは恐れて前にも後ろにも進めなくなったががんばる的なものいいをする習慣ができた…とかいうデマを思いついた
不改常典 - Wikipedia
{znz_v} title bot:: 桓武天皇以降の即位詔
{unak} 不改常典はこの後しばらく言及されないが、
とか
微妙だな。
しばらくって天武系ですよね。
「天武系が言い続けたので定着した」説が怪しくなってしまう。
つっても、孝謙天皇の即位時にはあって、
まぁ、わたしが疑問に思っているのは、今上さんが知ってるのかどうかなのです。
桓武までの間には淡路廃帝重祚光仁天皇だからなあ。
重祚の際には不改常典についてはいちいち触れる必要ないよな。
先代に教えてもらえなかったんだろうか
いや、しかし光仁はなんで知ってるんだ
淡路廃帝光仁天皇は先帝の子孫じゃないので、
なので言わなかったのではないかという気がする。
直系・嫡系皇位継承法説だな。
まぁそれっぽい感はある
まあ、桓武以降は実は全然伝わってない法を適当に想定して言ってるという説は
それはそれで正しいんじゃないかという気がする。
それはそれとして不改常典は不改なんだから今も有効なはずだが
大正以降の天皇憲法皇室典範に従って即位してますねえ。
明治になってから言及されていないようですが
明治天皇は言及したんですかね。
微妙に気になります。
あの内容が実は不改常典なんだろうか
女帝が即位できないので、不改常典よりは厳しい内容であることは間違いない。
http://ourei.fc2web.com/date/tyokugo/kaigen.html ほう
{znz_v} title bot: 改元の詔
ちょうどそれ見てた。
これと別に即位詔があるのかないのかが気になる。
明治天皇は即位改元とある
「朕皇祖皇宗ノ威靈ニ頼リ、大統ヲ承ケ萬機ヲ總ス。」とか即位っぽい
うーん
実はその10日ばかり前に御即位ノ宣命というのが出ていました。
ほう
切りどころわからないので大事なところを引用すると
{unak} 掛巻も畏き平安の宮に御宇しめす倭根子天皇か宣給ふ此天日嗣高御座の業を掛巻も畏き近江の大津の宮に御宇しろしめしし天皇の初給ひ定賜へる御代々々の御定有が上に方今天下の大政古へに復し賜ひて橿原の宮に御宇しろしめしし天皇の御創業の古に基き大御世を弥益々に吉き御代と固め成し賜はむ其大御位に即せ賜ひて進も不知に退も不知に恐み座さくと宣給ふ大命を衆聞食と宣給ふ
近江の大津の宮に御宇しろしめしし天皇 = 天智天皇
初給ひ定賜へる御代々々の御定 = 不改常典
おお
というわけで、明治天皇は不改常典によって即位していると。
進むことも引くこともできないけど命なのでやるぜともいってるな
うむ。
たぶん歴代の例文どおりなんでしょうね、これ。
橿原の宮に御宇しろしめしし天皇 = 神武天皇
なのはいいんだけど
平安の宮に御宇しめす倭根子天皇 って誰
先帝孝明のことかしら。
なんだろう
倭根子は天皇にかかるとあるので無意味だな
うん
平安京天皇ってその頃全員だよ的な。
まあ、先代だろう。
先代から命じられた皇位継承を、天智天皇が定めた不改常典に従い、神武天皇の創業に基くよき御世を開くべくうんたらかんたら
かな。
そういえば他でも先代からってテンプレだったな
うーん
大正・昭和・平成の即位詔が見当たらない。
言及がないどころかそもそもないのだろうか
わかんないんだよねえ。
平成のなら探せば見つかりそうなものだが。
不改常典はもともと譲位のためのものじゃないかと言う指摘があった
うん。
まぁ、文面的に確かにそうだな
しかし、天武系の実際のややこしい継承時に言及されていない。
むしろそのようなときにこそ言及されるはずではないか
という反論がありますね。
うむ
即位後朝見の儀 平成元年1月9日
{unak} 大行天皇崩御は,誠に哀痛の極みでありますが,日本国憲法及び皇室典範の定めるところにより,ここに,皇位を継承しました。
これくらいなのかなあ。
天皇皇后両陛下 - 宮内庁
しかし、天皇の諱をでかでかとのせるあたりなんというか時代なのだなぁ的な思いがある
まあね。
さっきの引用は http://www.kunaicho.go.jp/okotoba/01/okotoba/okotoba-h01e.html#D0109 より。
{znz_v} title bot: 主な式典におけるおことば(平成元年):天皇陛下のおことば - 宮内庁
{znz_v} title bot:: 即位後朝見の儀平成元年1月9日(月)(宮殿)
それは詔なのだろうか
即位礼正殿の儀 平成2年11月12日
{unak} さきに,日本国憲法及び皇室典範の定めるところによって皇位を継承しましたが,ここに「即位礼正殿の儀」を行い,即位を内外に宣明いたします。
うーん
不改常典が改められたように聞こえる
登極令 - Wikisource
大正・昭和の両天皇はこれに沿って即位したはずである。
改元詔書を出すこと、は書いてある。
それだけー
なんてこったいw
他に詔を出す気配はないんだよもん!
たしかにさっき改元詔書はあったな
やっぱり改まった疑惑
こらー!>明治天皇
不改なのに変えるなよ!
やっぱり明治朝と称すべきだな

天皇制廃止論

こんな調子でなし崩しに女系継承も認められてしまうんですかねえ。
女系継承するくらいなら天皇制廃止しろ論者な俺
まったく近頃の若者は伝統を軽んじている
廃止してくれれば色々といやらしい文書が公開されるに違いない
陵墓が発掘できると大変な成果が得られるというのもあるな。
是非私が生きてる間に終わって欲しい
むりっぽい
少なくとも箸墓は掘りたい、というのは全ての考古学者の期待だよなあ。
何も入ってない気もするが。
ないことがわかることに意義があります。
1000年ほど前に盗掘されました^^ みたいな。
江戸時代とか経てるしなぁ
なお私は邪馬台国北九州説乗りなので、近年の纒向=邪馬台国説を吹っ飛ばすためにも是非掘ってほしい。

邪馬台国はどこにあった

そもそも、纒向が当時としては他と隔絶した規模の大都市であったということは、
それこそ纒向が邪馬台国ではなかったという証明になると思うんだがなあ。
倭国はずっと小国分立で統一勢力がなかったが、話し合いで卑弥呼を共立してようやく混乱が収まった。
ということは、邪馬台国は他を隔絶する規模の大国ではない。
また、なぜ分立していた小国が連合しないといけなかったかを考えると、
狗奴国との戦争が挙げられる。
ということは、分立していた小国が連合しないと対抗できないほど狗奴国は強大であったと考えられる。
故に、狗奴国は邪馬台国連合に対抗できる規模の大国あるいは大連合である。
とすると、北九州が邪馬台国連合、纒向が狗奴国と考えるのが自然ではないだろうか。
という説を世に訴えたいがめんどくさい。
奈良から魏に使い送るってのもちょっと遠いしなぁ
そもそも神武さんはよそから降り立っているので、
というのは関係なかった
纒向を邪馬台国にしちゃうと、じゃあ日本のおそらく西半分以上をまとめた超大連合に立ち向かう狗奴国ってなんなのよ、となってしまう。
邪馬台国の頃には出雲にも国があったはずだなぁ
東日本全部狗奴国なんじゃね(
考古学的に当時にそんな大勢力はない。
というのは、東日本はマジ過疎
うむ
東が過疎なのって気候的な理由とかってあるんでしたっけ?たまたま?
縄文時代は東の方が圧倒的に人口多いですよ。
つまり、稲作の普及が人口逆転の理由としか考えられません。
縄文時代の人口なんてどうやって調べるの?貝塚の数なんて数えても意味ないでしょ
その辺は考古学者に聞いてくださいw
あー、稲作ならしゃーねーな
この辺は、いわゆる「定説」
まぁ狩猟採集と稲作じゃ比べようもない
農耕すれば人口爆発するほど人生甘くなかったはずである
ていうか、稲作がチート
まあね。
近畿では3世紀の終わりになるまで鉄器がほぼ出ない。しかし3世紀の終わりになるといきなり大量出土して北九州を上回る。
なので、北九州の邪馬台国畿内の狗奴国に破れて併合されたんじゃないですかね^^

ヤマトはどこから来たか

邪馬台国が鉄器をかかえて滅ぼして本拠地移動説
ていうか、神武さんはよその土地から乗り込んできたわけで、
ヤマトはもともとよそだったはずである。
神武さんは数人程度で出発してるので
そんな大規模移動したとは考えにくい。
事実上の初代天皇である崇神天皇の宮が磯城瑞籬宮とゆーところで、これは纒向のすぐ南。
筑紫の国宇佐でしばらくうろうろしている
やっぱスタート地点北九州とかその辺りだよなJK
時代も一致するので、崇神天皇が纒向一帯を拓いて国を建てたと考えて差し支えない。
そのご先祖様が九州からの流れ者というのは、まあそうなんじゃないかねえ。
嘘つく必然性もないしな。
ってーと、ヤマトは邪馬台国とも狗奴国とも違うって言う結論になるな

邪馬台国の人が狗奴国を征服して作った的な
狗奴国でいいぢゃん。
まぁそれでも。
普通はこの経緯だと「邪馬台国でいいぢゃん」って言いそうな気がするが
九州から先進技術を持って流れてきた一団が、橿原のあたりの小国を暴力団的に乗っ取って定着
まさに技術立国
その子孫が一大勢力を築き上げて、北九州に鉄を求めて殴りこみ。
慌てた北九州はなんとか連合作って対抗しつつ、中国に保護と権威を求めて遣使。
そこで中国様からはめでたく旗が一つ届きましたとさ^^
ストーリー的にはまあ特に大きな問題はなさそう。
あぁ、そういう時間軸か
崇神天皇を3世紀後半に置くのはかなり真っ当な推定のはずなので、
神武天皇は実在するならそれより前の人。
卑弥呼はそのもちょい前か
まぁ、すでにヤマトは起こっていた頃だな
卑弥呼は248年に死ぬので
ほぼ同時代人ですね。
皆既日食ですっけ
はい。
そういや古事記にも日食の記述あったっけ?
崇神天皇は258年没かなあ、と考えられている。
天岩戸じゃなくて戦闘中にってのがあったよーな
ちょっと思いつかない<日食
気のせいっぽいな
崇神天皇について、西国と激しく戦った、とかいう記事があればいいんだけど、
残念ながら四道将軍を派遣して四方を平定した、という程度なんだよなあ。
あとまあ、その後で、出雲服属のお話がありますが。
出雲ではたいそうやんちゃしたっぽいですが。
おそらく4世紀前半になるだろう景行天皇は自ら西征し、山口県で賊を誅殺。九州に上陸して大分県で土蜘蛛を誅殺。さらに宮崎に入って熊襲を平定。
まあ古事記にはないので嘘ですが^^
^^
しかしまあ、これが天皇自らじゃなくてヤマトタケルにやらせたとか部下にやらせたとかでもいいんだけど、
4世紀前半についに九州の実効支配が成立した、という話だとするならば、
この時についに邪馬台国連合の残滓が滅んだんじゃないですかねえ。
倭の五王はどっちじゃ
倭の五王はヤマトの大王でいいと思うよ。
定説どおり、武が雄略でいいんじゃないですかね。
homi
でと、筑後国山門郡という実に都合のいい地名がむかーしから九州にはあるので
あまり悩まずそのあたりが邪馬台国でいいと思うんだけどねえ。
http://digital.asahi.com/articles/SEB201111150016.html
{_ocha_} (AutoCheck): 朝日新聞デジタル:鉄を制するものは倭国を制す [AR]
{znz_v} title bot: 朝日新聞デジタル:鉄を制するものは倭国を制す
そして八幡製鉄所につながるのである。
学者さんたちの意見が理解できないのは記事のせいだろうか。
{unak} 「近畿と九州の仲が悪かったのなら、なぜ九州のものがあるのか。両者が敵対関係にあったかどうかを考え直してみる必要がある」
普通にあるだろ。
{unak} 他地域からの搬入品が多い纒向遺跡でも九州の土器はほんのわずかなのに、この現象をどう解釈したらよいのか。
日本史学者ってなんでバカなの
製鉄技術だけは九州からぱくってこないと手に入らなかった。
九州とは対立してるから九州の土器はほとんどないけど。
という、それ以外の解釈があるのかどうかと問いたい。
相手が鉄器で武装してたらこっちも鉄器がないと対抗困難なんだもん、そりゃ必死で技術を盗むよねえ。
鉄器対青銅器は一方的なはずだよね
あるいは、神武天皇が西から持ってきた技術こそが製鉄技術で、
これがあったから神武の子孫は大和で勢力を築けたのかもしれない。
こっちの方がまだ素直かな。
神武の同行者見直すか

神武の持っていたテクノロジー

宇佐が製鉄のメッカだったと思うんだけどまともな資料がぐぐりあてられない。
というわけで、神武一行が宇佐にしばらく滞在したのはそういうことだと考えるといいのではないか。
神武は熊野で困った
高倉下がフツノミタマをもらって、それを渡したら楽勝だった
軻遇突智とかその辺がようするに鉄だよなぁ
名刀ですか。
ちょ
あれですよ
AbsoluteVirtueの戦利品
最強NM!
g>フツノミタマ absolutevirtue
{znz_v} google web bot: 布都御魂/FF11用語辞典 - http://wiki.ffo.jp/html/3889.html (and 3 hits)
残念ながら両手刀w
今侍強いので大人気
あ、そうなんだ。
時代は移り変わるのう。
2009年くらいに両手武器強化パッチが入ったのさ
http://wiki.ffo.jp/html/14213.html
{znz_v} title bot: 両手武器強化祭り/FF11用語辞典
2007だった
しかしまあ、鉄製武器つええ、という説話なんすかねえ、これは。
なんじゃないかなぁ
しかし、その受容に際して相応の犠牲を払ったようにも聞こえる
ただこれ、自分らが持ち込んだものじゃなくて、現地の住人に貰ったんですよね。
そこがひっかかる
ストーリー的には残念。
でも元々は高天原の品ですよ
当時の鉄器は全部西から来てるからじゃないかな。
たぶん舶来品なんでしょう。
タケミカヅチさんって軻遇突智だから、イザナミの死の原因の神のパーツだし
これはまあ、現地の住人の中から武器持参で呼応するものが現れた、と見るのかなあ。
しかも渡来系なのかね
おそらく。
だとすると、神武の出立時は超ノープランだったんだろうか
ばかだな
馬鹿ですね。
まあ、そういうもんじゃね?
まぁね
「なんか夢見た! いっちょ旗揚げしてくる!」
こうだもん。
あいはぶあどりーむ!
まぁ、バカだけど夢と人望がある若者が世界を取るってのは普遍ではある
うむ。
ニギハヤヒ(物部氏の祖)が先に降臨して大和にいて、
長髄彦に擁立されていたけれど、結局神武に降るんだよね。
で、物部氏は武器製造・管理がお仕事。
もとから物部氏こそが持ってたんだろうか
難しいですねえ。
神武が信頼して預けたのか
ニギハヤヒは多分神武と同類なんだよね。
うむ。そこ嘘ついてもしょうがないし
西からの流れ者。
天火明命 - Wikipedia
火は扱っている。鉄を扱っているようには見えない
天孫ニニギの兄とか子とかか。
金山彦神 - Wikipedia
この辺かなあ。
でも神武に同行してないし
金屋子神 - Wikipedia
こっちの方が面白いかな。
最後のほう。
{unak} 金屋子神社より西方約40kmに石見銀山があり、当地に佐毘売山神社(さひめやまじんじゃ)があるが、この『佐毘売』は、金屋子神の別名ではないかと言われている。『さ』、『さひ』は鉄を意味していると推測されている[2]。
{unak} 尚、饒速日尊や物部氏と関係が深いとされる三瓶山は古来、佐比売山と呼ばれていた。また、三瓶山の西約5kmに、石見国一宮で、石上神宮と表裏一体であると言われる物部神社が鎮座する。
金屋子神の生まれを問えば、元は葛城 安部が森』 ほう
ふふふ。
とりあえずニギハヤヒ物部氏とはくっついた。
しかしなあ、これは出雲征服後に物部氏がその辺管轄したってだけかもしれんしなあ。
順序前後がよくわからない。
元々なのか後からなのかどっちかなぁ
ていうかもともと神武さんは高千穂か
神武が製鉄技術を大和に持ち込んだ、とかいうのはちょっと厳しそうだな。
もともと持っていたわけでは無い気がする
ヤマトに元からあったわけでも無い気がする
東征の途中でゲットしたのではあるまいか
知ってはいたんだろうけど、持ってこれるほどの財力とかもなかったんだろう。
「日向の高千穂で」というあたり、そもそもそういう機密にアクセスできたとは思えない
鉄に関係ありそうなの宇佐くらい。
宇佐でなんか友達作って、
その友達が後で鉄器持ってきてくれた
的な
うん。
「俺がビッグになったら来てくれよな」的な。
鉄器もらったら跡は楽勝でした的な流れに見える
八咫烏 - Wikipedia
宇佐神宮など、太陽神に仕える日女(姫)神を祭る神社
!
ほほう
繋がったか。
つまり太陽ってのは鉄か
光る鉄製武器
炉じゃない?
あー、そういうのもあるか。
日本書紀だとフツノミタマのくだりはなくて、
かわりに八咫烏がぴかーとひかってうわぁってなって勝利とある
とすると、フツノミタマ=八咫烏=鉄器かなぁと
まあ、宇佐から必要な武器が届いたという話なのかな、これは。
なんでしょうかね
タケミカヅチは... 鹿島神宮ねえ。
うーん
常陸国一宮である鹿島神宮門前町として栄えた。現在は神栖市とともに重要港湾である鹿島港を中心とした鹿島臨海工業地帯を形成し、住友金属工業企業城下町として鉄鋼企業を中心に工業が盛んな都市である。」
というわけで、ここもやっぱり鉄じゃないっすかね
まあ、そうなんだけど。
なので、鉄→タケミカヅチっていう逆順だと思う
タケミカヅチ、別名豊布都神(トヨフツ)。
タケミカヅチ - Wikipedia
あんまり僕の信じてない関裕二によると、トヨというのは海神。
もともと高天原はフツで、同じ鉄だからタケミカヅチフュージョンした、かなぁ
鉄の製作に水は使うが、どうかな
なんか飛躍がある気がするな
いやー
航海術と製鉄術がセットなんですよ。
まぁ元々海の向こうだしなぁ
宇佐神宮は海の神を本来は祭っているはずだけど、そのあたりは同時に製鉄の土地
とかね。
ほむ
鹿島神宮も船とありますな
ね。
ま、海を渡ってきた渡来人が製鉄技術をもたらして、
そして鉄の材料は当初は輸入するしかなかったということを考えると、
製鉄技術は航海技術がないと維持できなかったと考えてもいいかもしれない。
あぁ、材料輸入なのか
砂鉄から製鉄できるようになるまではねえ。
たたら製鉄はいつからじゃ
実は謎なのですw
弥生時代にはある所にはあったとあるな
鉄鉱石からの方が簡単で、
日本にはほとんど鉄鉱石がないので、
その辺が輸入品だったことはまず間違いない。
フツノミタマを分析かけたいな
http://www.eonet.ne.jp/~etizenkikou/etizensi2.html ふぅん
ああ、そうそう、越ねえ。
ヤマタノオロチはコシ(越)から来て、首から刀が出ましたね。
なるほど
すると逆にフツノミタマは越じゃ無い気がするな
そうね。
ところで、日本のコシじゃなくて中国にあった越の国ですが
優れた精銅技術で知られていました。
ほう
越の隣にあって激しく争いあった呉ですが、
日本は呉の太伯の子孫の国であるという説があります。
http://lunabura.exblog.jp/15054896/ ふむふむ
{znz_v} title bot: ひもろぎ逍遥 : 高句麗壁画(1)八咫烏高句麗と日本の賀茂氏そしてサッカーへ
八咫烏といえばサッカーですねえw
八咫烏が選ばれた経緯については若干不明瞭な点があったと記憶している
しかし、ほう、八咫烏はやっぱり鉄なのか。
しかし高句麗か。
高句麗語と日本語が近いという説があるのはご存知ですよね^^
高句麗が鉄ってのはわりと普通に合った気がする
すると、倭が朝鮮半島奪還に執着してたのは百済じゃなくて高句麗だったのかな
百済も王族は高句麗と同根。
そうか
どっちも辿ると扶余になる。
百済の被支配民と新羅は別系統。
紛らわしいな。
扶余でぐぐると物部は扶余人とかでてくるな
高句麗百済支配層(=日本も?)
すると物部は保有者か
百済支配層≠百済非支配層
百済支配層≠新羅
しかし、百済非支配層=新羅 かどうかは不明。
まあ、近いんだろうと思うが。
http://members3.jcom.home.ne.jp/sadabe/oni-megami/oni-megami-2-4.htm
{znz_v} title bot: 物部氏は扶余人
どうでもいいけど、新羅の初期の王は倭人
物部氏は鹿をトーテムとする氏族」うーん
扶余系部族でも狛族(高句麗)のトーテムは「鳥」ふむ
ふーん
つまり、両方鉄だが別と。
藤原の力の源泉も鉄だったんだろうか
どうだろうねえ。
持統系の力の源泉も鉄を抑えていたかどうかではないかと飛躍している
製鉄の画期が6世紀初頭で、とかなんか。
8世紀頃はどうだろうね。
もう当たり前だったのかどうか。
それでも製鉄集団を抑えているかどうかって、今の軍部を抑えているかどうかレベルの力な気がする
まあ、それはそうだな。

三種の神器とは

三種の神器の剣も鏡も鉄のことだと思うんだけど、
勾玉はなんだろう
鏡は銅じゃないすか。
まぁそうか
八咫鏡
ううむ
八咫なんですよね。
ただ、単なる単位だからね。
まぁ、扶余族は銅もやってるので、とも思う
ようするに、三種の神器ってのはアイテムそのものではなくて、
アイテムに象徴される技術もしくは職能集団こそが神器なのではないかという
そうかもしれない。
そりゃもってりゃ王になれる。
すると、全て鉄か、重要なテクノロジ三種
八尺瓊勾玉はメノウ
瑪瑙だとあんまり重要だとは思えない
呪術かなぁ
http://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%9E%E3%83%8E%E3%82%AA%E3%83%A4
{znz_v} title bot: 玉祖命 - Wikipedia
{_ocha_} (AutoCheck): 玉祖命 - Wikipedia [AR]
クォーツとかレンズとか言われると重要だが
...
火をおこすのに使う?
豊玉神
また「とよ」が来たよ。
まあそれはいいとして
聖火をともすのってレンズだっけ?
反射鏡
だよね
すると瑪瑙関係ないな
八尺瓊勾玉は璽とも言われるので、んー
まあ、珍宝なのかなあ。
剣璽という言葉があって、つまり天叢雲剣八尺瓊勾玉のことなんだけど
つまり八咫鏡は少々扱いが違うことになる。
上なのか下なのかわからんが。
鏡はアマテラスの現し身なので、上なのかなぁ
「なお、三種の神器のうち神鏡は宮中三殿賢所の神体であるため、この儀式では動かない」
ところで、この三点セット、
どうも北九州〜山口あたりにおける王権の象徴らしいんですよねー。
ほう
さっきの景行天皇の親征時に、山口で服属したなんとかっていう奴が剣・鏡・瓊を差し出している。
剣と地図とかありがちなきがするが
また、その後に仲哀天皇神功皇后と親征した際にも、福岡の連中が同じセットを出している。
ただまあ、僕は仲哀天皇の親征ってのは、景行天皇の親征の話と本来セットなものが分割されただけのような気はしていますが、
まあ、それぞれ別々の地名を挙げてそういう服属時の三点セット献上の話があるのは、そういうことっすかね。
アマテラスの神体ってのはなんか後付けな気がするな
ヤマト王権に置いて三点セットが成立したのはどうも相当後らしくて
具体的には奈良時代
どうもねえ、最初は璽だけだったようなんだよねえ。
まぁ中国がそうだしねぇ
勾玉はその名残なのかなぁ
まあ、よくわからない。
その名残にしてはまたとよがでてくるのが謎だが
まあ、少なくとも古事記にはニニギが高天原から3つ持ってきたとあるし
http://yatusiro.cocolog-nifty.com/blog/2009/04/post-ba61.html ふむ
{znz_v} title bot: 577年の扶余「王興寺」にも「勾玉」が: 隼人研究室
それなりに大事なものという意識はあったんだろうけど...
http://blogs.yahoo.co.jp/miyamoto83885/16175592.html
{znz_v} title bot: 鉄の伝播経路(9) 出雲国の交易・(勾玉と鉄)  - 上総歴史散歩・玉前神社の謎 - Yahoo!ブログ
倭国が勾玉を朝鮮半島に輸出し、代わりに鉄の延べ板を輸入していたと考えられます」
つながった

原材料調達の手段か
これがないと鉄が手に入らないわけか。
つまり、三種の神器は全て鉄の象徴と。
鉄を持ってれば王権は手に入るに決まってるって意味な訳だ
ぱっとぐぐって三種の神器が三つとも鉄を意味してるって説は見かけないな
鏡が厳しいのだと思われる。
八咫烏と鉄ってのも難易度高いか

観察日記 2012-03-02

ビジーループとスレッドスイッチ

(nurse) [ruby-core:42972] ついに懸賞金が
(mame6) 50$ かあ
(nurse) tk入れないと再現しない気がするのがハードル高い
(unak) 50$だとせいぜい1時間くらいで解決しないと元が取れないな。
(unak) 再現しないんだよなあ。
(nurse) 環境整えても?
(unak) どれくらい真面目に整えるかによるが、とりあえず手元環境でこのコードでは。
(nurse) tkすらいれずに./miniruby -e'Thread.new { loop { a = 1 } };Thread.pass; loop{p 2}'だと無理だったレベルしか試してない
(unak) 劇重なので嫌なテストコードではある。(無限ループなので)
(nurse) loopあるからタイマスレッドの割り込みきくはずだよなぁ
(nurse) loopあるからjumpあるから
(unak) ただまあ、劇重なので固まってるように見える可能性は否定しない。
(nurse) なるほど
(mame6) ubuntu で試したら問題なく動いた
(unak) 100msecだったっけ。
(nurse) 250
(nurse) 1.9.3では
(unak) あり?
(unak) #define TIME_QUANTUM_USEC (100 * 1000)
(unak) に見える。
(nurse) あり
(unak) まあ、別に100でも250でも大差はないんだが。
(nurse) unsigned long limits_us = 250 * 1000;こっちじゃない
(unak) おや
(unak) というのはともかく、sleep 0を入れればちょースムーズに動くので、なんだかなー、と思わなくもない。
(nurse) sleep 0でいけるって事はnative threadな気もする
(mame6) hang っていうからには少なくとも数秒は動かないくらいの状態になるんだよね
(mame6) ビデオを見ればいいのか
(mame6) 6 回再生に泣いた
(mame6) なんと、重いだけのように見える
(unak) うむ
(mame6) resize できてるよ。遅いけど
(mame6) そういうのは hang とはいわない
(unak) そりゃ重かろう
(unak) としか言いようがない。
(nurse) なんでそんな重くなるの?
(nurse) あ、コアの数?
(mame6) 関係あるのかなあ
(nurse) リサイズってnative threadで動いてない?OS側の
(nurse) コアが2つあれば無限ループと同時に動く
(unak) よーわからんけど、250msに一度しか処理しないならあんなもんじゃね?
(nurse) あぁ、そっちか
(unak) ぴちょんだと100バイトコードごとにスレッド切り替わると思うので
(unak) rubyよかスムーズじゃないかなあ、とは思う。
(unak) 再コンパイルとか嫌過ぎるので試す気起きないが、250msを10msとかにしたら相当スムーズになるのではないかと思う。
(tal_) native threadで動いててもcallbackでRubyコードのブロックが設定されてないかどうかの チェックが入ってたりするのではないだろうか
(tal_) そのチェックの為にGVLを取りにいかざる得なくてthreadの切り替わりを待つ事にみたいな
(mame6) Ubuntu ではそんな言うほどラグが起きないのだけどなんでだろう
(nurse) そして今更動画を見た、なるほど、これをhangと言われてもわかるわけ無い
(nurse) 1.9.3/trunkでも?
(unak) ふうむ
(unak) 10msに変えてもそんなに軽くならなかった。
(tal_) 動画みてhangって何の事をいってるのか分からなくて本文を読んでしまった
(mame6) 1.9.3p0
(mame6) ハングって嘘ついたので損してるなあ
(tal_) パフォーマンスバグかな
(nurse) バグというか仕様というか
(unak) もうちょっと真面目に考えるか。
(tal_) tkのコードを読む必要があるのが
(tal_) 重い。
(nurse) しかし、$50だと飲み代にもならんな
(nurse) 1ドル1000円くらいにならないと
(mame6) 下手に金を出されると損得勘定を始めてしまうのだな
(nurse) 何事もやるなら徹底的にというわけで
(nurse) シグナルの割り込みは100msでチェックするとかかな
(nurse) いや、シグナル割り込みは100msごとに見てるか
(unak) んー
(unak) なんか難しいコードだなあ
(unak) ふむ。
(unak) limits_us と TIME_QUANTUM_USEC の両方を小さくしないと意味なかった。
(unak) というわけで、例えば両方10msにすると、かなり滑らかになる。
(nurse) シグナルは回収するけど、きててもRubyスレッドスイッチしない?
(unak) 250msに一度しかスイッチしないってことじゃないのん
(unak) つかまあそういうコードだと思うんだけど違うのかな。
(unak) そうさなあ。わかりやすいのは
(unak) Thread.new{loop{}}; loop{p Time.now.usec; sleep 0}
(unak) こんな感じのコードですか。
(nurse) なんかバグっぽい気がするな
(unak) つか、これで250msごとにしかスイッチしないってのを意図して今のコードがあるとしか思えないのだが。
(unak) 確かこさきさん主導だったと思って、軽く疑義を提示したような記憶もあるのだが...
(nurse) そんなことあったっけ
(nurse) あったとしても私はきっと読まないだろうが
(unak) 検索しにくい
(nurse) 変更から追った方が早そうだ
(nurse) r32064
(unak) しかし何の説明もなくて泣ける。
(nurse) うちのgitは下に近永さんの解説が出てくる
(unak) それによると?
(nurse) fairnessを捨てて走り続けるようにしたとある
(unak) いやまあもうたどり着いたが
(nurse) そういえばそんな話を聞いた覚えはある
(unak) r32302は本質的にはコードの整理だけだな。
(unak) 1.8だと10msなんだっけか
(nurse) 1.9.2でもそんなじゃないっけ
(unak) まあ、忘れちゃった
(nurse) シグナルが来たら即処理して欲しいかもしれない
(unak) まあ、とりあえず、1.9.2では快適そのものではあるな<件のコード
(nurse) [ruby-dev:43465] これか
(nurse) [ruby-dev:43471] さすがわたし
(nurse) そういえばsleep 0よりThread.passの方が正しいな
(unak) そうですな
(unak) でもsleep 0の方が短くて書きやすいんだよもん
(unak) これはUnix脳っぽい
(nurse) うらぎりものめ
(unak) で、matzは「直すべき」つってんだから直すべきだよね。
(unak) そろそろ$50が見えてきた。
(nurse) こさきさんは直すべき。
(unak) 小崎さんは本当に250msに一度しかスレッドスイッチしないことを企図してたのかなあ。
(unak) うちの環境だと400msくらいになっちゃうんだけどw
(nurse) おらガチャピン早く出てこいガンガン
(nurse) そっちがおかしくね?
(unak) というのは、100msに一度しかチェックが行われないので、
(unak) 250msというのは実質的には300msになる。
(nurse) うん
(unak) で、250ms経ったかなー、というチェックに仮に50ms以上かかるならば
(unak) 次の100msまでさらに遅れるので400msになる
(unak) のではないかなあ。
(unak) 50msはかかりすぎな気もするが。
(nurse) 他のスレッドが100ms動いてるのかな
(unak) あ、自スレッドが100msか
(unak) さっきのだと、sleep 0なわけだけど
(nurse) 自分が誰かによるが
(unak) 即時にpassする気もするんだがなあ。
(nurse) いや、もう一人いるでしょ
(nurse) tkのGUI側スレ
(nurse) いや、そっちはいないのか?
(nurse) tkのmainloopスレがいるよね
(unak) いや、Thread.new{loop{}}; loop{p Time.now.usec; sleep 0} の方
(unak) 誰でも再現できる優しいコード。
(nurse) そっちの話か
(unak) Thread.passだと300msになった
(nurse) どう見るんだ
(unak) sleep 0だと100ms寝るのかな。
(nurse) 4くらいかな
(nurse) sleepは0を与えても寝るはず
(nurse) いや、仕様外だっけ?
(unak) というわけで、納得した。
(unak) まあ、100ms寝ても許せる気はする。
(unak) 微細なバグのような気もするけど(thread_win32.cあたりの)
(unak) ま、そんなこんなだけど、現象はこれで納得だよね。
(nurse) うむ
(nurse) 英語で頑張れ
(unak) ruby18だと劇速で感動する
(nurse) わたしは久しぶりに観察日記に日本語で載せよう
(unak) 俺は小崎さんを叩こう。

unak: そもそも彼の言ってる問題再現できます?
うん。
しかしtk何ぞ入れなくても ruby -e 'Thread.new{loop{}}; loop{p Time.now.usec; Thread.pass}' でいいと思うよ。
はて。Windowsだと sched_yield ないからタイマースレッドの起床間隔が10ms から100msに変わったのだけが効きそうな気がする。これはささださんに言われて100にしたはず
Windowsかんけーないと思うけどねえ。
俺のテストコードだとNetBSDでも300msごとなので。
で、まあ、一番知りたいのは、こうなることを覚悟の上でこの変更をしたのかどうか、だな。
うん
まっとうなコードが得をして、アホなコードが損をするなら割りにあうよね。という話になった記憶がある
{unak} > 「直すべき」でしょう。
だから、そうなってないように見える。

結論は例えば「既に合意済み。コードによっては250ms(300msだけど)に一度しかスイッチしないがそれはてめーのコードが悪い」でもいいんだけど、
その場合は「既に合意済み」の部分がどこにあるのかを知りたい。
なお、今のところ、matzの「直すべき」しか見つけられていないので、ダメ出し食らってるようにしか見えない。
ささださんのコメントの 10ms is too small for user level thread scheduling on recent linux (tested on 2.6.35) の意図というか根拠がよくわからないなあ
ハングはしてないから別件という認識
何と何が
ビジーループ書いて遅くなるのは別に不思議じゃないという感触かなあ。
ハングしたらだめってのと、1.9.2より遅いんじゃねって指摘
$50の人の「ハング」は、遅いという意味です。
動画見ろ
詳しくはビデオを参照。
動画みた。あれ遅いだけだよね。それにそんなに遅くないよね
俺も動画撮ろうか。どうやって撮るかわからんけど。
1.9.2と比べたら笑えるほど違う。
ハングっぽくおそいってのは、1.9.3だと1分かからないテストが1.9.2だと8時間越えとかそういうレベルに対しての指摘だったと思う
むしろ「ハングっぽくおそい」が何の話かよくわからない。
"the GUI will hang out badly, try to resize window to see it yourself"
あの時期にそういう話が何件かきていたはずなのです
あの時期とは?
matzが直すべきといっていた過去ログぐらいの時期
だめだな。記憶力が十分じゃないからささださんがいるな
Threadに機能を足そう。busyloop回したいけど他への影響を抑えたいthread向けに。
シグナルが来たらもっと早くスイッチするとかだとダメなんだろうか
それはすでにやってる気がする
あのmatzの「直すべき」の頃は、そもそも問題のコードがcommitされていない。
commitされる前の時点で、こさきさんが
ちゃうちゃう。1.9.2も劇遅になるケースがあるのです
むーん
で、tk対策で考えるといまthread.c で250msになってる強制スイッチタイムアウトを100msにするのが一番てっとりばやいかなあ。100だと遅さが体感できない
とてとて体感できたのですが...
たぶんWindows system内部でいろいろごにょごにょバッファリングしてるからあんまり早くしても意味ないと思うし
ん、どういうふうにコードいじりました?
[ruby-core:42974]
{unak} http://mla.n-z.jp/?ruby-core=42974
1.9.2だとストレスレスなのはなんでだろーなー
と思ったけれどめんどくさくて細かく見てない。
... ちょっと言葉足らずだった。
$50の人が [ruby-core:42981] で言っているように、こういう姑息な変更をしてもWindowsではそれなりにしか変化がない。
{unak} http://mla.n-z.jp/?ruby-core=42981
一方で1.9.2は大変滑らかに動く。
不思議だなあ。
わたしにWindows環境をまた構築せよと言われてる気がする
いや、別にそこまでは。
そうか、たぶんsleep 0で100ms寝てんじゃね? ってのと同じ話かなこれは。
他のスレッドがなければ寝ないあたりがたち悪いな
ストレスレスというのはtkが?
tkが。
動画を撮りたいところだな。
そちにはbotはいないんじゃないdすかね。
こっちを抜ければ too many connections が消えるのだろうか。ちょっと抜けます
paste>
{ko1_ndk} http://www.atdot.net/sp/view/8tw20m_kosaki3
usaさん、このパッチあててtk動かしてもらってよい?
Macだとこれでもぬるぬる動く
ほいさ
} else { かこわるい
しばらくおまちください...
Rubyだと改行するんだっけ?
うん
結論としては変わらず。
いや、ちょっと反応よくなってるのかなあ。気持ち程度だけど。
Windowsは謎だなあ
gvl_yield()とelseの中身って同じじゃね?
ああ、Windowsではそうだった

なんでこんなに違うコードなんだ?
WindowsのスケジューラにLinuxとかと同じ問題があるかどうかわからんかったからWindowsだけ1.9.2からあんまり変えない方針が継続してる
えー
結局の所、CPUとOSのスケジューラとRubyのスケジューラが、それぞれ違う事を仮定してるというのが本質だったので
かわりまくっとるやんけー
ははは
まあバグ報告あるたびにコードいじりまくったですけー
Windowsだけ1.9.2レベルまで戻す... のもなんだかアレですね。
1.9.2では結局どうしてたんだ
まず原因追及かなあ。と
ruby -vが無いとvalidationで怒られてた
関数名が変わっていて比較が困難
ああ、わかった。ここか。
タイマ割り込みごとにgvl_yield()してたと思ってほぼ間違いないな。
で、タイマ割り込みが10msごとだった、ので
結論としては10msごとに処理してるだけのはずなんだけどなあ。
unakパッチと僕がさっき貼ったパッチ両方あてたら1.9.2と同じになります?
ちょーっと重い気がするけど、許せる範囲
1.9.2と差分あります?
動きに?
うん
両方知ってたら明らかに差があるとわかるね。
なぜだろう...
じゃあ、なにか僕の知らない変更があるなあ
ちゃんと調べた方がいいフラグが立っているのは分かるんだが
Windows環境構築ってすんげえめんどくさい
うまく説明できないのだが、1.9.2はぬるぬる完璧
1.9.3はぬるぬるしないがストレスを感じるほどではない
ちがった。1.9.3改は、だ。
(1.9.3改と言いつつtrunkだから2.0.0だが)
あれ、じゃあストレスを感じるのはどれです?
素の1.9.3およびtrunk
ああ、1.9.3改==trunk ではなく 1.9.3改 ≒ trunk改といっていたのか
1.9.2>(ぬるぬるの壁)>unakパッチ+小崎パッチなtrunkまたは1.9.3>>>>(ストレスの壁)>>>>unakパッチなtrunkまたは1.9.3>>>>>>(操作不能の壁)>>>>>>素のtrunkまたは1.9.3
こんな感じ。
「ぬるぬるの壁」ってなんかきもい
あーとんさんの環境構築本どこいったー
g>達人出版会 arton
{znz_v} google web bot: 刊行記念:artonさんインタビュー 第1回 - 達人出版会 - http://tatsu-zine.com/books/1/pages/interview1 (and 351 hits)
あー
わかたかも
なんと
1.9.2ではcritical sectionでロックしてたのが、1.9.3以降はmutexになってる。
ので重い
ああ、そういえばささださんが変えてましたね
これはしゃーないのかなー。
critical sectionにしてpthreadと同じく、数百ミリに一回強制スイッチさせるのがいいんじゃないかと
動作が同じになって考えることが減るという意味で
ただ250msは100msまで下げないとだめだな
100msじゃだめなんじゃね、というのが俺の結論なんですけどね。
あ、でも確証がほしいので、いちどcritical sectionにもどしてビルドしてみてもらえません。ifdefでのこってるはず
のこってねー
Macではぬるぬる動くのになあ
そうだっけ
じゃあ、gitさんにがむばってもらって
visual studio expressのダウンロードが遅すぎて今日は作業継続不可能やな
MSめえええ
あめりかしょぼいな
ネットワークに関しては日本と韓国が世界一じゃないかな
韓国はADSLだから、とdisる
なので日本が世界最強
日本にはYBBとNTTがいたのでよかった
gitさんは使わないので、えーと
というか、そういう感じの違いじゃないよなこれ。
むしろYBBの手柄だよな。NTTが自発的に頑張る可能性があったとはおもえん
ほう
でもYBBだけだったらきっと今もADSLなんで
なるほろり
NTTだけだったらきっと、さすがに今もISDNってことはないだろうが、光だけど10Mbpsとかな気がする
ありうる
うーん
10ms化+小崎パッチ+critical section化で
ぬる、くらいにはなった。
が、1.9.2ほどぬるぬるしてない
うがあ
まず100msへの変更はベンチはかり直して、もんだいなさそうなら入れてしまおう。これだけでMacは解決する
あと何が違うんだろうなあ。
正直おもいつかないです
じつはtkが違うってオチはないですよね?
ははは
tkはともかくtcltklib.soは違うかもなあ
しかし同じのを試すのは(バイナリ互換性がないので)難しい。
誰だよ2.0.0に上げたやつは
下げればいいじゃない
どんだけ俺を苦しめる気だ
差分を見る限り、そんな大きな差がある感じではないな。
$50遠いなあ。
まあ WindowsWindowsに興味ある人が直してくれそうな気がするからほっとくかな
興味ある俺が一括revert
Windows以外に影響ないならそれでもいいですよ
あると思うけどWindows以外に興味がある人が直してくれそうな気がするからほっとく。
いやいやいや
違うこと言ってないのにぃ
ところで、真面目に聞くのですが、今はタイマ割り込みが100msで、タスクスイッチ(という言い方でいい?)が250msじゃないすか。
あれ、へんだよね
このそれぞれの数字ってなんか根拠あるのん?
100はささださんの実測値、250は僕の実測値
で、こさきさんは後者を100にしようとしてるんだよね?
そうです
これさあ、後者をもっと小さい値にするのはどうなん?
前者より小さい場合の意味があんまりないんじゃないかなあ
Rubyでスレッドの優先度使ってる人ってほぼいないと思うし
Windowsで前者を小さい値にしようとしてるのだ。
Windowsだけ前者を10msに戻すというのはありかもしれないですね。そういえば
priorityでビットシフトするので、前者100の半分の50くらいまでなら小さくしてもいいんじゃないか。
或いは単純にデフォルト値はTIME_QUANTUM_USECでいいのかもしれない。
それか。
うん、それかな
とりあえずそうしてみましょっか。
シグナルとかで割り込んだときはスイッチする義務はない。という分かりやすい意図になる気がします
とりあえず、今回はそこで妥協しよう。
意図的に放置してたるいさんを釣るつもりだったのに
usaさんに本気だされてしまって崩壊した
talさん昨夜ちょっと見てたけどね。
busy loop+Thread.passは手元の環境では50msくらいになるので1.9.2と同じ。
というか1.9.2だと安定しないな。
10msくらいのこともあれば130msくらいのこともあるな。
なんでやねん :)
たぶんWindowsスケジューラには僕のしらない謎がある
それは不思議でもなんでもなくて、pthread版でも1.9.2はそうです
へー
まあ、50msで安定するならそれはそれでよいや。
cmpxchg一発でロック取る最速ロックだと2つのスレッドのどっちが勝つかは運次第だから
これが20msくらいだとぬるぬるになるってことなのかにゃあ。
ワーストケースはすごく悪くなる
20msは要求されてないと思うけどなあ
俺もそう思うんだけどねえ。
スレッドをあまり頻繁にスイッチさせるとスループットに悪影響があるし
CriticalSectionにすると... ばらつきがあるな。
CriticalSectionとはそういうAPIだとおもってた
個人的にはmutexが揃いすぎていて気持ち悪かった。
CriticalSectionにするとそういう意味では1.9.2と同じ感じ。
で、ぬるぬるしないので、んー
これでスイッチの頻度は同じくらいになってるってことなんだけどなあ。
わかんねー
明らかに$50で割に合わない
うわ
意味ないはずと思いながら1msにしたらぬるぬるすぎワラタ
WindowsってWindow処理おそいの?
と疑問におもった
そういうことじゃないと思うが。
なんでこんなにリニアに動作に影響するんだ?
むしろそれがキモイ
まじで1msにしとくか。
どれくらい悪影響があるんだろうか。
うーん
make benchで実際にはかったらいいと思うの
windowsのスケジューラがまだラウンドロビンベースなら実はそんなに悪くないアイデアかも知れない
べんちまーくちう
ああ、いや、やっぱり1msに一回コンテキストスイッチはやり過ぎな予感
まあ、ベンチの結果を待ちましょう。
つかむっちゃ時間かかるんだよなあ。
しかし、ぼーっと経過を眺めている感じだと、誤差程度しか違いがないものばかり。
影響がありそうなのは後ろのほうかな。
終わった。
有意な差があるのはio_file_createとvm_thread_mutex3の2個だけ。
前者はなんでじゃろ?
後者は2.3秒→30.9秒なのでさすがにまずい気がする。
本当はtcltklibのeventloopはGVLを解放した状態で回って、なんかイベントがあってrubyコードを実行しないといけなくなった時だけ改めてGVLを確保しないといけないのではないか。
という結論に達したけどまあいいや。

ruby-jaで名前を呼ばれてたがログが長いのでとりあえず放置していいという事だけ認識して満足した
要約すると、$50問題特命担当に就任です。
kosakiさんがあきらめて就任した まで読んだ
要約するとtalさんまかせた
unakさんはWindowsのダークサイドに落ちていってそれっきりです。
なんという押し付けあい。
{unak} unsigned long limits_us = TIME_QUANTUM_USEC;
後のダチョウ倶楽部である。
は、小崎さんが入れてくれるってことでOK?
りょうかいしました
Ruby2.0ではThread毎にrenice(limitを短縮)できるように提案してみよう
Windowsで何にするか(1msはさすがに酷いよな)は適当に考えて私が入れておきますです。
いっそ0でいいんだったりして。
write(2)をブロックさせる手っ取り早い方法は何か。
pipeかなあ
tcltk.cのコードむつかしいな
tcltklib.c だった
ブロック状態のioにsyswriteして待たせておいて、ちょっと仕掛けを施してからブロックを解除すると... あらふしぎ! SEGV! っていうのができる気がするのである。
さっきruby-devに投げたreadの逆だけど、readだと[BUG]だがwriteならきっとSEGVにできる。
むつかしいな。これなにがおきてるんだろう
tcltklib見てる?
いちおう
lib_eventloop_coreの中でぐるぐる回っている。
なんとなく、UIスレッドをふつうのnormal priorityスレッドとして扱う必然も無い気がしている
なんかイベントがあったら拾って処理。
あと、tcltklib.cで1.9系だとタイマーが5msで貼ってるのだけど意味が分からん。どのバージョンでもそれは反応できなくないかなあ
確か800回転に1度くらいrb_thread_schedule()
とかいう感じだったと思った。
今回の例だとずっとrb_sleep_forever()で寝ていて
resizeのときだけ起きてきてると思うんだ

あれ、ちがう
元報告者のコードでいえば
{unak} Thread.new { loop { a = 1 } }

{unak} TkRoot.new.mainloop()
が絶賛競合中。
mainloop()のなかでsleep_foreverしてない?
しない
lib_eventloop_core()みてたんだけど
では、どうやって寝てるんですか
寝てないよ。
loop { a = 1 } は先ほどから見ていたタイミングでしかGVL離さないので普段はそっちが元気に空回り。
250msというか300msに一度mainloop側のスレッドに処理がうつるけど、割とあっさりrb_thread_schedule()にたどり着いてすぐ制御をloop { a = 1 } に奪われちゃう。
なので、300msごとにしかイベントを拾えない。ゆえにかくかくしちゃう
というのが現象の全体です。
tcltklib.c ってそういうビジーループ的な流れをするのが仕様なんですか
テキトーなタイミングでrb_thread_schedule()呼んでるのでそこまで悪質ではない。
簡略化すると loop { 800.times{ do_event()}; Thread.pass } と書いてるようなものなので、
ガチャピンも大満足、のはず :)
この何もしてないタイマーハンドラーはなんのためにあるんだろうなあ
謎ばかりだ
タイマーハンドラ使うの、自分以外にスレッドが存在しないときだけじゃないすか?
{unak} if (thread_alone_check_flag && rb_thread_alone()) {
のパスでしか使っていないはず。
いや使うのかなあ。まあたぶん使わないと思っていいです。無視無視
とりあえず、小崎さんには、問題のスクリプトruby -d で実行してみることをお勧めする。
(スクリプト冒頭に #!ruby -d でも可)
DUMP*ってのがだらだらとstderrに表示されるのでどこ通ってるかはわかる。
-d ってなんだっけ
--debug
ああ、嘘ついた。
800.timesじゃなくて(800/10).times相当だ
Macだとresizeはtkにcallbackされてないという知見が得られた。ほんとうだろうか
mjsk
であればそりゃWindowsみたいにひっかからないよね。
まあ普通はmain windowだけということはありえないので、resizeするときに子windowの調整のために通知は飛ぶはずだと思うけど
(ぜんぶ推測です)
まあスケジューラ的にはビジーループしてるやつと、ビジーループしつつThread.passしてるやつらはどれだけぞんざい扱ってもいいやつらなので急速に興味がうせつつある
あきらかにスレッドスケジューラでやるのは筋が違うだろう的な
でも、ぼくちんもっともっと頻繁にタスクスイッチされたい!
その辺、GCのパラメータが調整できるようなったように調整できるといいかもしれないですね。
しかし、ここで疑問なんですけど、
僕に聞いてます?
真面目にGVL解放してイベント待ちしたとしても、
イベントが起きてrubyコードで書かれたハンドラに突入するためにGVL取りに行ったら
やっぱり最悪300ms待たされるよね。
うん。さっき考えてたのはUIスレッドが奪いに来たら優先的にGVLわたしてあげる仕組み作った方がいいんかなーというネタだった
難しいことが起きてない限りGVL分捕るAPI
は確かにあるといかもしれんすね。
(そして悪用される)
スレッド間の優先度だと悪用されてもたかがしれてないですかね
あほなライブラリ書かれたらだめだからやっぱりだめなのかなあ
まあ、APIなら拡張ライブラリなので、
カジュアルユーザーがrubyでビジーループ書くよりはアホなことされる可能性は低いでしょう。
ところで
知ってたら教えてほしいのですが、1.8のスレッド切り替えのタイミングっていつでしょ?
何msだったかな。
なんであんなにビジーループ耐性高いんですか
タイマーなんだ。意外っ
タイマーというか
まあ時々時計見て「あ、そろそろ時間だからスイッチしなくちゃ」みたいな
うーむ
総合すると、やっぱりtkが特殊すぎるのでworkaroundとしてはタイマースレッドの感覚を切り替えるAPI用意してtk使われたら頻繁に起こすのかなあ。消費電力無視して
とても気に入らない
0.06秒ですた。
<1.8
合ってるかな。
てことは60ms? 1.9.2よりも長いのか
そうはみえんが
気が向いたらもっと早く切り替えるかもしれない。
どう見ても1ms以内に切り替えてるような。
0.06msなのかまさか。
それはないよなあ。ははは
1msだった。
ああ、そうだったそうだった。setitimerがあればタイマーか。
なければまあおよそ500ノードほど処理したら、かな。
1msとはまた無茶なことを
ああ、OSの制限で1ms出来ないのを見越してASAPという意図なのだろうか
俺が桁を見間違えてなければ。
... 見間違えてるかなw
10msだ。
というか、1.9の初期が10msなのは当然それを引き継いでるわけだな。
なるほど
よく考えたら
pythonも3.xはタイマー貼っててRubyっぽく数百msって聞いたから同じ事がおこるんじゃないだろうか
ほほう
100バイトコードってのは2.xかしら
たしか
まあ、ruby 1.8もタイマー使わないプラットフォームなら500ノード(くらい)なので
お互いナカーマなわけだな。

Genuine Han Unification

Ken Lunde さんによる "Genuine Han Unification" ですが、久しぶりに清々しいほどの寝言を見た気がしますね。これが CJKV の著者である、Ken Lunde によるものだってのがなかなか悩ましいところなんだけど。たぶんこれって、Arial Unicode MS の夢をまだ見てるんだな、これだからフォント屋は
なお、GB 18030 だけが CJK Unified をすべて含んだ National Standard ってのは誤りですよね。JIS X 0221 だって含んでいますもの。(ISO/IEC 10646 の翻訳規格だから当たり前だ)
"Users tend to be more forgiving for region-speci!c glyphs in mobile environments" についても、表外字体漢字表とかの流れを考えると実際には厳しくなっているように思うんだけどなぁ。

git コミット ID の衝突確率

git はコミットを SHA1 で管理していることは、こんな場末の日記を好きこのんでご覧になられている皆さんならよくご存じかと思いますが、最近メイドガチャピン先生の「革命の日々! git のsha1は何桁あれば安全か」など、Linux において Git デフォルトの 7 桁表示のコミット ID が被りまくっていると話題のようですので、これについて考えてみましょう。

さて、ハッシュ関数については昔まとめたことがありますが、ようするに Radium Software Development さんの記事が素晴らしいという話です。それによると、Bob Jenkins 曰く「2^n 個のキーに関して,衝突の可能性を 1/(2^m) 程度に抑えたいならば, 2(n+m) ビットのハッシュ値を用いる必要があります」だそうな。

Linuxのコミット数は 220k=~262144=2^18 なので、衝突確率を 1/2 にするには 2 * (18 + 1) = 38bit 必要ですね。10文字(=40bit)でも衝突しているLinuxは行いが悪い感じですが、まぁ想定通りの確率って事になるんじゃないでしょうか。

逆に7文字で足りる範囲がどのくらいか考えてみましょう。4bit/文字 * 7文字 = 28bit なので、これが衝突確率が 1/2 になる入力数を計算すると、(28bit / 2) - 1 = 13bit = 8192
おい、全然ダメじゃねーか。

結論: git はまぬけ