ソフトウェア工学

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

3
ブラウザーで実行されるC#をコンパイルするためのLINQPadに類似した技術はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 JSFiddleを考えてください。LINQPadは、同様のオプションを備えた高速C#に最適です。ブラウザで実行するLINQPadのようなものはありますか?
9 c# 

8
ソフトウェアが肥大化する原因は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 今日、私はCreative Sound Blasterドライバーのクリーンインストールを実行することを決定しました。そのため、クリーンアップ手順全体を実行する必要がありました。そして、それは私にほぼ2時間かかった。 そして正直なところ、理由がわかりません!?そして、クリエイティブであるIMHOは、決して機能しない低品質のソフトウェアを生産する絶対的な1位ですが、肥大化の問題はそれらに限定されません。 キヤノンのデジタルカメラドライバーを搭載したPCには、あらゆる種類の接続と相互接続された約10のキヤノンエントリがあります。Visual Studioも主要な例です。フルインストールのエントリは約50ほどあります。その修復は、完全な操作でのみ可能です。そして、VS2k8からVS2k8SP1などにアップグレードするときに、OSのインストール全体を台無しにしてしまうことさえありました。結局のところ、5GBの空き容量は300Mbパッチには不十分でした... したがって、これは本当に広範囲にわたる問題のようです。最近のほとんどすべてのアプリケーションには、通常、アンパッカー、複数のスパイウェアのような「友達」がインストールされており、ドライバーは通常、プリンターなどを含むすべてのものに対して約600Mbです。 しかし、なぜ?開発者のせいですか?このようなアプリケーションはサポートが悪夢であり、現在100%機能することはありません。私が知っているほとんどすべてのユーザーは、USBサムドライブ/プリンター/カメラ/サウンドカード/ブラウザーの必須ドライバーインストールとして得られるすべての膨張について非常に否定的です。 NullsoftのNSISが、Firefoxのインストールなど、私が知っていることから肥大化していない唯一のクリーンなセットアップシステムのようです。クリーンで、ほとんど問題なくxcopyベースのインストール。 それでは、なぜ人々は30層を超える相互接続に根ざしていない単純なセットアップとアプリケーションを使用していないのでしょうか。開発者が怠けているからでしょうか?codegenツールの使用?企業がユーザーが気に入るような重いアプリを強制しているからでしょうか?原因は何ですか?ソフトウェアがいつか基本に戻ることを期待していますか?新しいアプリケーションを最初から開始するときに膨張を回避するための手順は何ですか?

3
他の人のためにライブラリを作成するとき、ロギングをどのように処理すればよいですか?
すべて。社内の他のチームのためにいくつかのライブラリを作成しています。それらはすべて異なるロギングメカニズムを持っています。私のライブラリが行っていることのトレース情報を提供したいと思います。これを達成するにはどうすればよいですか?ありがとう
9 c#  logging 

3
不変の構造と深い構成階層
私はGUIアプリケーションを開発しています。グラフィックを多用しています。例として、ベクターエディターと考えることができます。すべてのデータ構造を不変にするのは非常に魅力的です。そのため、ほとんど労力をかけずに、元に戻す/やり直し、コピー/貼り付け、その他多くのことを行うことができました。 簡単にするために、次の例を使用します。アプリケーションを使用して多角形を編集するため、「不変点」の単なるリストである「Polygon」オブジェクトがあります。 Scene -> Polygon -> Point そして、私はプログラムに1つだけの可変変数があります-現在のシーンオブジェクトを保持する変数です。私が抱えている問題は、ポイントドラッグを実装しようとしたときに発生します。可変バージョンでは、Pointオブジェクトを取得してその座標の変更を開始するだけです。不変バージョン-行き詰まっています。PolygoncurrentのSceneインデックス、にドラッグされたポイントのインデックスを格納しPolygon、毎回それを置き換えることができます。しかし、このアプローチはスケーリングしません。構成レベルが5に達すると、ボイラープレートは耐えられなくなります。 この問題は解決できると確信しています-結局のところ、完全に不変の構造とIOモナドを持つHas​​kellがあります。しかし、私はその方法を見つけることができません。 ヒントをください。

4
SSDを使用してVS 2010のパフォーマンスを向上させる[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 8年前休業。 ソリッドステートハードドライブでVisual Studio 2010を使用してパフォーマンスの改善をインターネットで検索した後、さまざまな意見をたくさん聞きました。 SSDを使用してもメリットはあまりないと多くの人が言いましたが、対照的に、まったく反対の意見がありました。私は対照的な意見に少し混乱しており、SSDを購入することが違いを生むかどうかを実際に決定することはできません。 この問題についてどのような経験があり、どのSSDを使用しましたか?

5
上司は新しいプロジェクトにバージョン管理システムを使用することに懐疑的ですが、とにかく私はどうでしょうか?
/software/109817/superior-refusing-to-use-subversionを参照してください 私の質問も同様ですが、私のシナリオの主な違いは次のとおりです。 PHPとウェブ技術を使用して、新しいプロジェクトをゼロから始めています。私のやり方があれば、最初から採用するので、開発にダウンタイムはありません。 私の開発チームは私と私の上司で構成されています。私たちは比較的小さな会社の「IT」部門です。 Webアプリは、ソース管理がまったくないレガシーアプリケーションを置き換えます。地理的な法的要件の違いにより、(私が採用される前に)アプリをバージョンごとに7つの完全に別個のディレクトリにフォークすることが決定されました。その後、さまざまな開発者がさまざまな場所でさまざまなことを行いました。それら全体にパッチを当てるということは、まあ、もっとうまくできると思います。それが私が投稿している理由だと思います。 メールから直接貼り付けた上司の提案: 更新はSUBMISSIONSフォルダーにパッケージとして送信する必要があります。パッケージには、関連するすべてのファイルと、更新の説明、含まれているすべての新しいファイルのリスト(説明付き)、および変更の詳細を含むすべての変更されたファイルのリストを含む「UPDATE.NFO」ファイルが含まれている必要があります。 更新パッケージは、個々の要素に焦点を当て、意図された目的から逸脱しないようにする必要があります。コードはモジュール化され、可能な限り再利用できるように設計する必要があります。 提出されたすべてのパッケージは、提出後すぐに各開発者のテスト環境にインストールする必要があります。各開発者は、新しい追加を確認し、本番環境へのインストールに関する懸念を表明します。標準のパッケージアップデートは、本番環境にロードされる前に、このレビュープロセスのために最低3営業日保持される必要があります。優先度の高い更新/修正では、この要件をスキップできます。 ソース管理が発明された理由は、それをすべて自動化するためですよね?それが私が大学で使用したものだから、私は転覆を提案しました。「コードがめちゃくちゃになる」(つまり、バイナリマジックを使用しており、明確に読み取ることができない)ため、ボスはSubversionを好みません。一度試してみましたが、Windowsで使用しようとすると、奇妙な小文字/大文字のエラーが発生し、ファイルをチェックアウトできませんでした。それがsubversionだけなのか、それとも不快なすべてのソース管理製品なのかはわかりません。 では、上司に対してどのような議論をするべきでしょうか。それとも彼は正しいのですか、そして奇妙なバグから私たちのすべての仕事を失う危険があるかもしれませんか? または私は完全に間違っていますか?私の状況ではソース管理が本当に必要ですか?これは私たちが話している主要なビジネスクリティカルなソフトウェアなので、間違いなく巨大になるでしょう。しかし、開発者は2人だけです(現在)。 さらに、彼を納得させることができない場合、私だけにそれを使用することに意味がありますか?私は実際にsvnを使用した非常に限られた経験を持つ誰かとして話しています。私が本当に知っているのは、チェックアウトとコミットだけです。個人の開発作業に役立つソース管理の機能(svn以外の製品が含まれる場合があります)は何ですか? 「別の仕事を取得する」コメントはありません。それは議論に役立たない。

5
クラスとネイティブクラスの名前の類似をどのように回避しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私は「興味深い問題」に出くわしました。 私はシステムを開発しており、多くの理由(つまり、抽象化、テクノロジーの独立性など)のために、情報を交換するための独自のタイプを作成しています。 たとえば、SendEmailと呼ばれ、ビジネスロジックによって呼び出されるメソッドがある場合、その方法には、OurCompany.EMailMessageタイプのパラメーターが含まれます。インスタンス、情報なし、ヘッドエンコード)。 SendEmail関数内で、この情報をEMailMEssageオブジェクトから取得し、MailMessage(これは技術固有のものです)オブジェクトを作成して、ネットワーク経由で送信できるようにします。 すでにお気づきのとおり、このクラスの名前は「ネイティブ」言語クラスとよく似ています。問題は、これがまさにメールメッセージであるため、それらに意味のある別の名前を見つけるのが難しいことです。 この問題は頻繁にありますか?どのように管理しますか? 編集:@mgkrebbsは、完全修飾名の使用についてコメントしました。これは私たちの現在のアプローチですが、少し冗長すぎます。できれば、もっときれいなものをお願いします。

4
より組織化されたプログラマになるには?[閉まっている]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前休業。 私はコーディングできるプログラマーです。しかし、私は物事を成し遂げることができますが、物事をうまくやったり、ほとんどのオープンソースコミュニティがそうするようにしたりはしません。ええと、私はgit hubのライブラリの一部を使用しています。私はプログラムのほとんどがうまく構成されていると思います。また、私を読んでください。 私の質問は: コミュニティで一般的なファイル構造や命名規則はありますか?これは個人的な好みの問題ですか? コードを書くのではなく、より組織化されたプログラマーになる方法はうまくいきます。しかし、あなたのプロジェクトに他の人が参加しやすいようにもっと整理されていますか?

1
TFSがあるときにPowerShellで展開スクリプトを作成するのはなぜですか?
自動展開/継続的インテグレーションを実験しており、チームリーダーと話し合いました。 PowerShellでビルド/デプロイメントスクリプトを作成することを調査していることを彼に伝え、自動デプロイメントはGUIを使用してTFSで非常に簡単に設定できるので、代わりに調査する必要があると述べました。VSからソース管理にコミットする以外は、TFSの経験はありません。 TFSが失敗するのはどのような場合で、自動展開のためにPowerShellを使用した方がよいでしょうか。TFSの代わりにPowerShellを選択する他の理由と利点は何ですか? そして別のこと:たとえば、TFSからJSファイルを縮小するサードパーティツールを実行できますか? 私が考えることができるPowerShellのいくつかの利点: PowerShellは最大の柔軟性を提供します Mercurialなどの別のソース管理システムに簡単に切り替えることができます スクリプトはTFSが生成するものよりも保守が容易になります PowerShellは軽量です。どのPCでもスクリプトを実行できます

5
問題追跡システムを使用することの欠点についての調査はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前休業。 次の理由で、問題追跡システムは好きではありません。 その中で問題を説明するには時間がかかりすぎます。これはその使用を思いとどまらせます。 バグを保管する場所を作成します。そして、彼らのための場所があれば、人々は通常、バグを修正することについてあまり気にしないので、いつか誰かがそれを修正できるようにするためにバグをそこに置くことができます。 時間が経つにつれ、バグリストは非常に長くなり、だれもそれを処理できなくなり、多くの時間を費やしています。 ホワイトボードでポストイットを使用して問題を処理したり、顔を見ながら会話したり、重要なバグが現れたらすぐに殺したりすることを好みます。オーバーヘッドに見合うだけの価値はないと思うので、バグの履歴を追跡することはあまり気にしません。 私はここに一人ですか?問題追跡システムを使用することの欠点(または大きな利点)に関する研究(本/記事/何でも)はありますか?

4
どの時点で継続的インテグレーションサーバーが興味深いのでしょうか。
私はJenkinsのようなCIサーバーについて少し読んでいますが、疑問に思っています。 確かに、クラスが5つと単体テストが10つしかない小さなプロジェクトの場合は、実際には必要ありません。 ここでは約1500のユニットテストがあり、(古いCore 2 Duoワークステーションで)約90秒で合格します(実際に「ユニット」をテストしているため、非常に高速であるため)。私たちのルールは、テストが失敗するとコードをコミットできないということです。 したがって、各開発者はリグレッションを防ぐためにすべてのテストを開始します。 明らかに、すべての開発者が常にすべてのテストを起動するため、ある開発者が別の変更を(ある場合)プルするとすぐに、変更の競合によるエラーをキャッチします。 それでもまだはっきりしていません。JenkinsのようなCIサーバーをセットアップする必要がありますか?それは何をもたらすでしょうか? 速度向上に役立つだけですか?(私たちのケースでは問題ではありません) 古いビルドを再作成できるので便利ですか?(ただし、Mercurialでこれを行うには、古いリビジョンをチェックアウトします) 基本的に私はそれが役立つことを理解していますが、正確な理由はわかりません。 上記で提起したポイントを考慮した説明は大歓迎です。

8
関数の先頭ではなく、内部ブロックに宣言を置くことの不利な点は何ですか?
私が働いている場所には、変数の宣言の配置に関する明確なガイドラインがあります。それによると、内部ブロック(forループなど)ではなく、グローバルレベルまたは関数の最初にそれらを配置する必要があります。それらは私よりも経験豊富な人たちによって指定されているので、それには正当な理由があるに違いないと私は確信しているが、それが何であるかを理解することはできない。それらをより大きなスコープで宣言させることでコンパイル時/実行時の利点があるかどうかを知るのは良いことです。

3
Gitはどのように設計されましたか?
私の職場は最近Gitに切り替わり、私はそれを愛しています(そして嫌いです!)。私は本当にそれを愛し、それは非常に強力です。私が嫌う唯一の部分は、時々それがあまりに強力であるということです(そして多分少し簡潔で混乱しています)。 私の質問は... Gitはどのように設計されましたか?短時間で使用するだけで、他のバージョン管理システムでは処理できなかった多くのあいまいなワークフローを処理できるという感じがします。しかし、それはまた、下にあるエレガントな感じです。そして速い! これは、Linusの才能に一部疑いの余地はありません。しかし、私は疑問に思っています、gitの全体的なデザインは何かに基づいていますか?BitKeeperについて読みましたが、アカウントは技術的な詳細が不十分です。圧縮、グラフ、リビジョン番号の削除、分岐、隠蔽、リモートの強調...それはどこから来たのですか? ライナスは本当にこれを公園から追い出して、ほとんど最初の試みで!学習曲線を過ぎてから使用すると非常に便利です。

2
gettextを使用して長いテキスト(ビューおよび電子メールテンプレート)を翻訳する
多言語のPHP Webアプリケーションを開発していて、gettextで翻訳する必要がある長い(-っぽい)テキストがあります。これらは、電子メールテンプレート(通常は短いですが、それでも数行)とビューテンプレートの一部(テキストのより長い説明ブロック)です。これらのテキストには、いくつかの単純なHTMLが含まれます(強調のための太字/斜体など、おそらくここまたはそこへのリンク)。テンプレートは、出力がキャプチャされるPHPスクリプトです。 問題は、gettextが長いテキストを処理するのに非常に扱いにくいように見えることです。長いテキストは通常​​、短いテキストよりも時間の経過により多くの変化があります— msgidを変更して、すべての翻訳で更新することを確認できます(多くの作業が必要で、msgidが長い場合はエラーが発生しやすくなります)。 msgidは変更されず、翻訳のみが変更されます(テンプレートに古いテキストが紛らわしくなります)。また、私はgettext文字列にHTMLを含めることに対するアドバイスを見てきましたが、これを回避すると、単一の自然なテキストが多数のチャンクに分割され、翻訳と再構築の悪夢がさらに大きくなるでしょう。 gettext文字列を個別のmsgidに不要に分割する。 私が目にするもう1つのアプローチは、これらの長いテキストではgettextを完全に無視し、それらのブロックを各ロケールの外部サブテンプレートに分離し、現在のロケールのブロックを含めることです。欠点は、gettext .poファイルと完全に異なる場所にある個別のテンプレートとの間の変換作業を分離していることです。 このアプリケーションは将来的に他のアプリケーションの出発点として使用されるので、長期的には最善のアプローチを考え出そうとしています。このようなシナリオでのベストプラクティスについていくつかアドバイスが必要です。同様のケースをどのように実装しましたか?何がうまくいき、何が悪い考えになったのですか?

5
画像処理を学ぶための最良の方法は何ですか?[閉まっている]
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 私は以前に画像処理をあまり行ったことがない大学の先輩です(スマートフォンでの基本的な画像圧縮を除く)。私は次の学期の機械学習に関する研究プロジェクトを始めています。これには、生物医学的な画像処理が必要になります。約2か月で画像処理の基本に慣れるための最良の方法は何ですか?それともこれは非現実的ですか? 基本が上手くいけば、他のリソースから学ぶほうが簡単になると思います。

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