ティアナの書 ─ Book of Ti’ana

※画像はMYST Wikiより引用。

縦書き表示ライブラリnehan.jsの使用テストを兼ねて、ティアナの書─Book of Ti'ana 日本語訳のページを作成しました。どこまで気力が続くかわかりませんが、ぼちぼち追加していければいいなと思います。

Book of Ti'anaはBook of Atrus(日本語訳が出版されていたが絶版)に続く2作目のMYSTクロニクル・サポートストーリーです。地上人であるアトラスの祖母アナと、地下文明ドニの出会い、そして滅亡までが描かれており、滅亡前のドニ文化が当時の視点で描写されているのはこれだけではないでしょうか。

前作アトラスの書の主人公、アトラスの名前の由来である祖父にあたるアトラス(同名)が主人公で、アナとの間に生まれるゲーンも登場します。ゲーンが何故あれほどまでにドニ文化の復活を望み、そして歪んだのかの一端も語られるのではないかと思います。

カテゴリー: 日々のこと, URU Live | タグ: , | 17件のコメント

Custom Field Suite をWordPressマルチサイトに対応させる

Custon Field Suiteはもともとマルチサイト非対応で、最初に CFS()->get() が呼び出されたblog_idのプレフィクスのwp_postテーブルに対するselectクエリをキャッシュとして保持し、使い回すため、switch_to_blogするとその後のCFS()->get()で正しく結果を受け取れないという動作が発生してしまっていた。

includes/field_group.php 15行目あたりのキャッシュを返す処理を無効化すれば、switch_to_blogしても動作するようになったが、そうするとクエリ数が膨大になってしまう。

キャッシュ部分をよく見るとCustom Field Suiteのキャッシュはマルチサイトを想定していない配列に確保していたので、ここをマルチサイトに対応した構造にカスタマイズ。

includes/field_group.php
public function load_field_groups() {
    global $wpdb;
        
    /*
    if ( isset( $this->cache['field_groups'] ) ) {
        return $this->cache['field_groups'];
    }
    */
    if ( isset( $this->cache['field_groups'][$wpdb->posts] ) ) {
        return $this->cache['field_groups'][$wpdb->posts];
    }        
        ...中略...

    //$this->cache['field_groups'] = $output;
    $this->cache['field_groups'][$wpdb->posts] = $output;

    return $output;
}
includes/api.php
public function get_field( $field_name, $post_id, $options ) {
    global $wpdb,$post; //$wpdbを追加

    ...中略...

    // Trigger get_fields if not in cache
    //if ( ! isset( $this->cache[ $post_id ][ $options['format'] ][ $field_name ] ) ) {
    if ( ! isset( $this->cache[ $wpdb->posts ][ $post_id ][ $options['format'] ][ $field_name ] ) ) {
        $fields = $this->get_fields( $post_id, $options );
        return isset( $fields[ $field_name ] ) ? $fields[ $field_name ] : null;
    }
    return $this->cache[ $wpdb->posts ][ $post_id ][ $options['format'] ][ $field_name ];
}
public function get_fields( $post_id, $options ) {
    global $post, $wpdb;

    ...中略...

    // Return cached results
    //if ( isset( $this->cache[ $post_id ][ $options['format'] ] ) ) {
    if ( isset( $this->cache[ $wpdb->posts ][ $post_id ][ $options['format'] ] ) ) {
        return $this->cache[ $wpdb->posts ][ $post_id ][ $options['format'] ];
    }

    ...中略...

    //$this->cache[ $post_id ][ $options['format'] ] = $field_data;
    $this->cache[ $wpdb->posts ][ $post_id ][ $options['format'] ] = $field_data;
    return $field_data;
}

これで無駄なクエリ数も抑えられた…と思う。
直接ソースを弄っているので、当然アップデートすると元に戻ってしまうので注意。

カテゴリー: 日々のこと | コメントする

iPadでCSS opacity animationが動作しない

特定のiPad(iPadOS12.4.1(16G102))のSafariとChromeで、opacityを使ったフェードインCSS animationが動作してくれなかった。なんでかなと調べたら、初期化用opacityは0/1、keyframes側では0%,100%を使用、と単位が違っていたからのようだ。

@keyframes fadeIn{
    0%  {opacity: 0%;}
    100%{opacity: 100%;}
}
.fade-in-element {
    opacity: 0; /* 単位が%でない! */
    animation: fadeIn 1s;
}

単位を%で統一するか、逆に0/1で統一するとちゃんと動作した。
より新しいバージョンのiPhoneやWindowsでは単位が違っていても解釈してくれていたようだ。
念の為メモ。

opacity - CSS: カスケーディングスタイルシート | MDN

によれば、opacityプロパティの取りうる値は<alpha-value>、
0.0以上1.0以下の<number>か、0%~100%の<percentage>となっている。
古いバージョンではこれが混在すると別プロパティとして取り扱われてしまっていたのかもしれない。

カテゴリー: 日々のこと | コメントする

iOSでsvgストロークアニメーションが動かない

PC, Androidでは動くのに、iOS(iPhoneのSafari, Chromeなど)でsvgのストロークアニメーションが動かないケースに出くわした。

.path-stroke {
	stroke: #FFF000;
	stroke-width: 2px;
	animation: svg-stroke 5s ease-in;
}
@keyframes svg-stroke {
	0% {
		stroke-dasharray: 2000;
		stroke-dashoffset: 2000;
	}
	100%{
		stroke-dashoffset: 0;
	}
}

原因としては、keyframes内のstroke-dasharrayプロパティが開始位置にしかいないことだった。どうやら変化しないプロパティがkeyframes内にあると不具合を起こすっぽい。
以下のように変更したら動作した

.path-stroke {
	stroke: #FFF000;
	stroke-width: 2px;
	stroke-dasharray: 2000; /* 変化しないプロパティはこちらに移動 */
	animation: svg-stroke 5s ease-in;
}
@keyframes svg-stroke {
	0% {
		/*stroke-dasharray: 2000;*/
		stroke-dashoffset: 2000;
	}
	100%{
		stroke-dashoffset: 0;
	}
}

よ!

カテゴリー: 日々のこと | コメントする

Myst Online フォーラム(Again)

https://www.greenyouth.cc/myst/forum/

気づいたらMyst Online Forumが閉鎖していたので、避難所としてのフォーラムを作ってみました。よかったら使ってみてください…といっても本家でアナウンスできないからあちらの常連さんに伝える方法がない…まあ気長に待ってみますか。

カテゴリー: 日々のこと, URU Live | タグ: , | コメントする

WordPress 管理画面ログインでCSS崩れ

サーバー引っ越しをした際に load-styles.php の読み込みでエラーになったわけである。
WPバージョンは4.8.2
PHPはいずれも5.6.30

色々追っかけてみるとphp.ini で2つの値の違いが見つかった。
output_handler
mbstring.encoding_translation

正常動作する方は
output_handler は設定されておらず
mbstring.encoding_translation = Off

エラーを出す方は
output_handler = mb_output_handler
mbstring.encoding_translation = On

だった。

カテゴリー: 日々のこと | コメントする

Chromeで「PDFドキュメントを読み込むことができませんでした」と出た

Chromeで上記メッセージとともにPDFが表示されない現象が発生。
ファイルサイズが1MB以下程度であれば発生しない。
Microsoft Edge, IE11でもダウンロードが途中で止まっているような気配。
Firefox,Safariでは問題なし。

僕のケースの場合、原因は.htaccessにおけるmod_deflate使用の記述でした。

<IfModule mod_deflate.c>
   SetOutputFilter DEFLATE
</Ifmodule>

としていたことが原因。SetOutputFilter行をコメントアウトしたら解決。
コンテンツを圧縮して転送量を減らしてくれるモジュールなんですが、それがPDFになにかしら悪影響を与えていた様子。

カテゴリー: 日々のこと | コメントする

Obduction ─ さわり部分の翻訳

Obductionはじめました。さわりの部分の雑訳。
一部自分でも意味不明なところがあるので鵜呑みにすると実際アブナイ。いいね?

Introduction / Unknown

私たちはみな、全てを失った──
残ったのは、それぞれの物語だけ…
この物語は、忘れられてはならない

私は3歳だった…
1983年4月
セシル、あなたにとっては1870年だったわね

サムとベラ──
あなた達は昨日のことのように話すけど、
あれから62年も経っているの…
あの閃光を見てから

あの光…
あれがすべての物語の始まりだったわ
それは…空を駆け…
美しく…でも怖さも感じた

真昼に見ても
ヨーゼフ、あなたはすばらしく明るいと言っていたけど──
夕暮れ時、それは魅惑的だったわ…

セシルのように森の奥深くで
またはジェーンとジェニーのように、町のすぐ外で
いずれにせよ、私たちは…
もっとよく見ようと引き寄せられた
ベラ、あなたは笑顔だったのを思い出すと言っていたわね

あなた達の何人かは一人だったけど、私は違ったわ

私の愛する祖母は、それを幸運を知らせる祖霊かなにかだと思って喜んだ
彼女に神の加護を
祖母はポーチにいる私を乳母車に乗せて庭へ歩き出し
そして私たちはそれを目の当たりにしたの…

まったく理由はわからないけれど…
でも、そうね…
私たちはそれについて行った

私たちはなんだか
不安を感じたわ…それでもまだ
惹きつけられていたの

私たちが近づくと…
それも近づいてきたわ

みな覚えているでしょう…
だれも引き返す人はいなかった

それは高度な…
まるで…
意思を持つように…
回転して…
ゆっくりと…そう…

それは私たちを見つけた──それぞれの私たちを
私たちはそれらの物語を伝えていかなければならないわ
なぜならあれが私たちを救ったのだし…そして…そう…
きっとそれ以上の意味があるはずだから…

Hunrath Image Viewer - Welcome / Josef

[ファンファーレ]
ハロー!
ボンジュール!
チャオ!
オラ!
ハロー!
ショーラー!
ニーハオ!
フンラスへようこそ。
私はヨーゼフ、
ここの町長だ。
おそらく君は混乱して途方に暮れていることだろう。
だが安心して欲しい、大丈夫だ。
この体験をしたのは君が初めてではない。
君の前にここへやって来た人々が、
君の順応を助けてくれるだろう。
この道をまっすぐ進むと、
白い垣根のある家がある。
そこでファーリーと会えるだろう。
そしてここでの新しい生活について教えてくれるはずだ。
[停止]

Hunrath Image Viewer - Farley's Community Center / Farley

[ファンファーレ]
ハイ、ええと…ファーリーよ。
きっとこれを見ていると思うけど、
私は今ちょっと─[停止、上書きされた映像が始まる]
…念のため…
ようこそ、ここは…安全じゃないわ。
とにかく、私たちは戦いを始めようとしてる。
あなたが何を見つけるか知らないけど、
ただ言えることは…
あなたが信じる人に気を付けて。
ここにはC.W.がいるかもしれない。
知らないけど。
ただ、気を付けて。
行かなくちゃ。
[停止、元の映像に戻る]
…すぐ会えるわ。
そして…パニックにならないで。
この状況は落ち着かないと思うけど、
フンラスはまともな場所だってことがわかってもらえると思うわ。
[停止]

Hunrath / C.W.(A)

[物音]

どうしてこんなにクソ長い間帰ってこなかった!?
お前の仕事…

俺はてっきり…

一体全体君は誰だ?
[ため息]
やれやれ、新入りか?
今?

まずい時にやってきたな。

あいつら、だから話を聞けといったんだ…
[ため息]

あー…俺は家へ帰る。

もしかしたら君にとっていいタイミングだったかもな。
他の奴らより随分早く、
この牢獄から出られるかもしれん。

よーし、いいだろう。
俺にとってもいいタイミングかもしれん。
これ以上待ってられん。

一人でも全部できるとは思うが、
うむ…君の助けを借りれば、多少スピードアップになる。

まずは…
君はこの場所全体を知っておくべきだ。
クソッたれモーファンとの戦いに…
備えるために。
穴を全て塞がなきゃならん。
ここには若干の電力が来ているが、
全て必要だ。
もし君が手伝ってくれるなら…
…全ての電線をつなげ…
私の装置を動かすことができる。

今こそ…
この場所から脱出してやろう。

カテゴリー: Obduction | コメントする

Obduction ─ Screenshot Update

Backers向けにスクリーンショットが公開されていた。
画像はCyan,Incからの転載

Revelationのスパイアを彷彿とさせますな。

公開は今年半ばから後半とのことだったので、予定どおり進んでいるならもうじき歩き回れますね。
楽しみです。

カテゴリー: Obduction, 日々のこと | タグ: | コメントする

2012.11.12 Thulhagiri Island, Maldives #3

019e5b801f28f392340ef20c4fbf550346c7da8035

トラギリ島のマップはこのようになっている。右が北、左が南となる。
内側の白い楕円が陸地であり、一周しても大体10分くらいだろうか。外周に沿って歩くとあっという間に一周してしまうので、方向感覚が狂う。
外側の楕円は環礁を示している。この内側は最大でも水深5mくらいのものだと思うが、ここから外は一気にズドンと深くなる。水面の色も明らかに濃い青になるのに加え、波や海流、海水温などの影響がとたんに大きくなる。珊瑚や魚などもこの辺りに集まっているが、海流や船の航行もあるため、シュノーケリングで行く場合は気をつけるよう注意書きがある。
この環礁のおかげで、内側はいつも殆ど波はなくおだやかな環境となっている。

01ca553afd23925f4fa49efc7d707126bff66bdfb9

島の西側ビーチ。サンセット時には人が集まってくる。
環礁の内側はこのようにターコイズ・ブルー。ビーチから50m先くらいまでは足がつく。

01745cb38efb203414bb351890da351ceba2c179a9

島の北側。海水面の色が濃くなっている辺りが、環礁の境界になっている。
近隣の島がうっすらと見える。べつなリゾートだったり、現地民のみの島だったりするようだ。
島として見えるよりも数多くの環礁が海面下に存在していることが、Google Mapで見るとよくわかる

014d1674425ad822bbc266f02d4ae37f63ff01e49c

島の中央はジャングルというほどではないが、植物が生い茂っていてビーチとはまた違った風情がある。大量に飼われているインコ以外にも、多少の鳥類やカメレオンに似た爬虫類などを目にすることができる。

0145db1c0c6fdd0102aa800ba2b74b617c990f399b

島側より、宿泊している水上コテージ群を望む。島との連絡橋の中間地点にある東屋のようなものは宿泊客用の船着場。この島の玄関口にあたる。

カテゴリー: モルディブ(2012), 旅のこと | コメントする