約 2,708,292 件
https://w.atwiki.jp/hmiku/pages/46179.html
kagamination2りんきょう【登録タグ CD CDK IfCD MeshaCD PLAMACD Rico*CD epicCD kogeCD roreroCD toyaCD かずPCD きゅおんママCD ぐすたふCD ここ狭いPCD ことあCD じゃんぼ@家族愛PCD ちくPCD つきのPCD まきゃヴぇりCD らずりPCD るなちゅCD アンメルツPCD サバコPCD シグナルPCD トマト牛乳CD ナナツナツCD バナナレジメンタルストライプスCD ヤジマ電機_CD レタスPCD ヴィオレントPCD ヴェーランCD 二秒CD 冴戒椎也CD 初心PCD 単純明快PCD 夏目咲希CD 太田PoN太CD 姉を見事に使いこなす妹PCD 碧亀CD 葵ゆりCD】 前作 本作 次作 kagamination kagamination2kagamination2 輪響 - 楽曲制作者 冴戒椎也 アンメルツP 初心P 葵ゆり 夏目咲希 ヤジマ電機_ ナナツナツ epic バナナレジメンタルストライプス Rico* If 葉之月/ちくP Mesha つきのP Naka-Dai 碧亀 レタスP じゃんぼ@家族愛P 太田PoN太 きゅおんママ PLAMA かずP トマト牛乳 まきゃヴぇり koge サバコP るなちゅ 二秒 ヴェーラン toya らずりP ことあ ぐすたふ rorero rokugatsu ヴィオレントP 流通 即売 同人 配信 発売 2021年10月31日 2021年10月31日 2021年11月8日 価格 ¥1,500 ¥2,000 ¥1,500 サークル kagamination制作チーム CD紹介 100年後に遺せる自分の証を、ふたりと共に刻もう。 『kagamination2』のコンセプト・テーマである「VOCALOID鏡音リン・レンの可能性」に共鳴した楽曲制作者達が、ともに最高の音を響かせることを目指す、公募コンピレーションアルバム企画。 「M3-2021秋」にて初頒布。通販およびダウンロード販売も行われる。 アルバムジャケット:7:24、デザイン:猫凪みさお、マスタリング:Dios/シグナルP。 本編『kagamination2』、鏡音アンソロジー『kagamination2 連昂』と同時発行。 曲目 DISC 1 曲名 VOCALOID 作詞・作曲・編曲 01 La Sinfonietta 鏡音リン・レン 冴戒椎也 02 100年後に伝える歌 鏡音リン・レン 初心P 03 流星の約束 鏡音レン 葵ゆり・Navy(葵ゆり、夏目咲希)・夏目咲希 04 Everlasting Our Songs 鏡音リン・レン ヤジマ電機_ 05 夏に染まって 鏡音レン(コーラス:鏡音リン) ナナツナツ 06 この狂った世界でさえも 鏡音リン epic 07 りんしょうをれんぞくでかさねるんだ 鏡音リン・レン バナナレジメンタルストライプス from Circle W.C.(メンバー:A.B.M.K. / Merry=S.) 08 アップル★ボトル★ハーツ 鏡音リン Rico*Special Thanks:アンメルツP 09 アオゾラ 鏡音リン・レン If 10 君を想う悠久-とこしえ- 鏡音レン 葉之月/ちくP 11 神が紡ぐ豊かな地 鏡音リン Mesha・つきのP 12 この時代に生まれた奇跡 鏡音リン・レン Naka-Dai 13 だいさんじ脳内大戦 鏡音リン・レン 碧亀 14 キミライズ 鏡音レン レタスP 15 hope 鏡音レン じゃんぼ@家族愛P 16 透明な色 鏡音レン(コーラス:鏡音リン) 太田PoN太・きゅおんママ DISC 2 曲名 VOCALOID 作詞・作曲・編曲 01 Choice 鏡音リン・レン PLAMA 02 MIRRORcle BEAT! 鏡音リン・レン かずP 03 コーバスと追走劇 鏡音リン・レン トマト牛乳 04 oh my darling 鏡音リン・レン まきゃヴぇりdrum/bass/mix:新井P、guitar solo:ファルコン高田 05 ここに眠る 鏡音レン koge 06 うそつき 鏡音レン サバコP 07 魅魅魅 鏡音リン るなちゅ 08 今生転生 鏡音リン・レン 二秒 09 忘花 鏡音レン ヴェーラン(verankuriensu) 10 kingdom of... 鏡音リン・レン toya 11 Lucida 鏡音リン・レン らずりP・らずりP&ことあ、mix:ことあ 12 Ever green Kagamine 鏡音リン・レン ぐすたふ 13 焚き火 鏡音リン・レン rorero 14 樹雨にそよぐ 鏡音レン rokugatsu 15 ここにあるヒカリ 鏡音リン・レン ヴィオレントP リンク 公式サイト 公式Twitter メロンブックス とらのあな アリスブックス BOOTH DLsite コメント 名前 コメント
https://w.atwiki.jp/nebanebawindows/pages/29.html
ダウンロード kagami.exeただいま落ちているようですがこちらでkagami.exe v0.7.6 をダウンロードできるようです。 鏡ってなんぞー? 一般的に実況主の回線が細い場合などに「鏡さん」と呼ばれる太い回線を持った人が代行(?)で配信をすることです。鏡はミラーリングからきている言葉だと思うので正確には「複製」なのでしょうが、配信における鏡は「リレー」といった方がいいかもしれません。実況主からのデータをそのまま分配するので鏡さんのPC音や映像が入り込むことはありません。主に「kagami.exe」という鏡ツールを使用します。 実 況 主 │ ┌─┬─┼─┬──┐ 視 視 視 視 ┌┴┐ 聴 聴 聴 聴 │鏡│ 者 者 者 者 └┬┘ │ ┌─┬─┬─┬─┼─┬─┬─┬─┐ 視 視 視 視 視 視 視 視 視 聴 聴 聴 聴 聴 聴 聴 聴 聴 者 者 者 者 者 者 者 者 者 リザは、この鏡さんを優先的に接続させるために設定するものといっても過言ではありません。 「鏡」に対して実況主を「本家」という言い方をします。 「kagami.exe」の使い勝手のよさから「kagami.exe」を通して配信している実況主も多いです。 実 況 主 ┌─┴─┐ │WME | └─┬─┘ │←WME用ポート ┌──┴──┐ │ kagam.exe .| └──┬──┘ │←kagami.exe用ポート │ ┌─┬─┬─┼─┬─┬─┬─┐←配信中でも自由に最大接続人数を変えられる。 視 視 視 視 視 視 聴 聴 聴 聴 聴 聴 者 者 者 者 者 者 事前準備 kagami.exe用にポートをひとつ空けてください。 とりあえずな使い方 配信者が配信を開始したことを確認してください。実況主自身が「kagami.exe」を通して配信する場合はWMEでエンコードを開始してください。 1.赤枠内に配信者の配信アドレスを入力してください。 例) http //201.101.102.135 7362 実況主が「kagami.exe」通して配信する場合は 「http //localhost WMEで設定したポート番号 」です。 2.青枠に[事前準備]でkagami.exe用に開けたポート番号を入力してください。 3.緑枠の[最大接続数]に任意の数字を入力してください。 最大接続人数=上り回線速度(bps)÷配信ビットレート(bps)×0.7~0.6 (よく配信アドレスの後ろに付いている「@30」などは最大接続数が30人をあらわします) 4.紫枠の[接続]をクリックしてください。 これでステータスバーの[IM-]が[IM 1]となれば成功です。 WME配信簡易テスト↓ http //yamato0407.hp.infoseek.co.jp/cgi-bin/wmetest.cgi でテストしてみて成功したら配信アドレスを教えましょう。(ポート番号は青枠の数字です。) 必用に応じて茶枠の[最大接続数を1上げる]・[最大接続数を1下げる]で最大接続数を調整してください。 以下は「readme.txt」から引用です。(ver. 0.7.6同梱版) ◆用語解説 エクスポート:kagami.exeから視聴者へのデータ転送 インポート:接続先からkagami.exeへのデータ転送 接続:エクスポート・インポート両方の接続を開始します 再試行:エクスポート又はインポートが未接続の場合に再度接続してみます 切断:エクスポート・インポート両方の接続を終了します コマンド:その他のコマンドを選択するメニューを開きます。 インポート再接続 → インポートを再接続します エクスポート再接続 → エクスポートを再接続します エクスポート停止 → エクスポートを閉じます エクスポート切断 → ストリーム終了信号を送った後でエクスポートを閉じます エクスポートのポート変更 → エクスポートのポート番号を変更します ◆ヒント インポート接続復旧機能(v0.7.0以降) インポートの接続が切れている間、新しいエクスポートの接続が来る度にインポートの再接続を 試みる機能を追加。 接続が来る度、とはいえ、同時にインポートの再接続が行われることはありません。 既に再接続の試行を開始している状態で新しいエクスポート接続が発生しても、 何も起こりません。 モニタ 接続中の情報をいろいろ表示します IM接続時間 → インポートに接続している時間。 エクスポート → 現在の接続人数(ヒントの"EX接続数の見方"を参照) EXエントランス → ビジー状態で待たされている人の数と、その席の最大数。 インポート → インポートに接続できているかを表示。"1"なら接続している。 "-"なら接続していない。 UP帯域 → 現在のUP帯域使用量をkbpsで表示。 DOWN帯域 → 現在のDOWN帯域使用量をkbpsで表示。 UP転送量 → UP転送量の累計をkbyteで表示。 DOWN転送量 → DOWN転送量の累計をkbyteで表示。 ビジーカウンタ → ビジー状態で接続を拒否した数。 CPU使用率 → 現在のCPU使用率。(kagami単独) EX接続回数 → エクスポートに接続が来た回数。 IM不調回数 → インポート接続に問題が発生した回数。 EX不調回数 → エクスポート接続に問題が発生した回数。 ◆ヒント EX接続数の見方 モニタやステータスバーで表示されるエクスポート接続数の見方 ・リザーブがある場合 1/9 (0/1) ↑リザーブされていないクライアントからの最大接続数は9で、現在1人の接続があります ↑リザーブされているクライアントからの最大接続数は1で、現在は接続してきていません ・リザーブがない場合 1/10 ↑最大接続数10人で、現在1人の接続があります ◆ヒント エントランスシステム(v0.7.1以降) WMEや以前のversionのkagamiは、ビジー状態になるとクライアントに対してビジーメッセージを 送信してすぐにタスクを終了(コネクションを切断)します。 v0.7.1以降のエントランスシステムは、ビジー状態になるとそれが解消されるまで 一定時間の間、コネクションを切断せずに、エントランスで待つようにするものです。 ビジー状態が解消された場合はエントランスから抜け、ストリーミング配信を行うための部屋へ 移動します。 エントランスに入ったのが早かった人ほど、早くエントランスから抜けられます。(=動画配信) 一定時間待ってもビジー状態が解消されない場合、WMWや今までのversion同様、 ビジーメッセージを送信して切断します。 今までがクライアントが連打によって席を確保しようとしてたのに対し、 エントランスシステムではkagamiが自分自身に対して連打して席を確保しようとする、 といった感じでしょうか。 負荷はエントランスシステムの方がかなり低いです。 エントランスの席の数には上限があり、v0.7.1では20に設定されています。 現在、エントランスに居座っているクライアントの数と、エントランスの席の最大数はモニタに 表示されます。 ちなみにエントランスさえビジーになってしまった場合は、 一定時間待機した後ですぐビジーメッセージを送信します。 (その間、新しいコネクションを受け付けません。) エントランスの席の数は最低5は必要です。 (それ未満にすることもできますが、パフォーマンスが著しく低下します) ◆ヒント ・EX/IM不調回数 EX不調回数がカウントアップされるケース: ・UP帯域が不足してクライアントにデータを送信できなかったとき。 ・インポート接続に問題があり、クライアントに送信するデータがなくなったとき。 ・一定時間の間、クライアントにデータを送信することができなかったとき。 IM不調回数がカウントアップされるケース: ・DOWN帯域が不足してインポートからデータを受信することができなかったとき。 ・一定時間の間、インポートからデータを受信することができなかったとき。 クライアント エクスポートに接続してきているクライアントの一覧を表示します 右クリックするとメニューが開きます 切断 → 指定したクライアントへのコネクションを切断するだけです。プレーヤーの自動再接続により、すぐ再接続が発生するかもしれません。プレーヤーの自動再接続を無効にするためには、1分間キックを利用して下さい。 Work → 各処理スレッドが消費したCPUの時間(ミリ秒) リザーブ:リザーブ一覧を表示します。右クリックするとメニューが開きます IN → このリザーブが使用中(接続中)だとYES、そうでないとNO ◆ヒント リザーブ WME(Windows Media Encoder)のリザーブとは機能が違います kagami.exeのリザーブは予約席を確保するための機能です 例えば、オプションで設定する最大接続数が10の状態でリザーブを1個作るとすると、 リザーブされたIPからの接続は常に接続できるようにし、 その代わりリザーブされていないクライアントからの最大接続数を9に減らします。 ◆ヒント リザーブその2 リザーブ席に座ってるIPのリザーブを取り消すと即刻接続が切れます リザーブが成功したからといって、リザーブの設定をすぐ消すことはできません リザーブ席に座っている限り、ずっと設定を残す必要があります ◆ヒント リザーブその3 リザーブされたIPはリザーブ席にしか入れません。 リザーブA、リザーブBがあり、リザーブAが重複接続を行うと、 リザーブBは接続することができなくなってしまいます。(例え、一般席が空いていたとしても) ところでデフォで入っている「127.0.0.1」とは何かというと、これはループバックアドレスと呼ばれるもので localhost を意味します。鏡をしている配信を見たい場合は 『http //localhost 』 もしくは 『http //127.0.0.1 』 の後ろに青枠に入れたポート番号を入れたアドレスをWMP等に入力して再生します。 自分で立てたkagami経由で配信する場合、既に接続しているIPをリザーブリストに追加するとその接続が切れてしまう(kagamiの仕様)ので注意!(「FCのゲーム制覇しましょ」まとめ より) キック:キック一覧を表示します。右クリックするとメニューが開きます 有効 → 期限が未来で、キック状態が有効だとYES、そうでないとNO 期限 → この時間までIPをキックし続けます ◆ヒント キック キックされたIPは期限が過ぎるまで接続することができません "追加"で追加されたキックIPの有効期限は1時間です オプション:いろいろな設定を行えます 最大接続数 → エクスポートに接続できる最大数。 接続中はボタンで最大数を変更することができます。 音を鳴らす → 特定のイベントが発生した場合に音がなるようにします。 インポートの接続に問題が発生したら警告ウィンドウを表示 → そのまんま。 インポートタスクの優先度 → 値が小さい程、インポートの仕事を張り切ります (CPUをより消費します) エクスポートタスクの優先度 → 値が小さい程、エクスポートの仕事を張り切ります (CPUをより消費します) エントランス収容人数 → エントランスの収容人数を設定します。大きすぎないように。 低スペック設定 → 低スペック設定を適用します。マシンのスペックに自信が無い場合は このボタンを押す。 標準設定 → 標準設定を適用します。マシンが標準的なスペックならこのボタン。 高スペック設定 → 高スペック設定を適用します。マシンのスペックに自信があるなら このボタン。 ◆ヒント CPU使用率 単体のkagami.exeが使用しているCPU使用率です CPUを複数個積んでいるPCでkagami.exeを動作させると、 タスクマネージャの値と異なってしまう場合があります その場合は大抵、CPU使用率をCPUの個数で割った値が、 タスクマネージャに表示されている値を同じになるはずです。 ◆ヒント インポート/エクスポートタスクの優先度 値が小さい程、それぞれのタスクのCPU使用率が上がります。 (たくさん仕事をしようとするので、CPU使用率が上がる。) インポートタスクの優先度はほとんどの場合、そのままで構いません。 kagami.exeで表示されているCPU使用率が低い場合、 エクスポートタスクの優先度の値を低くして下さい。 kagami.exeで表示されているCPU使用率が高い場合、 エクスポートタスクの優先度の値を高くして下さい。 あんまり上げすぎると、CPU使用率は下がりますがテラバッファ現象が起きます。 (怠けすぎて、回線速度に仕事がおっつかないため。) あんまり下げすぎると、CPU使用率が上がるうえにやっぱりテラバッファ現象が起きるでしょう。 (働きすぎて、倒れてしまう。) 適度に設定すると、kagami.exeの使用率も、PC全体の使用率もうまい具合に下がります。 この設定は接続中でも有効です。(すぐ反映されます) ※環境によっては、優先度の値を上げすぎると逆にCPU負荷が上がってしまう場合があります。 微調整しつつ自分の環境にあった設定を見つけて下さい。 ◆ヒント kagami.exe重複起動 それぞれのkagami.exeのCPU使用率が上がりすぎないよう、 エクスポートタスクの優先度の値を上げましょう。 ログ:ログを表示します。右クリックするとメニューが開きます 全てのログを表示 → 全てのログを表示します。 重要なログを表示 → 重要なログを表示します。 てか 初心者さん向け kagami.exeを使った鏡作成 見た方が早そうですね。 .
https://w.atwiki.jp/nagami/pages/15.html
3 査読付き論文 3-1 大学院時代 Fumio Toda, Hisakazu Miyamoto, Shiro Kikuchi, Reiko Kuroda and Fuji Nagami (1996) Enantioselective Photocyclization of 2-Arylthio-3-methylcyclohexen 1-ones to Dihydrobenzothiophene Derivatives in an Inclusion Crystal with an Optically Active Host. J. Am. Chem. Soc., 118, 11315-11316. Umemura, K., Nagami, F., Okada, T., and Kuroda, R. (2000) AFM characterization of single strand-specific endonuclease activity on linear DNA. Nucleic Acids Research, 28, e39. Fuji Nagami, Giampaolo Zuccheri, Bruno Samorì and Reiko Kuroda. Time-lapse Imaging of Conformational Changes in Supercoiled DNA by Scanning Force Microscopy. Anal. Biochem., 300, 170-176(2002). 4 学会発表 4-1 大学院時代(domestic) 長神風二、四ノ宮美保、黒田玲子 「ビチアゾール・アクリジンハイブリッド化合物によるDNA高次構造変化の解析」(口頭) 日本化学会 第12回 生体機能関連化学シンポジウム 1997年9月 宮本久一、菊池史郎、戸田芙三夫、黒田玲子、長神風二 「2-アリールチオ-3-メチルシクロヘキセン-1-オンの不斉光環化反応」(口頭・共著) 日本化学会 第1回有機結晶部会シンポジウム 1997年9月 長神風二、黒田玲子、梅村和夫、岡田孝夫 「ビチアゾール・アクリジンハイブリッド化合物によるDNA高次構造変化のAFMによる解析」(口頭) 日本化学会 生体機能関連化学シンポジウム(第13回)1998年9月 長神風二、黒田玲子、梅村和夫、岡田孝夫 「ビチアゾール・アクリジンハイブリッド化合物による光依存性DNA高次構造変化の解析」(口頭)日本化学会春季年会 1999年3月 4-2 大学院時代(international) 長神風二、黒田玲子、梅村和夫、岡田孝夫 Conformational Changes in DNA Induced by Hybrid Bithiazole-Acridine Compounds as Studied by AFM (Oral) JRCAT国際シンポジウム 1998年11月 R. Kuroda, F. Nagami, T. Okada, K. Umemura AFM Characterization of S1 Nuclease Activity to Nicked Linear DNA (poster) The Biophysical Society, Annual Meeting (USA) 1999年2月 長神風二、黒田玲子、梅村和夫、岡田孝夫 AFM Characterization of S1 Nuclease Activity to Nicked Linear DNA JRCAT国際シンポジウム 1999年11月
https://w.atwiki.jp/dqngaming/
DQNGaming 現在CSOでまったり活動中のクラン。 見かけたら声をかけてくれれば飛び跳ねて喜ぶクランです! クランメンバー募集中!
https://w.atwiki.jp/avaclani-valkyries/pages/41.html
卵から羽化することのない永遠の初心者である。いつになったらから出てこれるのか・・・ いつか、からにいもいもしてる自分が戦場を飛び回れるようになるその時まで地道な練習を続けていきます。 からを出て戦場を飛び回る羽が欲しい! 基本的にAVAではsakagami(坂上)と呼ばれている。ただ一番気に入っている「坂ちゃん」の呼び方で呼ばれたことがクラン内でありません。呼んでくださる方大募集!気軽に坂ちゃんと声をかけちゃってくださいネ! 坂上智代と朝倉由夢が大好き! 羽瀬川小鳩と千石無子、シャルロット・デュノアも好きだ! 声優はほっちゃん(堀江由衣)が超大好き。花澤香菜とゆかりん(田村ゆかり)が大好きである。 アーティストは奈々様(水樹奈々)やほっちゃん、ゆかりん、黒猫(花澤香菜)、ぐるたみんが好み。 特殊スキル 画面の奥の娘可愛い! 効果補足 2次元と3次元、つまり画面の奥と現実の見境がつかなくなる・・・ もう2次元のあの娘しか見えない。 AVAでのメイン兵種はRMである。てかRMしかできない メイン武器 FG Groza M4Mrk3 ヘタレなRMです。(実戦ではほぼ常に初心者であることがまるわかりのプレイング)。 クラン戦で足を引っ張っていることがほとんどな僕ですがこれから日々精進していきたいと思っています。 こんなへった糞な私ですがどうぞよろしくお願いします!
https://w.atwiki.jp/nacho/pages/171.html
Naga Caldari Tech1 巡洋戦艦 コメント
https://w.atwiki.jp/irogami/pages/461.html
概要 IROGAMIは2021年の秋ごろから運営されているカードゲームである。 その歴史はそれなりに長い。そんなIROGAMI史を主観全開でまとめてるページ。 性質上他のページ以上に内輪感が出ています。ご容赦ください。 あと半分くらいYARAKASHI案件の話になりそうだけど中傷に近くなりそうなのでオブラートオブラート…… その歴史 随時書き足していきます。 (2021/8/31頃) IROGAMI - online - 爆誕 これより昔にあったIROGAMIを綺麗に作り直したいという思いからこのプロジェクトはスタートした。 (ちなみに初期IROGAMIは公開停止されている。) アプリとしてではなくTabletop Simulator使用前提、なおかつ身内のみのゲームで、オンライン化はあまり考えていなかった。 かなり前の話ではあるが実は今のカードと大きく能力は変わっていない。ただ実装の難易度を考える必要がなかったため、昔のサファイアブルーは相手のデッキからカードを引く、と言う効果だったりした。 (2021/9/5) Unityプロジェクト始動 それまでTabletop Simulatorにてプレイを行なっていたが、一般公開を目指しアプリ化を始めた。 9/9にカード一覧のみの状態で限定公開が行われ、9/25にようやくバトルが実装された。 今では無くなってしまったが、デッキコードの発行・反映機能も存在した。 (2021/9/26) 初の公式大会開催 バトル機能がまだ完全ではなかったため、Tabletop Simulatorにて初の公式大会が開催された。 参加者は3人で、3人ともがミモザとマゼンタを組み合わせたコンボデッキ(通称ミモマゼ)を使用。 体力20時代にも関わらず、ミモザが1コストかつ1コスト"以下"で発動でマゼンタが0コスト、おまけにライラックが0コスト2自傷1ドローだったりしたためいかに早くコンボを成立させるかのじゃんけん勝負となっていた。 完全なミラー合戦だったが、残りの自由枠にヒヤシンスを採用することでキルターンをずらしたプレイヤーが優勝した。 ↑ここまで開発者さんの記述 THX!! (2021/10/17) Unityroom一般公開へ このタイミングでUnityroomに一般公開された。 元々開発者とつながりがあった人以外の流入が生まれ、アクティブユーザーが一気に増加する。 ※このwikiをメインで書いてる中の人もこのタイミングで始めている。 つまりこれより前の時代は体験していません。 (2021/10/23) 第1次 金紙満堂 開催 全てがゴールデンパールになる特殊対戦、金紙満堂が開催された。 そのカオスっぷりはみんなも知っての通り。 逆に凄まじいワンキルコンボは作りにくい為、ある意味では心理的安全性が高いルールでもある。 ただ、当時はオレンジ&イエローがユニオンで2マナ増える性能だったため、 とにかくO色相を引いた方が勝ちみたいなところはあった。 (今もO色相を引けると強いルールではあるが、当時ほどではない) ver T1.62 (2021/11/20) 第1次 鮭の生態系破壊 このタイミングで、鮭ことサーモンピンクが今と同じ性能になった。体力20時代に。 ゲインズボロが3コスト5ダメージであったのに、分割3コスト6ダメージ、R色相でデッキ圧縮も兼ねられる 鮭があまりにやばいということで環境は鮭一色となった。 この鮭時代は12/13にセルフサーチが撤廃されるまで続くこととなる。 この後、体力が30になったことにより相対的に火力が落ちたことに伴い セルフサーチは復活している。 なんやかんやで鮭は落ち着くところに落ち着いた。みんなそう思っていたよね。 ver T1.64 (2021/11/26) テスト実装 暴れるアマリリス テスト実装というイベント?が行われる。 この時1コストのアマリリスが実装。当然の如く環境は崩壊する。 (1コストってだけでもやばいし、知っての通り当時は体力が20である) すぐに2コストにされた。当時のカードプール的にはギリギリこれでセーフだったが、ドロー系のカードの増加に伴い、後々2コストでもぶっ壊れになったのはみんなが知ってる話。 他に、カードを「完全複製」するナイルブルーというカードも存在。 これも今、本実装されていたら相当危ないカードとなっていたと思われる。 ⇒4弾前のプロモで復活。案の定ループコンボ装置と化した ティールグリーン? そんなのもあったね。 (のちのテールグリーンかもしれない) 「テスト実装」イベントは残念ながら、これが今の所最初で最後である。 ver T1.66 (2021/12/8) さよならハンデスカード ゲーム全体のコンセプトの見直しにより、ハンデスを行うカードであったブルーラベンダー、ブルー&パープル、ラプチャーの性能がすべて変更。 IROGAMIからハンデス要素は消え去る運びとなった。 当時、コントロール系のデッキはハンデスによる相手のコンボ崩しの依存がかなり高く、 重要パーツを奪われたコントロールは永い間冬の時代が続くこととなる。まじでこのあたりは辛かった ハンデスは今も存在しないが、妨害や防御カードはこの当時と比べればかなり増えたよな。 Ver.2.09で猶予付きではあるものの、復活を遂げた。フランティクのページを参照。 ver1.00~ (2022/1/10) 体力変更と全体のスケール調整開始 初期体力を20から30に変えるという大規模な変更が行われる。 体力増加に伴い他のカードのスケールも多少増加する想定だが、 全体としてはゲームのスピードを下げようとする狙いがあった。 ただ、カードのスケール調整はモノクロ色相から順次行われた。 つまり初期はMとR色相、攻撃系のカードが先にスケールアップしたために、ぶん殴り系のデッキが強い不安定な状態がある程度続いていた。 あと初期体力がいくらになろうが実質即死攻撃であったウェザシエル旧アメティスタや、デッキの枚数は変わらないゆえにカーラントなども強い状態だった。 なお、今現在、ゲーム全体のスピードは後3Tや先4Tも条件付きで許容する流れとなり、むしろこの時より早くなっている。そういうものです。 ※ただ、この「条件付き」とは「だいたいの妨害・防御が刺さる」という意味である。 当時は使いやすい小型妨害がネイビーブルーくらいしか存在せず、ネイビーブルーに耐性がある高速ワンキル系は対処困難でかなり脅威だったという事情もある。 ver1.02 (2022/1/31) 2弾 「United Colors」実装 2弾カードと称して、多くのカードが追加されていく。 尚、本来は全カードを一気に追加する予定だったが、うっかり途中のものを公開してしまった為に1色相ずつ公開される運びになった。 定期的に新カードが見れる楽しみがあったのでユーザー視点では悪くはなかった。 先述した通り、テスト公開されたことがあるアマリリスがやっぱり暴走したために間もなくナーフ。 その後、研究が進んだのち、コーラルとサンストーンもオーバースペックということで、最終的にナーフされることとなった。 ver1.02 (2022/2/1) 永きラズライトの栄光 v1.02より、30点スケールアップの一環でラズライトが3点にアップ。 これが大層強く、永い間ラズライトが環境上位に君臨することとなる。 先述したコーラルの強さも、ラズライトとの兼ね合いという側面が大きい。 シンプルに強いカードであるが、「今後も相性のいいカードの追加によって爆発する恐れがある」 将来性の危惧も兼ねて、7月に2点に戻される。こうしてラズライトの時代はひとまずの落ち着きを見せる。 事実、3弾になって、チューリップやセラドンと更なる混色増加系のカードが登場した。 3点のままだった場合、ラズライトが再び猛威を振るったことは想像に難くない。 ていうか2点の今でも十分通用する強さです。 ver1.20 (2022/3/7) ショップ機能実装・デザインチケット実装 少し前よりCPシステムが実装されていたが、その使い道としてショップが実装された。 これにより継続してプレイする事に意味が生まれ、より一層ゲームとしての盛り上がりを見せることになる。 ただし名刺・カードに関しては常連ユーザーは一瞬で買いつくせる値段であった。 更に後、「ユーザーがカードを作れるチケット」が登場。80000CPという驚愕の値段だが、ヘビーユーザーにとってのエンドコンテンツとしては十分に魅力的なもの。 このアイテムが登場したことにより、IROGAMIにユーザープロモの歴史が刻まれていくこととなる。 それは惨劇の始まりをも意味するのかもしれなかった。いやまあ割となんとかなってるけど ver1.44 (2022/5/24) アルティメット0コスプロモトリオ事件 IROGAMI史である意味一番有名な事件。ていうかこれを書きたいためにこのページ作ったまである。 同時にユーザープロモにより刷られたペールオレンジ・フクシャピンクが合体爆発を引き起こし、ファータ軸がマジでシャレにならない状態になった。 どちらも「単体」ならそこそこの強化、止まりであったので、完全に事故である。 更に追い打ちをかけるかの如く、ブラックホールが実装。ついに1ターンキルを引き起こす。 あんまりにあんまりな状態で雑談チャンネルは(一種の開き直り的ノリで)お祭り騒ぎになった。 あんまりにあんまりな状況に、ついに一時的にカードを取り下げるという異例の事態に。 その後協議が重ねられ、ペールオレンジとフクシャは性能を抑えられ(フクシャはその後更にナーフ)、ブラックホールは未来永劫消され、代わりにナイトメアが登場する運びになった。 ちなみにこれより後のユーザープロモで、0コストのカードはひとつも刷られていない。 0コストのカードが如何に危険であるか証明した事件と言える。 (2022/6~7月) ユーザープロモ過渡期 このあたりの時期で、ユーザープロモが刷れるCPに到達したユーザーが多く存在し、多くのユーザープロモが刷られた。 結構危ない性能のカードも少なからず見られ、色々な議論が勃発したりし、多少荒れてた感じもある時期。 事実この時期のプロモカードの内、4枚はナーフされている。 今ではどのカードも落ち着くところに追いついています。 (2022/7~8月) Discord内イベント Your Colors開催 公式discordにて「Your Colors」が開催。通常カード2枚、特殊混色1枚を各々が考える企画。 常連ユーザーがそれぞれアイディアを出し合い、盛り上がりを見せていた。 最終的に、サイダー、ラムネ、ソーダを組とする「氷炭相愛」がミニセット枠に、 偶奇軸であるソクラテス、ヴァルディグリ、 玄武セットのサーペントグリーン、タートルグリーンが採用となった。 今現在は、これにラヴァを加えた氷炭ラヴァセット、 タートルグリーンをメインに据えたタートルコンシード、 ソクラテス偶数軸などが環境にそこそこ存在している。 ver1.74 (2022/8/19) うっかりルージュレッド事件 ver1.74にて多くのカードに調整が行われたが、何を思ったかルージュレッドにそのまま7点が足されてしまい、ぶっ壊れカードとして環境を暴れつくした。 もちろん数日後にナーフされた。 ver1.80 (2022/9/14) 3弾 「Crossed Colors」登場 久々の大型アップデートにより界隈が盛り上がる。 色々なカードの研究が進んだ結果、最終的にアルメリアとアピスイエローがやばいという結論に。 数日後、この2枚はナーフされたが、そのタイミングでピジョンブルーが9点に。 上記2枚に代わる形で鳩アグロが暴れることに。この鳩ものちに7点にナーフされる。 (尚、最初の実装では6点なので今も最初よりは強い。) ver1.86 (2022/10/21) 帰ってきた鮭による第2次IROGAMI生態系破壊 開発者の気まぐれプロモによりサーモンオレンジが実装された。 しかし、これが手札に2枚デッキに2枚とかいうやばい性能だったために環境は再び鮭に支配される。 右を向いても左を向いても鮭だらけの状態になった。ついでにその鮭に対抗するために、マジョラムやアマゾンが持ち込まれたりした。 先述の鳩アグロもまだナーフ前だったため、鮭と鳩が戦争を引き起こす事態に。 この鮭は11/5に「デッキに3枚」にナーフされ、IROGAMIの生態系に再び平和が訪れた。 尚、ぶっ壊れカードではなくなっただけで、鮭ビートデッキは今でも十分通用する。 ver1.90 (2022/11/13) 彩セット実装 唐突にミニセットが実装され、カードが新規に10種類追加。 このうちエルブがLO狙いに都合が良すぎたためにエルブカーラントが脅威となった。 このタイミングで第2回非公式大会が行われた。 よもやみんなエルブカーラントを使うのではないかと危惧されたが、みんな使わなかった。 逆にエルブに対抗できるデッキを組んだ人はそこそこいたようだ。 ver1.98 (2022/11/27) ゼウスの怒り エルブがナーフされ、比較的安定している時期。 オーロラが評価され始め、環境にそこそこ出現するようになっている。 ……と思われていたが。 みんなすぐには気づかなかったのだ。雷の力を得たゼウスのヤバさに。 冷静に考えれば明らかにラズベリーレッドの上位互換。 徐々に認知されるゼウスのやばさ。環境は徐々にゼウスで占められていった…… 本格的に発覚したのは第2回公式大会において、 使用されたデッキが結果的にゼウスだらけだったことが判明した時。 いつもの通り、最終的にはナーフされることに。 鳩もそうだが、弱すぎて強化されたカードは50%位の確率で強くなりすぎるらしい。 別にIROGAMIに限った現象でも無い気がするが。 ver2.03 (2023/1/6) 逆襲のトゥルーブルー ver2.03にて大量のカード、特に初期の特殊混色に強化が入った。 ……ついに永らく最弱特殊混色と言われ続けたトゥルーブルーがキレた。 0コスト、上限までドローとぶっ壊れに変貌する。案の定出現する2ターンキル。 おそらくすぐにナーフされるでしょう。 「どうして2段階まとめてギアを上げるんですか」 ~ver2.10くらい (2023/2あたり) 新セットラッシュ この時期、ミニセット2種および、SPセット2種が速いペースで追加。新カードラッシュとなった。 調整カードも多く、何度も修正されたラーナパープルや、制作者が発狂した結果生まれた27点イグニス、3コストキャントリつきカルムグリーンなど、波乱に富んだ時期である。 調整班を通そう、な? ~ver2.20くらい (2023/3~4月あたり) わりとまったり期 このあたりは大きな更新はない、まったり期である。 ていうかこの前のカード追加 性能変更ラッシュが激しすぎたので、逆に落ち着いていろいろなカードを試せる安定期だった。 そもそも3月は通称学校組が軒並み春休みでおやすみだったり(学業しな!!)、筆者も某Unityイベント周りで忙しかったりしたのでユーザーが少なく、全体的に休眠期ともいえる。 一応ライトグアドが環境トップ級だったり(最終的に今はナーフ)、4弾前の前夜祭的プロモの中のアカシアとかがちょっと暴れてナーフされたりしたものの、カードバランスは比較的取れていた。 それは嵐の前の静けさだったのだ…… ver2.23くらい (2023/5/19) 4弾登場 ~約束された世紀末~ 大型セット、4弾がリリースされた。……調整班を一切通さない方針で。 結果はもう、今更文章にするまでもないかな^^ そしてIROGAMIの歴史は続いていく…… 補足 ナーフされた者ども ここまでの歴史を読めばわかる通り、「新規カード登場により強すぎるカード登場→最終的にナーフ」というのは何回も行われている流れである。 ただ、ひとつだけ言えるのは、ナーフされたカードはあくまで強すぎではなくなっただけで、使い物にならなくなったわけではない。 ラズライトもフクシャピンクもアクアマリンも鳩も鮭もアルメリアもヴォルテージも、みんな今でも実戦で十分通用するカード。 過去の彼らの栄光にノスタルジーを覚えたら、それをそのまま過去にせず、現代に引っ張り出すのも一興かもしれない。
https://w.atwiki.jp/sicpstudygroup/pages/89.html
SICP naga 1-29/1-46 naga 2-1/2-16 naga 2-17/2-52 naga gnuplotを使った図形言語 naga 2-53/2-97 naga 3-1/3-37 naga 3-38/3-49 naga 順序付Listの合成 naga 3-50/3-82 naga 4-1/4-24 naga 4-25/4-34 naga 4-35/4-54 naga 4-55/4-79 naga 5-1/5-6 naga 5-7/5-19 naga 5-20/5-22 naga 5-23/5-30 naga ecevalでcall/cc Exercise 5.31 ;;; eceval での 各 register の save/restore の理由を確認すると、 ;;; env : 評価する operator/operands がリストの場合、そのリストの operator ;;; が compound procedure だと env を変更する。次の operand を評価する ;;; ために env を save/restore する。最後の operand の場合はその必要が ;;; ない。 ;;; argl : 評価する operand がリストの場合、そのリストの operands のために argl ;;; を変更する。最終的な評価された operands を保持するために argl を ;;; save/restore する。 ;;; proc 評価する operand がリストの場合、そのリストの operator に proc を ;;; 変更する。operand の評価の間、元の operator を保持するために proc を ;;; save/resotre する。 ;;; となる。これから ;;; ;;; (f x y) operator/operands にリストが含まれないので、register の ;;; save/resotre は必要ない。 ;;; ((f) x y) operator がリストだが operands の評価に env が必要ない。 ;;; (quote されているので) また、operands にリストがない。 ;;; 従って、register の save/restore は必要ない。 ;;; (f (g x) y) env は y の評価のために (g x) の前後で save/resotre が必要。 ;;; argl は (g x) が最初の operand なので save/resotre は必要ない? ;;; proc の save/resotre は必要。 ;;; (f (g x) y) env の save/restore は必要ない。(quote されている) ;;; argl は (g x) が最初の operand なので save/resotre は必要ない? ;;; proc の save/resotre は必要。 Exercise 5.32 ;;; a. ev-application (save continue) (assign unev (op operands) (reg exp)) (assign exp (op operator) (reg exp)) (assign continue (label ev-appl-did-operator1)) (test (op variable?) (reg exp)) (branch (label ev-variable)) (save env) ;(assign unev (op operands) (reg exp)) (save unev) ;(assign exp (op operator) (reg exp)) (assign continue (label ev-appl-did-operator)) (goto (label eval-dispatch)) ev-appl-did-operator (restore unev) (restore env) ev-appl-did-operator1 (assign argl (op empty-arglist)) (assign proc (reg val)) (test (op no-operands?) (reg unev)) (branch (label apply-dispatch)) (save proc) ;;; b. インタープリタがソースプログラムを読み込み解釈しながら実行 ;;; している限りは、インタープリタの実行時間が、 ;;; コンパイラがソースプログラムを読み込んで、解釈し作り出した ;;; (解釈過程を含まない)オブジェクトプログラムの実行時間より ;;; も短くなることはない。 Exercise 5.33 ;;; (factorial (- n 1)) のコンパイル結果に差はないので、この部分を (F) と書く。 ;;; オペランドは右から評価、 argl にリストされる。 ;;; (* (F) n) では、n の評価・arglに登録後に (F) の評価を行うようコンパイルされる ;;; ため、 ;;; argl (F)の評価時に n が登録されているので save/restoreが 行われる。 ;;; env (F)の評価後に env 環境で評価するものがないので何も行われない。 ;;; (* n (F)) では、(F) の評価・arglに登録後に n の評価を行うようコンパイルされる ;;; ため、 ;;; argl (F)の評価時には何も登録されていないないので何も行わない。 ;;; env (F)の評価後に n を評価するための環境を save/restore する。 ;;; 実行の効率に関して差はない。 naga ~/sicp/5$ diff factorial factorial-alt 37,40c37,38 (assign val (op lookup-variable-value) (const n) (reg env)) (assign argl (op list) (reg val)) (save argl) (assign proc (op lookup-variable-value) (const factorial) (reg env)) --- (save env) (assign proc (op lookup-variable-value) (const factorial-alt) (reg env)) 67c65,67 (restore argl) --- (assign argl (op list) (reg val)) (restore env) (assign val (op lookup-variable-value) (const n) (reg env)) 82c82 (perform (op define-variable!) (const factorial) (reg val) (reg env)) --- (perform (op define-variable!) (const factorial-alt) (reg val) (reg env)) naga ~/sicp/5$ Exercise 5.34 ;;; stack にアクセスしてる個所に注釈をつける。 ;;; 再帰呼出し版は一回で3つレジスタが積まれた状態で次の呼出しが行われるが、 ;;; 末尾再帰版はレジスタの積まれ具合が増えない状態で次の呼出しが行われる。 ;;; 再帰呼出し版 (* (factorial (- n 1)) n) の部分 false-branch2 (assign proc (op lookup-variable-value) (const *) (reg env)) ;; stack +1 (save continue) ;; stack +2 (save proc) (assign val (op lookup-variable-value) (const n) (reg env)) (assign argl (op list) (reg val)) ;; stack +3 (save argl) (assign proc (op lookup-variable-value) (const factorial) (reg env)) ;; stack +4 (save proc) (assign proc (op lookup-variable-value) (const -) (reg env)) (assign val (const 1)) (assign argl (op list) (reg val)) (assign val (op lookup-variable-value) (const n) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch4)) compiled-branch4 (assign continue (label after-call4)) (assign val (op complied-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch4 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call4 (assign argl (op list) (reg val)) ;; stack +3 (restore proc) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch5)) compiled-branch5 (assign continue (label after-call5)) (assign val (op complied-procedure-entry) (reg proc)) ;; factorial の再帰呼出し (goto (reg val)) primitive-pranch5 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call5 ;; stack +2 (restore argl) (assign argl (op cons) (reg val) (reg argl)) ;; stack +1 (restore proc) ;; stack +0 (restore continue) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch6)) compiled-branch6 (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch6 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) (goto (reg continue)) after-call6 after-if2 ;;; 末尾再帰版 (iter (*counter product) (+ counter 1)) の部分 false-branch3 (assign proc (op lookup-variable-value) (const iter) (reg env)) ;; stack +1 (save continue) ;; stack +2 (save proc) ;; stack +3 (save env) (assign proc (op lookup-variable-value) (const +) (reg env)) (assign val (const 1)) (assign argl (op list) (reg val)) (assign val (op lookup-variable-value) (const counter) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch6)) compiled-branch6 (assign continue (label after-call6)) (assign val (op complied-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch6 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call6 (assign argl (op list) (reg val)) ;; stack +2 (restore env) ;; stack +3 (save argl) (assign proc (op lookup-variable-value) (const *) (reg env)) (assign val (op lookup-variable-value) (const product) (reg env)) (assign argl (op list) (reg val)) (assign val (op lookup-variable-value) (const counter) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch5)) compiled-branch5 (assign continue (label after-call5)) (assign val (op complied-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch5 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call5 ;; stack +2 (restore argl) (assign argl (op cons) (reg val) (reg argl)) ;; stack +1 (restore proc) ;; stack +0 (restore continue) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch7)) compiled-branch7 (assign val (op compiled-procedure-entry) (reg proc)) ;; iterの末尾再帰呼出し (goto (reg val)) primitive-pranch7 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) (goto (reg continue)) after-call7 after-if3 Exercise 5.35 (define (f x) (+ x (g (+ x 2)))) Exercise 5.36 ;;; 右→左 construct-arglist で評価順を決めている。 ;;; 左→右にするには construct-arglist、code-to-get-rest-args を変更する。 ;;; コンパイル結果が1命令増える。 (define (construct-arglist operand-codes) ;; opeand-codes の reverse を止める。 ;;(let ((operand-codes (reverse operand-codes))) (if (null? operand-codes) (make-instruction-sequence () (argl) ((assign argl (const ())))) (let ((code-to-get-last-arg (append-instruction-sequences (car operand-codes) (make-instruction-sequence (val) (argl) ((assign argl (op list) (reg val))))))) (if (null? (cdr operand-codes)) code-to-get-last-arg (preserving (env) code-to-get-last-arg (code-to-get-rest-args (cdr operand-codes)))))));;) (define (code-to-get-rest-args operand-codes) (let ((code-for-next-arg (preserving (argl) (car operand-codes) (make-instruction-sequence (val argl) (argl) ((assign argl (op cons) (reg val) (reg argl))))))) (if (null? (cdr operand-codes)) (preserving () code-for-next-arg ;; 最後の operand を評価し argl に cons した後に ;; argl を reverse する実行命令を追加 (make-instruction-sequence (argl) (argl) ((assign argl (op reverse) (reg argl))))) (preserving (env) code-for-next-arg (code-to-get-rest-args (cdr operand-codes)))))) ;;右→左 ;;gosh (Compile (f x y) val next) ;;registers-needed (env) ;;registers-modified (env proc argl continue val) ;;object-codes ;; (assign proc (op lookup-variable-value) (const f) (reg env)) ;; (assign val (const y)) ;; (assign argl (op list) (reg val)) ;; (assign val (const x)) ;; (assign argl (op cons) (reg val) (reg argl)) ;; (test (op primitive-procedure?) (reg proc)) ;; (branch (label primitive-pranch1)) ;;compiled-branch1 ;; (assign continue (label after-call1)) ;; (assign val (op complied-procedure-entry) (reg proc)) ;; (goto (reg val)) ;;primitive-pranch1 ;; (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) ;;after-call1 ;; ;;左→右 ;;gosh (Compile (f x y) val next) ;;registers-needed (env) ;;registers-modified (env proc argl continue val) ;;object-codes ;; (assign proc (op lookup-variable-value) (const f) (reg env)) ;; (assign val (const x)) ;; (assign argl (op list) (reg val)) ;; (assign val (const y)) ;; (assign argl (op cons) (reg val) (reg argl)) ;; (assign argl (op reverse) (reg argl)) ;; (test (op primitive-procedure?) (reg proc)) ;; (branch (label primitive-pranch1)) ;;compiled-branch1 ;; (assign continue (label after-call1)) ;; (assign val (op complied-procedure-entry) (reg proc)) ;; (goto (reg val)) ;;primitive-pranch1 ;; (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) ;;after-call1 Exercise 5.37 ;;; preserving をseq2で必要であれば、seq1で変更されていなくても ;;; save/restore ように変更 (define (preserving regs seq1 seq2) (if (null? regs) (append-instruction-sequences seq1 seq2) (let ((first-reg (car regs))) (if (and (needs-register? seq2 first-reg) ;(modifies-register? seq1 first-reg) ← ) (preserving (cdr regs) (make-instruction-sequence (list-union (list first-reg) (registers-needed seq1)) (list-difference (registers-modified seq1) (list first-reg)) (append `((save , first-reg)) (statements seq1) `((restore , first-reg)))) seq2) (preserving (cdr regs) seq1 seq2))))) ;;; オリジナル版 gosh (Compile (f x y) target next) registers-needed (env) registers-modified (env proc val argl continue target) object-codes (assign proc (op lookup-variable-value) (const f) (reg env)) (assign val (const y)) (assign argl (op list) (reg val)) (assign val (const x)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch1)) compiled-branch1 (assign continue (label proc-return2)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) proc-return2 (assign target (reg val)) (goto (label after-call1)) primitive-pranch1 (assign target (op apply-primitive-procedure) (reg proc) (reg argl)) after-call1 ;;; preserving 修正版 gosh (Compile (f x y) target next) registers-needed (env) registers-modified (env proc val argl continue target) object-codes (assign proc (op lookup-variable-value) (const f) (reg env)) (save proc) (assign val (const y)) (assign argl (op list) (reg val)) (save argl) (assign val (const x)) (restore argl) (assign argl (op cons) (reg val) (reg argl)) (restore proc) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch1)) compiled-branch1 (assign continue (label proc-return2)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) proc-return2 (assign target (reg val)) (goto (label after-call1)) primitive-pranch1 (assign target (op apply-primitive-procedure) (reg proc) (reg argl)) after-call1 Exercise 5.38 ;;; a d (define (spread-argument exp seq) (let ((operator (cond ((eq? (car exp) oc-) oc+) ((eq? (car exp) oc/) oc*) (else (car exp)))) (operands (cdr exp))) (let ((seq1 (compile (car operands) arg1 next)) (seq2 (if (= (length exp) 3) (compile (cadr operands) arg2 next) (compile (cons operator (cdr operands)) arg2 next)))) (preserving (env) seq1 (preserving (arg1) seq2 seq))))) ;;; b ;; compile に追加 ((oca? exp) (compile-oca exp target linkage)) ((ocl? exp) (compile-ocl exp target linkage)) ;; compile-oca compile-ocl (define (compile-oca exp target linkage) (let ((oplen (- (length exp) 1))) (cond (( oplen 2) (error "Too less operand COMPILE-OCA" exp)) (else (end-with-linkage linkage (spread-argument exp (make-instruction-sequence (arg1 arg2) ( , target) `((assign , target (op , (car exp)) (reg arg1) (reg arg2)))))))))) (define (compile-ocl exp target linkage) (let ((oplen (- (length exp) 1))) (cond ((not (= oplen 2)) (error "Must be 2 operands -- COMPILE-OCL " exp)) (else (end-with-linkage linkage (spread-argument exp (make-instruction-sequence (arg1 arg2) ( , target) `((assign , target (op , (car exp)) (reg arg1) (reg arg2)))))))))) ;; eceval-operations に追加 (list oc+ oc+) (list oc- oc-) (list oc* oc*) (list oc= oc=) ;; open-code primitives 定義 (define (oc+ a b) (+ a b)) (define (oc- a b) (- a b)) (define (oc* a b) (* a b)) (define (oc= a b) (= a b)) ;;; c gosh (Compile (define (factorial-oc n) (if (oc= n 1) 1 (oc* (factorial-oc (oc- n 1)) n))) val next) registers-needed (env) registers-modified (val) object-codes (assign val (op make-compiled-procedure) (label entry6) (reg env)) (goto (label after-lambda6)) entry6 (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const (n)) (reg argl) (reg env)) (assign arg1 (op lookup-variable-value) (const n) (reg env)) (assign arg2 (const 1)) (assign val (op oc=) (reg arg1) (reg arg2)) (test (op false?) (reg val)) (branch (label false-branch7)) true-branch7 (assign val (const 1)) (goto (reg continue)) false-branch7 (save continue) (save env) (assign proc (op lookup-variable-value) (const factorial-oc) (reg env)) (assign arg1 (op lookup-variable-value) (const n) (reg env)) (assign arg2 (const 1)) (assign val (op oc-) (reg arg1) (reg arg2)) (assign argl (op list) (reg val)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch8)) (test (op compound-procedure?) (reg proc)) (branch (label compound-branch8)) compiled-branch8 (assign continue (label proc-return9)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) proc-return9 (assign arg1 (reg val)) (goto (label after-call8)) compound-branch8 (assign continue (label proc-return10)) (save continue) (goto (reg compapp)) proc-return10 (assign arg1 (reg val)) (goto (label after-call8)) primitive-pranch8 (assign arg1 (op apply-primitive-procedure) (reg proc) (reg argl)) after-call8 (restore env) (assign arg2 (op lookup-variable-value) (const n) (reg env)) (assign val (op oc*) (reg arg1) (reg arg2)) (restore continue) (goto (reg continue)) after-if7 after-lambda6 (perform (op define-variable!) (const factorial-oc) (reg val) (reg env)) (assign val (const ok)) ;;gosh (compile-and-go ;; (define (factorial-oc n) ;; (if (oc= n 1) ;; 1 ;; (oc* (factorial-oc (oc- n 1)) n)))) ;;(total-pushes = 0 maximum-depth = 0) ;;;;; EC-Eval value ;;ok ;;;;; EC-Eval input ;;(factorial-oc 5) ;;(total-pushes = 11 maximum-depth = 8) ;;;;; EC-Eval value ;;120 ;;gosh (Compile (oc+ 1 2 3) val next) ;;registers-needed () ;;registers-modified (arg1 arg2 ,target) ;;object-codes ;; (assign arg1 (const 1)) ;; (save arg1) ;; (assign arg1 (const 2)) ;; (assign arg2 (const 3)) ;; (assign arg2 (op oc+) (reg arg1) (reg arg2)) ;; (restore arg1) ;; (assign val (op oc+) (reg arg1) (reg arg2)) Exercise 5.39 (define (frame-values frame) (cdr frame)) (define (frame-number lex-addr) (car lex-addr)) (define (displacement-number lex-addr) (cdr lex-addr)) (define (lex-addr frame-number displacement-number) (cons frame-number displacement-number)) (define (lexical-address-lookup lex-addr env) (let ((frame (list-ref env (frame-number lex-addr)))) (let ((val (list-ref (frame-values frame) (displacement-number lex-addr)))) (if (eq? val *unassigned*) (Errorsignal "Unassignd varable" var) val)))) (define (lexcal-address-set! lex-addr val env) (let ((frame (list-ref env (frame-number lex-addr)))) (let loop ((vals (frame-values frame)) (dis (displacement-number lex-addr))) (if (= dis 0) (set-car! vals val) (loop (cdr vals) (- dis 1)))))) (define env (list (cons (a b) (1 2)) ;;a- (0 . 0), b- (0 . 1) (cons (c d) (3 4)))) ;;c- (1 . 0), d- (1 . 1) ;;gosh env ;;(((a b) 1 2) ((c d) 3 4)) ;;gosh (lexical-address-lookup (0 . 1) env) ;;2 ;;gosh (lexical-address-lookup (1 . 1) env) ;;4 ;;gosh (lexcal-address-set! (0 . 0) 5 env) ;;# undef ;;gosh (lexcal-address-set! (1 . 1) 6 env) ;;# undef ;;gosh env ;;(((a b) 5 2) ((c d) 3 6)) Exercise 5.40 ;;; compile-time-environment を使用する各 compile 手続きの名前の先頭に L を追加 (define (Lcompile exp target linkage ct-env) (cond ((self-evaluating? exp) (compile-self-evaluating exp target linkage)) ((quoted? exp) (compile-quoted exp target linkage)) ((variable? exp) (Lcompile-variable exp target linkage ct-env)) ((assignment? exp) (Lcompile-assignment exp target linkage ct-env)) ((definition? exp) (Lcompile-definition exp target linkage ct-env)) ((if? exp) (Lcompile-if exp target linkage ct-env)) ((lambda? exp) (Lcompile-lambda exp target linkage ct-env)) ((begin? exp) (Lcompile-sequence (begin-action exp) target linkage ct-env)) ((cond? exp) (Lcompile (cond- if exp) target linkage ct-env)) ((oca? exp) (compile-oca exp target linkage)) ((ocl? exp) (compile-ocl exp target linkage)) ((application? exp) (Lcompile-application exp target linkage ct-env)) (else (error "Unknown expression type -- COMPILE" exp)))) ;;; compile-time-environment を拡張して、その環境で lambda-body をコンパイル (define (Lcompile-lambda-body exp proc-entry ct-env) (let ((formals (lambda-parameters exp))) (let ((extended-ct-env (cons formals ct-env))) (append-instruction-sequences (make-instruction-sequence (env proc argl) (enc) `( , proc-entry (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const , formals) (reg argl) (reg env)))) (Lcompile-sequence (lambda-body exp) val return extended-ct-env))))) ;;; (define (Lcompile-if exp target linkage ct-env) (let* ((labels (make-labels true-branch false-branch after-if)) (t-branch (list-ref labels 0)) (f-branch (list-ref labels 1)) (after-if (list-ref labels 2))) (let ((consequent-linkage (if (eq? linkage next) after-if linkage))) (let ((p-code (Lcompile (if-predicate exp) val next ct-env)) (c-code (Lcompile (if-consequent exp) target consequent-linkage ct-env)) (a-code (Lcompile (if-alternative exp) target linkage ct-env))) (preserving (env continue) p-code (append-instruction-sequences (make-instruction-sequence (val) () `((test (op false?) (reg val)) (branch (label , f-branch)))) (parallel-instruction-sequences (append-instruction-sequences t-branch c-code) (append-instruction-sequences f-branch a-code)) after-if)))))) (define (Lcompile-sequence seq target linkage ct-env) (if (last-exp? seq) (Lcompile (first-exp seq) target linkage ct-env) (preserving (env continue) (Lcompile (first-exp seq) target next ct-env) (Lcompile-sequence (rest-exps seq) target linkage ct-env)))) (define (Lcompile-lambda exp target linkage ct-env) (let* ((labels (make-labels entry after-lambda)) (proc-entry (list-ref labels 0)) (after-lambda (list-ref labels 1))) (let ((lambda-linkage (if (eq? linkage next) after-lambda linkage))) (append-instruction-sequences (tack-on-instruction-sequence (end-with-linkage lambda-linkage (make-instruction-sequence (env) (list target) `((assign , target (op make-compiled-procedure) (label , proc-entry) (reg env))))) (Lcompile-lambda-body exp proc-entry ct-env)) after-lambda)))) (define (Lcompile-lambda-body exp proc-entry ct-env) (let ((formals (lambda-parameters exp))) (let ((extended-ct-env (cons formals ct-env))) (append-instruction-sequences (make-instruction-sequence (env proc argl) (enc) `( , proc-entry (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const , formals) (reg argl) (reg env)))) (Lcompile-sequence (lambda-body exp) val return extended-ct-env))))) (define (Lcompile-application exp target linkage ct-env) (let ((proc-code (Lcompile (operator exp) proc next ct-env)) (operand-codes (map (lambda (operand) (Lcompile operand val next ct-env)) (operands exp)))) (preserving (env continue) proc-code (preserving (proc continue) (construct-arglist operand-codes) (compile-procedure-call target linkage))))) Exercise 5.41 ;;; find-variable (define (find-variable var ct-env) (let floop ((frame-num 0) (frames ct-env)) (if (pair? frames) (let dloop ((displacement-num 0) (frame (car frames))) (if (pair? frame) (if (eq? (car frame) var) (lex-addr frame-num displacement-num) (dloop (+ displacement-num 1) (cdr frame))) (floop (+ frame-num 1) (cdr frames)))) not-found))) ;;gosh (find-variable c ((y z) (a b c d e) (x y))) ;;(1 2) ;;gosh (find-variable x ((y z) (a b c d e) (x y))) ;;(2 0) ;;gosh (find-variable w ((y z) (a b c d e) (x y))) ;;not-found Exercise 5.42 ;;; compile-variable (define (Lcompile-variable exp target linkage ct-env) (let ((lex-addr (find-variable exp ct-env))) (end-with-linkage linkage (if (eq? lex-addr not-found) (make-instruction-sequence () (list target env) `((assign env (op get-global-environment)) (assign , target (op lookup-variable-value) (cont , exp) (reg env)))) (make-instruction-sequence (env) (list target) `((assign , target (op lexcal-address-lookup) (const , lex-addr) (reg env)))))))) ;;; compile-assignment (define (Lcompile-assignment exp target linkage ct-env) (let ((var (assignment-variable exp)) (get-value-code (Lcompile (assignment-value exp) val next ct-env))) (let ((lex-addr (find-variable var ct-env))) (end-with-linkage linkage (preserving (env) get-value-code (if (eq? lex-addr not-found) (make-instruction-sequence (val) (list target env) ((assign env (op get-global-environment)) (perform (op set-variable-value!) (const , var) (reg val) (reg env)) (assign , target (const ok)))) (make-instruction-sequence (env val) (list target) `((perform (op lexcal-address-set!) (const , lex-addr) (reg val) (reg env)) (assign , target (const ok)))))))))) Exercise 5.43 ;;; let を special forms に追加 ((let? exp) (Lcompile (let- combination exp) target linkage ct-env) ;;; scan-out-definiton (内部定義- let set!, ex4.16で作成) の追加 (define (make-set! var val) (list set! var val)) (define (scan-out-defines body) (define (iter body bindings set!s so-body) (if (null? body) (if (null? bindings) so-body (list (make-let (reverse bindings) (append (reverse set!s) so-body)))) (let ((exp (car body))) (cond ((and (definition? exp) (null? so-body)) (iter (cdr body) (cons (list (definition-variable exp) *unassigned*) bindings) (cons (make-set! (definition-variable exp) (definition-value exp)) set!s) so-body)) ((definition? exp) (error "Definitions must be first of body" exp)) (else (iter (cdr body) bindings set!s (if (null? so-body) body so-body))) )))) (iter body () () ())) ;;; compile-definition に scan-out-defines を入れ込む。 (define (Lcompile-definition exp target linkage ct-env) (let ((var (definition-variable exp)) (get-value-code (Lcompile (scan-out-defines (definition-value exp)) val next ct-env))) (end-with-linkage linkage (preserving (env) get-value-code (make-instruction-sequence (env val) (list target) `((perform (op define-variable!) (const , var) (reg val) (reg env)) (assign , target (const ok)))))))) ;;; 実行結果 gosh (LCompile (define lt (let ((x 3) (y 4)) (lambda (a b c d e) (let ((y (* a b x)) (z (+ c d x))) (* x y z))))) traget next) registers-needed (env) registers-modified (proc argl continue val traget) object-codes (save env) (assign proc (op make-compiled-procedure) (label entry1) (reg env)) (goto (label after-lambda1)) entry1 (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const (x y)) (reg argl) (reg env)) (assign val (op make-compiled-procedure) (label entry2) (reg env)) (goto (reg continue)) entry2 (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const (a b c d e)) (reg argl) (reg env)) (assign proc (op make-compiled-procedure) (label entry3) (reg env)) (goto (label after-lambda3)) entry3 (assign env (op compiled-procedure-env) (reg proc)) (assign env (op extend-environment) (const (y z)) (reg argl) (reg env)) (save env) (assign env (op get-global-environment)) (assign proc (op lookup-variable-value) (const *) (reg env)) (restore env) (assign val (op lexical-address-lookup) (const (0 . 1)) (reg env)) (assign argl (op list) (reg val)) (assign val (op lexical-address-lookup) (const (0 . 0)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (assign val (op lexical-address-lookup) (const (2 . 0)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch4)) compiled-branch4 (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch4 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) (goto (reg continue)) after-call4 after-lambda3 (save continue) (save proc) (save env) (save env) (assign env (op get-global-environment)) (assign proc (op lookup-variable-value) (const +) (reg env)) (restore env) (assign val (op lexical-address-lookup) (const (1 . 0)) (reg env)) (assign argl (op list) (reg val)) (assign val (op lexical-address-lookup) (const (0 . 3)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (assign val (op lexical-address-lookup) (const (0 . 2)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch6)) compiled-branch6 (assign continue (label after-call6)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch6 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call6 (assign argl (op list) (reg val)) (restore env) (save argl) (save env) (assign env (op get-global-environment)) (assign proc (op lookup-variable-value) (const *) (reg env)) (restore env) (assign val (op lexical-address-lookup) (const (1 . 0)) (reg env)) (assign argl (op list) (reg val)) (assign val (op lexical-address-lookup) (const (0 . 1)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (assign val (op lexical-address-lookup) (const (0 . 0)) (reg env)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch5)) compiled-branch5 (assign continue (label after-call5)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch5 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call5 (restore argl) (assign argl (op cons) (reg val) (reg argl)) (restore proc) (restore continue) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch7)) compiled-branch7 (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch7 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) (goto (reg continue)) after-call7 after-lambda2 after-lambda1 (assign val (const 4)) (assign argl (op list) (reg val)) (assign val (const 3)) (assign argl (op cons) (reg val) (reg argl)) (test (op primitive-procedure?) (reg proc)) (branch (label primitive-pranch8)) compiled-branch8 (assign continue (label after-call8)) (assign val (op compiled-procedure-entry) (reg proc)) (goto (reg val)) primitive-pranch8 (assign val (op apply-primitive-procedure) (reg proc) (reg argl)) after-call8 (restore env) (perform (op define-variable!) (const lt) (reg val) (reg env)) (assign traget (const ok))
https://w.atwiki.jp/camnal/
ブログ始めました。 みなさま、おはようございます 宝くじ買ったよ 当たるといいな ♪o(^o^o)(o^o^)oワクワク♪ このブログでは 私の知りたいこと、興味があることなどを 気まぐれに 書き綴っていくつもりです どうぞよろしくお願いいたします
https://w.atwiki.jp/nagami/pages/13.html
衆議院議員選挙開票速報を横目に Twitter上で、科学技術政策について語る会 日時: 2009年8月30日 20-22時 (19 45開場、自主延長可能) 会場: Twitter上 参加資格: Twitter user 参加費: 無料(通信料等自己負担) 参加条件: コアタイム内につぶやいたことに対して、転載を許可すること (申し出れば適用除外可能) 呼び掛け人: fj_n (Fuji Nagami) Twitter検索 http //twitter.com/search/#search?q=kagakusenkyo あるいは、kiwofusiさん、という方がまとめてくれたサイトが見やすいです。 http //kiwofusi.sakura.ne.jp/hashtag/output.cgi?name=kagakusenkyo start_id=3623103856 limit=500 コアタイム内発言者数: 41名