Page Top

一筋縄ではいかない~Movable Type(MT)のスタティックパブリッシングとダイナミックパブリッシングにおけるコードの読み込まれ方の違い~その4ー自分用覚書

August 31, 2012

表題とは直接関係ありませんが、昨日Movable Type(MT)5.2のベータ5が出たので、早速アップデートしました。

昨今、これまでスタティックパブリッシングのみでテーマの開発を進めていたものをダイナミックパブリッシングにも対応するようにしていますが、やはりダイナミックパブリッシングでだとコードの読み込まれ方がスタティックパブリッシングの時と少し異なるようで(そのパブリッシュのされ方で利用されるエンジンがPHPとPerlという違いがあるからなのかというのもあると思うのですが)、昨日つくづく、一筋縄ではいかないのぅ~、と思った次第でした。疲れて、夫に「ひとすじなわではいかないのぅ」としみじみ言ったところ、「ナワデワイカナイノゥ~」と、のほほん顔でリピートしていました。。私にとって夫は癒しの存在で、疲れたらハグーすると疲れが飛んでいきます。妊婦さんですか?と言わんばかりのあの大きなお腹を見ると、コロコロしていてとても幸せそうに見えるのですよねぇ。遠い目・・。

っと、スタティックではうまく行くので、微妙な違いというか、そういう部分なのですが、その「ズバリ!」な箇所を見つけるまでがとても時間がかかるのです。これが体力を消耗するというか。最近は、疲れたらiPadでハイウェイライダーなどと言うプラグインをダウンロードしたゲームで遊んでいるのですが、結構スリリングで、こちらの方がストレスになるというか、知らず知らずのうちに冷や汗をかきながら「This highway is my home ♪」とか(キャラクターが)言いながら、バイクでハイウェイを走りまくっています。ゲームとか、これまであまりした事ありませんでしたが、結構面白いですね。でも、時間の無駄だとも思ったり・・。

と、また脱線しましたが、少し前に同じコードは出来るだけ使いまわすようにしようと、テンプレート全体を大幅にいじったのですが、これがダイナミックパブリッシングにはあまり良くなかったようで・・(「くぅ~~~」という気分です)、と言うのが、静的パブリッシングの時でも、システムの箇所だけはダイナミックに動いていると思いますが、あれと同じような現象が発生している感じです。【後記】・・・と思ったのですが、症状としては確かに似ているのですが、少~しだけ違いました。どうもタグがおかしいような??

例えば、1つのサイトをウェブサイトとブログで構成しているとして、双方のシステムテンプレート配下に検索結果用のテンプレートがあり、ウェブサイトの方の検索結果用テンプレート1つでコードの一元化を図りましょう~としても駄目なのですよね。ウェブサイトから出力されているページ上から検索する場合と、ブログから出力されるページ上から検索する時とでは、それぞれ別のシステムの検索結果テンプレートが使われるので、たとえ同じコード内容で見栄えが同じであっても、コードの一元化はできず、ウェブサイトとブログの両方に、検索結果用のテンプレートが存在しないと、エラーになってしまいます。

また、検索結果ページのコンテンツの部分だけのコードをウェブサイトの方で一元化しようとする場合でも、ウェブサイトとブログの両方に、同じ内容の検索結果テンプレートがなければ駄目なので、例えば、とあるモジュールがウェブサイトの方にあるとします。これをウェブサイトの検索結果テンプレートでもブログの検索結果テンプレートでも使いたいとします。普通のスタティックパブリッシングで動く部分であれば、ウェブサイトの方で、そのモジュールをInclude、ブログの方では、ウェブサイトのそのモジュールをマルチブログでInclude、ですが、いくらスタティックパブリッシング環境のシステムテンプレートでも、システムだけはダイナミック(?)に扱われるようで、テンプレートの内容を同じものにしないとエラーが発生します。ですので、マルチブログを使う必要の無いウェブサイトの方でも、マルチブログを使ってウェブサイトのそのモジュールをIncludeするようにし、ブログと同じ書き方にします。

で、ここで、また出てくる問題があります。ウェブサイト側にあるモジュール。ウェブサイトからもブログからもマルチブログでIncludeされています。なので、このウェブサイト側に存在するモジュールは、ウェブサイト側で一元管理が出来ると思いきや、そうは簡単に問屋は卸してくれません!ブログ側にそのモジュールと同じ名前のモジュールがないと、エラーが発生するのです。上でも書きましたように、ブログ側の検索結果テンプレートには、マルチブログを使って、ウェブサイトのモジュールがIncludeされています。なのに、同じ名前のモジュールがブログの方にもないと、ダダをこねてエラー発生しちゃうぞ、なのです。ですので、ただこれだけの為にですが、ブログの方にも同じモジュール名のモジュールを作成し、そのモジュールの中身は、ウェブサイトのモジュールの内容をマルチブログでIncludeするという、入り組んだ構造になります。でも、これでエラーは発生しませんし、上記ではモジュールとしていますが、私の場合はウィジェットセットでウィジェットを使っており、これでだと、スタイルをいくつか作りたい場合、便利が良いです。

と、長くなりましたが、上記の例と似たようなことが、ダイナミックパブリッシング下でも起きているっぽいというのを昨日発見し、これからそれを検証していかなければ~なのでした。チャレンジは続く。。

【後記その1】検証しましたところ、システムのテンプレートの時に出会ったような症状でしたが、似て非なるもの(?)でした。たぶん、タグの不具合なのかな~?という感じがするのですが、よくわかりません。症状としては、ブログサイドで、マルチブログとしてIncludeされているウェブサイトのウィジェットセットですが、そのウィジェットセットとその配下のウィジェットの名前だけは読み込んでいるのですが、何故か、そのウィジェットの中身は、ブログサイドにある同名のウィジェットの中身を読み込んでいるのでした。なので、もしもブログサイドに、ウェブサイトサイドにあるウィジェットと同名のウィジェットがなければ何も表示されませんし、本来であれば表示されるべきウェブサイトの方のウィジェットの中身は全く表示されません。しかし、その中身が読み込まれているブログサイドにあるウィジェットをサイト上に表示するかしないかは、ウェブサイト側にあるウィジェットセットのウィジェットを利用可能にするかインストール済みにするかという具合になります。本来であれば、ブログサイドで、マルチブログとしてIncludeされているウェブサイトのウィジェットセットとウィジェットだけで全てが完結するはず・・スタティックパブリッシングの方では完結するので、この件をダイナミックパブリッシング下での不具合としてMTさんに報告してみたいと思います。

【後記その2】その後、MTWebsitesなどで囲んでいた箇所をMTMultiBlogに変更したらうまく行きました。この2つのタグの動作はマルチブログタグで似ているのですが、強さが少し違うのかもしれません?MTMultiBlogの方が強いのか??

【後記その3】MTさんへリポートした結果、タグの不具合だということがわかりました。なので、今後の新しいベータバージョンで良くなっていると思います。

蚊に刺されたら絆創膏

August 31, 2012

今はもうすっかり涼しくなったバンクーバーエリアですが、つい数週間前までは暑い日々が1ヶ月ほど続いていました。部屋の中の温度は30度近くなるのですが、クーラーはありません。でも、日本の夏に比べたら湿気がないだけ過ごしやすいのでありがたいです。

そして、夏の風物詩の蚊ですが、今年もよく刺されました。窓に網戸がついてないのが問題なのですが、つけるなら自腹で作成しなければならず、今年こそは!と、毎年意気込むのですが、面倒でまだ作っていません・・。どうせ1ヶ月ほどの辛抱、というのも手伝っています。でも、西ナイルウィルスを持った蚊が東から、南からとやってくるので、注意しないといけません。今年もアメリカなどでこのウィルスを持った蚊に刺されて亡くなった方が結構居たようです。免疫力が弱いと負けてしまうのでしょうね。。

一応蚊が部屋に入ってこないようにバルコニーで線香を焚いたりしているのですが、本数が足りないせいか、あまり効き目はありません。もっと大量に焚けば蚊も近寄ってこないかもしれませんが、煙でこちらがやられてしまうので、そうもできません。カナダには日本の蚊取り線香のようなコイルがあるので、それをバルコニーで焚いていた時期もあったのですが、これはキャンプ用の野外で使う為のものなので、ちょっと成分が強く、バルコニーで焚くとこちらが咳が出てきてしまうので、使えません。精油成分のシラントロキャンドルも試してみましたが、炎の出が強く、これは火災の原因になるかもしれないと思い、使っていません。シラントロの精油成分を買ってきて、自分の腕などに塗ってはみたものの、結構香りが強く、ちょっと継続しては使えないけど、扇風機にオイルを付けた紙を付けてまわすと、すがすがしい香りが部屋に来るのでこれは良いと思い、蚊対策ではないですが、使っています。

で、ダラダラと長くなりましたが、蚊に刺されたら、絆創膏をすぐに貼ると痒みが早く治まり、刺された箇所が直ぐに小さくなります。これはとってもお勧めです!なぜこの方法がわかったかと言うと、こちらのスーパーに行っていた時、キャッシャーのお姉さんが腕にペタペタと沢山絆創膏を貼っていたのを見たからでした。何でそんなに絆創膏を・・?などと聞けませんので、勝手に想像して、たぶん時期的に蚊にでも刺されたのかな、と思いました。そして、自分もそれをやってみたところ、もの凄く効いて、なんでこんなに効くのか不思議に思いネットで調べてみたところ、どうやら蚊に刺された箇所が痒くなるのは空気に触れることで痒くなる - by OKGuideとのことでした。だから、絆創膏を貼る事で、痒くなくなるのですね。狐につままれたように痒みが引いたので、とっても不思議でした。でも、これ、かなり効きます!市販の痒み止めを塗るよりもずっと効くのでは?と思いました。

南海トラフ地震の想定

August 29, 2012

以下引用:OBSニュース
http://www.e-obs.com/obs-news/genko/DD08290020894.html

「2012年 8月29日

南海トラフ巨大地震の新たな被害想定を公表 [19:12]
国は南海トラフの巨大地震による新たな被害想定を公表しました。新たな想定では県内の死者数は最大で1万7000人に上ります。南海トラフで巨大地震が発生した場合、県内では最短18分で1メートルの津波が押し寄せることが想定されています。県内の死者数は最大で1万7000人、3万1000棟が被災します。一方で多くの人が地震発生後すぐに避難した場合、死者数は300人に減少する見通しも示しています。津波の最大の高さは佐伯市で15メートル、津久見市と大分市で9メートル、臼杵市で7メートルなどとなっています。県内各地で最大4メートル以上の津波が押し寄せることが想定されています。また、佐伯市や大分市の市街地は広範囲に渡って津波の浸水被害を受ける恐れがあります。国のデータを踏まえて県は今後、各市町村ごとの浸水域などを今年秋をめどにまとめる方針です。 」

うーん、やばいです。と、考えた所でどうにもならないので、しょうがないですが、唸ってしまいますねぇ。親は私が色々言ってもその時はその時、みんな一緒、という考えのようで、一応唸りはしますが、私のようにこうすればとか、ああすれば、などと考えたりしないようです。なので、最近はあまり地震や津波の話はしなくなっていましたが。

実家がある市は大分県南にあり、しかも、実家が位置する場所は昔海だったところを埋立地にしたところで海岸から数分のところにあるので、南海トラフ地震が起きたら、まぁ、その起こる位置と大きさにもよるとは思いますが、確実に津波の被害にあってしまうと思います。と言うか、地震自体にも耐えうるのか?と言う疑問もありますが。。

上記の大分のローカルニュースOBSによると、津波の最大の高さは、津久見市と大分市で9メートルだそうです。実家があるのは標高4メートル、しかも海から歩いて数分です・・。うーん、ちょっとびびりな私は怖くて日本に帰れない~のですが(??)。でも、「最短18分で1メートルの津波が押し寄せる」とあるので、他の地域、例えば高知県や静岡県などに比べればまだ時間はある方で、その18分のうちに近くの高台に行けば良いのですが。高台・・東に行って踏み切りを渡りすぐ海に直結している川を越えれば山があり(歩いて10分~15分くらい)、駅の裏の市役所を抜けて行けば標高100メートルほどある宮山(歩いて15分~20分くらい)に行けます。どちらかと言えば東の方角の方が近いですが、海に直結する川があるのでどうなのか?それに18分って結構短いです。普段からイザ!という時の為に、持っていくものを予めリュックサックに詰めておいて、身近な所に置いておくようにしておかないと、地震が起きてからこれが必要あれが必要などしていたらあっという間に10分くらい簡単に経ってしまいます。水と簡単な食べ物とタオルと簡単な着替えと懐中電灯とトイレットペーパーと通帳関係と日本だったらハンコ?と紙と鉛筆とー、あとはしばらく使えなくてもパソコンは絶対持っていかないと行けません!!リュックサックよりもトランクの方が良いかも・・??

しかも、南海トラフの地震が起こった場合、被害が東日本大震災のそれ以上になるらしいので、まず、国が助けに来てくれるとは思わない方が良さそうです。なので、もしも助かった場合でも、その後の食料や水やトイレの件をどうするのか?祖母の家は山の方にあり、標高50メートル以上なのでそこに行けば少しは凌げるのか?

もしも自分が帰っているときによもやそんな事が起こらないとも限らない訳で、なかなか帰れない~のですが、そんなことをずいぶん前にこちらの銀行の人と話をしているときに話したら、彼はイランから来ている人で、「そんなの気にしてちゃ駄目駄目!帰りたいときに帰らなきゃ。自分なんて、アメリカ軍の弾がビュンビュン飛んでても帰ってるよー。」と言っていました・・。うーん、それも怖いけど、ちょっと違うような気がするのですが・・。

でも、そこまで大きな力が地球さんから出てくるのであれば、やっぱりそこから地球のエネルギーを無制限に取り込む事が出来るような技術が出てきてくれたら良いなと思います。良い方に考えれば、ある意味日本は、こういう無制限に取り出せるエネルギーに溢れた国、ということなのですよね。日本には温泉が沢山あるから地熱発電も活用できるし、海岸が沢山あって海風が沢山吹くから風力発電もできるし、波の動きで発電したりとか、色々できそうですよね。

そう言えば、以前、「がれきで森を再生 84歳学者の闘い」という動画を見ました。

東日本大震災で被災した地域で大量にできたがれきを森にして再生し、その森が津波から街や人を守るというものでした。これはとても良いアイデアだと思いました。更に、森が広がることで、その地域のバクテリアカルチャーが放射性物質をも取り入れて、やがて森が地域を再生してくれるように感じました。この素晴らしいアイデア、是非実現してほしいです。

Movable Type(MT)のスタティックパブリッシングとダイナミックパブリッシングにおけるコードの読み込まれ方の違い~その3ー自分用覚書

August 24, 2012

例えば、インデックスページのテンプレートに、とある文字列の後に連番の数字を連ねたシークレットタグを付与したウェブページのみを自動で表示したい場合で、そのシークレットタグが付与されたウェブページが1つも無い時は何も表示せず、シークレットタグが付与されたウェブページが1つでもある時だけ内容を表示するようにしたい場合、以下のようなコードを書いて判別の材料としていたのですが、これが(今のMT5.2Beta4での環境)スタティックパブリッシングの時はうまくいくのですが、ダイナミックパブリッシングの時は、変数に加えられる数値が「空」の時の扱い方が違うようで(?)「Fatal error: 0 + は不正です。」というエラーが出てうまくいかなかったので、一応昨日MTさんに不具合のリポートを出したのですが、今日1日熟考して解決策が見つけられたので、自分用覚書です。

<>は全角にしています。また、$quicklinks_num_valueは別のウィジェットテンプレートでセットしている値が来るようにしているものなので、下記コードをチェックしたい場合は、$quicklinks_num_valueに、適当に「5」とか「6」などの数字を入力してチェックしてみてください。

■当初、「Fatal error: 0 + は不正です。」というエラーが発生していたコード。(スタティックパブではOKです。)

<MTSetVar name="quicklinksnumcount" value="0">
<mt:for var="x" from="1" to="$quicklinks_num_value">
<MTSetVarBlock name="quicklinksnum">@quicklinks<MTGetVar name="x"></MTSetVarBlock>
<MTSetVarBlock name="quicklinkscount"><MTPages tag="$quicklinksnum" lastn="1"><MTEntriesHeader><$mt:EntriesCount$></MTEntriesHeader></MTPages></MTSetVarBlock>
<MTSetVar name="quicklinksnumcount" value="$quicklinkscount" op="+">
</mt:for>

上記のコードの時は、変数「quicklinkscount」の値が空の場合でも、「quicklinksnumcount」に「$quicklinkscount」の値をop="+"で全て集めるようにしていましたが、どうやら、その空の値というのは本当に「空」で、「0」という数値として認識されない(?)為か、なので、「Fatal error: 0 + は不正です。」というエラーが起こっていたようで、例えば、「$quicklinkscount」の所に直接「0」と入れてみると、理論的には「Fatal error: 0 + は不正です。」というエラーが起こるはずであるのに、何もエラーが起こりませんでした。なので、「quicklinkscount」で得ている値というのは、該当のウェブページが何も無い場合は、ただの「空」として理解される(?)ように思いました。なので、以下のようにして、「quicklinkscount」に何か数値がある時のみ、<MTSetVar name="quicklinksnumcount" value="$quicklinkscount" op="+">で、数値を加算していくようにしました。これで、スタティックもダイナミックもどちらでも大丈夫になりました。

■以下、解決したコード。

<MTSetVar name="quicklinksnumcount" value="0">
<mt:for var="x" from="1" to="$quicklinks_num_value">
<MTSetVarBlock name="quicklinksnum">@quicklinks<MTGetVar name="x"></MTSetVarBlock>
<MTSetVarBlock name="quicklinkscount"><MTPages tag="$quicklinksnum" lastn="1"><MTEntriesHeader><$mt:EntriesCount$></MTEntriesHeader></MTPages></MTSetVarBlock>
<MTIf name="quicklinkscount">
<MTSetVar name="quicklinksnumcount" value="$quicklinkscount" op="+">
</MTIf>

</mt:for>

ちなみに、上記の解決したコードで、<MTIf name="quicklinkscount">の時だけ「quicklinksnumcount」に値が集められるようになっていますが、該当のウェブページが何も無い場合、<MTFor>~</MTFor>の外側で「quicklinksnumcount」の値は「0」となり、ちゃんと判別に利用できるようになります。

また、上記解決に至る前に、<$mt:EntriesCount$>に「none="0"」を加えて、<$mt:EntriesCount none="0"$>という風にしてみましたが、「quicklinkscount」のvalueとして「0」と認識してくれなかったようで、うまく行きませんでした。

2013年はアメリカ・カナダで小麦・コーン関係食料品価格平均4%上昇の見込みーアメリカ中西部大旱魃の影響で

August 14, 2012

大旱魃が始まっていますね。アメリカの中西部を中心に大旱魃が起こっており、とうもろこし畑や大豆畑などの穀物が影響を大に受けているようです。来年2013年のこれら穀物が関係する食品などは、アメリカ・カナダにおいて平均して4%の価格上昇が見込まれるだろうとニュースで言われていました。

アメリカの中西部から少し上に上ったカナダのサスカチュワン州などはこの旱魃の影響を受けそうでしたが、幸いにも雨が降ってくれたお陰で、今のところ穀物には影響していないようです。穀物不足+価格上昇なので、これはある意味カナダの農家さんにとってはプラスということになるようです。

しかし、今年の春あたりはカナダの東部やBC州ではFloodが起こったり、ランドスライドが起こったりしていましたので、天候を軽んじることはできません。グレーターバンクーバーを通るフレイザーリバーも今年はかなりやばい水位を記録していました。サウスバーナビーに行くとフレイザーリバー沿いのパークに行けるのですが、水位がもうすぐそこな感じでした。あの辺りは家族経営のファーミングランド、もしくはビジネスパークになっていて色々な企業のオフィスや倉庫が立ち並んでいますので、もしも水位が上がったら結構大変な事になるのだろうなと感じました。

今はまだ目に見えた影響は出てきていませんが、これから少しずつ私達の実生活にジリジリと影響を及ぼしてくるのでしょうね。日本は今円高なのでまだ良い状況なのかなと思います。それにしても、今年も日本人のお米離れが進んだらしいです。パン食が増えたのでしょうか?私はパンよりもご飯が好きなので今でも毎日ご飯は食べています。ストックとして買っていたお米があるので、消費しないといけないのですが。。新しいストックのお米も購入しておきたいですし。。玄米も沢山買っておいたのがあるので、あれも発芽玄米にして食べなきゃなのですが~。まぁ、耳を傾け、想像し、それに対して行動していれば、少なくともキリギリスにならずとも済むのかな?あまり自然を怒らせないようにしないと大変ですね。くわばらくわばら。

下のビデオは、先月発生したBC州Johnsons Landingでのランドスライド発生模様を撮ったビデオ。危機一髪です。でもこのランドスライド結構大きなスライドで何名かの方々が家を潰され亡くなられました。ご冥福をお祈りしたいです。