問題タブ [future-proof]
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.
design-patterns - MVC のような関数型言語やプログラミング モデルは、次の大きな流行に過ぎないのでしょうか?
最近、F# などの関数型プログラミング言語について多くの良いことを耳にします。さらに [そして無関係]、MVC が多くの露出を得始めていることにも気付きました - おそらく Silverlight/WPF の導入以来です。
私は、最初に調査を行わずに時流に乗るような人ではありませんでした。実際、.NET に移行するのに少し時間がかかりました。新しいテクノロジーの早期採用に関する以前の質問の 1 つに誰かがコメントしたばかりで、立ち止まって考えさせられました。
私は WPF を学ぶ時間を見つけようと戦ってきましたが、それが道なのかどうか疑問に思い始めています。F# や MVC プログラミング モデルなどの言語は今後も続くのでしょうか?それとも次の流行に過ぎないのでしょうか? それとも、これらが C#/VB や OOP の潜在的な代替品になると本当に考えているのでしょうか?
私の開発のほとんどは、イントラネットに展開するためのリッチ Web アプリケーション、または個々のマシンに配布するための winforms ユーティリティ アプリケーションのいずれかの形で、社内アプリケーションで行われています。これまで私が選んだテクノロジは、かなり標準的でした (T-SQL/PL*SQL、C#/VB、JavaScript/AJAX、CSS)。
私が判断するのに苦労しているのは、近い将来、これらのテクノロジーのどのブレンドが私のツールボックスに最も生産的/有用になるかということですか?
database - データベース ID/自動番号の上限に対処するための戦略
Autonumber フィールド (SQL Server の「ID」など) は、データベース テーブルに一意のキーを提供するための一般的な方法です。ただし、それらは非常に一般的であるため、将来のある時点で、それらが最大値に達し始める問題に対処する予定です.
このシナリオを回避するための推奨戦略を知っている、または持っている人はいますか? 多くの回答で GUID への切り替えが提案されると思いますが、これには大量の開発が必要になることを考えると (特に、多くのシステムが統合されて価値を共有している場合)、別の方法はありますか? 新しいハードウェア/オペレーティング システム/データベースでは、整数に対してますます大きな値を単純に許可する方向に向かっていますか?
future-proof - アプリケーションを将来的に証明するためのオプションは何ですか?
まだ作成されていないアプリケーションへの将来の影響を最小限に抑えることを検討しています。サードパーティ製品を避けようとしており、オペレーティング システム固有の呼び出しも避けようとしています。アプリケーションを将来的に証明する他の方法を提案できる人はいますか? アイデアは、10 年または 20 年で大部分を書き直す必要がなく、メンテナンス (バグ修正) だけを行う必要があるということです。
design-patterns - インフラストラクチャ: ストアド プロシージャを回避するためのアプリケーションの外部としてのモデル
私の考え:
私は、コスト、スケーラビリティ、互換性など、さまざまな理由からストアド プロシージャを絶対に軽蔑しています。
コスト: 優れた MySQL サーバー 1 台のコストで、2 ~ 3 台の優れた軽量 Web アプリケーション サーバーを入手できます。
スケーラビリティ: 確かにクエリ結果をキャッシュすることはできますが、ストアド プロシージャを使用すると、キャッシュできる内容をより細かくする機会が失われます。また、アプリケーションが常に MySQL を使用することになります (ストアド プロシージャを書き直すためのお金を持っている人はいません)。 MySQL を別のものに?)
互換性: ある時点で list_foo_widgetsByUser() ストアド プロシージャがクライアント #123 のニーズに合わない可能性があります。list_foo_widgetByUser() の署名を変更するのは自殺行為です...そのため、新しい sproc cl123_list_foo_widgetByUser() を作成する必要があり、その方法は狂気または殺人 DBA につながります。
私の解決策:
アプリケーションのリポジトリからモデルを取り出し、外部リポジトリに配置します。すべてのアプリケーションには、外部リポジトリを指す models/Base サブディレクトリがあります。次に、baseFooWidget クラスをインスタンスまたはアプリケーション固有の子インスタンスとして返す GetModel("FooWidgets") のような単純なファクトリ メソッドを前に置きます。これにより、個々のアプリケーションが FooWidget のクラスを継承したり、Liquabase などのツールと組み合わせたりして、より大きな可変性の基盤を実現できます。
頭の後ろで「これは簡単すぎる」という声が聞こえます...何が欠けているのでしょうか?
参考文献: 私は、PHP Kohana フレームワークがこれらの線に沿って何かを行って、アプリケーション設計者が機能を追加して Kohana の基本ライブラリをラップできるようにすることを知っています.PHP がそれを行うことができれば、他の言語に問題があるとは思えません.
boost - boost::lock_guardとboost::mutex ::scoped_lock
どちらが好ましいですboost::lock_guard
かboost::mutex::scoped_lock
?
Boost.Threadを使用しており、利用可能になったときにC++11スレッドに移行することを望んでいます。
scoped_lock
次のC++標準の一部ですか?
どちらか一方を優先する利点はありますか?
注:私はそれscoped_lock
が単なるのtypedef
であることを知っていlock_guard
ます。
編集:私は間違っていたのでscoped_lock
はありません。のです。typedef
lock_guard
typedef
unique_lock
.net - ADO.netローカルデータレイヤーを将来のWebベースのインターフェイス(WebサービスまたはREST)に将来にわたって移行するにはどうすればよいですか?
背景:現在、データレイヤー用のADO.netデータベースを使用して.NET WinFormsアプリケーション(C#)に取り組んでいます。
質問:HTTP WebサービスまたはRESTインターフェースを介してデータ層が抽象化されるモデルに簡単に移行できるように、これをどのように開発しますか?
たとえば、ファクトリで標準のC#インターフェイスを使用して、ADO.netを使用するインターフェイスの具体的な実装を取得するのが最適でしょうか。
ありがとう
python - Pythonでクラス「オブジェクト」をサブクラス化する目的は何ですか?
すべての Python ビルトインは のサブクラスでobject
あり、多くのユーザー定義クラスも同様です。なんで?クラスの目的は何object
ですか?ただの空のクラスですよね?
dns - 将来を見据えたクライアントサーバーコード?
Webベースのクライアントサーバー製品があります。クライアントは100万人以上のユーザーで使用されることが見込まれます(有名な会社が使用する予定です)。
私たちのサーバーはクラウドにセットアップされています。設計中の主要な質問の1つは、プログラム全体を将来にわたって利用できるようにする方法です。言う:
- クラウドプロバイダーがダウンした後、自動的に別のクラウドのバックアップに移動します
- 完全に別のサーバーに移動するなど
これまで考えていたオプションは次のとおりです。
- DNS:自分たちでクラウド上でDNSネームサーバーを実行しています。
- ディレクトリサーバー-ディレクトリサーバーもクラウド上に存在します
- サーバーに将来の移動や将来のURLなどをクライアントに返してもらいます-クライアントはこれらのシナリオを処理するように特別に設計されています
これは通常の問題であるはずなので、同じための最良の解決策はどれですか?私たちの会社は非常に小さいので、技術的および経済的に最も安価なソリューション(たとえばオプション3など)を検討していますか?
誰かが同じものへのいくつかのポインタを提供できますか?
K
ajax - 製品での ajax の使用
たとえば、ブラウザ ベースのフロント エンドを備えた製品の設計を任されたとします。
営業チームはおしゃれなアプリを求めています。製品管理チームは、製品の費用対効果を高めたいと考えています (メンテナンス段階まで)。
ここで、技術チームが呼び出しを行うことができると仮定します (私は願っています :)) ユーザーに、stackoverflow/facebook のようなサイトのような「リッチな」ルック アンド フィールを提供するか、2006 時代の何かをユーザーに提供するか... この束で投入された考慮事項の..
- 製品寿命は6年程度を想定
- 製品メンテナンス チームは、将来のブラウザーに合わせてコードをリファクタリングする必要はありません。
- 製品保守チームは、ビジネス機能を強化するだけです
..そして、このような多くの関連するもの
.. ajax の使用をお勧めしますか? はいの場合、現在使用している UI (ajax フレームワーク) が次の 2 ~ 3 ブラウザー バージョンで変更なしで引き続き動作するという保証は何ですか?
編集: 私が AJAX に対して何かを持っていると思い込まないでください。私は 1999 年から DHTML に取り組んでおり、ajax と呼ばれる前から ajax に取り組んでいます :) また、仕様に合わせてコーディングされているという理由だけで 2002 年から変更する必要のないサーバー側コンポーネントにも取り組んでいます。
とは言っても、これらの気まぐれなブラウザーを満足させるためだけに、どれだけの「正常に失敗する」コードを書かなければならないかを直接経験しています。とにかく、すべての回答に感謝します。また、「フェイル グレースフル」コードの実装に戻ったと思います。
php - 未知の将来の変更と機能を持つアプリケーションをプログラムする方法は?
バックグラウンド
私はプログラミングは初めてではありませんが、クライアントとそのニーズの処理に関しては初心者です。私の現在のクライアントとの履歴は次のとおりです。私は PHP アプリケーションを継承し、2/3 が完了しました。クライアントがアプリケーションとデータベースの書き換えを必要とする (主要な) 機能を必要とするまで、100% 完成させ続けました。私は 2 週間かけて、新しいアプリケーションが新しい変更と他の必要な機能でどのように機能するかを下書きし、承認後に再びアプリケーションの構築を開始しました。私は現在、新しいビルドの前に議論されていなかった新しい機能を追加するよう求められています. また、アプリケーション全体が 300 人以上のユーザーで稼働しているため、さらに困難になっています。
質問
クライアントが最初に説明されていない機能を求めているという事実を無視してください。ビルドしたアプリケーションの機能証明を作成するにはどうすればよいですか? 完璧な世界では、クライアントはアプリケーションに必要な機能を正確に知っているため、私の仕事がずっと簡単になります。しかし、これは事実ではなく、私が話しているこれらの主要な機能は、アプリケーションが公開されているときではなく、アプリケーションのドラフト中に含まれるべきものです.
私はクライアントに、彼が要求している機能や変更が非常に重要であるため、アプリケーション全体を (再び) 書き直さなければならないことを伝えるのは好きではありません。ただし、これを書いているときに、最初からやり直さないと機能を追加できないのは私のせいではないかもしれないと思いました。しかし、これは彼が望むほとんどすべての新機能のようです。一部の機能はアプリケーション用にハードコーディングされており、新しい機能用に変更してもうまくいかないからです。
この状況での個人的な経験は素晴らしいことです。非常にイライラする可能性があるため、これに対処しているのは私だけではないと思います. ありがとう!