2024年11月21日(木) 18:36 JST

データベースを吹き飛ばせ!

  • 2006年5月27日(土) 10:35 JST
  • 投稿者:
  • 表示回数 4,300
Geeklog 先ほど XREA でデータベース関係の設定をいじっていたら,うっかりこのサイトのデータが入ったデータベースを初期化してしまい,サイトが吹き飛んだ^^; しかも自分のサイトに限って,バックアップを取っていない。個人が趣味でやっているサイトだからいいようなものの,一瞬冷えた。さいわい,テンプレートやコードの変更はそのまま残っているので,やり直せる。とはいえ...

テストサイトの RSS フィードの出力が変

  • 2006年4月14日(金) 08:39 JST
  • 投稿者:
  • 表示回数 4,449
Geeklog ファイル名を index.xml にすると時々ファイルサイズが 0 になる現象が起きる。さらにヘッダ中に RSS auto-discovery 用のフィールドが出力されない。

エラーメッセージを手がかりに GREP してみると,lib-common.php の3443行目で RSSフィードを読みに行って失敗したときのメッセージ。読みに行くときに UA に Geeklog/1.4.0sr2 をセットしていくのだが,これが Bad Behavior にはねられているのかも。(追記:この考えははずれだった)

ヘッダ中に出力されないのは,RSSフィードの編集で「この話題のタイトルをリンクする」という項目で「全て」を選択していないため。英語では Header-link in topic なので,「次の話題へのリンクをヘッダに含める」くらいか。全てを選択すれば,常に RSS auto-discovery のフィールドを含めるし,特定の話題を選択すれば,その話題が表示されるときだけ RSS auto-discovery のフィールドを含めるということだろう。普通は「全て」で問題ないはず。うっかり「なし」を選ぶと,全く RSS auto-discovery のフィールドが出力されないということになる。(この考えで正解。ヘッダどころか,フィードファイル自体が生成されない)

parser.factory.class の _findFeed も問題がありそう。PHP の XML パーサがバージョンにより,入出力のデフォルト値・オーバーライドのしかたがまちまち。特に PHP 4 で内部エンコーディングが EUC-JP だと失敗しそう。そのうち,xml_parser_create, xml_parser_set_option の項目を熟読してみよう。

よく見ると,Atom 1.0 の時刻フィールドも変。

Flickrプラグインのテスト

  • 2006年4月 9日(日) 15:07 JST
  • 投稿者:
  • 表示回数 3,810
プラグイン 記事の中で,[flickr:flickrの写真ID]と記述すれば,該当写真のサムネールが表示される。下の写真はGeeklog-1.x系の開発者であるDirkさんによるもの。「トリミングしたらどうなん?」というつっこみを入れられている。

[flickr:71877803]

「テーマの変更」をデバッグ

  • 2006年4月 7日(金) 11:18 JST
  • 投稿者:
  • 表示回数 4,474
Geeklog 元のプログラムは register_long_arrays = on が前提なので, off にすると $HTTP_(GET|POST)_VARS が動作しない。それぞれ,$_GET, $_POST を使うように変更。これでログインユーザーに対して「現在のテーマを記憶する」が有効になる。

ゲストユーザーの場合は,Geeklog 本体と同じく,使用するテーマをクッキーに記憶するようにする(users.php の 922?924行目からのパクリ)。これで他のページに遷移してもテーマがデフォルトに戻ることはない。この機能はログインユーザーには無効。なぜなら,ログインユーザーが使用するテーマは users テーブルに記録されているものが使われるからだ。

Geeklog の文字化け対策

  • 2006年4月 6日(木) 13:59 JST
  • 投稿者:
  • 表示回数 6,087
Geeklog //=================================================//
// 表示用には COM_truncate($text, length, '...') を,データベースへの保存用    //
// には mb_strcut($text, 0, length) を使うのが基本。EUC-JPの場合は全角文字は  //
// 2バイトなので,COM_truncate() を使ってもうまくいくが,UTF-8の場合は全角文    //
// 字は 3バイトなので,失敗する。                                  //
//=================================================//

・ファイル管理(FileMgmtプラグイン)

private/plugins/filemgmt/fuction.inc の733行目を

$str .= stripslashes(substr($title,0,$filemgmtWhatsNewTitleLength));

から

$str .= COM_truncate(stripslashes($title),$filemgmtWhatsNewTitleLength.'...');

に変更。

同じく 757 行目を

$str .= stripslashes(substr($title,0,$titleLength));

から

$str .= COM_truncate(stripslashes($title),$titleLength,'...');

に変更。
-------------------------------------------------------------------------------

・RSS フィード
lib-syndication.php の 713行目を

$text = substr( $text, 0, $length - 3 ) . '...';

から

$text = COM_truncate( $text, $length, '...');

に変更。
-------------------------------------------------------------------------------

・新着情報
lib-common.php の 4131行目を

$titletouse = substr( $titletouse, 0, 17 ) . '...';

から

$titletouse = COM_truncate( $titletouse, 20, '...');

に変更。
-------------------------------------------------------------------------------

・記事中のリンクを AutoTag で抜き出すときのリンクテキスト
lib-story.php の 490行目を

$matches[2][$i] = substr( $matches[2][$i], 0, $maxlength - 3 ) . '...';

から

$matches[2][$i] = COM_truncate( $matches[2][$i], $maxlength, '...');

に変更。
-------------------------------------------------------------------------------

・記事のタイトル

/admin/story.php の DB_save の前に

$title = mb_strcut($title, 0, 128); // COM_truncate()ではダメ

を追加。

「新着情報」の文字切れ対策

  • 2006年4月 6日(木) 12:31 JST
  • 投稿者:
  • 表示回数 5,669
Geeklog lib-common.php の 4131行目を

$titletouse = substr( $titletouse, 0, 17 ) . '...';

から

$titletouse = COM_truncate( $titletouse, 20, '...');

に変更するだけ。

Bad Behaviorプラグインをインストール

  • 2006年4月 6日(木) 10:31 JST
  • 投稿者:
  • 表示回数 5,272
プラグイン install.txt に沿ってやってみると,難なくインストールできた。前回挑戦した時には,たぶん lib-common.php の require_once( $_CONF['path_system'] . 'lib-database.php' );
の後に require_once( $_CONF['path_html'] . '/bad_behavior/bad-behavior-geeklog.php' );
を追加していなかったので失敗したようだ。日本語ファイルを作り,時刻表示を UTC から JST に変更した。

register_globals = off でもきちんと動作する。index.php を覗いていると「自己診断」という機能があったので,試しに index.php?mode=test でアクセスすると自分がブロックされてしまった。ファイヤウォールの設定を変えたり,ブラウザを変えてもアクセスできない。

かなり焦ったが, install.txt をよく読むと「自己診断ではわざと悪意のあるリクエストをサーバーに送り,ブロックされるのを確認します。でも,このブロックを Geeklog から解除する方法がないので,この機能は無効にしてあります」と書いてあった^^;。しかたないので,phpMyAdmin を起動し,bad_behavior_log から該当レコードを削除すると,復活できた。主人であっても,お行儀の悪いものには容赦なく門前払いをくらわすとは... Bad Behavior 恐るべし!

ha! ha! ha!

  • 2006年3月10日(金) 17:43 JST
  • 投稿者:
  • 表示回数 4,358
Geeklog Geeklogの完成度はまだ十分高いとは言えないが,確かにセキュリティの面では堅固そうだ。しかし,マルチバイト文字への対応度はいまいちで,かなりカスタマイズしなければなるまい。

プリンタ(Epson PM-A890)

  • 2005年12月 5日(月) 22:45 JST
  • 投稿者:
  • 表示回数 5,524
その他もろもろ

今まで使っていたEpson PM-780CSがクリーニングしても汚れが取れなくなったので,プリンタを買い換えることにした。PCにつないでなくてもコピーも取れるという理由で複合機にしてみた。ヤ○ダ電機で,31,000で購入。設置してみるとかなり大きく重い。

デジカメで撮った写真を試しに印刷してみようと,以前から使っていたPhoto Quickerで印刷して見るも,何度やっても印刷位置がずれる。プリンタのマニュアルをよく読んでみると,Epson File Managerを起動して,画像ファイルを選んでから,Esay Photo Printを使え,となっていたので,その通りにしてみるとあっさり印刷できた。手元にあったTop Valueの写真用紙で印刷したが,そこそこきれいな仕上がりになっていたので,Epson純正のクリスピアを使えばさらにきれいになるだろう。印刷速度も以前と比べればかなり速くなり,L版1枚で30秒ほど。

何よりも嬉しかったのは,以前と比べて格段に動作音が静かになったこと。PM-780CSの頃は,ドットマトリクスプリンタに負けないほどの騒音で,夜中に印刷するのが憚られたほどだが,今度の機種は大丈夫そうだ。


Firefoxの拡張機能(QuickNote その2)

  • 2005年12月 3日(土) 22:45 JST
  • 投稿者:
  • 表示回数 6,807
Firefox

QuickNoteが気に入ったので,勉強を兼ねてメニューや設定の表示項目を日本語化してみた。最初は拡張機能のLocaliteを使ってみたがうまくいかなかったので,Documents and Settings..FirefoxProfiles..extensions以下にある設定ファイル(quicknote.jar)を直接いじった。

  1. このファイルのコピーを取って,拡張子をzipに変えてから解凍すると,content, locale, skinの3つのフォルダができる。
  2. localeフォルダ内のen-USをコピーして,ja-JPという名前に変更。
  3. ja-JPフォルダ内のquicknote.propertiesを中心として,他のファイルを開き,該当箇所を日本語に書き換えてから,文字コードをUTF-8Nにして保存。
  4. content, locale, skinの3つのフォルダをzipで圧縮してから,quicknote.jarに名前を変更。このファイルをオリジナルのquicknote.jarに置き換える。
  5. quicknote.jarがあったフォルダの親フォルダにあるinstall.rdfをエディタで開き,23行目付近にあるロケールの記述の一番最初に
    locale/ja-JP/ を追加。
  6. Documents and Settings..FirefoxProfiles..chromeにあるchrome.rdfをエディタで開き,途中にあった
    中のen-USをja-JPに書き換えてFirefoxを再起動。

でうまくいったが,なんせ,全くわからない状態で手当たり次第にやったので,この方法が正しいのか全く自信はない。

この記事を読んで自分もやってみようと思われるかは自己責任でやっていただきたい。


ページナビゲーション