問題タブ [crx]
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.
unit-testing - FelixOSGIバンドルJUnitコードを参照するAdobeCQ5CRXDEで単体テストをコンパイルします
AdobeCQ5.4内で実行されるいくつかの単体テストを作成したいと思います。私はCQ内でテストするために、この記事で説明されていることを行っています。
ただし、Javaコードで単体テストクラスを作成した後、org.junit名前空間を解決できないため、CRXDE内でコンパイルされません。説明したように(Apache Sling JUnit Core)FelixにJUnitバンドルをインストールしてアクティブ化しましたが、このアクティブなFelixバンドルをCRXDEで見つけるには、他に何かする必要があると思います。接続しているCQ5インスタンスのFelixバンドルは、これらのエクスポートされたパッケージを示しています。
以下のこのサンプルユニットテストコードでは、最後の3つのインポートステートメントは「解決できません」。
FelixにインストールされたOSGIバンドルは、CRXDEを使用してJavaクラスで参照できるようにアクセスできるはずですが、インストールしたJUnitバンドルでは発生しません。なぜだめですか?CRXDEにOSGIバンドル参照を見つけてCRXDE内でコンパイルさせるには、何をする必要がありますか?
osgi - Felix 環境から JCR API を使用して CRX リポジトリに接続できない
JCR API を使用して CRX リポジトリに接続しようとしています。http://wiki.apache.org/jackrabbit/RemoteAccessの指示に従いました。プレーンな Java クラスを作成し、次を使用して crx リポジトリにアクセスしようとすると、
それは完璧に機能します。バンドルとして作成して Felix にデプロイすると、機能しません。必要なすべての依存関係をそこに入れました。
jackrabbit - Jackrabbit は、参加しているノード全体を検索します
Jackrabbit リポジトリのオブジェクトにタグを付けました (実際には Adobe/Day CQ の CRX ですが、これは Jackrabbit コードだと思います):
- アセット: タグ = A、B
- 子アセット データ 1: タグ = A、C、E
- 子アセット データ 2: タグ = D、E
親アセットの一連のタグと 1 つの子の結合に対してクエリを実行したい。つまり、"BC" は親と子 1 にあるためアセットに一致しますが、"C D" は組み合わせがないため一致しません。これは、C と D が別々の子データ ノードに分割されているためです。
Jackrabbit でこれを行う方法はありますか? XPathクエリを書くことができます
ただし、結合された子アセットが同じであることを XPath が保証していないように見えるため、これは機能しません*
。つまり、これは「どの子にも C/D がある」ことを意味し、1+ の子には C と 1+ があるため、私のアセットと一致します。子供にはDがあります。代わりに、JCR-SQL2を使用できます
しかしSELECT DISTINCT
、JCR-SQL2 にはありません。代わりに「BE」を検索すると、このアセットが 2 回返されます。これは、asset+child1 と asset+child2 の両方に一致するためです。
どちらのクエリ結果も Java で後処理できます。つまり、最初のケースでは偽陽性の一致を除外するか、2 番目のケースでは重複した結果を除外しますが、これがページングのパフォーマンスにどのように影響するか心配です。より多くのノードをスキャンする必要があります。悪いノードを取り除く必要がなく、ページングの正しい結果サイズを計算するためにロットをスキャンする必要があります。これは、2 番目の SQL2 のケースでは安くなるはずです。なぜなら、検索が順序付けられている場合、ノード パスのみに基づいて重複を見つけることができ、すべての重複が連続しているため、特定のページの価値のあるデータを安価なスキャンだけで見つけることができるため、うまくいけば読み取らずに済むからです。各結果のノード全体ですが、単純なパスのみの場合でも、ページング カウントのすべての結果をスキャンするコストはわかりません。
私たちが検討したさらに別のオプションは、タグを単一のノードに非正規化することです。この場合、検索を正確に保つには、各子ノードに新しい combined_tags 属性を作成し、一連の子ノードに対してのみすべての検索を実行する必要があります。ただし、これには、同じアセットの下にある 2 つの子ノードを一致させると、明確な問題が残ります。
提案をありがとう。これはすでに大規模なインスタンスであり、さらにスケーリングする必要があります。ModeShape は JCR 実装であるという他の質問を見てきましたが、SELECT DISTINCT
ModeShape で CQ をホストすることが実際に可能である場合、そのためだけに ModeShape に切り替えることは最後の手段である必要があると思います。
ここで思いついたアイデアの 1 つは、アセット タグと子タグの各結合を計算し、タグを 1 つの文字列に結合してから、各値をアセットの多値プロパティとして書き込むことです。つまり、asset + child1 = "ABC E" です。アセット + child2 = "ABD E" であるため、次のようになります。
- アセット: タグ = A、B; tagUnions = "ABC E", "ABD E"
タグを文字列に結合する固定順序 (アルファベット順など) を定義している限り、任意の組み合わせを検索できますtagUnions LIKE '%B%C%'
(ただし、実際にはタグ間に適切な区切り記号を使用します)。これは私たちが見ることができる限り機能しますが、私はあまり好きではありません: アセット + 子ごとに多数のタグが存在する可能性があり、すべてのタグが 1 文字よりも長い名前を持つため、最終的LIKE
にはすべてに対してクエリを実行する長い文字列になります。効率的にインデックスを作成できない可能性があります。
これに対するもう 1 つの方法は、ビットマスクを作成することです。A=1、B=2 などを定義して、ここに多値整数配列を格納し、ビットごとの比較を実行します。ただし、それはおそらく 64 の異なるタグに制限されており、1,000 以上あるので、これを行うことはできないと思います。
そのため、私はまだ、これに対するクリーンなデータベースのようなソリューションを探しています。あなたは私が立てた賞金を逃しましたが、まだダニ、投票、そして助けに対する感謝があります.
adobe - adobe cq 5.4 でモバイル サイトの開発を開始する方法に関する提案
day cq でモバイル サイトの開発をどこから開始すればよいか、誰かアドバイスをいただけますか? また、チュートリアル用のウェブサイトがあれば共有してください。どんな助けでも大歓迎です
lucene - Jackrabbit Lucene の再インデックスのデバッグの中止/失敗
関連性スコアリングに新しいプロパティ ブースト ウェイトを適用できるように、Jackrabbit 2.0 インスタンス (実際には Day CRX 2.1 インスタンス) で Lucene 検索インデックスを再構築しようとしています。ただし、同じ時点でインデックス作成を繰り返し中止しています。カウント 3173000
*INFO * MultiIndex: indexing... /content/xxxxxx/jcr:content (3173000) (MultiIndex.java, line 1209)
*INFO * RepositoryImpl: Shutting down repository... (RepositoryImpl.java, line 1139)
(会社名は編集済み) CRX Web インスタンスを表示したままにする
java.lang.IllegalStateException: リポジトリが利用できません。
シャットダウンした理由はログに示されていません。より高いレベルのトレースでは、これら 2 つの間にこれ以上の線はありません。言及されたパスは存在し、目立たない。Jackrabbit は 100 ノードごとにパスをログに記録するため、次の 100 のいずれかが障害の原因である可能性があります。
何がうまくいかなかったのか、またはこれをデバッグする方法はありますか?
(残念ながら、これは私の深遠な質問の 1 つです。どこを見ればよいか分からないので、これ以上は言えません。)
unit-testing - CQ5 での統合テスト データのロールバック
CQ5 で統合テストを行った後にクリーンアップするソリューションを探しています。しばらく調査した結果、CQ5 で JUnit テストを実行することができました (これは文書化されていません)。すべてが期待どおりに機能するようになったので、maven-deployment を使用して CQ5 サーバーでこれらのテストを実行し、後でテスト データをクリーンアップするソリューションを探しています。たとえば、テスト目的で作成したテスト ユーザーまたはテスト ページのように、後でシステムに保持したくない場合があります。そのようなことをするためにcrxにビルドされたソリューションはありますか? これまでのところ、テストを実行してスナップショットを再度インストールするよりも、テストを使用して展開を行い、その後テストを行わずに展開するか、すぐにスナップショットを使用して展開を行うことも考えました。しかし、デプロイするサーバーが多数あるため、これらのソリューションはすべて非常に時間がかかります。時間は貴重です:)
aem - スリングを介してユーザーの名前を変更する
SlingとRESTを使用してCQ5のユーザーのライフサイクルを管理する必要がある外部ID管理システムがあります。
を使用してユーザーとグループを作成および削除できます
作成
/li>消去
/li>
私たちの問題は、ユーザー(またはグループ)の名前を変更する方法がわからなかったことです。
ユーザーの名前を変更するにはどうすればよいですか?
私たちが見つけた唯一の解決策は
- ユーザーのすべてのグループメンバーシップを一覧表示します
- ユーザーを削除します
- 新しいユーザーを作成する
- すべてのグループメンバーシップを再作成します
このソリューションは機能する可能性がありますが、パフォーマンスの問題が発生する可能性があります(70Kを超えるユーザーと15Kを超えるグループがあります)。これが唯一の解決策である場合:RESTを介して最初のステップ(すべてのメンバーシップを一覧表示)を効率的に実行するにはどうすればよいですか?
javascript - クロムのインストール可能な webapp API を使用して純粋な JS ビットトレントを構築することは理論的に可能ですか?
現在、制限付き/サンドボックス化されたファイルシステムへのアクセスさえ許可していると聞いたと思いますが、障壁はありますか? bittorrent プロトコルは、必ずしも HTTP ではない TCP 接続を開始するために生のアクセスを必要としますか? Chromium JS 実行環境に、これのメカニズムまたは機能はありますか? bitfox XPI クライアントか何かがあったことを覚えていますが、今は見つけることができず、Java アプレットなどを使用したかどうかはわかりません。
NaCL はどうですか?
jackrabbit - Copy Lucene indexes between Jackrabbit repositories
I have two Jackrabbit instances containing the same content. Rebuilding the Lucene index is slow, 30+ hours, and the down-time needed in the cluster is risky. Is it possible to instead just re-index one Jackrabbit then copy the Lucene index from that instance to the other?
Naively copying the Lucene index files beneath the workspace directory doesn't work. The issue appears to be that the content is indexed by document number which maps to a UUID which maps to the JCR path for the indexed node, but these UUIDs are not stable for a given path between Jackrabbit instances. (Both are actually Day CQ publisher instances populated by replication from a CQ author instance.)
I've managed to find the UUID-to-path mapping in the repository under /jcr:system/jcr:versionStorage/ but I can't see an easy way to copy this between repositories along with the Lucene index. And then I can't find the UUID->document ID mapping anywhere in the files - is this part of the Lucene index too?
Thanks for any help. I'm leaning towards just re-indexing the second instance separately and accepting the downtime but any ideas to reduce risk or the elapsed time of reindexing the cluster appreciated!
In the end we're going the re-index-them-both route: we've managed to repurpose a test instance as an extra live instance that we can drop into the farm temporarily whilst we take the other two out in turn to re-index. However I'd still be interested in hearing better ways to do this!