ソフトウェア工学

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

3
REST URIでアクション(動詞)を表す
お客様のドキュメントに対して実行する印刷操作があります。追加、更新、削除など、他の標準操作も実行する必要があります。だから、私は次のものを持っています: 新しい顧客を作成する場合:URI = / customer / {id}、タイプ= POST、Methodname = CreateCustomer() 更新の場合:URI:/ customer / {id}、タイプ= PUT、メソッド= UpdateCstomer() 顧客の削除:URI = / customer / {id}、タイプ= DELETE、メソッド名= DeleteCustomer() ビューの場合:URI:/ customer / {id}、タイプ= GET、メソッド= GetCustomer() 今、その顧客のためにドキュメントを印刷する必要がある場合、印刷機能が必要です。私のURIは次のようになります:/ customer / {id}、type = POST、method = PrintCustomer()。しかし、CreateCustomerにはそのURIとPOSTタイプを使用しました。URIを/ customer / Print / {id}、タイプ= POST、メソッド= PrintCustomer()のようにしたかったのです。 しかし、URIに「印刷」動詞を含めることはできません。これを行う最良の方法は何ですか?URIとして/ customer / document / …
16 rest 

3
PHPとMySqlで金額を処理する方法は?
MySQLデータベースの上にPHPで記述されたレガシーコードの巨大な山を継承しました。私が気づいたのは、アプリケーションdoublesがデータの保存と操作に使用することです。 今、私doubleは丸め誤差のために金銭的操作に適していない方法について言及している多くの投稿に出会いました。しかし、PHPコードで金銭的な値を処理し、MySQLデータベースに保存する方法の完全なソリューションにまだ出会っていません。 PHPで具体的にお金を処理する場合のベストプラクティスはありますか? 私が探しているものは: データベースにどのようにデータを保存する必要がありますか?列タイプ?サイズ? データが通常の加算、減算でどのように処理されるべきか。乗算または除算? いつ値を丸めるべきですか?ある場合、どの程度の丸めが許容されますか? 大きな金額と低い金額の処理に違いはありますか? 注:日常生活で金銭的価値に遭遇する可能性 のある非常に単純化されたサンプルコード(単純化のためにさまざまなセキュリティ上の懸念は無視されました。もちろん、実際の生活ではこのようなコードは使用しません): $a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double? $b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be less than 1 $valueToBeStored= $a * $b; //--> any hint here is welcomed $valueFromDatabase= $row['price']; //--> price …

3
専用スレッドロックオブジェクトの命名規則[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 比較的マイナーな質問ですが、公式のドキュメントやブログに関する意見/議論すら見つけることができませんでした。 簡単に言えば、私が唯一の目的をprivateに提供することを目的とするprivateオブジェクトがある場合、そのオブジェクトlockに何と名前を付けますか? class MyClass { private object LockingObject = new object(); void DoSomething() { lock(LockingObject) { //do something } } } LockingObjectここで何と名付けるべきですか?また、変数の名前だけでなく、ロック時にコード内でどのように見えるかを考慮してください。 さまざまな例を見てきましたが、しっかりしたアドバイスはないようです。 の多数の使用法SyncRoot(およびなどのバリエーション_syncRoot)。 コードサンプル: lock(SyncRoot)、lock(_syncRoot) これは、VBの同等のSyncLockステートメント、SyncRootICollectionクラスのいくつかに存在するプロパティ、およびある種のSyncRootデザインパターンの一部に影響を受けているようです(おそらく悪い考えです) C#コンテキストにいるので、VBishの名前を付けたいかどうかはわかりません。さらに悪いことに、VBでは、変数にキーワードと同じ名前を付けます。これが混乱の原因になるかどうかはわかりません。 thisLockおよびlockThisMSDNの記事から:C#lockステートメント、VB SyncLockステートメント コードサンプル: lock(thisLock)、lock(lockThis) これらが例のために最低限純粋に命名されたかどうかはわかりません staticクラス/メソッド内でこれを使用している場合、ちょっと変です。 編集:ロックに関するウィキペディアの記事も、この命名を例に使用しています PadLock(さまざまなケーシングの)のいくつかの使用法 コードサンプル: lock(PadLock)、lock(padlock) 悪くないが、私の唯一の牛肉は、それは当然の画像呼び出した物理私は関連付けるていない傾向があり、「南京錠」抽象スレッドのコンセプトを。 ロックするものに基づいてロックに名前を付ける コードサンプル: lock(messagesLock)、lock(DictionaryLock)、lock(commandQueueLock) VB SyncRoot MSDNページの例にはsimpleMessageList、プライベートmessagesLockオブジェクトの例があります 実装の詳細は変更される可能性があるため、ロックしている型(「DictionaryLock」)に対してロックに名前を付けることは良い考えではないと思います。ロックしているコンセプト/オブジェクト( "messagesLock"または …

3
マスターから作業ブランチに変更をプルしますか?
私たち2人が何かに取り組んでいます。このブランチ構造を使用しています 主人 dev-A dev-B 私たちは両方とも別々のブランチ(dev-A、B)で作業し、作業が完了するたびに、変更をマスターにプロモートします。 しかし、これの欠点は、他の開発者が行った変更を取得できないことです。すべてがマスターツリーに存在しますが、他の開発者が行った最新の更新を取得することはできません。 これを解決する方法はありますか、ブランチ構造を変更する必要がありますか(機能ごとに)?
16 git 

5
C#インターフェースでのキーワード「使用」の使用
C#を使用してコードを記述し、Visual Studio 2010を使用してインターフェイスを定義すると、常に(使用例に示すように)多数の "using"ステートメントが含まれます。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestEngine.TestNameSpace { interface ITest1 { bool testMethod(int xyz); } } これらが何のためにあり、本当に必要なのだろうか。これらは省略できますか?インターフェイスの説明でこれらの部分を使用している場合にのみ必要ですか?

5
コンピューターサイエンスで不変式が重要な理由
文字通りの意味で「不変」を理解しています。コードを入力するときにも認識します。しかし、コンピューターサイエンスの文脈でこの用語の重要性を理解しているとは思わない。 有名なプログラマーやコンピューター科学者からの言語設計に関する会話やホワイトペーパーを読むたびに、「不変」という用語が専門用語として登場し続けます。それは私が理解できない部分です。何がそんなに特別なのですか?

7
データベース内のデータを暗号化する必要がありますか?
私にはクライアントがあり、そのために、患者のケア、患者の管理、相談、履歴、カレンダーなど、基本的にはすべてに関するWebアプリケーションを作成します。 問題は、これが機密データ、患者の履歴などであるということです。 クライアントはデータベースレベルでデータを暗号化することを主張しますが、これはWebアプリのパフォーマンスを低下させると思います。(しかし、私はこれについて心配するべきではありません) 私は健康問題に関するデータ保護に関する法律を読んだことがありますが(ポルトガル)、これについてあまり具体的ではありません(これについて質問したばかりで、彼らの応答を待っています)。 次のリンクを読みましたが、私の質問は異なります。データベース内のデータを暗号化すべきかどうか。 データの暗号化で予測される問題の1つは、キーが必要になることです。これはユーザーパスワードかもしれませんが、ユーザーパスワードがどのようになっているか(12345など)を知っており、保存する必要のあるキーを生成しますどこかで、これは、プログラマー、dba、それにアクセスできるものは何でも、これについての考えを意味しますか? ランダムソルトをユーザーパスワードに追加しても、私はいつでもアクセスでき、データを復号化できるため、問題は解決しません。
16 php  mysql  encryption 

2
使用できる開発の種類を制限するコンパイラのライセンスの先例はありますか?
最近、Delphi XE3の新しいEULAにより、クライアントサーバーライセンスパックを追加購入しないと、Professionalエディションでのクライアントサーバーの開発が禁止されることが明らかになりました。これは、Professionalバージョンに機能がないと言うことではありませんが、ライセンスは、サードパーティまたは自家開発のソリューションであっても、開発者が特定のクラスの開発にコンパイラを使用することを明確に禁止します。 したがって、私の質問は、使用できる作業のクラスを禁止しているコンパイラまたは同様の創造的なツールの先例があるかどうかです。具体的には、Delphi XE3のような商用ライセンスの「プロフェッショナル」ツール。また、そのような制限は法的に強制可能ですか? 商業目的での使用を制限している教育版または初心者版のツールが過去にあったことは知っていますが、それらは「プロフェッショナル」ツールとして販売されていませんでした。また、多くのコンピューティングソフトウェアおよび機器には、「生命維持装置」または「原子力」で使用するためではなく、アクティビティを禁止するよりも責任を回避するという免責条項があることを知っています。 MicrosoftがFrontPageに制限を設けたことを思い出して、Microsoftにあまり反映されていないWebサイトを作成することはできなかったようですが、合法的にテストする前に制限を撤廃しました。 更新: EULAは、製品が出荷される前に、公共の抵抗のために廃止されました。
16 licensing  delphi  eula 

9
コードの再利用とドキュメントを促進する方法は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 約10人以上の開発者のチームリーダーとして、コードの再利用を促進したいと考えています。私たちは多くのコードを書きました。過去数年間、それらの多くは反復的です。現在の問題は、これらのコードの多くが他のコードの複製またはわずかなバリエーションにすぎないことです。 コードをコンポーネントに変換して将来のプロジェクトで再利用できるようにする方法についての動き(ディスカッション)を開始しましたが、問題は、新しい開発者やコンポーネントを知らない他の開発者が先に進むことを恐れていることです自分のことを書いてください。 とにかく、既存のコードを複製してそれを調整したり、独自に作成したりするのではなく、コンポーネントを再利用する/ドキュメントを改善する/基礎となるコンポーネントに貢献するように開発者に思い出させる方法はありますか? 誰もが使用できるように、コンポーネントを簡単に検出可能、簡単に使用できるようにする方法は? すべての開発者は再利用可能なコンポーネントの利点を知っており、それらを使用したいと考えています。ただ、それらを発見可能にする方法がわからないだけです。また、開発者はコードを書いているとき、再利用可能なコードを書くべきだと知っていますが、そうする動機がありません。
16 code-reuse 

6
コードの複製はCで必要な悪ですか?
私はCを初めて使用しますが、一般的なデータ構造とCの一般的な記述に関して、コードの重複が必要な悪なのかどうか疑問に思っています。 hash mapたとえば、一般的な実装を記述しようとすることもできますが、最終結果は常に乱雑になります。また、この特定のユースケースだけに特化した実装を記述し、コードを明確に保ち、​​読みやすくデバッグしやすくすることもできます。後者はもちろん、コードの重複につながります。 一般的な実装は標準ですか、それともユースケースごとに異なる実装を作成しますか?

6
ガベージコレクターは、収集ごとにメモリ全体がスキャンされるのをどのように防止しますか?
一部の(少なくともMonoおよび.NETの)ガベージコレクタには、頻繁にスキャンする短期メモリ領域と、あまり頻繁にスキャンしないセカンダリメモリ領域があります。Monoはこれをナーサリと呼びます。 どのオブジェクトを破棄できるかを調べるために、ルート、スタック、レジスタから始まるすべてのオブジェクトをスキャンし、参照されなくなったすべてのオブジェクトを破棄します。 私の質問は、使用中のすべてのメモリが収集ごとにスキャンされるのをどのように防ぐのですか?原則として、使用されなくなったオブジェクトを見つける唯一の方法は、すべてのオブジェクトとそのすべての参照をスキャンすることです。ただし、これにより、アプリケーションで使用されていなくても、OSがメモリをスワップアウトできなくなり、「Nursery Collection」でも実行する必要がある膨大な作業のように感じます。保育園を利用することで、彼らが多くを獲得しているとは思えません。 私は何かを見逃していますか、またはガベージコレクタは実際にすべてのオブジェクトとすべての参照をスキャンするたびにスキャンしますか?

3
コードコメントのみを使用するコードレビューは良いアイデアですか?
前提条件 チームはDVCSを使用します IDEはコメントの解析をサポートしています(TODOなど) CodeCollaboratorのようなツールは予算的に高価です gerritのようなツールはインストールするには複雑すぎるか、使用できません ワークフロー 著者は中央リポジトリ機能ブランチのどこかに公開しています レビュー担当者が取得してレビューを開始します 質問/問題レビューアの場合、「REV」などの特別なラベルを付けてコメントを作成します。そのようなラベルは、製品コードに含めることはできません-レビュー段階でのみ: $somevar = 123; // REV Why do echo this here? echo $somevar; レビュアーがコメントの投稿を完了すると、愚かなメッセージ「comments」でコミットし、プッシュバックします 作成者は機能ブランチをプルバックし、同様の方法でコメントに回答するか、コードを改善してプッシュバックします 「REV」コメントがなくなると、そのレビューは正常に終了したと考えることができます。 作成者は機能ブランチをインタラクティブにリベースし、それを押しつぶしてそれらの「コメント」コミットを削除します。これで機能をマージして、通常は内部レビューが正常に完了した後のアクションを開発または実行する準備ができました IDEサポート 私は、カスタムのコメントタグがEclipseとNetBeansで可能であることを知っています。確かにそれはblablaStormファミリーにもあるはずです。 ご質問 この方法論は実行可能であると思いますか? 同様のことを知っていますか? それで何を改善できますか?

4
プライベートフィールドの有無にかかわらずプロパティを優先する必要がありますか?
現在作業しているコードベースには、プライベートフィールドとパブリックプロパティを使用する規則があります。たとえば、ほとんどのクラスのメンバーは次のように定義されています。 // Fields private double _foo; private double _bar; private double _baz; // Properties public double Foo { get{ return _foo; } set{ _foo = value; } } public double Bar { get{ return _bar; } set{ _bar = value; } } public double Baz { get{ return _baz; } …
16 c#  coding-style 

5
ペアプログラミングとISO 27001
私はeXtremeプログラミングチームで働いており、Windows環境で7年以上ペアプログラミングを行っています。私たちが最初にそれを始めたとき、誰かがWindowsの資格情報でログインするため、ドメインリソースへのすべてのアクセス、より具体的にはバージョン管理はそのWindowsユーザーに説明責任があります。最終的に、特定のペアリングステーション(ペアA、ペアB、ペアCなど)のWindowsペアリングアカウントを持つように進化しました。すべての開発者は、これらのアカウントのパスワードを知っています。コミット(チェックイン)の説明責任は、コミット中にプログラマーのイニシャルをコメントに入れることで実現されます。 これまではこれでうまくいきましたが、私の会社は現在ISO 27001監査を受けており、監査人によってリスクとしてフラグが立てられています。ペアの組み合わせごとにペアリングアカウントを作成するなど、可能な解決策がいくつかありますが、この問題に他の誰かが遭遇したかどうか、どのように解決したかを知りたいのですが。 審査員はどのような解決策を受け入れましたか?

6
Rails-パーシャルを使用すると、ビューのレンダリングが遅くなりますか?
Rails 3.1.0アプリケーションのパフォーマンスに問題があり、ARでクエリのドームを変更したため、ビューのレンダリングに時間がかかりすぎ、ビュー、ループなどを分割した多くのパーシャルでビュー内および他のパーシャル内で動的にレンダリングされます。 それで、多数のパーシャルを持つのは悪い習慣ですか? ビューのレンダリング時間を改善するために、パーシャルの数を減らす必要がありますか? ありがとう

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