ソフトウェア工学

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

3
ポリゴンに同じサイズのエリアを生成する
n与えられたポリゴンで同じサイズのエリアを見つける疑似コードロジックを探しています。一致した領域の間または領域の外側にスペースがあってはなりません。エリアの最初の有効な一致が返されます。 [2,2, 3,1, 5,1, 5,4, 4,5, 2,3]入力として次のポリゴンを想定: ...そして3パラメータとして有効な出力は次のようになります[ [2,2, 3,2, 3,3, 4,3, 4,5, 2,3], [2,2, 3,1, 5,1, 4,2, 4,3, 3,3, 3,2], [4,5, 4,2, 5,1, 5,4] ]: パラメータ付きの別の有効な出力3は[ [3,4, 3,3, 4,3, 4,2, 3,2, 3,1, 2,2, 2,3], [4,3, 4,2, 3,2, 3,1, 5,1, 5,3], [3,4, 3,3, 5,3, 5,4, 4,5] ]次のとおりです。 エリアは同じ中心点を共有する必要がないことに注意してください。1つ以上の領域が、ポリゴン内の他の領域の間にちょうど入る場合があります。 次に、サンプル入出力の別の例を示します。 [1,3, …

3
多言語ファイルのインデント[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 複数の言語を含むファイル(テンプレートファイルなど)で、インデントに関するベストプラクティスはありますか? 私は主にこれを使用します: <div> IF FOO <div> <p>contents> </div> END FOO </div> 言語に関係なく、新しいブロックごとにインデントします。ただし、これにはいくつかの欠点があります。より複雑なファイルでは、どちらかの言語のインデントを壊す可能性があります: <div> IF FOO <div someattribute> ELSE <div otherattribute> END FOO <p>content</p> </div> </div> 私はこれが使用されるのを見たこともあります: <div> IF FOO <div> <p>contents> </div> END FOO </div> つまり。1つの言語のみインデントします。これには常に一貫性があるという利点がありますが、より複雑なファイルでは、ブロックが条件付きであることなど、一部の実装の詳細をほぼ完全に隠すことができます。 ここでの目標は、明らかに読みやすさを最大化することです。

5
メソッドを静的にすると、多くのインスタンスを持つクラスのメモリを節約できますか?
アーロノートの質問への回答に応じて: すべての静的メソッドを使用することはできませんか? 静的メソッドに使用されるメモリは少なくありませんか?各オブジェクトインスタンスは、非静的メンバー関数の独自の実行可能バージョンを持ち歩いているように見えます。 OOの設計が不十分であっても、静的メソッドの呼び出しにどのくらいのオーバーヘッドが関係していても、将来の頭痛の種であっても、実行時に使用するメモリが少なくないのではないでしょうか。 次に例を示します。 ゼロで初期化されたオブジェクトのベクトルを作成します。各オブジェクトには、1つのデータ(9つのdoubleで構成される三角形)が含まれています。各オブジェクトは、.stlファイルから読み取られたデータから順に読み込まれます。必要な静的メソッドは1つだけです。適切なOO設計では、データを直接処理するメソッドを各オブジェクトに配布する必要があります。標準のOOソリューションは次のとおりです。 foreach(obj in vec) { obj.readFromFile(fileName); } 各objはreadFromFile、データとともにのコンパイル済みコードを保持します! この場合、パフォーマンスよりもメモリの方が問題であり、制約されたシステムには大量のデータがあります。 ソリューション: 名前空間メソッド(C ++には最適ですが、Javaでは不可能) objのクラスの1つの静的メソッド。実行可能コードは、実行時に1か所に保持されます。メソッドを呼び出すための小さなオーバーヘッドがあります。 objの派生元の親クラスreadFromFile。プライベートメソッドが含まれます。コールとsuper.callPrivateMethod()その呼び出しreadFromFile。乱雑ですが、各オブジェクトのメモリオーバーヘッドが多少あります。 readFromFileobjのスコープ外に実装するため、vecのクラスまたは呼び出し元のクラスに実装します。私の意見では、これはデータのカプセル化を壊します。 大量のデータの場合、三角形ごとに1つの明示的なオブジェクトを使用するのは最善の方法ではないことに気づきました。これは単なる例です。

5
DBのパフォーマンスを考慮して複雑なREST APIを設計するにはどうすればよいですか?
REST APIの設計方法に関するいくつかのチュートリアルに従ってきましたが、まだいくつかの大きな疑問符があります。これらのチュートリアルはすべて、比較的単純な階層のリソースを示しています。これらのチュートリアルで使用されている原則が、より複雑な階層にどのように適用されるかを知りたいのです。さらに、彼らは非常に高い/建築レベルにとどまります。永続層は言うまでもなく、関連するコードはほとんど表示されません。Gavin Kingが言ったように、私は特にデータベースのロード/パフォーマンスについて心配しています: 開発のすべての段階でデータベースに注意を払えば、労力を節約できます アプリケーションがのトレーニングを提供するとしますCompanies。Companies持っDepartmentsていOfficesます。Departments持っていEmployeesます。Employees持っているSkillsとCoursesし、特定のLevel特定のスキルのは、いくつかのコースのために署名することができるように要求されています。階層は次のとおりですが、 -Companies -Departments -Employees -PersonalInformation -Address -Skills (quasi-static data) -Levels (quasi-static data) -Courses -Address -Offices -Address パスは次のようになります。 companies/1/departments/1/employees/1/courses/1 companies/1/offices/1/employees/1/courses/1 リソースを取得する したがって、会社を返すときに、階層全体を返すことはできませんcompanies/1/departments/1/employees/1/courses/1+ companies/1/offices/../。部門または展開された部門へのリンクのリストを返す可能性があり、このレベルでも同じ決定を行う必要があります。部門の従業員または展開された従業員へのリンクのリストを返しますか?それは部門や従業員などの数に依存します。 質問1:私の考えは正しいですか。「階層をどこで切るか」は、私がしなければならない典型的なエンジニアリング上の決定ですか ここで、尋ねられたときGET companies/idに、部署のコレクションへのリンクのリストと展開されたオフィス情報を返すことにします。私の会社には多くのオフィスがないので、テーブルOfficesと一緒に参加するAddressesことは大したことではありません。応答の例: GET /companies/1 200 OK { "_links":{ "self" : { "href":"http://trainingprovider.com:8080/companies/1" }, "offices": [ { "href": "http://trainingprovider.com:8080/companies/1/offices/1"}, { "href": "http://trainingprovider.com:8080/companies/1/offices/2"}, { "href": …

3
コードの重複や不明確なパラメーターの通過を回避するためのクライアントAPIのリファクタリング
APIを開発する必要があります。APIの機能は、サーバーによって公開されているサービスを呼び出すリクエストです。 最初、APIは次のように機能しました。 class Server: def firstRequest(self, arg1, arg2): # block of code A async = Async() async.callFirstRequest(arg1, arg2) # block of code B def secondRequest(self, argA, argB, argC): # block of code A (identical to that of firstRequest) async = Async() async.callSecondRequest(argA, argB, argC) # block of code B (identical …

2
タイプCOMオブジェクトのプロパティがあっても問題ありませんか
VB.Netを使用して、Microsoft Excel用のCOMアドインを開発しています。特定の要素を含むワークシートを表すクラスを作成しました。たとえば、ListObjectがあるとします。次のようにListObjectのプロパティを作成します。 Public Class MySheet Private myTable as Excel.ListObject Public Property Table() As Excel.ListObject Get Return myTable End Get Set(ByVal value As Excel.ListObject) myTable = value End Set End Property 次に、たとえばMySheetクラスに、ListObjectの属性を表すプロパティがあります。 Private myTableStyle As String Public Property TableStyle As String Get Return myTableStyle End Get Set(ByVal value As String) myTableStyle …
8 vb.net  excel 

2
複数の小さなプライベートリポジトリ上に単一のWebアプリケーションを配置することは、どの程度実行可能ですか?
私たちはウェブアプリに取り組んでいる低予算のチームです。いくつかの複雑さのため、1月以降はリモートで作業する必要があります。いくつかのコンサルティングとグーグルの後、いくつかの小さなリポジトリがより安価なオプションであると結論付けました。私たちは考えています: バックエンドとサービス ミドルウェア フロントエンド このようにして、関連するチームに分離し、それぞれがリポジトリでリモートで作業できます。私たちのアプリをいくつかの小さなプライベートリポジトリに置くことは、どの程度実行可能ですか? さらに、この方法で作業する場合、どのような考慮事項を考慮する必要がありますか? 注:複数の小さなリポジトリに分割された単一の大きなプロジェクトについて質問しています。これは、1つまたは複数のリポジトリで複数のプロジェクトを要求しているため、このサイトで尋ねられた関連質問とは異なります。さらに、私たちはプロジェクトを分割することを選択しました。これは主に、私たちがそれに固執しない限り、単一の大きなプライベートリポジトリに投資するつもりがないためです。

1
React 0.14のステートレスコンポーネントは、shouldComponentUpdateなしでどのようにパフォーマンスを向上させるのですか?
この質問は、React 0.14に関するリリースノート(およびその他の関連する誇大広告)を読んでから、頭の中で何度も繰り返されています -私はReactの大ファンで、ステートレスコンポーネント(https://facebook.github。 io / react / blog / 2015/09/10 / react-v0.14-rc1.html#stateless-function-components)は、そのようなコンポーネントを簡単に記述できることと、これらのコンポーネントの意図をコードで表現することの両方にとって優れたアイデアです。コンポーネントは、同じ小道具データを一貫してレンダリングするという点で「純粋」である必要があります。 問題は、Reactがこれらのステートレスコンポーネント関数を完全に最適化せずに最適化し、props参照がコンポーネント内で操作されないだけでなく、変更できないという点で不変であると仮定して、どのように最適化できるかです。コンポーネントのライフサイクル外ですか?「通常の」コンポーネント(ステートフルコンポーネント、つまりライフサイクル全体を通過するコンポーネント。componentWillMount、getInitialStateなど)にオプションの「shouldComponentUpdate」関数があるのは、Reactがすべてのプロパティと状態参照は完全に不変です。コンポーネントがレンダリングされた後、props参照の特定のプロパティが変更される可能性があるため、同じ「props」インスタンスには後で異なるコンテンツが含まれる可能性があります。これが、完全に不変の構造体を使用することに大きな興奮をもたらした理由の1つであり、ReactでOmを使用すると、パフォーマンスが大幅に向上すると言われているのです。そこで使用された不変の構造体は、オブジェクトの特定のインスタンスが決して変更されないことが保証されているため、shouldComponentUpdateは、propsとstate(http://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/)。 私はこれについてより多くの情報を見つけようとしましたが、どこにも行きませんでした。小道具のデータが不変のタイプで構成されると仮定せずに、ステートレスコンポーネントの周りでどのようなパフォーマンスの向上が見込めるかは想像できません。おそらく、「小道具」と「nextProps」が同じデータ? 私は誰かが内部情報を持っているのか、あるいはこれに関する他の啓蒙的な洞察を持っているのかと思っただけです。Reactが小道具のタイプを「完全に不変」にするよう要求し始めた場合(データが変更されていないことを確認するために参照等価比較を許可します)、それは大きな前進になると思いますが、大きな変更になる可能性もあります。
8 reactjs 

1
限られた予算でのビザンチン決済処理コードのリファクタリング[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私は数年間、大規模なRuby on Railsアプリケーションに取り組んできました。それは貧しい状態で受け継がれましたが、生産バグのほとんどは時間とともに解決されました。支払い処理コードなど、変更されていないセクションがあります。このコードはほとんどの部分で機能しますが、支払い処理業者によって請求が拒否された場合は常に、ユーザーに役立つメッセージではなく500エラーが表示されます。保守を容易にするためにコードをリファクタリングしたいと思います。それがどのように機能するかの簡単な概要を提供します。 次のスニペットからすべてのエラー処理コードを削除しました。 迷路はコントローラーで始まります: def submit_credit_card ... @credit_card = CreditCard.new(params[:credit_card].merge(:user => @user)) @credit_card.save ... @submission.do_initial_charge(@user) ... end 次に、Submissionモデルで: def do_initial_charge(user) ... self.initial_charge = self.charges.create(:charge_type => ChargeType.find(1), :user => user) self.initial_charge.process! self.initial_charge.settled? end ではChargeモデル: aasm column: 'state' do ... event :process do transitions :from => [:created, :failed], …

1
複数のプロジェクトにわたってAndroid Intentフィルター文字列を最適に管理するにはどうすればよいですか?
私のプロジェクトIntentExamplesには、サービスに対応するこのフィルターがあります。 <intent-filter> <action android:name="biz.rpcodes.apps.intentexamples.START_SERVICE" /> </intent-filter> 別のプロジェクトUseExampleServiceには、次のようなものがあります。 Intent i = new Intent("biz.rpcodes.apps.intentexamples.START_SERVICE"); startService(i); ...この答えによって導かれる:https : //stackoverflow.com/a/16439551/5181778 私の質問は、複数のプロジェクトにわたってこれらのインテントフィルター文字列をどのように管理すればよいですか?私が今持っている最善の解決策は、Serviceプロジェクトから他のプロジェクトにコピーアンドペーストするクラスを作成することです。 class ExampleServiceIntents { public static final String ExampleServiceIntents.START_SERVICE = "biz.rpcodes.apps.intentexamples.START_SERVICE"; ... Serviceクラス自体をインポートすることもできますが、 new Intent(this, ExampleService.class)Serviceクラスを独自のプロジェクトに保持したいと考えています。

7
「オブジェクトが特定の状態にある場合にのみ許可されるオブジェクトの操作」の設計パターン
例えば: まだレビューまたは承認されていない求人応募のみを更新できます。言い換えれば、人は、HRがレビューを開始するまで、またはすでに承認されるまで、ジョブアプライアンスフォームを更新できます。 したがって、求人応募は次の4つの状態になります。 APPLIED(初期状態)、IN_REVIEW、APPROVED、DECLINED どうすればこのような動作を実現できますか? 確かに、Applicationクラスにupdate()メソッドを記述し、アプリケーションの状態を確認し、アプリケーションが必要な状態でない場合は何もしないか、例外をスローすることができます しかし、この種のコードは、そのようなルールが存在することを明らかにしていません。それにより、だれでもupdate()メソッドを呼び出すことができ、クライアントが失敗した後にのみ、そのような操作が許可されなかったことがわかります。したがって、クライアントはそのような試みが失敗する可能性があることを認識する必要があるため、注意が必要です。クライアントがそのようなことを認識していることは、ロジックが外部にリークしていることも意味します。 状態ごとに異なるクラス(ApprovedApplicationなど)を作成して、許可されたクラスにのみ許可された操作を実行してみましたが、この種のアプローチも間違っているように感じます。 そのような振る舞いを実装するための公式の設計パターン、または単純なコードはありますか?

1
SCMツール(Ansible、Puppet、Chefなど)は何を提供しますか?
ソフトウェア構成管理(インターネットとSWEBOKについて)についてはかなり読みましたが、SCMツールの目的が明確ではありません。または、より良い言い方をすると、これらのツールは他のツールが提供しないものを何が提供するかです。 次のツールを備えた環境があるとします。 継続的な統合のためのJenkins。 ビルドツールとしてのAnt。 バージョン管理システムとしてのGit。 Gitリポジトリ管理および問題追跡のためのGitLab。 ソナーやJUnitなどのソースコード分析およびテストツール。 それで、私の質問は、それらのSCMツールは何を提供するのでしょうか?それらはどのように役立ちますか?

2
破棄をスローする可能性のある値渡し引数による強力な例外安全性保証は可能ですか?
スローデストラクタを備えた型と、それを値で受け取る関数があるとします。 その操作は、基本的な例外保証よりも優れたものを提供できますか? または別の方法で定式化すると、操作にコミットアンドロールバックセマンティクスがあるかどうかを判断するときに、値によって渡された引数の破棄を無視できますか? #include <cstdlib> struct X { ~X() noexcept(0) { if(rand()%6 == 0) throw 0; } // some state }; void update(database db, X arg) noexcept; X x; update(db, x); 個人的には、ウィキペディアの定義に基づく 強力な例外安全性、コミットまたはロールバックセマンティクスとも呼ばれます:操作は失敗する可能性がありますが、失敗した操作には副作用がないことが保証されているため、すべてのデータは元の値を保持します 関数自体がスローすることさえできないとしてもupdate、強く例外セーフであると説明することは有用ではないと私は思います。 私は私の現在の理解の愚かさを私に示してくれる人、あるいはもっと良い議論をしてくれれば幸いです。

4
大きなプロジェクトにはスクラムを使用すべきですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 私は18か月間、プログラマーとして(多くの顧客に再配布される)ガソリンスタンドの汎用ソフトウェア用に設計されたプロジェクトに取り組んできました。プロジェクトは大きいです。現在、約150のテーブルがあります。特定のアプローチは使用していません。適切に管理されていません。 personテーブルには今日約70列ありますが、15か月前には約30列でした。これらの新しいフィールドは、販売、財務、会計などの他のモジュールと統合するために登場しました。また、多くのフィールドが作成されてから削除されました。 その結果、多くのリファクタリングとリワークがありました。常に新しい要件が発生しているため、プロジェクトの準備はできません。 ここに私の疑問があります。通常の仕様アプローチを使用した場合、インタビュー、要件文書、アクティビティ、シーケンス、およびクラス図があり、「人」テーブルには70個のフィールドが必要であることを最初から知っているので、多くのリファクタリングを避けていました。 スクラムはこのプロジェクトに役立ちますか?この場合、スクラムも多くのリファクタリングを行うことになると思います。 私はプログラマーであり、プロジェクトマネージャーではありません。私はそれがどのように行われるべきであったのか疑問に思っています:スクラムまたは大きなデザインを前もって。 編集する この話の終わりを補足するだけです。8か月後、私はこの質問をしました。プロジェクトをいくつかの「テスト衣装」で生産した後、プロジェクトは公式に失敗しました。製品の所有者はプロジェクトを中止することを決定しました。問題の修正が難しくなり、多くのパフォーマンスの問題が発生しました。

1
Windows 10アプリサービスはエンタープライズ環境でのみ役立ちますか?
マイクロソフトがユニバーサルWindowsプラットフォーム(UWP)向けに導入した機能の1つ、つまりアプリサービスに従っています。これで、アプリはバックグラウンドタスクの形式でサービスを提供できるようになり、他のアプリから呼び出されてタスクを実行できるようになりました。これは、デバイス上のWebサービスのようなものです。 開発者が、自分自身または他の開発者からのサービスを他のアプリに提供することを目的としたアプリサービスを提供するアプリケーションを作成するとします。アプリが常にシステムに存在することを保証する方法がないため、開発者がアプリサービスを使用する必要がある場合、開発者は何ができますか? すべてのアプリにサービス機能を実装すると、目的が達成されず、他のアプリがインストールされていない場合に機能しないアプリを構築することは悪い決断のように思えます。それでは、アプリサービスは管理されたエンタープライズ環境のみを対象としており、一般の人々を対象としていませんか?

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