問題タブ [prefix]
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.
database-design - データベース列タイププレフィックス
私は11年以上データベースを使用してソリューションを開発してきましたが、テーブルの列に名前を付けることについて、かなり物議を醸す意見を「開発」したようです。常に3文字または4文字のタイプのプレフィックス、つまりintGroupIDを付けます。 nvcTitle、dtmCreated、bitPlayerHaterなど。私は他の何人かの開発者と協力してきましたが、彼らは皆、昔ながらのプレフィックス規則を絶対に軽蔑していました。
(ええ、私はここで何も発明しませんでした、私はそれをあきらめることを拒否しているだけです:)
私の主な理由は、仲間の開発者がデータの構造を理解しようとするときに、できるだけ多くの情報を提供することです。列のタイプを即座に知ることで、あなた(または少なくとも私)はあなたが扱っているもののより良い精神的イメージを得ることができます。また、C#やVB.NETでの作業と比較して、クエリを作成する場合、通常、IDEからの同じインテリセンスサポートはありません。
これまでのところ、この特定のトピックについて私の考えを変える可能性のあるキラーな議論を思い付くことができた人は誰もいません。他にも同じように物議を醸している命名規則がいくつかあり、わかりやすくなっていますが、列の接頭辞はより多くの人を怒らせているようです。
データベース列のプレフィックスを付けるのはなぜそんなに悪い習慣だと考えられているのですか?
architecture - 名前空間でのグループ化とクラスのプレフィックス
さまざまなソースからデータをインポートする必要があるアプリケーションがある状況を想像してみてください。これらのソースごとに、個別のモデルが存在します(多くの場合、他のソースとは関係ありません)。
したがって、すべてのインポートを実行するソフトウェアコンポーネントXがあり、名前空間はそれに対応してXであるとします。Xでは、すべての異なるパーサーとインポーターがあるため、1つはtxtファイル用、もう1つはxlsファイル用などです。
どのスタイルが好きですか:
対。
または、対応するソースのモデル(2〜4個のエンティティ)をサブ名前空間に配置する必要がありますか?
単一の名前空間をこれらの無関係なクラスすべてで乱雑にしたくはありませんが、コードが参照しているパーサーを特定するなどの問題も発生させたくありません(使用法を調べる必要があります)。
についてどう思いますか
ある種の作業は2倍になります。
どのような命名規則を順守していますか?
eclipse - メソッド名に誤って追加されたメンバー変数のプレフィックス
私はEclipseを使用していくつかのJavaコードを記述しています。私が従っている命名規則では、クラスのメンバー変数の接頭辞として「m」を使用しています。メンバー変数を記述したらすぐに、[ソース] -> [ゲッターとセッターの生成] に移動します。これにより、必要なメソッドが生成されます。ただし、メソッドとパラメーターの名前にはすべて、この 'm' プレフィックスも含まれます。メソッドとそのパラメーターに名前を付けるときに、Eclipse がプレフィックスを無視するようにしたいと思います。どうすればこれを達成できますか?
更新:私はすでに以下のRichの提案を試しましたが、成功しませんでした. 現在、オプションが設定されており、フィールド セクションに「m」と入力しました。しかし、Eclipse はこれを考慮していないようです。同じウィンドウのヘルプ アイコンをクリックすると、「コード アシスト」と「リファクタリング」を使用するときにこれが考慮されるという通知が表示されます。「ゲッター/セッターの生成」はコードアシストの対象になりますか?
c++ - i++は++iよりも効率が悪いのですが、これをどのように表示しますか?
私は例によって、接頭辞の増分が接尾辞の増分よりも効率的であることを示しようとしています。
理論的には、これは理にかなっています。i++は、インクリメントされていない元の値を返すことができる必要があるため、それを格納できますが、++ iは、前の値を格納せずにインクリメントされた値を返すことができます。
しかし、これを実際に示す良い例はありますか?
次のコードを試しました。
私は次のようにgcc4.4.0を使用してコンパイルしました:
接尾辞の増分を接頭辞の増分に変更して、これをもう一度行いました。
結果は、どちらの場合も同じアセンブリコードになります。
これはやや予想外でした。最適化をオフにすることで(-O0を使用)、概念を示すために違いが見られるはずです。私は何が欠けていますか?これを示すためのより良い例はありますか?
php - PHP - extract() タイプ
PHP のextract()
関数は、いくつかのextract_types
. extr_prefix_same
しかし、との違いは何extr_prefix_if_exists
ですか? マニュアルでは、どちらの場合も、変数名が既に存在する場合、新しい変数がプレフィックスとして付けられるように聞こえます。
ありがとう!
xml - 接頭辞が異なる複数の名前空間を持つ XSL 要素
XSL 1.0 で名前空間を使用して要素を作成したいのですが、次のようにします。
なんらかの理由で XSL 2.0 を<xsl:namespace>
拡張機能付きで使用できません。XSL 1.0 の各要素に対して宣言された許可された名前空間は 1 つだけですが、どうすればよいですか?
よろしく、
bash - bash: ファイルのリストのベース名のみを変更する方法
重複の可能性:
makefile: ベース名に接頭辞を追加するには?
次のような一連のファイル(から取得find bla -name "*.so"
)があります。
/bla/a1.so
/bla/a2.so
/bla/blo/a3.so
/bla/blo/a4.so
/bla/blo/bli/a5.so
次のように名前を変更したいと思います。
/bla/liba1.so
/bla/liba2.so
/bla/blo/liba3.so
/bla/blo/liba4.so
/bla/blo/bli/liba5.so
... つまり、接頭辞「lib」をベース名に追加します
bashでそれを行う方法について何か考えはありますか?
makefile - makefile:ベース名にプレフィックスを追加する方法は?
そのようなファイルパスのリストがあります:
取得するには、ベース名にプレフィックスを追加する必要があります。
何か案が?
c# - プレフィックス検索をサポートするソートされたテキストのためのスペース効率の良いメモリ内構造
問題があります。ファイルパスプレフィックスに基づいてファイルシステムデータをスペース効率よく検索する必要があります。つまり、ソートされたテキストのプレフィックス検索。トライを使ってください、あなたが言う、そして私は同じことを考えました。問題は、他のトリックがなければ、試行はスペース効率が十分ではないということです。
私はかなりの量のデータを持っています:
- ディスク上のプレーンテキストのUnix形式のリストで約450M
- 約800万行
- gzipのデフォルトは31Mに圧縮されます
- bzip2のデフォルトは21Mに圧縮されます
記憶に残っている450M近くの場所で食べたくありません。プレフィックスの形で多くの冗長性があるので、この時点で私はおよそ1億のどこかを使用することを嬉しく思います。
このジョブにはC#を使用していますが、トライを簡単に実装するには、ファイルの行ごとに1つのリーフノードが必要です。すべてのリーフノードがテキストの最後のチャンクへの何らかの参照(32ビット、文字列の重複を最小限に抑えるための文字列データの配列へのインデックスなど)を必要とし、CLRオブジェクトのオーバーヘッドが8バイトであると仮定します(windbg / SOSを使用して確認) 、テキストストレージがまったくない状態で、構造上のオーバーヘッドに96,000,000バイト以上を費やします。
データの統計属性のいくつかを見てみましょう。トライに詰めた場合:
- 約110万のテキストの合計ユニークな「チャンク」
- テキストファイル内のディスク上の合計約16Mの一意のチャンク
- 平均チャンク長は5.5文字、最大136
- 重複を考慮しない場合、チャンクで合計約5,200万文字
- 内部トライノードの平均は約6.5の子で、最大は44です。
- 約180万の内部ノード。
葉の作成の過剰率は約15%、過剰な内部ノードの作成は22%です-過剰な作成とは、各タイプのノードの最終的な数の割合として、最終的なトライではなく、トライの構築中に作成された葉と内部ノードを意味します。
これがSOSのヒープ分析であり、最も多くのメモリが使用されている場所を示しています。
はDictionary<string,int>
文字列チャンクをインデックスにマップするために使用されておりList<string>
、トライの構築後に破棄できますが、GCはそれを削除していないようです(このダンプの前にいくつかの明示的な収集が行われました)!gcroot
-SOSでは示されていませんルーツはありますが、後のGCで解放されると思います。
MiniList<T>
スペースの浪費を回避するためList<T>
に、正確なサイズ(つまり、線形成長、O(n^2)
追加パフォーマンス)を使用する代わりになります。T[]
これは値型であり、InteriorNode
子を追跡するために使用されます。これがパイルT[]
に追加されます。System.Object[]
したがって、「興味深い」アイテム(でマークされている*
)を追加すると、約270Mになります。これは、ディスク上の生のテキストよりも優れていますが、それでも目標に十分に近づいていません。.NETオブジェクトのオーバーヘッドが大きすぎると考え、値型の配列だけを使用してデータを格納する新しい「スリムな」トライを作成しました。
この構造により、データ量が139Mに減少しましたが、読み取り専用操作では依然として効率的にトラバース可能なトライです。そして、それはとても単純なので、私はそれをディスクに簡単に保存して復元し、毎回トライを再作成するコストを回避することができます。
それで、トライよりもプレフィックス検索のためのより効率的な構造のための提案はありますか?私が考慮すべき代替アプローチ?
mingw - MinGW/MSYSへのmakeinstallは--prefix=/mingwが好きではありません
WindowsでいくつかのLinuxライブラリを使用するために、MinGW/MSYSの使用を開始しました。使用する
これまではうまく機能しましたが、「ln -s」呼び出しで、「makeinstall」で2つの異なるライブラリが失敗しました。これは次のようになります。
まず第一に、makefileの意図は何ですか?/mingw/lib/libvamp-sdk.so.2.0.0が存在するため、上記の「ln-s」呼び出しを次のように置き換えます
動作しますが、これが作者の意図したものかどうかはわかりません。
さらに重要なのは、なぜこれが発生するのか(ネイティブLinuxシステムで正常に機能すると思います)、それを回避する最も簡単な方法は何ですか?makefileを手動で編集することもできますが、これに対するより良い解決策があるかどうか疑問に思っています。
ご入力いただきありがとうございます。