Skip to content

Commit

Permalink
README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
satopian committed Dec 17, 2024
1 parent 6b49539 commit 9730f71
Showing 1 changed file with 264 additions and 0 deletions.
264 changes: 264 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,270 @@ BBSNoteとPOTI-boardのログファイルをPetit Note形式に変換できま
その他の機能追加が特に必要ではない方もアップデートをお願いします。

## 履歴
## 2024/12/16 v1.63.5
### 「SNSで共有」機能がThreadsに対応しました

![241216_Threads対応](https://github.com/user-attachments/assets/a07cb6fc-1df9-4a87-9ad7-fb54d372727f)

- Meta社のSNS「Threads」の共有リンクが作成できるようになりました。
変更するファイルの数は少ないのですが、「Threads」に対応させるには、`config.php`の再設定が必要になります。
「Threads」対応の必要が無い場合は、`config.php`の再設定は必要ありません。
```
// SNS共有の時に一覧で表示するサーバ
//例 ["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)
$servers =
[
["X","https://x.com"],
["Bluesky","https://bsky.app"],
["Threads","https://www.threads.net"],
["pawoo.net","https://pawoo.net"],
["fedibird.com","https://fedibird.com"],
["misskey.io","https://misskey.io"],
["misskey.design","https://misskey.design"],
["nijimiss.moe","https://nijimiss.moe"],
["sushi.ski","https://sushi.ski"],
];
// SNS共有の時に開くWindowsの幅と高さ
//windowの幅 初期値 600
$sns_window_width = 600;
//windowの高さ 初期値 600
$sns_window_height = 600;
```
`["Threads","https://www.threads.net"],`
が1行追加になり
さらに
$sns_window_width = 600;
$sns_window_height = 600;
のように、初期値を600pxに変更しています。
ここのウィンドウサイズを変更しなくても表示できますが、画面下側が少し隠れ気味になります。
また、従来のウィンドウ幅でSNSの共有先の画面が表示されたあとの操作のための幅と高さが不足していたかもしれません。
そのため、幅、高さともに600pxに拡張しています。

### 2024/12/12 v1.63.5
### PaintBBS NEOで「画像から続き」を描いた時にもレイヤー情報を保存
- 「動画から続きを描く」「画像から続きを描く」のうち、画像から続きを描くを選択した時には、描画アニメデータを保存しない仕様を廃止して、どちらを選択しても、描画アニメデータを記録するようにしました。
「画像から続きを描く」とその画像以前の描画アニメデータは消えますが、そこから作画した描画アニメデータは記録されるようになりました。
単に作画工程を再現するだけでなく、そこにはレイヤー情報が含まれているからです。
意図せずレイヤー情報が消えてしまうリスクを減らします。
- 描画アニメデータが保存されない時は、「レイヤー情報は保存されません。続行してよろしいですか?」という確認ダイヤログが開くようになりました。
「OK」「キャンセル」のうち「OK」を押した時にのみ、レイヤー情報なしの状態で保存します。
キャンセルすれば、レイヤー情報が消えてしまう前提で作画を続行できます。
- 「画像から続き」を描いた時にも描画アニメデータが記録されるようになったため、「動画を表示しない」のチェックボックスを表示するしないの判定をJavaScriptで行うようになりました。
### マークダウン形式のリンクの機能を改善
- マークダウン形式のリンク`[文字列](URL)`を改善しました。
文字列を指定する`[]`の中にさらに`[]`がある時は、バックスラッシュ(円マーク)でエスケープします。
エスケープされていれば
[\[12345\] Petit Note](https://example.com)
のようなリンクになります。
例)
```
[\[12345\] Petit Note](https://example.com)
```
マークダウン形式のリンクを作成するChromeの拡張機能のいくつかは、上記の例のように`[]`の中の`[]`をバックスラッシュでエスケープしますから、拡張機能が作成したマークダウンのリンクをそのまま使う事ができます。

### 記事編集前画面からスレッドに戻る
- 記事の編集・削除前画面からスレッドに戻るリンクをクリックした時に、該当発言の位置まで画面がスクロールするようになりました。
### AXNOS Paint更新
- 軽微なCSSのバグを修正しました。

## 2024/12/08 v1.61.1
### ペイントツール固有形式ファイルが存在している時にもすべてのツールで続きを描く事が可能に
- これまではChickenPaint固有形式`.chi`、PaintBBS NEO固有形式`.pch`、Klecks固有形式`.psd`が存在する時は対応するペイントツールが起動して、他のツールを選択する事ができませんでした。
これは、レイヤー情報を含むファイルが存在しているのに、レイヤー情報を引き継ぐ事ができない別のペイントツールを選択する必要はないという判断からでした。
しかしながら合作などの場合には、描きやすいツールが人によって異なるため、ツールを自由に切り替える選択肢も必要でした。

![241208_続きを描くツールを選択可能に](https://github.com/user-attachments/assets/fbcd026d-9ce8-4ade-ad1c-d16a6a430065)

「続きを描く」時に、レイヤー情報が存在するツールのみの状態で画面が開いたあと、「別のツールを選択する」ボタンを押下すればツール選択のプルダウンメニューが表示されるようになりました。

### AXNOS Paint更新
- 画面が狭い端末でも操作しやすくなりました。

## 2024/12/04 v1.60.7
### ChickenPaint Beで通信エラーが発生した時のHTTPステータスコードをよりわかりやすく
- これまでChickenPaint Beで通信エラーが発生した時のエラーメッセージは英語のみでした。
今回の更新で日本語環境の時には、通信エラー時のエラーメッセージが日本語で表示されるようになりました。
- 最初に表示される「画像を保存できませんでした。」に続く文言に「エラーメッセージをご確認ください。」と入るようになりました。
エラーが発生した状況の詳細は、このアラートではなく次に表示されるエラーメッセージにあるのでそちらを見て欲しいからです。

![image](https://github.com/user-attachments/assets/becd7993-997f-40cd-bf97-7857cd94b045)
「エラーメッセージをご確認ください」に文言を変更。

![image](https://github.com/user-attachments/assets/53087df8-aff0-43a7-a8aa-7c502c57ce66)
エラーメッセージの3桁の数字がHTTPステータスコードである事をわかりやすく表示。

この場合は「404」なので、404Not Foundです。
サーバが混雑している時には「503」が返ってくる可能性が高く、サーバによる拒否であれば「403」が返ってきます。
「200」の時には投稿可能な状態なので、エラーメッセージは表示されず投稿処理が行われます。

## 2024/12/03 v1.60.6
### ユーザー認証コードの見直し

- ユーザーコードを64文字に拡大しました。
- 画像差し換え時の認証コードのハッシュ値の種にパスワードを使用するのを止めました。
- 画像差し換え時の認証コードに、記事番号と記事IDをそのまま含める形にし、記事が異なる時には認証コードの重複が発生しないようにしました。
(従来の方式でも重複発生による事故は確認されていません。)
- 画像差し換え処理の時にも、投稿された画像の本人確認を追加して、ユーザーコードあるいはIPアドレスが一致する時にのみ投稿が成功するようにしました。
### コード整理
- 機能上はなんら変わりありませんが、削除可能な箇所のコードを削除して、メンテナンスしやすくしました。

### ChickenPaint Be更新

![image](https://github.com/user-attachments/assets/9fa7511d-3d4f-45c8-b478-076312567258)

[Feature request/proposal: converting brightness to opacity · Issue #4 · satopian/ChickenPaint_Be](https://github.com/satopian/ChickenPaint_Be/issues/4)

- 「輝度を透明度に変換」機能を追加しました。
- [@SuzuSuzu-HaruHaru](https://github.com/SuzuSuzu-HaruHaru)さんが作成した原型をもとに不透明度の計算方法を調整し、一般的なペイントソフトと比較しても遜色のない機能として実装しました。

## 2024/11/26 v1.58.3
- PHP8.4で、exit()が言語構造から関数になったため、丸括弧なしの`exit;``exit();`に変更しました。
丸括弧なしの`exit;`は将来のバージョンのPHPでは非推奨になる可能性があります。

【PHP8.4】exitが言語構造ではなくなった #日本語訳 - Qiita
https://qiita.com/rana_kualu/items/60912b8cac8deeaa3560

- webp形式のサムネイルへの切り替えの対応が不十分だっただめ、投稿通知メールに、サムネイルのurlが表示されなくなっていたのを修正しました。
- サムネイル作成ができるかどうかチェックしていた関数を`thumbnail_gd.inc.php`のメソッドにして1つのclassにまとめました。
functions.phpの行数が減りメンテナンスしやすくなりました。

## 2024/11/22 v1.58.3
### 新しいPHP8.4に対応させるため古いPHP5.6の対応を終了
- 古いPHP5.6でも使えるようにしてきましたが、PHP7.0以後に追加された新しい関数を使用する必要にせまられたため、PHP5.6の対応を終了しました。
- 動作環境はPHP7.0-PHP8.4になります。

PHP8.4のRFCで削除が検討されたものの、反対票がわずかに多かったため非推奨にならなかった関数のいくつかをPetit Noteで使用していました。

PHP: rfc:deprecations_php_8_4
https://wiki.php.net/rfc/deprecations_php_8_4

> Deprecate uniqid()
今後の事を考えて、`uniqid()`の使用をやめ、代わりに`random_bytes()`を使用する事にしました。
しかし、この関数はPHP7.0以降でなければ使う事ができないため、Petit Noteの動作環境を、PHP7.0からPHP8.4に変更しなければならなくなりました。
よほど古いサーバであったり、古いPHPスクリプトを動作させる必要があるとかでなければ、PHP5.6対応終了で困る事はないと思いますが、サーバのPHPのバージョンの設定でPHP5.6を選択している方は、お手数ですがPHP7.0以降への設定の切り替えをお願いします。

### 同じ画像チェックのためのハッシュ値のアルゴリズムをmd5からsha256へ

> Deprecate md5(), sha1(), md5_file(), and sha1_file()
PHP8.4のRFCで`md5()`の廃止も検討されていました。
そのため、同じ画像が連続投稿されるのを防止するために使用していた`md5`による画像のハッシュ値の取得を`sha256`に変更しました。
#### 問題点
- これまでのログファイルのハッシュ値は`md5`で取得したものであるため、過去の画像のハッシュ値は意味をなさなくなってしまいます。
- そのため、v1.58.3への更新後に新規に投稿された画像のみが重複チェックの対象になります。

### クロールしても意味がない「編集」「未投稿画像」のリンクに`rel="nofollow"`
- Googleがクロールに使ってくれる時間は有限でリンク数が多いと「割当量を超えています」となり、それ以上クロールしてくれません。
- この時に、クロールしても意味が無いリンクをクロールしないように指定するとその分、必要なクロールをしてくれます。
- 「編集」「未投稿画像」のリンクを辿ってクロールしないように指定しました。

## 2024/11/15 v1.57.5
### NEO更新
- PaintBBS NEOを v1.6.8(Petit Note版)に更新しました。
### 描画時間の英語表記の改善
- hrをhour、hoursに変更。単数形と複数形の切り替え。「1 hour」「2 hours」のようなより自然な英語表記になります。
- 日本語表示に変更はありません。ブラウザの優先言語が日本語の時には日本語で「1時間」「2時間」のように表示します。
### 短くできるコードは短くする
- ファイルポインタを開いてユーザーデータを取得していた処理を、`file_get_contents()`に置き換えてコードをより簡潔に。
### クロールしても意味がないSNS連携のリンクに`rel="nofollow"`
- Googleなどの検索エンジンにこのリンクを辿らないようにと指示をだす、`rel="nofollow"`で、SNS連携のリンクをクロール対象から外します。
- クロールしても意味がないにも関わらずSNS連携のリンクは1スレッドに一箇所存在するため、Googleはクロールしようとします。
- クロールして欲しいページが割当量超過でクロールされなくなる問題の改善を期待して実装しました。
### 変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- functions.php
- index.php
### 変更があったテンプレート
- template/basic/parts/threads_loop.html

## 2024/11/11 v1.57.2
### バグ修正
- v1.57.0で発生した、記事を編集するとサムネイル画像ではなく、本体画像がそのまま表示されてしまうバグを修正しました。
- 修正されたv1.57.2で再度記事を編集すれば、再度サムネイル用の縮小された画像が表示されるようになります。
### .htaccessをApache2.2形式からApache2.4形式に
- Apache2.4で非推奨になったorder allow denyを、Apache2.4にあわせて書き直しました。
2024年時点のレンタルサーバの多くは、まだ古い書き方でも動作しているようですが、Apache2.2は2017年にサポートが終了しているため、新しい.htaccessへの更新をお願いします。

参考文献
> Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4
> https://httpd.apache.org/docs/2.4/ja/upgrading.html
>
> Apache | Requireディレクティブ:アクセスの許可や拒否などのアクセス制限を行う(Apache2.4以降)
> https://www.javadrive.jp/apache/allow/index1.html
>
### 変更があったファイル
- index.php
- .htaccess
- template/.htaccess

## 2024/11/10 v1.57.0
### webpサムネイルがある時はjpegのサムネイルを作成しない
- これまではjpeg、webp両方のサムネイルを作成して、pictureタグでwebp形式の画像が表示できないブラウザの時にはjpeg形式のサムネイルを表示していました。
しかしながら、v1.56.2で、本体画像そのもののwebp形式への変換が行われる仕様になったため、すでにwebpが表示できないブラウザの対応ができなくなっていました。
そのため、中途半端なwebpが表示できないブラウザの対応を終了します。
これにより、webp形式のサムネイルが作成に成功した時はjpeg形式のサムネイルを作成する必要がなくなりました。
テンプレートのhtmlのpictureタグでwebpとjpegを振り分けていた処理が必要なくなりました。

## 2024/11/08 v1.56.8
### Klecksでファイルサイズが大きすぎる時に詳細なエラーメッセージを表示
- 「ファイルサイズが大きすぎます。制限値:20MB 現在値30MB」のような形式でエラーメッセージを表示します。
Klecksで出力するPNG形式の画像ファイルとPSD形式のレイヤー情報を合計した値が、サーバの許容値を超えてしまった時に、なぜ投稿できないのかを詳細に表示します。
これまでは「投稿に失敗。時間を置いて再度投稿して下さい。」とだけ表示されていました。
レイヤー情報込みのファイルサイズなので、レイヤーの枚数が多いほど上限を超えやすくなります。
レイヤーを結合すればファイルサイズは小さくなります。

![image](https://github.com/user-attachments/assets/967c4189-b32b-47e6-883a-2cfd9634b1e8)

日本語表示時。

![image](https://github.com/user-attachments/assets/5ab0a273-619c-4206-a24e-f2451aded124)

英語表示時。

## 2024/11/06 v1.56.7
### ChickenPaint Be更新
- ファイルサイズがサーバの許容値を超えている時により詳細なエラーメッセージを表示します。
「ファイルサイズがサーバーの上限を超えています。」というエラーメッセージを表示します。
また、上限値と現在のファイルサイズも表示します。
これまでは「お絵かきが保存できませんでした。再度投稿してみてください。」とだけ表示されていました。
ChickenPaintのレイヤーを統合して整理すれば投稿時のファイルサイズは小さくなります。このエラーメッセージが表示されて投稿できない時はレイヤーを結合すれば投稿が可能になる場合があります。

![image](https://github.com/user-attachments/assets/0be1d65a-1801-4916-aa70-4c057c44e374)

> アップロード容量の制限値を知りたい(ファイルマネージャ、FTP、PHP) - よくあるご質問 - さくらのサポート情報
> https://faq.sakura.ad.jp/s/article/000001463
さくらのレンタルサーバでは、初期設定で5MBまでとなっており、それよりも大きなファイルサイズを許容してたい時は、php.iniを編集します。
Petit Noteでは、post_max_sizeとupload_max_filesizeの両方の値をみて、より小さいほうを制限値として使いますので、以下の2つの上限値を調整する必要があります。
php.iniの編集方法はサーバのマニュアルなどでご確認ください。

以下の設定例の単位はMBです。
あまり大きくしすぎるとDdos攻撃の被害にあいやすくなる事がありますので、ご注意ください。
JavaScriptのアプリの安定性なども含めて考慮すると大きくても25MBぐらいが妥当だと思います。
#### 設定例

```
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; https://php.net/post-max-size
post_max_size = 20M
; Maximum allowed size for uploaded files.
; https://php.net/upload-max-filesize
upload_max_filesize = 20M
```

## 2024/11/03 v1.56.6
### ChickenPaint Be更新
Expand Down

0 comments on commit 9730f71

Please sign in to comment.