Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#76 2008-12-25 18:30:00

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

325 335 804
チェック済変数を使用

889
ファイル名をチェック


そろそろ大丈夫じゃないかと……
#誰かが「お墨付き」をくれるわけではないですが


Attachments:
zip 1081sp1rc6.zip, Size: 11.63 KiB, Downloads: 322

オフライン

#77 2008-12-26 07:17:19

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

RC5との差分を見られるようにしました。
http://svn.sourceforge.jp/view/plugin/t ... /media.php

きゃしゃ さんの発言:

そろそろ大丈夫じゃないかと……
#誰かが「お墨付き」をくれるわけではないですが

よさそうですね。少なくとも、大幅にセキュリティが向上しているのは、確かです。とりあえず一件落着で良いのではないでしょうか?

以下SP1 RC6を、v1.1としてパッケージにしておきました。今後、機能改善などはこれを元にしていただけたらと思います。


Attachments:
zip mediatocu110.zip, Size: 39.47 KiB, Downloads: 334

オフライン

#78 2008-12-27 20:26:00

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

>ushioさん
ロングパスですません。

ushio さんの発言:

画像のサムネイルを挿入するボタン

<a href="media.php" onclick="chooseImage('{$hscJsCC}', 'thumb_{$hscTGTF}', '{$width}', '{$height}')" onkeypress="chooseImage('{$hscJsCC}', 'thumb_{$hscTGTF}', '{$width}', '{$height}')" title="thumb_{$hscTGTF}">サムネイル貼り付け(クリック)</a>

があると、TinyMCEを利用していて、LightBoxを作る場合や、
それ以外にもサムネイルだけを記事で手軽に扱えるので便利かなと感じました。

NP_Mediatocuのサムネイルファイルをアイテム内で積極的に利用したいって事ですよね。
サイズ設定がNP_Mediatocuのリストと連動になりますし、LightBox的なことはぶっちゃけ専用のプラグイン(NP_CustomThumbnail等々)を使用する方が使い勝手よいと思います。
また、サムネイルファイルはできるだけ存在を意識させたくないワークファイルと考えてますし、
ファイル管理に問題もありそうなので、採用は見送りの方向で。

もっとも、ushioさんは自力でカスタマイズできそうなので、ええですよね。

オフライン

#79 2009-01-21 14:53:32

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

1.1をベースに、1.0.9の仕様変更をマージしました。
・サムネイル非対応時のpngファイル対応を削除
・無限階層で非表示ディレクトリ対応
・"thumb"を含むファイル名許可
・"thumb_"で始まるファイル名禁止
・ファイル表示時にurlencode
・javascriptによるプレビューウインドウ変更
・条件分岐・変数指定等内部的な見直し

加えて、
・既存ファイル名へのリネーム禁止
・既存ディレクトリ名の作成禁止
・非表示ディレクトリ名の作成禁止

動作に問題がないようであれば、大量のコメント等コードを大掃除して、1.1.2で正式版にしたいなぁ。


Attachments:
zip NP_Mediatocu_111.zip, Size: 41.3 KiB, Downloads: 306

オフライン

#80 2009-01-26 15:42:32

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

・プラグインオプションでサムネイルサイズを変更した際、サムネイルファイルを自動削除
mediaディレクトリ配下の各ディレクトリで"thumb_*"ファイルを削除します。
全プライベートディレクトリが含まれます。
非表示ディレクトリは含みません。
問答無用で削除しますので、"thumb_"で始まる必要なファイルがもし存在するならば注意してください。
セーフモード、パーミッション等の設定が適切でない場合は、削除に失敗し大量のエラーメッセージを吐くでしょう。
現状、あえてエラー非表示にはしてません。
※ここでいう「設定が適切でない」とは、本機能の動作条件に合致しないという意味です。
能動的にそういった設定にしているケースもあるでしょうから。
・「戻る」リンクにカレントコレクション反映
・MEDIADIRSクラスを別ファイル化。ソースの整理
コードのコメントアウト及びコード中の署名を整理させていただきました。

今回、ファイル操作がちょっと怖いのでベータ扱いで。

以下、うぃっしゅリスト
・新規ディレクトリ作成後、あたらしいディレクトリをカレントで開きたい。ええ方法はないでしょうか。
・widthとheightを同時に変更すると、全ファイルを二回なめるので非効率的。ええ方法はないでしょうか。
・ひょっとして、アップロードロードモードをデフォルトで開く方が便利じゃないかと思うんですが、いかが?


Attachments:
zip NP_Mediatocu_112.zip, Size: 39.7 KiB, Downloads: 346

オフライン

#81 2009-01-26 23:58:32

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

Mocchi@NP_ImprovedMediaの作者です。

きゃしゃ さんの発言:

今回、ファイル操作がちょっと怖いのでベータ扱いで

同感 big_smile
ファイルやディレクトリのunlinkって,考えていた以上に神経使いますね。renameもやり方しだいで変更後にファイルやディレクトリがどっか行ってしまうし。。。実行前の確認が欠かせませんです。

きゃしゃ さんの発言:

以下、うぃっしゅリスト
・新規ディレクトリ作成後、あたらしいディレクトリをカレントで開きたい。ええ方法はないでしょうか。

$HTTP_GET_VARS[$name]もしくは,$HTTP_POST_VARS[$name]って,スクリプト内で追加することってできましたっけ?もしできるなら,media_mkdir()でディレクトリを作成した後,media_select()を実行する前に,キー「currentCollection」もしくは「collection」に値「$corrent . '/' . $mkdirname」を追加してやって,media_select()の190-197行目に渡せるかもと思いました。試してないので,アイディアだけですが。

オフライン

#82 2009-01-27 09:28:43

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

どうでもいいところに反応しますが…

$HTTP_GET_VARS[$name]もしくは,$HTTP_POST_VARS[$name]って,スクリプト内で追加することってできましたっけ?

「$_GET[$name]」「$_POST[$name]」でお願いします。

オフライン

#83 2009-01-28 09:48:55

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

vars4.1.0.phpだと$_POSTと$_GETで受けてますね。
vars4.0.6.phpみてました(汗)
$HTTP_GET_VARS[$name]$HTTP_POST_VARS[$name]はPHPのマニュアルにおいて非推奨扱いとなっています。

オフライン

#84 2009-01-28 09:56:00

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

>>Mocchiさん、shizukiさん
ありがとです。ふっるいPHPは見捨ててもいいですよね?ね?
コアも3.5でPHP5オンリーになるらしいし。

オフライン

#85 2009-04-23 21:43:22

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

こちらは開発版で。
デザインはともかく、如何なもんでしょうか。
デザイン誰かやってください、マジで。

・アップロードをデフォルト画面に統合
・フォルダ管理をプライベート以外にも拡張

アップロード権のある全ユーザが、mediaディレクトリ下の任意のフォルダを操作(削除等)できるため、
複数メンバーで使用する場合は、非表示ディレクトリ機能を活用するなど、注意を払って下さい。
以前より、他メンバーのプライベートディレクトリ以外のファイルを全ユーザが削除等できる仕様ですので、
特に問題はないと考えています。


Attachments:
zip NP_Mediatocu_114.zip, Size: 40.86 KiB, Downloads: 280
gif npmediatocu114.gif, Size: 33.05 KiB, Downloads: 1,474

オフライン

#86 2009-04-24 01:29:57

yama
Administrator
登録日: 2005-07-07
投稿: 1,243
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

デザイン案。超粗削りなんで、このまま採用されるとハズいですが。


Attachments:
zip mediatocutest.zip, Size: 39.21 KiB, Downloads: 284
png test.png, Size: 172.12 KiB, Downloads: 1,404

オフライン

#87 2009-04-27 17:54:58

Mocchi
メンバー
登録日: 2006-11-19
投稿: 438

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

あまり必要はないかもしれませんけれど。。。

私のメディア用ディレクトリには、4MB以上の画像も入っています(バックアップ目的のためにFTPで入れた)。サムネイルを作るようなプラグインを使うと、関数「imagecreatefromXXXX()」(XXXはJPEGとかPNGとか)で件名のエラーが発生して、スクリプトの実行が強制的に終了してしまいます。

NP_Mediatocuだと700行目以降でこの処理をしています。@演算子でエラーの出力は抑制されていますが、Fatalエラー扱いだから強制終了です。

ググってみると、たいていはこのエラー、ini_set('memory_limit', '128M')でスクリプトがより多くのメモリを使うように設定することで(PHPのデフォルトは8MBらしい)対応するみたいですが、init_set()が使えないサーバがあったり、共有のサーバでそれをするのはちょっと…みたいに思う人もいるようです。

大きな画像のサムネイルは作らないようにできないかなーと思ったので、ここらへんを手元のいろいろな画像で検証してみました。

結果、imagecreatefromXXXX()やimagecreatetruecolor()で生成されるGDイメージ型リソースのメモリーサイズは、ピクセルサイズ(縦×横)×6バイト以下のメモリーを消費するのではないかという予想ができました。ファイルサイズはあまり関係がなさそうです。

普通のPNG/GIFファイルだと1ピクセルあたり2バイトくらい。JPEGだと6バイトくらい。でも、PNG/GIFでも5-6バイトのものもあって、たぶんオプションとか色空間が影響しているのだと思います。

この仮説を利用すると、オリジナル画像のピクセルサイズと生成したいサムネイル画像のピクセルサイズから、メモリー消費量の予想値が計算できて、ini_get('memory_limit')とmemory_get_usage()から計算したメモリ量の余裕と比較することで、処理をするかしないか判断することができそうです。

以下、この処理のサンプルコードです。メモリとか入ってくると、サーバ環境がうんたらとか、PHPの関数で帰ってくるメモリ量はうんたらとか、私の知識の及ばないところがでてくるので、このコードでは不十分かもしれません。

// オリジナル画像の縦幅と横幅
$fwidth;
$fheight;

// サムネイル画像の縦幅と横幅
$twidth;
$theight;

$maxMemorySize = ini_get("memory_limit");
if($maxMemorySize === '')
 $maxMemorySize = 8000000; // PHPのデフォルト設定8MB
else
 $maxMemorySize = intval(str_replace('M', '', $maxMemorySize)) * 1000000; // メガバイトをバイトにする

$expectedMemorySize = ($fwidth * $fheight * 6) + ($twidth * $theight * 6);
$memorySpace = ($maxMemorySize - memory_get_usage(true));

if($expectedMemorySize > $memorySpace)
 return;

なんで1ピクセル6以下なのかというところは、たぶんGDイメージ型リソースの構造によるのだと思いますが、残念ながらリソースの構造を説明した文書を見つけることができなかったのでなんとも。なのであくまでも仮説止まりです、残念。。。

検証に使ったスクリプトとデータは以下です。
やっぱりちゃんと検証してみた

オフライン

#88 2009-05-06 18:49:52

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

ボタンが増えてレイアウトが変わりました。
アップロード後アイテムにnucleusタグ挿入、mediaパレット閉じる
までをワンボタンで。imageとpopupの切り替えもできます。

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?t=4375">viewtopic.php?t=4375</a><!-- l -->
デフォルトディレクトリ機能も。

Mocchiさんのメモリオーバー抑制メソッドそのまま取り込みました。
あたしのテスト環境、XREA+ですと、memory_limit=90MBで、
4096*4096ピクセルのランダムノイズjpg3MBはサムネイル作る(非抑制時)
5000*5000ピクセル白紙jpg20KBは処理止まる
なので、Mocchiさんの仮説値でだいたいそんなもんだと。


Attachments:
zip NP_Mediatocu_115.zip, Size: 42.1 KiB, Downloads: 291
gif npmediatocu115.gif, Size: 26.74 KiB, Downloads: 1,293

オフライン

#89 2009-06-13 13:09:49

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

・デフォルトディレクトリのオプションをプルダウンに
PrePluginOptionsEditで動的生成してます。
プライベート+非表示ディレクトリ以外のcommonディレクトリ(無限階層)です。
・NP_TinyMCEとの連携強化
*NP_TinyMCEのメンバーオプションを反映
  一時的にNP_TinyMCEを使わない設定にしたときも、NP_Mediatocuが使えます。
  NP_TinyMCEのアイテムオプションは、現状実装が微妙だと思ったので
  あえて反映していません。
  アイテムオプション手書きで変更して本文にダミー文字書いて空保存して再編集するより、
  メンバーオプションで一時不使用にする方が断然ラクだと。
*初期設定でTinyMCEのダイアログ内に収まるよう表示調整
  win+IE6+modalで収まってませんが、これはTinyMCE側の事情ってことで。
・ブラウザにキャッシュさせない
ブラウザによって、自動挿入後キャッシュで誤動作するケースがあったり、
サムネイルサイズ変更が反映されなかったりしたのを改善。
そのかわり、毎回サムネイル読み込みますが。
・コレクション変更時、フィルタ実行時のページング改善
コア標準media.phpのフィルタ、ページの扱いおかしいよ、うん。
・サブフォルダ作成後、新規フォルダに戻る

不具合:
あたしの環境ですと、OS-X+Safari+NP_TinyMCE+dhtmlで、アップ&自動挿入するとブラウザが落ちます。
現在原因不明。


Attachments:
zip NP_Mediatocu_116.zip, Size: 42.72 KiB, Downloads: 292
gif emoticons.gif, Size: 41.32 KiB, Downloads: 1,298

オフライン

#90 2009-06-13 13:22:47

yama
Administrator
登録日: 2005-07-07
投稿: 1,243
ウェブサイト

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃ さんの発言:

NP_TinyMCEのアイテムオプションは、現状実装が微妙だと思ったので
  あえて反映していません。

何か理由があって素直にyesnoオプション使ってないのですが(かなり悩んだ気がする)、理由忘れてしまいました。投稿画面を開いてからのオプション変更だとすでにTinyMCEのフィルターを通ってしまっていて役に立たないことも多いので、そのうち外すと思います。

オフライン

#91 2009-06-16 13:07:22

hana2
メンバー
登録日: 2007-04-29
投稿: 16

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

こんにちは。
いつも参考にさせていただいております。

NP_Mediatocuを便利に使わせていただいているのですが、
NucleusをVer.3.41にアップデートしてから、
写真を新規アップロードした時、通常ならばサムネイル一覧画面に戻るはずのところ、
画面上部の「Mediatocu」と「close」が表示されているだけで、
一覧部分は真っ白な画面になってしまいます。

その画面を一旦closeして再び画像挿入をクリックしてMediatocuの画面を表示すると
アップロードした写真自体は表示されており、ブログへの挿入も通常通りできています。
GrayBoxを使っているからかと思い、チェックをはずしてみましたが、状況は変わりませんでした。

また当初、NP_Mediatocuのバージョンが1.1.0だったので、最新正規版の1.1.3.1にアップデートしましたが解消されませんでした。

このフォーラム内でも色々対処法を探してみたのですが、解決策が見つかりません。
どなたかご教示願えないでしょうか?
よろしくお願いします。

ちなみにPHPのバージョンは5.2.9、MySQLは4.0.24、レンタルサーバはアイルです。

オフライン

#92 2009-06-16 15:41:53

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

こんにちは。
make_thumbnailで止まってるのかなぁ。

アップロード後のHTMLソースはどうなっていますか?
画像以外のファイルをアップロードした場合、一覧に戻ってきますか?
開きなおした際、アップした画像のサムネイルは作成されていますか?
数千ピクセルのデカいデジカメ画像をアップしようとしてるとかじゃないですか?
小さい画像をアップしてみた場合どうなりますか?

オフライン

#93 2009-06-16 16:40:45

hana2
メンバー
登録日: 2007-04-29
投稿: 16

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさま>
早速の返答、ありがとうございます!

質問いただいた事象について、1つ1つ試してみました。
・アップロード後のHTMLコードですが、GrayBoxの時には表示されなかったので、GreyBoxを切ってみたところ、
次のような半端なコードがでてきました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
.

つまり、BODY部分が表示されていないようです。

・画像以外のファイルとして、70KB程度のPDFファイルをアップしてみたところ、
これも次のような中途半端な表示になりました。

1行目の「現在のコレクション・・・」の行しか出ていません。
HTMLもこの部分の</FORM>までしか表示されません。
つまり、最後の</BODY></HTML>も出ていません。

・開きなおしたときの画像サムネイルは表示されます。
・アップしているファイル自体は40~50KBくらいの小さなものです。

なんだか更に変な事象が出てきてしまいました・・・。
多分どこかで処理が止まってるんでしょうが・・・。


Attachments:
jpg Mediatocu001.jpg, Size: 5.66 KiB, Downloads: 1,124

オフライン

#94 2009-06-16 18:04:49

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

NP_Mediatocuが出力するHTMLは

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<meta http-equiv="Content-Script-Type" content="text/javascript" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<title>Mediatocu</title>

こんな感じですので、白紙の時にはそこまで処理が来てませんねぇ。
途中でちょんぎれるのはサーバか回線経路の問題ではないかと思います。
やはりmemory_limitの上限に達してしまってるケースがクサイかと考えます。
NP_Mediatocuのmediaパレット以外は問題ないのでしょうか?
一度サーバ屋さんに問い合わせてみられては。
MTは20MB、WPは10MBのメモリ増設オプションをオススメしますとのことなので、
Nucleusでもメモリがキツイのかもしれません。
3.31SP2以降のコアはセキュリティ強化でメモリ消費量上がってるはずですし。

イマイチ役にたたないレスで申し訳ないです。

オフライン

#95 2009-06-16 18:19:12

hana2
メンバー
登録日: 2007-04-29
投稿: 16

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

さっそくの返信、ありがとうございます。

ホントですね。
よくよくコードを見てみるとmetaタグが途中で切れちゃってますね;;
こりゃやっぱりmemory_limitあたりで引っかかってるんでしょうかねぇ。
ちなみに確認した限りでは不具合が出るのはNP_Mediatocuだけなんですが・・。

一度サーバのメモリサイズあたりを調べて、調整してみようと思います。
また何か分かればご報告します。

オフライン

#96 2009-06-16 18:36:53

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

それはそうと、1.1.6に、NP_TinyMCEをインストールしてないとpopupの切り替えできないという
ダメダメなバグが発覚したので、とりいそぎ修正しておきます。うにゃー。


Attachments:
zip NP_Mediatocu_1161.zip, Size: 42.8 KiB, Downloads: 274

オフライン

#97 2009-06-18 14:45:34

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

>hana2さん
1.1.3.1のmedia.php595行目あたり、

	// shows updated list afterwards
	media_select();

	// shows updated list afterwards
//	media_select();
		redirect("media.php?collection=$collection");

に変更してみてください。
アップロード完了までの処理が済んでいれば、メモリ解放してパレット開きなおすと思います。

オフライン

#98 2009-06-19 13:45:14

hana2
メンバー
登録日: 2007-04-29
投稿: 16

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさん>

早速対応策をお考えいただき、ありがとうございます!
media.phpモジュールに修正を加え、アンインストール&再インストールしてみたんですが、
結果は同じでした・・・。
実はサーバーにもオプションでメモリ追加を行い、
20Mbから倍の40Mbまで容量を増やしたんですが、
これでも同じでした・・・。

こうなってくると、メモリ周りの原因じゃないんじゃないかと思ってきました・・。
結構アップデートやプラグインのインストール&アンインストールを頻繁にやっているので、
どこかでおかしくなってるんでしょうかね?
一度Nucleusコアをきれいにインストールしなおしたほうがいいのかもしれませんね(泣)。

オフライン

#99 2009-06-19 14:10:48

きゃしゃ
メンバー
From: 北河内
登録日: 2007-12-15
投稿: 351

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

むーん :?  :cry:  :oops:  :cry: 
一度ダメモトで1.1.6.1試してみて貰えますか?
Mocchiさん作のメモリオーバー抑制メソッドが入ってるので。

オフライン

#100 2009-06-22 10:29:50

hana2
メンバー
登録日: 2007-04-29
投稿: 16

Re: NP_Mediatocu (media-tocu-dirsをプラグイン化)

きゃしゃさま>
1.1.3をアンインストール~1.1.6.1にアップデートしてみました。


やはり状況に変化なしでした・・・ :cry:
む~ん。。
どこかで処理が止まってることは容易に判断できるのですが、
原因がまったくわかりません。
ここまでやってみても解決しないところをみると、
やはりメモリの問題ではなさそうですね・・・。

アップロード後、画面をcloseしてもう1回画像挿入画面を出せば
画像添付ができるので、問題ないといえば問題ないんですが、
僕以外の人間がブログを書き込む機会が多いので・・・。
ちょっとキモチワルイ感じです。
もうちょっと考えて見ます。スミマセン・・。

オフライン

Board footer