ソフトウェア工学

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


6
ロギングのルールとアドバイス?
私の組織では、ロギングに関するいくつかのルール/ギルドラインをまとめました。これについて、追加またはコメントできるかどうかを知りたいと思います。 私たちはJavaを使用していますが、一般的にlogginについてコメントすることができます-ルールとアドバイス 正しいログレベルを使用する エラー:何かが非常に間違っているため、すぐに修正する必要があります 警告:プロセスは修正せずに続行できます。アプリケーションはこのレベルを許容する必要がありますが、警告は常に調査する必要があります。 情報:重要なプロセスが終了したという情報 デバッグ。開発時にのみ使用されます 何をログに記録しているかを確認してください。 ロギングがアプリケーションの動作に影響を与えないようにします ロギングの機能は、ログにメッセージを書き込むことです。 ログメッセージは、説明的で、明確で、短く、簡潔でなければなりません。 トラブルシューティングの際にナンセンスなメッセージはあまり使用されません。 log4jに適切なプロパティを配置する 適切なメソッドとクラスが自動的に記述されることを入れてください。 例: Datedfile -web log4j.rootLogger=ERROR, DATEDFILE log4j.logger.org.springframework=INFO log4j.logger.waffle=ERROR log4j.logger.se.prv=INFO log4j.logger.se.prv.common.mvc=INFO log4j.logger.se.prv.omklassning=DEBUG log4j.appender.DATEDFILE=biz.minaret.log4j.DatedFileAppender log4j.appender.DATEDFILE.layout=org.apache.log4j.PatternLayout log4j.appender.DATEDFILE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%C{1}.%M] - %m%n log4j.appender.DATEDFILE.Prefix=omklassning. log4j.appender.DATEDFILE.Suffix=.log log4j.appender.DATEDFILE.Directory=//localhost/WebSphereLog/omklassning/ ログ値。 アプリケーションから値を記録してください。 ログプレフィックス。 アプリケーションのどの部分からロギングが書き込まれるかを、できればプロジェクトで合意された接頭辞などを使用して記述してください。 PANDORA_DB テキストの量。 ロギングテキストが多くなりすぎないように注意してください。アプリのパフォーマンスに影響を与える可能性があります。 ロギング形式: -log4jで使用するいくつかのバリアントとメソッドがありますが、例外をログに記録する場合は、次の形式を統一して使用したいと思います。 logger.error("PANDORA_DB2: Fel vid hämtning av frist i …
13 java  logging 

5
サーバーにMercurialをインストールし、hg pullを展開することをお勧めしますか?
私はこの1か月間に新しい仕事に着手しましたが、コードのソース管理がないようです。彼らは、ホスティングプロバイダーがバックアップを使用していることに依存しています。 少し話した後、私は間違いなくソース管理を使うべきだと上司に確信させ、それについて短いセミナーを行った後、チーム全体が参加しています。彼らはMercurialが大好きでした。 だから今、これが私たちの仕事のやり方です: º----------BitBucket º---------/ º--------/ 私自身とhg pullBitBucketの他の3人の開発者が変更を加えてから、BitBucketに変更hg pushを加えます。 展開のために、誰かが最新のファイルを実稼働サーバーにFTPで送信する必要があります。 サーバーにMercurialをインストールし、hg clone(その後hg pull)を使用して実稼働時にバージョンを最新に保つことを考えていました。 º---push->-----BitBucket----<-pull-----º (production server) º---push->----/ º---push->---/ これはいいアイデアですか?目に見えない潜在的な落とし穴はありますか?ここで誰かが似たようなことをしましたか?大規模なPHPフレームワークアプリケーションをどのようにデプロイしますか(Moodleを使用しています)?

1
AtomPubをいつ使用する必要がありますか?
私はRESTful Webサービスの設計に関する研究を行ってきましたが、重要な決定点と思われるものに到達したため、アドバイスを得るためにコミュニティに提供すると思いました。 RESTfulアーキテクチャの原則に沿って、発見可能なAPIを提示したいので、さまざまなHTTP動詞を可能な限り完全にサポートします。私の難しさは、これらのリソースの表現の選択にあります。ご覧のとおり、検索結果の表示方法や他のリソースへのリンクの提供方法を​​カバーする独自のAPIを思い付くのは簡単ですが、これは私のアプリケーションに固有のものです。 Atom Publishing Protocol(RFC 5023)、およびODataがその使用を促進する方法について読んだことがありますが、(現在の)かなり単純なAPIに対して抽象化のレベルを追加するようです。 だから私の質問は、開発者が表現の選択としてAtomPubを選択する必要があるのはいつですか?そうでない場合、現在推奨されているアプローチは何ですか?

7
設計:親クラスへのコールバック
子を持つオブジェクトをモデリングするとき、親クラスのメンバーとして、構成を介して子を含めるのが一般的です。ただし、子が親に何かを伝える必要がある場合もありますが、親の関数を呼び出す必要があります。C ++を使用してこれをどのように達成できますか?いくつかのオプションは次のとおりです。 親クラスをグローバルにします。したがって、子オブジェクトは親オブジェクトのメンバー関数を呼び出すことができます。 すべての子オブジェクトに、親オブジェクトをポインターまたは参照として注入します。子が親オブジェクトに何かを伝える必要がある場合、使用できるメンバー変数があるため、子は常にそうすることができます。 これを行う他の方法は何ですか?この種の一般的なデザインパターンや名前はありますか? 他のオブジェクト指向言語では詳細が異なるため、C ++のアイデアとソリューションに興味があることに注意してください。たとえば、上記のポイント2では「ポインターまたは参照」に言及しており、両方ともC ++でのみ可能です。C ++には他の言語にはない言語機能があるため、問題の解決策を実装すると、これらの言語機能が組み込まれる可能性があり、他の言語で考えられるソリューションとは異なるソリューションになります。

8
ビッグエンディアンとリトルエンディアンの違いを覚える実用的なトリックはありますか?
ビッグエンディアンとリトルエンディアンの問題で毎日仕事をしているわけではないので、どの問題が何であるかを覚えるのは非常に困難です。 最近、私は2つの違いを尋ねるインタビューを受けました。私は「推測」することに決めたのを覚えていなかったので(結局50%の確率)、失敗しました。 それで、ビッグエンディアンとリトルエンディアンの違いを思い出すための広く知られた実用的なトリックはありますか?
13 endianness 

6
人間が読める最も単純な構成ファイル形式は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 現在の構成ファイルは次のとおりです。 mainwindow.title = 'test' mainwindow.position.x = 100 mainwindow.position.y = 200 mainwindow.button.label = 'apply' mainwindow.button.size.x = 100 mainwindow.button.size.y = 30 logger.datarate = 100 logger.enable = True logger.filename = './test.log' これは、Pythonを使用してネストされた辞書に読み込まれます。 { 'mainwindow':{ 'button':{ 'label': {'value':'apply'}, ... }, 'logger':{ datarate: {'value': 100}, enable: {'value': True}, filename: {'value': './test.log'} }, …

8
他の関数のみを呼び出す関数。これは良い習慣ですか?
現在、多くの異なるセクション(すべて異なる書式設定が必要)を含む一連のレポートに取り組んでおり、コードを構造化する最適な方法を見つけようとしています。過去に行った同様のレポートには、レポートのすべてのデータ操作と書式設定を行う非常に大きな(200行以上の)関数があり、ワークフローは次のようになります。 DataTable reportTable = new DataTable(); void RunReport() { reportTable = DataClass.getReportData(); largeReportProcessingFunction(); outputReportToUser(); } これらの大きな機能を小さなチャンクに分割できるようにしたいのですが、再利用できない機能が何十個もあり、同様の機能を「ここですべて実行」するだけで済むのではないかと心配しています。次のように、これらすべての小さな関数を呼び出します。 void largeReportProcessingFunction() { processSection1HeaderData(); calculateSection1HeaderAverages(); formatSection1HeaderDisplay(); processSection1SummaryTableData(); calculateSection1SummaryTableTotalRow(); formatSection1SummaryTableDisplay(); processSection1FooterData(); getSection1FooterSummaryTotals(); formatSection1FooterDisplay(); processSection2HeaderData(); calculateSection1HeaderAverages(); formatSection1HeaderDisplay(); calculateSection1HeaderAverages(); ... } または、さらに一歩進んだ場合: void largeReportProcessingFunction() { callAllSection1Functions(); callAllSection2Functions(); callAllSection3Functions(); ... } これは本当に良い解決策ですか?組織的な観点から私はそれがそうであると思います(すなわち、すべてはそうでなければそうであるかもしれないよりもはるかに組織化されます)が、コードの読みやすさに関して私は確信していません(潜在的に他の関数を呼び出すだけの関数の大きなチェーン)。 考え?

5
ORMを使用せず、ストアドプロシージャを好む場合
PetaPoco micro-ORMを使用しています。ORMツールを使用してデータベースを操作するのは確かに非常に簡単で安全ですが、私が嫌いなのは余分なコードだけです。以前はほとんどのコードをデータベース自体に配置し、ストアドプロシージャ、トリガーなど、RDBMSのすべての機能を使用していました。 ストアドプロシージャ/トリガーでORMを使用しない場合、またはその逆の場合を知りたいです。

11
他の言語に変換するために使用できるカスタマイズ可能なプログラミング言語はありますか?
独自の構文構成を設定でき、コードを選択した言語に変換するプログラミング言語はありますか? たとえば、「Pythonのインデックス付きブロック」などの特定の構成を選択し、べき乗などのために[a,b,c]配列を初期化します^。スクリプトは、選択した言語の同等の言語に変換します。

2
PHP変数の前にドル記号を付ける必要があるのはなぜですか?
すべてのPHP変数の前にドル記号(例:)を付ける必要があることを理解しています$someValue = 1が、これはなぜですか?なぜこのデザインの選択が行われたのですか? 私が尋ねる理由は、PHP変数がドル記号で始まる必要があると言ったときにガールフレンドがなぜ尋ねたのか、そしてなぜこの構文上の選択が行われたのかわからなかったことに気付きました。 何か案は?
13 php  syntax 

3
Visual Studioでデバッグ/公開する前に、プロジェクトをクリーン/リビルドする必要がありますか?
これはおそらく愚かな質問ですが、Visual Studioプロジェクトをデバッグまたは公開する前にクリーン/リビルドする必要がありますか? 他の開発者がいつもそれをやっているのを見て、ある時点で考えずにそれを始めました。常にクリーン、待機、再構築、待機、公開を行う習慣があります。 私はいつもそれをやったわけではないことを知っています。...エラーのデバッグに多くの時間を費やした後、それを始めたと思います。私もこの問題を何度も経験しているので、それが一度きりの問題ではないことはわかっていますが、常にプロジェクトのクリーニング/再構築を行うのは時間の無駄です。

4
バックスラッシュ「\」エスケープ文字は実際に何をエスケープしますか?
バックスラッシュは実際に何を逃れますか? エスケープ文字として使用されます。しかし、私はいつも何が逃げているのか、何が逃げているのかと思います。 「\ n」は新しい行を指定することを知っています。しかし、エスケープはどこに来るのでしょうか?なぜそれと呼ばれるのですか?


4
エラーコードをどのように割り当てますか?
中規模のプロジェクトを開発する際に、エラーコードを特定、作成、および維持する方法を教えてください。 私の人生では、そうするためのシンプルでクリーンな方法を考えることはできません。私のアイデアのいくつかはクラス名とメソッド名を整数文字列に変換しますが、それはメソッド名とクラス名が変更される可能性があるという事実の上にユーザーに表示するのに長い道のりです(うまくいけない!)その他は、増分ログシステムを使用しているだけです(つまり、新しいエラーメッセージを作成するたびに、最後のエラーメッセージIDに1を追加するだけです)。しかし、それはまったく組織化されていません。 具体的には、次のようなエラーコードについて説明します。 Error 401 Unauthorized.

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