Home » ブログ
検索・リンク
ブログ  ブログ以外
最近の記事
Amazon
2009 年 2 月 14 日

MODxでタグつきチャンクを大量に1ページに作成(sitemap等)したらレスポンス悪化

MODx(0.961p2)で2,000ページぐらいのドキュメントを作成した。
sitemap.xmlをDiitoで作成したけど、処理が終わらない。
DiitoでSQLを発行するまでの時間がかかっているようだ。
Diitoを使用しないで、独自の処理を行う。
これでCeleron D 320(2.40GHz)(メモリ1G)で
1分30秒かかっていた処理が20秒くらいになった。

ページが4,000ページぐらいに増えた。
処理が20秒から30秒かかるようになった。
sitemap.xmlの容量は1Mバイトにも達していない。
これはおかしいと思いソースを調べた。
sitemap.xmlを作成はチャンクを使用している。
このチャンクにタグを使用していたのが悪さをしている。(下記はチェンクの一部)

<loc>[(site_url)]xxxxx</loc>

チャンクは4,000ページ分を作成してoutputに纏められる。
纏められた後に、4,000ある[(site_url)]を文字列に変換している。(多分ひとつひとつ)
さすがにメモリを使用しているとはいえ、バッフォーを取り直しているのだから数あれば遅くなる。
結局、チェンクにはタグを使わないようにプレイスホルダを設定した。
処理は30秒から8秒と高速に終了するようになった。
(現在のMODx(0.963)がこのへんの改善がされているのかわからない。)

又、telnet(port80)でGETしてsitemapのテストをしていた時に思ったこと。
sitemapのドキュメントのキャッシュ無効にしていたのにも関わらず、site_urlがキャッシュされるようだ。
テストした時の手順は以下
1.ドキュメントのキャッシュをクリアする。
2.telnetでGETする。HOSTをaaa.jpと指定する。site_urlにはhttp://aaa.jpが入る。
3.HOSTを指定しないでGET。site_urlがhttp://aaa.jpと出力。(キャッシュされっぱなし。)
内側からのテストだったので、外からはこのようにならないかもしれない。
用心のため、config.inc.phpにsite_urlを固定で設定してしまった。

2009 年 2 月 9 日

トラックバックスパムに泣く

最近、海外からのトラックバックスパムが多い。
同じ、IPで何回も訪問する。
最初に.htaccesで拒否設定

deny from xxx.y.zz.               #xxx.y.zzを拒否

これをやってもルートをGETしにくるので
httpd.confで全体拒否

deny from xxx.y.zz.               #xxx.y.zzを拒否

これでも訪問してくる。
httpdサーバのログに残るので最後の手段はiptables。

iptables -I INPUT -s xxx.y.zz.0/24 -j DROP

レスポンスも返さないはず...
※うちのルータで設定できれば...。そのうちなんとかしたい。
無駄だとわかってどうして行うのかな?。

2009 年 2 月 2 日

MODxで大量ドキュメントを作成。Wayfinder、Dittoのパフォーマンスに泣く。

MODx(0.961p2)で2000件ぐらいのドキュメントを作成した。
親フォルダの下の2000件ぐらいのドキュメントがぶら下がっているイメージ。
Wayfinder(2.0)でメニューを表示させる。
しかし、2000件を表示させるのは無理なので親フォルダ1件だけ表示させる。
Webの画面を開く。ぜんぜん帰ってこない。httpdでcpu率の100%nearが永遠と続く。
Wayfinderのソースをみる。なんだこりゃ!
SQLを以下のように吐き出している。

SELECT DISTINCT sc.id,
sc.menutitle,
sc.pagetitle,
sc.introtext,
sc.menuindex,
sc.published,
sc.hidemenu,
sc.parent,
sc.isfolder,
sc.description,
sc.alias,
sc.longtitle,
sc.type,if(sc.type='reference',sc.content,'') as content,
sc.template,
sc.link_attributes FROM `modxshopdb`.`modx_site_content` sc LEFT JOIN
`modxshopdb`.`modx_document_groups` dg ON dg.document = sc.id
WHERE sc.published=1 AND sc.deleted=0 AND (sc.privateweb=0) AND
sc.hidemenu=0 AND
sc.id IN (95,
2065,〜   → 2000件

このINの要素(小ドキュメント)を作成するのに時間をかけ、さらにここでも時間がかかるSQLを発行している。
結局、Wayfinderは使わず、自分でスニペットを作成してメニューを表示。(汎用にはしていなので当然速い)
ここを解決したら、次はDitto(2.02)。sitemapを作成する処理を作っていたが、これもWayfinderと同じような処理。
超遅い。podがアクセスしたらタイムアウトしてしまう。ここもDittoを諦め、自前で作成。
MODxって詳細解説書がないので困ったものだ。スニペットのソースまでは見ていられない。

2009 年 1 月 27 日

fedora10(x86_64)のopenoffice.org3の代わりにGO-ooをいれる

fedora10(x86_64)のopenoffice.org3の表計算(Calc)を使用しているがパフォーマンスが悪くて使いづらい。
javaのswingを使っていれば、こんなものなのかと諦めていたのだが、
いろいろ調べていたら、GO-ooという同種のoffice系を発見。Sunには認められていないが、パフォーマンスは良いらしい。
http://slayachronicles.blogspot.com/2008/11/installing-go-oo-variant-of.htmlを参考にi386とx86_64へGO-ooをインストールしてみた。Calcしか使用していないが確かに、少し軽い。操作もM系に近い部分がある。

  1. 既存のopenofficeのアンインストール
    共存させて動作させる方法もあるのだろうが、ここでは、既存のopenofficeをアンインストールする。

    # yum remove openoffice*
  2. インストール(i386)
    GO-ooからリポジトリをダウンロードしインストールする。

    # rpm -ivh GoOo-release-0.0.3-0.noarch.rpm
  3. 既存のリポジトリのopenofficeを無効にする
    /etc/yum.repos.dのfedora.repoとfedora-updates.repoに以下を追加する

    fedora.repo
    [fedora]
    exclude= openoffice →追加
    fedora-updates.repo
    [updates]
    exclude= openoffice →追加
  4. GO-ooをインストールする。
    ソフトウェアの追加と削除でReflash Package listを行い、パッケージリストを最新にする。

    # yum install openoffice.org3 openoffice.org3.0-redhat-menus* openoffice.org3-writer* openoffice.org3-calc* openoffice.org3-impress* openoffice.org3-base* openoffice.org3-ja*
     
  5. インストール(x86_64)
    リポジトリを

    #baseurl = http://go-oo.mirrorbrain.org/stable/linux-i586/
    baseurl = http://go-oo.mirrorbrain.org/stable/linux-x86_64/

    に変更して、あとはi386と同じ。

/opt/openoffice.org3/program/soffice.bin: error while loading shared libraries: libuno_sal.so.3: wrong ELF class: ELFCLASS32
 

のエラーの場合は、x86_64でopenoffice.org-ureがi386になっているのでアンインストールしてやり直すと良い。

no suitable windowing system found, exiting

のエラーの場合は、officeのパッケージの同期があっていないのだろう。すべてアンインストールをし直したほうが良い。
※残念ながらsrcからmakeし直しは途中で諦めた。かなりのdevelのパッケージが必要だ。dmakeで挫折。

2009 年 1 月 22 日

fedora10のgimpにScript-fuを追加する

fedora10(x86_64)のgimp(2.6.3)にScript-fuを追加してみた。
linuxのgimpをキーワードでサイトを検索したが、Script-fu関係の日本サイトがなかなか見つからない。
しかたないので、windows用のgimp2を使おうからgimpのScript-fuをダウンロードした。
インストール場所はホームフォルダー。(下記参照)
これなら失敗してもすぐ消せる。

Script-fuのメニューが追加される

追加ロゴ

他のサイトからアクアをインストール

スクリプトならwindows用でもOKだ。
さすがプラグインはexeファイルなので無理。
ここはlinuxサイトから落とすしかないようだ。

2009 年 1 月 16 日

fedora10(x86_64)のupdateでxine-lib-1.1.16-1.fc10.x86_64の依存関係エラー

2009/1/16にfedora10のupdateの通知がきたので、updateを実施。
xineの依存関係のエラーがでる。

Transaction Check Error:
file /usr/share/locale/cs/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/de/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/eo/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/es/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/eu/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/fr/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/it/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/pl/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/pt_BR/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/sk/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/locale/tr/LC_MESSAGES/libxine1.mo conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
file /usr/share/man/man5/xine.5.gz conflicts between attempted installs of xine-lib-1.1.15-3.fc10.i386 and xine-lib-1.1.16-1.fc10.x86_64
	 

今回はgimpが2.6.4になったようなので、依存関係のエラー以外のupdateは全部取り込みたい。

# yum update --exclude=xine*

うまく取りこめたので再度updateをチェック

# yum check-update
xine-lib.x86_64                            1.1.16-1.fc10                 updates
xine-lib-pulseaudio.x86_64                 1.1.16-1.fc10                 updates

最初に見えた依存関係のエラーからi386関係の依存関係のエラーか

# yum update --exclude=*.i386 --enablerepo=updates-testing
--> Finished Dependency Resolution
xine-lib-extras-freeworld-1.1.15-4.fc10.x86_64 from installed has depsolving problems
--> Missing Dependency: xine-lib(plugin-abi) = 1.24 is needed by package xine-lib-extras-freeworld-1.1.15-4.fc10.x86_64 (installed)
Error: Missing Dependency: xine-lib(plugin-abi) = 1.24 is needed by package xine-lib-extras-freeworld-1.1.15-4.fc10.x86_64 (installed)
	 

新しいのがUPするまで、しばらく待つしかないみたい。

2009 年 1 月 12 日

fedora10にwacomのタブレットBambooFun(CTE-450)をいれる

fedora10にwacomのUSB接続のタブレットBambooFun(CTE-450)をさしてみた。
何もしていないのに、ペンが動作する。
よくみるとLinuxWacomがデフォルトでインストールされていて、しかもデバイスとして認識がされているようだ。
しかも今まではxorg.confにwacomの設定をしないと動作しなかったのだが、設定なしでもペンだけは動く。
残念ながらパッドはタッチホイールのみしか動かない。
パッドが動作するよう、xsetwacomでファンクションを設定してパッドを動作させた。
しかし、切替器等を使用してUSB機器の変化(抜き差し)があると動作しなくなる。
これを解決するために、今まで同様にwdaemonを導入した。
最終的には今までと同じ設定をしなくてはいけない。
※やるべきこと

  1. wdaemonのインストール
  2. xorg.confの修正
  3. xsetwacomの設定をセッションに登録
    (xsetwacomの設定がわからない場合は、wacomcplで確認)

上記詳細は、本文のwacom_fedora10を参照

2009 年 1 月 8 日

fedora10のnpviewer.binでカウントしぱっなしのSElinuxエラーがでる。なんだこりゃ!

fedora10(x86_64)になってからnpviewer.binがcpuを使いぱっなし。
おまけにSElinuxのエラーまででる。これがカウントしぱっなし。
他のfedora10(x86_64)のPCまで同様にエラーになるから、うちだけじゃないんだな。

# setsebool -P allow_unconfined_mmap_low 1

をするが、エラーのカウントは止まらない。結局、こんなことで再起動するまいと、ハングしたSElinuxトラブルシューターをkillしてしまった。
topで見ると相変わらず、cpu食いまくっている。

どうしたらよいのだろう!。ちょっと手をいれたんだけど、npviewer.binがゾンビになってしまって結局ぼつ。
CPUファンがぶんぶんなってうるさいし...。

2009 年 1 月 4 日

MODxでPHPコードで作成したスニペットからスニペット、チャンクを呼び出すrunSnippet、getChunk、parseChunk。

MODxでPHPコードで作成したスニペットの中からからスニペットを呼び出したり、チャンクを呼び出す方法を調べていてわかったことを以下に示す。

スニペットの呼び出し

runSnippet($snippetName, $params= array ())

イメージは以下

modx->runSnippet('snippet-name, array('param1'=>'value1', 'param2'=>'value2'));
 

param1、param2が引数でvalue1、value2がその値である。

チャンクの呼び出し

$chunk = $modx->getChunk('chunk-name')

※チャンクの場合はプレイスフォルダを使用することが多いので変数の受け渡しには呼び出す前にsetPlaceholderで変数を設定する。$chunkにチャンクからの出力が入る。

一覧を表示したい場合は以下。

parseChunk($chunkName, $chunkArr, $prefix='[[+', $suffix=']]')

イメージは以下

$data = array();
for($i=0;$i<$tot;$i++){
  $chunkArr = array(
                 'parm1' => 'value1',
                 'parm2' => 'value2',);
  $data[$i+1] = $modx->parseChunk($chunkName, $chunkArr, '[+', '+]');
}

※$dataにチャンクからの出力が入る。
MODxってAPIの解説本がないのでさびしい。ネットで探すのも疲れる。
MODx特有のページャーが発見できない。ないのかも?。(pearを使うしかないか?)

2008 年 12 月 31 日

MODxで「自動転送がループしています」が出てしまった。

MODxでフレンドリURLを設定していたのだが、フレンドリURLをはずしたら
「自動転送がループしています」というエラーが出てしまう。
しかも特定のページのみ。

Cookie、キャッシュのクリアや.htaccessをみても特におかしいところはわからない。
よくよく調べてみたら「SEO Strict URLs」のプラグインを使用していた。
とりあえず停止してみた。

表示されるようになった。
ひとつ勉強になった。

△ページトップ

Google
ページ
最近のブログ
アーカイブ
カテゴリー
最近のコメント
最近のトラックバック
    No Responses.