問題タブ [cgi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl: CGI および DBI モジュールの変数スコープの問題
以前に遭遇したことのない可変スコープの問題と思われるものに遭遇しました。Perl の CGI モジュールと DBI の do() メソッドの呼び出しを使用しています。コード構造を少し簡略化したものを次に示します。
#1 プレースホルダー変数は、初期化されていないかのように評価されます。他の 2 つのプレースホルダー変数は機能します。
質問: do() のコンテキスト内で %in ハッシュを使用できないのはなぜですか?二重引用符で囲む (#2 プレースホルダー) か、値を新しい変数に再割り当てする (#3 プレースホルダー) 場合を除きます。
CGI モジュールの ReadParse() 関数がスコープを %in ハッシュに割り当てる方法と関係があると思いますが、なぜ %in がトップレベルで利用可能であるのに私の do 内からは利用できないのかを理解するのに十分なほど Perl のスコーピングを知りません。 () 声明。
誰かがスコーピングの問題を理解している場合、それを処理するより良い方法はありますか? すべての %in 参照を二重引用符で囲むのは少し面倒です。クエリ パラメータごとに新しい変数を作成するのは現実的ではありません。
明確にするために、私の質問は変数のスコープの問題に関するものです。ReadParse() は、CGI でクエリ パラメータを取得するための推奨される方法ではないことに気付きました。
Perl 5.8.8、CGI 3.20、および DBI 1.52 を使用しています。これを読んでいる人に事前に感謝します。
@Pi & @Bob、提案をありがとう。%in のスコープを事前に宣言しても効果はありません (私は常に strict を使用しています)。結果は前と同じです。データベースでは、col1 は null ですが、cols 2 と 3 は期待値に設定されています。
参考までに、ReadParse 関数を次に示します (以下を参照)。CGI.pmの標準機能です。私が理解しているように、関数はそれを処理するように見えるので、スコープを設定する目的で %in ハッシュを初期化するつもりはありません (strict を満たす以外)。
私の質問は、do() のコンテキスト内で %in ハッシュを取得する最良の方法は何だと思いますか? 再度、感謝します!これが、元の質問に追加情報を提供する正しい方法であることを願っています。
@Dan: &ReadParse 構文について聞いたことがあります。通常は CGI::ReadParse() を使用しますが、この場合は、CGI.pm ドキュメントに正確に記載されている方法に固執するのが最善であると考えました。
python - Python 3.0 では、標準ライブラリのすべてが文字列を Unicode として扱いますか?
Python (3.0 以降) が Unicode ベースになった今、標準ライブラリがどのように動作するかについて少し混乱しています。CGI や urllib などのモジュールは Unicode 文字列を使用しますか、それとも新しい「bytes」タイプを使用してエンコードされたデータのみを提供しますか?
cgi - CGI に代わるものはありますか (本当に必要ですか)?
個別のプロセスとして実行され、適切な IPC によってリンクされる 3 ~ 4 つのサービスで構成されるアプリケーションを設計しています。システムには Web インターフェイスがあり、そこにある Web サーバーを使用したいと考えています。
Web インターフェースは、同じ Web サーバー上でまったく異なることを行う他の URL を持つことを許可する URL でアクセスする必要があります。その URL の下のパスを使用して、Web インターフェースが何をすべきかを指定する予定です。これには、ネット上で他のアプリケーションが使用したり、人間がブラウザーで対話したりするための機能があります。
袖口から、私は次のように働きます:
- ウェブサーバーが受信するすべてのリクエストに対して CGI プロセスを開始するようにします (Apache の SetHandler など)。
- CGI を IPC に接続させます
- バックエンド サービスから必要なものを取得できるようにする
- サービスの回答に基づいて、CGI が HTML / XML および HTTP ステータスを返すようにします。
今、私が本当に望んでいるのは、最初の 2 つのステップを回避することです。それができない場合は、2 番目のステップを回避することです。これは、不必要なオーバーヘッドでパフォーマンスを浪費しているのではないかと心配しているからです (他のアプリケーションからの要求は頻繁に発生する可能性があります)。 )。
たとえば、PHP は MySQL データベースへの永続的な接続を開くことができます。この接続は、スクリプトの実行後も存続し、次回再作成する必要はありませんが、実際にどのように行うのかはわかりません。また、私が理解しているように、サーバーの起動時にApacheモジュールが一度ロードされるため、最初のステップが削除される可能性がありますが、Apacheに結び付けられます.
では、特定の URL のハンドラーを別の Web サーバーにフックする良い方法は何でしょうか? HTTP を処理したくありません。それ以外の場合は、2 番目のサーバーへのプロキシ設定を使用するだけかもしれませんが、車輪の再発明のようです。CGI は問題ないと思われ、同様の構造の大量のリクエストを処理する例があれば教えてください。
perl - CGIをフレームワークに移行するための最良のアプローチは何ですか?
私はperlCGIで実行されている大きなWebアプリケーションを持っています。正常に動作しており、よく書かれていますが、過去に行われたように、すべてのhtmlはCGI呼び出しでハードコードされているため、想像できるように、管理や改善などが困難です。テンプレートを追加し、フレームワーク(catalystまたはCGI :: application)と統合します。私の質問は:ここの誰かがそのような経験をしていますか?注意しなければならないことがありますか?両方のフレームワークでネイティブCGIスクリプトを実行できることを認識しているので、トラウマなしで両方(CGIネイティブ広告の「フレームワーク」コード)を一緒に実行できるので便利です。任意のヒント?
perl - HTTPファイルのアップロードを処理するにはどうすればよいですか?
HTTPポストを介してファイルを受信し、それをファイルシステムに保存するPerl CGIスクリプトを作成するにはどうすればよいですか?
c# - .NET で標準出力を効率的にリダイレクトする
.NET プログラムから php-cgi.exe を呼び出そうとしています。RedirectStandardOutput を使用して出力をストリームとして戻しますが、全体が非常に遅くなります。
どうすればそれをより速くできるかについて何か考えがありますか? 他のテクニックは?
perl - Perl スクリプトに国際化を追加するにはどうすればよいですか?
Perl で書かれた成熟した CGI アプリケーションに多言語サポートを導入することを考えています。私は当初、翻訳ファイルに Perl ハッシュ (ディスクに保存) を使用して独自のソリューションを展開することを検討していましたが、 CPANモジュールに出くわしました。
Perl での国際化 (特に i18n CPAN モジュール) の経験がある人はいますか? i18n モジュールは多言語サポートの推奨される方法ですか、それともカスタム ソリューションを再検討する必要がありますか?
ありがとう
security - CGI ベースの Web アプリの安全性は?
CGI を使用することのよく知られた主な欠点は、Web サーバーのパフォーマンスが低いことです。しかし、CGI (主に C/C++) ベースのアプリケーションはどの程度安全なのでしょうか? C/C++ で構築された CGI アーキテクチャに重大なセキュリティ ホールはありますか?
CGI ベースの Web アプリ/Web サイトの実際の実装について知りたいです。私が知っているのは javaranch.com です。
apache - cgiをFastcgiに変更する
C / C ++ cgiアプリケーションをFastcgiに変更することはどの程度実現可能ですか?これはコードの変更のみを必要としますか?それとも、Apacheサーバーの設定を変更する必要がありますか?
変更の明らかなメリットは何ですか?cgiからFastcgiへの変更はメリットの価値がありますか?
perl - テキストを抽出して保存し、Web に出力するにはどうすればよいですか?
たとえば「MyFile.txt」でHF50(HF$HF)を検索しているため、抽出されたデータは「save.txt」に保存する必要があります。「save.txt」のデータが再度抽出され、パラメーターが入力され、テーブルに出力されます。しかし、コードを試してみると、出力がなく、「save.txt」が空白です。
Var $HF は、何を入力しても認識されません。助けてください。
= MyFile.txt データ=
1,HF50,13-OCT-08,04:17:53,761503BZZGR-62,B2761503BP22.EVA,DWP,DWP,Calibration
2,HF60,13-OCT-08,04:17:53 ,761503BZZGR-62,B2761503BP22.EVA,DWP,DWP,キャリブレーション
1,HF50,13-OCT-08,04:17:53,761503BZZGR-62,B2761503BP22.EVA,DWP,DWP,キャリブレーション