DellサーバーのSATAパッチ

VMware Serverを動かしているDellサーバーがとても調子悪い。32bitのLinuxを新しく仮想サーバーにインストールしなくてはいけないので、何とかしなければいけない。

まずはVMWareのコンソールに接続できない。見てみるといろいろなライブラリがないといわれる。しかたないので、再インストール。

ホストのほうは、iSCSIのディスクにあるので、VMWare Serverが動いているところを再インストールすればいいが、とっても面倒な作業。

その前に以前DELLから送られてきたSATAのパッチを当てなければいけない。説明によると、シーゲートのSATAハードディスクが起動したときに認識できなくなるという障害のパッチらしい。ずっと放っておいた。

パッチを当てて、OSの再インストールで明け方までかかって、今はとても眠いです。

IIS5.0のSSLサーバー証明書の更新

ようやくSSL証明書の更新をおこなった。IIS5.0の場合、そのままサイトに対してSSLサーバー証明書の更新ができないため、作業手順に注意が必要です。

毎年1回だけの作業なので、やり方が忘れてしまいます。失敗すると、また証明書の発行からやり直さないといけないので失敗はできません。

IIS5.0の場合、本番のサイトとは別にSSL更新用のサイトを作って、このサイトでCSRファイルを生成します。CSRを証明書発行会社に送って、証明書を発行してもらいます。この間、SSL更新用のサイトを削除してはいけません。削除すると証明書をインストールできなくなります。

発行された証明書をSSL更新用のサイトにインストールします。最後に本番サイトにSSL更新用のサイトから証明書を置き換えて完了です。

何でこんな面倒な手順なのかは、Microsoftに聞いてください。聞いても答えてはくれないでしょう。

Twitter Weekly Updates for 2009-09-27

Powered by Twitter Tools

CakePHPでpaginate()での検索結果の引き継ぎ

引き続きCakePHPの話し。覚え書きです。

検索結果をリストにして、このリストをページ替えしたり、ある項目でソートしたりしたいということはよくあります。CakePHPではページング処理は、コントローラーでpaginate()に検索条件を与えてあげるだけで実現できます。

しかし、ソートしたり次へリンクを押してページ替えすると、検索条件を忘れてしまうのです。検索条件の引き継ぎはここでも書きましたが、getパラメータの処理を書いてあげなくてはなりません。セレクトメニューや、ラジオボタンは、検索項目に1つにつき1つの値しかありませんのでいいのですが、チェックボックスは複数の値がありますので、すべての項目をパラメータにするのはURLが長くなってしまいます。

最初は、チェックボックスの項目を配列に格納し、シリアライズ化してGETパラメーターに置いてみましたが、GETパラメーターを解析するpassedArgs()がうまく解析してくれませんでした。

そこで、チェックボックスをグループにして、この値をコンマ区切りに変換してからパラメーターに渡してしまいます。しかし、最初に検索条件を入力するページはPUTで各項目が配列で渡してきますので、検索条件を生成する処理を共通にするために、GETで来たパラメータはPUTで来たパラメータに合わせるように、コンマ区切りからPUTパラメーターの配列に変換してあげます。

こんなことをしてあげないと、複数の値を持ったチェックボックスでの検索結果がpaginate()で処理できないのは、CakePHPでの面倒なところです。

PS. 以上の内容を読んでみると、理解できなさそうですね。自分が理解できるだけのメモ書きですね。該当するソースを公開して説明できればいいのですが・・・。

昨日のCakePHPでhasManyでの検索の続き

昨日のCakePHPでhasManyでの検索の続きです。うまくいったと思いましたが、検索結果に重複項目があります。hasManyのモデルにまともにSQLを実行したら重複するのは当たり前ですね。

そこで、pagenate()でページングの処理をしているので、コントローラーのメンバー$pagenateのfieldsに、キーとなる項目にDISTINCTを付けてみる。これで、重複されなくなった。

しかし、新たな問題。検索個数が合わない。こちらもcount(*)になっているところをcount(DISTINCT キー項目)にすればいいのだけど、$pagenateのfieldsからは影響されないようでした。

いろいろ調べてみると、やはりありました。ここです。モデルにpaginateCount()を定義してあげればいいのでした。pagenate()のソースを見ると、モデルにpaginateCount()があるかどうかをチェックして、あればpaginateCount()を実行してくれます。無ければfindCount()を実行します。ここはSQLをゴリゴリ書いて、該当する条件でレコード数を返してあげるようにしました。配列に格納されている条件は次のようにWHERE句に変換できます。

$Db = ConnectionManager::getDataSource($this->useDbConfig);

$where = $Db->conditions($conditions);

これで、重複せずに検索結果を表示できました。

いまいち具体的な説明ではないので、もしご興味ある方はコメントに入れてください。

CakePHPでhasManyのモデルに対して条件式を書く

CakePHPロゴただ今、CakePHPでWebサイトを開発しています。今回は、検索条件を設定して抽出して結果をリストにするという、定型的な検索サイトです。

あるモデルに対して検索条件を与えるのは普通です。CakePHPの場合、belongsToのような外部参照の関係であるモデルにも検索条件を与えても、簡単に抽出してくれます。

しかし、hasManyの関係にあるモデルの項目に検索条件を書いてあげるとSQLを発行しているところでエラーになります。SQLのデバックログによると、hasManyのモデルに対しては、SQLでleft joinを作ってくれません。これで、未定義のテーブルということでSQLエラーになります。

Googleで検索してみると、このように書けばOKと書いている。しかし、これではhasMany以外の関係のモデルを検索してから、hasManyのモデルにフィルターをかけているだけなので、検索結果が違ってくる。

無理矢理SQLを生成してみることもやりましたが、ビューに渡す結果を生成するのが大変なので止めました。

いろいろと調べてみると、ここにありました。後からhasManyのモデルに対してjoinを設定すればいいのです。モデルに対して、beforeFind()を定義してあげることが必要でした。CakePHPのソースを追ってみると、findAllのところでオプションにjoinが使えるように定義されていました。これで無事にhasManyのモデルでも条件式を書くことができました。

すべてのサイトに感謝です。

 

Twitter Weekly Updates for 2009-09-20

  • 本日 和牛カルビ丼
    http://f.hatena.ne.jp/twitter2/20090914131912 #
  • このカルビ丼には愛が感じられない。入っているお客も。 #
  • Androidって、auからいつか出る予定になっているのですね。国内ではドコモだけかと思っていた。 #
  • 検査結果は良好 #
  • 最近電車の中で携帯電話で話している人が多いような気がします。 #
  • 母親のテレビを買い換えないといけない。でも、買い換えた後、チャンネルを変えることができるかが問題。

    「地デジで親孝行運動」 地デジカグッズプレゼントも – ITmedia News via kwout http: #

  • 青山マックは、列の横入りに厳しい。目の前でご婦人がたに横入りされたら、店の人が制止して、自分を入れてくれた。 #
  • 最近はガム中毒になっている。ガムを噛んで頭を集中させているみたい。でも、あごが痛い。 #
  • 海外のサイト。デザインが崩れるとの相談。文字コードがおかしいと思いきや、スタイルシートをローカルのマイドキュメントのディレクトリを指定していた。 #
  • 今日は疲れた。さあ帰ろう。 #
  • 永遠の0 読み終わる #
  • 雨が降ってきました #
  • もうすぐ到着。 #
  • 笑う警官 読み終わる #
  • ただいま渋谷到着 #
  • 銀座線に乗った #
  • 中野坂上
    http://f.hatena.ne.jp/twitter/20090917105655 #
  • ビックカメラにて。そうか。BlacBerryというてもありか。 #
  • Blu-Rayドライブ衝動買い #
  • 新規案件の相談の連絡。eコマースのアジア展開。課金の接続。角度は低そう。 #
  • テーブル構造の変更が今になってきたので、対応が大変。 #
  • ようやくテーブル構造の変更の対応が終わった。これから変更がなければいいが。 #
  • そろそろ帰ります。 #
  • 弥勒の掌 読み終わる #
  • 綱島街道日吉の坂 工事中 #
  • 頭が痛いと体温を測ったら35.5℃。新型インフルの38℃まで、ほど遠かった。よかった。 #
  • 先日購入したブルーレイディスクで一気に写真のファイルをバックアップ中。 #
  • サマーウォーズ 読み終えた。そのまま娘に持って行かれた。 #
  • Mozilla SunbirdでGoogleカレンダーの同期ができた。しかもオフラインでもOK。 #
  • Mozilla Sunbirdはオフラインでは予定を書き込めないようです。でも、参照だけでもいいや。 #
  • Googleリーダーがアクセスエラー? #
  • Mozilla Sunbirdはオフラインで予定を書き込めないのは、Googelカレンダーでした。 #
  • いい加減に寝よう。寝ている内にバックアップが終わっているといいな。現在、ディスクは一勝一敗の五分でです。ネットワーク経由でバックアップしているのが敗因かも。 #
  • #
  • ブルーレイでの写真のバックアップ。調子いい。あと2枚。 #
  • この前買ったプリンタで、ブルーレイディスクのラベルを印刷してみる。付属のソフトを使えば、とっても簡単。 #
  • あと1枚。80Gバイトあった。しかし、ブルーレイでのバックアップが簡単かも。 #
  • バックアップ終わった。ディスクはどこに保管しようか・・。 #
  • 意味のないつぶやきでいいじゃない・・。
    http://www.asahi.com/digital/internet/TKY200909190033.html #
  • 430FM をワッチしながらの仕事です。 #
  • 地元Y150の記念局のアワード完成。Y150の参加はこれだけだったな。 #
  • やっと面倒くさいSQLの処理を伴った新着リスト処理ができた。SQLのコードは汚いから見せられないな。 #

Powered by Twitter Tools

レンタルサーバー会社からの回答がようやくきた。

spamメールが頻繁に届く件。2週間かかってレンタルサーバー会社から回答がありました。遅すぎる!

最初のメールは、

弊社にて、スパムメールが増えるように設定等は行っておりません。恐れ入りますが、スパム対策などをお客様側で行っていただくよう 何卒よろしくお願いいたします。ご確認いただけましたら幸いです。

とのこと。メールサーバーの機能にスパムメールの対策があると明示されているし、以前同じ障害があって連絡したら対応してくれたので、再度問い合わせしました。

すると、

現在も引き続きspamが多く転送されておりますでしょうか。

調査の結果、cpanelの一部バージョンとspamassassinの設定の問題で、spamが正しく判定されていない状態があったようです。

現在は正常にspamの遮断を行っていると思われます。

spam検出ツールのspamsassassinはオープンソースで提供されており、特に海外のspamには強いのですが日本語のメールでは誤判定率が高く、正常なメールまで削除されることを防ぐため比較的spamが通りやすい傾向になっております。

誠に申し訳ございませんが、可能であるならばお客様のクライアント側でのspam対策も併せて行っていただくことをお勧め致します。

との回答がすぐにありました。つまり、やはりspamフィルターの設定の問題であったようです。今回のクレームは2点です。

  • 回答が遅すぎる。2回催促しても音沙汰無し。これはひどい。
  • サポートしているはず機能を、サポートしていないと言い切って話しを終わらせようとした。

spamassassinのフィルターの機能が低いのは諦めて、Thunderbirdのフィルター機能と地道に手作業で振り分けますが、最初の回答はいかがなものでしょう。

Twitter Weekly Updates for 2009-09-13

  • フリーゴルフのコンペ2日目。ただいま出欠確認中。 http://bit.ly/QGLvC #
  • フリーゴルフのコンペスタート。ドタキャンあったけど、なんとかスタート。 #
  • フリーゴルフのコンペ2回戦スタート。今回は波乱です。 #
  • フリーゴルフのコンペ。ただいま決勝戦。 #
  • フリーゴルフのコンペ終了。ご苦労様でした。 #
  • ウォーキングから戻ってきました。歩きながら交信しようとしようとしたら、呼び出す前におしまいにされてしまった。残念。 #
  • 携帯電話電池切れ。充電中。 #
  • 禁断の牛すじカレー
    http://f.hatena.ne.jp/twitter2/20090908131525 #
  • 食後のウォーキングは続く。ただいま青山墓地
    http://f.hatena.ne.jp/twitter2/20090908132626 #
  • さぁ、帰るか。 #
  • 今、渋谷。急行に乗って帰ります。 #
  • 交差点待ちしてたら、バスが行ってしまった。 #
  • ウォーキングから戻ってきました。今日は出遅れ。橋の上で1局と交信。風が強い。 #
  • 昼飯はレバニラ。おいしい。
    http://f.hatena.ne.jp/twitter2/20090909133624 #
  • 検索画面が2つできた。後は大物一つ。 #
  • #
  • 今日は青山オフィス #
  • なぜか田園調布で乗り換え #
  • 浅田次郎 月下の恋人 読み終わる #
  • 表参道到着 #
  • 青山オフィスに到着。 #
  • 新しいiPod nanoは、静止画が撮れないの? 動画のみ? #
  • 今動いているサイトに影響を与えないで改造しないのをどうしようか? 共通定義の宣言場所など、何ていい加減なんだ。 #
  • マスターファイルのXML対応。できた。 #
  • 昼食はのり弁 #
  • のり弁というか、何でものっけ弁? 脂肪が多くて失敗かも。でも、おいしく感じるのが悲しい・・・。 #
  • サンプルで提供されたXMLファイルのインポートは通った。あとは、細かくテストしていく。 #
  • 今日はお仕事おしまい。 #
  • ウォーキングから帰ってきた。今日は調子よかったので2周。歩きながらの交信は1局でした。 #
  • 東京電力の代理店と称する会社からエコキュートのセールス。断っても電話くる。東京電力にクレーム入れなくてはいけないか。 #
  • 7MのCQに応答するが、すべて撃沈。 #
  • さあ、部屋を片付けよう。twitterで宣言すれば、やらなければいけないか・・・。 #
  • ただいまトレッサ #
  • 昼食
    http://f.hatena.ne.jp/twitter2/20090913123935 #

Powered by Twitter Tools

自分は7MHzでは交信できないようだ。

今のコンデションでは、なかなかHFではハイバンドでの交信は難しいようです。そこで賑やかな7MでCQに応答してみました。

結果は、全くとってくれない。まあ、自分の設備では難しいのはわかりますが。

ただ、7MではCQの応答は、コールサインのおしまい3文字だけなんでしょうか? 例えば、私の場合であればXDUだけ応答して、全部のコールサインは言わない。CQを出す方も、応答聞くのも3文字の短い間だけしか聞かないようです。わたしがまともにコールサインを言い終わったときには、すでに交信が始まっている。お互いにお仲間らしく、おしまい3文字で交信が成立しているようです。

地元の記念局もそのような運用でした。3文字応答して、再度全部言い直している。

今月のCQ ham radioの別冊付録「アマチュア無線の運用倫理と運用手順 Vol.2」では、すべてのコールサインを言えとしつこいほど書かれていますが、これは海の向こうの話しでしょうか?

ということで、あまり7MHzには出たくないと思いました。つまり、今はHFはおあずけです。