ソフトウェア工学

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

4
仕事と家庭の境界
私たちはすべてそこに行ったと思います: 「プラットフォームXに機能Yがあったらいいのではないか」という人の話を耳にします。(SO!で)周りを見回すと、その機能は実際には存在しませんが、おそらく多くのコンテキストで役立ちます。つまり、かなり一般的です。 あなたの心は少しさまよっています。「それはどれほど難しいでしょうか。まあ、それはおそらく単なるスニペットでしょう。そしてアドホック関数です。そしてラッパーかもしれません。」そして、ブーム、あなたはそれを知る前に、本当にきちんとしたジェネリックなFooFeatureを実装するためにあなたの自由時間の数十時間を費やしました。仕事でつまんで輝かせる時間がないかもしれない種類のコードは、少し急いで文書化されていません。 それで、今度は「これは他の人にとって役に立ちませんか?」そして、あなたはあなたのブログ、おそらくCodeProjectアカウントを持っています、そしてあなたがFooFeatureが存在するかどうか尋ねたあなたの同僚は、彼らがあなたに言う前にそれが存在していたなら、不思議なことに、そのブログエントリに遭遇するかもしれません。一方、NDA契約。漠然としていて一般的です。自宅でのコーディングを禁止するものではありませんが、会社のコードを共有することは明らかです。 しかし、これは会社コードではありません。またはそれは?それともそうでしょうか? では、普遍性を念頭に置いてオフタイムに作成したコード(単なるスニペットではありません)をどのように使用しますか?仕事から生まれたアイデアであり、それは仕事で使用される可能性が高いでしょうか?公開できますか?

11
ソース管理にコミットするときにコメントに何を入力すればよいですか?
この投稿を改善してみませんか?この質問に対する詳細な回答を提供してください。これには、引用や、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 私は孤独な開発者であり、ソース管理用のSVNサーバーを維持しています。これまでのところ、私は自分の変更をコミットする間、特定のことを行っていません。 私は以前のコミットを確認しているだけで、コメントを理解することができませんでした。 チェックインをコミットするときにコメントに何を入れますか?


2
「REST Vs GraphQL」は正しい比較ですか?
RESTとGraphQLを比較する多くのサイトで見ました。「これは正しい比較ですか?」というこの懸念(実際には私の懸念)を調査した後、私はさらに混乱しています。RESTはGraphQLに対して異なる定義を持っているので、この質問は、2つの異なる概念を一緒に比較できるのはなぜか、と私の心を混乱させます。 実際には、比較は次のようなものだと私には思えます: IDE対コンパイラ!??!またはBMW x6 Vs ISO 18541-5(道路車両) ウィキから: 残りの定義: 表現状態転送(REST)は、Webサービスの作成に使用される一連の制約を定義するソフトウェアアーキテクチャスタイルです。 GraphQl定義: GraphQLは、API用のオープンソースのデータクエリと操作言語、および既存のデータでクエリを実行するためのランタイムです。 あなたの答えで私の心を明るくしてください。ありがとう

2
Javaがメソッド参照に。ではなく::を使用するのはなぜですか?
なぜJavaでは::なくメソッド参照にJavaを使用するの.か、たとえば、なぜ System.out::println の代わりに System.out.println もちろん、単に「デザイナーが決定したため」と答えることもできます。一方、ドットはクラスメンバーにアクセスするための通常のJava構文であるため、2番目の構文を期待していました。 メソッド参照に::既存の.規則を使用する代わりに、新しい構文を導入する既知の特別な理由はありますか?
7 java  methods 

1
独自の文法用のブラウザー内IDEを作成する[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 新しい独自のプログラミング言語を使用します。文法、jsonパーサーを設計しましたが、すべてが機能しているようです。 私の言語のコードはJavaScriptに変換され、node.js(サーバー側部分)とchrome(クライアント側部分)によって解釈されます。今私はIDEとしてエースエディターを実験しています。カスタム文法のハイライトとコード補完機能があります。 今デバッグについて考えています。アタッチされたノードプロセスとブラウザーでブレークポイントを管理する必要がある可能性はありますか(IDEの「変数の監視」機能で)変数の値を取得する可能性はありますか? そして、コールスタックはどうですか?おそらく、デバッグモードのノードと通信するためのプロトコルがいくつかありますが、クライアント側のデバッグのためにブラウザでそれを行う方法は?

1
インターフェイスを動的に実装する新しいJARをプラグインするにはどうすればよいですか?
背景:自分や他の開発者が実装するインターフェースの開発に取り組んでいます。このインターフェイスにより、ユーザーは新しい機能コードをシステムに「プラグイン」して、新たに使用することができます。この新しいコードは、すでに実行中のサーバー/アプリケーションから呼び出されます。(TLDR:オンザフライでアプリケーションにプラグインをインストールする機能を開発する必要があります) これまでにインターフェースで行ったすべての作業は、内部コーディングの目的で行われており、外部に公開されることはありません。ユーザーが新しいコード実装インターフェースをプラグインできるようにするために私が考えることができる唯一の方法は、ユーザーが実装クラスを含むJARファイルをフックし、何らかの方法でそのクラスシグネチャを呼び出し用に定義することです。これは以前に行われたことのように思えますが、私はコーディングの側面に触れたことはありません。 サーバー/アプリケーションの実行時に新しいJavaコードのこのプラグインを許可するために使用できるフレームワークはありますか?私は以前にAPIを使用したことがありますが、より多くのWebサービスでは、コアインターフェイスを「実装」せずにサービスを消費している場所を明らかにします。 参考までに、メインアプリケーションにSpringを使用してJavaバックエンドを使用しています。

1
パターンを文字列に挿入するすべての可能な方法を見つける
私はしばらくの間この問題について考えていましたが、再帰的な解決策しか見つけることができませんが、それを行うための動的なプログラミング方法があると感じていますが、それを理解することはできません。これは私が知らない有名な問題ですか? Q:文字列とパターンを指定して、パターンの文字を(順番に)文字列と照合する一意の方法の数を返します。 明確化:一致を見つけるには、パターンの最初の文字を取り、文字列内で最初に一致する文字を見つけ、次にパターンの2番目の文字を取り、以前に一致した後の文字列の最初の一致文字と一致します。キャラクター。 例1(4件一致): 文字列:DABBCDDE パターン:ABD 可能な方法(太字はパターンが文字列と一致する場所です): D AB BC D DE D A B B C D DE D AB BCD D E D A B B CD D E 例2(0件一致): 文字列:ABC パターン:BCA (B、Cに一致し、文字列の最後にいる場合、前の文字に戻って一致することはできません) 再帰的なアプローチでは、パターン(pIndex)だけでなく、文字列(sIndex)の現在のインデックスを追跡するメソッドがあります。string [sIndex]がpattern [pIndex]と一致する場合は、メソッドを再度呼び出して、sIndexとpIndexを増やします。そうでない場合-sIndexを増やして、もう一度一致を見つけるようにしてください。再帰呼び出しの戻り値が加算されるため、メソッドは合計数を返します。(一致は1を追加、一致は0を追加) 基本ケース: pIndexがパターンの長さより大きい場合、0を返します。 sIndexが文字列の長さより大きい場合、1を返します(一致が見つかりました!) 他にどんな解決策がありますか?

4
応答時間が長いリクエストのパターンは?
現在、自社開発のpython「ウェブサーバー」を維持しています。この場合、一部のリクエストに対する応答の生成には、主に重い計算が原因で非常に長い時間がかかる可能性があります。これらのリクエストは、基本的に非常に長いタイムアウト(数分から数十分と考えてください)を持つ投稿です。 このアーキテクチャの1つの問題は、そのようなリクエストをキャンセルする必要がある場合があることです。たとえば、ユーザーがリクエストの設定中にミスに気付きました。現在、キャンセルは別のリクエストであり、長時間実行されているリクエストをキャンセルします-しかし、多くのギャップがあります。 現在、Webサーバーの自作の廃止を廃止し、賢明な何かに切り替えることを計画しています-たとえば、Wfastcgiを使用してIIS内で実行されているFlask。政治的な理由により、IISが設定されているため、gunicornのようなものに切り替えることはできません。 (w)fastcgiによって実行されるプロセスを強制終了する方法は誰にもわからないため、すべての開発はそれで行き詰まりました。その懸念は単にfastcgi仕様の一部ではありません。 私の考えでは、それを組み込んだものを構築する試みは間違いです。サーバーがバックグラウンドサーバー(フラスコ+セロリ?)にそのような計算集中型のタスクをオフロードし、そのためのフロントエンドポーリングをオフロードするソリューションを好みます。 残念ながら、古いソリューションは長期間使用されていたため、一部の開発者はすべてのコストで動作を維持したいと考えていました。 Webサーバーの男ではないので、このような問題の賢明な解決策がどのようなものになるか、いくつかのヒントやパターンを教えてください。

1
MITライセンスを使用して私のプログラムでApache 2.0ライセンスのコードを使用する
私のプログラムでは、Apache 2.0ライセンスに基づいてライセンスされているコード例のソースコードを使用しています。MITライセンスを使用して、そのプログラムとソースコードをGitHubで公開したいと思います。私はライセンスで以下を読みました: 変更されたファイルには、ファイルを変更したことを明記する必要があります。 しかし、コードの関連部分をソースファイルにコピーしたばかりのファイルは変更しませんでした。 これが私の質問です: Apache 2.0ライセンスのコピーをプロジェクトに追加する必要があることはわかっていますが、プログラム/ソースコードを正しく公開するには、ソースファイルに何かを追加する必要がありますか? コマンドラインプログラムなので、-licenseスイッチを追加してライセンスを表示する必要がありますか、それとも「USAGE」出力を追加する必要がありますか? MITライセンスをすべてのソースファイルに挿入する必要がありますか、それともプロジェクトにコピーするだけで十分ですか? 前もって感謝します!

3
MVC Webアプリケーションで複雑なビュー(複数の部分から構成される)を処理する方法
MVCパターンを使用してブログWebアプリケーションを作成しているとしましょう。ブログアプリケーションのメインページの一般的なレイアウトは、メイン部分にある種の投稿インデックスであり、それ以外に、タイムライン、タグナビゲーションパネル、サブスクライブパネルなど、いくつかの追加部分があります。これらのコントロールは、単一の投稿ビュー。他のビューに表示される場合があります。 私の質問は-私のビューとコントローラーでこれらのパネルを別に処理する方法です。ここには3つのアプローチがあります。 ビュー(インデックスまたは単一の投稿)のレンダリングに必要なすべての情報を含む大きなviewmodelクラスを作成します。その場合、これらのサイドパネルを部分ビューにして、その大きなビューモデルの一部を渡してレンダリングされるビューから呼び出すことができます。欠点は、コードが重複していることを意味する、さまざまなコントローラーメソッド間でコードを埋めるviewmodelを使用することです。それはかなり悪いです。 ビューレンダリングの別のレイヤーを作成します。たとえば、レンダリングの最上位のレイヤーが、HTMLのレンダリング済みの部分、または呼び出されたときにHTMLを出力する関数を受け取ります。この「結合パーシャルレイヤー」の下のレイヤーは、メインコンテンツを含め、必要な各パネルのパーシャルビューを提供します。ここの欠点-メモリ使用量。ほとんどの最新のフレームワークはHTMLを直接出力ストリームにレンダリングしますが、このアプローチでは、部分ビューが最初に文字列オブジェクトにレンダリングされ、メモリのオーバーヘッドが発生します。 ビューからコントローラーメソッドを呼び出すasp.net mvcの「RenderAction」のようなものを使用します。これはMVCアプローチを落とすため、与えられた3の最悪のソリューションだと思います。 質問は特定のフレームワークに縛られているわけではありません。そのようなことを行う一般的な方法を理解したいと思います。 更新 答えが出た後、投稿が明確でないことがわかりました。ここで合理的な更新: 下でのviewmodelの用語私は、特定のビューをレンダリングするために必要なすべてのデータを含むオブジェクトを理解しています。 3つのアプローチはすべて、独自のビューモデルを使用して部分ビューを構築することを含みます。例(C#構文を使用): class SinglePostViewModel { string Text {get;set;} string Title {get;set;} string Slug {get;set;} DateTime PublishedDate {get;set;} ... } class TagNavigationPanelViewModel { string TagText {get;set;} int PostsCount {get;set;} } class CalendarNavigationPanelViewModel { DateTime YearAndMonth {get;set;} int PostsCount {get;set;} } 私の質問は、これらの部分的なビューをうまく組み合わせる方法です。

3
関数ではなくマクロが必要になるのはいつですか?
私はClojureを初めて使用し、Macrosを初めて使用します。Lispの経験はありません。私はフォームのような自分のスイッチケースを作成し続け、これで終わりました: (defmacro switch-case [v cases default] (if (cases v) (cases v) default )) そして、関数を作ってみて、これで終わりました: (defn fn-switch-case [v cases default] (if (cases v) (cases v) default )) どちらも (switch-case 5 {6 "six" 7 "seven"} "not there") そして (fn-switch-case 5 {6 "six" 7 "seven"} "not there") うまくいきます。 マクロが必要で、関数が機能しないシナリオは何ですか?関数やマクロの実装に欠点はありますか?
7 clojure  macros 

4
jQueryはJavaScriptの議論を殺しましたか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 Stack Overflowには、JQueryのトラブルシューティング/使用法に関する質問としてタグ付けされた100,000を超える質問があります。これを、JavaScriptの問題のタグが付けられたスタックオーバーフローに関する124,000の質問と比較してください。私たちは、JQueryに起因する、Stack OverflowでのJavaScript関連の質問のほぼ半分に非常に近いです(SOで質問を受ける他のいくつかのJSフレームワークのマージンはプラスまたはマイナス)。 私が得ていることは、jQueryは言語ではなく、JavaScriptが存在するすべてのシナリオに適用する必要があるすべてのフレームワークではなく、すぐにキャッチされます(そしてすぐに食)Stack Overflowなどのサイトでのディスカッション/問い合わせのソースとしてのJavaScript。 jQueryはJavaScriptスターを殺していますか?次世代のWeb開発者は、DOM操作の手段としてのJavaScriptのパワー、シンプルさ、および使用について、しっかりと把握していませんか?これは、物事の自然な進化と、コーダーのエゴに典型的な私が提示している視点(つまり、これはアセンブリプログラマーが.NET / Java / Web群衆をどのように見るか)ですか、それとも本当にこれが終わりの始まりですか?真のJavaScript開発者ですか?

9
職場でクリーンなコーディングを促進するにはどうすればよいですか?
私は社内のアプリケーションで多くのレガシーJavaおよびRPGコードを使用しています。ご想像のとおり、コードの多くはさまざまなスタイルで記述されており、名前が不十分な変数、一貫性のない形式、および矛盾するコメント(存在する場合)のために、多くの場合読みにくくなっています。 また、十分な量のコードは堅牢ではありません。多くの場合、コードは熟練したプログラマーによって迅速に本番環境にプッシュされますが、新しいプログラマーによるコードは、IMOが不十分であるという「コードレビュー」によって妨げられます。(それらは通常、コードの深刻な批評よりも「うまくいく、大丈夫だ」という形をとります。)私たちはかなりの量の生産上の問題を抱えています。私は、元のデザインとテスト。 私はこの会社で約4か月働いており、私のコーディングスタイルについては2、3回褒められています。私のマネージャーはまた、標準よりもクリーンなコーディングのファンです。より良いスタイルとより防御的なコーディングを推進しようとするのは私の場所ですか、それとも私ができる限り最善の方法でコーディングすべきでしょうか?デバッグと変更時間を短縮できますか?

5
これまでに作業した中で最も優れたテスターに​​は、どのような特徴がありますか?
テスターおよびブロガーのLanette Creamerが最近この質問をTwitterに投稿しました。 あなたがテスターと協力するプロのソフトウェア開発者であれば、あなたが知っている最高のテスターを考えてください。彼らに共通する特徴は何ですか? ここでは素晴らしい質問になると思いました。 私の考えは: たとえ厄介な質問をすることになっても、要件から曖昧さを取り除きたいと考えています。 彼らは、それがどのように文書化されているかだけでなく、ソフトウェアが「機能するはず」である方法を見ることによって新しい機能を作成します。 彼らは正直さと誠実さを示し、周囲の人々にそれを奨励しますが要求はしません。つまり、動作をモデル化します。 あなたが一緒に働いた中で最高のテスターの特徴は何ですか?
7 team  testers 

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