ソフトウェア工学

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

2
APIがhttp基本認証を使用する方法
APIがクライアントの認証を必要とする場合、2つの異なるシナリオが使用されているのを見て、状況に応じてどのケースを使用すべきか疑問に思っています。 例1.サードパーティがHTTP Basicを使用してトークンとシークレットで認証できるようにするために、会社がAPIを提供しています。 例2. APIは、エンドユーザーを認証するためにHTTP Basicを介してユーザー名とパスワードを受け入れます。通常、彼らは将来のリクエストのためにトークンを受け取ります。 私のセットアップ:モバイルアプリおよびWebアプリのバックエンドとして使用するJSON APIを用意します。モバイルアプリとウェブアプリの両方がトークンとシークレットを一緒に送信することをお勧めするので、これら2つのアプリのみが他のサードパーティをブロックするAPIにアクセスできます。 ただし、モバイルアプリとWebアプリでは、ユーザーがログインして投稿を送信したり、データを表示したりすることができます。したがって、各リクエストでHTTP Basicを介してログインすることもできます。 これらの両方の方法を何らかの方法で組み合わせて使用​​するのですか、それとも各要求でエンドユーザーの資格情報(ユーザー名とトークン)のみを送信するのですか?エンドユーザー資格情報のみを送信する場合、クライアントのCookieに保存しますか?

7
ASP.NET Webforms開発者とWebデザイナー:対話方法
私はASP.NET Webforms開発者であり、デザイナーに対処するときにいくつかの問題に直面します。 デザイナーはいつも不満を言っていasp.net server controlsます。むしろ、単にhtmlファイルを持ち、それらにcss必要な画像とともにファイルを作成したいのです。設計段階が事前に完了している場合、関連するcssファイルを含むhtmlファイルを取得することもありますが、設計をaspxファイルと統合する際に多くの問題に直面します(telerikコントロールを制御するなど)。 私が尋ねたいのは: これらの問題を克服するにはどうすればよいですか?.netサーバーコントロールの問題のため、デザイナーはphp-およびmvc開発者を好みます。デザイナーと正しい方法でやり取りする方法を知る必要があります。 .aspxページのレンダリングされた(htmlページ)をデザイナーに提供するツールまたはアプリケーションはありますか?つまり、Visual Studioのaspxではなく、実行時のページを意味します。Web Expressionを使用しますが、HTMLでレンダリングされたページも必要です。

5
DBの機能を持つことは、スケーラビリティへの障害ですか?
質問に正しいタイトルを付けることができない場合があります。しかし、ここにあります、 資産管理のための金融ポータルを開発しています。10000以上のクライアントがアプリケーションを使用することを期待しています。ポータルは、株式市場のテクニカル分析に基づいて、さまざまなパフォーマンス分析を計算します。 データベースを介して、ストアドプロシージャ、ユーザー定義関数、トリガーなどを通じて多くの機能を開発しました。C#コードを使用するよりも、データベースで直接作業を行うことで、パフォーマンスを大幅に向上できると考えました。そして、実際にパフォーマンスが大幅に向上しました。 CTOの功績について自慢しようとすると、コードではなくデータベースに機能を実装するという私の決定に疑問を呈しました。彼によると、そのようなアプリケーションにはスケーラビリティの問題があります。彼の言葉では「最近のものはメモリ/キャッシュに保存されます。クラスター化されたデータは時間の経過とともに管理するのが難しくなります。また、機能はデータベースから完全に分離する必要があります。」 彼の言うことが正しいかどうかについて、いくつかの提案をお願いします。そのようなアプリケーションを設計する方法は?

4
OpenGL、GLX、DRI、およびMesa3Dの関係は何ですか?
Linuxで低レベルの3Dプログラミングを始めています。私は、高レベルのグラフィックスAPI OpenInventorを使用した経験が豊富です。 これらのすべてがどのように組み合わされるかを知ることは厳密に必要ではないことを知っていますが、私はただ興味があります。OpenGLはグラフィックアプリケーションの単なる標準であることは知っています。Mesa3Dは、この標準のオープンソース実装のようです。 では、GLXとDRIはどこに適合するのでしょうか?ウィキペディアとこれらすべてのウェブサイトを掘り下げて、私はまだそれがどのように連携するかについての正確な説明をまだ見つけていません。ハードウェアアクセラレーションはどこで発生しますか?プロプライエタリなドライバーはこれと何の関係がありますか?

5
springまたはhibernateまたはその他のJava Webフレームワークを学習するには、サーブレットとJSPを知る必要がありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私は多くの人々にJava Web開発の学習を始める場所を尋ねてきましたが、コアJava(スレッド、ジェネリック、コレクション、(JDBC)の少しの経験)はすでに知っていますが、JSPとサーブレットは知りません。サーバーサイドにPHPを使用し、クライアントサイドにHTML、CSS、Javascript、HTML5を使用するいくつかのWebベースのアプリケーションで、開発の公平な配分を行いました。 私が尋ねたほとんどの人は、Hibernateにすぐに飛びつくように私に言ったが、一部の人は私がサーブレットとjspを学ぶ必要はなく、すぐにSpringフレームワークを勉強すべきだと言った。これは本当ですか?休止状態またはSpringを学習するためにサーブレットとJSPを学習する必要はありませんか? 彼らの答えはすべて私を混乱させ、今私は何を学ぶか勉強するかを完全に失います。JSPとサーブレットの学習をスキップした場合、将来役立つと思われる多くの重要な概念を見逃してしまうと思います。 だから、質問は、spring / hibernateまたは他のJava Webフレームワークを学ぶために、基礎と知識のサーブレットとJSPが必要ですか?

9
雇用主の声に耳を傾け、CASEツールを使用する必要がありますか?
私の雇用主(開発者ではない)は、CASEツールが開発プロセスとドキュメントの改善に役立つと考えています。それについては定かではありませんが、私たちはローカルクライアント向けのモバイルバンキングソリューションを構築する5人の開発者から成る小さなチームです。CASEツールは購入する必要があるため時間とお金の無駄になり、慣れるまで時間がかかり、モデリングや作業のために効率的に作業する必要があると思います。コード生成は別の問題です。CASEで生成されたコードは、優秀な開発者が作成したコードほど優れていないと思います。 アジャイルの原則を守り、パターンを設計し、TDDを使用し、コードをクリーンに保つと思います。私たちは良いはずです。そして、分析と設計に関しては、ホワイトボード上の単純なUMLダイアグラムがトリックを行うはずだと思います。ドキュメントは適切で重要ですが、できる限り少なくする必要があります。ドキュメントに集中してコードを忘れてはなりません。これは私が思うことです。 私は正しいですか?または、雇用主の声に耳を傾け、適切なCASEツールの調査を開始する必要がありますか?

2
なぜ言語はswitchステートメントで明示的なフォールスルーを使用しないのですか?
私は読んでいたなぜ私たちはで使用する必要breakがありswitchますか?、そして、明示的なフォールスルーのサポート(AFAIK)がないのに、一部の言語(PHPやJavaScriptなど)で暗黙的なフォールスルーが許可されている理由を疑問に思いました。 continue完全に適切であるように、新しいキーワードを作成する必要があり、著者が事件を解決することを意図していたかどうかのあいまいさの問題を解決するようなものではありません。 現在サポートされている形式は次のとおりです。 switch (s) { case 1: ... break; case 2: ... //ambiguous, was break forgotten? case 3: ... break; default: ... break; } 一方、次のように書くのは理にかなっています。 switch (s) { case 1: ... break; case 2: ... continue; //unambiguous, the author was explicit case 3: ... break; default: ... break; } …

5
雇用終了後のコードをどのようにサポートしますか?
コードサポートに関して、会社(またはグループ/部門)を退職するプロセスは何ですか? すべての質問を処理するのが最善ですか?残りの開発者に将来のリソースとして自分自身へのアクセスを許可しますか?もしそうなら、フルアクセスを与えない方法はありますか? 私は、最初の開発者からの一般的なソフトウェアアーキテクチュアに関する回答が非常に貴重であるという直接的な経験をしました。 深刻な支援が必要な場合、それはサポート契約としての雇用交渉の典型的なケースになることを理解しています。ただし、深刻な支援が必要な場合、その連絡プロセスを容易にするためにどのような手順を実行できますか? (YOUR_NAME)_codesupport @(YOUR_FAVORITE_EMAIL_CLIENT).comアドレスを作成するようなことを考えていました。 私の状況の詳細: 私は生協の学生であり、そのため4か月間、企業を飛び回っています。これは、多くの新しいコードベースを紹介することと、退職時にかなりの数の孤立コードを残すことを意味します。ジャンクコードを残しておくと気分が悪くなります。
17 support 

12
より良いプログラマーになるために、物理学者として自分自身を教える[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はいつも物理学が好きで、コーディングがいつも好きだったので、大学で数値物理学(詳細は関係ありません、クラスターのほとんどは並列プログラミング)を行う博士号取得者のオファーを受けたとき、それは無かったです-私にとっては非常に簡単です。 しかし、ほとんどの物理学者として、私は独学しています。オブジェクト指向の方法でコーディングする方法についての幅広い背景知識や、kDツリーでの検索を最適化する特定のアルゴリズムの名前はありません。 これまでの私の仕事はすべて物理学と科学的結果に関心があったため、間違いなくいくつかの悪い習慣があります。それは、自分のコーディングがチームワークではなく自分のものだからです。Cは非常に単純で、「あなたが書くものはあなたが手に入れるもの」なので、私はほとんどCを使用しました-派手な抽象化の必要はありません。ただし、抽象化に伴うパワーについて詳しく知りたいため、最近C ++に切り替えました。これはかなりCに似ています(少なくとも構文的には)。 コンピュータサイエンスの卒業生のように、優れた抽象的な方法でコードを作成する方法を教えてください。 私は自分のコードが効率的であることは知っていますが、エレガントで読みやすいものにしたいのです。抽象プログラミングに関する1000ページの本をいくつか読む時間がないことに注意してください。私は実際の物理学関連の研究に時間を費やす必要があります(上司がプログラムを洗練する方法について考えることに時間を費やしていることを知っていたら、スーパーバイザーは私を笑います)。プログラマーの観点から、自分の仕事も良いかどうかをどのように評価しますか?

4
支払いをせずにさらに要求し続ける顧客のために、フリーランスの仕事を続けるべきですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 だから、クライアントが私のところに来て、何か仕事が必要だと言います。基本的に4つのタスクで、特定の価格で実行することに同意しました。顧客はODeskで求人(一定の時間と価格の求人)を作成しますが、私はそれを受け入れますが、その仕事に基づいて契約を開始するよう顧客に何度も思い出させました。 問題は、元のタスクが完了したこと、契約がまだ有効であること、まだ支払われていないこと、顧客がプロジェクトの完了時に支払うこと、そしてそれまで新しいタスクが絶えず発生すること、または古いタスクに変更することです要素を完全にやり直す必要があります。これらすべてのために、クライアントは支払いを約束します。ODesk上のこのクライアントからの更新はありません。新しいタスクはありません。クライアントに管理上の問題を整理することを思い出させ続けますが、結果はありません。同時に、プロジェクトがまもなく開始されるため、クライアントは継続的な作業を推進します。 私は何をすべきかわかりません。 官僚主義なしで仕事をすることを拒否すると、プロジェクトは遅れます。しかし、それは私のせいではありませんか?この場合、負のフィードバック、またはさらに悪いことを受け取るかもしれないと怖いです。 このプロジェクトを中退すると、自分が稼いだものさえも手に入らないのではないかと心配しています。 このように続けると、ここで説明したものと似たようなことをするのに多くの時間を浪費することになりますが、プログラマーとしてはい(はい、多くのハードコードされたコンテンツについては、すでに同様の要求に来ています)。 そのような状況でそのようなクライアントと通信するにはどうすればよいですか?競合を回避するにはどうすればよいですか? PSクライアントは小さな会社です。さまざまな人がこのプロジェクトのさまざまな側面を処理し、誰もがオリジナルの仕様に独自の変更を導入します。 2年後:すごい!とても質問です!大人気! 私はこの物語の結末に全員を参加させることにしました。私は顧客と向き合い、自分がしたことに対して支払いを受け、1時間ごとの契約が成立するまで働かないと説明しました。彼らは翌日私に支払い、契約を開始しました。実りある、しかし短いコラボレーションが始まりました。みんな幸せ。フィードバックがなかった以外は。

5
関数がパラメーターを変更しても大丈夫ですか
Linq To SQLをラップするデータレイヤーがあります。このデータレイヤーには、このメソッドがあります(簡略化されています) int InsertReport(Report report) { db.Reports.InsertOnSubmit(report); db.SubmitChanges(); return report.ID; } 変更を送信すると、レポートIDがデータベース内の値で更新され、その値が返されます。 呼び出し側からは、次のようになります(簡略化) var report = new Report(); DataLayer.InsertReport(report); // Do something with report.ID コードを見ると、IDはInsertReport関数内で一種の副作用として設定されているため、戻り値を無視しています。 私の質問は、副作用に頼って、代わりにこのようなことをするべきかということです。 void InsertReport(Report report) { db.Reports.InsertOnSubmit(report); db.SubmitChanges(); } またはそれを防ぐ必要があります int InsertReport(Report report) { var newReport = report.Clone(); db.Reports.InsertOnSubmit(newReport); db.SubmitChanges(); return newReport.ID; } たぶん Report …

7
クローズドソースへのコミュニティの貢献を伴うオープンソースプロジェクトを合法的かつ倫理的に受け入れることはできますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 2年前に閉店。 オープンソースライセンスの下でプロジェクトを開始および開発し、コミュニティの貢献を受け入れたとします。プロジェクトを商用およびクローズドソース(または分割ライセンス)にすると決めた場合、私はどの程度根拠がありますか? この質問は、少なくとも倫理に関する限り、地域貢献のあるプロジェクトの問題を直接扱っていません。貢献が私の著作権に該当するかどうか、または貢献者が彼が追加したプロジェクトの一部の著作権を保持しているかどうかわからないので、法的に、これも同様に不確かかもしれません。 プロジェクトを将来商業化する可能性を事前に把握している限り、(倫理的および法的に)安全ですか?
17 licensing  ethics 

3
仮想マシンのCPUコアが増えるとコンパイル時間が遅くなるのはなぜですか?
[編集#2] VMWareの誰かがVMWare Fusionのコピーを見つけたら、VirtualBoxとVMWareの比較と同じようにできるとうれしいです。どういうわけか、VMWareハイパーバイザーはハイパースレッディング用に調整されると思う(私の回答も参照) 私は何か奇妙なものを見ています。Windows 7 x64仮想マシンのコア数を増やすと、全体的なコンパイル時間が減少する代わりに増加します。コンパイルは通常、並列処理に非常に適しています(中間部分(依存関係のマッピング後)で、各.c / .cpp / .cs / whateverファイルでコンパイラインスタンスを呼び出して、リンカーが取得する部分オブジェクトを構築することができます)以上。ですから、実際には、コアの数でコンパイルが非常にうまくいくと想像していました。 しかし、私が見ているのは: 8コア:1.89秒 4コア:1.33秒 2コア:1.24秒 1コア:1.15秒 これは、単に特定のベンダーのハイパーバイザー実装(私の場合はtype2:virtualbox)による設計成果物なのか、ハイパーバイザー実装をより単純にするためにより多くのVMに広がるものなのでしょうか?非常に多くの要因があるので、私はこの振る舞いについて賛否両論を立てることができるようです-だから誰かが私よりもこのことを知っているなら、あなたの答えを読んでみたいです。 どうもありがとう [ 編集:コメントのアドレス指定 ] @MartinBeckett:コールドコンパイルは破棄されました。 @MonsterTruck:直接コンパイルできるオープンソースプロジェクトが見つかりませんでした。素晴らしいと思いますが、今は私の開発環境を台無しにすることはできません。 @Mr Lister、@ philosodad:VirtualBoxを使用して8つのハードウェアスレッドがあるため、エミュレーションなしの1:1マッピングである必要があります @Thorbjorn:VM用に6.5GBと小さなVS2012プロジェクトがあります-ページファイルをゴミ箱に入れたり出したりすることはほとんどありません。 @All:誰かがオープンソースのVS2010 / VS2012プロジェクトを指すことができれば、それは私の(独自の)VS2012プロジェクトよりも良いコミュニティリファレンスかもしれません。OrchardとDNNは、VS2012でコンパイルするために環境を調整する必要があるようです。VMWare Fusionを使用している人にもこれが表示されるかどうかを確認したい(VMWareとVirtualBoxの区分化の場合) テストの詳細: ハードウェア:Macbook Pro Retina CPU:コアi7 @ 2.3Ghz(クアッドコア、ハイパースレッディング= Windowsタスクマネージャーで8コア) メモリー:16 GB ディスク:256GB SSD ホストOS:Mac OS X 10.8 VMタイプ:VirtualBox 4.1.18(タイプ2ハイパーバイザー) …

2
フィルターされた検索を実装する最適な方法
フィルター処理された検索フォームを実装する際のご意見をお聞かせください。次の場合を想像してみましょう。 多数の列を持つ1つの大きなテーブル このSQL Serverを言うことは重要かもしれません このテーブルのデータを検索するフォームを実装する必要があります。このフォームには、この検索を最適化するためのいくつかのチェックボックスがあります。 ここで私の質問は、次のどれが検索を実装するための最良の方法であるべきかということです。 内部にクエリを含むストアドプロシージャを作成します。このストアドプロシージャは、パラメータがアプリケーションによって指定されているかどうかを確認し、指定されていない場合は、ワイルドカードがクエリに挿入されます。 動的クエリを作成します。動的クエリは、アプリケーションによって指定された内容に従って構築されます。 これは、SQL Serverがパフォーマンスを最適化するためにストアドプロシージャの作成時に実行プランを作成することを知っているためですが、ストアドプロシージャ内で動的クエリを作成すると、実行プランによって得られる最適化が犠牲になりますか? あなたの意見で最善のアプローチは何でしょうか教えてください。

2
アルゴリズムの予想実行時間と平均実行時間はどういう意味ですか?
アルゴリズムの実行時間を分析したいとしましょう。入力サイズがnで、最悪の場合はO(n)で示される場合に、アルゴリズムの実行時間を見つけたいと言うことがあります。時々、アルゴリズムの予想時間を見つける必要があると言っている本/論文を見ます。また、平均実行時間が使用されることもあります。 「予想時間」とは何ですか?最悪の場合の時間ではなく、予想される時間を見つけることはどの場合に役立ちますか? 編集:予想実行時間と平均実行時間の間には微妙な違いがあると思いますが、よくわかりません。この投稿を通して、もしあれば正確な違いを知りたい。

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