ソフトウェア工学

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

5
テスト駆動開発:ファイルシステム操作をテストするための良い/受け入れられた方法ですか?
私は現在、ファイルシステムの内容に基づいて(特に)テーブルを生成し、見つかったものに対してメタデータの変更を行うプロジェクトに取り組んでいます。問題は、これをどのようにテストするのか、セットアップするのかです。これを簡単にモックする方法はありますか?または、「サンドボックス」を設定する必要がありますか?

2
要求がサーバーに送信され、応答を待っている間にインターネット接続が失われた場合の対処方法
サーバーに大量のデータを送信しています。データを送信してサーバーからの応答を待っている間に、Androidデバイスが突然インターネット接続を失います。 だから、私がやったことは、接続が失われたという警告ダイアログを表示することですが、サーバー側ではデータが既に処理されており、URLなどでどこかで更新されました しかし、私のアンドロイド携帯電話は、これまでに応答を得られなかったので、これを知りません。解決方法。サーバー側で実行できるのか、それともアンドロイド自体で実行できるのか Androidフォンが応答をリッスンしないことをサーバーはどのように知るのでしょうか?これは、クライアントとサーバー間の通信の最適化の観点かもしれません。

4
TCOがない場合、スタックを爆破することを心配する場合
JVMを対象とする新しいプログラミング言語についての議論があるたびに、必然的に次のようなことを言っている人々がいます。 「JVMはテールコールの最適化をサポートしていないため、大量のスタックの爆発を予測しています」 そのテーマには何千ものバリエーションがあります。 今では、Clojureなどの一部の言語には、使用できる特別な再帰構造があります。 私が理解していないのは、テールコール最適化の欠如がどれほど深刻なのかということです。いつ心配する必要がありますか? 私の混乱の主な原因は、おそらくJavaがこれまでで最も成功した言語の1つであり、JVM言語のかなりの数がかなりうまくいっているように思われるという事実からでしょう。TCOの欠如が本当にあるならばどのようにそれが可能である任意の懸念?

1
一部のウェブサイトがChromeの開発者ツールで0バイトを表示するのはなぜですか
私は自分のウェブサイトのページ速度の最適化を行っており、他のウェブサイトがそれをどのように行うかを研究しています。FacebookやRinggitplusなどの一部のWebサイトでは、Chromeの開発者ツールの[ネットワーク]タブでリソースの一部に0バイトが表示されていますが、実際のコンテンツサイズは数キロバイトです。 サイズはフェッチされる量であり、コンテンツは応答の実際のサイズであるという記事をいくつか読みました。したがって、サイズが0バイトの場合、キャッシュから提供されることを意味します。しかし、シークレットモードを使用してページを開いたり、すべてのキャッシュをクリアしたりしても、同じことが起こりました。 どのようにしてこれを可能にし、どのように私のウェブサイトで同じことを達成できますか?
14 http  caching  chrome 

2
設計上の決定-</ p>なしで<p>を生成する理由
tl; dr htmlを生成する広く使用されているいくつかのプログラムは、ブラウザーが適切に段落を閉じると仮定して、閉じているタグではなく、開く段落タグのみを生成します。 一見すると、ブラウザが段落を適切に閉じるという仮定は正しくないと思われます。私の解釈は正しいですか?より一般的には、この種の決定にはどのようなトレードオフが関係していますか? moinmoinソースコードを参照すると、次のコード行が目を引きました。 # We only open those tags and let the browser auto-close them: _auto_closing_tags = set(['p']) (ソース) 実装の残りの部分を読んだ後、確かに、moinmoinがそのページの1つに対してhtmlコードを生成するとき、適切な場合は段落開始タグを正しく生成すると同時に、段落終了タグ(簡単に実行できるにもかかわらず)。 私の特定の、かなり珍しいユースケースでは、この動作は正しくありません。バグレポートを送信したり、動作を変更したりしたいと思います。ただし、この設計上の決定は思慮深く行われたようです。私はこれが一般的に正しい動作であるかどうかを知ることができるほど、HTML標準またはさまざまなブラウザ実装の複雑さに精通していないため、この動作を修正/変更する本能は見当違い。 このコードは、ブラウザの実装について有効な仮定を立てていますか?生成されたhtmlは有効ですか?より一般的には、ここで見落としているトレードオフは何ですか?

5
試しに最終的に高価です
関数を終了する前にリソースのクリーンアップを行う必要があるコードの場合、これらの2つの方法の間に大きなパフォーマンスの違いがあります。 すべてのreturnステートメントの前にリソースをクリーニングする void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } finallyブロックでのリソースのクリーニング void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == …

10
RDBMSが結合されたテーブルをネストされた形式で返さないのはなぜですか?
たとえば、ユーザーとそのすべての電話番号とメールアドレスを取得したいとします。電話番号とメールは別々のテーブルに保存されます。1人のユーザーが多くの電話/メールにアクセスします。私はこれを非常に簡単に行うことができます: SELECT * FROM users user LEFT JOIN emails email ON email.user_id=user.id LEFT JOIN phones phone ON phone.user_id=user.id これに関する問題*は、ユーザー名、DOB、お気に入りの色、および各レコード(ユーザーが電話レコードにメールを送信する)についてユーザーテーブルに保存されている他のすべての情報を返し、おそらく帯域幅を消費して速度が低下することです結果をダウン。 ユーザーごとに1つの行を返し、そのレコード内に電子メールのリストと電話のリストがあった方が良いと思いませんか?また、データの操作がはるかに簡単になります。 LINQまたは他のフレームワークを使用してこのような結果を得ることができることは知っていますが、リレーショナルデータベースの基礎となる設計の弱点のようです。 NoSQLを使用してこれを回避することもできますが、中間点はないはずです。 何か不足していますか?これはなぜ存在しないのですか? *はい、このように設計されています。わかった。なぜ作業が簡単な代替手段がないのか疑問に思っています。SQLは実行中の処理を続けることができますが、キーワードまたは2つを追加して、デカルト積ではなくネストされた形式でデータを返す少しの後処理を行うことができます。 選択したスクリプト言語でこれを実行できることはわかっていますが、SQLサーバーが冗長データを送信するか(以下の例)、またはのような複数のクエリを発行する必要がありますSELECT email FROM emails WHERE user_id IN (/* result of first query */)。 MySQLにこれに似た何かを返させる代わりに: [ { "name": "John Smith", "dob": "1945-05-13", "fav_color": "red", "email": "johnsmith45@gmail.com", }, …
14 design  sql  rdbms 

5
スクラムは、ユーザーストーリーではなく製品バックログで技術仕様を使用できますか?
私が現在働いている会社では、スクラムプロジェクトを始めました。管理者に滝からスクラムに移行するよう説得することはそれほど難しくありませんでした。プラットフォームをゼロから再構築するプロジェクトを行っています。(ほとんどの)機能は既知であり、ほとんどの改善はかなり技術的です。 これでは、ユーザーストーリーではなく技術的なタスクを持つことを正当化できます。バックログには、次のようなあらゆる種類の技術的なタスクがあります。 MySQLからPostgreSQLにDBクラスを書き換えます。 システムロギングを実装します。 オブジェクトキャッシュを書き換えます。 スタンドアップ中に出てくるものには、長い「研究タスク」が必要であるが、決して実行されないことが含まれます。また、チームメンバーは、スプリントの途中で、計画外のタスクを追加する必要があると主張します。 スクラムマスターはこれにどのように対処する必要がありますか?この種のプロジェクトにとって、スクラムは進むべき道ではないのでしょうか?

4
さまざまなソースタイプおよびさまざまな宛先タイプへのデータインポートのデザインパターン
次を処理できるインポートスクリプト(C#)を設計および構築する必要があります。 さまざまなソース(XML、XSLX、CSV)からデータを読み取る データを検証する データをさまざまなオブジェクトタイプ(顧客、住所)に書き込む データは多数のソースから取得されますが、ソースには常に1つのインポート形式(csv、xml、xslxのいずれか)があります。インポート形式はソースごとに異なる場合があります。将来、新しいインポート形式が追加される可能性があります。宛先オブジェクトの種類は常に同じです(顧客、アドレスなど)。 私はジェネリックを使用することを考えていて、ファクトリーパターンについて何かを読みましたが、私はこの分野でかなり大きな初心者なので、アドバイスは大歓迎です。 この問題を解決するための適切な設計パターンは何ですか?

5
よく書かれたドキュメントは、プログラミング言語を学ぶのに十分な理由ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 現在、大学のカリキュラムに含まれていないPythonを学んでいます。インタビューの中で、なぜPythonを選んだのかと尋ねられ、簡単に学ぶことができ、ドキュメントが非常によく書かれていると答えました。インタビュアーは、それが十分な理由であるかどうかは答えませんでした。彼は確信しているように見えましたが、私にはわかりません。 よく書かれたドキュメントと習得の容易さは、スクリプト言語を選択する十分な理由ですか?または、Pythonライブラリの利用可能性とPythonのより大きなユーザーベースについて詳しく説明する必要がありますか? ちょっとだけ。Pythonはこの仕事には必要ありませんでした。同社は、Ruby-on-railsに取り組みました。Pythonは私の履歴書にあり、インタビュアーはプログラミング言語を選択する際に、私がより新鮮なものとして考慮したことを知りたかっただけだと思います。

1
RESTモデルでリソースをネストする適切な方法は何ですか?
私はサービスのREST APIを設計しており、リソースをネストする適切な方法にこだわっています。 リソース:パートナー、チケット、設定 リソース間の接続: パートナーには多くのチケットがあり、 パートナーは設定のセットを持っています、 Bussinesロジック: すべてのパートナーを匿名ユーザーとしてリストできます。 指定したパートナーに匿名ユーザーとして新しいチケットを追加できます。 パートナーのみが自分のチケットをリストできます。 パートナーのみがチケットを変更できます。 パートナーのみが設定を一覧表示できますが、 パートナーのみが設定を変更できますが、 私が今までやったこと: パートナーリソース GET / partners-すべてのパートナーを一覧 表示 GET / partners /:id- :idパラメーターで指定されたパートナーの詳細を表示GET / partners /:partner_id / tickets-パートナーのチケットの一覧 GET / partners /:partner_id / tickets /:id-詳細指定されたパートナーのチケットの POST / partners /:partner_id / tickets-新しいチケット PUTを保存する/ partners /:partner_id / tickets /:id-:idパラメーターで指定されたチケットを更新する GET / …
14 api  rest  api-design 

1
著者は、GNUパブリックライセンス通知でコードに著作権を挿入しました-意味?
Githubで、どのソースがオープンソースであると主張し、それに含まれるGPLライセンスに貢献することに興味があるプロジェクトを見つけました。 ただし、元の作成者は、各ソースファイルに著作権通知を追加しています。なぜかはわかりませんが、常に誰か他の人の名前が付いているプロジェクトに貢献する気はありません。それはコミュニティが作成した感覚を本当に壊し、著者が次にプロジェクトで何をすることを選択するかについて私を不安にさせます。 オープンソースGPLコードの著作権の保護はどのような意味を持ちますか?これは、寄稿者に対して元の著者にどのような力を与えますか? # Copyright (C) 2012, 2013 __AUTHORNAME__ # This file is part of __PROJECTNAME__. # # __PROJECTNAME__ is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 …

7
Javaで、保護されたメンバーが同じパッケージのクラスにアクセスできるようになったのはなぜですか?
公式文書から... モディファイヤクラスパッケージサブクラスワールド パブリックYYYY 保護されたYYYN 修飾子なしYYNN プライベートYNNN 問題は、同じパッケージ内のクラスから保護されたメンバーにアクセスする必要があるユースケースを覚えていないことです。 この実装の背後にある理由は何ですか? 編集:明確にするために、同じパッケージ内のサブクラスとクラスの両方が保護されたフィールドまたはメソッドにアクセスする必要がある特定のユースケースを探しています。 package some.package; public class A { protected void protectedMethod(){ // do something } } package another.package; public class B extends A{ public void someMethod(){ // accessible because B is a subclass of A protectedMethod(); } } package some.package; public class C …

1
ソケットが発明される前に、ネットワークプログラムは通信に何を使用していましたか(1983年頃?)
ソケットは1983年頃にバークレーで発明されましたが、これまでネットワーク化されたコンピュータープログラムはどのように機能していましたか?最近では、ほとんどすべてがソケットを使用しているので、他のプログラムがどのように通信できるのか想像できず、Googleは何も表示しませんでした。

7
代理キーをユーザーに公開する必要がありますか?
多くの場合、自然キーを持たないテーブルでは、ユーザーが一意に生成された識別子を保持できると便利です。テーブルに代理主キーがある場合(そして、そのような場合は必ず期待します)、そのキーをユーザーに公開する必要がありますか、その目的で別のフィールドを使用する必要がありますか? サロゲートキーを公開しない理由の1つは、レコード間の関係を保持する操作を実行できないが、特定の種類の削除/再挿入、1つのデータベースからデータをコピーする多くの方法など、キー値を変更することです他など 代理キーを公開する主な利点は、とにかく持っているフィールドを簡単に使用できることです。 どのような状況で、代理キーをユーザーに直接公開する方がよいでしょうか?

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