yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

いまはなき理科大のみらいけんのGoogleアカウントにログインしてみた話→なんか復活してね!?

自己紹介

  • 2021/04 子ども向け科学実験をやる団体と騙されて企画する側の楽しさを宣伝されて参加、広報班へ
  • 2022年はじめくらいから: Webページ作成担当になる
  • 2018くらいでみらいけんはから足を洗う
  • 2021/03に理科大卒業

本文

とくに理由はないのだがふとみらいけんのGoogle アカウントにログインしようとしてみた。

みらいけんとは何かは説明がだるいのでしたのgithubを頑張って漁ってほしい。子ども向け科学実験イベントを企画運営していた東京理科大学の団体だった。

github.com

さて、自分の知る限り2つのアカウントがある。

みらいけんは

  • 総務班
  • 企画班
  • 広報班

に分かれていて、自分は広報班にいた。というかgithub見ればわかるとおり、Webページ制作を担当していた。

広報班のGoogleアカウント

というわけで広報班のGoogleアカウントがこれだ。めちゃくちゃ普通にログインできた。

miraiken.pr@gmail.com

ただ、再設定用メールが後述のログインできないやつになっているので、変えられるかなーと試してたらSMS認証に引っかかった。このクソ夜中にスマホに通知を送り付けたの私だ、すまんな、末尾74の携帯の人。 ちなみに手元の電話帳で調べたが知らない番号だった。自分が2014に入っているのだが、多分2013に入った広報班の誰かだと思う・・・。

全体のGoogleアカウント

みらいけんでは自分が入る数年前にサイボウズLiveというグループワークシステムを導入していた。で、このファイル管理が結構辛いってのがあり、Qiitaに記事にしたこともある。

qiita.com

そういうわけで全体のGoogleアカウントがこれだ。アカウントを作ったのは確か上の記事書いたのと同時期だったきがする。なんなら作ったの私だった気がする。

ログインはできるが2段階認証がかけられていた。

miraken.rika@gmail.com

Google からお使いの Asus ZenFone 6 (ZS630KL) (WW) / 6Z (ZS630KL) (IN)、Oppo Reno7 A、他 4 個のデバイスに通知を送信しました。

だれのかしらんがこのクソ夜中にスマホに通知を送り付けたの私だ、すまんな。

追記

あれ、自分が知る限り2021年10月18日に全体ラインで活動終了するで、ってお知らせ来たんだけど、

tusmiraiken.hp.peraichi.com

これはなんぞ?2023年10月8日にイベントをやった記録がある。

「(吹) ハリー・ポッター20周年記念:リターン・トゥ・ホグワーツ」をようやく見て思うこと

映像へのリンク(有料)

www.hulu.jp

はじめに

Harry_Potter_Book_and_Wand

Harry Potter Book and Wand - Category:Harry Potter (franchise) - Wikimedia Commons

ようやくこれを見た。やっぱり僕らの世代にとってのHarryPotterってのは非常に大きな存在で、確実に自分の人生に大きな影響を与えている、素晴らしい作品だと思う。 今なお魅了される人々が増えていっているのもそういうことじゃなかろうか。

自分とHarryPotterとの出会い

自分が初めてHarryPotterを知ったのは小学生の高学年の時、当時毎日のように一緒に行き帰り通学していた女の子(付き合ってません)に学校の図書室で勧められた時たった。

当時自分はだいぶ本の虫な小学生ではあったものの、シャーロック・ホームズやアルセーヌ・ルパン、西遊記封神演義などを主に読んでいて、あんまりピンとこなくてその時は読まなかったように思う。

その後HarryPotterの映画予告なんかもテレビで流れていたものの、強く印象に残るほどではなかった。

中学校に入って、夏休みの読書課題で本を選ぶときにHarryPotterを思い出して、まずは賢者の石を借りて帰った。

それをベッドで読み始めた晩は人生で初めて徹夜した日で、一気に読破した。その後、学校と市立図書館の貸出枠をめいいっぱい使ってシリーズ全部借りて、夏休みの課題そっちのけで読み耽ることになった。

特に、HarryPotterと不死鳥の騎士団を読んだ時は、ちょうどそれはそれはすごい雷雨の日で、落雷で停電する中、LEDランタンの明かりで雷に震えながら読みふけっていたのをよく覚えている。

しばらくして先に述べた別の中学校に進んだ女の子の家に遊びに行ったときに、炎のゴブレットのDVDを譲り受けた。これで映画版にもハマり、レンタルで全巻視聴することになった。

あんまりHarryPotterにハマっているのをみた私の叔母が、HarryPotter全巻をゆずってくれたので、そこから学校の宿題をそっちのけで読みふけっては親に怒られるのを繰り返した。当然にして学校の成績は下がった。

なお同じ頃、英語版の賢者の石の本を買って読み始めたが、文法的にはわかるものの知らない単語が多くて、心が折れるなどした。英和辞書で単語を引いて、緑のボールペンで書き込んだので書き込みだらけになっている。

成長する登場人物たちと俳優たち

HarryPotterシリーズをおそらく多くの人は映画で知っているのだと思う。翻訳版の原作は特に第5作品目の「不死鳥の騎士団」以降、それこそ鈍器か?ってくらい分厚いし、尻込みしてしまう人も多いだろうから。

HarryPotterシリーズは原作と映画がリアルタイムで同期しながら公開されていった。作品の中で登場人物たちが成長していくにつれて、それを見ている私達も成長していった。

と同時に重要なことは公開された映画に出演する俳優たちも成長していったということ。彼女たちも悩みあふれるティーンエイジャーという時のなかでこの作品を演じていたのだから。

この「リターン・トゥ・ホグワーツ」でもそのことに対する言及がたくさんあった。特に「僕らが経験したことは僕らにしか分からない特別なことだって、デヴィッド監督は君らは宇宙飛行士だって。こんな環境で育った子どもは僕らしかいないから。だから3人の絆は永遠だ。(1:20:25付近)」とルパート・グリント(ロン・ウィーズリー役)が語っていたことはそれを象徴していると言っていい。

ルーナ・ラブグッド

自分がHarryPotterの登場人物でもっとも影響を受けたのはおそらく、ルーナ・ラブグッドだと思う。自分ははじめそのキャラクターを映画の予告映像でみて、そして原作(翻訳)をよんで、そのあと映画をみて知った。彼女の不思議なことを信じる力、想像力は自分に大きな勇気を与えてくれたと思う。

自分自身、周囲とはだいぶ違う子どもだったので、それがきっかけでいじめられたこともあったし、普通じゃないことに対する葛藤みたいなものもあった。

主人公のハリーも、「普通」であることを強く求めるダーズリー家でだいぶ苦しんでたが、やっぱりルーナの存在は本作品でも飛び抜けていて、彼女のような生き方もあるんだというのは、あとになってみれば、大きな救いになっていたのだと思う。

ちなみに映画予告なんかでも出てくるルーナがスキップしながら廊下を歩いているシーンが好きになりすぎて学校で真似したら、周囲からますます浮きました、それはそう。

親からお前の挙動は芝居がかっていると言われるのだが、絶対にルーナのせいだと思う。

社会人になった今から思うHarryPotter

冷静にHarryPotterのストーリーを眺めていると色々とツッコミどころはある。アルバス・ダンブルドアよお前それでも教育者かよとか、魔法省の立ち位置を私達が今暮らしている現代国家観のなかの政府と同じに見ることはできないなとか、純血主義ってえらくメンデルの法則から生まれた優生思想に影響されている「マグル」らしい思想じゃねとか・・・。

そういうツッコミをしつつ、原作を直接読むことこそ減れども、二次創作という形でHarryPotterをいまなお接種し続けている。それは学生時代の宝物を取り出して磨くような、そんな作業なのかもしれない。

余談: フクロウの「傍受」という訳

ハリー・ポッターシリーズ - Wikipedia#日本語の誤用

原文:he said the owls might be intercepted.

「あの人は、ふくろうが途中で傍受されるかもしれないといってた」と訳されている。"intercept" には途中で捕らえる・(電波を)傍受するという意味があるが、この場合可能なのはふくろうを捕獲して連絡内容を調べることである。そもそも、傍受は電波に用いる語なので日本語として間違っている

週刊文春のこの指摘は未だに納得行ってない。傍受という言葉は電波に限らず、通信に対して用いる語ではないか。例えば「犯罪捜査のための通信傍受に関する法律」では次のように有線通信に対しても用いている。

第二条 この法律において「通信」とは、電話その他の電気通信であって、その伝送路の全部若しくは一部が有線(有線以外の方式で電波その他の電磁波を送り、又は受けるための電気的設備に附属する有線を除く。)であるもの又はその伝送路に交換設備があるものをいう。

2 この法律において「傍受」とは、現に行われている他人間の通信について、その内容を知るため、当該通信の当事者のいずれの同意も得ないで、これを受けることをいう。

また無線通信とはなにも電波によるものに限定されない。例えばジョークRFCとしておなじみRFC1149(鳥類キャリアによるIP)では伝書鳩の上にIPを実装する例を示している。

HarryPotterの作品で描かれるフクロウによるやりとりの描かれ方では、現実世界の伝書鳩よりも遥かに信頼性が高く、「通信」足り得る。

故に「傍受」という訳が適当ではないという批判は当たらない。

DeepL翻訳: Using Profile Information to Assist Classic Code Optimizations

Using Profile Information to Assist Classic Code Optimizations

http://impact.crhc.illinois.edu/shared/journal/spe.profile-classic.91.pdf

note: 興味のあるところだけ翻訳ツールに投げ込んでいる

SUMMARY

本論文では、古典的なコードの最適化を支援するためにプロファイル情報を自動的に生成する最適化コンパイラの設計と実装について説明する。 このコンパイラには、従来の最適化コンパイラにはあまり見られない、実行プロファイラとプロファイルベースのコードオプティマイザという2つの新しいコンポーネントが含まれています。 実行プロファイラでは、入力プログラムにプローブを挿入し、複数の入力に対して入力プログラムを実行し、プロファイル情報を蓄積し、この情報をオプティマイザに供給する。 プロファイルベースのコードオプティマイザは、プロファイル情報を利用して、従来の全体最適化手法では見えなかった新たな最適化の機会を明らかにします。 実験の結果、プロファイルベースコードオプティマイザは、高品質のグローバルコードオプティマイザによってすでに最適化されている量産Cプログラムの性能を大幅に向上させることがわかりました。

CODE OPTIMIZATION ALGORITHMS

Optimizing frequently executed paths

このセクションで紹介するプロファイルベースのコード最適化はすべて、最も頻繁に実行されるパスの最適化という単一のコンセプトを追求しています。このコンセプトについて、例を挙げて説明する。図2は、ループを表す重み付きオウグラフである。 をプログラムする。基本ブロック{A B C D E F}のカウントは、それぞれ{100,90,0,0,90,100}である。 {A → B , A → C , B → D , B → E , C → F , D → F , E → F , F → A} のarc_countは次の通りである。 {90,10,0,90,10,0,90,99}, respectively. 明らかに、この例で最も頻繁に実行されるパスは、基本ブロックシーケンス<A B E F>である。 従来、非ループベースの古典的コード最適化の定式化は保守的であり、いかなる基本ブロックの実行時間を増加させる可能性のある変換も実行しない。ループベースの古典的コード最適化の定式化は、ループ本体全体を全体として考慮し、非常に偏った「if」文のためにループ本体内のいくつかの基本ブロックがほとんど実行されないケースは考慮しない。このセクションの残りの部分では、より積極的な判断を行い、より多くの最適化の機会を探る、いくつかのプロファイルベースのコード最適化について説明します。

私たちは、頻繁に実行されるパスを表現するために、スーパーブロックと呼ばれるシンプルなデータ構造を使用することを提案します。スーパーブロックは、基本ブロックの線形シーケンスであり、シーケンス内の最初のブロックからしか到達できない。プログラム制御は、どの基本ブロックからでもスーパーブロックを離れることができます。 実行がスーパーブロックに達したとき、そのスーパーブロック内のすべての基本ブロックが実行される可能性が非常に高い。 スーパーブロックの基本ブロックは、コード上では連続である必要はありません。しかし、この実装では、オプティマイザが考える限り、スーパーブロックのすべてのブロックが常に連続するようにコードを再構築しています。

Forming super-blocks

スーパーブロックの形成は、トレース選択とテールデュプリケーションという2段階の手順で行われます。 トレース選択では、順番に実行される傾向がある基本ブロックを特定し、トレースにグループ化する。 トレースの定義は、プログラム制御が最初の基本ブロックから入ることに制限されないことを除いて、スーパーブロックの定義と同じである。 トレース選択は,トレーススケジューリングで初めて用いられた [7] [8] . いくつかのトレース選択アルゴリズムの実験的研究が[9]に報告されている. トレース選択アルゴリズムの概要を図 3 に示す. best_predecessor_of(node)関数は,ソース基本ブロックがまだマークされていない場合,nodeのソース基本ブロックの中で最も可能性が高いものを返す. トレースの成長は、現在のノードの最も可能性の高いソース基本ブロックがマークされたときに停止される。 best_predecessor_of(node)関数は、対称的に定義される。

図2はトレース選択の結果である。 点線の枠がトレースを表している。 トレースは{A, B, E, F }, {C }, {D }の3つである。 トレース選択後、プログラム制御が最上位の基本ブロックにしか入らないようにするため、トレースの末尾部分を複製してスーパーブロックに変換する。 テール部の複製アルゴリズムは図4に示す。 図2の例で考えると、{A, B, E, F }トレースに入る制御経路は基本ブロックFで2つあることがわかる。 そこで、基本ブロックFから始まる{A、B、E、F}トレースの最後尾部分を複製する。 複製された各基本ブロックは、新しいスーパーブロックを形成し、関数の末尾にアプライされる。 その結果が図5である。 ジャンプ命令を排除するために、末尾の複製後にさらにコード変換が行われる。 例えば、図5のFスーパーブロックを複製し、それぞれの複製をCとDのスーパーブロックと組み合わせて、2つの大きなスーパーブロックを形成することができます。 重複を抑制するために、実行回数が閾値以下(例えば、1回の実行で100回)の基本ブロックは、トレース選択プロセスから除外している。 また、コンパイル時間の増加を抑制するために、プロファイルベースのコード最適化からも除外する。

Formulation of code optimizations

name scope
constant propagation super-block
copy propagation super-block
constant combining super-block
common sub expression elimination super-block
redundant store elimination super-block
redundant load elimination super-block
dead code removal super-block
loop invariant code removal super-block loop
loop induction variable elimination super-block loop
global variable migration super-block loop

Table 2 Super-block code optimizations.

表2は、プロファイル情報を利用するために拡張した古典的なコードの最適化のリストです。 これらの古典的なコード最適化の原型は、[1] [19] に記載されています。 表2のスコープ欄には、これらのコード最適化の拡張スコープを記述しています。 非ループベースのコード最適化は、一度に1つのスーパーブロックに対して動作する。 ループベースのコード最適化は、一度に1つのスーパーブロック・ループに作用する。 スーパーブロックループとは、最後のノデから最初のノデまで、頻繁にバックエッジが取られるスーパーブロックのことです。 オプティマイザはまず、ライブ変数分析を適用して、スーパーブロックの境界を越えてライブしている変数を検出し、次に1つのスーパーブロックを一度に最適化する。 各スーパーブロックに対して、プロファイルベースのコード最適化を1回以上適用し、限界まで、またはそれ以上の機会が検出されなくなった時点で、最適化を終了する。 以下の説明では、各コード最適化は、前提条件関数とアクション関数で構成されています。 前提条件関数は、最適化の機会を検出し、変換によってプログラム全体の性能が向上することを確認するために使用されます。 アクション関数は、実際のコード変換を実行する。 コードの最適化を行うには、オプティマイザが最適化の対象となりそうな命令群を特定します。 次に、前提条件関数が呼び出され、各セットについて最適化の判断が行われます。 前提条件関数からの承認を得て、アクション関数が対象となるセットをより効率的な同等品に変換する。 命令 $op(i)$ が変更する変数の集合を $dest(i)$ とする。 また、$op(i)$がソースオペランドとして必要とする変数の集合を$src(i)$と表記する。 また、$op(i)$の演算コードを $f_i$ とする。 したがって、$op(i)$ は $dest(i) \leftarrow f_i(src(i))$ という演算を指す。

Local optimizations extended to super-blocks

ローカルコードの最適化には、スーパーブロックに簡単に拡張できるものがいくつかあります。 これらのローカル最適化には、定数伝搬、コピー伝搬、定数結合、共通部分式消去、冗長ロード消去、冗長ストア消去などがある [1] [19].

従来、ローカル最適化は基本ブロックにまたがって適用することはできず、グローバルコード最適化は実行可能な各パスを平等に考慮する必要がありました。 しかし、実行頻度の低いパスによって最適化の機会が阻害されるケースはよくある。 そのため、実行頻度の低いパスを体系的に解析から除外しない限り、実行頻度の高いパスに最適化を適用することができない。 尾部重複によるスーパーブロックの形成は、この効果を実現する。 したがって、プロファイルベースのコード最適化は、従来のコード最適化よりも多くの機会を見つけることができます。

ローカルコードの最適化がスーパーブロックに適用されるとより効果的である理由を説明するために、図6に示す共通部分式除去のケースを考えてみましょう。 元のプログラムは図6(a)に示されている。 トレース選択とテール複製を行うと、図6(b)のようになる。 尾部重複のため、opBからopCに到達できないので、opAとopCに共通部分式消去を適用することができる。


www.DeepL.com/Translator(無料版)で翻訳しました。