ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

7
コピーされたファイルが元のファイルと同一であるかどうかを確認するために、すべての単一バイトを読み取る必要がありますか?
最近、Total Commanderというプログラムを知りました。これはWindows Explorerの代替品であり、ファイルをコピーするための独自のものがあります。ファイルが同一であるかどうかをチェックするために、CRCを計算する代わりに、オリジナルとコピーの両方で1バイトずつ文字通りチェックします。 私の質問は:これは必要ですか?CRCや他のそのような技術はうまくいかないのでしょうか?あなたは、プログラマーとして、この完璧であるが遅いシステムを試して実装すべきでしょうか、それとも極端すぎますか?

2
コンパイラはどのように機能しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 注:これは以前に尋ねられたことがないことに驚いています。もしそれがあれば検索で見つけることができませんでした。 私はたくさんのウェブサイトを訪れ、たくさんの記事を読み、たくさんの説明を聞きました。それらのほとんどは良かったが、それらはすべて広すぎるか、複雑すぎるか、または単純に悪いものでした。だから私の質問は、コンパイラはどのように機能するのですか? これが難しい、幅広い質問であれば、教えてください。しかし、そうでない場合は、質問に答えてください。
16 compiler 

5
CDを無駄にすることなくCDを作成するソフトウェアをテストする方法は?
CD(音楽)の書き込みに使用できるアプリケーションを作成したい。とにかく実際のCDでテストする必要があることは知っていますが、小さな変更を加えるたびにこれを行いたくありません。しかし、正しいデータが書き込まれるかどうかを知り、テストしたいので、破損したCDを取得することはありません。 物理ドライブに直接書き込むAPIのみを公開するライブラリを使用しています。ディスクイメージに書き込むことはできません(テストがはるかに簡単になります)。 CDを無駄にせずにこれをテストするにはどうすればよいですか?
16 testing  hardware 

2
MITと著作権
MITライセンスの下でライセンスされているライブラリに貢献しています。 ライセンスおよび各クラスファイルには、上部に次のコメントがあります。 Copyright(c)2011 Joe Bloggs <joe.bloggs@example.com> 私は彼がファイルの著作権を所有しており、必要に応じてそのファイルのライセンスを変更できると思います。 完全に自分で作成した新しいクラスでライブラリに貢献した場合、そのファイルの著作権を主張できますか。そして、置きます: Copyright(c)2011 Petah Piper <petah.piper@example.com> 頂点で?

3
C#とF#を一緒に使用すべきか
同じプロジェクトでC#とF#を一緒に使用できることは知っていますが、それが良いアイデアかどうかはわかりません。 2つの非常に異なるコーディングスタイル(機能的とOOP)を混在させると、デザインの凝集性が失われる可能性があります。これは正しいです?
16 design  f# 

5
JavaScriptでの新しい演算子の回避-より良い方法
警告:これは長い投稿です。 シンプルにしましょう。JavaScriptでコンストラクターを呼び出すたびにnew演算子にプレフィックスを付ける必要はありません。これは、私がそれを忘れがちであり、私のコードがひどく失敗するからです。 これを回避する簡単な方法はこれです... function Make(x) { if ( !(this instanceof arguments.callee) ) return new arguments.callee(x); // do your stuff... } しかし、変数noを受け入れるにはこれが必要です。このような引数の... m1 = Make(); m2 = Make(1,2,3); m3 = Make('apple', 'banana'); 最初の即時解決策は、このような「適用」方法のようです... function Make() { if ( !(this instanceof arguments.callee) ) return new arguments.callee.apply(null, arguments); // do your stuff } …
16 javascript 

7
コードを一般的なコードにリファクタリングする方法は?
バックグラウンド 現在進行中のC#プロジェクトに取り組んでいます。私はC#プログラマではなく、主にC ++プログラマです。そのため、基本的に簡単でリファクタリングするタスクが割り当てられました。 コードはめちゃくちゃです。それは巨大なプロジェクトです。お客様が新機能とバグ修正を含む頻繁なリリースを要求したため、他のすべての開発者はコーディング中にブルートフォースアプローチをとることを余儀なくされました。コードはメンテナンスが非常に難しく、他のすべての開発者はそれに同意します。 私は彼らがそれを正しくしたかどうかを議論するためにここにいるのではありません。私はリファクタリングしているので、リファクタリングされたコードが複雑に思えるので、正しい方法でそれをやっているかどうか疑問に思っています!これが簡単な例としての私の仕事です。 問題 6つのクラスがありますA、B、C、D、EとF。すべてのクラスには関数がありますExecJob()。6つの実装はすべて非常に似ています。基本的に、最初A::ExecJob()は書かれました。次に、のB::ExecJob()copy-paste-modificationによって実装されたわずかに異なるバージョンが必要でしたA::ExecJob()。別のわずかに異なるバージョンが必要になったとき、C::ExecJob()書かれたなど。6つの実装すべてに共通のコードがあり、次にいくつかの異なるコード行があり、さらにいくつかの共通コードがあります。実装の簡単な例を次に示します。 A::ExecJob() { S1; S2; S3; S4; S5; } B::ExecJob() { S1; S3; S4; S5; } C::ExecJob() { S1; S3; S4; } SNまったく同じ文のグループはどこにありますか。 それらを共通にするために、別のクラスを作成し、関数内の共通コードを移動しました。パラメータを使用して、実行するステートメントのグループを制御します。 Base::CommonTask(param) { S1; if (param.s2) S2; S3; S4; if (param.s5) S5; } A::ExecJob() // A inherits Base { param.s2 = …

4
なぜCでshort、int、longが発明されたのですか?
私は作成の正確な目的何であったか、トラブルの理解を抱えているshort、intとlongCのデータ型を? 私が尋ねる理由は、サイズが制限されているようには見えないことです- たとえば、shortより小さい限り、どんなサイズでも構いませんint。 では、バイナリの互換性が望めない場合、どのような状況で、たとえばの代わりにunsigned intまたはを使用する必要がありますか?unsigned longsize_t (サイズがわからない場合は、どれをいつ選択するかをどのように知りますか?)
16 c  data-types 

3
Boostライブラリの使用方法の学習を開始する場所
Boostは最近私が取り組んでいるプロジェクトで利用可能になりましたが、あまり経験がありません。ライブラリには非常に多くの部分と機能があるため、学習を始める場所を知るのは困難です-特に本番コードの作成中に学習しようとするので(だからあまり遅くなることはありません)。 誰かが一般的に、毎日のプログラミングで非常に役立つ3から5の機能をリストし、それらがなぜ役に立つのかを述べていただければ幸いです。それから私はそれらを学び始め、それらを使用することができます-それは少なくとも私に図書館で足場を与え、それを学び/それを適用し始める友好的な場所になります:) 前もって感謝します!
16 c++  boost 

8
JSFは高性能Webアプリケーションを配信する準備が本当に整っていますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私はJSFについて多くの良い話を聞いたことがありますが、私が知っている限りでは、人々が過去にこの技術に多くの深刻な不満を抱いていたこともあります。私たちは、JSFをソーシャルネットワークプロジェクトの有望なテクノロジーと考えています。しかし、JSFのパフォーマンススコアを認識しておらず、JSFを使用していた既存の高性能Webサイトに実際に出くわすこともできませんでした。人々はパフォーマンスのスケーラビリティの問題に不満を持っています。 jsfを選択することで正しいことを行っているかどうかはまだよくわかりません。したがって、このことについてすべてお聞きになり、入力を考慮したいと思います。 ソーシャルネットワーキングサービスの高性能ニーズを満たすようにJSFを構成することは可能ですか?また、JSFの現在の問題でどの程度まで生き残ることができるのか。問題は何ですか? 私はない 私の個人的な経験のとおり、私はそれがすべて真実ではないと考えているので、他の人が普通に文句を言う何JSFと開発の複雑さを心配したが、私はより多くのものを、パフォーマンスとスケーラビリティの問題が心配です。また、以前のバージョンにリンクされている古い問題で悪用しないでください。過去に何があったとしても、私は現在の状態に関心があるだけです。

6
C#5非同期再入可能性のソリューション
そのため、C#5の新しい非同期サポートについて何かが私を悩ませています。 ユーザーは、非同期操作を開始するボタンを押します。呼び出しはすぐに戻り、メッセージポンプが再び実行を開始します-それがポイントです。 そのため、ユーザーはボタンを再度押すことができます-再入を引き起こします。これが問題になったらどうしますか? 私が見たデモでは、await呼び出しの前にボタンを無効にし、その後再び有効にします。これは、実際のアプリでは非常に脆弱なソリューションのように思えます。 特定の実行中の操作に対してどのコントロールを無効にする必要があるかを指定するある種のステートマシンをコーディングする必要がありますか?または、より良い方法がありますか? 操作中はモーダルダイアログを表示したいだけですが、これはまるでハンマーを使用しているように感じます。 誰もが明るいアイデアを持っていますか? 編集: 操作の実行中に使用すべきでないコントロールを無効にすると、多くのコントロールを持つウィンドウがあるとすぐに複雑になると思うので、壊れやすいと思います。最初のコーディングとその後のメンテナンスの両方で、バグの可能性を減らすため、物事をシンプルに保つことが好きです。 特定の操作に対して無効にする必要があるコントロールのコレクションがある場合はどうなりますか?また、複数の操作が同時に実行されている場合はどうなりますか?

3
C#5非同期サポートはUIスレッドの同期の問題をどのように支援しますか?
どこかで、C#5 async-awaitは非常に素晴らしいので、これを行うことを心配する必要はないと聞いた: if (InvokeRequired) { BeginInvoke(...); return; } // do your stuff here 待機操作のコールバックは、呼び出し元の元のスレッドで発生するようです。Eric LippertとAnders Hejlsbergは、この機能がUI(特にタッチデバイスUI)の応答性を高める必要性に起因すると何度か述べています。 このような機能の一般的な使用法は次のようになると思います。 public class Form1 : Form { // ... async void GetFurtherInfo() { var temperature = await GetCurrentTemperatureAsync(); label1.Text = temperature; } } コールバックのみが使用される場合、ラベルテキストを設定すると、UIのスレッドで実行されないため、例外が発生します。 これまでのところ、これが事実であることを確認するリソースが見つかりませんでした。誰もこれについて知っていますか?これがどのように機能するかを技術的に説明するドキュメントはありますか? 「はい」と答えるだけでなく、信頼できるソースからのリンクを提供してください。


5
配列、ポインター、および関数のC構文がこのように設計されたのはなぜですか?
次のような多くの質問を見た(そして尋ねた!)後 int (*f)(int (*a)[5])C ではどういう意味ですか? そして、人々がC構文を理解するのを助けるためのプログラムを作ったとさえ見て、私は不思議に思わずにはいられません: Cの構文がこのように設計されたのはなぜですか? たとえば、ポインターを設計している場合、「ポインターの10要素配列へのポインター」を次のように変換します。 int*[10]* p; そしてありません int* (*p)[10]; ほとんどの人が同意するだろうと私は思うが、それほど簡単ではない。 だから、なぜ、直感的でない構文ですか?構文が解決する特定の問題(おそらく曖昧さ?)がありますか?
16 c  syntax 


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