問題タブ [code-reuse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ユーザーごとに1回だけメッセージを表示するdjangoサイト全体のアナウンス用の再利用可能なアプリケーション
djangoアプリケーションで登録ユーザーにさまざまなメッセージを1回だけ表示したい。私はdjango-announcements を見つけましたが、それは私が望むことをしているように見えました-しかし、テストで、ユーザーがログアウトすると消えるセッション変数を使用してメッセージを既読としてマークすることがわかりました。これは、ユーザーがログイン時にメッセージを閉じ、ログアウトしてから再度ログインすると、メッセージが再度表示されることを意味します。
車輪の再発明をしなくても、ここで使用できるアプリケーションを誰かが知っているだろうかと思いました。
php - クロスランゲージ開発問題
私は、データベース (My SQL)、Web サイト (PHP)、およびカスタムの高性能サーバー アプリケーション (C++) を含むプロジェクトに取り組んでいます。C++ アプリケーション (およびそれに付随するクライアント アプリケーション) は、プロジェクトの主要な部分を構成し、長期データを格納するデータベースを備えています。ウェブサイトは主に、さまざまな統計と管理を表示するためのものです。
1) PHP スクリプトと C++ アプリケーションが何らかの方法で通信できるようにしたい。データベースは永続データにのみ使用され、さらに C++ アプリケーションはいくつかのものをキャッシュする可能性があるため、場合によってはデータをリロードするように指示する必要がある. それらが異なるマシン上にある可能性が高く、OS が異なる可能性さえあります。TCP がいくつかの単純なコマンド - 応答プロトコルで最適なオプションである可能性があるという考えを検討してきましたか?
2) 共通のデータベース インターフェイス コードを 1 回記述し、それを PHP Web サイトと C++ アプリケーションの両方から使用できるようにするための最良の方法は何ですか?
python - django-notificationをデフォルトのオプトアウトではなくオプトインに設定します
django-notificationを使用して、Webアプリケーションで生成した特定のアラートをユーザーがオプトアウトできるようにしています。
デフォルトでは、新しい通知タイプを作成すると、ユーザー通知インターフェイスで無効ではなく有効になります(チェック済み)
デフォルトのオプトアウトではなく、いくつかのアラートをオプトインにしたいと思います。私はドキュメントを調べましたが、これを行う方法を見つけることができませんでしたが、他の誰かがこれを達成することができましたか?
c++ - C++ 内部コードの再利用: すべてをコンパイルするか、ライブラリ/動的ライブラリを共有しますか?
一般的な質問:
アンマネージ C++ の場合、内部コード共有に適しているのはどれですか?
- 実際のソース コードを共有してコードを再利用しますか? また
- ライブラリ/動的ライブラリ (+ すべてのヘッダー ファイル) を共有してコードを再利用する
コードの重複 (コピーアンドペースト症候群) やコードの肥大化を減らすための戦略は何ですか?
具体例:
私の組織でコードを共有する方法は次のとおりです。
実際のソース コードを共有することで、コードを再利用します。
プロジェクトは実際にはクロスプラットフォームである必要がありますが、VS2008 を使用して Windows で開発しています。多くのプロジェクト (.vcproj) がリポジトリにコミットされています。独自のリポジトリを持つものもあれば、リポジトリの一部になるものもあります。成果物ソリューション (.sln) (たとえば、顧客に提供するもの) ごとに、リポジトリから必要なすべてのプロジェクト (.vcproj) を svn:externals して「最終」製品を組み立てます。
これは問題なく動作しますが、最終的に各ソリューションのコード サイズが非常に大きくなる可能性があることを非常に心配しています (現在、合計コード サイズは約 75K SLOC です)。
また、注目すべきことの 1 つは、推移的な依存関係をすべて防止することです。つまり、実際のソリューション (.sln) ではない各プロジェクト (.vcproj) は、依存している場合でも、他のプロジェクトを svn:externals することはできません。これは、同じライブラリ (つまり Boost) またはプロジェクト (.vcproj) に依存する可能性のある 2 つのプロジェクト (.vcproj) を持つ可能性があるためです。したがって、両方のプロジェクトを svn:externals で 1 つのソリューションにすると、svn:externals はそれを 2 回実行します。 . そのため、各プロジェクトのすべての依存関係を慎重に文書化します。ソリューション (.sln) を作成する担当者は、すべての依存関係 (推移的を含む) がソリューションの一部として svn:externals であることを確認します。
代わりに.lib 、 .dll を使用してコードを再利用すると、明らかに各ソリューションのコード サイズが縮小され、該当する場合は上記の推移的な依存関係が排除されます (例外は、たとえば、使用するサード パーティのライブラリ/フレームワークです)。 dll (Intel TBB やデフォルトの Qt など)
補遺: (必要に応じて読んでください)
ソース コードを共有するもう 1 つの動機は、 Dr. GUIによって最もよく要約されている可能性があります。
その上、C++ で簡単にできるのは、再利用可能なバイナリ コンポーネントを作成することではありません。むしろ、C++ はソース コードの再利用を比較的容易にします。ほとんどの主要な C++ ライブラリは、コンパイルされた形式ではなく、ソース形式で出荷されることに注意してください。オブジェクトから正しく継承するために、そのソースを確認することが非常に頻繁に必要になります。また、元のライブラリを再利用するときに、元のライブラリの実装の詳細に依存するのは非常に簡単です (多くの場合必要になります)。それだけでは不十分であるかのように、元のソースを変更してライブラリのプライベート ビルドを実行したくなる (または必要になる) ことがよくあります。(MFC のプライベート ビルドはいくつありますか? 世界は決して知りません . . .)
おそらくこれが、Intel Math Kernel ライブラリのようなライブラリを見ると、"lib" フォルダに、Visual Studio バージョンごとに "vc7"、"vc8"、"vc9" がある理由です。怖いもの。
または、次の主張はどうでしょうか。
C++ は、プラグインに関しては対応が難しいことで有名です。C++ は、プラットフォーム固有およびコンパイラ固有です。C++ 標準ではアプリケーション バイナリ インターフェイス (ABI) が指定されていません。つまり、異なるコンパイラの C++ ライブラリや、同じコンパイラの異なるバージョンであっても互換性がありません。それに加えて、C++ には動的ローディングの概念がなく、各プラットフォームが独自のソリューション (他のプラットフォームと互換性がない) を提供しており、全体像がわかります。
上記の主張についてどう思いますか。Java や .NET などは、この種の問題に直面していますか? たとえば、Netbeans から JAR ファイルを生成する場合、それを IntelliJ にインポートすると、両方に互換性のある JRE/JDK があることが保証されていれば機能しますか?
c# - まったく同じコードの catch ブロックをマージしますか?
コードを再利用する理由から、次のコードの catch ブロックをマージしたいと考えています。
このようなものに:
それはどういうわけか可能ですか?
ありがとう。
shared-libraries - コード アセット ライブラリの構築
私は、私の組織で内部的に開発されたすべてのソフトウェア用にある種のライブラリをセットアップすることを考えていました。私は、善良な SO の人々がこのトピックについて持つかもしれないアイデアを集めたいと思います。
再利用可能なコードを書く利点を開発者に浸透させることに何の意味があるのか 、次のプロジェクトで開発者が最初に行うことは、再利用できるコードがすでに存在するという知識が不足しているためにファイル->新規である場合です。
追加の利点として、このようなライブラリがあるだけで、開発者はコードを書くときに再利用性についてもっと考えるようになると思います
このライブラリをできるだけシンプルに保ちたいと思います。おそらく私の要件は次の 2 つだけです。
- 検索機能
- 多くの種類のコンポーネントに使用可能: アセンブリ、Web サービスなど
各アセット/コンポーネントに必要な基本情報は次のとおりです。
- 名前とバージョン
- 説明/目的
- 依存関係
もっと情報を記録してくれませんか?
ウィキ、フォーラムなど、これに最適なプラットフォームは何ですか?
このようなソフトウェア ライブラリの成功と失敗の違いは何ですか?
すべてのアイデアは大歓迎です。
ありがとう
編集:
投稿後にこれらの同様の質問を見つけました:
android - Android: カスタム時計ウィジェット サービスの回避策?
ホーム画面の時計ウィジェットの開発に興味があり、ホーム画面ウィジェットのチュートリアルService
を読んで、車輪を再発明するのではなく、現在の時刻を更新するために参照できる既存のものがあるかどうか疑問に思いましたか?
Android フォンにRetro Clockアプリケーションをダウンロードしたところ、クリックすると目覚まし時計の設定がポップアップ表示されますが、デフォルトの Googleアナログ時計ウィジェットでは、クリックしても何も起こりません。
Retro Clockウィジェットが Alarm Clock サービスを実装しているためですか? もしそうなら、どうすればそのサービスを参照できますか? それとも、これはすべて間違っていて誤解されていますか?
どんな助けでも大歓迎です。
編集:
時計を更新するサービスを実装すると、バッテリーの寿命が大幅に消耗するとService
思います。
.net - クラスファイルをdllに保存し、asp.netの複数のWebサイトにdllを使用する
VS2005 でクラス ファイルを作成し、それを自分のコンピューター/運用サーバーの他の Web サイトで使用できるようにしたいと考えています。この dll を作成し、開発中および運用サーバー上で参照できる共通の場所に保存するにはどうすればよいですか?
jsp - ページ内で HTML/JSP を再利用するにはどうすればよいですか?
私は JSP の初心者であり、大量のカット アンド ペースト コードを削減しようとしています。
プロジェクトの各ページには、JSP、Struts タグ、JSTL タグ、および HTML が混在する約 25 行があり、ページのさまざまなポイントでカット アンド ペーストされています。これらの約 25 行の再利用されたコードは、ページ間 (および約 250 ページ) でまったく似ていませんが、各ページ内ではまったく同じです。最終的には、この (ビジネス ロジック) コードはビューから移動する必要がありますが、そうすると、現時点で私のスケジュールが許すよりも大きなプロジェクトになるため、Mixed Tags+JSP を再利用する簡単な方法があるかどうか疑問に思っています。ページ内で一時的な修正として、時間の許す限りコードを段階的にリファクタリングできるようにします。
わかりやすくするために、新しいファイル (/local からページ スコープ) を作成せずにコードをカプセル化する方法を探しています。つまり、呼び出し元と同じページで定義する必要があります。
タイルでこれを行うことができると示唆する人もいます。その場合は、その方法を教えてください。
python - 複数の一般的なユーザーインターフェイスを処理するにはどうすればよいですか?
私は2つの異なるプラットフォーム、つまり通常のデスクトップLinuxとMaemo 4で実行されるPythonアプリケーションに取り組んでいます。両方のプラットフォームでPyGTKを使用していますが、Maemoには、見栄えを良くするための小さな調整がたくさんあり、次のように実装されています。
UIをMaemo4で見栄えよく動作させるために必要な、これらのifステートメントは約15個あります。
これはずっと管理しやすいものでした。問題は、しばらく前に新しいバージョンのMaemo(5、別名fremantle)がリリースされ、Maemo4と比較していくつかの大きな違いがあることです。 3つのプラットフォームすべてが同じコードベースでうまく機能するようにします。これは、面倒になるためです。また、プラットフォームごとに元のGUIコードのコピーを作成して、特定のプラットフォーム用に変更するだけでは不十分です(できるだけ多くのコードを再利用したいと思います)。
では、同じコアUIコードに基づくプラットフォームごとにわずかに異なるUIを使用する方法は何ですか?これはPythonやMaemo固有の質問ではないと思います。これがどのように行われるかを知りたいだけです。