にしし らぼらとりー

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

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

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

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

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

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

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

RSS Feed

開発放言 (最新の20件)

てがろぐのレンタルサーバ別セットアップ方法は全部で15ページあるのでたくさん存在するように見えるが(まあ確かにたくさんあるのだが)共通部分は1つのHTML(分岐を含むPHP)で作っておいて、サーバごとに異なる部分だけをPHPで合成している。なので、レンタルサーバごとのデータ量はとても少なく10行くらいしかない。ほとんどはフラグだけで済んでいる。mixhostだけは独自の解説を生で書くしかなかったのでちょっと分量があるが。
202212011017251-nishishi.png 20221201101725-nishishi.png

<214文字>

てがろぐもPerlではなくPHPで書いていれば、もっと楽だったよな、ということはいつも思っている。いや、いつもということはないが。PHPを書くとよくそう思う。今さら変えられないが。

<90文字>

ローカル実験環境でも、これもまたPHPの方が遙かに簡単で、PHPがインストールされているなら、コマンドラインから php -S 127.1.1.2:8080 -t D:\Web のように打ってやるだけで、PHP内蔵のWebサーバが起動するので、ブラウザで http://127.1.1.2:8080/hogehoge.php にアクセスするだけで D:\Web\hogehoge.php に存在するPHPファイルがローカルで確認できる。ただ、これはPHP専用のWebサーバなので、ノーマルなHTMLとかは一切表示してくれないが。
20221201095209-nishishi.png
終わらせるときは、[Ctrl]+[c]を押す。いちいちコマンドを打つのは面倒なので、バッチファイルを作っておいてデスクトップ等にショートカットを置いておくと楽だ。

開発ネタ <353文字>

2019年にブログ記事として書いた「てがろぐCGIが出力した最新の1件を任意の場所にSSIで埋め込む方法」の内容は、そのうちに公式サイトのFAQ・豆知識ページあたりにまとめて書き直そうと思ってはいるのだが、面倒なのでそのままリンクだけしている。ちょっとだけ更新した。画面キャプチャも古いのでもうちょっと何かした方が良い気もするのだが。更新したのは末尾で、SSIやPHPで埋め込むほかに、「埋め込み用のRSSフィード」を作ってそれをJavaScript等で読んで埋め込む選択肢もある、という話。ただ、具体的な話はしていないのだが。RSSフィードの内容をJavaScriptとかPHPとかで埋め込む方法の解説はたぶんググればたくさんあるのではないか、と思っている。探していないので分からないが。

てがろぐ <345文字>

そうだわ。今の私の環境にあるPerlは、Active Perlではなくて、XAMPPに含まれているPerlなのだった。README.txtにずっと「Active Perl」と書いたままだった。(どうでもいいが)

てがろぐ <105文字>

てがろぐ用スキンを作る際などのために、てがろぐをローカルWindows環境で動かしたい場合は、AN HTTPDという超軽量ウェブサーバを使うと良い。これは、ファイル拡張子から実行プログラムを選択してくれるので、拡張子が .cgi ならPerlを実行してくれる。なので、CGIソースの1行目にある #! /usr/bin/env perl のような記述は何でも構わない(読まれないので。つまり書かれていなくても動く)。残念なことに既にAN HTTPDの作者さんは公開を停止してしまっているのだが(閉鎖は2015年だが開発終了は2006年)、Wayback Machineからはダウンロードできる。という話を3年半前くらいに書いた。
AN HTTPDはWayback Machineから今でもダウンロードはできる
この記事ではActive Perlをインストールするよう書いているが、Perlなら何でも良いのでXAMPPに含まれているPerlでも良いし、Strawberry Perlでも良い。私の現在の環境ではXAMPPに含まれているPerlを使っている。Perlへのパスが通っていない場合は、自力でperl.exeのフルパスをAN HTTPDの設定画面に書く必要がある。例えば、C:\xampp\perl\bin\perl.exeのような感じで。
AN HTTPDではドキュメントルートを指定する必要があるが、設定画面から簡単に変更できるので切り替えるのも簡単な点が良い。ただ、ちょっとだけ癖のような問題があって「\」記号で終わるフルパスを書くと「そんなディレクトリはない」というエラーが出る。ドキュメントルートをフルパスで指定する際はD:\Projects\FreeCGI\Tegalogのような感じで、フォルダ名の終わりには「\」記号を付けないようにする必要がある。(ただし、ドライブのルートを E:\ のように指定する際だけは例外だが。)

てがろぐ <828文字>

スキンを容易にカスタマイズできるようにする1つの方法として、配色とかを全部CSS変数(カスタムプロパティ)にする、というのがある。とても便利なのだが標準添付の各スキンでは採用していない。なぜかというと、IEでは使えなかったからだ。2017年当時だと、Edgeでも微妙だったし、最新版にアップデートしていない各ブラウザだと使えなかったりもした。なので少数のユーザも排除したくないと考えると、「まだ使えない」と判断するしかなかった(いや、全部のスキンを2017年に作ったわけではないが)。しかし、もはやMicrosoftもIEのサポートを終えたわけだし、全部変数に置き換えていくと良いのではないか……とは思うのだが、いまさら全部を書き換えるのが大変だ。

てがろぐ <324文字>

てがろぐ開発ロードマップを書いておきたい。ローカルの書き殴ったメモはあるが(手書きではない)、そうではなくて、なんかちょっと公開して整頓した方が良い気がしている。

てがろぐ <81文字>

開発方針というか、優先順位の決め方の話ですけども。

今の時代、「JavaScriptが動作しない閲覧環境」というのはまずないでしょうし、考慮する必要性はほとんどないと考えて差し支えないでしょう。また、少なくともGoogleは「JavaScriptを実行した結果」を解釈してくれるようなので(SEO効果の度合いには違いがあるかもしれませんが)検索対策を考える場合でもJavaScriptでページを描画して大きな問題はなさそうに思います。

ただ、
  • RSSフィードのようなXML形式のデータ内ではJavaScriptは使えない
  • OGPのような「HTML内にmeta要素として静的に存在していないと認識されない物」はJavaScriptで生成・編集できない
というような問題もありますから、「ブラウザ上の描画に関してはJavaScriptを使えば実現できる」ということでも、「できるだけ本体側にもその機能がある方が望ましい」とは言えると思います。

例えば、
  • RSSフィード内の何かをJavaScriptで変更したり生成したりしたいと思っても(書かれていれば動くRSSリーダももしかしたらあるかもしれませんが)RSSフィード自体は静的なXMLとして存在しているだけなので無理ですし、
  • OGPを読んで利用するSNS等は(たぶん)HTMLファイルを読むだけでその先のJavaScriptまで読んで実行はしてくれないようですから、JavaScriptでOGPを生成したり編集したりしても効果がありません。

これらのような箇所の出力をどうにかしたい場合は、CGI側でその機能を用意するほかありません。
したがって、「ブラウザ上ではJavaScriptで実現できる機能でも、もしかしたら静的に存在していないと効果がないような箇所で出力したいケースもあるかも知れないので(将来的には)本体側にも実装する方が望ましい」とは考えています。

しかしながら、
  • 「JavaScriptを使えば(ブラウザの描画上では)実現できること」と、
  • 「JavaScriptを使っても(おそらく)実現できないこと」
とがありますから、(この両者を比較すれば)開発を優先するのは後者だと思います。
もちろん実際には「開発のしやすさ」も大きく影響しますから、絶対に後者が優先されるわけではありませんけども。

なので、「JavaScriptで実現できる機能は、(将来的には実装したいと思うものの)開発優先度はそこまで高くならない」と認識しておいて頂けるとありがたい気がします(たぶん)。「気長に待って欲しい」というのは(何もかもを一気に実装するのは無理なので)常に言っていることですが、なお「さらに気長に」待って頂けるとありがたい感じです。

<1160文字>

Ver 3.8.2β以降に存在している、ちょっとマズいバグを発見したので修正する。普通に使っている状況ではまず問題は起きないだろうけども。

てがろぐ <69文字>

投稿日時を「xx日前」みたいな相対時間で表示する機能は、日付から閏年を計算して単位を切り替える配慮が面倒なので、「365.25日を過ぎたら年で表示する」という実装にしてあるのだが、これで問題ないよな……? 閏年は4年に1回なのだから。ちょうど1年前の投稿の場合、「365日前」と表示される場合と「1年前」と表示される場合とがある。年単位は、「年」ではなく「年以上」にしておく方が良いか。「1年と0日前~1年と365.25日前」まで全部を「1年前」と表示するのはちょっとおかしい気もする。「1年以上前」、「2年以上前」……なら良さそう?

てがろぐ <267文字>

画像インデックス生成機能の前に、もう1回β版を出すか……。以前の予定ではこの11月に画像インデックス生成機能を作るつもりだった気がするのだが。いつの間にか11月の残りが1週間を切っていた。なんでや……。

てがろぐ <101文字>

レンタルサーバ別のセットアップ方法(15件)を加えたついでに、パーミッションの値の考え方も書いた。
  1. まず、「suEXEC」の方の値に設定してみて下さい。それで動けばそのままお使い頂けます。
  2. もし動かなかったり不都合がある場合は、次に「一般の場合」の 705 や 604 のように真ん中がゼロの値を設定してみて下さい。それで動けばそのままお使い頂けます。
  3. それでも動かない場合は、「一般の場合」の 755 や 644 の方の値を設定してみて下さい。

これ、「3」でないと動作しないWebサーバって、果たして存在するだろうか……? グループ権限が動作に必要なケースってたぶん存在しないよな……?

「suEXECではない環境」のことの表現は「一般の場合」のままにした。良さげな表現を思いつかなかったので。いや、「その他の場合」でも良かったかもしれないが。「suEXEC対応/非対応」という表記も考えたが、なんか(初心者に)難しそうに感じられると困るなと思ったので。名称は「一般の場合」のままでも、上記のように詳しい考え方のステップを書いておけばまあ良いかなと。

てがろぐ <488文字>

……ということは、「suEXEC環境なのかそうでないのか判断が付かない」みたいなアンケート結果になっていたサーバは、『どっちの値でも問題なく動作する』サーバということなのか。もしかして。

てがろぐ <93文字>

WitchServerの環境についてはアンケート結果がばらけていて(700で動かしている人も居れば755で動かしている人も居るし、Perlパスを変更している人も居れば変更していない人も居る)判断できなかったので、WitchServerの運営者さんに問い合わせてみたところ、丁寧な返信が来た。
それによると、WitchServerはsuEXECを採用しているが、
「設置方法3:パーミッションの設定」の項目で提示されているパーミッションであれば、
suEXEC用、一般用、どちらでも動作します。

とのこと。
どちらでも動作する、という環境もあり得るのか……。知らなかった。CGIが新規ファイルを出力するディレクトリのパーミッションも、別に 705 でも 777 でも構わないようだ。
余計なパーミッションはない方が良いだろうという立場からsuEXEC用を推奨、とさせてください。
ということなので、案内としては「suEXEC側のパーミッションに設定」ということで問題なさそうだ。
Perlパスも書き換える必要はないとのことだった。
それよりも、改行コードを LF にして、バイナリモードでアップロードする点に注意して欲しいという回答だった。

WitchServerさんは、てがろぐセットアップTIPSページを公開して下さっていてたいへんありがたい。そこにパーミッションの話は書かれていないのだが、まさか「どっちでも問題ない」とは予想しなかった。

てがろぐ <623文字>

「指定したNo.を含む前後10件の投稿だけを一括で閲覧する」機能が欲しい。

てがろぐ <37文字>

ちょっとToDoリストを書き直して(再構築して)優先度別にしっかりまとめ直さないと、何も進行できなさそうな感じになってきた。_(┐「ε:)_

てがろぐ <70文字>

とりあえず、設置方法3:パーミッションの設定をちょっとだけ書き換えた。

細かく書いてはいるが、suEXEC対応サーバの場合は、tegalog.cgiさえ 700 にすれば、他はデフォルトのままでも特に問題はない。suEXEC非対応の場合は、書き込み権限を付与しないといけないファイルとディレクトリがちょっとあるので1つ1つ見て設定する必要がある。suEXECの方で 600 にするよう書いているのは、そうしないと動かないわけではなく、まあ余計な権限は付与しない方が良いよな、くらいの感じだ。skin-cover.html と skin-onelog.html もブラウザで直接閲覧するわけではないので 600 で良いのだが、まあ、これらはただのHTMLで害がないので「デフォルトのままで良かろう」みたいな感じで書いている。

てがろぐ <362文字>

うーむ。スターサーバーでのセットアップ案内をどうすべきかが分からん。てがろぐユーザアンケートの結果 >>2288 では、回答者9名のうち「suEXEC側の設定者3名」「非suEXEC側の設定者6名」なのだが、スターサーバーの公式マニュアルでパーミッションの記載部分を読むと、実行するCGIは「705」か「755」にしろと書いてある。公式にはsuEXEC対応とは書かれていないし、705等を推奨していることからしてsuEXECではないのだろうけども。しかし、アンケートでは 700 でも動作しているようだから、要するに 700 でも 705 でも 755 でも動くのか。まあ、それは別に構わないが、ディレクトリのパーミッションが 705 でも 706 でも書き込めるのはどういうわけなのだろうか? suEXEC採用なら 705 で書き込めるのは分かるが、もしsuEXEC非対応なら 705 なディレクトリにはファイルは書き込めない気がするのだが。

あと今更だが、suEXEC非対応な環境での(任意のファイルを書き込む)サブディレクトリのパーミッションって 706(766)ではなくて、707(777)でなくて大丈夫なのだろうか……。ディレクトリに実行権がなくても読み書きはできるが、実行権がないとファイルの属性とかが取得できなさそうっぽい情報を読んだのだが。(まあ、ファイルの属性が取得できなくても、日付順にソートできなかったり、ファイルサイズが得られなかったりするだけで、大きな問題にはならなさそうだけども。でも、細かくは問題があるので、やはり 707 か 777 にしてもらわないといけなさそうだ。)

公式が、suEXEC対応とか非対応とか情報を公開してくれていると確実で助かるのだがな……。
対応していないことをわざわざ書くケースはあまりなさそうな気がするが、SPPDでは公式に「いわゆるsuExec機能は有しておりませんので」という解説があって分かりやすかった。
なお、アンケートに回答して下さったエックスサーバーの利用者さんはみな(と言っても2名だが)755等に設定されていたので、エックスサーバーはsuEXEC非対応なのかと思ったが、ググってみたら「はい、対応しております。」というFAQがあった。ディレクトリのパーミッションを 766(706)にしても、画像はちゃんと表示されているだろうか……? suEXEC対応サーバでディレクトリのパーミッションを 706 とか 766 とかにしてしまうと、プログラム側からの読み書きはできても、ブラウザ上で画像等のファイルが一切参照できなくなってしまうと思うのだが。(画像をUPしない運用だったら問題に気付けないけども。)suEXECが採用されていても、その辺の仕様もサーバの設定によって違うのだろうか? というか、OSの仕様が異なる可能性もあるか。

てがろぐ <1206文字>

他の階層(上位のディレクトリとか)に存在するスキンでもプレビューしたり簡易本番適用したりできるようにした。プレビューの場合は skin パラメータに相対パスや絶対パスでスキンの位置を指定すれば良い。管理画面の「スキン切り替え」でも、ディレクトリを直接手動入力して、プレビューしたり簡易適用したりできる機能を加えた。てがろぐを複数個設置して併用しているとき、同じスキンを使いたいなら1カ所にあるスキンを共用できる方がカスタマイズが楽かもしれないから。 >>2276

てがろぐ <231文字>

Powered by てがろぐ Ver 3.8.7.

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

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

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

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

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

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

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