投稿日:

XAML を分割して記述する方法


WPF で Window をレイアウトしていると、少し複雑な UI だと XAML が長くなりすぎて非常に見難くなります。これを回避するために、XAML を分割して記述し、インポートするような方法を検索してみたのですが、リソースに定義したりだとか、なんとなく遠まわしに思える方法ばかりしか見つけることが出来ませんでした。

それで結局、良く見ると他のファイルで既に自分でやっていたことに気付いたのですが、すっかり忘れていたので、改めてここにメモを残しておきます。・・・たぶん、ですが、これが本当は基本なので、基本過ぎて、検索にも出てこないのかなーと思ったりもいたします。

 

まず、読み込まれる側の xaml を書きます。TabContent1.xaml という名前で、普通に UserControl で作成します。

 

次に、読み込む側の xaml です。

↑で強調した3行に注目です。

強調行の1つ目は、サブビューとなるクラス群が収まった場所の名前空間を、接頭辞 v として定義しています。

強調行の残り2つは、作成した v 接頭辞を付けて、xaml のクラス名を呼び出しています。x:Name は、プログラムからアクセスするための識別子です。

 

この状態で、MainWindow.xaml.cs のコードビハインドから子ビューの要素にアクセスするには次のように書けます。

 

以上、とても簡単ですが、いざ検索すると情報が出てこなかったので、メモを残しておきます。

 

 

投稿日:

Webデザインとポインティングデバイスの精度


最近、いわゆる普通の Web サイトを作る時にもレスポンシブルであることを考えてしまいます。…うん、いや、もう少し正確に表現すると「スマートフォンやタブレット、またPC環境などの多様なデバイスにおけるUIの利便性」について考えてしまいます。

個人的には、レスポンシブルなWebデザインは万能では無いと思っていますし、特に低コストなサイトでの「ワリとしっかりとした RWD」はむしろ不要と考えています。「PCスタイルのサイトで十分だよね」という感じ。

ただ、これだけスマートフォンが急速に普及した現在、それでも検討が必要なのは、「スマートフォン環境でもストレス無く操作できる UI」だとも思っています。分かりやすい例を言うと、縦に並んだテキストリンクが line-height: 1.4em とかだと、スマートフォンなどのタッチデバイスで正しくリンクをクリックするのはちょっとしたコツが居るわけですね。

これは「画面の広さ」ではなく、「ポインティングデバイスの精度」が問題なわけです。

今のいわゆるレスポンシブルな Web デザインは、主に画面の広さを基準としたものになっていると思っていますが、Windows 8 などが普及して、PC画面でもタッチインターフェースが一般化した時にはどうなんだろうな、と思います。

それで、ポインティングデバイスの精度で css を切り替えたりできないかな?と考えて少し検索してみたら、Javascrip ではありますが、次のコード片を見つけました。

でも、これは厳密にはポインティングデバイスの精度(例えばペンタブレットだと?)でも無いですし、そもそもタッチデバイスかどうかの判定には使えなさそうにも思います。なかなか難しそうです。

どなたか、良い方法やアイデアをご存知でしたら教えてください!

§

ここまで書いて来てアレなのですが、仮にタッチデバイスで操作されているかどうかを判定できたとしても、今度はそれをデザインにどのように動的にフィードバックするのか?というのは、その次にある大きな課題です。上に挙げた例への回答として、単純に line-height:2.5em; としたとして、それがデザイン的に適当なのかというと、それはまた別問題です。

ただ、こういった手法が在ればそれを使えることは Web 制作上の一つの道具になりえますし、レスポンシブルでない Web サイトを多様なデバイスからのアクセスに対して適応させる一つのアプローチになるのではないかな、と思ったりしています。

投稿日:

PHPFog と WordPress とファイル管理


[追記] 下記の方法より良い方法がありましたのでPHPFog/AppFog と WordPress とファイル管理 にて、紹介しています。

WordPress はその管理画面からサイト自体に様々なカスタマイズが行えることが特徴であり、強みです。それらのアップデートにおいては、主に wp-contents 内に必要なファイルがダウンロードされて追加されます。PHP Fog や DotCloud などの環境上に WordPress をデプロイしてもこれは同様なのですが、実はちょっと困ったことがあります。

問題

PHP Fog では、初期にデプロイされた後、WordPress の管理画面で行った変更については、git clone でも pull でも取得できないのです(わたしが知る限りなので、どなたか良い方法を知ってたら教えてください)。つまり、WordPress の管理画面から行った変更は、Git の管理下に無い、ということなのでしょうね。まあ、当たり前と言えば、当たり前なのですが、それを PHP Fog 上の master に commit する手段を、私はとうとう見つけることができませんでした。

解決策

管理画面からの変更は git clone でも pull でも取得できないのであれば、別の方法で取得するしかありません。とてもスマートとは言い難いのですが、私は  navphp というファイルエクスプローラをサーバー上に配置することで解決しました。手順は至って簡単でした。

navphp の設置方法

  1. navphp をダウンロード
  2. PHP Fog から git clone したリポジトリのルートに、navphp の zip を展開して配置
  3. navphp の、config.php を開き、$user と $passwd を自分用に設定

navphp でファイルを取得し、ローカルの WordPress データを最新にする

  1. navphp の管理画面にログインする。
  2. ファイルの一覧が表示されるので、WordPress 上の必要なリソースをダウンロードする
    • ダウンロードは、ファイル名/フォルダ名部分をクリックする
    • フォルダは zip されてダウンロードされるので、ダウンロード後に zip を解凍す る
  3. ダウンロードしたファイルで、ローカルのリポジトリを上書きする

 

以上の手順で、何か管理画面で変更を行った際には、手元のデータを最新にして、関連した変更をローカルリポジトリで行っていくことができます。例えば、管理画面でテーマをインストールし、その子テーマを作りたいときには、手元に親テーマのデータを持ってないと困ると思いまし、いずれにせよ、手元のリポジトリが最新で無いというのは、なんというか不安なものですね。

なお、この方法は dotCloud などの同じような課題のある PaaS 環境でも同じようにできる筈です。

 

投稿日:

PHP Fog の WordPress の日本語化


WordPress の検証には PHP Fog さんのサービスを利用させて頂いています。簡単に扱えて、WordPress セットアップもボタンを押すだけの2ステップ程度。かつ「無料」です。ボタン一つでサイトを破棄して、そしてまた簡単に新しくサイトを作ることも出来ます。検証用にはうってつけです。

その PHP Fog でセットアップした WordPress ですが、困った事に英語環境になっています。しばらくは気にせず使っていましたが、勉強会などのスライドに載せるスクリーンキャプチャが英語版の画面なのは、なんと無く切ない…。そこで、日本語化をやってみました。

手順は、Gitを使っている方だったら、非常に簡単で、以下の通りです。環境は WordPress 3.4.1です。

§

1. PHP Fog の App Console から、Git で clone する URL を拾ってくる。↓写真の赤枠のところです。

2. ローカルのファイルを置きたい場所に移動して、git clone でローカルにリポジトリを作ります。

3. ローカルリポジトリのディレクトリがアプリケーション名で作成されるので、その中に移動します。移動した先がそのままアプリケーションのルートディレクトリで、また WordPress のファイルも配置されています。

4. wp-config.php を開いて、WPLANG の定数定義を ja に変更します。

5. 次に、日本語のリソースファイルをダウンロードします。wp-content の中に languages フォルダを作成して、その中へ移動します。

6. WordPress の日本語リソースファイルを、WordPress の ja リポジトリから落としてきます。ちなみに、私が確認したときは、3.4.x 用のリソースが見当たらなかったので、とりあえず 3.3 用を使いました。

7. アプリケーションのルートディレクトリに上って、ファイルの追加と変更を Git にコミットし、最後に push します。

以上のような流れです。ネット上で「上手く出来ない」的な記事も見られますが、とりあえず私は問題無かったですね。いくつかの参照URLでは、落としてくる日本語リソースのファイルが違ってたりしているので、そのせいかも知れません。私はとりあえず、あったものをみんなダウンロードして入れました。

投稿日:

WordPress のマジッククオート


WordPress でプラグインを書こうとしたら、$_POST とか $_GET とか使うことになると思います。

ところが、これらの外部入力は無条件に magic quotes されています。
しかも、WordPress によって。PHP 関係なしで。

また、プレーンな値を直接取得する方法も無いようです。
で、プレーンな入力値が必要な時は、stripslashes です。

ちょっとびっくりしましたが、これも WordPress の流儀。
WordPress 始めたばっかりのプログラマ側の人はびっくりするかも知れないと思ってのメモでした。

詳細

最初、まさか php がマジッククオート ON なのか? と思ったりして php.ini とか見たり、.htaccess 見たりしてけれど、magic qoutes なんてされてません。もちろん、get_magic_quotes_gpc() で確認しても、大丈夫、ちゃんとオフ。

なぜー? なんでー?! (?_?)

まさかと思いつつ、WordPress のコードを彷徨ったら、load.php の中に次の関数を見つけました。

これはつまり…、PHP の設定に関わらず、オレオレマジッククォート適用しちゃうぞって事ですね。

これは WordPress の流儀のようです。

では、プレーンな値が欲しい時はどうするのか?
これが調べてもそれらしい情報が出てこなかったのですが、Twitter で @horike37 さんがビシッと教えてくれました。

自動でシングルコートつけてきよるのでstripslashesするしかない!

とのこと。

潔いですね。というか、html escape がデフォルトのテンプレートエンジンと同じじゃないか、合理的じゃないか、ということで、納得しておきます!

参考

いちおう自分でも見つけた情報。みんな最初は戸惑うようです。
http://wordpress.stackexchange.com/questions/21693/wordpress-and-magic-quotes