ソフトウェア工学

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


3
JavaScript Asynch-Loaderの選択[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 私はさまざまな非同期リソースローダーを調べてきましたが、どれを使用するのかまだわかりません。私が作業している場所には、クラスモジュールが異なるバージョンのjQuery(など)を使用している可能性がある、さまざまなグループの取り組みがあります。そのため、ネストされた依存関係も異なる場合があります。私はこれを制御できないため、同じライブラリの別のバージョンを使用する可能性があるリソースを動的にロードする必要があります。 そのため、ここに私の要件があります: JavaScriptおよびCSSリソースファイルを非同期でロードします。 バージョン間の依存関係の順序とネストされた依存関係を管理します。 リソースが既にロードされているかどうかを検出します。 クロスドメインローディングを許可する必要があります(CDN) (オプション)リソースのアンロードを許可します。 私は見てきました: カール RequireJS JavaScriptMVC LABjs バージョンを適切な名前空間の変数にロードし、配列を使用して既にロードされているものを追跡することで、これらの要件を自分で偽造できるかもしれませんが、(うまくいけば)誰かがすでにこれを発明しています。 だから私の質問は: どれを使いますか?なぜ? 私の要件を完全に満たしている人は他にいますか? 雄弁で最も扱いやすいのはどれですか。なぜ? 更新: 興味のある方のために、私は上記のAMDライブラリ(すべて)をすべて試しました。結局、私はRequireJSを使いました。全体的にすっきりしていて簡単です...そして、私はそれを使用してうれしいです。

3
オープンソースプロジェクトリリースでデータベーススキーマの変更を管理する方法
いくつかの幼稚園から高校まで、一部の大学で使用されているオープンソースのPHP / MySQL Webアプリケーションを管理しています。私はプロジェクトの唯一の開発者でもあります。以前は、雇用主がホストするアプリケーションのソースダウンロードに過ぎませんでしたが、昨年、ドキュメント、番号付きリリース、公開変更ログなどを含む「本物の」オープンソースプロジェクトにするために取り組んできました。 アップグレードプロセスの改善を目指しています。特にITの専門家が不足している学校にとって、痛みを伴う可能性のある分野の1つは、リリース間でのデータベーススキーマの変更です。それらは頻繁に発生したり、大幅な変更になる傾向はありませんが、プロセスに関する提案をいただければ幸いです。 現在、データベースを新規インストールでセットアップするためのベースSQLインストールスクリプトを維持しています。これには、現在のリリースの完全なスキーマが含まれます。新規インストールの場合、これ以上のアクションは必要ありません。リリース間で発生する変更はupgrade-$releasever.sqlスクリプトに保存されます。スキップされたリリースについては、すべてのアップグレードスクリプトを段階的に実行する必要があります。 ユーザーの多くはシェルアクセスなしでホストを操作するため、シェルスクリプトは適していません。他の優先事項により、複雑なPHPブラウザーベースのインストーラー/アップグレードスクリプトが実現する可能性は低いです。ただし、アップグレードを簡素化するために、ブラウザーベースのPHPスクリプトを使用して何かを実行したいと思います。それへのアプローチ方法に関する提案?

4
GAEは、何百万ものアクティブユーザーが使用するアプリをホストできるインフラストラクチャですか?
下記のGAEの制限について知りたいのですが、GAEでそのアプリをホストすることで、Facebookなどの優れたソーシャルアプリを構築することもできますか? 言い換えれば、GAEは6億人のアクティブユーザーが使用するアプリをホストできるインフラストラクチャですか? 制限事項:いくつかのフォーラム/ブログから出てきました(不足しているものがあれば、リストに追加してください)。 HTTPリクエスト/レスポンス 最大リクエストサイズ:32 MB 最大応答サイズ:32 MB すべてのリクエストは30秒以内に応答する必要があります。そうでない場合、GAEはDeadlineExceededExceptionをスローします 各cronジョブは10分以内に実行する必要があります cronジョブはマップ削減を利用できません 別のサイトへのすべてのGETまたはPOSTは、5秒後に中止されます。最大10秒まで待機するように設定できます。(TwitterやFacebookと何度も連携するには中間サーバーが必要です) クライアントはFTPを介してGAEに接続できません(HTTPおよびHTTPSのみ)。 カスタムドメインのhttpsはありません。your-app-id.appspot.comドメインの場合のみ。 ユーザーの流入が発生すると、「割り当て超過」エラーが発生します データベース ローカルの開発におけるデータベースの動作は、実際のサーバーの場合と同じではありません。 GQL。他には何もありません。 クエリで1000件を超えるレコードを取得することはできません(クライアントに「ワンクリックゴーオフラインナウ」ボタンを許可したい場合は真剣に考えます)。 操作を実行するために大量のレコードへの線形アクセスが必要な場合は、運が悪い(Googleのシステムは大規模にクラスター化されている) Memcache値の最大サイズは1 MBです。 単純なテキスト検索はできません 2つのテーブルを結合することはできません。 遅い(継承を使用してテーブルを分離する方法について読んで、テーブルを検索し、キーを取得してから、親を取得して、逆シリアル化のパフォーマンスを回避する必要があります) 「インデックスが多すぎます」ランタイム例外 エンティティは、インデックス内に最大5000個のプロパティ値を持つことができます *という形式のキー名(2つのアンダースコアで開始および終了)は予約されているため、アプリケーションで使用しないでください。 キー名は500バイトに制限されています(UTF-8でエンコードされていると思います)。 言語 pythonまたはjavaまたはGo(またはGroovy、ScalaなどのJVMを使用する言語) サーバーの問題 静的IPなし(サードパーティAPIの呼び出しでスロットルと割り当ての問題が発生する可能性があります) 各アプリケーションは3000ファイルに制限されています Webアプリを実行するOSまたはハードウェアの制御なし

2
コードをフランチャイズ化する際に注意すべき問題は何ですか?
私はサイトを使用してWebサービスを提供していますが、最近、そのサービスを別の会社にフランチャイズすることの提案を受けました。 問題は、私のコードをすべてサーバーで実行したいときに発生します。私はそれらの理由を理解していますが、私のPHPコードのコアが隠されたままで変わらないように対策を講じたいです。私のコードを別のビッダーに転売したり、IPを使用したりしないように対策を講じたいです。 いくつかの調査の結果、PHP暗号化、難読化、データフィンガープリントなどのいくつかのソリューションを思いつきました。 私が求めているのは男らしいです: コードを提供する際に注意すべきことは何ですか? 自分のコードを理解して他の人に売るのを防ぐにはどうすればよいですか?
9 php  sales 

6
同僚に新しいトピックを紹介する
単体テスト、依存関係の注入、制御の反転などのトピックを同僚に紹介しようとしています。私はミニ講義やデモンストレーションを行い、昼食時にこれらのトピックを提案して学びました。レセプションは一般的に好意的であり、人々はそのようなトピックに価値を見ています。 彼らはこれらのトピックに惹かれているように見えますが、採用は非常に低いです。私はそれについて彼らに話すとき、答えは一般的に次のようなものです: 次回はやってみます。私はこのプロジェクトを戸外に出したいだけです。 彼らが見たもののほとんどは講義型のデモンストレーションであり、実際に体験したことがないためだと思います。それらを微調整するために何ができますか?「宿題」のように思われ、悪い印象を与える可能性があるので、不要な場合は強制的にコードを記述させたくありません。 私たちのプロジェクトは一般的に実験に時間を費やすことはないため、人々は新しいテクノロジーに敬遠する傾向があります。これは、開発者が開発段階で新しいものを組み込もうとする余地を残しません。 これらのトピックを実際に体験できる楽しいまたは興味深い演習(ソロまたはチーム)はありますか?私は、彼らが1日の1時間をきちんとした何かに取り組むようにスケジュールするか、自分の時間で調査できるように十分な関心をピークにすることができるように、十分な関心がピークになる何かを見つけたいと思っています。

3
SVNのバージョン管理戦略を考え出す
24時間体制で、会社のバージョン管理の戦略を考えてみます。現在はSVNを使用していますが、構造はありません-基本的にトランクしかなく、それにコミットするだけです。最近、開発マネージャーが「タグ」として機能する2番目のリポジトリーを開始しましたが、同じリポジトリーの一部ではなく、完全に別のリポジトリーであるため、「トランク」と手動でマージする必要があります。実際には、「Dev」と呼ばれるフォルダーが1つだけあります(実際には「Dev」フォルダーは日付によって異なりますが、「Dev」だけがメインのフォルダーです)。他のすべてのプロジェクト。プロジェクトごとに構成されているわけではなく、ブランチ/タグ/トランクなどの概念はありません。最初に設定した人(長い間、もちろん)SVNをセットアップする方法をまったく知らないようで、それ以来、何かを壊すことを恐れて適切に行う方法を学ぶことに誰も悩まされていません。CIは使用していません(残念ながら自動テストも行っていません)。 まず、プロジェクトごとに分離する必要がありますか?たとえば、2つのASP.NET Webサイト(Webアプリケーション、Webサイトではない)、Webサービス、すべてのテーブルスクリプトとストアドプロシージャの展開フォルダー、外部プロジェクト用の2つのコマンドラインクライアントWebサイトと、共通のビジネスオブジェクトなどを含む共有フォルダー。これらはそれぞれブランチ/タグ/トランクの設定を備えた独自のプロジェクトであるか、または次のようである必要があります。 dev/ branches/ tags/ trunk/ Site1/ Site2/ WebService/ SharedCode/ すべてのブランチがあり、すべてにDevフォルダー全体のコピーがありますか?共有コードライブラリと少なくとも1つ(通常は両方)のWebサイトにも変更を加える必要がある状況がよくあるため、このアプローチは飲み込みやすいかもしれません。 次に、開発サーバーとライブサーバーへの定期的なリリース(用語では "プッシュ")を行います。私がこれを処理する最良の方法を読んだことから、すべての開発はtrunk /に行き、ブランチは「一時的」であり、トランクに影響を与える可能性のある新しい機能を追加するために使用され、タグはリリース用です?それで、毎月プッシュしてみましょう、そして私は真新しいモジュールに取り組んでいます。トランクを分岐し、その分岐をコードに使用して、コードの記述とテストなどを行います。モジュールが完成したら、トランクにマージして(おそらくブランチを削除して)、デプロイの準備ができたら、タグを付けます(「May2011」としましょう)。公開後にバグ修正がある場合は、May2011タグで修正され、トランクにマージされます(トランクも修正されます)。そして、May2011は修正により再び押し出されますか?これはタグ付けの意図ですか?


5
あなたは他の言語パラダイムを学ぶことによってあなたのプログラミングスキルを向上させることができますか?
もしそうなら、問題が別のパラダイム/言語/テクノロジーにある場合でも、新しいパラダイムを学ぶことでプログラミング問題を解決するためのアプローチがどのように変わったのか教えていただけますか? 特定の方法で教えていただければ、X(つまり、JAVA / C#/ C ++)プログラミングスキルは、Y(つまり、Scheme / Prolog / Lisp)を学ぶことによってどのように改善されたのでしょうか。 また、優れたプログラマーになるために最も役立つパラダイムは何ですか? 私の経験は構造化された-OOP、命令的-手続き型であり、ある程度テンプレートメタプログラミングですが、私の目標は別の言語を学ぶことではなく、問題を解決するためのさまざまなアプローチを学ぶことです。 ありがとう!

3
RCPを使用する場合
ソーシャルWebサイトTumblrのクライアントのような、JavaとSwingを使用して小さなGUIアプリケーションを作成したい Eclipse RCPまたはNetbeansプラットフォームを使用する必要がありますか? プレーンスイング/ SWTを使用するよりも、どちらを使用することでどのようなメリットがありますか? RCPアプリケーションは、SwingまたはSWTを使用して開発されたものよりも多くの依存関係を必要としますか?
9 java  gui 

8
「スーパー」サイトに対して、またそれに対してどのような考慮が必要ですか?
私の会社は、すべてのティア1(つまり、トップエンドの本番)アプリケーションとサイトを1つの包括的なコードベースに統合することを検討しています。 理論は、それらの権限、デザイン、および全体的な機能を均質化し、集中管理できるというものです。 各アプリケーションの基盤となるデータ構造は非常に異なり、ビジネスルールは複雑で、各アプリケーションに固有であり、既存のアプリケーションの全体的なコードベースは非常にバラバラで無視されているため、このアプローチに終わりはありません。 編集: 現在の環境は、最初に書かれて以来ほとんど愛されていない3つのASP.Net 1.1サイト(主に社内の経験豊富な開発者がいないため)と、以前はASP.Net 1.1サイトでもあった1つのMVC2アプリケーションで構成されています。昨年アップグレードされました。C#のみで書き込みます。 同社はかなり小規模で、約50人のスタッフがいます。3人は実際の開発者です。管理(IT管理であっても)には、ITプロジェクトのプロジェクト管理(したがって、専門用語やビジネスへの影響に関するある程度の知識)以外のITの背景や経験はありません。 アプリケーションは主に、同社が販売する製品をサポートするオンラインサービスです。同社はソフトウェアを直接販売していません。 したがって、この状況全体をかなり具体的で答えられる質問で言い表す:現在の条件(つまり、古いコードベース、複雑なビジネスシステムおよびルール)を前提として、すべてのシステムを1つの包括的なソリューションにまとめようとすることに対する、または反対する説得力のある理由は何ですか? )?

6
CSS、JS、HTMLのコードレビューガイドライン
CSS、JS、HTMLのレビューのためのガイドラインを作成するように依頼されました。JSのコーディングガイドラインがあることは知っていますが、HTMLとCSSについては何も知りません。JSをレビューするために、私は確かにそれらのガイドラインに従い、それらに言及します。しかし、CSSとHTMLはどうでしょうか?論理エラーやインデントの問題以外に、マークアップやCSSを確認するときに確認する必要がある具体的な事項はありますか?

5
WebプログラミングでJavaScriptを使用する歴史的根拠は何ですか?
私は科学生物学のバックグラウンドを持っており、Pythonもよく使用しています。 私はWeb開発から始めたので、JavaScriptがWeb上の主要なクライアント側言語であるのはなぜなのかと、いつも疑問に思っています。 JavaScriptの優位性は歴史的な事故なのか、それとも他の何かなのか また、Pythonをクライアント側のスクリプトに統合する際にハードルがあるかどうか知りたいのですが。

4
依存しているストーリーをスクラムでどのように処理しますか?
私が現在取り組んでいる会社では、時々、いくつかの物語が互いに結び付いていることに気づきました(あまりに結合されているように)。これは、それらが同じ全体的な機能に属している、または異なる機能である可能性がありますが、次の機能を続行するために最初に完了する必要があるものなどがあります。 イテレーションのワークフローを停止することなく、このケースをどのように処理しますか?私たちは何か間違ったことをしていますか?
9 scrum  stories 

2
軽量アーキテクチャの評価を行うための良い方法は何ですか?
技術的なアーキテクチャのトレードオフ分析手法(ATAM)や、よりビジネス指向の費用便益分析手法(CBAM)などのアーキテクチャ評価手法に精通しています。ただし、これらの方法はかなり大規模です。いくつかのブレーンストーミングセッション、プレゼンテーション、トレードオフを説明する多数のシナリオの開発などを規定します。特定のサイズのプロジェクトには役立ちますが、通常は内部プロジェクトやデスクトップアプリケーションには大きすぎます一握り(またはそれ以下)の開発者によって開発されましたが、それらは小さいですが、かなり急な品質制約(パフォーマンス、スケーラビリティ、適応性)を持っています。 過去に私が使用した典型的な方法は、1人の開発者(またはチームに1人いる場合はアーキテクト)にアプリケーションの一般的なアーキテクチャを考えさせ、それをチームの残りのメンバーとホワイトボードで話し合うことです。簡単に描画して理解できる疑似UML表記。これは通常、アーキテクチャーのフィードバックといくつかの反復につながります。しかし、それは少し非公式になりがちで、後で間違った決定になる可能性のあるあらゆる種類の仮定が行われる傾向があります。 ATAMような方法は、典型的には、誰もが、少なくともアーキテクチャは、正確に何に同意するまでの議論につながる、アーキテクチャについて深く考えるようにすべての利害関係者を強制的です。 軽量の先行アーキテクチャ評価を行った経験がある人はいますか?もしそうなら、良い習慣は何ですか?

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