問題タブ [plack]
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 - 静的 CGI スタイルの perl スクリプト (xxx.pl) を動的 PSGI アプリケーションに変換するには?
CGI スタイルの perl スクリプトは、このスタイルではテストが困難です。
(注: コードは ruby で、 を使用していますRack::Test
)。
$env
しかし、静的ファイルを PSGI アプリケーション (コード参照、パラメーターとして受け入れ、 return ) に変換できれば[$status, $header, $body]
、物事は簡単になりPlack::Test
、残りはすべて実行されます。
私は PSGI 仕様を読んでいますが、一般的にこれへのルートを見ることができます。しかし、私はまだ知りたいのですが、これには存在する車輪がありますか?
Plack::Test
また、のインターフェイスは ほど美しくないと思いますがRack::Test
、代替案はありますか?
perl - 静的ファイルハンドルの提供中にTwiggy400Bad Request
小さなテストケースでは再現が難しい問題がありますが、基本的な説明は次のとおりです。
私はPerlのTwiggyWebサーバーをルートとして実行しており、ポート81にバインドされています。
Plack :: App :: File->(root => "/ my / directory")をデフォルトのWebアプリケーションとして使用して、/ my / directory/..から静的コンテンツを提供します。
小さいファイルの場合、これは正常に機能しますが、大きいファイル(たとえば、30kB以上)の場合、出力は400BadRequestエラーによってかなり確実に切り捨てられます。たとえば、/ my / directory / my.cssの先頭にある/my.cssをリクエストしていますが、末尾は次のとおりです。
/li>
Twiggyは、上記のようにファイルを切り捨てるのではなく、ファイル全体を提供することを期待しています。
Twiggy / Server.pmを操作して、ファイルハンドルを提供するとどうなるかを確認しようとしましたが、迷子になりました。:(
perl - Plack と Middlewares を使用しているときに、デフォルトの perl の IO を utf-8 に切り替えるのは正しいですか?
2 つの出発点:
- Why does modern Perl avoid UTF-8 by default?への彼の回答では、tchrist は、Perl で正しい Unicode 処理を保証するために必要な 52 のことを指摘しました。答えは、定型コードといくつかの
use
ステートメントを示しています。Unicode の使用に関する同様の質問は、How to make "use My::defaults" with modern perl & utf8 defaults? です。 PSGI 仕様は、設計上バイト指向です。すべてをエンコード/デコードするのは私の責任なので、Plack アプリの正しい方法は、出力をエンコードして入力をデコードすることです。
/li>
使い方は正しいですか
PSGI アプリケーションおよび/またはモジュールで?
uni::perl
Perl のデフォルト IO を UTF-8 に変更します。
そうすることで、Plack やそのミドルウェアの何かが壊れますか? open
または、プラグマなしで、オープン時に明示的にエンコード/デコードするPlack用のアプリを作成する唯一の正しい方法ですか?
perl - Modperl構成をPlackに変換する-ファイル拡張子によって異なるハンドラーを実行する
これは、現在のApache / ModperlサイトをStarmanに転送しようとしているため、ファイル拡張子ごとに異なるハンドラーを使用してapp.psgiをビルドする必要があります。Apacheのようなもの:
今私が持っています:
しかし、ビルダーの使い方は?
必要な「ルール」:
- リクエストに拡張子がない場合、またはリクエストが「/」で終わる場合
- で処理する必要があります
$Mapp
- で処理する必要があります
- リクエストが何らかの拡張子で終了する場合は、
.m
.mh
によって処理する必要があります$Mapp
.p
.ph
によって処理する必要があります$Papp
- 拡張子が付いた他のすべてのファイル(.css .js .pdf .jpg ...など)は静的として処理する必要があります。
もちろん、すべての静的ファイルをツリーに配置する方がはるかに簡単ですが、現在のアプリが提供されているので、後でリファクタリングしてStartmanに移動するだけです。
nginx - nginx/starman/dancer Web スタックの説明
私はしばらくの間 Web プログラミングを行っており、LAMP スタックに精通しています。nginx/starman/dancer スタックをいじってみることにしましたが、すべてのピースが互いにどのように関連しているかを高レベルから理解する方法について少し混乱しています。スタックのセットアップは、LAMP スタックのセットアップほど単純ではないように思えますが、それはおそらく、各要素がどのように関連しているかをよく理解していないためです。
nginx が果たしている役割 (軽量の Web サーバー/プロキシ) は理解していますが、starman が pgsi、plack、dancer とどのように関係しているかについては混乱しています。
これらの部分が互いにどのように関連しているか、およびスタックのセットアップを取得するためにそれぞれが必要な (または必要でない) 理由の概要を説明していただければ幸いです。ありがとう!
perl - Plack::Builder ポストを取得
特定のメソッド (GET または POST) のビルダー セクションで指定する方法はありますが、両方を同時に指定することはできませんか? ビルダーセクションの私の例。
get および post リクエストを処理しますが、GET リクエストの処理を無効にするにはどうすればよいですか?
ありがとう。
perl - PSGI を使用して、アップロードされたファイルの名前を変更することは可能ですか?
フォームからアップロードを取得し、処理のために別のスクリプトに渡す小さな PSGI アプリがあります。
ファイルは のように正常にアップロードされます/tmp/Fw8n6j0ICn.txt
。問題は、処理がアップロード時の名前のファイルに依存していることです。
ファイルのアップロード方法を変更して に移動することはできます/tmp/Fw8n6j0ICn/original_name.txt
か?
perl - Plack::Runner を使用した Apache サーバー上の Perl Dancer
Apache サーバー (centos 6) で実行したい Perl Dancer Web アプリがあります。Pluck::Runner モジュールを使用する public/dispatch.cgi スクリプトへのシンボリック リンク (index.html) を webapp の rootdir に配置しました。
問題は、ページをロードするときに、必要なファイル (sqlite ファイルなど) が見つからないことです。実際、ルーティングは $appname/index.pl/blabla... の代わりにルーティングを探すため、混乱しています$appname/blabla...
ここでは何らかの apache ディレクティブまたはルールが必要だと思いますが、十分ではありません。
誰かがこの問題を解決するのを手伝ってくれることを願っています。
ありがとうございます。ロイ。
perl - Perl-FacebookグラフAPI
以前はデスクトップアプリケーションとWebアプリケーションを区別するのは簡単でしたが、今日はドキュメントを読んでいるときに、この違いがあまり目立たないことに気づきました。
Facebook :: Graphモジュールを使用してデスクトップアプリケーションを作成していますが、それでも構成の段階を超えることはできません。私は認証段階で立ち往生しています:
(http://metacpan.org/pod/Facebook::Graph)
「$envが必要です」と言われ続けます。ドキュメントを読んで、PlackはWebアプリケーションにのみ関係していることに気づきました。
(http://metacpan.org/pod/Plack::Request)
これを確認できますか?そうでない場合、どうすればこのステップを乗り越えることができますか?
Mechanizeを使用してaccess_tokenを取得し、ドキュメントで説明されているようにGETリクエストを行うことは問題ではありませんが、私の存在を複雑にしたくないので、他の方法がある場合は...