5丁目通信(仮称)

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

投稿者: muneando

  • CakePHPのpaginateの最適化の話し

    ページングが簡単にできてしまうCakePHPのpaginateはとても便利です。パラメーターをちょっと設定してあげるだけなので、誰でも使いたくなるはず。

    しかし、このpaginateには、大きな落とし穴があります。いくつものアソシエーションを設定されているモデルに対してpaginateを使うと、とても遅いのです。

    これはpaginateだけではなくfindAllでも言えること。何も考えずに使うと、結果が返ってこないのです。

    デバッグレベルを3にするとわかるのですが、大量にSQLが生成されます。この辺りをきちんとチューニングしてあげないといけません。

    paginateの最適化を調べましたが、なかなか検索にひっかかりません。仕方ないので、試行錯誤。結局は以下の通り。

    必要のないアソシエーションは実行する前に削除しておく。モデルクラスで最初に$hasManyを定義しますが、このままですと勝手にそのモデルへの抽出のためのSQLを発行してくれます。paginateのfieldsオプションに、抽出したい項目を並べておけば、それだけをSQL一つで抽出してくれるかと思っていましたが、これは大間違え。$hasManyに定義されているモデルに対して1レコードづつ改めてSQLを生成します。

    あと、アソシエーションが3つになると、例えばA->B->Cと各モデルがhasMany,belongsToのアソシエーションを定義されているとすると、Aに対してpaginateをすると、A->Bで参照されたSQLを発行して、その後各レコードでCを参照するSQLが発行されてしまいます。したがって、Cがあまり大きなテーブルではなくて、ほとんど更新がないようなテーブルだと、データを配列に格納して参照させたほうがいいかもしれません。

    とにかく、CakePHPのpaginateやfindAllは、余計なSQLを発行してくれます。いかに無駄なSQLを削除するかがパフォーマンスの分かれ目です。

    今回、以上の方法でCakePHPから発行しているSQLの数を一桁以上減らすことで、paginateのパフォーマンスをあげました。一番のCakePHPのチューニング方法は、core.phpでデバッグレベルを3にして表示されるデバッグ情報のSQLダンプを見ながら調整していくことをお勧めします。

  • Windows7でのトラブル

    Windows7 64bitを使ってのトラブルは、あまりないようですが、自分でわかっているのは次の2件。

    • リモートデスクトップ接続でWindowsVistaから切断したときに、WindowsVista側で画面の解像度が変わってしまう。
    • Windows Live WriterのAmazonアフリエイトリンクを作成してくれるプラグイン「Amazon Associate JP plugin」で商品を探しに行くとエラーになる。
    • キヤノンの古いPIXUS MP730というプリンタをプリンタサーバー経由だと双方向通信できない。ただし、PIXUS MP730がプリンタサーバー経由で印刷できるだけましか。

    あまり、大きな影響はないですが、ただ面倒なだけです。

  • USBメモリにUbuntuをインストールした話し

    Windows7を買うついでに、USBメモリを買ってしまった。買ったのは、なるべく小さいUSBメモリ。つけっぱなしにしてもいいように、出っぱりが少ないもの。

    買ったのは、プリンストンのUSBメモリ。このUSBメモリにUbuntuをインストールします。

    最初は、usb-creator.exeを使えばUSBメモリにUbuntuをインストールできると書いてあったが、UbuntuのISOイメージには見あたらない。

    そこで、UNetbootinというソフトを使って、ISOイメージファイルからUSBメモリに転送。とても簡単。ブートCDを作る必要もない。

    しかし、Ubuntuの設定の保存はどうやるの? ブートするたびに毎回設定を忘れてしまうのですが・・・。基本を理解していないのでした。

    そういえばプリンストンのUSBメモリですが、USBメモリといってもただのUSBメモリではありません。メモリ自体がmicroSDなのです。つまり、microSD付きのUSBメモリアダプタなのです。したがって、もっとmicroSDが安くなったら差し替えることができるのです。まあ、microSD自体は小さいので、そんなに差し替えすることはないかもしれませんが・・・。

  • Windows7 をインストールした話し

    今日は、渋谷のビックカメラによって、Windows7 Professionalを買って帰りました。

    早速、インストールです。もちろん64ビットです。せっかくメモリが4GBありますので。

    Windows7のRCが入っている領域にインストールします。今回は新規インストールです。

    XPのことは何も聞かれません。問題なくあっさりインストール完了です。何もトラブルがないのは逆に怖いです。

    アプリケーションは、

    をインストールしました。アンチウイルスソフトは、今回初めて

    を入れました。データはすべて共有あるいは分散していますので、データの移行はしなくていいから、とても簡単です。以上、2時間くらいの作業です。

    マイクロソフト
    ¥14,900 (2025/03/24 11:53時点 | Amazon調べ)
    マイクロソフト
    ¥21,490 (2025/03/21 12:50時点 | Amazon調べ)

    自作PC用に一番左のWindows11のパッケージを実際に購入しましたが、問題なくインストールできました。Windowsは使うPCの分だけ正しくライセンスを購入しましょう。

  • QSLカード到着

    JARLビューロからQSLカードが来ました。今回は多いです。

    オール神奈川コンテストとか6m AND DOWNコンテストなどコンテストがあったことと、5月6月のコンディションが良かった時期の交信のおかげかもしれません。

    ハムログで受領の処理をしました。こちらから先月分までのカードを送らなければいけませんね。

  • Eclipse-PDTを上書きインストールしたらプラグインが無効になる話し

    先ほどの記事のように、Eclipse-PDTを上書きインストールしたらプラグインが無効になってしまった。

    とりあえずの必須のプラグインは、

    の2つ。再インストールしようにも、うまくいかない。

    Clay Database Modelingは2.0になっていて、旧バージョンのアップデートサイトがクローズされている。旧バージョンのライセンスは購入しているが、開発元のアズーリによると、旧バージョンは新しいバージョンにアップデートしろとのこと。しかし、旧バージョンからのバージョンアップはなし。しかもライセンス料は80,000円也。機能とコストが全く見合わないのでアップデートはやめておく。別のデータベースモデリングのプラグインを探さなければいけない。

    プラグインを有効にどうしてもできないので、しかたないので再インストールをしなければいけない。なにげにアップデートしたら、こんな羽目になった。残念。

    著:山田祥寛
    ¥3,366 (2025/03/27 13:40時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/27 13:40時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/19 11:03時点 | Amazon調べ)
  • Eclipse-PDTをアップデートしたらエラーになる話し

    Eclipse-PDTを「Help」ー「Check for Updates」からアップデートしたら、”An error occurred.・・・”とエラーで起動できなくなってしまった。

    eclipse.iniを書き換えたり、削除したりしてもダメだった。あとjavaをアップデートしても起動できない。

    最後の手段で最新のEclipse-PDTを上書きインストールしたら、何事もなく起動できた。そんなものか・・・。

    続きはこちらから

    著:山田祥寛
    ¥3,366 (2025/03/27 13:40時点 | Amazon調べ)
    著:松浦 健一郎, 著:司 ゆき
    ¥2,574 (2025/03/27 13:40時点 | Amazon調べ)
    著:谷藤賢一, 著:徳丸浩
    ¥2,750 (2025/03/19 11:03時点 | Amazon調べ)
  • 叔父の葬式にいってきた話し

    昨日、叔父の葬式から戻りました。一晩、線香守りをしたので寝不足です。

    従兄弟が8人全員集まりました。私のその中で一番年下です。いつまでの子ども扱いになります。上下関係がハッキリしているので、何やかんやとパシリになります。

    といいながらも、母のことなど、いろいろ気遣ってくれますので、ありがたい従兄弟たちです。こんなこと以外で会いたいものです。

  • 叔父のお通夜で岐阜へ

    母方の叔父が亡くなり、岐阜(東濃)に行ってきます。

    叔父はとても楽しく愉快な人でした。今の時期は毎年送ったもらったほろほろの栗きんとんが楽しみでした。

    とても寂しくなります。

  • 第21回電信電話記念日コンテストに参加

    第21回電信電話記念日コンテストに参加しました。忘れていたので、21:00からのスタート。このコンテストは10局以上の交信でプレゼントの抽選権がもらえます。

    たまたま事務局と交信できたので、ルールの確認をしました。丁寧に教えていただきました。

    がんばって9局まで交信。しかし、あと1局が交信できない。しかたないので(?)、CQを出しました。CQ出すこと15分、ようやく交信できて10局。あとは、30分ほどCQ出しましたが、4局ほどお相手いただきました。疲れたー。16局の交信で終了です。

    早速ログを提出して、ハムログにもログを取り込んで、コンテストはおしまいです。