問題タブ [ancestor]
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.
google-app-engine - AppEngine NDB:祖先を正しく適用する方法は?
新しいプロジェクトで GAE + NDB を検討しています。私はまだ先祖について少し混乱しているので、それらを正しく使用する方法についてアドバイスを得ることができます.
私の場合: アプリケーションは工場の製造オーダーを処理します。別のクライアントを計画しています。管理タスクを軽減するために、すべてのクライアントが同じアプリと同じデータストアを使用するようにします (別のアプリとデータストアを使用することは、クライアント間の立派な中国の壁になりますが、管理するのは悪夢です)。
クライアント間でデータを分離する方法を実装する必要があります。クライアント A は、このアプリで他のクライアントのデータにアクセスできないようにする必要があります。
では、データストアで先祖を使用して、異なるクライアントからデータを分離することは賢明でしょうか? この場合、ClientA-Products、ClientA-Orders、ClientB-Products、ClientB-Orders などの先祖キーを持つことができると思います。あるいは、ClientA、ClientB のように、すべてのトランザクションをクライアントがキーとすることさえありますか?
それとも、エンティティをクライアントに関連付ける各エンティティにプロパティを設定する方がよいでしょうか? この場合、「products」エンティティと「orders」エンティティの両方にプロパティ「Company」があり、書き込みごとにアプリによって入力され、すべてのクエリに含まれる必要があります。
ご意見ありがとうございます。
android - Android からのユーザー固有のデータを Google App Engine Datastore に保存する方法。祖先かどうか?
現在、3 つの SQLite データベース テーブルを使用する Android アプリがあり、このデータを Java ベースの GAE アプリのクラウドに保存したいと考えています。これはバックアップとして使用され、ユーザーはログイン時にブラウザーで表示することもできます。ユーザーは Android アプリにデータを入力しているため、3 つのテーブルのすべてのデータはそのユーザーに属します。このタイプのユーザー固有のデータを保存するための推奨される方法はありますか? ユーザーの電子メールを各エンティティと一緒に保存して、それを識別するか、ユーザー エンティティを親として、このユーザーに属するすべてのエンティティを子として保持する必要がありますか? この場合、親を使用する利点はありますか?
git - git の最新の共通祖先があいまいになることはありますか?
リビジョンは複数の親 (マージ) と複数の子を持つことができるため、「最新の共通の祖先」があいまいになることはありませんか?
例えば:
E と D の最新の共通の祖先は、B または F である可能性があります。
これを git で複製してみましたが、B が共通の祖先になったと思います。FよりもBを選ぶ理由はありますか? おそらくタイムスタンプに頼っていますか?それとも、単にアルゴリズムによって発見された最初の共通の祖先であり、これは任意の実装の詳細でしょうか?
xpath - 絶対パスを使用して先祖を見つける
少し奇妙な状況があります。おそらくカスタムコードを書かなければならないでしょうが、解決策がある可能性が低い場合や、他の人が同様の問題を抱えている場合に備えて、ここに投稿すると思いました.
絶対パスを使用して、要素の最も近い祖先を見つける必要があります。
私が作業している環境にはいくつかの制限があるため、相対パスを使用できません。したがって、このインスタンスでは祖先、先行、親などにはアクセスできません。
元。
私が p id="2" にいるとします。最も近いセクションの祖先を見つけたい。これは通常、
祖先::セクションまたは祖先[1]::セクション
ただし、絶対パスを使用する必要があります。ID やその他の一意の識別子を取得できません。
次のようなXPathを使用してみました
//セクション[ここに何か]
しかし、現在のセクション要素を動的に見つけるために述語に何を入れることができるかわかりません。
絶対パスを使用して最も近い先祖を見つけることは可能ですか?
これは XPath 1 です。
xpath - 2 つの PMD チェックを組み合わせる
PMD を使用してコード エラーをチェックしているときに問題が発生しました。2 つの要件を同時に満たす方法がわかりません。たとえば、ファイルに存在しない ABC という名前のメソッドを確認したい場合は、BCD から拡張されます。PMDを使用して、ABCが存在するかどうか、またはBCDから個別に拡張されているかどうかを確認する方法を知っています。
このような:
さて、これら2つを一緒に確認できる方法はありますか。たとえば、クラス内の ABC が BCD を拡張しないようにします。この 2 つの Xpath クエリを接続するために、 や などを単純に使用することはできないようです。また、 | を使用できることに気付きました。彼らとつながるには、しかし | またはとして動作します。or の代わりに and が必要です。
編集:
私はこのようなことを試しました:
少なくとも私にとってはうまくいくようです。しかし、これを試したばかりなので、これが正しい方法であるかどうかはまだ100%確信が持てません.
mongodb - MongoDB ツリー モデル: すべての祖先を取得し、すべての子孫を取得します
私は任意の木構造を持っています。
データ構造の例:
各ノードとリーフには、 と の 2 つのプロパティがid
ありname
ます。
重要なクエリ:
1.:
リーフ ID が与えられます。クエリは、ルートからそのリーフまでのパス全体を、すべてのノードid
とname
プロパティとともに返す必要があります。
戻り値がノードの並べ替えられた配列であるか、ノードがネストされているオブジェクトであるかは重要ではありません。
例:id
ofが指定されている場合leaf2
、クエリは次を返す必要がありますroot(id, name), node1(id, name), leaf2(id, name)
。
2.:
与えられた任意のノードid
: (サブ) ツリー全体を取得します。ここでは、各ノードがchildren
配列を持つ単一のオブジェクトを取得すると便利です。
思考、試行錯誤:
1.:
最初は単純にツリーを単一の JSON ドキュメントとしてモデル化しようとしましたが、そうするとクエリが不可能になり、リーフがどのネスト レベルにあるかを調べる方法がありません。また、ルートからリーフまでの s のパス全体がわかっている場合はid
、複数の位置演算子を含むプロジェクションを使用する必要があり、現時点では MongoDB ではサポートされていません。ids
さらに、ネストが無限になる可能性があるため、リーフにインデックスを付けることはできません。
2.:
次のアイデアは、各ノードがノードの祖先を含む配列を持つフラットなデータ設計を使用することでしたids
:
この方法では、ルートからノードまたはリーフまでのパス全体を取得するために、2 つのクエリを実行する必要があります。これは非常に優れています。
質問:
データ モデルを選択した場合2.
: ツリー全体またはサブツリーを取得するにはどうすればよいですか?
すべての子孫を取得するのは簡単です: find({ancestors:"myStartingNodeId"})
. しかし、それらはもちろんソートまたはネストされません。
この問題を解決するために、集計フレームワークまたはまったく異なるデータ モデルを使用する方法はありますか?
ありがとうございました!
java - objectify order() には祖先() が必要ですか?
@Parent を含むエンティティがあります
実行して、最新の MyObject のすべてに対してクエリを実行しようとしたとき...
レコードが返されませんでした...ただし、.order() の部分をコメントアウトすると、レコードが返されました。order() には祖先() が必要なのだろうか。
誰でも知っていますか?
algorithm - 有向非巡回グラフの 2 つの頂点間にパスが存在するかどうかを確認する - クエリ
この質問は、クエリごとに O(n + m) で簡単に解決できますが、 O(n²) よりも優れた前処理を使用して、より複雑なクエリに回答することは可能ですか?
ツリーでは、事前注文と注文順に作業することで簡単に実行できます。DAG で同様のことを試しましたが、意味がありません。
また、この問題を LCA in DAG 問題に変更しようとしましたが、DAG で LCA を見つけることは十分に速く解決できません。
制約で正確に言うと、次のようになります。
n - 頂点の数、最大 10^5
m - エッジの数、最大 10^5
q - クエリ数、最大 10^5