編集:2024.08.07
スクリプト言語で書くのが定番なんでしょうが、
バイナリスクリプトなら1個や数個で済むようなことが
スクリプト言語のフレームワーク使うと数千から数万個のファイルになるので嫌なんですね。
rustはCGIライブラリが貧弱で切り替え無理と判断しました。
CGIで運用するにはCGI全盛期に存在した言語でないと無理のようです。(1からごろごりかくならできますけどね)
Go言語は切り替えできるのとGoはrustより格段にコードが読みやすいのでGoで書いたほうがバグがなくメンテナンスしやすいように思います。
いくつかフレームワークのソースを確認しましたが
Ginは、動作できることをローカルサーバーで確認しました
他のフレームワークはできそうもない。
Gin でCGIするには?
本番運用はしていないので、非公式方法なのでなんらかの不具合がでるかもですが・・・、
その時は、素の http.cgi使うしかないですね。
DebugモードだとGinが余計な情報を出すので、インターナルサーバーエラーになる
対策
リリースモードフラグを立てておく。
デバッグは、CGIではなくセルフサーバーモード(デフォルト)で行う
CGI環境かどうかを判定するには
対策
CGI環境かどうかをCGI環境変数の有無で判定してコードを切り替える
独自の判定ルールを追加する。本番でCGIで実行したいのにセルフサーバーモード(デフォルト)になると困りますからね。
CGI環境変数は規格で決まっています。なので判定は簡単です。仕様書に記載の変数を全部定義されているのかを確認するのが確実ですが
代表的なものだけでたいていは問題ないかと思います。
func main() {
// CGI環境変数が設定されているかで分岐する
if strings.HasPrefix(strings.ToUpper(os.Getenv("GATEWAY_INTERFACE")), "CGI/") {
// main_cgi() // 標準機能
main_cgi_gin() // 外部ライブラリ
} else {
// command line
if os.Getenv("REQUEST_METHOD") == "" {
main_serve_gin() // 外部ライブラリ
}
}
}
» 続きを読む
編集:2024.04.15
「2036年問題」
コンピュータの時刻を同期するためのプロトコルであるNTP(Network Time Protocol)が、西暦2036年に時間計測機能のオーバーフローを起こしてしまう現象で、対応していない古いシステムが時刻が過去に戻り誤動作するおそれがある。
» 続きを読む
編集:2024.02.11
Google Fonts
雑誌読み放題でWEBの雑誌をパッと見たら
webで使える無料フォント(Google Fonts)というのを発見したので
アクセスしてみた
大半は書体が好きでなかったので、使ってもいいかなっていうのは次の2個だけだった。
・Noto Sans JP
・ニコモジ
使い方はいたって簡単、リンクコード貼るだけ。
だけど、これブラウザにキャッシュしてもらわないと低速回線だとサイト重くなるよね。
» 続きを読む
編集:2023.06.05
PHP8.3 リリース
タイムスケジュール
https://wiki.php.net/todo/php83
Nov 23 2023
9.0ではなく 8.3がでるのですね。
8.1か8.2だったか?クラス関数内static変数,プロパティ仕様が違うから今後かかわりたくない製品。
PHPは、他の言語のメジャーバージョンで行う仕様変更を平気でマイナーバージョンで互換性無視してつっこんでくる。
この悪習慣は何十年たってもやめようとしないので意図的ですね。
PHPで書いたコードは製品寿命(2~3年程度)が短いので関わりたくない。
編集:2019.05.14
インストーラーが 16ビットアプリのため 64ビットのWindowsでインストーラーを起動すると
スタートアップと圧縮を展開するためのアプリが16ビットのため起動できません。
しかし、32ビット用のインストーラーは圧縮して同梱されているので、それを取り出して呼び出すことでインストールが可能になります。
作業手順
- インストールメディアから32ビットインストーラーを取り出します
- CDROMにINSTALLというフォルダーがあるのでUSBなどにそのままコピーします
- 32bitのWindowsで INSTALL\setup.exeをクリックします
- 次へを押すと、インストールに必要なファイルのコピーが始まるので、少し待ってから
CTRL + TAB で フォーカスをエクスプローラーに切り替えます - エクスプローラーのアドレスに %temp% と入力しリターンキーを押します
- %temp%フォルダー内に「_INS0432._MP」というファイルがあるので
(1)の 「install」フォルダーにコピーし、名称をsetup32.exeに変更します。
「_INS0432._MP」→「setup32.exe」 - インストーラーに戻り、インストールの中止をクリックし終了します。
これで 64ビット対応のセットアップ準備ができました。
- 64ビットWindowsにDelphi2をインストール
- インストールしたい64ビットWindows で
(1)のフォルダーの setup32.exe をクリックします。
- インストールしたい64ビットWindows で
インストールとアンインストールを行い正常に動作したことを確認しました
★ BDEも動作することを確認しました
デモのFISHFACTをコンパイルし実行
スタートメニューへの登録は、失敗するため、Delphi2.0へのショートカットは自分で作成する必要がある
Delphiに限らず、同様のエラーが発生するインストーラーに対しても有効な方法です。
» 続きを読む