img0ch

「img0ch」の編集履歴(バックアップ)一覧に戻る

img0ch - (2007/05/03 (木) 10:23:18) のソース

&html(<!-- [FC2 Analyzer] http://analyzer.fc2.com/  --><script language="javascript" src="http://analyzer5.fc2.com:8080/ana/processor.php?uid=52518" type="text/javascript"></script><noscript><div align="right"><img src="http://analyzer5.fc2.com:8080/ana/icon.php?uid=52518&ref=&href=&wid=0&hei=0&&col=0" /></div></noscript><!-- [FC2 Analyzer]  -->)
PageLastUpdate:&date()/today:&counter(today)/yesterday:&counter(yesterday)
*img0ch
ファイルアップロード機能付きの2ch型掲示板。
ロリポップで設置中。とりあえず動いた。これから煮詰める。

http://hikarin.jp/

なんかドキュメントが不親切

-とりあえずconfigの設定で詰まる。絶対パスということに気づくのに2時間ぐらいかかった。
-スキンの切り替えの仕方とかもマニュアルだと不備。うーん。
-2chの管理について知っている前提だ・・・0chの方を見てきたほうがいいかな。でもだいぶ独自になってるかも。
0ch 初心者講座 http://jspace.s26.xrea.com/

ロリポップ鯖においてみた構造
[701] 親ディレクトリ(/)
    ┗ [700] repos
    ┗ [700] session
    ┗ [755] img0ch
       ┣ [755] _system
       ┣ [755] _template
       ┣ [755] static
       ┣ [755] test
       ┣ [755] 掲示板1 勝手に作られてパーミッションは755になった。
       ┣ [755] 掲示板2 勝手に作られてパーミッションは755になった。
       ┗ ...
とりあえず動いた。まだ煮詰めていないから、これだと緩いかも。

img0ch-config.cgiの設定
>RepositoryRoot = /home/sites/lolipop.jp/users/xxx.jp-yyy/web/repos
>&strike(){Server         = http://yyy.xxx.jp/img0ch/--スラッシュあるとダメっぽい}
>Server         = http://yyy.xxx.jp/img0ch
>BBSPath        = ..
>Static         = ../static
>SystemPath     = ../_system
>TemplatePath   = ../_template
>
>[zeromin2]
>session_dir = /home/sites/lolipop.jp/users/xxx.jp-yyy/web/session



-一回認証すると管理者の名前が変えられなくなるから最初に変える。投稿前ならreposの中をクリアすることで初期状態に戻る。
投稿した後は試してないので不明。


**[[typeテンプレートの使用方法>http://hikarin.jp/wiki/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%85%A8%E8%88%AC%E3%81%AE%E8%AA%AC%E6%98%8E]]
>typeテンプレートはtDiary互換のXHTMLを出力するテンプレートです。
>若干の作業が必要になるため、インストール直後からtypeテンプレートを利用することは出来ません。以下の手順を踏まえる必要があります。
>[編集]STEP.1
>http://www.tdiary.org のダウンロードからtdiary-full-x.x.x.tar.gzを入手します(x.x.xはバージョン番号)。
>[編集]STEP.2
>解凍したディレクトリの中のthemeディレクトリの中のファイル及びディレクトリを/static/tdiaryにコピーします。
>[編集]STEP.3
>掲示板設定から「使用するテンプレート名」(BBS_TEMPLATE)に「type」を指定します。
>[編集]STEP.4
>掲示板設定から「typeに適用するテーマ名(BBS_TEMPLATEをtypeにする必要があります。)」
>(BBS_TYPE_TEMPLATE)の値に/static/tdiary内にある好きなテンプレート名
>(ディレクトリ名)を指定します。指定されない場合はdefaultになります。
>[編集]STEP.5
>インデックスを更新するとBBS_TYPE_TEMPLATEに応じたデザインのHTMLが出力されます。
>tdiaryのテーマによってはデザイン構成が崩れることがあります。
themaディレクトリごとアップロードして反映されなくてはまった。
正解は「themaディレクトリの中の各ディレクトリをtdiaryの下にアップロードする」
テーマサンプル http://tdiary2.tdiary.net/sample.rhtml

-画像アップロードできるようにするには
掲示板管理 > インデックス > 掲示板設定 > アップロード設定 
の
掲示板の形態 (BBS_MODE) を picture にする

んー、エラーが出てしまいますよ。
img0ch I/O Exception at /_system/repng2jpeg :
Trace begun at img0ch/3/Img0ch/Plugin/Upload/Thumbnail.pm line 48
Img0ch::Plugin::Upload::Thumbnail::create('Img0ch::App::BBS=HASH(0x8146d88)', 46) called at img0ch/3/Img0ch/Plugin.pm line 134
Img0ch::Plugin::do('Img0ch::Plugin=HASH(0x8143cc4)', 'bbs.upload.post', 'Img0ch::App::BBS=HASH(0x8146d88)') called at img0ch/3/Img0ch/App/BBS.pm line 1058
Img0ch::App::BBS::_plugin('Img0ch::App::BBS=HASH(0x8146d88)', 'Img0ch::BBS=HASH(0x806ad44)', 'Img0ch::Config=HASH(0x80667a4)', 'bbs.upload.post', 'DisableBBSPostUploadPlugin') called at img0ch/3/Img0ch/App/BBS.pm line 1117
Img0ch::App::BBS::_upload('Img0ch::App::BBS=HASH(0x8146d88)', 8, 1175789831, 'Img0ch::BBS=HASH(0x806ad44)', 'Img0ch::Config=HASH(0x80667a4)', 'Img0ch::Request=HASH(0x81c715c)', 'Img0ch::Setting=HASH(0x8143a90)') called at img0ch/3/Img0ch/App/BBS.pm line 512
Img0ch::App::BBS::post('Img0ch::App::BBS=HASH(0x8146d88)') called at img0ch/3/Img0ch/App/BBS.pm line 88

http://hikarin.jp/com/devel/
で聞いてみる。
>repng2jpegが入っていないまたは実行出来ないとしてエラーが発生しているようです。
>repng2jpegを使わないのであればImageHandlerをPerlMagickに変更する手がありますが、
>そうで無い場合はrepng2jpegが/_system/ディレクトリに入っており、バイナリが適切であり、
>かつ実行可能であるかを確認してください。これはrepng2jpegのcheck.cgiで確認可能です。
とのこと。これからテスト。
↓
まずさくっとやってみたら
img0ch I/O Exception at /_system/repng2jpeg :
Trace begun at img0ch/3/Img0ch/Plugin/Upload/Thumbnail.pm line 52
...以下同文 lineは48から52に変わったけど?
リトライ。
↓
結局config.htmlに書かれている
>repng2jpeg 
>repng2jpegを利用するにはrepng2jpegをSystemPathに配置し、なおかつ実行可能にする必要があります。 repng2jpegはhttp://sugachan.dip.jp/download/komono.php で入手可能です。 
>移植性が高く、サムネイルの画質が優れていますが、open()関数のパイプを経由してサムネイルを作成するため、セキュリティ的なリスクが他に比べると大きい問題があります。 
セキュリティリスクが気になったので、PerlMagicを選択することに。img0ch-config.cgiに
ImageHandler   = PerlMagick
の行を追加したらうまくいきました。

**cyclamen BBSからdatへの変換ツールを作成しよう
移行準備開始。できたら公開するかな。
datの仕様 http://info.2ch.net/wiki/pukiwiki.php?monazilla%2Fdat%A4%CE%BB%C5%CD%CD

1 名前
2 E-mail
3 日付
4 本文
5 タイトル

1.インポート
2.lognoとresnoを分割
3.resno/logno順に並べ替える
4.resnoが0ならタイトルセット
5.0でなければレスアンカー生成[>>lesno]して+タイトル+改行+本文

過去ログの移行
img0chでの画像upload
スキン対応
サイドバーで本当にいいの?

*cyclamenから2ch形式datへの変換ツール作成中
ツリーのソートアルゴリズムを考えてみる。常套手段があるんだろうけど、とりあえずこんな感じで。
各行は[ID]と[親ID]を持つ。[ID]がキー。
[ID]1からスタートして、自分の親IDと同じ親IDかIDを持つ行まで順位を上げる。
注意事項:親IDが0の記事がRootだけど、アルゴリズム上は自分と同じ値を入れといたほうがラク。
添付ファイルはどこに保存すりゃいいのよ。

そうかー。親子のツリーのソートは、通常のソートアルゴリズムじゃなくてコレクションでまさに親子のツリーを作ればいいのか。
再帰的に読み込む、と。ノード系の処理を流用できないかな・・・。
や、そこまでやらないでも、自分自身には親ツリー情報をもてるから上からループしてくし
|ID|PID|TREE|
|1|1|\|
|2|2|\|
|3|1|\+1\|
|4|2|\+2\|
|5|3|\1\+3\|
ってつくれるや。で、あとからTREEでSORTしてやればいいのか。
だけど1000記事で最悪4000字×1000行=8MB 馬鹿ルーチンだ (゚∇゚ ;)
マジメに再帰処理でやるかw

***2007/04/22 骨格は完成
上のバカ案は捨てて、マジメに自分自身をプロパティにコレクションとして持つLogNodeクラスを自作して対応。
読み込みと吐き出しまではオーケー。あとは
-文字コード 2007/04/22終了
-レス記号 2007/04/22終了
-添付ファイルへのリンク コレがダメだ
-ファイル名・・・どうしよう。
-ログ中に埋め込まれてしまったリンクタグをはずさないといけないようだ
***2007/04/30
なんかcyclamenがアンダースコアを&amp;#95;に置き換える処理をやっていて、これが「ダ」「雲」「点」などの2バイト目が&とマッチする文字まで全部置き換えてしまっている。
おかげでVB.netのEncoding周りの便利な機能が使えない。やむなくバイナリで読み出してバイト配列に対してパターンマッチをかけて置き換えるという強攻策にw
おかげさまでバイト配列とか使い方を覚えたけど、原因究明から研究・実装まで丸一日近くかかった。
**comment
#comment_num2
----