技術的Tips

Google Sitesに移行してwiki的にする予定

Facebook

コロコロ仕様を変えてくるので使えなくなってる可能性も高いので注意

アプリをつくってページに登録する手順

  1. app on facebook / tab page の情報を設定
  2. アプリの左下にあるテキストリンク「アプリのプロフィールページを見る」をクリック
  3. プロフィールページの左下のテキストリンク「マイページへ追加」をクリック」
  4. ポップアップ内で設定先を選択

tab page だけにしておくとjsでいいねの状態を取得できない。

アプリ設定でapp on facebookを設定すると取得できるようになる

FB.loginで"b is null"エラー

ポップアップでウィンドウを出そうとしているけど禁止しているとこれになります

Mac OSX


ターミナルに何も表示されなくなった

アプリケーション > ユーティリティ > アクティビティモニタ を起動、画面上部のプルダウンで「すべてのプロセス」を選択し、sudoのプロセスを終了させる。

ターミナルでsudoするため等のパスワードを要求された時にうっかり閉じるボタンでウィンドウを閉じて、再度新規ウィンドウを開くと何も表示されず、入力も受け付けない。
ウィンドウを閉じてもsudoのプロセスが残ってしまっているためターミナルが待ち状態になっているっぽい。
新規ウィンドウだとsudoのパスワード入力を要求しているセッションとは別なので二度とパスワードを入力を受け付けなくなってしまう。

Solr 3.6


テーブルをjoinさせるとレコードが1:nになる場合

1:1の場合はselect文の中でjoinさせてしまえばok
1:nの場合はentity定義を分けてmultiValuedになるようにする。

データインポートハンドラのためのentity要素の設定(RDBから)

4つの属性を設定する。

deltaImportQueryはsolr 1.4以降から。有名な「Apache Solr入門」は1.3を対象としていて書かれていないので注意!!

属性

name 適当な名前。混乱しないようにRDBのテーブル名と同じにするといい

  • pk : テーブルのpkを指定
  • query : フルインポートで実行。インデックス化するデータを取ってくるSQL。親とjoinする場合はWHEREとかで指定する。 "自身の外部キー = ${親entity名.pk}"
  • deltaQuery : 差分インポートで実行。自身のentityのpkと親がいる場合はjoinするための外部キーをselectすればok。更新するデータは取得しなくてよい不思議。
  • daltaImportQuery : 差分インポートで実行。自身のentityの「更新対象カラム」のみをselect。whereで抽出条件を指定(pkとか "WHERE id = ${dataimporter.delta.このentityのpk}" このpkはdeltaQueryでとってきたもの)
  • parentDeltaQuery : 差分インポートで実行。親のテーブルから親のpkを取得する。WHEREでjoinの条件を指定するなどして抽出 "WHERE 親テーブル.キー = ${自身のentity名.外部キー}(ここではdataimporter.deltaが使えない。なぜ・・・。)" ルートのentityでは使わない
  • deletedPkQuery : 差分インポートで実行。インデックスから削除するレコードのpkを取得。削除フラグが立ってるレコードなど

子要素


  • field RDBのカラム名とsolrのフィールド名をマッピングする。selectしてきたものすべてが同じ名称でschemaに定義されていれば設定は省略可能。 column:RDBのカラム名 / name:solrのフィールド名
  • entity 親のentity要素と1:nでjoinさせて、multivaluedのfieldに値を入れる場合には必要。属性や子要素はルートのentityと同じように指定する

コメント