問題タブ [mason]
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.
html - perl : HTML::Mason - HTML タグ内の perl ハッシュを表形式で出力します
ハッシュの値に関する HTML メール (レポート) を送信しようとしています。しかし、ハッシュ値を表形式で出力できませんでした。私はHTML::Mason
自分のperlコマンドを実行し(ハッシュをループして)、レポートの最後に出力するために使用しています。しかし、私の perl コードは実行されません。
perl - Mason メソッドのスコープ - オーバーライド
Mason2を使用します。3 つのコンポーネントがあります。
内容の/tmp/index.mc
あるもの:
これ$.Some
は、 で定義されたメソッド/Base.mc
です。
/tmp/Base.mc
のみを含む
/tmp/index
プリントのご依頼:
Some
メソッドを追加しました/tmp/Base.mc
/tmp/index
再度要求すると、次のように出力されます。
Some
ラップされた再定義されたメソッドを尊重しました/tmp/Base.mc
質問は:
メイソンが上記のようにメソッドの再定義を許可する場合、 の目的は何<%override method>
ですか? 何<%override Some>
か違うの?(私がテストしたとき、同じように印刷されます)。
EDITおそらく、質問は次の perl コードに縮小できます。
どちらの場合も (たとえば、"plain" 再定義と "override" で再定義)、次のように表示されます。
したがって、唯一の違いは with で ? を呼び出す可能super()
性some
ですoverride
。基本的な知識が欠けていたらすみません... ;(
perl - Mason2 での複数のメソッドのオーバーライド
Mason2を使用して Web サイトを構築します。各ページは 3 つのフィルター (コンテンツによって呼び出されるメソッド) を呼び出す必要があります。
これらのフィルター (メソッド) の 3 つの異なる実装があります。これら 3 つのフィルタのデフォルト セットは、最上位/Base.mc
コンポーネントで定義されています。
ここで、サイトの別の部分 (別のルート) について、
上記のフィルター/メソッドのデフォルト セットを使用する必要がありますが、別のルートでは、
filter1
、filter2
、filter3
およびの別のセットを使用する必要があります
3 番目のセットを使用します。
メソッドは低レベルのコンポーネントで簡単に再定義できますが、(この質問) のようにそれを行うことは、DRY 原則を尊重しません。
同じことを繰り返す必要がある 3
質問は:
- メソッドの 3 つの異なる実装を 1 回だけ記述する方法と、それらを一度に使用する方法
/set2.mi
、のようなコンポーネントを作成しようとし/set3.mi
ましたが、これらのフィルターメソッドをオーバーライドしようとし、必要に応じてそれを呼び出しまし/{c,d,e}/Base.mc
た
しかし、これは機能しません。
3 つの異なるメソッドの実装を記述し、必要な deeprr で一度に呼び出す方法はBase.mc
? 出来ますか?
標準の perl では、おそらくrolesを使用するため、必要なパッケージでは次のようなものを使用します。
パッケージSet1
とSet2
必要なメソッドの実装が含まれる場所、または動的読み込みの場合はrequire ...
. Mason2 で可能なようなことはありますか、それとも繰り返す必要があり%ovverride
ますか?
これが理にかなっていることを願っています...そうでない場合は、コメントを追加してください。質問を更新してみます。
編集
たとえば、コードを短縮するために、3 つではなく 1 つのフィルターのみを使用します。
の/Base.mc
/a/index.mc
として使用する場合
次のように出力されます。
今、別のものを持っていMyHead
ます。
上記のコードを追加する/b/Base.mc
と動作MyHead
し、/b/index.mc
再定義されたフィルターを呼び出し、必要なものを出力します
問題は、
- などのように、他の N 個の
Base.mc
コンポーネントで上記のフィルター コードを繰り返したくありません。/c/Base.mc
/d/Base.mc
- フィルタを一度書き、それを他の多くのコンポーネントで「使用」して、デフォルトのものを「再定義」する方法。
apache - ブラウザでプレーンテキストとして表示される mhtml
私はPerlとMasonにまったく慣れていません。ここでの私の質問が些細なことだと思われる場合は、ご容赦ください。
Mason フレームワークを使用して開発された Web サイトがあります。私の知る限りでは、Apache、Perl (ModPerl)、Mason、および MySQL のみを使用しています。ウェブサイトのコードを持っていて、ウェブサイトを Ubuntu ローカルホストで動作させようとしています。
これらは、私が最初から従った手順です。
- Apache、MySQL、Perl、ModPerl をインストール済み
- cpanm で HTML-Mason をインストール: cpanm HTML::Mason
- に次の行を追加しました
apache.conf
私はこのようにテストしています
という名前の単純な「Hello World」ファイルを作成test.mhtml
し、ディレクトリに配置しました/var/www/
。このファイルをブラウザで開こうとすると、次のように表示されます。
ただ表示する代わりにHello World
他に構成を変更する必要はありますか?
perl - 出力行が % 文字で始まる Mason 出力の生成
Masonを使用して、テンプレート (Web ではなく) からいくつかの出力を生成します。
出力行が文字で始まる Mason コンポーネントから出力を生成する必要があります%
。
%<space>
Mason コンポーネントの行頭は perl コマンドとして実行されるため、現在は以下を使用しています。
$perc は%init
セクションで次のように定義されています。my $perc = '%';
上記は機能しますが、多くの行ではひどい解決策です。
質問:一部の行の先頭に「%」文字が含まれている Mason 出力を生成することは可能ですか?
perl - Mason コンポーネントを役割として使用する
新しい Mason 2 では、Moose メソッド修飾子 (around、augment、override など) が導入されているので、Moose ロールとして機能するコンポーネントを書き始められるようにしたいと考えています。
私が知る限り、そのままではサポートされていませんが、この機能を提供するために (おそらくプラグインを介して) Mason を拡張しようとした人はいますか? 一般的に、それには何が必要で、Mason がコンポーネントをレンダリングする方法を考えると、それは可能なのでしょうか?
編集:を使用して「偽造」しようと$m->visit('other component')
しましたが、少なくとも他のコンポーネントのメソッドをロードしているように見えますが、メソッド修飾子は次のように失敗するようです:...not found in the inheritance hierarchy
perl - Perl Mason 構文の検証
コマンドラインで perl mason 構文を検証する方法はありますか? 通常の perl モジュールでは を使用できることはわかっていますがperl -c
、docstring などのメイソン固有の構文でエラーがスローされます...
例えば:
は有効な perl mason ファイルですが、それperl -c
に対して実行すると以下が返されます。
perl - リロード時だけでなく、ロード時の ETag
Perl/Mason で追跡するために画像に ETag を設定しようとしています。
最初に作成された etag.m:
これを別のファイル test_etag.m で使用しています。
キャッシュをクリアした後の test_etag.m の最初の呼び出しで、警告が表示されます。etag は空です。次の呼び出しごとに、警告が表示されないため、画像がキャッシュされていると思います。リロード F5 を実行した場合にのみ、正しい ETag が検出され、警告に表示されます。
リロード時だけでなく、すべてのロードで初めて設定された ETag を取得するにはどうすればよいですか?
mason - POET のグローバル変数 mason2
私は Mason2/POET を初めて使用し、このガイドhttp://search.cpan.org/~jswartz/Poet/lib/Poet/Manual/Tutorial.podを使用して最初の Web サイトを作成しました。
ここで、新しいグローバル変数 (例: $User) を作成したいと思いますが、ドキュメントで説明されていないため、作成するためにどのような方向に進むべきかわかりません。私が見つけたほとんどのドキュメントは、Apache または mod_perl に関するものでした...
私が探しているものの例:
perl - 値からの perl ループのマップ
次のコードが機能しない理由を理解できません。
getAll
引数、ボックス、およびを呼び出しています(1..10)
。11 を返していますが、期待される動作は 10 要素を返すはずです。