スマートフォンやhtml5+CSS3など新技術に四苦八苦。jQuery、AjaxなどJavaScriptも難しいですね。そんなWebに悩む人のネタ帳です。

プログラミングをしているときに、その変数自体が存在しているかどうかを知りたい場合があります。
例えばPHPの場合では

if(isset($a)){
	echo "変数$aは存在する";
}else{
	echo "変数$aは存在しない";
}

if($a){
	echo "変数$aは存在する";
}else{
	echo "変数$aは存在しない";
}

といった判定が可能です。
また、配列かどうかを確認したい場合は、

if(is_array($a)){
	echo "変数$aは配列です";
}else{
	echo "変数$aは配列ではありません";
}

このように判断が可能です。

eclipseでShift-JISで書かれたファイルを編集後に上書き保存できないことがあります。
保存できない旨のエラーメッセージは以下です。

「保管を完了できませんでした。
理由:
一部の文字は”shift-jis”文字エンコードを使用してマップすることはできません。
エンコードを変更するか、”shift-jis”文字エンコードによってサポートされていない文字を除去してください。」

どうやら、eclipseの設定で文字コードを「shift-jis」に設定している場合に、Shift-JISで扱えない文字を保存しようとするとこのエラーが発生するようです。
どの文字なのか突き止めようとしても、エラーの詳細は以下のみでよく分かりません。

Input length = 1

恐らく対象の文字は1つではないと思いますが、私の場合、たいてい「から」を変換した「~」が原因です。文字コードを「shift-jis」や「sjis」とした場合に発生します。

例えば、CDショップのサイトをCakePHPで構築するとして、ロック音楽のパスを「/cd/rock/」、ポップ音楽のパスを「/cd/pop/」としたと仮定します。

CakePHPのコントローラの基本的なルールでは、「/cd/rock/」にアクセスがあった場合に、コントローラ「CdController」のメソッド「rock」で処理が行われ、ビュー「/app/views/cd/rock.ctp」で表示されます。
同じくして、「/cd/pop/」にアクセスがあった場合に、コントローラ「CdController」のメソッド「pop」で処理が行われ、ビュー「/app/views/cd/pop.ctp」で表示されます。

ここでコントローラの処理についていうと、ジャンルは違えど処理はほとんど同じのはずです。処理を共通化したい場合には、コンポーネントを活用すればよいことは以前書きました。
CakePHPでコンポーネントを作成する

hetemlレンタルサーバにはSubversionサーバが用意されており、リポジトリを作成して利用することができます。
今回は実際にリポジトリを作成し、クライアントからsvn+sshで接続する方法のメモです。

hetemlでssh接続を有効にする

hetemlでSSHを有効にする方法は、公式サイトで公開されています。
レンタルサーバー「heteml」 – SSH のご利用方法
実際にWinSCPやPuTTYに接続できれば成功です。

hetemlにリポジトリを作成する

PuTTYでhetemlサーバに接続し、例えば以下のようにしてホームディレクトリにリポジトリ「test_repos」を作成します。

cd $HOME
mkdir -p ./test_repos
svnadmin create ./test_repos

Product Advertising APIを利用するために、PEARの「Services_Amazon」を使ってみます。

今回、構築したのはPHP5.3.0上です。
コマンドラインが実行できないレンタルサーバなどの環境下では、パッケージを手動でPEARのサイトからダウンロードします。「Services_Amazon」を動作させるためには、以下のPEARパッケージが必要となります。それらを以下にまとめます。

Services_Amazon 0.8.0 http://pear.php.net/package/Services_Amazon
HTTP_Request 1.4.4 http://pear.php.net/package/HTTP_Request/
Net_URL 1.0.15 http://pear.php.net/package/Net_URL/
Net_Socket 1.0.10 http://pear.php.net/package/Net_Socket/
XML_Serializer 0.20.2 http://pear.php.net/package/XML_Serializer/
XML_Parser 1.3.4 http://pear.php.net/package/XML_Parser/

コマンドラインが実行できる環境であれば、以下を実行するだけでインストールは完了します。

pear install Services_Amazon-0.8.0

手間な場合はローカルでコマンドを実行した後、インストール済みのPEARパッケージをまるごとレンタルサーバにアップロードする方法もあります。

これまで携帯電話用のWebサイトについては、その規格が収束に向かいそうにないので、捨てていました。Docomoとauで見栄えが異なる、同じSoftbankでも機種により見栄えが異なるなど、それぞれWebサイトについての規格はばらばらで、技術者泣かせのところがありました。そんな不安定な分野なんて、そのうち消えてなくなると考えていました。

最近、iPhoneを初めAndroidなどのモバイル端末の爆発的な広がりをみると、目を見張るものがあります。これまでの携帯電話専用サイトとは異なる、スマートフォン専用サイトの需要が高まるのは確実でしょう。

特にAndroidについてはPCサイトと変らない技術でホームページ構築が可能です。HTML、XHTMLのタグは普通に使用できますし、CSS、JavaScriptも動作します。最新のAndroidではフルFlashの表示も可能です。
繰り返しになりますが、これまで携帯電話専用サイトの規格が定まらなかったのは、キャリア間、メーカー間の仕様の問題でした。しかし、Androidについて、最近ではdocomo、au、softbankから多くの端末がリリースされています。メーカーでいうと、SHARPやTOSHIBAなどは独自のOSからAndroid OS採用への切り替えが積極的のようです。時代の流れの速さについてゆくために、独自技術で精度を求めるより、オープンですぐれたプラットフォームを活用するほうがコストが少ないんでしょうね。

最近ではFlashといっても多岐にわたります。Webサイトであったり、ゲーム、バナーやAIRアプリケーションなど。詳しくはないですが携帯でもFlashがあります。
要件に応じて最適な構築方法も異なると思いますが、そんな手法の一つとしてProgressionを試してみたいと思います。

ProgressionはFlash CS3~CS5に対応したフレームワークで、特にフルFlashサイトを構築する場合にその威力を発揮するようです。
標準のWebのような構成、つまり、ページがいくつか存在して、グローバルナビゲーションがあって、といったことをFlashで実現しようすると、結構たいへんだったりします。それぞれボタンを作成して、イベントを設定して、タイムラインを制御してなど、毎度繰り返しのめんどくさい作業が発生します。
そんな作業をProgressionでは比較的、軽減してくれるようです。

今回はそのProgressionをインストールしてみたいと思います。

サブドメインやマルチドメインに対応したレンタルサーバで複数のCakePHPで構築したサイトを公開する場合に、一番には複数のCakePHPをインストールすればよいと考えます。しかし、リソースが無駄に使用されるようで嫌ですよね。
当然ともいえる事のようですが、CakePHP1.3では複数のWebサイトを管理できます。

まず、前提として、CakePHPを非公開のディレクトリにインストールした構成とします。詳細は以前の記事を参照してください。
CakePHPのディレクトリ構成を変えてセキュリティ強化

例えば、以下のようなディレクトリ構成で、3つのサイト「http://site1.helog.jp/」「http://site2.helog.jp/」「http://site3.helog.jp/」をマルチドメインで公開するとします。

cakephpインストールディレクトリ /cakephp/
サイト1公開ディレクトリ /public_site1/
サイト2公開ディレクトリ /public_site2/
サイト3公開ディレクトリ /public_site3/

ソフトバンクのAndroid携帯「HTC Desire」に、アプリ「Adobe Reader」をインストールしてコミック「ラブひな」を読んでいます。

特に「ラブひな」ファンでもマンガ好きなわけでもないですが、今回、Jコミというサイトで無料でラブひな全巻が公開されるということで、これを機に読んでいます。
Jコミ – http://www.j-comi.jp/
普段、一切アニメやコミックは見ない人間なんですが、無料となるとついつい手を伸ばしてしまいます。貧乏性なんですかね。

コンテンツは上記サイトよりPDFファイルで展開されています。
コンテンツ公開時期と、Android携帯を入手した時期が重なっていたのもあり、それから細々と読み続けています。小さい画面だと読み物には辛いという先入観がありましたが、意外にもすんなり読めますね。

CakePHP1.3のデフォルトのディレクトリ構成を変更して、セキュリティの強化を図ります。

通常、CakePHPをインストールする場合、ダウンロードしてきたソースを公開フォルダに展開するだけです。この手軽さが利点なのですが、ログやキャッシュファイルなど、直接アクセスしてもらいたくないファイルも公開ディレクトリに展開されることになります。
アクセスを許したくないフォルダに制限を設けるのも一つの方法ですが、めんどくさいですね。
ただ、詳細は省きますが、基本的にはアクセスできないようなしくみにはなっているのです。しかし、そうは言っても気持ちが悪いですよね。

CakePHPでは「/app/webroot」フォルダに設置した静的コンテンツは、ブラウザから直接リクエストを発行してアクセスできます。それ以外のリクエストについてはフレームワークで処理されます。つまり、リクエストからの処理の流れが「ドキュメントルート」⇒「webroot」⇒「フレームワーク」のようになっているのです。
この構造を少し単純化して「webroot」⇒「フレームワーク」にしてしまおうというのが今回の考えです。つまりは、「ドキュメントルート」を「webroot」にしてしまうわけです。

Monthly Archives