問題タブ [alignment]

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 投票する
8 に答える
225386 参照

html - CSS-divを水平方向に揃えます

固定のコンテナdivと、のコンテナdivがwidthありheightますoverflow: hidden

floatの水平方向の行が必要です:このコンテナー内の左のdiv。左にフロートしているDivは、親の右境界を読み取った後、自然に下の「行」にプッシュします。heightこれは、親のがこれを許可しない場合でも発生します。これはどのように見えるかです:

間違い

どのように見せたいですか:

![右][2]-広告に置き換えられたイメージシャック画像を削除しました

注:必要な効果は、インライン要素&を使用することで実現できますwhite-space: no-wrap(これが、表示されている画像での方法です)。ただし、子divはフロートされたブロックレベルの要素である必要があるため、これは私には良くありません(理由が長すぎてここで説明できません)。

0 投票する
14 に答える
6148 参照

formatting - コードのフォーマット: 似たような行を並べても問題ありませんか?

私は最近、当社に一連のコーディング ガイドラインがあることを発見しました (ドキュメント管理システムに隠されているため、誰も見つけることができません)。それは一般的にかなり賢明に見え、「{」をどこに置くか、ハードタブを使用するかどうかについての通常の宗教戦争から遠ざけます. ただし、「行に複数のスペースを埋め込んではならない」ことを示唆しています。つまり、このようなことをしないでください。

またはこれ:

またはこれ:

これは、1 つの行を変更すると、多くの場合、すべての行を編集する必要があるためです。これにより、変更がより困難になり、差分を理解するのが難しくなります。

私は引き裂かれています。一方では、このように並べると、繰り返しコードが読みやすくなります。一方で、差分が読みにくくなります。

これについてどう思いますか。

0 投票する
125 に答える
4547916 参照

html - 要素を水平方向に中央揃えする方法

CSSを使用し<div>て別の内部を水平方向に中央揃えするにはどうすればよいですか?<div>

0 投票する
4 に答える
1534 参照

c - 文字配列と整数配列の速度の違いは?

現在、画像データ(8ビット符号付きおよび符号なし)が16として割り当てられた16整列整数の配列に格納されているビデオ処理ソフトウェアを扱っています。

一般に、次のようなsigned / unsigned char配列を使用すると、読み取りと書き込みが高速になりませんか?:

キャッシュラインのサイズとデータ転送の最適化についてはほとんど知りませんが、少なくともそれが問題であることはわかっています。それを超えて、SSEは将来使用される予定であり、その場合、char-arrays(int配列とは異なり)はすでにパック形式になっています。では、どちらのバージョンが高速でしょうか?

0 投票する
1 に答える
155 参照

hex - 整列またはパックされたバイナリデータベース

特にHPUXシステムの場合、バイナリファイルのデータが整列またはパックされているかどうかを16進エディターまたはその他の方法で確認する方法はありますか?

0 投票する
5 に答える
11803 参照

opengl - Z軸をベクトルに揃える最も簡単な方法は何ですか?

(0、0、0)のような点と(x、y、z)のようなベクトルが与えられます。(0、0、0)を中心とする負のZ軸をこのベクトルの方向に向ける最も簡単な方法は何ですか?OpenGLを使用した例は歓迎されますが、必須ではありません。

0 投票する
11 に答える
5261 参照

c++ - Cコンパイラはスタック変数を再配置できますか?

私は過去に組み込みシステムのプロジェクトに取り組み、スタック変数の宣言の順序を再配置して、結果の実行可能ファイルのサイズを小さくしました。たとえば、次のような場合:

これを次のように並べ替えます。

アラインメントの問題により、最初のものでは 12 バイトのスタック スペースが使用され、2 番目のものでは 8 バイトしか使用されませんでした。

これは C コンパイラの標準的な動作ですか、それとも私たちが使用していたコンパイラの欠点ですか?

必要に応じて、コンパイラはスタック変数を並べ替えて、実行可能サイズを小さくすることができるようにすべきだと私には思えます。C標準のいくつかの側面がこれを妨げていることが示唆されていますが、どちらにしても信頼できるソースを見つけることができませんでした.

おまけの質問ですが、これは C++ コンパイラにも当てはまりますか?

編集

答えが「はい」の場合、C/C++ コンパイラはスタック変数を再配置できます。確実にこれを行うコンパイラの例を挙げていただけますか? これを裏付けるコンパイラのドキュメントまたは同様のものを見たいと思います。

再編集

助けてくれてありがとう。ドキュメントについては、2003 年の GCC サミット議事録で発表された Naveen Sharma と Sanjiv Kumar Gupta による論文Optimal Stack Slot Assignment in GCC (pdf)を見つけることができました。

ここで問題となっているプロジェクトは、ARM 開発に ADS コンパイラを使用していました。そのコンパイラのドキュメントには、ARM-Thumb アーキテクチャがローカル スタック フレームでアドレスを計算する方法により、私が示したような宣言の順序付けによってパフォーマンスとスタック サイズが向上することが記載されています。そのコンパイラは、これを利用するためにローカルを自動的に再配置しませんでした。ここにリンクされている論文によると、2003年現在、GCCはスタックフレームを再配置してARM-Thumbプロセッサの参照の局所性を改善していませんが、可能であることを暗示しています.

これが GCC で実装されたことを明確に示すものは何も見つかりませんが、この論文は、あなたがすべて正しいという証拠として数えられると思います。再度、感謝します。

0 投票する
5 に答える
584 参照

c++ - C++ クラスの埋め込み char 配列に隠されているデータ メンバーのパフォーマンス、安全性、および配置は何ですか?

最近、アラインメントの制約に違反しているのではないかと心配しているコードベースを見ました。以下に示す最小限の例を作成するために、それをスクラブしました。簡単に言えば、プレーヤーは次のとおりです。

  • プール。これは、「効率的」の定義のために、メモリを効率的に割り当てるクラスです。プールは、要求されたサイズに合わせて調整されたメモリのチャンクを返すことが保証されています。

  • オブジェクトリスト。このクラスは、同種のオブジェクトのコレクションを格納します。オブジェクトの数が特定のしきい値を超えると、内部表現がリストからツリーに変更されます。Obj_listのサイズは 1 つのポインターです (64 ビット プラットフォームでは 8 バイト)。もちろん、人口の多い店舗はそれを上回ります。

  • 集計します。このクラスは、システムで非常に一般的なオブジェクトを表します。その歴史は初期の 32 ビット ワークステーション時代にまでさかのぼり、その結果、できるだけ少ないスペースを使用するように (同じ 32 ビット時代に) 「最適化」されました。Aggregateは空にすることも、任意の数のオブジェクトを管理することもできます。

この例では、Aggregateアイテムは常にPoolから割り当てられるため、常に整列されます。この例でObj_listが出現するのはAggregateオブジェクトの「非表示」メンバーのみであるため、常に配置 newを使用して割り当てられます。サポート クラスは次のとおりです。

そして、ここに集計があります。メンバー宣言member_list_store_dに注意してください。

私が最も関心を持っているのは、そのデータ メンバーです。初期化とアクセスの擬似コードは次のとおりです。

char 配列を、 NULL またはクラスのインスタンスに初期化されたObj_list型へのポインターに置き換えることを提案したくなるかもしれません。これにより適切なセマンティクスが得られますが、メモリ コストがシフトするだけです。メモリが依然として貴重な場合 (これは EDA データベース表現である可能性があります)、Aggregateオブジェクトにメンバーがある場合、char 配列をObj_listへのポインターに置き換えると、ポインターが 1 つ増えることになります。

それに加えて、ここでの主な問題であるアラインメントから気をそらされたくありません。上記の構成には問題があると思いますが、「システム/ライブラリ」 newのアライメント動作に関する漠然とした議論以上のものを標準で見つけることはできません。

では、上記の構造は時折パイプの失速を引き起こす以上のことをするのでしょうか?

編集:埋め込まれた char 配列を使用してアプローチを置き換える方法があることを認識しています。元の建築家もそうでした。メモリが貴重だったので、彼らはそれらを破棄しました。さて、そのコードに触れる理由があれば、おそらく変更するでしょう。

しかし、このアプローチに内在するアラインメントの問題についての私の質問は、人々が解決してくれることを願っています。ありがとう!

0 投票する
4 に答える
10417 参照

wpf - WPFでキャンバスの背景をどのように揃えることができますか?

キャンバスの背景を会社のロゴのイメージに設定しました。この画像をキャンバスの右下隅に配置したいと思います。
これを行うことは可能ですか、それとも画像を子としてキャンバスに追加する必要がありますか? キャンバスのすべての子が異なる方法で処理されるため、このプログラムでは機能しません。

ありがとうございました

0 投票する
8 に答える
103148 参照

wpf - Horizo​​ntalAlignment=Stretch、MaxWidth、および左揃えを同時に行いますか?

これは簡単なはずですが、私は困惑しています。WPF では、親の幅まで伸びる TextBox が必要ですが、最大幅までしか伸びません。問題は、親内で正当化されたままにしたいということです。ストレッチするには、Horizo​​ntalAlignment="Stretch" を使用する必要がありますが、結果は中央に配置されます。Horizo​​ntalContentAlignment を試してみましたが、何もしないようです。

この青いテキスト ボックスをウィンドウのサイズに合わせて大きくし、最大幅を 200 ピクセルにし、左揃えにするにはどうすればよいですか?

トリックは何ですか?