問題タブ [refs]
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.
clojure - Clojureでカードを配る
Clojureを学ぶ練習として、スパイダーソリティアプレーヤーを書こうとしています。カードの配り方を考えています。
私は(stackoverflowの助けを借りて)2つの標準デッキから104枚のカードのシャッフルされたシーケンスを作成しました。各カードは、
Spiderのタブローは次のように表されます。
ここで、:stacksはカードベクトルのベクトルであり、そのうち4枚は表向きに5枚、表向きに1枚、6枚は表向きに4枚、表向きに1枚、合計54枚のカードを含みます。完成したエースキングのセットの(最初は)空のベクトル(たとえば、印刷目的ではキングハートとして表されます)。undealtデッキの残りはrefに保存する必要があります
ゲーム中、タブローには次のようなものが含まれる場合があります。
ここで、「AH」は{:rank:ace:suit:hearts:face-upfalse}などを含むカードです。
スタックを処理して残りを参照に保存する関数を作成するにはどうすればよいですか?
clojure - clojure のグローバルのベスト プラクティス (refs vs alter-var-root)?
最近、clojure コードで次のイディオムを使用していることに気づきました。
ほとんどの場合、これは refs が提供するトランザクション セマンティクスを必要とする可能性のあるマルチスレッド コードでさえありません。参照はスレッド化されたコード以上のもののように感じますが、基本的には不変性を必要とするすべてのグローバルです。これにはより良い方法がありますか?binding または let だけを使用するようにコードをリファクタリングすることもできますが、一部のアプリケーションでは特に注意が必要です。
multithreading - Clojure の ref を変更するスレッドが多いほど、スレッドごとの再試行率が高くなりますか?
これはちょっと気になります。
プログラマーがマスター リポジトリからすべてのディレクトリをコピーし、マスター リポジトリがまだ同じ場合はファイルを変更した後に逆の手順を実行する、最も単純なバージョン管理方法を想像してみてください。他のユーザーによって変更された場合は、再試行する必要があります。
プログラマーの数が増えるとリトライも増えるのは当然ですが、プログラマーの数に比例するとは限りません。10 人の
プログラマー
が作業し、1 人あたり 1 時間かかるとすると、すべての作業を完了するには、少なくとも10 時間は必要です。
本気でやるなら、9+8+7+…1= 45工数がゼロになる。100人のプログラマーで
は、約 99 + 98 + ... 1 = 4950工数が無駄になります。
リトライ回数を数えてみたところ、結果が得られました。
ソース
CPU: 2.93GHz クアッドコア Intel Core i7
結果
ジョブを (fib n) ではなく (Thread/sleep n) に変更したところ、同様の結果が得られました。
スレッド/スリープの場合、CPU が使用可能であるため、リトライはこの結果よりも多くなる可能性があると思います。
リトライが増えないのはなぜですか?
ありがとう。
git - gitはブランチヘッドの履歴を記録しますか?
Gitブランチヘッドとタグはコミットへのポインターであり、これらのポインターは暗黙的に(の後にcommit
)または明示的に(の後に)移動できますbranch -m
。
Gitはこれらのポインターの状態の履歴を記録しますか?
これには少なくとも2つの理由があります。
- 支店長が指した場所を含め、2日前のレポの状態を確認します。
- 一部のコミットが到達不能になるような方法で誰かがブランチヘッドを移動したために履歴が失われないようにするため。
Mercurialは各コミットにブランチ名を格納するため、上記が可能であることに注意してください。
繰り返しになりますが、Gitでは.git / refs /バージョンの内容が管理されていますか、それともそうする方法はありますか?
(私はチームのMercurialまたはGitを決定しようとしています。参照を含め、共有リポジトリへのすべての変更が記録されていることを確認したいと思います。開発者がプライベートリポジトリに対して何をするかは関係ありません。)
ありがとうございました。
ocaml - Ocaml Refs に関する初歩的な質問
??? に何かを差し込むことで、答えが 50 になるはずです。(シャドウイングではありません)。しかし、x := 50 が SECOND x に適用されることを考えると、元の参照の値を変更する方法がわかりません....
git - 作業ツリーを変更せずにスタッシュを保存するGitコマンド?
作業ツリーを変更せずにスタッシュを保存する git コマンドを使用したいと思っていました。これは、git のリセットや、インデックスを台無しにするために行う可能性のあることから安全な軽量のバックアップとしてです。基本的に、「git stash save && git stash apply」と同等の機能を果たしますが、特定のテキスト エディター/IDE が不機嫌になる可能性があるため、作業コピーがまったく変更されない点が異なります。
このようなものは私が望むものに近づいていますが、完全ではありません:
これは機能的には機能しますが、実際の stash コミットにはメッセージが含まれているにもかかわらず、「git stash list」に stash メッセージが表示されないという問題があります。stash のサイズを考えると、stash メッセージは非常に重要です。
concurrency - 一貫性を保つために、トランザクションで複数の Clojure ref を読み取る必要がありますか?
これは、Clojure の並行性をよりよく理解したいという私の願望によって動機付けられた理論的な質問です。
私がボイドを書いているとしましょう。各ボイドは、ワールド グリッドを表すベクトルまたは参照内の位置を変更する個別の緑色のスレッドであると仮定します。ヒッキーのアリのコロニーを考えてみてください。
現在、Clojure.org のドキュメントには、「Ref のすべての読み取りでは、トランザクションの開始点 (その「読み取りポイント」) の時点での「Ref world」の一貫したスナップショットが表示される」と記載されています。
これは、トランザクション内で (つまり、dosync コンテキスト内で) ref のベクトルを読み取ることによって、シミュレーションの一貫したスナップショットを取得することしかできないということですか?
ありがとう!
controller - EXTJSコントローラービュー自動生成ゲッター
Extjsアプリを開発しています。これが私のコントローラーの1つです
関連するビューは次のとおりです。
問題は、ゲッターthis.getCodetabs()が未定義であるということです。refsによって自動生成されるはずではありませんか?私は何を間違っているのですか?
これが私のアプリケーションです:http : //atomcodepad.com/acp「addtab」ボタンをクリックして、問題が発生していることを確認できます。
ocaml - OCaml 無効な引数("equal:abstract value")
抽象値を参照に割り当てることができないようで、どうすればよいかわかりません。
両方とも Big_nums である maximum:=i と depth:=ret を試すと、コードがクラッシュするようです。これを回避する方法はありますか?