ソフトウェア工学

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

3
償却された一定時間で配列を初期化します—このトリックは何と呼ばれますか?
配列アクセスのパフォーマンスと、それをクリアするときに反復処理する必要性とを引き換えにするこのデータ構造があります。エントリごとに生成カウンターを保持し、グローバル生成カウンターも保持します。「クリア」操作は、生成カウンターを増やします。各アクセスで、ローカル生成カウンターとグローバル生成カウンターを比較します。それらが異なる場合、値は「クリーン」として扱われます。 これは最近Stack Overflowでのこの回答で出てきましたが、このトリックに正式な名前があるかどうかは覚えていません。そうですか? 1つのユースケースは、ノードのごく一部のみを緩和する必要がある場合、およびこれを繰り返し行う必要がある場合のダイクストラのアルゴリズムです。

4
HTML / Javascriptミニファイが有益な理由
HTTPプロトコルが既にgzipデータ圧縮をサポートしているのに、なぜHTML / Javascriptミニファイが有益なのですか? Javascript / HTMLミニフィケーションは、不要な空白を削除し、おそらく変数をそれぞれ数文字に名前変更することにより、Javascript / HTMLファイルのサイズを大幅に削減できる可能性があることを理解していますが、LZWアルゴリズムは、繰り返しが多い場合は特にうまくいきません文字(例:たくさんの空白?) 一部のJavascript縮小ツールは、サイズを縮小するだけではありません。たとえば、Googleのクロージャーコンパイラは、関数をインライン化したり、他の分析を行ったりして、コードのパフォーマンスを改善しようとします。ただし、Javascriptミニファイの主な目的は通常、ファイルサイズを小さくすることです。 また、コードの難読化など、パフォーマンス以外に縮小したい他の理由があることも理解しています。ただし、パフォーマンスの向上とファイルサイズの削減ほど、その理由は通常強調されません。たとえば、Closure Compilerは難読化ツールとしてではなく、コードサイズリデューサーおよびダウンロード速度エンハンサーとして宣伝されています。 それでは、gzip圧縮でファイルサイズをすでに大幅に削減している場合、Javascript / HTMLミニフィケーションから実際にどれだけのパフォーマンスが得られますか?
13 javascript  html  http  minify 

11
[分散]バージョン管理システムを使用することの重要性を、CS分野にいない人にどのように説明しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 その説明に当てはまる人の良い例は、プロジェクトマネージャーかもしれません。 先日、上司から「このGithubのことは何か、なぜ重要なのか」と尋ねられました。彼はいくつかの独自のプロジェクトを持っているので、プライベートホスティングが必要になります。私はいつも以上に説明するのに苦労しました。 。私の考えでは、「DRVSを使用して、それがどれほど有益であるかを本当に理解しなければならないかのようです」と考えていました。 最終的に私は彼に無制限のプライベートリポジトリを提供するため、BitBucketを指すようになりました(リポジトリとは何かを説明する必要さえありました)。 誰もがVCSがいかに彼らの命を救ったか、人生を楽にしたかなどの本当に良い具体的な例を持っていますか?基本的に、どのように職業にプログラマーではなく、プログラミングに不慣れではない人にDVSCを販売しますか?
13 dvcs 

2
WCFからNserviceBusにスワップする必要がありますか
さまざまな場所のクライアントネットワークにある多数のPCからメッセージを送受信する中央サーバーがあります。これを容易にするために、現在、証明書で保護された二重通信を使用して、TCPNetBindingsでWCFを使用しています。 現在、これにはいくつかの問題があります。主に、「切断モード」をサポートするように求められています(フォールトトレラントである必要があります)。私が知っていることから、WCFスタックを使用してこれを行う簡単な方法はありません-何かを実装し、おそらくmsmqを使用する必要があります。私は最近NServiceBusを見てきましたが、法案によく合っているように見えます-フォールトトレランス、シンプルなhttpゲートウェイなどを介してインターネット経由でメッセージを送信することができます。私はそれを調べることからその理由を見ることができます。 だから、私の質問は... NServiceBusを採用することは賢明なアイデアのように聞こえますか、またはこれに関連する他の提案/現実世界の経験がありますか?比較的あまり知られていない新しい技術を導入することや、セキュリティの確保、信頼できる方法ですべてをセットアップすること、途中で問題を起こすことなどの問題に直面することを心配していると思います。アーキテクチャにメッキを施し、WCFに固執してそれをうまく機能させるのではなく、実装で行き詰まってしまうような光沢のあるものを選択します。 ありがとう!

5
データ検証をサポートするORMの場合、データベースにも制約を適用する必要がありますか?
(ActiveRecord)モデルに加えて、常にデータベースレベルで制約を適用しています。しかし、私はこれが本当に必要かどうか疑問に思っていましたか? 少しの背景 私は最近、モデルの基本的な自動タイムスタンプ生成方法を単体テストする必要がありました。通常、テストはモデルのインスタンスを作成し、検証なしで保存します。ただし、テーブル定義でnullにできない他の必須フィールドがあります。つまり、ActiveRecord検証をスキップしてもインスタンスを保存できません。だから私はdb自体からそのような制約を削除し、ORMにそれらを処理させる必要があるかどうかを考えていますか? db、imoの制約をスキップした場合に考えられる利点 - データベースを移行することなく、モデル内の検証ルールを変更できます。 テストで検証をスキップできます。 考えられる不利益は? ただし、ORM検証が失敗またはバイパスされる可能性がある場合、データベースは制約をチェックしません。 どう思いますか? 編集このケースでは、データベースからモデルを生成するYii Frameworkを使用しているため、データベースルールも生成されます(ただし、生成後はいつでも記述できます)。
13 database  orm  validation  dry 

5
Goのような言語に対する従来のOOPの利点
私は言語設計と「理想的な」プログラミング言語に必要な要素について多くのことを考えてきましたが、GoogleのGoを勉強することで、そうでなければ一般的な知識の多くを疑問視するようになりました。 具体的には、Goはオブジェクト指向言語の構造を実際に持たずに、オブジェクト指向プログラミングの興味深い利点をすべて備えているようです。クラスはなく、構造のみがあります。クラス/構造の継承はなく、構造の埋め込みのみです。階層はなく、親クラスも、明示的なインターフェイス実装もありません。代わりに、型キャストルールはアヒルのタイピングに似た緩やかなシステムに基づいており、構造体が「リーダー」または「リクエスト」または「エンコード」の必要な要素を実装する場合、キャストして使用できます。一つとして。 Goのような言語に移行するときにあきらめなければならない、本質的に機能性、保守性、強力な、C ++およびJavaとC#で実装されたOOPについて何かありますか?この新しいパラダイムが表すシンプルさを得るために、あきらめなければならないメリットは何ですか? 編集 読者が過度にハングアップして怒りを覚えるように見える「時代遅れの」質問を削除しました。 問題は、一般的な言語の実装でよく見られる従来のオブジェクト指向のパラダイム(階層など)は、この単純なモデルでは簡単に実行できないものを提供する必要があるということです。または、言い換えると、今日言語を設計する場合、クラス階層の概念を含めたい理由はありますか?

9
出発した同僚に「sev 1」の欠陥について話すべきですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 7年前に閉鎖されました。 最近、同僚が会社を辞めました。退社する前に、彼は本番の停止を引き起こす深刻なメモリリークが発生したコンポーネントをコーディングしました(OutOfMemoryErrorJavaで)。問題は本質的にHashMap成長し、エントリを削除しないことであり、解決策はHashMapキャッシュ実装に置き換えることでした。 専門的な見地から、私は彼に欠陥について知らせ、エラーから学ぶことができるようにすべきだと感じています。一方、人々が会社を辞めた後は、多くの場合、より大きくより良いもののために残したレガシープロジェクトについて聞きたくありません。 このような状況の一般的なプロトコルは何ですか?

8
コードのドキュメントをどこに置くか?
私は現在、2つのシステムを使用してコードドキュメントを記述しています(C ++を使用しています)。 Doxygen形式を使用して、メソッドとクラスメンバーに関するドキュメントがコードの横に追加されます。サーバーでは、Doxygenがソースで実行されるため、Webブラウザーで出力を確認できます。 概要ページ(クラスのセット、アプリケーションの構造、サンプルコードなど)がWikiに追加されます。 メンバーやクラスに関するドキュメントはコードに非常に近いため、このアプローチは簡単だと個人的に思いますが、概要ページはWikiで編集するのが非常に簡単です(また、画像、表などを追加するのも簡単です)。Webブラウザを使用すると、両方のドキュメントを表示できます。 私の同僚は、すべてをDoxygenに入れることを提案しています。これは、MicrosoftのHTML WorkShopまたはQt Assistantを使用して、すべてを含む1つの大きなヘルプファイルを作成できるためです。私の懸念は、特に表、画像などを追加する場合、Doxygenスタイルのドキュメントの編集がはるかに難しいことです(Wikiと比較して)(または、生成する必要のないDoxygenの「プレビュー」ツールがありますか?結果を見る前のコード?) 大きなオープンソース(またはクローズドソース)プロジェクトは、コードド​​キュメントを書くために何を使用しますか?彼らはこれをDoxygenスタイルとWikiに分けていますか?または、別のシステムを使用していますか? ドキュメントを公開する最も適切な方法は何ですか?Webサーバー/ブラウザ経由、または大きな(数MBの)ヘルプファイル経由? コードドキュメントを作成するとき、どのアプローチを取りますか?

2
アドホックな考え方に対処する方法は?
私は2か月前に6人の開発チームに参加しました。人々は素晴らしいです、すべてが良いです。しかし、私はますますアドホックな考え方を観察します。スタッフはすぐに修正されますが、将来の使いやすさを犠牲にして、テストはほとんどなく、2人の人が喜んで認めています。 これに対処するには?私は例を挙げてリードしたいと思いますが、時間は限られています-ものを設計し、実際に実装するのが好きです。しかし、私はアドホックな考え方が私に感染していることを恐れており、デザインとコードの明快さと単純さを追求するのではなく、それを確立するのは簡単ではありません部外者は分離することができます-スケジュールと管理のためだけに。

3
Objective Cでプログラミングするとき、人々はconstを多く使用しますか?
関連:「 'NSString *'型のパラメーターに 'const NSString *'を送信すると、修飾子が破棄されます」という警告 時々、私はそれが便利だと思います。テーブルを渡す必要があり、テーブルの内容が変わらないことを確認したい場合があります。 しかし、ほとんどのObjective-Cプログラムのサンプルでは、​​私は決して見ませんconst。私の質問はなぜですか?

10
スタンドアップ会議を文書化する必要がありますか?
私の会社の別のチームが彼らのスタンドアップミーティングを文書化し始めますが、それは時間の無駄だと思います。私が知っている限りでは、スタンドアップミーティングはステータスレポートのためではなく、コミュニケーションのためのものです(間違っている場合は修正してください) それでは、スタンドアップミーティングを文書化する必要がありますか?
13 agile 

5
単体テストの手続きコードは効果的ですか?
現在のプロジェクトでは、コードに浸透していると思われる一定量のバグを回避するために、開発サイクルにユニットテストを組み込むことを望んでいます。問題は、スパゲッティコードの95%が手続き型であり、ユニットテストを一度も行ったことがないことです(ユニットテストの経験はすべて、OOPコードを使用したことです) 簡単に言えば、私の質問は、現在のコードベースで単体テストを進めるのが賢明でしょうか、それともアプリケーションが適切なOOPフレームワークに移行されるまで延期することを提案するのでしょうか? PS:私はこの問題を言語にとらわれないものとしてスタイル付けようとしましたが、問題のアプリケーションはPHPとjavascriptを使用していると述べると、経験からこの発生はこのようなアプリケーションで最も多く発生するため、この質問に答えることができるより具体的な回答を提供するのに役立つと感じています。

2
会社のサイトにセキュリティホールを見つけた場合の対処方法
会社の公開サイトの1つに大きなセキュリティホールが見つかりました。これは、イントラネットサイトから変換された最初の公開サイトです。私はこの問題を上司に伝え、彼らは本質的に肩をすくめ、安全にサイトを再構築するにはかなりの労力が必要だと言った。 これは本当に私を悩ませており、実際のハッカーがそれに到達した場合にこれが起こる可能性のある効果を示すために穴を悪用することを考えました。これはおそらく、最良のアイデアではありません。何か悪いものではないとしても、その影響によって仕事にかかることがあります。 状況の大きさを経営者に示すためにできることは何ですか?
13 security  ethics 

11
商用ソフトウェア製品でオープンソースコードを使用する知恵
ASP.NET Webアプリ(特にdapper)でオープンソースコードを使用することを検討しています。経営陣はファンではありません。なぜなら、オープンソースは以前私たちに噛み付いたリスクと見なされているからです。どうやら、以前の開発者は、オープンソースのコンポーネントが失敗した後、物事を書き直さなければならなかったようです。 プロのようです: それ以外の点では、ボイラープレートコードの多くまたはマイクロソフトが推奨するが低速なソリューション(Entity Framework)のいずれかが含まれることになります。 短所: 本番環境で突然失敗した場合、それを修正するのが難しいほど複雑です。ただし、私のサイトよりもはるかにトラフィックの多いサイトで使用されているため、最終的にプロジェクトのリスクの高い部分になるとは思わない。 ここでのコンセンサスは何ですか?自分のコードと同じように、私が知らない/理解していないプロジェクトでオープンソースコードを使用するのは賢明ではありませんか?

8
SwingプロジェクトのJavaFXへの移行を開始しますか[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 Swing + SwingXで書かれた4年前のプロジェクトがあります。現在、それはまだ生きており、まだ蹴っている。 ただし、GUIに関連する機能要求が増えるにつれて(たとえば、並べ替え可能なツリーテーブル)、要求を満たすのが難しいと感じ始めます。これは特に、SwingXプロジェクトの周りで活発な開発が行われていないため当てはまります。 また、GUI Javaフレームワークを積極的に維持/開発/進化させている良いものはほとんど見つかりません。 Swing開発者の誰もが同じことを感じていますか?Swingプロジェクトを、JavaFXなどのよりアクティブな開発済みGUIフレームワークに移行し始めましたか?
13 java  swing  javafx 

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