Web Tech Log by 1KB

Icon

Web開発、Webデザイン、SEO、携帯コンテンツなどWebにまつわるテクノロジーを追っかけるブログ。旧名「Web屋に復帰した人間のリハビリ日記」

気が付けば2012年

あけましておめでとうございます。

気が付けば、2012年。新年の挨拶になりますが、もう半年ぶりの更新ですね。

まあ今年もマイペースに更新を続けていきます。
近状としては、最近はEコマースの案件をやっています。
気が向いたらその辺のノウハウを記録していきたいです。

PHPスクリプト内で、ファイルをダウンロードして、サーバー上の特定ディレクトリに保存する最も簡単なコード

よく使うんですが、いつも忘れてしまうので、自分用に記録します。

$url = "http://example.com/abc.png";
$img = file_get_contents($url);
$filepath = "/path/file.png";
file_put_contents($filepath,$img);

スクリプトの用途によってはファイル存在チェックや、排他処理とかいろいろ考えるべきですが、おそらくこれが最もシンプル且つ簡単なコードだと思います。

ServersMan@VPS へサーバー移転

DTIが運営している仮想専用サーバーサービスである、ServersMan@VPS へサーバーを移転しました。
インストールされるCent OSもゼロから設定。忘れかけてたLinuxを復習するのに良い機会でした。
■インストールした主なサービス
Apache
PHP
MySQL
vsftpd
Postfix
dovecot
まあ一般的なLinuxのインターネットサーバーです。

ServersMan@VPS は月額490円から始められます。手軽なのでサイト運営したい人やLinuxの勉強をしたいという人にもオススメです。

Google Chrome でファイルダウンロードをすると、Orbit Downloaderに引き継ごうとして止まる

最近WebブラウザはGoogle Chromeを使ってます。動作が軽くてとても良いです。日本語の禁則処理がちょっと変なのが気になりますが。

Orbit Downloaderというダウンロード用ソフトを一時的に併用していたのですが、役目を終えてアンインストールしたあともOrbit Downloaderにダウンロードのタスクを渡そうとして、ダウンロードが始まらないというような状態になってしましました。

Download transferred to Orbit Downloader. ~

と表示されて、なにも起きない。正直うざいな・・・

以下対処方法

URLを入力するところに「about:plugins」と入力します。

インストールされているプラグインが一覧表示されます。ちなみに「拡張機能」とは違います。

その中から「Orbit Downloader – バージョン XXXX」を探します。

あったコイツだ!これを無効にすると直ります

とあるWebアプリをCakePHP 1.2 → 1.3 へバージョンアップしたときのメモ

表題のとおり、先日とあるWebアプリをCakePHP 1.3 へバージョンアップしました。やはりそのときにつまずいた点が多々あったのでメモしておきます。

まずは公式ドキュメントに目を通しておくことをオススメします。

1, $cakeDebug

まず最初にエラーに気付いたのは$cakeDebugです。

<?php echo $cakeDebug; ?>

まあ公式ドキュメントによると単純に廃止になっただけのようなので、諦めて削除しました。

2, renderElement → $this->element

例えば

<?php echo $this->renderElement("menu")?>

Viewでエレメントを挿入するときは以下のように変更しました。

<?php echo $this->element("menu")?>

「renderElement」という書き方は廃止されています。

3, $session->flash()

$session->flash() はecho つけないでダメになりました。

つまり

<?php $session->flash();?>

1.2はこれで良かったのですが、以下のように変更しました。

<?php echo $session->flash();?>

もちろん、Cake自体の変更点は他にもいっぱいあるので、上記はほんの一部であることをご理解ください。

久しぶりのブログ更新で、WordPressをアップグレード

久しぶりのブログ更新です。最近はTwitterばっかりでした。

さすがにずっと放置はまずいのでWordPressを 3.0.1 にアップグレードしました。なにげに初めて自動アップグレードをやって見たが失敗。調べるとどうもphpがSafeモードだとちょっとやっかいらしい。

以下のエントリーを参考に再度挑戦。

でもFTP接続を入力する画面でちょっとつまずいた。

ホスト名を「localhost」に変えたらうまくいきました。

Oracle、Sunを買収

ちょっとびっくりしたんですが、IBMが買収交渉してたような。いつの間にIBMと破談したのだろう。でOracleが買ってしまった。個人的に気になるのはSun傘下のMySQLの動向ですね。

ライトユーザーに対して、「IE6 → IE8へアップグレードしようキャンペーン」をみんなで呼びかけよう

ネットのヘビーユーザーはFirefoxとかGoogle Chromeとか、IE使っていてもIE7へすでにアップグレードしていたりするのが多いです。しかしまだにIE6を使っているユーザーっていっぱいいます。ほとんどがネットをたまに使うようなライトユーザーが多いです。ライトユーザーはIE6からアップグレードする動機が弱いんですよね。めんどくさいとか、そもそもインストールの仕方がわからないとか。大きなメリットがあるわけではない。それに最近ネットブックが売れていますが、ほとんどがWindows XPでデフォルトブラウザはIE6です。でそのまま使っている。

IE6はCSSのバグなどあり、Webを作る側としては早く葬り去りたい気分です。ページ確認作業も軽減されますし。ページレイアウト表示が崩れるのはIE6での場合が多いし。でも実使用ユーザーがまだ大量にいるので、無視したくてもできないのが現状ではないでしょうか?

で、そこに登場したのがIE8です。遅らばせながら先日IE8をインストールしてテストしてみました。各所で言われているとおり、体感できるくらい速くなってます。これはライトユーザーでも十分アップグレードの動機になるのではないでしょうか?「IE8にアップグレードするとインターネットが速くなるよ」と一言教えてあげるといいと思います。

というわけで、ライトユーザーへ向けてみんなで「IE6 → IE8へアップグレードしようキャンペーン」を呼びかけよう!!

CakePHP 1.2 シェル機能でバッチ処理やコマンドをサーバー側で実行する

CakePHPは自身のフレームワークを活用したコードをサーバー側で実行するシェル機能があります。ブラウザのHTTPリクエストに頼らず実行でき、バッチ処理などに活用できます。忘れないうちにメモっておこう。

/path/to/app/vendors/shells/batch.php
にファイルを作る。「batch.php」としたが名前は何でも良い。

<?php
class BatchShell extends Shell {
    var $uses = array('Model');//モデルを使用する場合指定しておく
    function main() {
        //ここにコードを書く
    }
}
?>

デフォルトでは、main()メソッドが実行されます。

次にシェルスクリプトを用意。
/path/to/sh/batch.sh

#!/bin/sh
/usr/local/bin/php /path/to/cake/console/cake.php batch -app /path/to/app

シェルスクリプトはあらかじめ実行権限を付けておく。
スクリプト中のパスはサーバーに合わせて適時変更します。

あとはLinuxの場合、cronで実行するように設定する。
スクリプト中の以下のコマンドを直接cronで設定しても動くと思う。

/usr/local/bin/php /path/to/cake/console/cake.php batch -app /path/to/app

参考

CakePHPで404エラー画面のレイアウトを「default.ctp」ではなく別のレイアウトを指定する

CakePHP製のPC+携帯混合のWebサイトで、404のエラー画面が、携帯サイトでもPCと同じでかくてたくさんの画像いっぱいのエラー画面になって問題になりました。

原因を調べていたら、携帯版でもエラー画面はPC用レイアウトとして使っていた「default.ctp」を使用してしまうことが判明(携帯版では「mobile.ctp」を使用していた)。

そこで、CakePHPで404のエラー画面を別のレイアウトで表示するように変更してみた。

<?php
class AppError extends ErrorHandler {

    function error404($params) {
        $this->controller->layout = "simple";
        parent::error404($params);
    }
}
?>

携帯でもPCでも表示できるような簡単なHTMLでレイアウトファイル「app/views/layouts/simple.ctp」を作成する。これで携帯版でもPCばりの画像が出なくなり、シンプルなエラー画面になりました。

参考

固定ページ

킹ēǂ݂uOp[c