ペイントソフトで描いたらくがき20枚

Painter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang PaintPainter CLIP STUDIO PAINT MediBang Paint
カテゴリーをオリジナル…にと思いましたが、写真を参考にして描いたものが入っているのにオリジナルにしてしまうのは…という事で便宜的にPainterに。

主に使っているソフトがPainterなのは確かなのですが…MediBang PaintやCLIP STUDIO PAINTも使っていて3つのソフトを全部使って描く事もあります。

twitterや、pixivで観てくれている方はいても、ブログに絵を観に来る方はほとんどいないのが現状…ですけどね。
たしか、自分のイラストを掲載するブログだったという事で…。
posted by さとぴあ at 2018/05/06 14:34 | Painter

POTI-boardのログファイルの上限を5MBに

簡単なテストしかできていないため、各自自己責任で…。
ぷち的ココロ♪

総レス数がまだ2800を超えた程度なのに、親記事のナンバーの低いスレが消えてしまっていました。
親記事ナンバー+5000レスをスレの消える寿命に設定するにはどうしたらいいのでしょうか?

バッファに1000000byte読み込む処理があったので
logファイルの上限がおそらく約1Mbyteだと思います。
その上限を超えたので2800でレスが消えたのではないでしょうか
調べてみると…。

$buf=fread($fp,1000000);
となっているところが7箇所
$buf=fread($tp,1000000);
1箇所

合計8箇所にログファイルに関するものと思われる1000000byteの指定がありました。
試しにここを

$buf=fread($fp,2000000);

つまり2倍にしてみたところ

POTI-boardのログファイルの上限

1.961kbまでログを保存する事ができるようになりました。

XAMPPでテストしたので、ログファイルのファイルサイズの確認がエクスプローラーになりましたが…。
2000000byte=1953kbなのでだいたいあってますね…。

XAMPPの次は、さくらのレンタルサーバで5MB保存できるかテスト。

$buf=fread($fp,5242880);
$buf=fread($tp,5242880);

に設定。

POTI-boardのログファイルの上限POTI-boardのログファイルの上限

テキストファイルのサイズが1MB〜3MBのものを数回投稿。
数発言で5MBを超える投稿を行ってみたところ…。

9601969byte…。
5MBを超えてしまいました。

ログファイルが4MBの時に、1発言5MBの投稿を行うと4+5=9MBとなるようです。
追加で短く一言書いてみると…。

5242824byte=4.999946594MBになりました。

$buf=fread($fp,5242880);
$buf=fread($tp,5242880);

この2つは、ログファイルを読み込む時の設定…なんでしょうね。
5MBしか読み込まなかったので9MBあったログが5MBに…。

ログファイルがどうなっているのか調べてみたところ、コメントが途中で切れて必要なログの形式もなくなっていました。
スレッドやレス単位ではなくファイルサイズの上限で切れるようです。

他のログはどうなるのかというと…。
途中で切れてしまったログ以外は問題なさそうな感じでした。

POTI-boardのログファイルの上限

ログファイルをダウンロードしてファイルサイズを確認してみたところ…。
ぴったり5MB…。

ログが5MBまで溜まった状態で書き込むと5MB読み込む処理が入る…。どの程度の負荷になるのかよくわからないのですが…。
5MBだと大きすぎるのかもしれないので…。

$buf=fread($fp,2097152);
$buf=fread($tp,2097152);

2MBなら…。どうなんでしょうね…。

お絵かき掲示板はこちら。

POTI-boardの頁リンクが増え続けるのを制御(その2)

POTI-boardの現在の仕様だと、300ページ分ログがあると、300ページ全部表示してしまうので、長く運用してログをストックしていくタイプの掲示板だと厳しい…。

だから、最新から19ページまでは古いログを表示しない、20ページになったら、21ページ以後のページがすべて表示される。20ページ分のログが存在しない時は、存在しているログの分だけ表示するようにプログラムを書き直して終わり…の筈だったのですが。

それだとログが20ページまでしか存在していないと思う人がでてくるという指摘がありました。

ログが21ページ分より多くかつ最新から20ページまで表示している時は、21ページを
[0][1][2](中略)[20][>>]
のように表示する事ができれば…。

直接テンプレートに[>>]といれて、21ページへのリンクを貼る事もできますが…。
それだと…ログファイルが少ない時と多い時とでテンプレートを書き直さなければならなくなるのでプログラムで対応したい…と思いました。

POTI-board

こんな感じになりました。
//下段ページリンクの出力をifで分岐
//0-21まで表示する事を想定
//カウントツリーが指定した数値より小さい場合は全件表示

if(220 > count($tree)){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//下段ページリンクの出力をifで分岐
//スレッド数が指定した数値より大きな時は全件表示
//数値を-1小さく設定しないとリンクが表示されないページができるかも。

elseif($i > 219 ){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//下段ページリンクの出力をifで分岐
//スレッド数が指定した数値より小さい時は任意の数値でページを表示

elseif($i < 220 ){
for($i = 0; $i < 220 ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
if($i==210){
$pno = str_replace("<PAGE>", ">>", OTHER_PAGE);
// $pformat = str_replace("<PURL>", PHP_SELF2, $pno);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}}
$paging.=$pformat;
}
}
//ここまで
21ページ目なら、[>>]にという記述が増えただけなんですけどね。
ページ番号20を表示させたかったので、ひとつ前の記事で書いたものより、+10スレッド数が多くなっています。
1ページ10件表示用なので、例えば5件表示で使うと [>>] が横並びの最後にならず、ひとつ手前に出てしまいます。

お絵かき掲示板はこちら。

POTI-boardの頁リンクが増え続けるのを制御

POTI-boardは、1ページ10件表示で3000スレッドあったら300ページ分のリンクができる仕様…。

しかし、そんなに多くの古いログを見たい訳ではない時のほうが多いので…。
テンプレートで最初の20件だけ表示して、あとは頁へのリンク無しでもいいか…と思いましたが、それはそれで、古いログを見る時に…。

というわけで、以下の仕様になるようにPOTI-boardを改造してみました。

0から19ページまでは、
ページ番号0から20(0から20なので210スレッド分)までしか表示しない。
20ページになったら21ページ以後も表示。
3000スレッドあったら300ページ表示。
また、スレッドが210件未満の時は、存在しないページへのリンクができないように最初の条件分岐でログのカウントツリーをチェックして全件表示。
その場合は210スレッド未満なので、20ページ以下になります。

POTI-board

0-20ページまで表示。

POTI-board

20ページ以後を表示しているので、0-21ページまで表示。
もし300ページ分ログがあれば、0-300ページまで表示。

プログラムを書き換えた箇所
// for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
// if($st==$i){
// $pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
// }else{
// if($i==0){
// $pno = str_replace("<PAGE>", "0", OTHER_PAGE);
// $pformat = str_replace("<PURL>", PHP_SELF2, $pno);
// }else{
// $pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
// $pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
// }
// }
// $paging.=$pformat;
// }

コメントアウトしてあります。
//下段ページリンクの出力をifで分岐
//0-20まで表示する事を想定
//カウントツリーが指定した数値より小さい場合は全件表示

if(210 > count($tree)){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//スレッド数が指定した数値より大きな時は全件表示
//数値を-1小さく設定しないとリンクが表示されないページができるかも

elseif($i > 209 ){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//スレッド数が指定した数値より小さい時は任意の数値でページを表示

elseif($i < 210 ){
for($i = 0; $i < 210 ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}
//ここまで

書き換えた内容。

ちゃんとプログラムが書ける人なら、スマートにまとめる事ができる筈なのですが…。
とりあえず動いているからいいか…という…。

まともにプログラムが書ける方が見たら、うわっ…というプログラムになっていますのでご注意ください。
カタログページも対応させる場合は、該当箇所を同じように分岐させる事になります。

お絵かき掲示板はこちら。