5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

カテゴリー: システム関連

  • CakePHP2のテストで、$defaultのDBを見に行ってしまう話し

    CakePHP2でテストするときに、/app/Config/database.phpの$testではなくて$defaultで指定したDBを見に行ってしまいます。こちらの対処方法のメモ。

    テーブルにtext型の項目があると、memoryではなくてMyISAMでテストのテーブルを自動的に作りに行きます。この辺りが関係しているかもしれません。こちらはbakeすると、Fixtureの$fieldsの中にtableParametersに設定されています。

    テストの途中でexit()して上げると、$testのほうのDBにテストのためのテーブルをFixtureからcreate tableしてくれていることを確認できます。しかし、テストケースでは、$defaultのほうのDBを見に行きます。

    CakePHP2のCookbookに書いているように、Fixtureに

    public $useDbConfig = 'test';

    と書いてもダメでした。

    public $import = array('table' => 'articles', 'connection' => 'test');

    のようにしてもダメ。

    結局は、

    class ArticleTestCase extends CakeTestCase {
        public $fixtures = array('app.Article');
        public function setUp() {
            parent::setUp();
            $this->Article = ClassRegistry::init('Article');
            $this->Article->useDbConfig = 'test';
        }

    のように無理矢理モデルの$userDbConfigにtestをして対応しました。

    もっと良い方法があるのでしょうね。これだと、joinされたFixtureのテーブルデータだと見つからないのてテストできないとか問題が残ります。

    マニュアルに書いていないことは何とか対応しなければいけないのは大変です。

    著:山田祥寛
    ¥3,366 (2025/07/22 15:38時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/07/22 15:38時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/07/22 15:38時点 | Amazon調べ)

    続きはこちらから

  • CakePHP2で管理者用ページだけの認証を行う話し

    ユーザー認証と管理者認証を別のモデルで分けたいときのメモ。

    管理者用の認証をAppController.phpで定義してしまう。isAdmin()はadmin_***のアクションを呼んだかどうかの判定。

    app/Controller/AppController.php

    class AppController extends Controller {
      public $components = array('Auth');
    
      public function beforeFilter() {
        if ($this->isAdmin()) {
          $this->Auth->authenticate = array(
          'Form' => array(
            'userModel' => 'User', //ユーザー情報のモデル
            ),
          );
    
          $this->Auth->loginAction = '/admin/users/login'; //ログインを行なうaction
          $this->Auth->loginRedirect = '/admin/'; //ログイン後のページ
          $this->Auth->logoutRedirect = '/admin/'; //ログアウト後のページ
          $this->Auth->authError = 'ログインしてください。';
    
        } else {
          $this->Auth->allow('*');
        }
      }
    }

    大分はっしょっているけど。こんな感じ。

    あとは、ユーザー認証したいコントローラーでAuthコンポーネントを定義しておく。

    著:山田祥寛
    ¥3,366 (2025/07/22 15:38時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/07/22 15:38時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/07/22 15:38時点 | Amazon調べ)
  • XAMPP Apacheが起動できないときのメモの話し

    XAMPPでイントールしたApacheが起動できないときのメモを残しておきます。

    原因はポートの80番が他で使われてしまっていること。80番を使うアプリケーションとしては、SkypeとかTermViewerとかありますが、今回は違いました。

    netstat -aon で80番を使っているプロセスを調べると、アプリケーションではなくてPID4のNT Kernel & systemが使っていました。

    これは止めてはいけませんので、調べていくと、WinRMというサービスが80番を使っているので停止。他のところでは、違うサービスを停止と書いてあります。ユーザーによっては違うみたい。

    取りあえず、現在は無事にApacheが起動できるようになりました。使用OSはWindows7です。

    著:山田祥寛
    ¥3,366 (2025/07/22 15:38時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/07/22 15:38時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/07/22 15:38時点 | Amazon調べ)
  • コマンドプロンプトでUTF-8のサイトのテストしたいだけなのに、という話し

    コマンドプロンプトでUTF-8のサイトのテストしたいだけなのに。

    コードページをUTF-8にしたら、案の定文字化けする。プロパティのフォントには、MSゴシックが出てこない。いろいろGoogleさんに聞いてみると、以下のようなページが出てきた。

    コマンドプロンプトでUTF-8の文字を表示する

    Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説 (perlzemi.com)

    コードページを変更したら、日本語フォントに二度と変更できなくなる・・・。

    すご過ぎる仕様。MS様、お願いですから何とかしてください。

    仕方がないので、心の目で文字化け文字を読んでいます。

  • CakePHPでテーブルに保存できないときの覚え書きの話し

    自分への覚え書きです。

    CakePHPでテーブルに保存できないときのチェックポイント。

    バリデートが通っていないかチェックしろ。

    まじめにモデルにバリデートの設定をしていたらはまりました。Model::sate()の2番目の引数は、バリデートをするかの引数です。falseにすればバリデートを無視します。CakePHPのモデルのソースを読んでいたら見つけました。

    ソースでは以下のような感じ。

    $this->Model->id = $id;
    
    $Model['Model']['flg'] = '9';
    $Model['Model']['mail'] = 'xxxxxxx_' . $user_mail;
    $Model['Model']['url'] = 'xxxxxxx_' . $user_url;
    
    // mailとurlはモデルのバリデートにしたがっていないので、バリデーションはOFFにする。
    if ($this->Model->save($Model, false)) {
    
    }
    著:山田祥寛
    ¥3,366 (2025/07/22 15:38時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/07/22 15:38時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/07/22 15:38時点 | Amazon調べ)
  • CakePHPのビューを変数に格納する話し

    メールの本文をビューを使って生成したときがあります。PHPのストリングで結合してなんてやりたくありません。後で修正が面倒。

    CakePHPの1.3のときは、

    $this->output_layout = 'mail';
    
    // バッファリング開始
    ob_start();
    
    // Viewアクションでレンダリングする。
    $this->render('mail_view');
    
    // レンダリングした結果を取得する。
    $html = ob_get_clean();

    なんてob_start()とrender()でやっていたけど、CakePHPが2になってからrender()がレンダリング結果を返さなくなったようだ。

    そこで、viewのソースファイルを読んで、次のように対応した。

    // Viewアクションでレンダリングする。
    $response = $this->render('mail_view', 'email');
    
    // レンダリングした結果を取得する。
    $html = $response->__toString();

    なんだか__toString()とか内部のメソッドを呼んでいるが、もっとよい方法があるのだろうか?

    著:山田祥寛
    ¥3,366 (2025/07/22 15:38時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/07/22 15:38時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/07/22 15:38時点 | Amazon調べ)
  • テーマをTwenty Elevenにしてみた話し

    WordPress

    このブログのテーマをWordPress謹製のTwenty Elevenにしてみました。見た目はとてもシンプルになりましたが、中身は全然シンプルではありません。

    翻訳ファイル(ja.po)を取ってきます。WordPressの翻訳ファイルに関しては、ここのサイトをご覧ください。気に入らない翻訳はPoeditで修正してしまいます。Poeditは保存すればpoファイルから、翻訳バイナリのja.moファイルを作ってくれますので、ja.moをアップすればOKです。

    行間やインデントも気に入らなければCSSファイルを変更してしまいます。ブラウザがChromeの場合はF12を押すと楽チンに修正箇所がわかります。WordPressでは外観のテーマ編集で、FTPなしに直接CSSファイルを編集できます。タイトルの文字サイズも変更してしまいます。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/07/27 11:18時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

  • Chromeがエラー3で更新できない。解決?

    ChromeのロゴChromeがエラー3で更新できない。と書きましたが、解決したようです。

    何回かアンインストール、インストールしましたがダメ。ベータ版をインストールしても同じ症状です。

    Googleのヘルプにあったような対応をしてもダメ。諦めかけていました。

    しかたないので、CCleanerでレジストリの整理をしてみました。すると今度は正常に更新サーバーにアクセスできました。エラーにはならなくなりました。

    おかしなレジストリを書き込まれてしまったようです。これでChromeの障害は解決できたかな??

  • Chromeがエラー3で更新できない話し

    Google Chrome

    Chromeは自動的に更新してくれるので、どんどん新しく勝手にアップデートしてくれます。これはこれでいいのですが、手動でアップデートするには、スパナの設定アイコンから「Google Chromeについて」を選択すれば、アップデートが始まります。

    しかし、今は

    更新サーバーにアクセスできません(エラー:3)

    になってアップデートできません。

    いろいろ調べてみると、Chromeを再インストールしろとか、アンチウィルスソフトが悪さしているとか、出てきます。再インストールしても、使っているウィルスバスターの例外設定してもエラーのままです。

    さて、どうしたものか。原因がわからないので、今もエラーのままで放って置いています。

    そう言えば、IEもアップデートで失敗しているので、IE8のままです。IE9にアップデートできていません。根本的にPCの問題でしょうか・・・。

    著:戸根 勤
    ¥2,587 (2025/07/24 16:21時点 | Amazon調べ)
    著:Gene
    ¥1,663 (2025/07/22 22:19時点 | Amazon調べ)
  • X-Liteソフトフォンでひかり電話の接続をした話し

    せっかくひかり電話を契約しているので、PCから電話をかけるように設定しました。作業しながら電話で応答するのはヘッドセットが楽。理由はそれだけ。

    以前はAsteriskでSIPサーバーを立ててなんてことをしていましたが、今は簡単にNTTからレンタルしてもらっているRT-200NEに内線電話の登録しています。

    インストールしたソフトフォンのアプリケーションはX-Lite。4になって見栄えは普通のソフトフォンになっています。設定は、内線番号とサーバーのIPアドレス、パスワードを設定するだけ。この辺は他のサイトを参照(ひかり電話 X-Liteで検索)のこと。

    PCのサウンド設定をうまくしてあげればいいのですが、たまに自分の声が聞こえてしまうとか、サウンドカード(チップ?)を選ぶみたい。ロジクールのUSBヘッドセットを使っているが、今のところ問題は発生していない。

    ソフトフォンのアプリケーションは、本来ならばNTTのひかりソフトフォンを使えばいいのだけど、どういう理由かわからないがフレッツ光を対応してくれない。ひかりソフトフォンはネクストかフレッツ光ライトしか対応していない。IPv6も、昔のフレッツ光には対応してくれないので、ネクストに乗り換えしなければいけないのか。工事料金が無料になったらネクストに切り替えよう。

    パナソニック(Panasonic)
    ¥11,010 (2025/07/24 11:16時点 | Amazon調べ)

    私の電話機を選ぶ基準は、まずはカールコードがないこと。受話器がワイアレスだとコードのねじれを気にせずに楽です。後は、着信拒否の登録件数の多さでしょうか。50件程度でしたら、すぐに登録が一杯になります。100件以上着信拒否ができる電話機を選びます。