にしし らぼらとりー

にしし(西村文宏)製スクリプトの公開開発実験場(ラボラトリー)です。各種スクリプトの最新版やβ版の動作確認ができます。バグ報告や、機能面でのご要望などもお気軽にお知らせ下さい。

※当ウェブサイトは、にしし製フリーCGIなどの動作確認サンプルを公開したり、製作進行に関する呟きを掲載している実験場のようなものです。 各種CGIスクリプトの配布パッケージを入手したい場合や、にしし(西村文宏)の個人サイトをお探しの場合は、 本家サイト「にしし ふぁくとりー」へお越し下さい。(╹◡╹)ノ

ざっくり最近の方針や状況など

最近のフリーCGI開発は、てがろぐ(→動作テスト)がメインになっています。しかし、他のネタもあるので新規に開発を進めたいとも思ってはいます。思っては。

個人的に日常的に活用しているのは、マイクロブログ的なメモ蓄積CGI「てがろぐ」と、複数のRSSフィードを結合して配信できるCGI「Fumy RSS Merger」でしょうかね。

たぶん昔から一番よく利用されているのは、スケジュール・カレンダー表示CGI「Fumy Teacher's Schedule Board」ですが、2000年代設計の古いUIが気になっていたので、ようやく2022年6月に新スケジュールカレンダー表示CGI「さんごよみ」として再開発しました。てがろぐ共々ご活用頂ければ幸いです。

諸々ご要望を頂ければ開発継続のモチベーション維持に役立つのでありがたいです。(๑╹◡╹๑)

RSS Feed

開発放言 (最新の20件)

今のところ、ソースコードは1,052行ほど書いているのだが、まだ先は長い。>>2480,2477/R

<50文字>

絵に描いた餅に終わらないように。

<16文字>

今、開発中の画像等ファイル展示PHP >>2477 だが、掲載順序をパラメータで指定できるようにした。デフォルトではタイムスタンプの新しい順に並ぶが、パラメータに
  • ?sort=time&order=reverse が指定されたら、タイムスタンプ古い順でソートして並べる。
  • ?sort=cap が指定されたら、キャプション文字昇順(ABC…)でソートして並べる。
  • ?sort=cap&order=reverse が指定されたら、キャプション文字降順(ZYX…)でソートして並べる。
  • ?sort=size が指定されたら、ファイルサイズ大きい順にソートして並べる。
  • ?sort=size&order=reverse が指定されたら、ファイルサイズ小さい順にソートして並べる。
  • ?sort=name が指定されたら、ファイル名昇順(ABC…)でソートして並べる。
  • ?sort=name&order=reverse が指定されたら、ファイル名降順(ZYX…)でソートして並べる。
……というような感じの指定ができる。

ファイル名やキャプション文字を使ってソートすることもできるので、事実上、自分の好きな順序で画像を並べて掲載することもできるだろう。ファイル名やキャプション文字を工夫すれば。(登録できる情報なら何でもソートキーに使えるようにするつもりなので、キャプション以外にコメント等も登録可能になれば、そのコメントの文字を使ってソートすることもできる。ただ、最初のリリース時点でそこまで作るかどうかは今の時点ではまだ分からない。)

ソートに使うキーをパラメータで指定できるので、複数の並べ方を共存させられる点が、何かちょっとメリットになりそうな気がする。「標準では新着画像の順に並ぶ」が、別途「ファイル名順に並べるリンクも設けておいて、望みの順序で表示するモードとして使う」とか。

主に画像を並べる用途を想定しているが、画像・動画・その他のファイルを並べることもできる。サブディレクトリの存在も認識するので、ファイラーっぽい感じの表示もできるハズ。(サブディレクトリへのリンクは、画像等と並べて同時に表示することもできるし、表示しないでおくこともできる。設定次第で。)

キャプション等を保持するデータファイルは、てがろぐCGIの画像インデックスファイル(index.xml)と互換性を持たせたので、てがろぐCGIの画像保存用ディレクトリを表示対象に設定して、てがろぐと組み合わせて使うこともできるような気がする。たぶん。

このツール上でファイルをアップロードすることもできるが(※まだそこまでは作れていないのだが)、FTP等の別手段でUPされたファイルもすべて認識する。キャプション等の情報はWeb上で1つ1つ登録することもできるが、データファイルはXMLなので、(FTPで一気に大量UPしたファイル群に対するキャプションは)XMLファイルを直接編集すると一気に登録できて楽かもしれない。

開発ネタ <1257文字>

WAFによる警告を回避して投稿できるように、フレーズの置き換え機能を用意したら良いのかもしれない。例えば「 @UPUP@ 」と打ったら内部では「 ../../ 」に変換されて解釈されるとか。「 @ETC@ 」と打ったら内部では「 /etc/ 」に変換されて解釈されるとか。「@」記号で挟まれる文字列は、利用者が自由に登録できるようにしたら、好きなように作れて良いのではないか。ショートコードみたいに使う方法もあるかもしれない。

てがろぐ <213文字>

次のてがろぐ正式版からは、TegUp も同梱するようにしたい。

てがろぐ <31文字>

不特定多数の人間で共用する、画像中心のファイル共有Webを用意する必要が出てきたので、何かそれっぽいツールを開発したい。2月中に。てがろぐのギャラリーモードでは機能的に適当ではないので。
必須の機能はだいたい以下のような感じ。
  • スキン式(てがろぐのようにスキンファイルでデザインを自由にできる)
  • 🔵指定ディレクトリ内に存在する画像ファイル等をすべて認識して表示できる(=このツールを経由せずにFTP等で別途UPしたファイルもすべて認識する)。
  • 🔵サブディレクトリも認識する。
  • 画像を投稿するのが基本だが、PDFとかZIPとか(あらかじめ許可しておいた)任意の形式のファイルも投稿できる。
  • 画像サムネイル(またはファイルアイコン)を並べて表示したり、リストで表示したり、複数の表示形態を併用できる(=複数のスキンを併用できる)。
  • キャプション(タイトル)を付けられる。
  • ハッシュタグで分類できる。
  • サムネイルを自動生成する(投稿時に)。 ※GDライブラリで扱える形式だけ。
  • サムネイル用画像を別途指定もできる。
  • PDFとかZIPとかの画像以外のファイルでは、サムネイルを指定しなければ、デフォルトの分類画像(アイコン)で表示する。
  • 画像(or任意ファイル)1つだけを単独で表示する個別ページも生成できる。
  • ログインしていなくても誰でも投稿できる。(この機能をOFFにすれば、自分専用の画展ツールになる)
  • 非ログイン者が自分の投稿ファイルを削除できるように、投稿時に「削除用パスワード」を設定しておける。
  • 投稿者名も併せて投稿できる。(非ログイン者用)
  • 投稿可能なファイルサイズの上限を指定できる。キャプション等の文字数上限も。
  • 投稿年月日で区切って表示できる。(てがろぐの「日付境界バー」みたいな区切りを自動挿入できる)
  • ページ内に投稿欄を表示できる。(てがろぐのQUICKPOSTみたいな。)

そのほか、あると望ましいが必須ではなさそうな機能は、以下のような感じ。
  • キャプションとは別に、短いコメントも付けられる。(プレーンテキスト)
  • ログインしていれば投稿者を認識して投稿・編集・削除できる。
  • 既にUPされている画像(or任意ファイル)の差し替えができる。
  • ハッシュタグの一覧を表示できる。
  • NSFW等のフラグを付けられる。
  • 検索できる(ファイル名、キャプション、コメント、ディレクトリ名、ファイル種類、投稿者、日付で)。
  • 新着順以外に並べ替えができる。(ファイル名のアルファベット順とか)
  • OGP(+Twitter Card)を出力できる。
  • RSSフィードを出力できる。
  • ファイルのタイムスタンプとは別に「投稿日時」を保持しておける。(手動で投稿日時を編集できるように。)

さらに、あったら便利だろうと思う(最初には作らないが、将来的に作ることを想定しておく)機能は、以下のような感じ。
  • カテゴリで分類できる。+カテゴリの一覧を表示できる。
  • サブディレクトリがある場合は、投稿時にアップロード先ディレクトリを選択できる。
  • 離れた位置にあるディレクトリも対象にできる。
  • 一覧から、複数ファイルの一括削除ができる。
  • サムネイルが生成されていない画像(FTP等でUPされたとか)のサムネイルを一括生成できる。
  • コメントの文字を装飾可能にする。
  • 複数画像の連結表示ができる。(並び順も指定できると良い)
  • NGワードを登録しておける。
  • ダウンロード数(閲覧数)を記録できる。
  • 鍵付きにできる。(アクセス制限された専用ディレクトリにUPしておいて、プログラム側が毎回バイナリを読み込んでダウンロードさせることで、直アクセスを不可にする。)
  • ユーザIDに、名前だけでなくアイコンや紹介文等の付加情報を登録できる。

キャプション等を記録するデータファイルは、てがろぐ画像保存用ディレクトリで使っている index.xml と互換性があると便利かもしれない。

問題は、企画倒れにならないようにモチベーションを維持して開発できるかどうかだ。(何らかのツールが必要なのは間違いないのだが。現状では、2000年代に開発されたファイル共有CGIが稼働しているので最低限の中の最低限くらいのことは実現できているので。絶対的に何が何でも開発が必要というわけではないので、モチベーションの維持材料が何かもうちょっと要るかもしれない。)

開発ネタ <1829文字>

ログインしていない限り全部見えなくする「完全プライベートモード」的な動作も、そんなに手間を掛けずに実装できそうな気がしてきたので、実装しようかな……。
主に「自分(または仲間内)専用の空間にする」という用途だけども、同時に「ゲスト権限(Lv.1)での投稿を禁止する」という設定も可能にすると、「読めるだけのユーザID」を用意することもできそうな気もする。その場合、事実上「すべての投稿を(共通)鍵付きにする」のと同じ効果にできそうな。(そういう要望もあった気がする。)

てがろぐ <234文字>

自前の静的サイトジェネレータを作るとしても、時間(と気力)が確保できそうなのは早くても3月か4月頃になりそうな気がする。気温が春になってからだな……。_(:3」z)_ ざっくり、1月は寒くて気力が減退気味だし他の用事もあるし、2月は税金で忙しいし、3月は別件でちょっと忙しい可能性があるので。ただ、3月の別件は、3月に始めたのではやや遅いので2月中には始めないといけないのだが。なので早ければ3月には予定が空く可能性はあるのだけども。もちろん、仕事の入り具合にも依って異なるけども。

<241文字>

てがろぐで、最新の1投稿だけを別ページに埋め込みたい場合、今は「埋め込み用のスキンを作ってSSIやPHPで合成する」とか「RSSを読んで整形して合成する」とか何かそういう感じの方法しかないので、何にしても「最新の1件を出力するために、てがろぐCGIが動作する」という背景は避けられない。なので、『最新の1件だけを指定のスキンを適用して出力した結果を、静的なHTMLとして出力しておく』という動作をする「埋め込みモード」みたいなのを用意できれば、埋め込むためだけにCGIを稼働させずに済むので、埋め込み先ページの速度向上(というか速度低下の防止)に役立つ気がする。もちろん、サーバの負荷軽減にもなる。埋め込み先ページはたいていHOMEみたいな「アクセス頻度の高いページ」だろうから。

てがろぐ <340文字>

ようやく申請が通った。20分弱くらいだ。予想よりは早かった。数時間は待たねばならないのかと思っていた。

<51文字>

私のネット環境では、既にこのドメインは新サーバに繋がっているのだが、まだSSLの申請ができない……。(ので、HTTPSでアクセスするとセキュリティ警告が出る。)

<80文字>

《ここは移転先の新サーバ》

<13文字>

今は、ChatGPTとかのAIによる補助が得られるから、もっと速度UPできそうな気はする。

開発ネタ <45文字>

自分が最低限欲しいと思える機能を実装した静的サイトジェネレータを作るのに、もし(ほぼ)その開発だけに集中できるとしたら、どれくらいの期間で出来上がるだろうかな……? てがろぐを最初に開発しようと思ってからVer.1をリリースできるまでに4~5ヶ月くらい掛かっていたような気がする。夏から作り始めて12月リリースだったような。(その期間は、開発だけに専従していたわけではなく、日常業務の合間に進んでいたわけだが。)

開発ネタ <206文字>

1月を丸々開発月間に充てて、自前の静的サイトジェネレータを作ろうかな……。

開発ネタ <37文字>

スキンを格納しているディレクトリの中に edit.css や edit.js がある場合、そのスキンで表示されている状態から編集画面にアクセスした場合には、スキンディレクトリにある方の edit.css や edit.js を読むようにしようか……?

てがろぐ <125文字>

この実装方法を考えていたときに気付いたのだが、てがろぐの全文検索では AND、OR、NOT検索が可能ではあるものの、ORの構成要素にNOTを使う検索はできない仕様だった。
例えば -りんご -みかん のようにAND検索の構成要素にNOTを使うことはできるが、 -りんご|-みかん のようにOR検索の構成要素にNOTを使うことはできないと気付いた。そんな需要があるかどうか分からないが(なさそうな気もする)。どちらにしても、激しく面倒なので対応する気はない。┌(:3」└)┐ ChatGPTに頼めば良さげなアルゴリズムを教えてくれそうな気はするけども。

てがろぐ <278文字>

IF文の実装には、ソースを10行くらいしか追加していない。一番面倒だと思われた条件指定部分 [[IF(この部分):~~~ は、元々てがろぐに実装していた全文検索関数にそのまま丸投げすることで済んだので、ほとんどコードを書く必要がなかった。なので、中身は全文検索機能そのままなので、SITUATION:CLASSとして出力される各キーワードと完全一致ではなく部分一致でも使える。例えば、投稿単独表示時には onelog で、複数投稿の連結時には somelogs というキーワードになる仕様なので、[[IF(log):~~~ とだけ書くと、その両方にマッチできる。この仕様があるので home を条件に指定すると問答無用で grandhome にもマッチしてしまうのだが、元々 grandhome は home を内包しているので問題なかった(たぶん)。

てがろぐ <376文字>

てがろぐ本文に書ける装飾記法等は入れ子にできるのだが(できないと不便だから頑張ったのだが)、この判定が凄まじく面倒くさいことに(入れ子を可能にするための)実装段階で気がついた。始まりは [B: のように英字が付いているので探すのは簡単なのだが、終わりは単に閉じカッコ ]があるだけなので、それだけでは「どの装飾の終わりなのか?」が分からない。なので、カッコの対応を外側から順に判別しながらでないと終わりを特定できない。たぶん本職のプログラマが見たら噴飯物の力業で解決してある。世の中にはもっとスマートな解決策があるような気がするが。で、今回実装したIF文にもその問題があるのだが、さすがに面倒くさすぎるので、[[IF(…): で始まるだけでなく ~:IF]] で終わる仕様にした。書くのが少々面倒だが、IF文はそんなに頻繁に書くわけではないだろうから容認してもらいたい。┌(:3」└)┐ なお、IF文自体は入れ子にできない。ELSEとかもない。条件指定部分でAND・OR・NOTを併用できるので、IF文を入れ子にする必要性はないのではないかと思っている。ELSEがあれば便利なのはよく分かるのだが、実装方法を考えるだけで気が遠くなるので考えていない。

てがろぐ <525文字>

このIF文は、外側スキンでも内側スキンでも両方で使える。 >>2462

てがろぐ <35文字>

Powered by てがろぐ Ver 4.2.2.

関連サイト・ページのご案内

にしし(西村文宏)の個人サイトをお探しの場合は、本家サイト「にしし ふぁくとりー」へお越し下さい。

  • 各フリーCGIの公式ページをご覧になりたい場合は、フリーCGIコーナーをご覧下さい。
  • 作者(にしし)へ連絡を取りたい場合は、連絡先ページをご覧下さい。
  • 作者(にしし)にコーヒーをおごりたい場合は、コーヒーをおごるページをご覧下さい。(✧ω✧)

▼にしし製 重点開発フリーCGIの動作テスト

▼にしし製フリーCGIの動作テスト

▼にしし製フリーCGIの動作サンプル

※当サイト内にある稼働例と、実際に配布しているスクリプトを設置した結果とでは、若干動作が異なる場合もあります。疑問点はお気軽にお問い合わせ下さい。 また、機能面のご要望なども歓迎致します。(╹◡╹)ノ