タグ付けされた質問 「templates」

2
置換変数を使用してメールテンプレートを編集するためのユーザーフレンドリーなソリューションは何ですか?
私は、データベースからユーザーにメールを送信する多くの「管理者/マネージャー」に依存しているシステムに取り組んでいます。主な機能の1つは、同時に複数の人にメールを送信できることです。もう1つの重要な機能は、メールを手作業で作成できることです。これは、毎回わずかに変更する必要がある傾向があるためですが、基本的なテンプレートを使用すると、多くの時間を節約できます。 このため、典型的な「テンプレート」ソリューションがあり、次のようなテンプレートがあります。 Hello {{recipient.full_name}}, Your application to {{activity.title}} has been accepted. You have requested to participate on dates {{application.dates}}, in role {{application.role}} Blah blah blah 私たちが抱えている問題は、(予想どおり)マネージャーが「変数」のアイデア全体を理解していないこと、そしてそれらを上書きするようなことをしていることです。それらは置き換えられず、システムが壊れているか、または「こんにちは{{ジョン}}」のような不可解なものですらある。 大きな問題は、これがいつものように、自動的に送信されるテンプレートの編集にアクセスできるパワーユーザーが数人しかいない "admin"セクションに追いやられておらず、何をしているのかを知っていることが期待されることです。システムのすべてのユーザーがこの問題にさらされます。 明白な解決策は、ユーザーが編集できるようにこのテンプレートを表示する前に変数を置き換えることですが、複数の人にメールを送信する場合は機能しません。 これはかなり一般的な問題のようですが、誰かがすでに解決していることを期待しています。 この問題の適切な解決策をどこかで見た/作成した/思いつくことができますか? 更新 ダニエルBの答えに基づいて私が最終的に行ったのは、カーソル位置とコード内の{{}}の位置に基づいて、ユーザーが現在「変数内」か「外」かを検出することでした。内部では、大きなテキスト領域の下に小さなテキストを表示して、これが置き換えられること、および必要に応じて完全に削除できるが、編集できないことを説明しています。 私はこれをonClick、onChange、onKeyDown、onKeyUpで行います。「キー」イベントの場合、変数内にいる場合、keyCodeがいくつかの「ナビゲーション」キーの1つである場合にのみ、TRUEを返します。それ以外の場合は、FALSEを返します。これにより、その変数の編集が事実上防止されます。 完璧ではありませんが、とても安く、効果があるようです。

1
暗黙的インターフェイスと明示的インターフェイス
コンパイル時のポリモーフィズムと実行時のポリモーフィズムの実際の制限を理解していると思います。しかし、明示的なインターフェイス(実行時の多態性、つまり仮想関数とポインタ/参照)と暗黙的なインターフェイス(コンパイル時の多態性、つまりテンプレート)の概念的な違いは何ですか。 私の考えでは、同じ明示的インターフェースを提供する2つのオブジェクトは同じタイプのオブジェクトである(または共通の祖先を持っている)必要がありますが、同じ暗黙的インターフェースを提供する2つのオブジェクトは同じタイプのオブジェクトである必要はありません。両方が提供するインターフェースは、まったく異なる機能を持つことができます。 これについて何か考えはありますか? また、2つのオブジェクトが同じ暗黙のインターフェイスを提供する場合、これらのオブジェクトがそのインターフェイスを宣言する基本オブジェクトから継承しないようにする理由(仮想関数ルックアップテーブルなどの動的ディスパッチが不要であるという技術的な利点以外)それを明示的なインターフェースにしていますか?別の言い方をすると、同じ暗黙のインターフェースを提供する(したがって、サンプルテンプレートクラスの型として使用できる)2つのオブジェクトが、そのインターフェースを明示的にする基本クラスから継承しないようにできますか? 関連する投稿: https://stackoverflow.com/a/7264550/635125 https://stackoverflow.com/a/7264689/635125 https://stackoverflow.com/a/8009872/635125 この質問をより具体的にする例を次に示します。 暗黙的なインターフェース: class Class1 { public: void interfaceFunc(); void otherFunc1(); }; class Class2 { public: void interfaceFunc(); void otherFunc2(); }; template <typename T> class UseClass { public: void run(T & obj) { obj.interfaceFunc(); } }; 明示的なインターフェース: class InterfaceClass { public: virtual void …

2
gettextを使用して長いテキスト(ビューおよび電子メールテンプレート)を翻訳する
多言語のPHP Webアプリケーションを開発していて、gettextで翻訳する必要がある長い(-っぽい)テキストがあります。これらは、電子メールテンプレート(通常は短いですが、それでも数行)とビューテンプレートの一部(テキストのより長い説明ブロック)です。これらのテキストには、いくつかの単純なHTMLが含まれます(強調のための太字/斜体など、おそらくここまたはそこへのリンク)。テンプレートは、出力がキャプチャされるPHPスクリプトです。 問題は、gettextが長いテキストを処理するのに非常に扱いにくいように見えることです。長いテキストは通常​​、短いテキストよりも時間の経過により多くの変化があります— msgidを変更して、すべての翻訳で更新することを確認できます(多くの作業が必要で、msgidが長い場合はエラーが発生しやすくなります)。 msgidは変更されず、翻訳のみが変更されます(テンプレートに古いテキストが紛らわしくなります)。また、私はgettext文字列にHTMLを含めることに対するアドバイスを見てきましたが、これを回避すると、単一の自然なテキストが多数のチャンクに分割され、翻訳と再構築の悪夢がさらに大きくなるでしょう。 gettext文字列を個別のmsgidに不要に分割する。 私が目にするもう1つのアプローチは、これらの長いテキストではgettextを完全に無視し、それらのブロックを各ロケールの外部サブテンプレートに分離し、現在のロケールのブロックを含めることです。欠点は、gettext .poファイルと完全に異なる場所にある個別のテンプレートとの間の変換作業を分離していることです。 このアプリケーションは将来的に他のアプリケーションの出発点として使用されるので、長期的には最善のアプローチを考え出そうとしています。このようなシナリオでのベストプラクティスについていくつかアドバイスが必要です。同様のケースをどのように実装しましたか?何がうまくいき、何が悪い考えになったのですか?

9
テンプレートで解決できる問題を特定する方法に関するリソースはありますか?
テンプレートのメタプログラミングに関する知識を向上させることにしました。私は構文とルールを知っており、オンラインリソースの数え切れないほどの例で遊んでいます。 テンプレートがどれほど強力であり、コンパイル時間の最適化がどれだけ提供できるかを理解していますが、それでも「テンプレートを考える」ことはできません。特定の問題がテンプレートで最善に解決できるかどうか、そしてそれができるかどうか、私は自分で知ることができないようです。その問題をテンプレートに適応させる方法。 テンプレートを使用して最も適切に解決できる問題を特定する方法と、その問題をどのように適応させるかを教える、ある種のオンラインリソースまたは本はありますか?
8 c++  templates 

8
STLはOOで実装されていますか?
Adaptor、STLに実装されたIteratorなど、いくつかの設計パターンがあります。 それは、STLがOOの概念で実装されているということですか? OOとC ++のテンプレートパーツの関係は何ですか? オブジェクト指向を正当化する仮想メンバー関数がテンプレートと矛盾することを知りましたが、これは正しいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.