にしし らぼらとりー

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

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

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

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

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

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

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

RSS Feed

開発放言 (最新の20件)

てがろぐのヘルプドキュメントも、技術系ドキュメントサイトでよくある「メニュー段と本文段の2段組で、メニュー内のハイライトが現在位置に連動する」ような感じにしたいが、なんか手軽に作る方法はないものか。てがろぐの場合はメニュー項目数が多いので、そこもちょっと大変そうな気もしたりしなかったり。

てがろぐ <144文字>

レンタルサーバ別のセットアップ方法は詳しく用意したと思ってはいるのだが、それでもまだ情報が足りないという場合、何が足りないのだろうか。FTPソフトを使ってパーミッションを変更する方法が分からないとか、その辺の操作方法?

てがろぐ <109文字>

スキン式のメッセージ送信システムをPHPで作りたい。メール送信フォームをスキンで用意できるもの。スキンを複数用意しておけば、複数箇所のメッセージ送信を1つのPHPで扱えるような。入力欄の個数とかもスキン側で自由にできるので単なるメール送信フォーム以外にもコンタクトフォームとかアンケートフォームとかにも使えなくもない感じの。メール不達に備えて一定期間はメッセージ本文を管理画面から再確認できる機能もあると良い。

開発ネタ <205文字>

てがろぐを(不特定多数が利用できる)掲示板的に活用したいとすると、少なくとも「名前」の任意入力欄が要る。しかし、そういうUIを付け加えられるオプションを加えてしまうと、UIもデータもずいぶん複雑になるし、そもそも設定が分かりにくくなる問題がありそうな気がして、望ましくはなさそうに思っていた。のだが、てがろぐには元々「投稿本文を行単位で分解して扱う」機能があるのだから、投稿欄そのものも(スキン側で)分割して用意できる仕様を用意して、投稿欄がいくつに分割されていようとも上から順に1行目扱い・2行目扱い・3行目扱い……というようにデータに記録する仕様にすれば、あんまり複雑にすることなく掲示板のようにできるのではないか、というような気もしてきた。
てがろぐBBSモード的な案
今のところ、スキン側で投稿欄をどうにかする仕様はないし、未ログイン状態で投稿できる機能もないので、これを実現するとしたらその辺は新しく加えないといけないけども。しかし、「投稿本文を行単位で分解して扱う」機能を活用するなら、掲示板の項目数も好きなようにできるし、わりと柔軟な掲示板にできそうな気もしないでもない。

てがろぐ <480文字>

てがろぐ設置の創作系サイトサーチ「てがWA!」の反響がすごくて、そんなに需要あったんか、と驚いている。いや、需要あったんか、というか、てがろぐユーザがそんなに居たのか、という驚きもあったが。(笑)
サイトを拝見して、私では絶対にこう上手くは作れなかっただろうから、やはりサーチサイトの文化を理解している人が作ると違うな……と感心している。たいへんありがたい。

私が作りかけて放置している「てがろぐユーザリンク集」的なものは、だいたい以下のような形態を考えていたので「サーチ」という感じでは全然ない。
  • てがろぐが稼働していれば、内容(ジャンル)に関係なく登録可能。
  • てがろぐCGIへの直リンクと、(併載されるバナー等で)サイトTOPへの2つリンクを掲載。
  • 定期的に(登録された各てがろぐを)クロールして、タイトル・概要文・更新日時の最新情報を取得して自動更新。
  • 最終更新日時の新しい順にソートして掲載。
(もしできあがれば)単に更新日時の新しい順にリンクBOXが並ぶだけの、かなり雑多なリンク集になる気がする。
分類から探すような「サーチ」ではないので、ほぼ「一期一会」みたいな? たまたま目に付いたものにアクセスしてみるような。
なので、先の「てがWA!」と競合はまったくしないだろう。

※もし完成したら、の話である。^^;(このまま放置が続いて完成しない可能性もある。)
需要はあるっぽくて、登録者もそこそこ居そうな気配なので、製作を再開しても良いかなとは思っているのだが、1からPHPを書いているので、どちらにしても時間はかかる。

てがろぐ <673文字>

てがろぐCGIを1個設置しておくだけで複数個のマイクロブログを作れる仕様になっていると、便利だとは確かに思う。
例えば tegalog.cgi?file=hogehoge.xml のようなパラメータを加えることで、デフォルトのデータではなく hogehoge.xml のデータを読んで表示するような。
最初から複数のデータファイルを扱える仕様で設計を考えていれば、実現はそんなに難しくはなかったとは思うのだが、最初の開発の段階ではそうは考えなかったので、そう簡単にはいかない状態になっている。

便利だとは思うので(実現できたら個人的にも便利に活用するシーンが多々あると思うので)、時々は「何かうまい方法はないかな?」と考えはするのだが。

ハードルは主に2点。

まず、パラメータを絶対にずっと維持しないといけない点。
file=hogehoge.xml というパラメータでアクセスされた後は、あらゆるリンクに &file=hogehoge.xml を漏れなく加える必要がある。どこか1カ所でも抜けてしまうと、そのリンクを踏んだときにデフォルトデータへのアクセスに戻ってしまう。現状のてがろぐ内には(ページ移動でも管理画面内でも)多数の移動経路があるので、本当に漏れなくパラメータを維持させられるか確認するのが面倒という話。(^_^;) これは、「一時適用スキンの維持」と同じ仕組みが使えるので、そこまで大きな問題ではないかもしれないが。ただ、スキンの場合なら「いつの間にかデフォルトスキンに戻っていた」といってもそんなに問題にならないだろうけども、データファイルの場合はそうとも言い切れない。例えば、本当は hogehoge.xml から10件削除するつもりだったのに、デフォルトの tegalog.xml から10件削除されてしまった、とかちょっとダメージが大きそうだし。なので、実装してみてもその厳重な動作テストが要るよな……というハードル。

もう1つは、キャッシュも設定もすべて同じファイル tegalog.ini に記録されている点。
複数のデータを扱う仕様を考慮していなかったので、てがろぐの動作設定も、カウント値とかのキャッシュデータも、何もかもを全部一緒くたにして1つのINIファイルに保存する仕様になっている。なので、複数のデータファイルを扱えるようにするには、既存のINIファイルから「動作設定」部分と「キャッシュ」部分とに分離してファイルを分けないといけない(気がする)。とはいえ、動作設定もデータファイルごとに分ければ良いのではないか(むしろその方が便利かもしれない)という考えもあるかもしれない。しかし、動作設定には「動作に関する設定」だけでなくて「ユーザ一覧情報」も含まれているので、そこを分離すると困る(ユーザ情報は同じデータをずっと保持しないとログイン状態が維持できないので)。
まあ、それなら「ユーザ情報」と「動作設定・キャッシュ」の2つに分割すれば良いのではないか、という話はあるが。

ただ、複数のINIファイルが存在する可能性を一切考慮せずに作り始めたシステムなので、CGIが実行された時点でとりあえずINIを問答無用で読み込むような処理になっている。なので、そこを変えるなら、かなり最初の段階の動作から変更することになるので、連鎖的に変更しないといけなくなる分量が多くなりそうだ。従来なら最初に1回問答無用で1つのINIファイルを読んでおけば良かっただけのところを、INIファイルAだけを問答無用で読み、パラメータに応じてどのINIファイルBを読むのかを判断して読まないといけないわけだし(※これにはさっきの「本当に読むべきファイルの方を間違えずに読み続けられるのか」という問題もある)。そうすると、ただでさえスパゲッティ気味なソースが、救いようのないほどこんがらがるのではないか、という懸念もある。なので、そのような改変を加えるなら、まずは大規模にリファクタリングをして、ソースを綺麗に整頓してからでないと危険だろう。……というハードル。

あと、細かい話だが、
設定ファイルを2つ分割すると、デフォルト状態(=マイクロブログを1個しか用意しない状態)でも2つの設定ファイルが要ることになるので、構成ファイルの数が1個増える。
できるだけシンプルに見えるようにしたいという思惑もあるので、構成ファイル数を増やしたくないという思いもある。
CGIなのでパーミッションの設定をしてもらわないといけないので、ファイルは少なければ少ないほど望ましい。もちろん、1個増えただけでそんなに手間が増えるわけではないのだが。「1個だけで済むのか」は詳しく考えてみるまで分からない。とにかく、あらゆるデータは全部INIファイルに放り込んでいる仕様なので、もしかしたら3つに分割しないとやっていけないかも知れないし。

……というように、わりと考えないといけないことがかなーり結構たくさんあるので、(実現したら便利になるだろうとは思うのだが)なかなか手が出せない。

で、そこまでするのと比較すると、もう「てがろぐを2つ設置してくれ」となるわけである。(笑)

もしかすると、「設置を1個で済むようにする」よりも、「自動でバージョンアップできるようにする」方が、役に立つのではないか。設置を1個で済ませたいのは、バージョンアップの手間を省きたい、という理由も大きそうだし。

てがろぐ <2251文字>

>>2361 ただ、標準添付スキンをベースにしてちょっとだけ(配色とかを)書き換えるだけの小さなカスタマイズだけをして使っていて、バージョンアップのたびに標準添付スキンも(自分のカスタマイズ箇所だけを書き換えて)上書きアップロードしている……という場合、標準添付スキン側のソースが大改造されてしまうと困る可能性がある問題はあるかもしれない。そういう使い方をしているユーザさんが居るかどうかは分からないが……。

てがろぐ <204文字>

画像のタイムスタンプ(≒画像ファイルのUP日時)を出力できる記法って要る?

てがろぐ <37文字>

てがろぐ標準添付の各スキンは、IEを考慮したCSSになっているので、さすがにそろそろ全面的にモダンなソースに書き換えた方が良い気はしている。気は。特に2段組の作り方。

てがろぐ <83文字>

今、唐突に気付いたのだが。てがろぐ配布ZIPの中には、データファイルが3つ含まれている。tegalog.xml と tegalog.ini と psif.cgi だ。これらは、バージョンアップ時に誤って上書きしてしまうとデータが消えてしまうので、あえて 2017年 という古いタイムスタンプにして収録してある。その場合、仮に全ファイルをまとめて上書きアップロードしようと操作してしまっても、FTPソフトで「新しい場合にだけアップロード」みたいなオプションを使っていれば、上書きが阻止されるだろうから。仮にその機能を使っていないとしても、展開したファイルを更新日時でソートすれば、上書きが必要なファイルだけが上に並ぶだろうから。
……のだが、ZIPの展開ソフトによっては、中身を展開した時点で元ファイルのタイムスタンプを破棄して、「展開した瞬間の日時」に書き換えてしまうのもあるのな……。その場合、あえてタイムスタンプを古くしてある配慮に意味がなくなる。
てがろぐZIP
そして、Windowsの標準機能でファイルを展開した場合も、元のタイムスタンプは破棄されて「現在日時」がタイムスタンプになることに、いま気付いた……。_(┐「ε:)_
なんでやねん。┌(:3」└)┐

てがろぐ <527文字>

投稿日時として50年以上前の日付(1973年とか)を指定したとき、相対時間表記(=投稿時点からの経過時間の表記)が正しくなくなる問題を修正した。さすがにそんな日付で投稿するユーザは居ないと思うが。エポック秒から日時を割り出す localtime では「年」の値が1900年からの相対値で得られるので、日時をエポック秒に変換する timelocal でも「年」の値をわざわざ「西暦-1900」にしてから渡していたが、この方法だと「現在から50年以上前の日付」に対しては未来の日付だと解釈されてしまう仕様らしい。解説を読んで初めて知った。localtimeとは違って、timelocalの年の値は最初から西暦4桁をそのまま渡せる仕様なので、何も加工せずに西暦4桁の数値を引数に与えれば良いのだった。

てがろぐ <347文字>

一定の間隔(月一とか週一とか)で、データファイル(tegalog.xml)と設定ファイル(tegalog.ini)を指定のメールアドレスに自動送信するバックアップ機能でも用意しようか……?

てがろぐ <94文字>

設定画面の「フリースペース」に、『上書きスタイル』という専用の汎用入力欄を設けておいて、そこにCSSソースを書けるようにして、それをhead要素の最後に読み込む仕様にしようか。そうすると、標準添付スキンをそのまま利用していて毎回上書きしている人でも、自力で作成した配色スタイルだけはずっと維持できる。(head要素の最後に読み込めば、そこに書かれている内容でスタイルが上書きされるから。)

てがろぐ <194文字>

そうか。予約投稿機能も作らないとな……。

てがろぐ <20文字>

インライン系要素の中にブロック系要素を入れると、ブロック系要素の開始位置でインラインが終わったと解釈されてしまうHTMLの仕様があるので注意が必要だ。
てがろぐが出力する [[COMMENT]] には、ブロック系の要素が出力されることがある。例えば、箇条書きリストの <ul>~</ul> とか。なので、もし <p>[[COMMENT]]</p> のようなHTMLを書いてしまっていると、<p><ul>~</ul></p> と出力されることになる。これはHTML的には誤りで、<ul>タグが登場した時点でp要素は終わったと解釈されてしまう(=HTMLの文法的に、p要素の内側にul要素を含めることはできないため)。なので、CSSが意図通りに適用されなくなる問題が出る。
このような問題を避けるには、とにかく [[COMMENT]] を『ブロック系要素を含められないような要素』で囲まないこと。
[[COMMENT]] を何かで囲みたい場合は、div要素だけを使うと考えておくのがお勧めである。

……という話をFAQに追加しておきたい。カスタマイズ方法ページに書いた

てがろぐ <484文字>

正式版リリースの場合でも、β版で普段やっているように「バージョンアップ用のパッケージ」(=更新されたファイルしか入っていないZIP)を用意する方が良さそうな気配だな……。容量の問題ではなくて、上書きしちゃいけないファイルを上書きしないようにするために。

てがろぐ <126文字>

てがろぐのログイン画面では、IDをプルダウンメニュー(セレクトボックス)から選択するようになっている。これは、「自分のIDをここから現実的に選べる程度の人数が上限と考えてくれ」という感じの意味合いもある。仕様上はユーザ数の上限はないのだが、データベースを使っていない構造からしても、たくさんの人数が同時に投稿し合うような用途に使うのは現実的ではない。管理者権限を持つIDを複数作成することもできるが、Aさんが設定画面にアクセス→Bさんが設定画面にアクセス→Aさんが設定を変更して保存→Bさんが設定を変更して保存……のようなタイミングで操作されると、Aさんの設定変更はなかったことになる。(そういう操作から保護するような機能は一切ない。)「全員が1つのTLを共有する」形なので、まあ、そんな大人数で使われる(使おうと思われる)ことはないだろうと思ってはいるのだが。具体的にどれくらいが上限だとかは何も考えていないのだが、せいぜい「数人」くらいが現実的なのではないかと思ってはいる。

てがろぐ <439文字>

Twitterから全データをダウンロードすると、ツイート本体は tweets.js というファイルの中にJSON形式で入っている。"full_text"という項目にツイート本文があって、"created_at"という項目に投稿日時がGMTで入っているので、この2つを抜き出して tegalog.xml で使えるXMLに変換すれば、過去ツイートをてがろぐ形式にはできるだろう。てがろぐ側には文字数制限がないので、そのまま抜き出すだけで良いだろうし。Twitter側には文字を装飾する機能がないのでプレーンテキストだし。たぶん、\n<br>に変換するくらいの手間だけで良いような。掲載URLが全部 t.co ドメインになっているのはどうしようもないが。GMTの日付は「Thu Nov 03 11:54:17 +0000 2022」みたいな形式で収録されているので、これをJSTに直した上で YYYY/MM/DD hh:mm:ss 形式にしないといけないが。PHPとかにその辺のことを楽にできる関数でもあっただろうか? ただ、画像は面倒くさそうだ。画像は tweets_media フォルダにまとめて格納されているので、"media_url"項目にあるURLからファイル名部分を抜き出して、さらに"expanded_url"項目にあるURLから数字列を抜き出して、「1588137486144114688-FgoyWg9aAAEKTjj.jpg」みたいにハイフンで繋げれば、画像ファイルを特定はできそうだけども。全部この方法でいけるのかどうかは分からん。

てがろぐ <675文字>

せめて配色部分だけでもカスタム変数にしてCSSソース冒頭にまとめておく方が親切かな、という気もしないでもない。ただ、カスタマイズする人はもっと全体的にカスタマイズするだろうから、配色だけカスタム変数にしてもあまり意味ないのではないか、という気もする。

てがろぐ <125文字>

画像インデックスXMLファイルを直接編集する方法については、どこに書こうか迷ったのだが、投稿データファイルであるtegalog.xmlの直接編集方法を「FAQ・豆知識」ページに書いていたので、それと同じにしておいた。
大量の画像キャプションを一括設定(編集)したい場合は、XMLデータを直接編集すると楽かもしれない
全画像データの先頭には、全画像データをまとめた <total>~</total> という情報行があるのだが、ここは実データから常に自動更新されるので、手動でXMLファイル内を編集するときにここを自力で計算して書き換える必要はない。てがろぐ側で再生成されるまで、画像総数とかトータルサイズとかの表示が正しくなくなるが、表示上の問題なので特に不都合はないだろう。すぐにてがろぐ側で画像インデックスを更新させれば問題は何もない。そもそもこの <total>~</total> 行は削除しても(すぐにてがろぐ側で再生成させるのなら)何も問題はない。

てがろぐ <429文字>

Powered by てがろぐ Ver 3.9.0.

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

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

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

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

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

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

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