にしし らぼらとりー

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

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

RSS Feed

開発放言 2023年の投稿[133件]

新規投稿 / 管理用

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

by nishishi. てがろぐ <340文字> 編集

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

by nishishi. <51文字> 編集

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

by nishishi. <80文字> 編集

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

by nishishi. <13文字> 編集

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

by nishishi. 開発ネタ <45文字> 編集

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

by nishishi. 開発ネタ <206文字> 編集

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

by nishishi. 開発ネタ <37文字> 編集

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

by nishishi. てがろぐ <125文字> 編集

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

by nishishi. てがろぐ <278文字> 編集

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

by nishishi. てがろぐ <376文字> 編集

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

by nishishi. てがろぐ <525文字> 編集

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

by nishishi. てがろぐ <35文字> 編集

IF文を使って、特定の状況だけでHTMLの出力を切り替えられる機能も実装できた。めでたい。
全文検索と同じように、AND OR NOT検索で状況を指定できるようにした。
  • [[IF(onelog):~~~:IF]] と書けば「~~~」の部分が投稿単独表示時にだけ出力される。
  • マイナス記号を付けて [[IF(-onelog):~~~:IF]] と書けば「~~~」の部分は投稿単独表示時以外の状況で出力される。
丸括弧の中は home とか grandhome とか cat-info とか user-tomoyo とか、SITUATION:CLASS に出力される状況キーワードを全部使える。AND OR NOT検索と同じ要領で、複数の単語を同時に指定もできる。
なので、
  • 例えば、[[IF(selected-cat -cat-info):~~~:IF]] と書けば、カテゴリ限定表示時(ただしカテゴリinfoの表示時は除く)だけの状況で出力できる。
これは、便利なのでは……。(自画自賛!)

この機能を使うと、状況別にHTMLを出し分けられるだけではなくて、今までなら複数のスキンを併用しないといけなかったことも、もしかして単一のスキンで済むようにもできたりするのではないか……。(いや、深くは考えていないけども。)

by nishishi. てがろぐ <567文字> 編集

ユーザ設定の「紹介文」欄に入力した内容を出力する記法 [[USERINTRO]] を追加した。
USERで始まる記法が複数あるので、どうせなら USER:INTRO とか USER:ID とかにする方が読みやすいかな……と思ったものの、これ以上は増えなさそうだし、そこまで気にするほどでもないかと思い直して、やめた。

by nishishi. てがろぐ <158文字> 編集

どうせなら、[[SITUATION:CLASS]]書いたときに出力されるキーワードをそのまま全部使える仕様だと活用の幅が広がって便利かもしれない。 >>2458
例えば [[[IF(onelog): ~ ]]] と書けば、[[SITUATION:CLASS]]に「onelog」と出力される状況(=投稿単独表示時)だけで出力される、とか。その場合は、否定の記法も用意して [[[IFNOT(onelog): ~ ]]] みたいなのもあると使いやすそうな気がする。

by nishishi. てがろぐ <232文字> 編集

状況別に出力を切り替えられる記法を用意したい。例えば [[[IF:ONELOG: ~ ]]] と書いたら、その範囲は投稿単独表示時にしか出力されない、とか。今でもCSSで非表示にすることで切り替えられるが、それだと(スキンの内容とか1ページあたりの表示件数によっては)無駄なHTMLが大量に出力されることになるので、もうちょっとスリムにできるようにしたい。

by nishishi. てがろぐ <178文字> 編集

たぶん、もうCGIソース冒頭(77行目)の $howtogetpath = の値は修正しなくても良くなった気がする。どこのサーバでも。一応、ダメだった場合に備えて、変更後の動作は従来と同じにしてあるけども。(まだ配布していない Ver 4.1.4βの話)配布した

by nishishi. てがろぐ <132文字> 編集

てがろぐ生成ページのうち、トップページだけは index.html ファイルとして静的ファイルに出力する仕様にすると負荷軽減の役に立って良いかもしれないな……。 #済 とりあえず試験的に実装してみた。うまく役に立つかどうかはしばらく使ってみないと分からない。

by nishishi. てがろぐ <129文字> 編集

カレンダー表示ツールとしては「さんごよみ」を用意しているが、スケジュール表示が基本のツールなので、もっとシンプルに「指定した日付に丸を付けられれば良い」というだけの場合には多機能すぎる面があると分かった。もっともっとシンプルなUIで、カレンダーの日付をクリックしたらその場でそこに指定色の丸印が付く、というだけしか機能がないくらいの、ミニマムなCGI(PHP)を作りたい。

by nishishi. さんごよみ,開発ネタ <186文字> 編集

画像一覧モードとギャラリーモードの違いが分かりにくいかもしれないので、ギャラリーモード(のための標準添付用スキン)はもうちょっと本文もしっかり表示するような感じで、画像クリックで本文が見えるような動作になるように作り替える方が良いかもしれない。

by nishishi. てがろぐ <122文字> 編集

>>2450 やっぱり効いていなかった(というか、設定値をまったく処理に使っていなかった)ので、設定が効くように修正した。新着画像リストにもちゃんと(サムネイルがある画像は)サムネイルの方が出力されるようになった。

by nishishi. てがろぐ <107文字> 編集

「イメージリストモード」という名称だと長いので、素直に「画像一覧モード」という名称にした。機能そのものは実装できた。わりとあっさり作れて良かった。標準添付用のスキンを作って、ヘルプドキュメントも書く必要があるので、配布はもうちょっと先になりそうだが。うまくいけば週末の間に配布できるか……? 無理か……?
進捗1:設定画面進捗2:動作例

by nishishi. てがろぐ <169文字> 編集

イメージリストモードの良さげなアルゴリズムを思いついたので、行けそうな気がしてきた。₍₍ (ง ˙ω˙)ว ⁾⁾

by nishishi. てがろぐ <57文字> 編集

設定→ページの表示→【新着画像リストの表示】→「新着画像リストに表示する対象」の『サムネイル画像があればサムネイルの方を表示』設定って、効いてる?

by nishishi. てがろぐ <73文字> 編集

「動画の投稿機能」として作るよりも、「任意の添付ファイルUP機能」として作っておいて、そこにZIPでもMP4でも何でもUPできるようにすれば良い気もする。で、動画はvideo要素を埋め込める専用記法を別途用意しておけば良いのでは。[PICT:~] に対する [VIDEO:~] みたいな。ダウンロード専用の添付ファイルとして掲載したい場合は [FILE:~] かな。

by nishishi. てがろぐ <183文字> 編集

カテゴリでもハッシュタグでもなく、例えば〔重要〕みたいなフラグを立てる機能が欲しい。メーラみたいに。代用するとしたら「隠れハッシュタグ」機能が近いかもしれないが。その場合は本文中に書いておかないといけないからな……。ただ、「隠れハッシュタグ」だけをCSSで非表示にしてしまえば、見た目には見えないフラグにはなりそうな気はする。……ああ、それでいいか? いや、隠れハッシュタグだとリストアップされないので、「今どんなフラグが存在するのか」を知る方法がないのでちょっと困るな。「リストアップはされるんだけど、一覧には表示されない『一見すると隠れているけども管理者には見える』ハッシュタグ」みたいな中間ハッシュタグ機能があればいいのか。マイナス記号の代わりに、プラス記号を使うとか……?(^_^;)

by nishishi. てがろぐ <346文字> 編集

もうちょっとデータファイルから無駄を省くようにした方が良いだろうか。ファイルサイズを減らすために。カテゴリに属していない投稿に <cat></cat> とか、フラグが何もない投稿に <flag></flag> とか記録しても無駄だものな……。総投稿数が少ないうちは、微々たる差ではあるけども。

by nishishi. てがろぐ <146文字> 編集

動画の投稿機能を作る場合は、画像保存用のimagesとは別のディレクトリで管理する方が望ましいだろうか?

by nishishi. てがろぐ <52文字> 編集

?mode=rss でリクエストされたときは、毎回そのまま素直にRSS用スキンを解釈するのではなくて、一定期間だけ生成結果のRSSフィード(=スキンの適用結果)をキャッシュしておく仕様にしておくと、データ量が多い場合の負荷軽減になるかもしれない。

by nishishi. てがろぐ <123文字> 編集

どっへえ。ロリポップの古いサーバ(かなり昔に契約されたサーバ)「ハイスピードプラン」以上のプランのサーバだと、1行目を #! /usr/local/bin/perl に書き換えた上で、77行目を my $howtogetpath = 0; に書き換えないと動作しないということを、直接この目で確認した。(たまたま、セットアップ先として依頼されたサーバがそういう古い仕様のサーバだった。)
77行目は、デフォルトの 2 だと Not Found になり、 1 にすると 500 Internal Server Errorになるので、0 にしないといけなかった。

by nishishi. てがろぐ <280文字> 編集

TegUpを作って、PHPからでもてがろぐの設定を問題なく簡単に読めることが分かったので、「てがろぐにUPされている画像だけを順番に表示する」機能は、てがろぐ内部での実装ではなく、別途「imageディレクトリに置いたPHP(index.php)」でどうにかさせる手もあるような気もしてきた。まあ、構成ファイル数が増えてしまう問題はあるが。今時「Perlは実行できるのにPHPは実行できない」みたいなサーバはないと考えて良いだろうか。 画像一覧モードを作った。

by nishishi. てがろぐ <229文字> 編集

TegUp に、スキンZIPを展開して1サブディレクトリに置く機能を加えても良いかもしれない。ローカルで展開する手間が省ける、という程度の機能だが。……いらんか。^^;

by nishishi. <84文字> 編集

てがろぐの「続きを読む」機能の設定項目には、『全文検索時でも隠す機能を有効にする』という項目がある(デフォルトではOFF)のだが、ここに『投稿単独表示時でも隠す機能を有効にする』という項目を加えた上でデフォルトでONにしておくことで、望めばOFFにできるようにすると嬉しい人も居るだろうか?

by nishishi. てがろぐ <145文字> 編集

skin-cover.html に、bodyタグとして単に <body> とだけしか書かれていない場合は、強制的に <body class="[[SITUATION:CLASS]]"> に書き換えるような自動調整機能を加えても良いのかもしれない。classが増える分には害はないだろうから。

by nishishi. てがろぐ <145文字> 編集

同一ディレクトリ内にある、ファイル拡張子が .cgi なファイルを片っ端から開いてみて、中身がてがろぐ本体かどうかをチェックする処理を入れれば、「どんなファイル名で設置しているのか」をユーザに書き込んでもらう必要もないな。よく考えたら。TegUp

by nishishi. <123文字> 編集

バックアップZIPを生成しない設定のとき、結果表示画面でZIPのリンク表示をスキップするような処理ってしていたかな……?(あとで調べる) TegUp

by nishishi. <74文字> 編集

「任意URLリンク」ボタンからURLを書いたときには、URLに含まれる縦棒を自動的に %7C に置き換えるようにすれば良さそうだ。

by nishishi. てがろぐ <65文字> 編集

URLの中に縦棒 | が含まれる場合、そこでリンクが切れてしまって、正しいリンクにならないな……。縦棒を数値文字参照で表して &#124; にするか、パーセントエンコーディングで %7C と表記すればリンクできるけども。

by nishishi. てがろぐ <110文字> 編集

>>2023/10/13 のように書いたら、その日付の投稿一覧ページに移動する機能が欲しい。(現状では/記号の直前で切られて、No.2023へのリンクになる。)

by nishishi. てがろぐ <81文字> 編集

てがろぐをワンクリックでバージョンアップできるPHPを作る。仕事で構築しているウェブサイトにてがろぐを組み合わせているケースがそこそこあるのだが、改めて数えてみたら少なくとも21件はあったので。これらを手動でバージョンアップさせるのは面倒だから……。
だいたい以下のような機能があれば良いだろうか。
  1. いま稼働しているバージョンと、配布されているバージョンを比較して、新バージョンが公開されていれば以下の処理を進める。
  2. いま稼働している全構成ファイルをbackup20231003.zipみたいなファイル名でZIPにバックアップ保存する。
  3. 更新用のtegalog.zipをダウンロードしてくる。
  4. その中身を仮作成したサブディレクトリの中に展開する。
  5. 稼働しているファイル群のパーミッション値を調べて保持しておく。
  6. tegalog.cgiの冒頭で設定が変更されていれば、それと同じように仮サブディレクトリ内のtegalog.cgiを書き換える。
  7. tegalog.cgi と fumycts.pl を上書きコピーする。(仮サブディレクトリ→本番ディレクトリ)
  8. それらを保持しておいたパーミッションに変更する。
  9. 仮サブディレクトリと、ダウンロードしたtegalog.zipを消す。

上記の(6)は、過去に仕事で構築したサイトではどこも不要だったような気がするので、後回しで良いかもしれない。
一般向けにも配布するなら、標準添付スキンがそのまま使われているならついでに上書きする機能もあると便利だろう。
上記のような機能をPerlで書くのは激しく面倒なので(※Webから何かファイルを取ってこれる系のモジュールとかファイルを移動できる系のモジュールとかを使わないと私には無理)、PHPを使う方が簡単だ。

最初に(1)の処理があるので、第三者にアクセスされても問題はないと思うが、実行許可用のパスワードを設定しておけるようにすると、より安心かもしれない。てがろぐ管理画面TOPからアクセスした場合にだけ実行を許可するような仕組みを用意すれば望ましいだろうか。「ワンクリック」というか、ノークリックで無条件に常時バージョンアップするのでも良いかもしれないが。その場合はcronで月に1回くらいの頻度で自動起動できるようにすれば良いか?

by nishishi. てがろぐ <968文字> 編集

うーむ。画像管理画面からサムネイル画像の存在を認識するようにはしたが、ここからサムネイル画像をアップロードしたり削除したりできるようにする実装が面倒くさいな……。_(┐「ε:)_ サムネイル画像のUPってそんなに需要あるのか。

by nishishi. てがろぐ <113文字> 編集

動画ファイルのサポートは、画像管理画面で画像と一緒に管理する方式で良いかな……と思っていたのだけど、そうすると [PICT:~]記法で動画を埋め込むことになってしまう気がして、少々処理が複雑になりそうな気がしてきた。画像と一緒に動画を管理するよりも、新たに「任意のファイルを添付できる機能」(=ZIPとかPDFとか何でもファイルをUPして投稿に添付できる機能)を作った上で、そこに動画形式のファイルがある場合に動画専用の記法で埋め込める方式にする方が良いのかもしれない。

by nishishi. てがろぐ <235文字> 編集

Misskeyみたいに [リンクラベル](URL) という、URLを丸括弧で括って指定する記法をサポートすれば、URLだけでなく相対パスや絶対パスで指定する方法でのリンク作成もサポートできそうな(しやすそうな)気がする。 実装した。#済

by nishishi. てがろぐ <118文字> 編集

カスタム絵文字では、(絵文字ごとに異なる装飾を適用できるように)絵文字の名称をclass名としても出力しているが、これと同じ仕様を普通の画像掲載時にも適用すると便利だろうか? [PICT:hogehoge.png] のような記述で画像が掲載される場合、その画像を表示するimg要素に class="pict-hogehoge" を加えるような。……あんまり意味はないか。

by nishishi. てがろぐ <185文字> 編集

投稿番号を表示しないスキンを使っている場合で、「自分の過去投稿への言及リンクを書くために投稿番号を知る必要がある」という場合のために、各投稿から「>>2428」みたいな言及リンク(記法)をQUICKPOSTに挿入できるボタンの出力機能を機能検討リストに入れていたが、よくよく考えれば「ログイン者にだけ見える空間」に投稿番号を表示するようスキンを調整して頂ければ良いだけなのではないか、という気がしたのだが、どうだろうか?

by nishishi. てがろぐ <210文字> 編集

カスタム絵文字を管理画面上でアップロードできるようにする場合は、「ZIPをアップロードするとサーバ上で展開して中身だけをディレクトリ内にぶちまけてZIPは消す」みたいな機能にする方が親切かもしれない? カスタム絵文字は数が多そうだから。サーバ側でunzipコマンドが使用可能でないと実行できないが。たいていのレンタルサーバでunzipは使えるのだろうか?

by nishishi. てがろぐ <177文字> 編集

WordPressを使うのをやめて、自前の軽量なCMSをPHPで作りたい。
コンテンツ自体は動的に出力するのではなくて、投稿された時点で静的ファイル(.shtml)に書き出しておいて、ヘッダやフッタ等の固定パーツはSSIで合成するようにすると、閲覧時の負荷が軽くて良さそうな気がする。コンテンツ部分は自力でHTMLソースを書けばそれだけで充分なので、WYSIWYG編集機能は一切要らない。手動で書いたコンテンツ(HTML)を、カテゴリ分けしたり全文検索したり目次を生成したりする機能くらいがあればいい。閲覧数の多い記事をカテゴリ別にリストアップする機能とか、関連する記事を適宜簡単にリストアップして設定できる機能とかもあると良いが。RSSを配信する機能も要るな。

by nishishi. 開発ネタ <331文字> 編集

「カスタム絵文字」というか「絵文字ショートコード」と表現した方が良いのだろうか? ただ、てがろぐの場合は角括弧が必要なので :smile: のようなショートコードとは異なるから、むしろあえてショートコードとは呼ばない方が良いか。

by nishishi. てがろぐ <114文字> 編集

動画や音声ファイルのアップロードに対応させる場合、管理場所は画像と同じ「画像管理画面」にしておいて、ファイル拡張子に応じて img要素を使うかvideo要素を使うかaudio要素を使うか切り替える、みたいな感じにするのが楽かな……。画像として扱うファイル拡張子を指定する設定項目があるので、それに並んで「動画用拡張子」と「音声用拡張子」を指定する欄を設ければいいか?

by nishishi. てがろぐ <183文字> 編集

カスタム絵文字リスト画面に、COPYボタンを配置するのがなんか無駄な気がしてきた。むしろ、絵文字画像そのものをクリックすることでコードをコピーできる方が、空間を節約できて望ましいのではないか。

by nishishi. てがろぐ <96文字> 編集

Powered by てがろぐ Ver 4.2.2.

DASHBOARD

■開発放言について

にしし製CGIの開発進行に関する放言です。思いついたことを適当に放り込む空間なので、どんな呟きも確定的な開発予定というわけでは全くありません。しかしながら、機能面でのご要望や開発予定機能への支持表明はお気軽にどうぞ。ただし、ここには直接は投稿頂けませんので、公式動作テスト用てがろぐ等をご利用下さい。

編集

■全文検索:

■日付検索:

■カレンダー:

2023年12月
12
3456789
10111213141516
17181920212223
24252627282930
31

■ハッシュタグ:

▼現在の表示条件での投稿総数:

133件

▼最後に投稿または編集した日時:

2024年03月02日(土) 00:56:29