問題タブ [state-machine]

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.

0 投票する
6 に答える
22830 参照

regex - ステートマシンに変換された正規表現の短い例?

Stack Overflowポッドキャスト#36(https://blog.stackoverflow.com/2009/01/podcast-36/)で、この意見が表明されました。ステートマシンのセットアップがいかに簡単かを理解したら、次のようになります。正規表現を不適切に使用しようとしないでください。

私はたくさんの検索をしました。いくつかの学術論文やその他の複雑な例を見つけましたが、このプロセスを理解するのに役立つ簡単な例を見つけたいと思います。私は正規表現をたくさん使用していますが、「不適切な」正規表現を二度と使用しないようにしたいと思います。

0 投票する
2 に答える
1776 参照

ruby-on-rails - Railsワークフローの実装に関する推奨事項はありますか?

Railsワークフロープラグインの経験がある人はいますか? ルート/OpenWFEru。

ロールに基づいて、編集、送信、承認、ロールバックなどの状態を持つCMSタイプのワークフローを探しています。このプラグインはやり過ぎですか?ステートマシン(AASM)で同じことを行い、監査可能として機能する/バージョン管理されたように機能する方がよいでしょうか?

0 投票する
7 に答える
4518 参照

c - コード内の真理値表? ステートマシンをどのように構築するか?

コードに実装する必要がある (やや) 大きな真理値表/ステート マシンがあります (埋め込み C)。このステート マシンの動作仕様は将来変更されることが予想されるため、今後も簡単に変更できるようにしておきたいと思います。

私の真理値表には 4 つの入力と 4 つの出力があります。すべてを Excel スプレッドシートにまとめてあります。それをコードに少しだけ書式を設定して貼り付けることができれば理想的です。

次のように真理値表にアクセスしたいと考えていました。

そして、次の方法で出力値にアクセスできます。

しかし、それを得るには、次のようにかなり紛らわしい表を作成する必要があるようです。

これらのネストされた括弧はやや混乱を招く可能性があります-コードで見栄えの良いテーブルを保持する方法について、より良いアイデアを持っている人はいますか?

ありがとう!

HUAGHAGUAHの回答に基づいて編集:

みんなの意見を組み合わせて (ありがとう -- これらの回答のうち 3 つまたは 4 つを "受け入れる" ことができればいいのにと思います)、2 次元配列として試してみようと思います。小さなビットシフト マクロを使用して、配列にインデックスを付けます。

これにより、真理値表の配列は次のようになります。

そして、次のように真理値表にアクセスできます。

私はそれを試してみて、それがどのように機能するかを見ていきます. また、0 と 1 を、出力の各行の入力を説明する /**/ コメントと共に、各状態の意味を表すより役立つ #define に置き換えます。助けてくれてありがとう、みんな!

0 投票する
7 に答える
17928 参照

.net - .NET のステート マシン フレームワーク

私の職場には、基本的にメッセージ駆動型のステート マシンであるシステムがあります。さまざまな種類のメッセージを取り込み、メッセージに基づいてコンテキスト/状態を検索し、メッセージと現在の状態に基づいて何をすべきかを決定します。通常、結果はシステムから送信されるメッセージです。

.NET でステート マシンを実装するための適切なオープン ソース フレームワークはありますか? 私は Windows Workflow の最新リリースを調べましたが、これは良い選択肢のようです。ただし、デフォルトの永続化メカニズム (状態遷移データを報告する必要があります)、テスト容易性、および WF チームがフレームワークを再設計しているという事実 (おそらく) について懸念があります。

WF の代わりに、昔ながらの GoF の「状態」パターンを実装し、Spring.NET を使用してすべてを結び付けようと考えています。すでにこれを行っているもの、または同様のものはありますか?

0 投票する
2 に答える
1456 参照

.net - データ主導のステート マシン アプリケーション

現在、「データ駆動型」のステート マシン アプリケーションに取り組んでいます。現在、状態フローはすべてデータベースで構成されていますが、現在の設計では決定/ビジネス ロジックを DB で構成することはできません。このため、コードは基本的に状態フローも「認識」する必要があるため、データベースでフローを構成しても意味がありません。

依存性注入 (Spring.NET) を使用して状態パターンを結び付けることができる設計を念頭に置いていますが、これをデータ駆動型にする最良の方法はわかりません。私はデータベースでコードのようなもの (クラス名やメソッド名など) を構成することはあまり好きではありませんが、私が考えている設計では、DB でアプリケーションを接続する必要があります (Spring XML での接続と同様)。ファイル)、それは悪いようです。

Windows WF を使って検討してきましたが、WF の将来性と、採用するのに今が良い時期かどうかについて、少し懸念していると思います。私はルール エンジンを扱ったことがないので、それがここで役立つのではないかと考えています。これを実装する方法について何か提案はありますか?

0 投票する
2 に答える
318 参照

design-patterns - ステート マシンは、販売促進システムの状態変化を処理するのに適していますか?

私は販売促進システムを開発していて、おそらくステート マシン パターンで処理できる何かを踏んだだけですが、ステート マシンの経験はまだありません。この状況では、ステート マシンはまったく役に立たないかもしれません :) したがって、一定期間、割り当てられた顧客、製品、割引などを持つ販売プロモーションがあります。各プロモーションにも状態があります。5州くらいです。状態間の遷移は厳密に定義されています。状態 1 を状態 3 に直接変更することはできません。ユーザーは最初に状態 2 に変更する必要があります。「プロモーションの状態が 3 ~ 5 の場合、これ以上商品を追加することはできません」などの制限があります。または、「状態 3 ~ 5 の場合、スーパーユーザーのみがプロモーション費用を編集できる」などの制限。

http://www.codeplex.com/SimpleStateMachineについて読んだところですが、この場合には複雑すぎないかどうかはわかりません。次のようなものを使用して、サービス層で状態ロジックを処理できます。

また

しかし、私はこの種のコードが好きではありません-より良いアプローチが必要です:)誰かアドバイスはありますか? もちろん、懸念事項を分離し、PromotionStatusChangeReviewService、PromotionEditPermissionService などのサービスを開発して、コードの結合を少なくすることもできますが、現時点では見当たらないより良い解決策がおそらくあるでしょう。

0 投票する
3 に答える
2676 参照

wpf - UI ステート マシンを実装する最良の方法は何ですか?

私のプログラムでは、3 つの異なる UI 状態 (通常、成功、エラー) があり、それぞれにコントロールが表示/非表示、有効/無効、色が変わり、ラベルが異なることを言うなど. 私の分離コードでは、基本的に ChangeWindowState(UI.Normal); と言えるようにしたいと考えています。

だから私の質問は、各状態の制御の変更をどのように実装するのが最善ですか?

もちろん、コード ビハインドのコントロールを手動で変更することもできますが、wpf テーマまたはスタイルを使用することで、より良い方法があるのではないかと思います。次に、事前に定義した「エラー」テーマを使用するようにウィンドウを設定できます。現時点ではよくわからないので、用語を間違って使用している可能性がありますが、このようなことを行う最善の方法を誰かが正しい方向に向けてくれれば幸いです.

ありがとう!

0 投票する
3 に答える
1643 参照

regex - 正規表現をNFAに変換するためのライブラリ?

正規表現NFAに変換するための優れたライブラリはありますか?私はこの主題に関する多くの学術論文を目にします。それらは役に立ちますが、コードの動作にはあまり影響しません。

私の質問は、部分的には好奇心によるものであり、部分的には、私が取り組んでいる本番システムでの正規表現マッチングを高速化する実際の必要性によるものです。学習のためにこの主題を探求するのは楽しいかもしれませんが、それがパターンマッチングを高速化するための「実用的な」解決策であるかどうかはわかりません。私たちはJavaショップですが、どの言語の優れたコードへのポインターも喜んで受け取ります。

編集

興味深いことに、Javaの正規表現がすでにNFAであることを知りませんでした。この論文のタイトルは、私がそうではないと信じるように導きました。ちなみに、現在Postgresで正規表現のマッチングを行っています。単純な解決策がマッチングをJavaコードに移動することである場合、それは素晴らしいことです。

0 投票する
3 に答える
492 参照

text - シンタックス カラーリングのステート マシン

現在、レクサーとパーサーがどのように機能するかを学んでおり、ステート マシンについて次の質問があります。たとえば、次のルールに従ってテキストを色付けする必要があります。このルールでは、単純な状態遷移表は次のようになります。

これにより、「$」と行末の間にあるすべての文字に対して OnColor() アクションが呼び出されるため、色付けできます。もちろん、正規表現から同じものを自動的に生成することもできますが、魔法を大量に使用する前に、それがどのように機能するかを知りたいです:)。次に問題が発生します:ルールがある場合:(ドルで終わるテキスト行に色を付けたい場合、状態遷移表はあまり明確ではありません:

行末に「$」記号が見つかった場合に OnDollar() を呼び出すようにステート マシンに教えることができますが、ドル記号が出現する前のテキストを色付けするにはどうすればよいでしょうか? そのような問題を解決するための一般的なパターンは何ですか? もちろん、正規表現で 1 行になりますが、そのようなパーサーがステート マシンを介してどのように実装できるか、またそれが可能であるかを知りたいと思っています。