カテゴリー別アーカイブ: 近況報告

近況&進捗の報告。その他雑感なども。

WebKitブラウザをXMLビューワとして使う際の落とし穴

Safari、ChromeなどのWebKitブラウザは、標準のデバッギングツールも含めほぼオールマイティな機能を備えています。その機能の一つにXMLのネスト表示というものがあり、ブラウザでXMLにアクセスした際にデバッギングツール内で折りたたみ表示してくれるという、ごく一部の人間にだけうれしい機能をもっています。

これはたとえばXMLを返却するURLを指定し、帰ってくる値を確認しつつ作業をすすめるという場面で重宝する機能です。WEBサービスの中には、XMLで値を取得できるというものがかなりありますので、値だけ取得してローカルで表示するクライアントを作成する際に便利です。

先日まさにそういった使い方をしていたのですが、ブラウザで確認したノード名をクライアント側で取得する際に、どうやっても取得できないという現象に見舞われました。ブラウザ上ではそのノード名で値が取れています。でもローカルではその値を指定しても取れない。この現象に何度も頭をひねりました。

そうして発見したのは、WebKit系のブラウザがノード名を勝手に小文字に変換して表示しているということです。

XMLでは、大文字小文字は勿論区別します。たとえば<node>という値と<Node>という値は異なりますので、<Node>という名前でセットされた値に、<node>でアクセスしようとしても、そんな名前は知らないと言われます。

ひたすら<node>でのアクセスを試みて失敗したあげく、WEBサービスの管理者に問い合わせるところでした。

ゆるいHTML(<BR>とかですね)を処理・表示できるように小文字に統一しているのかもしれませんが、ひどい落とし穴もあったものです。


サイトC:WordPress3.5&Twenty Twelveに変更

去る2012年の12月、WordPressのヴァージョン3.5が正式リリースになりました。

このブログでは、WordPressをヴァージョン2.9から使用しており、大きなアップデートとしては3.0へのアップデートを一回経験しています。以降は小数点以下のアップデート経験しか無いのですが、ヴァージョン3.4へのアップデートあたりから、3.0リリースの補完的アップデートとは異なった新たなWordPressへの脱却を感じさせるアップデートになってきたという印象があります。今まではWordPress以外のWEBアプリケーションの機能をなぞるような意気だったのが、最近ではWEBアプリケーションのトップをひた走るという自負すら見えてくるといいますか。たとえば、3.4でMovableTypeやBlogger由来のAPIを使わなくても、自前のAPIだけでxml-rpc投稿ができるようになったことなどが例として挙げられましょう。

とは言え、あまりWordPressの機能を使い込んでいない人間からすれば、そうした目に見えないアップデートはさして重要ではありません。
今回のアップデートの目玉の一つは、デフォルトテーマのTwenty Elevenのグレードが一つあがり、Twenty Twelveに生まれ変わったことです。このブログでも早速(いや、単体では8月あたりにリリースになっていたことは知ってますよ)導入してみました。

Twentyシリーズはヴァージョンアップのたびに目玉仕様を乗っけてくるのですが、Twenty ElevenがHTML5への対応だったのに対し、今回のTwenty TwelveはRetina対応とレスポンシブデザインとなっています。確かにTwenty ElevenをiphoneやiPadで見たときの間延び感は気になっていたので、アップデート後真っ先にその点をチェックしてみましたが、そつのないスッキリとしたデザインに統一されています。

iPadでのTwenty Twelveテーマ

iPadでのTwenty Twelveテーマ

ちなみに、余談ではありますがこのスクリーンショットを撮影するのに使ったchrome機能拡張は、Rippple Emulatorといい、各種スマートフォン、タブレットの縦横表示チェックの他、本体の振動やGPSもテストできる便利ツールです。

メニューがデフォルトで展開されず、ユーザアクションで開く形になったのがスマートフォンサイトっぽいですね。サイドバーは投稿下部に付き、Twenty Elevenのような面倒くさい設定も要りません。
今後はこれをたたき台にしたデザインのページが増えそうですね。


Twenty Elevenテーマで、個別記事にサイドバーを表示したときのレイアウト崩れ対策

以前このブログでは、digitalnatureのMystiqueというWordPressテーマを導入し、デザイン部分についてはほぼデフォルトのまま使用していました。何しろ優秀なテーマで、機能も多く、特に他のテーマに乗り換える動機も無かったのですが、000webhostのテロルによってブログを強制削除された事件の後は、これを機に自作テーマ開発でも行おうかという目論見もありWordPress標準テーマであるTwenty Elevenを暫定的に使い続けていました。

このTwenty Elevenテーマですが、デフォルトの設定だと各記事ページ、固定ページにサイドバーが表示されないため、不便です。自作テーマ移行まで過渡期的な利用だと割り切っていたため対策も行わなかったのですが、容易に設定ができるようなので実験がてら設定してみました。

固定ページへのサイドバー追加

固定ページへのサイドバー追加は非常に簡単です。

固定ページへのサイドバー追加

固定ページへのサイドバー追加

投稿画面のページ属性で、Sidebar Templateを選択するだけです。

各記事ページへのへのサイドバー追加

各記事ページへサイドバーを追加するには、実際にTwenty Elevenのソースに手を加えなければなりません。とは言え、失敗するリスクやヴァージョンアップ時に変更がリセットされてしまう危険性を避ける為に、以前紹介記事を書いた子テーマを利用しましょう。

記事の中での説明にあるように、カスタムスタイルシートについては、子テーマの中で親テーマのstyle.cssを呼び出す処理が書けました。追加の部分についてはCSSの後着優先という性質を利用して上書きをしましたね。一方、××.phpのような処理を書くファイルについては、処理の順序の問題もあり、子テーマのファイル中で親テーマのファイルを呼び出すというのは難儀です。そのため、カスタム処理を書きたいファイルを子テーマのフォルダ内にコピーし、そのファイルに処理を追加するという形になります。子テーマに同名のファイルが見つかると、親テーマのファイルは参照されません。

さて子テーマの作成、有効化までは完了したものとして、サイドバーを呼び出す処理を書きます。各記事ページにアクセスする時に呼び出されるのは、Twenty Elevenのテーマフォルダの中にある、single.phpです。WordPressではテンプレートエンジンのごとく、HTMLを断片的に吐き出してページを完成させています。つまりサイドバー部分の断片を吐き出す命令を、しかるべき位置で呼び出してやれば良いわけです。

//子テーマにコピーしたsingle.php
<?php
/**
 * The Template for displaying all single posts.
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 * @since Twenty Eleven 1.0
 */
 
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php while ( have_posts() ) : the_post(); ?>
 
/* 中略 ちなみにこの部分で記事を取得、表示しています */
 
<?php endwhile; // end of the loop. ?>
</div><!-- #content -->
</div><!-- #primary -->

//ここにこの一文を追加します。
 
<?php get_sidebar(); ?>
 
//追加部分終わり
 
<?php get_footer(); ?>

get_sidebarという命令がそのまま、サイドバーを取ってくる処理です。フッターを呼び出す、get_footerの前で呼びましょう。これをsingle.phpという名前で子テーマフォルダに保存すると、個別ページの表示がこのようになります。

サイド?バー

サイド?バー

ご覧のように、コメント投稿欄の下にサイドバー部分がはみ出てしまいます。新しくサイドバーを表示するようにしたため、個別記事ページで呼び出されるCSSも調整する必要があります。子テーマのstyle.cssに、以下の内容を追加して下さい。

.singular #primary{
float: left;
	margin: 0 -26.4% 0 0;
	width: 100%;
}
 
.singular #content,
.left-sidebar.singular #content {
	position: relative;
margin: 0 34% 0 7.6%;
	width: 58.4%;
}
 
.singular .entry-header,
.singular .entry-content,
.singular footer.entry-meta,
.singular #comments-title {
	margin: 0 auto;
	width: auto;
}

個別記事ページでは、記事が表示されるエリアに.singularというクラスによる限定が付いており、通常の記事エリアのidである#primary、#contentの指定より優先されています。したがって基本的には#primary、#contentの指定をそのまま.singularで限定されたセレクタの宣言にもってきて上書きすれば良いのです。

子テーマでの宣言が有効に

子テーマでの宣言が有効に

ちなみに、追加部分の最後、.singular .entry-header以下略の部分は、コメント投稿欄の幅などを指定しています。親テーマのstyle.cssそのままだと、サイドバー抜きの場合の表示幅を基準にサイズを合わせるので、不格好になってしまいます。そこで、widthをautoに指定し直しています。

面倒だという方に…

以上がサイドバー表示の手順ですが、ここまで手を入れるのは面倒だという人の為に、Twenty Elevenにサイドバーを追加するニッチなプラグインがいくつかあります。Twenty Eleven Theme Extensionsが有名ですね。

Twenty Twelveではもう少し融通が利くようになってほしいものです。


akisi.site90.com時代の当サイトを利用されていた方へ

このたび急な移転をするはめになってしまいました。

契約サーバの000webhostが、通告無く前サイトを非公開状態にし、利用を続けるのなら金を払えという宣告をしてきたのです。

FTPやMySQLデータベースにアクセスする事もできず、先方が非公開にしたデータを移転のためローカルに落とす事も適いません。仕方が無いので、googleのキャッシュから記事を復元している最中です。画像データなど一部のものは完全に失われてしまったため、完全な復元は不可能ではあるのですが。

この000webhostは、特に瑕疵の無いサイトを予告無しで非公開にする手口を良く使うようです。無料でMySQLデータベースを提供しているのも、ファイルコピーによる単純なバックアップが不可能なデータベースを利用させる事で、有料サービス契約要求の際の人質の価値を大きくしようとしているのではないかと勘繰ってしまいます。

条件面だけを見て、000webhostを薦めるエントリをかつて書きましたが、現在こちらのサーバを他人に薦めようという気は全くありません。

記事は古いものから復元していく予定です。それまでこちらの記事がトップに出続ける筈ですので、ご了承ください。旧ページへのリンクなどありましたら、site90.comをtabiyaku.netに変更よろしくお願い致します。


新ページおよび新カテゴリ”Conceptual”を追加

このサイトに新しく”Conceptual”という名前のページを作成し、完成させたプログラムおよびデモンストレーションへのリンクを張ることにしました。ページタイトルの下のメニューバーからリンクを辿ってみてください。あるいはここから。
同時に同名のブログ記事カテゴリを新しく設け、サブカテゴリからプログラム毎の作成過程などを追えるようにしました。キメラ系人間のtroublesomeな開発実録をお楽しみください。


サイトC:レンタルサーバを000webhostに変更

サイトC(このサイト)のサーバを、以前のサーバの仕様変更を機に000webhostという海外サーバに移転しました。1500MBのディスクスペース、2つのMySQLデータベースとPHPが使用可能という条件で、広告無しの完全無料という謳い文句です。移転から2年近く経過しているのですが、その間特に不具合や怪しい料金請求なども発生せず、(予想とは裏腹に)順調に使えています。FAQによれば、有料契約コースの収益があるからそれが可能になっているとのこと。確かに無料契約のままではアクセス解析などが利用できないので、サイトが大規模になったら切り替えの需要はありそうです。


近況、便秘がクライマックス!!

とあるプログラムを作ろうとしていて、どのように書いてもある一箇所のせいで動かない。そこで関係ありそうなリファレンスをひたすら調べ回る、そんな1週間を過ごしていました。

処理のためのアルゴリズムが間違っていないのなら、そこから先は言語の仕様との闘いみたいなもので、仕様を把握しているかしていないか、1か0かのデジタルな要因によりプログラムの正否が決まるわけです。つまり、7日間で解決した問題について、6日目に6/7の達成率があったというわけではなく、その時点では0、そんな塩梅です。

だからこそ、0が1になった瞬間というのは感慨もひとしおです。単純な問題に7日間も足を取られていた自分の能力にこそ疑問を持つべきなのでしょうが、それよりも今後同じ処理を組み込むとき、桁違いに少ない時間で実現することができるようになったことがうれしくてたまらない感じです。

この感覚は、便秘が治った時に近いです。故郷(クニ)のお母サンにぜひ伝えてやらねばなりません。『プログラミングとは、便秘であると見つけたり』

今回の便秘もいよいよクライマックスなので、一刻も早く貯まりに貯まった宿便を霧散させてしまえるよう、頑張っていきたいと思います。