問題タブ [application-design]
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.
global-variables - UI 駆動型アプリケーションでプログラム スコープ変数をどこに配置しますか?
わかりましたので、グローバル変数が悪いと見なされ、シングルトン パターンが乱用されていることはわかっています。また、クラスは 1 つのタスクだけを実行し、その 1 つのタスクを実行できるようにする変数のみを含める必要があることを多くの場所で読みました。しかし、最近のプロジェクトに取り組んでいる間、実際にコードを書く前にこれらのルールについて考え、プログラムの最初の段階でルールを破る傾向があることに気付きました。
私は現在、MFC ダイアログ ベースのアプリケーションに取り組んでいますが、この質問は UI 駆動型のアプリケーションに適用できます。ステート マシン、ファイルの読み取り/書き込み、およびハードウェア インターフェイスを処理する個別のクラスがあります。これらのオブジェクトはすべて、何らかのタイプの UI コントロールまたはプロパティの表示/編集が必要になります。MFC ダイアログ アプリケーションでは、ダイアログはプログラムなので、プログラムが閉じられるまで存在している必要があります。私は通常、オブジェクトをアプリケーションのメイン ダイアログ クラスに配置し、ダイアログ クラスに 2 つの役割を持たせました。アプリケーション内の他のすべてのオブジェクトのメイン UI とホームの両方として。他のアプリケーションでは、これらのオブジェクトをグローバルに作成し、必要な場所から参照しました。これらの方法はどちらも正しくないようです。最初のオプションは、1 つのクラス、1 つのタスク ルール、2 つ目はグローバルに依存し、隠れた依存関係も作成します。ある種の依存性注入を導入することはできますが、注入するこれらすべての変数はどこに存在するのでしょうか?
ルールを破ることなくプログラムを整理するために、他の人は何をしているのでしょうか?
desktop-application - ユーザーが実行時にファイルをいじったときにデスクトップ アプリケーションがひどく壊れるのを防ぐにはどうすればよいですか?
実行中に出力ファイルを削除したり、sw の 2 つのインスタンスを同じ IO に転送したりしますか?
asp.net - あまりにも多くのことを行う Web ページ
Web アプリケーションを構築するページに関して:
最近、以前よりもシンプルな Web ページを作成していることに気づきました。以前は、多くのページを作成するのを避けるために、できるだけ多くの機能を 1 つのページに詰め込もうとしていました。
私は、これが物事を必要以上に複雑にし、複雑にし、混乱させていることに気づき始めています。ページ数を増やしてみませんか?これを行った理由は、ユーザーが他のページをブラウズする必要がないようにしたかったからだと思います。必要なすべての機能を 1 つのページにまとめました。
まあ、これらの善意は、ユーザーにとって非常に混乱したインターフェースと非常に扱いにくいソースコードに変わりました. 私は新しい開発者であり、改善できるように自分がしていることをよく反映させようとしています。それが違いを生む場合、私は ASP.net で開発しています (ただし、これらはおそらくどのプラットフォームでも考慮されます)。
私の質問は次のとおりです。
- 私はこれらのことを考えすぎていますか?
- 他の誰かがこれをしていることに気づきましたか?
- 幸せな媒体はどこにありますか?
schema - 顧客ごとに複数のユーザー定義属性が存在する可能性があるスキーマを作成する方法は?
私は、フィードバック/調査環境のようなものでユーザーに表示されるフィールドをクライアントが定義できるようにするアプリケーションに取り組んでいます。たとえば、ピッツェリアにはお気に入りのトッピングを求めるフィールドがあり、バーにはお気に入りのビールのブランドがあるかもしれません。
これらのフィールドは特定の顧客に依存しており、おそらく複製されることはないため、システムは顧客がこれらのフィールドを作成および変更できるようにする必要があります。似たようなお客様の分野に基づいて、お客様に提案を提示する方法があれば理想的です。たとえば、2 番目のピッツェリアのサインアップがある場合、管理ページでフィールドを定義すると、同様のビジネスが次の質問をすることを選択し、「サンプル」値のリストを提示することが示される場合があります。
Entity-Attribute-Value (EAV)
これは、このテーブルのモデルの適切な候補でしょうか? 従来のリレーショナル モデルは、「user1」などと呼ばれる多くのフィールドを含むため機能しません。もちろん、これは非常に扱いにくいものです。
c# - あるWPFUserControlから別のWPFUserControlに情報を渡す方法は?
WPFアプリケーションがあります。
左側にはボタンでいっぱいのスタックパネルがあります。
右側には空のドックパネルがあります。
ユーザーがボタンをクリックすると、対応するUserControl(ビュー)がドックパネルにロードされます。
このパターンは、各UserControlがモデルから取得した情報をフィードするViewModelクラスを持つビューであるため、うまく機能します。したがって、ユーザーはページからページへクリックでき、各ページはすべての顧客の編集などの分離された機能を実行できます。データベースへの保存など。
問題:
ただし、これらのページの1つに、顧客のリストを含むリストボックスが必要であり、各顧客には「編集」ボタンがあり、その編集ボタンをクリックすると、DockPanelにEditSingleCustomerを入力します。 UserControlを使用して、編集する必要のある顧客を渡します。
EditCustomerユーザーコントロールをロードできますが、編集する顧客を渡し、その顧客を編集するためにDataContextを設定するにはどうすればよいですか?
- すべてのUserControlが既に作成されており、MainWindow.xaml.csのディクショナリに存在するため、コンストラクターに渡すことができません。
- そのため、各UserControlにPrepareUserControlメソッドを作成し、Customerをそのメソッドに渡し、x:Name = "..."を使用してコードビハインドからテキストボックスで表示できますが、それは重要ではありません。ItemsControlをにDataBindする必要があります。もちろん、WPFのデータバインディング機能を利用するためのObservableCollection。
- そのため、ビュー内のListBoxItemSourceを次のようにコードビハインドにバインドしようとしました。
そのビューのIntializeComponent()の無限ループが原因でスタックオーバーフローエラーが発生します。したがって、これについては間違った方法で行っていると思います。WPFで1つのUserControlから別のUserControlにコマンドを渡すだけの簡単なパラダイムが必要です(誰かが「WPFコマンドを使用する」と言う前に、私はすでにコマンドを使用していますUserControlで、ユーザーがすべての顧客を編集できるようにします。これは正常に機能しますが、親ウィンドウコンテキストで別のユーザーを読み込むことができるようにする必要があるため、ビューの背後にあるコードで(ビューモデルではなく)処理する必要があります。保存が終了したときの制御:
では、WPFで、UserControlをDockPanelにロードし、そのUserControl内に、別のUserControlをロードし、そのUserControlにコントロールをバインドできる特定のオブジェクトを送信するコマンドを含むボタンを設定するにはどうすればよいでしょうか。
この時点では、WPFコマンドについて十分に理解していないと想像できます。誰かがここから正しい方向に私を向けることができれば、それは素晴らしいことです。または、この「DockPanelパターンでのUserControlsの読み込みはWPFとは無関係であり、回避し、アプリケーションを構造化する別の方法に置き換える必要があります」と、これも役立つニュースです。アプリケーションの現在の状態をここからダウンロードして、アプリケーションがどのように構成されているかを知ることができます。ありがとう。
security - 「パスワードを忘れた」場合の最善の方法は何ですか?
コミュニティ Web サイトをプログラミングしています。
「パスワードを忘れた」機能を構築したい。
さまざまなサイトを見回してみると、次の3 つのオプションのいずれかが採用されていることがわかりました。
パスワードを変更できる固有の非表示 URL へのリンクが記載されたメールをユーザーに送信します (Gmail および Amazon)。
ランダムに生成された新しいパスワードを記載したメールをユーザーに送信します(Wordpress)
ユーザーに現在のパスワードを送信します(www.teach12.com)
オプション #3はユーザーにとって最も便利に思えますが、私はパスワードを MD5 ハッシュとして保存しているため、 MD5 は元に戻せないため、オプション #3 をどのように使用できるかわかりません。これは、Web サイトがパスワードを平文でどこかに保存している必要があり、少なくとも平文のパスワードが安全でない電子メールでユーザーに送信されていることを意味するため、安全でないオプションのようです。それとも、ここで何か不足していますか?
したがって、オプション 1 を実行できない場合は、ユーザーのパスワードを変更してユーザーに送信するだけでよいため、オプション 2が最も簡単にプログラムできます。安全でない電子メールを介して通信されるライブパスワードを持っている必要があるため、これはやや安全ではありません. ただし、これはトラブルメーカーによって悪用され、無作為に電子メールを入力したり、さまざまなユーザーのパスワードを絶えず変更したりして、ユーザーを悩ませる可能性もあります。
オプション #1が最も安全に思えますが、有効期限が切れる隠し URL などを処理するために少し余分なプログラミングが必要ですが、大規模なサイトが使用しているようです.
これらのさまざまなオプションを使用/プログラミングした経験はありますか? 見逃したオプションはありますか?
application-design - 大規模なアプリケーション設計(WPF / Silverlight)
MVVM、およびWPFアプリの全体的な構造のMVCパターンを除いて、アプリのモデル/コントローラーの側面をどのように正確にサブコンポーネントに分割しますか?私が尋ねる理由は、上記のパターンの観点からソリューションを設計することに問題はないということですが、実際にバックエンドを作成することになると、私はそれをたくさんいじっていると感じています。私はユーザーの観点からは高品質のアプリになりますが、私のデザインのアステティックではこれを受け入れることができません。
明確にするために; 私のビジネスロジックの多くは、アプリ全体を変更することなく、簡単で意味のある方法でクラス(または関連するすべてのインターフェイスを含むクラス階層)にリファクタリングすることはできません。私は1年半プロとして開発してきましたので、経験不足の問題かもしれません。でもそれでも言い訳にはならないと思います。この明らかに自由形式の質問へのポインタはありますか?
編集:コードリクエスト(Silverlight内)-以下は、はるかに大きなアプリの一部であるドラッグドロップ割り当てアプリケーションのマウスボタンアップハンドラーからの-スニペット-です-
ロジックがどれほど鈍いのかが本当に好きではなく、すべてがイベントハンドラーに詰め込まれているため、すべてが完全にファクタリングできない方法が嫌いです。
application-design - サーバークライアントアプリで不安定なインターネット接続を処理する
サーバークライアントアプリで不安定なインターネット接続を管理するために使用できるテクノロジーは何ですか。私は主にPHP(+ Zend Framework)を知っており、C#とASP.NETMVCを学んでいます。WCF / MSMQは役立つと聞きましたが、どのように... PHP(私がよく知っている)でできることはありますか?しかし、.NETの代替案が優れているかどうかを知ることも良いことです
背景:
client ***s***はサーバーdbに接続してCRUDを実行します。しかし、インターネット接続が失敗した場合、これは不可能になります。どうすればこれを修正できますか?
現在使用されているソリューションは、ローカルホストデータベースを使用することでした。1日の終わりに、すべてのクライアントがサーバーにアップロードし、朝にサーバーから「統合」データベースをダウンロードします。アップロード/ダウンロードがまだ失敗する可能性があるため、これは絶対確実ではありません。転送される大量のデータを考慮すると、実際には可能性が高くなります。
更新:MSMQ/WCFの代わりにPHP/Zend Framework / MySQLがありますか?