ソフトウェア工学

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

3
C ++アプリケーションコードを難読化することは重要ですか?
Javaの世界では、それが時々問題となるようですが、C ++はどうですか?異なる解決策はありますか? 誰かが特定のOSのC ++ライブラリを同じライブラリの異なるバージョンで置き換えることができるという事実について考えていましたが、私のコードが何をしているかを理解するためのデバッグシンボルでいっぱいです。標準または一般的なライブラリを使用するのは良いことですか? これは、Windowsの一部のdllライブラリがそのライブラリの「デバッグバージョン」に置き換えられた場合にも発生する可能性があります。静的コンパイルを優先する方が良いですか?商用アプリケーションでは、アプリのコアとしてすべてを静的にコンパイルし、ほとんどの場合、dll(一般に動的ライブラリ)を使用して、海賊版対策ソリューションなどのサードパーティのテクノロジーを提供しています(多くのゲームでこれを確認しています) )、GUIライブラリ(Qtのような)、OSライブラリなど 静的コンパイルは、Javaの世界における難読化と同等ですか?より良い意味で、それはあなたのコードを保護するための最良で最も手頃なソリューションですか?

3
ハッシュの聖書とは何ですか?
ハッシュとハッシュに関するコーメンのような参照はありますか?この特定の構造は、何らかの理由で私のCS教育ではほとんど注目されていませんが、どこにでもあるように見えるので、もっと学びたいと思います。私はコーメンがそれをカバーしていることを知っていますが、もっと専門的で詳細なものを探しています。

3
低レベルのLinuxグラフィック
教育目的のために、キーボードイベントを処理し、XやSDLなどの大きな依存関係なしにグラフィックスを描画できるLinux環境でアプリケーションを作成したいと思います。XとSDLは単なるプログラムなので、環境に固有の他の方法に依存する必要があるため、これは可能であると思います。この理解は正しいですか? もしそうなら、私はそのようなプログラムを書くことをどこで学ぶことができますか?私の限られた経験から、カーネルの呼び出しや特殊ファイルへの書き込みが必要になることがわかりました。しかし、私はその問題に関するチュートリアルを見つけることができませんでした(私はGoogleにとって何もわかりません)。 また、関連がある場合は、VirtualboxでDebian Squeezeを実行しています。私はネットワーキングなしでnetinst cdを使用したので、現時点ではあまりインストールされていません。インストールしgccますが、これ以上何もせずに済むことを願っています。
11 linux  graphics 

3
ウィザードを使用したWebページのREST API設計
ウィザード形式のWebページがあります。APIへの送信ボタンは、ウィザードの4番目のステップにあります。ただし、ウィザードの次のステップに進む前に、入力したデータをデータベースに保存しておく必要があります。また、REST APIが単一のタブを持つページで機能するようにしたいと考えています。 そこで、クエリパラメータaction = draftまたはsubmitを実行するようにAPIを設計しました。アクションがドラフトの場合、特定のフィールドのみが必須です。アクションが送信の場合、すべてのフィールドが必須です。REST APIのサービスレイヤーでの検証は、クエリパラメーターに基づいて行われます。ドキュメントでif / else句を明示的に指定する必要があるようです。これはRESTfulな設計の受け入れ可能な形式ですか?これらの要件に最適な設計は何ですか?
11 design  rest 

5
Javaパッケージレベルのスコープは役に立ちますか?
私はパッケージスコープの考え方を理解しています。しかし、真剣に使用しようとするたびに、それが役立つと思っていたニーズに合わないことに気づきました。 私の主な問題は常に、私がスコープを制限したいものは決して同じパッケージに入っていないということです。それらは概念的にはすべてリンクされている可能性がありますが、アプリケーション内のデータの論理的な分割では、それらをより大きなパッケージの個別の子パッケージとして扱います。 たとえば、Missionモデルを使用していて、mymissionServicesなどの他のMissionツールのみにいくつかのメソッドを使用させたい場合があります。ただし、最終的にはパッケージとしてMissions.modelsとMissions.servicesが使用されるため、MissionModelとMissionServiceは同じパッケージスコープではありません。昇格されたアクセス許可が必要なものが、パッケージに適切に含まれているにもかかわらず、それらのアクセス許可が不要な多くのものが含まれていないような状況は決してありません。また、メソッドをスコープするパッケージの利点が、すべてを同じパッケージに配置するようにプロジェクトアーキテクチャを変更することを正当化することはほとんどありません。多くの場合、アスペクトまたは何らかの制御の逆転のどちらかが、パッケージのスコープを簡単に検討した問題に対するより優れたアプローチであることが判明します。 私は好奇心が強いのですが、これは一般的にすべてのJava開発者に当てはまると考えられているか、私が行っている作業のほんの一部にすぎません。パッケージスコープは現実世界で多く利用されていますか?それが使用するのに適した形態と考えられる多くのケースがありますか、それとも現代の開発でめったに利用されないレガシーな振る舞いと見なされていますか? パッケージのプライベートスコープがデフォルトである理由については何も尋ねていません。デフォルトに関係なくいつ使用する必要があるかを尋ねています。なぜそれがデフォルトであるかについてのほとんどの議論は、パッケージスコープが実際に役立つ場合には実際には入りません。代わりに、一般的に使用される他の2つのスコープがデフォルトではないはずであるという理由だけを主張して、除去プロセスによってパッケージが勝つようにします。また、現在の開発状況についてお伺いします。具体的には、他のツールやパラダイムによってパッケージのスコープの有用性が低下するところまで開発したので、それをデフォルトにするという決定が理にかなっていたときのことです。
11 java  scope 

3
C ++では、仮想メソッド宣言でfinalをいつ使用すればよいですか?
final仮想メソッドが派生クラスによってオーバーライドされるのを防ぐためにキーワードが使用されていることを知っています。ただし、メソッドでキーワードを実際に使用する必要がある場合に役立つ例はありません。さらに、仮想メソッドでの使用は、プログラマが将来クラスを拡張することを許可しないため、悪臭のように感じられます。finalvirtualfinal 私の質問は次です: メソッド宣言finalで実際に使用する必要がある有用なケースはありますvirtualか?
11 c++  final 

3
同じ名前で名前空間が異なる複数のクラス?
名前が同じで名前空間が異なるクラスを持つコード(問題がある場合はC#)を実行しました。それらはすべて同じ論理的なものを表す傾向がありますが、同じオブジェクトの異なる「ビュー」であることがよくあります。異なる名前空間は、同じソリューションの一部であり、同じdllでさえあります。 私は私の考えを持っていますが、利用可能なツールまたは回避すべきパターンの巧妙な使用と見なすために、この実践について決定的なものを見つけることができませんでした。 スマーフの命名に関するこの質問はこれに触れていますが、別の方向からです。名前の曖昧さをなくすには、恣意的で広範に及ぶ接頭辞が必要になる可能性が高いため、その質問は排除したかった。 この実践に関するガイドラインは何ですか?
11 naming 


3
「(int)値&0x1、(int)値&0x2、(int)値&0x4、(int)値&0x8」はどういう意味ですか? "
「値」の範囲は0〜15です(可能な値)。これらの4つの「if」条件はいつ満たされますか?(int)value = 2の場合、これは0010を意味しますか? if ((int)value & 0x1) { //statement here } if ((int)value & 0x2) { //statement here } if ((int)value & 0x4) { //statement here } if ((int)value & 0x8) { //statement here }

8
競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 最近プログラムを作りました。2行のコードを削除するのを忘れました。その間違いは私に毎日一日あたり800ドルの費用がかかりました。 私はPHPでプログラミングをしていました。訪問者がプロキシを使用している場合、別の場所にリダイレクトされます。一部のコードにはioncubeが含まれているため、デバッガーの使用は不可能でした。プログラムは単にどこかにリダイレクトするだけなので、コードのどの部分が実行されるのかを確認するのは困難です。 だから私はどこにでもたくさんのデバッグ情報を置いた。とにかく後者を削除するつもりだった。 もちろん、デバッグする最も自然な方法は、デバッグ情報をファイルに入れることです。問題は私がプロキシをよく使用することです。そのため、プログラムを変更した後、filezillaを使用してテキストファイルをダウンロードする必要があります。多くの場合、テキストファイルには、表示する必要があると思われるものが表示されません。最後に、ウェブにエラーを表示することにしました。 デバッグモードを考えた。ただし、デバッグ情報の削除は忘れてしまいます。 たとえば、ユーザーが?debuggingmode = 1を実行する場合、デバッグモードを使用することを検討しました。しかし、どういうわけか私の競争相手は秘密のキーワードを推測できるのではないかと妄想的でした。 ほとんどのデバッグ情報を削除しました。1つは削除するのを忘れて、ユーザーが適切な国のプロキシを使用している場合にのみ表示されます。私は正しい国からの代理人を持っていないことがわかり、それを認識していませんでした。プログラムが24時間動作した後、それをメインドメインにアップロードしました。 私のライバルは、プロキシを使用して、デバッグコードを参照してください。彼はアイデアをコピーし、それが私が1日あたり$ 800を失った方法です。 振り返ってみると、どこが間違っていたのか本当にわかりません。私は細心の注意を払っています。それでも起こった。 競合他社に秘密を公開せずに、PHP Webアプリケーションを安全にデバッグするにはどうすればよいですか?
11 php  debugging 

2
GNU GPL v2コードを別の言語で書き直しました。ライセンスを変更できますか?
Mercurial(GNU GPL v2でライセンスされている)の一部をC#で書き直しました。当然、元のPythonコードをよく調べましたが、一部はPythonからC#への直接変換です。 「私のコード」が異なる条件でライセンスされている、またはクローズドソースの商用アプリケーションの一部を作ることさえ可能ですか?そうでない場合、私はLGPLの下で、「私のコード」、オープンソースそれ-ライセンスを再してすることができ、その後、私のクローズドソースの商用アプリケーションでは、このオープンソースのC#ライブラリを使用できますか?
11 licensing  gpl 

6
コメントはドキュメントの形式と見なされますか?
自分用に小さなスクリプトを作成しているときは、コードをコメントでスタックします(コードよりもコメントが多い場合があります)。私が話している人の多くは、これらのスクリプトは個人的なものであっても、文書化する必要があると言っています。しかし、コメントはドキュメントの形式ではありませんか? これではないでしょう: $foo = "bar"; # this is a comment print $foo; # this prints "bar" 特に開発者が私のコードを使用している場合、ドキュメントと見なされますか?または、ドキュメントはコード自体の外にあると見なされますか?


4
BSD 2/3節のコードをGPLに再ライセンス
新しいBSDライセンスでいくつかのソースコードをリリースしたとします。他の誰かがこのコードを取得し、変更を加え、GPLの条件に基づいて配布することは許可されていますか?ウィキペディアから: 元のMIT / Xライセンス、BSDライセンス(現在の2句形式)、LGPLなど、最も一般的なフリーソフトウェアライセンスの多くは「GPL互換」です。つまり、それらのコードはGPLの下でプログラムと競合することなく組み合わせることができます(新しい組み合わせではGPLが全体に適用されます)。ただし、一部のフリー/オープンソースソフトウェアライセンスはGPL互換ではありません。 これは、新しいBSDライセンスコードをGPLに再ライセンスできることを意味していると思いますか?
11 gpl  bsd-license 

6
レガシーソフトウェア以外に、COBOLを使用する理由はありますか?
COBOLは今でも(頻繁に)金融コンピューティングに使用されています。それは古い言語であり、ほとんどのプログラマーはCOBOLを嫌い、または少なくとも嫌いです。これは問題をもたらします:COBOLがまだ使用されている唯一の理由は、レガシーソフトウェアがそれを使用するのですか、それとも他のプログラミング言語に比べて実際の利点があるのですか? ちょっと興味があるんだけど。

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