WEB/システム/IT技術ブログ

CakePHP1.3でWebアプリケーションを構築する上で、Authコンポーネントを使った管理画面を作ってみます。

前提として、adminコントローラ配下に認証をかけることにします。つまりCakePHPで構築したサイト内で「http://xxx.xxx.xxx/admin」にアクセスするためには管理者権限を必要とするようにします。

ユーザ管理テーブルを用意する

ユーザIDとパスワードを管理するテーブル「users」を用意します。

CREATE TABLE users ( 
	id INTEGER(8) auto_increment PRIMARY KEY,
	username VARCHAR(50) NOT NULL, 
	password VARCHAR(50) NOT NULL, 
	date_create VARCHAR(19) NOT NULL, 
	date_update TIMESTAMP NOT NULL
);

最低限「ユーザID」と「パスワード」の2カラムを用意します。その他のカラムは任意です。また、カラム名は変更可能ですが、デフォルトの「username」「password」とします。今回は記述しませんが、カラム名を変更するためにはコントローラ内で設定が必要です。
今回、このテーブルへのINSERTは手動で行います。パスワードはハッシュ値を登録します。

IIS(Internet Information Services)を利用して、WindowsXPをFTPサーバにする方法を紹介しました。
WindowsXPをFTPサーバとして利用する(IIS編)
ただ、XPの場合はFTPで公開できるディレクトリが1つに制限されています。また、Windows特有のユーザ管理もめんどくさいです。どうもWindowsのユーザ管理の概念は分かりにくい。

そこで、他のソフトウェアなどないかと探していたら、意外と近くにありました。
それは「FileZilla」です。FileZillaは日本語プロジェクトが存在し、以下のサイトでダウンロードすることができます。
FileZilla プロジェクト日本語トップページ – SourceForge.JP
「意外と近くに」というのは、FileZillaはXAMPPに組み込まれているんですね。XAMPPは普段から業務で活用しているので、まさに灯台下暗しでした。
今回は、上記サイトで最新版をインストールするのではなく、XAMPP for Windows 1.7.2に組み込まれているFileZilla 0.9.32 betaを使ってFTPサーバを立ち上げたいと思います。XAMPPはインストール済みを前提とします。

WindowsXPにFTPサーバを立てる機会があったので、その時の作業メモです。

WindowsでFTPサーバを導入するのには、どこからかパッケージをダウンロードしなければならないと思っていたのですが、IIS(Internet Information Services)が標準で用意されており、FTPサーバ以外にもWebサーバやメールサーバのサービスが利用できるようです。
IISは、Windows 2000 Professional、Windows XP Professional、Windows Vista、Windows 7を対象に用意されています。ただ、デフォルトでインストールはされていないので、コンポーネントの追加をする必要があります。今回はWindows XP Professionalの例です。

IISコンポーネントの追加

WindowsXPでIISコンポーネントを追加するためには、WindowsXPのインストールCDが必要です。
スタートメニューから「コントロールパネル」⇒「プログラムの追加と削除」をクリックし、開いたウィンドウから「Windowsコンポーネントの追加と削除」を選択します。するとWindowsコンポーネントウィザードが起動するので、「インターネットインフォメーションサービス(IIS)」を選択して、コンポーネント追加を実行します。

今回、初めてのスマートフォンサイト作成で、画面サイズ、フォントサイズの設定を行ったので覚書です。

スマートフォンの画面サイズ

まず、画面サイズはiPhoneが320×480pxなので、これを基準にデザインするといいと思います。
ただ、他のAndroidなどの機種はこれと若干異なります。そこでviewpointを指定して、表示領域を指定します。

<head>
...
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
...
</head>

「width=device-width」は、iPhoneの場合に横幅が320pxに指定され、その比率で縦幅が決定するわけです。他のデバイスについても同様です。つまり、表示するデバイスの解像度に依存することなく、横幅が320pxでデザインされたサイトが、きっちり収まった状態で閲覧できるわけです。

Macではデフォルトでルートユーザが有効になっていません。あまりMacを使わないので、毎度この件につまづいて「あれ?root権限でコマンド実行できな!?」となってしまいます。。。

私は、過去にLinuxユーザだったので、Macの設定などを変える場合は、GUIを利用するよりもターミナルを使ってコマンドを打ち込みます。

例えば、ローカル環境でWebサーバなどを立ち上げている場合に、hostsを編集したいことがよくあります。

vi /private/etc/hosts

しかし、システム環境をターミナルから変更する場合には「root」権限が必要になります。
Mac OSをインストールしたことがないので、詳細は知りませんが、PCの管理者権限とは別のようです。一緒にすればいいのに。

以前にSWFObject 2.2の利用例を紹介しました。
Flash設置の決定版「swfobject」
上の利用例はswfobjectの公式ドキュメントに掲載されているスタンダードな方法です。一方で、objectタグなどを使用しない、少しスマートな記述方法もあるようです。
swfobject – Project Hosting on Google Code

まず、swfobjectを読み込んで、以下のようにしてswfobjectを実行します。

<script type="text/javascript" src="/js/swfobject.js"></script>
<script type="text/javascript">
	swfobject.embedSWF("/swf/index.swf", "FlashContent", 
		"400", "400", "10", "/swf/expressInstall.swf");
</script>

Progressionでは便利なエフェクトコンポーネントがデフォルトで用意されています。
エフェクトコンポーネントのデモは以下のサイトで紹介されています。
Progression(4.0.12) エフェクトコンポーネントをクラスで使用 – MotuLog

こちらのサイトでも説明されていますが、クラスからエフェクトコンポーネントを利用する方法でなかなかうまくいかなかったので、とりあえずメモです。

まず、エフェクトコンポーネントクラス「BlindsEffect」を継承した以下のようなクラスを用意します。

public class MyEffect extends BlindsEffect {
	
	public function MyEffect( initObject:Object = null ) {
		super( initObject );
		
		duration = 1;
		dimension = 1;
		easing = Circular.easeInOut;
	}
}

例えば、ムービークリップ「McPhoto」に上のエフェクトを適応する場合に、クラス「MyEffect」を継承します。以下、その手順です。

新はてなブックマークボタンが公開されていたので、このブログのボタンを張り替えることにしました。
使いやすくなりました! はてなブックマークボタン
キャンペーンが去年末に終了しているのをみると、そう新しい事でもないですね。

さて、上記のページより、このブログのトップページのブックマークボタンを作成します。結果は以下のとおりです。このコードをブログに貼り付けるだけです。簡単ですね。

<a href="http://b.hatena.ne.jp/entry/http://helog.jp" 
 class="hatena-bookmark-button" 
 data-hatena-bookmark-title="helog – Webに悩む人のネタ帳" 
 data-hatena-bookmark-layout="standard" 
 title="このエントリーをはてなブックマークに追加">
<img src="http://b.st-hatena.com/images/entry-button/button-only.gif" 
 alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" />
</a>
<script type="text/javascript" 
 src="http://b.st-hatena.com/js/bookmark_button.js" 
 charset="utf-8" async="async">
</script>

ここで前回と同様にWordPressに対応させます。すると以下のようになります。

<a href="http://b.hatena.ne.jp/entry/<?php the_permalink(); ?>" 
 class="hatena-bookmark-button" 
 data-hatena-bookmark-title="<?php the_title(); ?>" 
 data-hatena-bookmark-layout="standard" 
 title="このエントリーをはてなブックマークに追加">
<img src="http://b.st-hatena.com/images/entry-button/button-only.gif" 
 alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" />
</a>
<script type="text/javascript" 
 src="http://b.st-hatena.com/js/bookmark_button.js" 
 charset="utf-8" async="async">
</script>

ちなみに、以下がこれまでに埋め込んでいた旧はてなブックマークのコードです。設定部分が少ない分、比較的シンプルになったのかな。

<a href="http://b.hatena.ne.jp/entry/<?php the_permalink(); ?>">
<img src="/images/append.gif" 
 width="16" height="12" 
 style="border: none;" 
 alt="このエントリーをはてなブックマークに追加" 
 title="このエントリーをはてなブックマークに追加" />
<img src="http://b.hatena.ne.jp/entry/image/<?php the_permalink(); ?>" 
 alt="はてなブックマーク - <?php the_title(); ?>" 
 title="はてなブックマーク - <?php the_title(); ?>">
</a>

押してみてもらえると分かるとおり、機能面でいうとだいぶ改善され、使いやすくなったように思います。

プログラミングをしているときに、その変数自体が存在しているかどうかを知りたい場合があります。
例えば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」とした場合に発生します。

Monthly Archives