Posts tagged LAN

クロックス購入

2

クロックス

クロックスを家族3人で購入。
今まではサンダルといえばビーサンばかりの私でしたが、はやりものに負けました。

私のお気に入りのビーサンといえば葉山のげんげいです。
先日、本も出版されました。

ビーサン屋げんべい物語―葉山の片隅から世界を狙うオンリーワン商店

もちろん発売日にそく購入しました。

クロックスは履き心地がいいですね。
今はジビッツをネットで選んでいるところです。

PEAR::Pager ページ番号を PATH_INFO で渡す

3

ページング処理を行ってくれる PEAR::Pager 、かなり便利です。
通常は
index.php?pageID=2
のようにしてページ番号を渡すのですがこれをPATH_INFO で渡すには下記のようにオプションパラメータを指定します。

$params = array(
...
'path' => 'http://localhost/foo/',
'fileName' => '%d',
'append' => false,
cuurentPage => 現在のページ
);

ポイント

append = false なら fileName の %d にpageID を埋め込む。
currentPage を指定しないと Pager が現在のページが分からない。

fileName

'path' => 'http://localhost/',
'fileName' => 'foo/%d'

なども可能。append=false なら fileName の %d にpageID を埋め込むということ。

現在のページを取得するには

$path_info = explode("/", $_SERVER['PATH_INFO']);
if (isset($path_info[1]) {
    $currentPage = $path_info[1];
} else {
    $currentPage = 1;
}

PATH_INFO が使用できるか

サーバによっては PATH_INFO が使用できない。
使用できるかは $_SERVER["PATH_INFO"] が存在するかどうか。
ただし、http://localhost/index.php では $_SERVER["PATH_INFO"] には値はセットされないので、 http://localhost/index.php/1 などのようにして $_SERVER["PATH_INFO"] が設定されているか調べる。

PEAR::Page マニュアル

Firefox テキストエリアを外部エディタで編集する

1

今まではブラウザで textarea を入力するときに秀丸などを立ち上げて、秀丸で文章を作成してそれをコピペしたりしていた。
Firefox の拡張機能「mozex」を使用すると、外部のエディタでテキストエリアを編集することができるということで導入してみた。

インストール

http://www.cas.cmc.osaka-u.ac.jp/~paoon/OriginalDoc/
上記よりインストール

設定

ツール->アドオン から mozex 選択

General タグ

Directory for temporary files にテンポラリディレクトリを指定
例)C:\WINDOWS\Temp
[Browse]ボタンで選択するのが簡単。

Textarea タグ

Edit textbox in UTF-8 にチェック
Text Editor
例)"C:\Program Files\Hidemaru\Hidemaru.exe" /fu8 %t
使用する外部のテキストエディタを[Browse]ボタンで選択
スペースが入っているディレクトリはエラーになるので “” で囲む。
[Browse]ボタンだと勝手にやってくれる。
/fu8 が UTF-8 で秀丸を開く起動オプション
%t は テキストエディタが使用するテンポラリファイル

HotKey を選択して Ctrl+E とキー入力すると Ctrl+E で起動できる。お好みで。

Firefox を再起動

念のため

気になった点

設定項目が勝手に書き換わっていたことがあったのでうまく動作しない場合は確認してみるとよいかも

使い方

textare で右クリック mozex->Edit Textarea で設定したエディタが起動
または、HotKey を設定しておけば設定したキーで起動する。ただし textarea が複数ある場合は選択画面が表示される。

エディタで編集して保存を押し、textareaをクリックすると保存した内容で更新される。
または、エディタは終了すると textarea が更新される。

CakePHP コントローラのメソッドをURLから実行させない

0

コントローラにアクション以外のメソッドを書かないのが一番いいのかもしれません。
ただ、どうしても書きたいという場合にはメソッド名にアンダーバー “_” を付けるとURLからアクセスできなくなります。

試しに posts_controller.php_foo というメソッド名を作り /posts/_foo/ にアクセスしてみると
Private Method in PostsController
You are seeing this error because the private class method _foo should not be accessed directly.

とプライベートメソッドなのでアクセスできませんよというエラーメッセージが出力されました。

しかしこのメッセージってあまりよくないのではと思い、試しに DEBUG=0 とデバッグモードを本番環境用にしたところ、

Not found
The requested address posts/_foo/ was not found on this server.

となりました。やはり考えてますよねそれくらい。

ちなみにエラーメッセージは
/cake/libs/view/templates/errors/
にエラーの種類によって15のテンプレートが用意されています。
自分で Not found などのエラーを修正したい場合は
/cake/libs/view/templates/errors/error404.thtml

/app/views/errors/error404.thtml
にコピーして修正すればそちらのテンプレートが使用されます。

CakePHP の日本語マニュアルに書かれている

メンバ関数を protected にして見えるようにするには、コントローラアクション名を ‘-’ ではじめてください。(訳注:将来の仕様???)
メンバ関数を private にするためには、コントローラアクション名を ‘–’ ではじめてください。(訳注:将来の仕様???)

というのはこれのことなのかな?
ただ、”_” ではなく “-” になっている。(英語のマニュアルも同様に “-” でした。)

CakePHP 日本語マニュアル
C.4. コントローラ(Controllers)

CakePHP マニュアル(英語)
CakePHP Manual

WordPress でタグを使えるようにしてみた

2

使用したプラグインは Simple Tagging です。

WordPress用、タグ付けプラグイン:Simple Tagging | 創造マラソン
こちらのサイトでかなり詳しく解説されています。

Single.php のエントリー本文の後に
<?php STP_PostTags(); ?>
を入れて、タグを表示させ、さらに
< ?php STP_RelatedPosts(); ?>
でタグにより、関連するエントリーを表示させるようにしました。
また、サイドバーに
< ?php STP_Tagcloud(); ?>
を入れてタグクラウドを表示させました。
ただ、このままではリスト構造で縦に並んでしまうので、

Tag Cloud – Simple Tagging for WordPress – Trac
こちらを参考に下記を追加しました。

style.css

ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; }
ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;}
ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; }
ul#tagcloud li a:hover { text-decoration:underline; }
ul#tagcloud li.t1 a { color:#797979; font-size: 120%; }
ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; }
ul#tagcloud li.t3 a { color:#616161; font-size: 190%; }
ul#tagcloud li.t4 a { color:#555555; font-size: 210%; }
ul#tagcloud li.t5 a { color:#484848; font-size: 230%; }
ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; }
ul#tagcloud li.t7 a { color:#303030; font-size: 270%; }
ul#tagcloud li.t8 a { color:#242424; font-size: 290%; }
ul#tagcloud li.t9 a { color:#181818; font-size: 310%; }
ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }

顔チェキを試してみた

1

最近話題の顔チェキを試してみました。

知らない方のために簡単に説明すると携帯から自分の顔写真を送ると有名人で誰に似ているか判定してくれるというケータイサイトです。

で、結果は

  1. 濱口優 63%
  2. 平泉成 61%
  3. 山口智充 60%

どれも言われたことないなぁ。平泉成さんって知りませんでした。

ちなみにウチの相方は

  1. 沢尻エリカ 51%
  2. 観月ありさ 48%
  3. 紺野まひる 48%

でした。こちらもどれも言われたことないそうです。

で、これって本人だったらどうなんだろう?と思い、濱口の写真で試してみました。
使った写真はこちらです。
結果は

  1. 濱口優 71%
  2. 森山未來 46%
  3. 小林隆 43%

でした。やっぱり本人は本人でした。確かに濱口優と森山未來は似ていると思う。

CakePHP アソシエーションのまとめ(2)

0

アソシエーションのまとめ(1) で書いた

< ?php
class User extends AppModel
{
    var $name = 'User';
    var $hasOne = array('Profile' =>
                    array('className' => 'Profile',
                          'conditions' => '',
                          'order' => '',
                          'dependent' => true,
                          'foreignKey' => 'user_id'
                    )
                  );
}
?>

この部分の補足です。
それぞれの意味するところは

var $hasOne = array('関連先のモデル名'=>
                array('className'  => '関連先のモデルのクラス名',
                      'conditions' => '関連を定義するSQL条件の一部',
                      'order'      => '関連先のデータの並び順',
                      'dependent'  => '関連先データの同時削除',
                      'foreignKey' => '関連先テーブル側の外部キー'
                )
              );

conditions は条件を付けて関連付けるモデルのデータを制限するときに指定する。
dependent は関連元のデータが削除されたときに、一緒に関連先のデータも削除するかどうか。
関連先のモデルで関連元のモデルの主キーを定義しているカラム名です。

dependent などはかなり便利に使えそうですね。
アソシエーションのまとめ(1) に書いたように、 foreignKey は CakePHP の命名規則に従っていれば省略可能です。

CakePHP HtmlHelper::tagValue のHTMLエスケープ処理

1

view でモデルの値などを出力する際に
$html->tagValue("Model/hoge");
とすれと、HTMLエスケープ処理をしてくれるので便利です。

ただ、
CakePHP 1.1.15.5144以降はHtmlHelper#tagValueに注意 | Shin x blog
に書かれているように、CakePHP のバージョン1.1.15.5144 からエスケープするかのフラグが追加されたようです。

以前はエスケープしないを選択できなかったので、それはそれで不便な点もありました。
MOONGIFT ブログ ? CakePHP覚書(HTML Helpler)

しかし今回の変更で注意しなければいけないのは、デフォルトでエスケープされていたのがデフォルトでエスケープ処理されなくなったことです。

cake/libs/view/helpers/html.php
function tagValue($fieldName, $escape = false)

以前のようにエスケープ処理させるには
$html->tagValue("Model/hoge", true);
とする必要があります。

また、

ちなみに1.2.0.5147ではtagValueがdeprecatedになっており、代わりにvalueメソッドを使うようになるようです。

ということになるようです。

6月に読んだ本

0

6月に読んだ本のメモ

デジタル・ワークスタイル―小さなことから革命を起こす仕事術

デジタル・ワークスタイル―小さなことから革命を起こす仕事術

会社勤めでお金持ちになる人の考え方・投資のやり方―確実に儲けを生み出し続けることが、お金持ちへの第一歩

会社勤めでお金持ちになる人の考え方・投資のやり方―確実に儲けを生み出し続けることが、お金持ちへの第一歩

フューチャリスト宣言

フューチャリスト宣言

レバレッジ時間術―ノーリスク・ハイリターンの成功原則

レバレッジ時間術―ノーリスク・ハイリターンの成功原則

挫折なしで英会話ができる「英語耳」9つの法則

挫折なしで英会話ができる「英語耳」9つの法則

即戦力の磨き方

即戦力の磨き方

「伝説の社員」になれ! 成功する5%になる秘密とセオリー

「伝説の社員」になれ! 成功する5%になる秘密とセオリー

無理なく続けられる 年収10倍アップ勉強法

無理なく続けられる 年収10倍アップ勉強法

ウェブ仮想社会「セカンドライフ」 ネットビジネスの新大陸

ウェブ仮想社会「セカンドライフ」 ネットビジネスの新大陸

CakePHP キャッシュファイルの使用

1

CakePHP でキャッシュを使用するときに便利なグローバル関数があります。

cache($path, $data, $expires, $target)
$data のデータをキャッシュします。
キャッシュする場所は
$target==”cache” なら /app/tmp/cache/ + $path
$target==”public” なら /webroot/ + $path
になります。$target を指定しなければ $target==”cache” です。
$expires はキャッシュの有効期間です。
内部で
$expires = strtotime($expires, time());
が行われるので、strtotime の Data input formats 形式に準拠したものでなければいけません。
デフォルトは $expires = ‘+1 day’ です。
clearCache($params, $type, $ext)
$paramsが文字列でキャッシュディレクトリかファイル名にマッチする場合はキャッシュから削除されます。
$params が配列の場合は配列内の文字列全てに対して上記の処理が行われます。
対象のディレクトリは $type で指定します。
$type のデフォルトは ‘views’ です。
対象ディレクトリは /app/tmp/cache/ + $type になります。
cache 関数で ‘public’ を指定した場合のクリアはこの関数ではできないようです。

結構簡単にキャッシュ処理ができそうです。

Go to Top