プログラミング

プロおよび熱狂的プログラマーのためのQ&A



13
nullチェックがない場合でも、キャストの代わりに「as」を使用することには意味がありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 開発ブログ、オンラインコードの例、そして(最近では)本でも、次のようなコードについてつまずきます。 var y = x as T; y.SomeMethod(); さらに悪いことに: (x as T).SomeMethod(); それは私には意味がありません。xタイプがであることが確実な場合はT、ダイレクトキャストを使用する必要があります(T)x。不明な場合は使用できますasがnull、操作を実行する前に確認する必要があります。上記のコードが行うことは、(有用な)InvalidCastExceptionを(役に立たない)に変えることだけですNullReferenceException。 これがasキーワードの露骨な乱用だと思うのは私だけですか?それとも私は明白なものを見逃していて、上記のパターンが実際に理にかなっていますか?


5
Bashのコマンドの前に環境変数を設定すると、パイプの2番目のコマンドでは機能しません
特定のシェルでは、通常、変数を設定してからコマンドを実行します。最近、変数定義をコマンドの前に付けるという概念について学びました。 FOO=bar somecommand someargs これはうまくいきます... LC_ *変数(コマンドに影響を与えるように見えるが、その引数(たとえば、 '[az]'の文字の範囲には影響しない)を変更するとき、または出力を別のコマンドにパイプするときは、次のように機能しません。 FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO somecommand2の前に "FOO = bar"を追加することもできますが、これは機能しますが、不要な重複が追加され、変数に応じて解釈される引数( '[az]'など)には役立ちません。 では、これを1行で行うにはどうすればよいでしょうか。 私は次の順序で何かを考えています: FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work 良い答えがたくさんありました!目標は、これを1行に保つことです。できれば「エクスポート」を使用しないでください。Bashへの呼び出しを使用する方法は全体的に最高でしたが、「export」が含まれている括弧付きのバージョンは少しコンパクトでした。パイプではなくリダイレ​​クトを使用する方法も興味深いです。

9
なぜ参照のベクトルを作成できないのですか?
私がこれをするとき: std::vector<int> hello; すべてがうまくいきます。ただし、代わりに参照のベクトルにすると、次のようになります。 std::vector<int &> hello; 次のような恐ろしいエラーが発生します エラーC2528: 'ポインター':参照へのポインターが不正です 構造体への一連の参照をベクトルに入れたいので、ポインターをいじる必要はありません。なぜベクトルはこれについてかんしゃくを投げているのですか?代わりにポインタのベクトルを使用する唯一のオプションはありますか?

5
java.util.loggingを使用しないのはなぜですか?
私は人生で初めて、オープンソースになるJava APIを書いている立場にいます。うまくいけば、他の多くのプロジェクトに含まれることになります。 ロギングのために、私(そして実際に私が作業している人々)は常にJUL(java.util.logging)を使用しており、JULで問題が発生することはありません。しかし今、私は自分のAPI開発のために何をすべきかをより詳細に理解する必要があります。私はこれについていくつかの調査を行いましたが、得た情報を使用して、さらに混乱します。したがって、この投稿。 私はJUL出身なので、それに偏っています。残りについての私の知識はそれほど大きくありません。 私が行った調査から、人々がJULを嫌うこれらの理由を思いつきました。 「私は日が7月にリリースし、長い前に、Javaで開発を開始し、私がロギングフレームワーク-Xを続けることではなく、何か新しいことを学ぶことのためだけに簡単でした」。うーん。私は冗談ではありません、これは実際に人々が言うことです。この議論があれば、全員がCOBOLを実行できます。(私は確かにこれが怠惰な男であることと自分自身を関連付けることができます) 「JULのログレベルの名前は好きではありません。」真剣に、これは新しい依存関係を導入する理由には不十分です。 「JULからの出力の標準形式が気に入らない」。うーん。これは単なる設定です。コード的に何もする必要はありません。(確かに、昔は、正しいものにするために独自のFormatterクラスを作成する必要があったかもしれません)。 「logging-framework-Xも使用する他のライブラリを使用しているので、それを使用する方が簡単だと思いました」。これは循環論ですよね?「みんな」がJULではなくlogging-framework-Xを使用するのはなぜですか? 「他の誰もがlogging-framework-Xを使用しています」。これは、上記の特別なケースです。大多数が常に正しいとは限りません。 だから本当の大きな問題はなぜJULではないのですか?。私が見逃したものは何ですか?ロギングファサード(SLF4J、JCL)の存在理由は、複数のロギング実装が歴史的に存在しており、その理由は、私が見る限り、JULの前の時代に本当に戻っているためです。JULが完璧だったとしたら、ファサードのロギングは存在しなかったでしょうか。問題をさらに混乱させるのは、JUL自体がある程度ファサードであり、ハンドラー、フォーマッター、さらにはLogManagerさえもスワップできるようにすることです。 同じこと(ロギング)を行う複数の方法を採用するのではなく、そもそもなぜそれらが必要だったのか疑問に思わないでしょうか。(そして、それらの理由がまだ存在するかどうかを確認してください) わかりました、これまでのところ私の研究により、JULの実際の問題であると思われるいくつかのことがわかりました。 パフォーマンス。SLF4Jのパフォーマンスは他より優れていると言う人もいます。これは時期尚早の最適化の場合のようです。1秒あたり数百メガバイトをログに記録する必要がある場合、とにかく正しいパスにいるとは思えません。JULも進化しており、Java 1.4で行ったテストは真実ではなくなっている可能性があります。あなたはそれについてここで読むことができ、この修正はそれをJava 7に取り入れました。多くの人はロギングメソッドでの文字列連結のオーバーヘッドについても話します。ただし、テンプレートベースのロギングはこのコストを回避し、JULにも存在します。個人的には、テンプレートベースのロギングを実際に書くことはありません。そのために怠惰です。たとえば、JULでこれを行う場合: log.finest("Lookup request from username=" + username + ", valueX=" + valueX + ", valueY=" + valueY)); 私のIDEは私に警告し、それを次のように変更するように許可を求めます。 log.log(Level.FINEST, "Lookup request from username={0}, valueX={1}, valueY={2}", new Object[]{username, valueX, valueY}); ..もちろんそれを受け入れます。許可が与えられました!ご協力ありがとうございました。 そのため、私は実際にそのようなステートメントを自分で書くことはありません。それはIDEによって行われます。 パフォーマンスの問題について結論すると、JULのパフォーマンスが競合他社に比べて良くないことを示唆するものは何も見つかりませんでした。 クラスパスからの設定。デフォルトのJULは、クラスパスから構成ファイルをロードできません。数行のコード、それはそうするために。これが煩わしい理由はわかりますが、解決策は短くて簡単です。 出力ハンドラーの可用性。JULには、コンソール、ファイルストリーム、ソケット、メモリの5つの出力ハンドラーが付属しています。これらは拡張することも、新しいものを書くこともできます。これは、たとえば、UNIX / …
351 java  logging  slf4j  logback 

30
Javaの配列またはリスト。どちらが速いですか?
Javaでシリアルにアクセスするには、何千もの文字列をメモリに保持する必要があります。それらを配列に格納する必要がありますか、それとも何らかのリストを使用する必要がありますか? 配列は(Listsとは異なり)連続したメモリのチャンクにすべてのデータを保持するため、配列を使用して数千の文字列を格納すると問題が発生しますか?
351 java  arrays  list  performance 

11
定義された間隔でAndroidでRunnableスレッドを実行する方法は?
Androidエミュレータの画面に、定義された間隔でテキストを表示するアプリケーションを開発しました。私はHandlerクラスを使用しています。これが私のコードのスニペットです: handler = new Handler(); Runnable r = new Runnable() { public void run() { tv.append("Hello World"); } }; handler.postDelayed(r, 1000); このアプリケーションを実行すると、テキストが1回だけ表示されます。どうして?

14
PostgreSQLの「グループ化」クエリで文字列フィールドの文字列を連結する方法は?
クエリによってグループ内のフィールドの文字列を連結する方法を探しています。たとえば、私はテーブルを持っています: ID COMPANY_ID EMPLOYEE 1 1 Anna 2 1 Bill 3 2 Carol 4 2 Dave そして、私はcompany_idでグループ化して次のようなものを得たいと思っていました: COMPANY_ID EMPLOYEE 1 Anna, Bill 2 Carol, Dave これを行うための組み込み関数がmySQLにありますgroup_concat

9
HTTPSクエリ文字列は安全ですか?
HTTPSを使用する安全なWebベースのAPIを作成しています。ただし、クエリ文字列を使用してユーザーにパスワードの送信を含めるように構成することを許可する場合、これも安全ですか、それともPOSTを介して実行する必要がありますか?
351 ssl  https  query-string 

5
C#のメソッドグループとは何ですか?
次のような場合、「「メソッドグループ」から「文字列」に変換できない」などのエラーが頻繁に発生します。 var list = new List<string>(); // ... snip list.Add(someObject.ToString); もちろん、最後の行にタイプミスがあったのは、後で括弧を忘れてしまったためToStringです。正しい形式は次のとおりです。 var list = new List<string>(); // ... snip list.Add(someObject.ToString()); // <- notice the parentheses でもメソッドグループってなに?グーグルはあまり助けでもなければMSDNでもない。
351 c#  .net  method-group 

6
Pythonでバイナリリテラルをどのように表現しますか?
Pythonリテラルで整数を2進数としてどのように表現しますか? 私は16進数の答えを簡単に見つけることができました。 >>> 0x12AF 4783 >>> 0x100 256 および8進数: >>> 01267 695 >>> 0100 64 Pythonでリテラルを使用してバイナリをどのように表現しますか? 回答のまとめ Python 2.5およびそれ以前:int('01010101111',2)リテラルを使用せずにバイナリを使用して表現できます。 Python 2.5以前:バイナリリテラルを表現する方法はありません。 Python 2.6ベータ:次のようにできます:0b1100111または0B1100111。 Python 2.6ベータ:0o27または0O27(2番目の文字は文字O)8進数を表すこともできます。 Python 3.0ベータ:2.6と同じ027ですが、8進数の古い構文は許可されなくなります。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.