タグ付けされた質問 「software-updates」

7
クライアントからの「更新以来…」という質問にどのように対応しますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 更新以来、人々は「更新X、Y、およびZが遅くて、悪い状態で、クラッシュするたびに」と電話し、言い続けています。 これは、更新の夜明け以来ずっと発生しています。 人々は何を期待していますか?ガンマはベータの後にあり、ガンマテストは常にユーザーをThe Incredible Hulksに変えます... おそらくあなたはこれをクライアントから聞いたことがないでしょう、おそらくあなたは大学にいるか、5人か6人以上に非難を広めることができるFLOSS開発者です、おそらくあなたはあなたのコードをユニットテストします、おそらくあなたはそのような興味深い状況ではありません顧客が実際にあなたに今日のパッチをリリースする正確な時刻を要求するように電話します(Microsoftにそれをしたいと思います)、またはあなたはたぶんあなたがちょうど新しいを出荷した私のようなビスケットの息子です更新して帰宅し、明日仕事に戻るのが怖いです。 とにかく、yaは私よりも賢いでしょう。「あなたはあなたのソフトウェアをより悪くしているので、あなたは悪いプログラマーでなければならない」に囲まれた批判をどのように表現しますか?


1
Webアプリケーションで使用されているBootstrapのバージョンを更新し続けるのは理にかなっていますか?
意識しないかもしれない人々に、ブートストラップは土台またはWebサイトやWebアプリケーションを構築する上での出発点として使用することができますHTML、CSSやJSのフレームワークです。 私は現在、フレームワークのバージョン3で設計されたアプリケーションを本番環境に置いていますが、会社のポートフォリオの下にある他のWebサイトと一貫性のあるスタイリングを追加しています。 しかし、私たちはそのWebアプリケーションにいくつかの大規模な追加に着手しようとしているので、アプリケーションで使用されているブートストラップのバージョンを更新する必要がありますか? これにはいくつかの理由があります。1つ目は、バージョン4のブートストラップにはバージョン3との完全な下位互換性がないことです。多くのヘルパークラスが変更、置換、または完全に削除されているため、更新するのは容易ではありません(過度ではありませんが、 package.jsonのバージョン番号を更新し、どちらかを再構築するだけの簡単な問題)。 今、ブートストラップの私の理解は、最初はあなたのウェブサイト/ウェブアプリケーションを地面から離すことについてだったということです。しかし、アプリケーションがそのブートストラップポイントをはるかに超えていることを考慮すると、ブートストラップフレームワークを更新する時間を投資することを検討する必要がありますか? 表面的には、これは明白な答えのある質問のように見えることを知っています-もちろん、あなたは自分のものを最新に保ちます!!!。しかし、Bootstrapを開始の手段として考えている場合、起動して実行した後、なぜフレームワーク自体を更新し続ける必要があるのでしょうか?アプリケーションのニーズに合わせてパーツを既にカスタマイズしています-別の方向に進むことを許可してはいけませんか? フレームワークとしてのBootstrapが実際に開始することである場合(RailsやDjangoのようなフレームワークとは異なり、アプリのライフサイクル全体を通して継続的な生産性について)、ある時点で、スターターフレームワークから離婚すべきではありませんか? (例として、Angularスターターリポジトリのクローンを作成してアプリケーションの構築を開始する場合、4か月後または5か月後に戻って、そのスターターリポジトリの更新を現在アクティブなアプリケーションにマージしようとしますか?) PS。ここで質問するのはこれが初めてです。これがこのフォーラムに適切なタイプの質問でない場合は、事前に謝罪します。

4
パッチは顧客にとって悪い兆候ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 オフィスでは、あまりにも頻繁にパッチをリリースしていた長い期間を抜け出しました。その期間の終わり近くに、私たちは平均して週にほぼ3つのパッチを実行していました。 これは開発者にとって非常にやる気を起こさせることに加えて、私は顧客がこれについてどう思うだろうかと思っていました。私は自分で質問をし、頻繁に更新されるソフトウェアを知らなかったと結論付けました。ただし、最も近いケースについては、パッチはかなり迅速に適用されるため、あまり気にしません。 これらのパッチを受け取った顧客は、互いに大きく異なります。他の人があまり気にしないパッチを本当に待っていた人もいましたが、全員同じパッチを手に入れました。顧客のソフトウェアを更新する時間は30秒未満なので、時間に関する問題はないと思います。ただし、ログアウトする必要があります。 より詳細に私の質問:更新プログラムを頻繁に受信者に「否定的な」メッセージを与えていますか? もちろん、顧客に尋ねることはできますが、私はその立場にいるわけではなく、「眠っている犬を目覚めさせたい」とも思いません。 PS:質問を改善するためにできることがあれば、コメントを残してください。

1
実稼働環境で実行するJavaバージョンに関する考慮事項
技術の最先端を走る人もいます-何かが更新される日を更新します。本番環境では、これは適切ではありません。 現在の(Java 7)バージョンの生産準備が整っているかどうかを調査すると、もはや正しくない可能性のある大量の古い資料が作成されます(この記事の執筆時点では、Java 7は1年半にわたって公開されていますが、かなり長いようです) 。 実稼働環境を新しいバージョンのJavaにアップグレードすることが適切かどうかを判断するには、どのような考慮事項が必要ですか?

2
実行可能ファイルが悪意のあるまたはウイルスのようにAVから処理されるのを防ぐ方法
Windows上で実行され、ゲームのランチャーのように動作し、クライアント側のPCで自動アップデーターおよびファイル検証ツールとして機能するソフトウェアを作成しています。 私の理解していないことの1つは、私のアンチウイルスソフトウェア(Avast)が私のexeファイルを危険だと見なし、安全に使用するためにサンドボックスに入れることを求めずに起動しない理由です。 私のソフトウェアが従うべきルール、良いものとして扱われるルール、またはある種のデジタル署名などに数百ドルを支払うべきルールはありますか? MS Visual Studio 2010でC#を使用しています。 VirusTotalレポート。WebClient()クラスを使用して、リモートファイルダウンローダーとして機能するDLLインジェクションはありません。 ウイルスについて警告するようなものではありませんが、サンドボックスすることを「提案」します。スクリーンショットを見てください:


1
ソフトウェア/ファームウェアの自動更新戦略
「クライアントデモ用のカフェインを使用した粗雑なプロトタイプ」フェーズの終わりに近づいており、「将来を考える」フェーズに移行する中規模プロジェクトができました。プロジェクトは、ソフトウェアとファームウェアを備えたLinuxベースのデバイス、および中央管理Webサーバーで構成されています。現在10個のプロトタイプが存在し、生産は1000年代のオーダーになると予想されます。 自動更新の技術に精通しておらず、時間が足りないので、私は自分のソフトウェアの展開/自動更新戦略をすぐに展開しました。現在、次の要素で構成されています。 ホストされたgitリポジトリ(GitLab)と本番リリースブランチ(Webサーバーのソースもこの同じリポジトリにあることに注意してください)。 次のようなWebインターフェースの「更新の展開」ボタン 最新バージョンを本番リリースブランチからローカルリポジトリエリアにプルし、それを一時パッケージ準備ステージングエリアにもコピーします。 ステージング領域でサニタイズスクリプト(リポジトリに格納されている)を実行して、無関係なソースファイル(サーバーソース、ファームウェアソースなど)と.gitファイルを削除します。 現在のgitハッシュを更新パッケージのファイルに書き込みます(目的は以下で明らかになります)。 すべてうまくいった場合は、gzipで圧縮し、以前のgzipで圧縮されたパッケージを同じ名前のファイルで上書きしてサービスの準備を整え、ステージング領域を削除します。 サーバー上に現在のデバイスソフトウェアの2つのコピーが存在することに注意してください。これらは同期がとられていることが期待されています。同じバージョン。 デバイス上のソフトウェアは、という名前のディレクトリに自己完結し/opt/example/currentています。これは、ソフトウェアの現在のバージョンへのシンボリックリンクです。 起動時に次のことを行うデバイスの自動更新機能: do_not_updateファイルの存在を確認し、ファイルが存在する場合はそれ以上のアクションを実行しません(開発デバイスについては、以下を参照してください)。 上記のテキストファイルから現在のコミットハッシュを読み取ります。 そのハッシュをクエリパラメータとして使用して、サーバーにHTTPリクエストを送信します。サーバーは304(ハッシュは現在のバージョン)で応答するか、gzip圧縮された更新パッケージを提供します。 更新パッケージを受け取った場合は、次の方法でインストールします/opt/example。 という名前のフォルダーに更新されたソフトウェア情報を抽出していますstage。 更新に必要なローカル変更などを行う更新パッケージからのインストール後スクリプトの実行 現在のソフトウェアルートフォルダーをにコピーしますprevious(存在するprevious場合は、最初に既存のものを削除します)。 stageフォルダをコピーしますlatest(存在するlatest場合は、最初に既存のものを削除します)。 確保currentへのポイントへのシンボリックリンクをlatest。 デバイスを再起動します(ファームウェアの更新がある場合は、再起動時に適用されます)。 新しく構築されたデバイスでの初期展開の問題もあります。デバイスは現在 SDカードベースである(ここでは範囲外の独自の問題があります)ため、このプロセスは次のように構成されます。 以前のバージョンのソフトウェアが含まれているSDイメージが存在します。 この画像からSDカードが作成されます。 初回起動時に、さまざまな初回のデバイス固有(シリアル番号ベース)の初期化が行われ、その後、オートアップデーターがソフトウェアの最新の製品バージョンを取得して通常どおりインストールします。 さらに、開発デバイスのサポートも必要でした。開発デバイスの場合: 完全なローカルgitリポジトリがデバイスで維持されます。 currentシンボリックリンクは、開発ディレクトリを指します。 do_not_update自動アップデーターがプロダクションアップデートで開発コードを吹き飛ばすのを防ぐローカルファイルが存在します。 現在、展開プロセスは理論的には次のように意図されていました。 コードをデプロイする準備ができたら、リリースブランチにプッシュします。 サーバーの[更新の展開]ボタンを押します。 これでアップデートが公開され、デバイスは次回チェック時に自動更新されます。 しかし、そこにあるトン実際に問題のは: Webサーバーのコードはデバイスのコードと同じリポジトリにあり、サーバーにはローカルのgitリポジトリがあり、それを実行しています。最新のWebサーバーコードが最新のデバイスコードと同じブランチにありません。ディレクトリ構造に問題があります。[更新のデプロイ]ボタンをクリックすると、最新バージョンが本番ブランチからプルされ、サーバーコードのサブディレクトリにプルされます。つまり、サーバーに最初からデプロイする場合、デバイスのプロダクションブランチをそこに取り込むことにより、このサブディレクトリを手動で「シード」する必要があります。これは、おそらくgit user errorから、デプロイを試みないと、親ディレクトリのWebサーバーブランチからデバイスコードをプルします。これは、ステージング領域をサーバーのローカルgitリポジトリのサブディレクトリにしないことで解決できると思います。 Webサーバーは現在、デバイスソフトウェアのgitハッシュを永続的に維持していません。サーバーの起動時に、git rev-parse HEADローカルデバイスソフトウェアリポジトリで現在のハッシュを取得します。理由がわからないため、ここでは説明しませんが、大量の論理エラーが発生しています。サーバーを再起動すると、特にサーバーが新品で生産がない場合は、問題が発生する可能性があります。ブランチリポジトリはまだ引っ張られています。リクエストがあれば喜んでそのロジックのソースを共有しますが、この投稿は長くなりつつあります。 何らかの理由でサニタイズスクリプト(サーバー側)が失敗した場合、サーバーには最新のレポが残されますが、同期git rev-parse HEADが取れておらず、更新パッケージがないため、実際のハッシュと一致しないハッシュが返されますここで問題はサーバーのコマンドラインで手動で修正する必要があります。つまり、サーバーは更新パッケージが正しくないことを認識しておらず、純粋な信念で常にそうであることを前提としています。これを前のポイントと組み合わせると、サーバーは実際には非常に壊れやすくなります。 最大の問題の一つは:デバイス上で動作しているデーモン全く別のアップデータは現在ありません。wifiインターネットアクセスが来るのを待っている複雑さといくつかの土壇場のハッカーのため、デバイスをチェックして更新するのはメインのデバイス制御ソフトウェア自体です。これは、テストが不十分なバージョンが何らかの形で本番環境に移行し、制御ソフトウェアが起動できない場合、存在するすべてのデバイスは、それ自体を更新できなくなるため、本質的に機能しなくなることを意味します。これは、本番環境では絶対的な悪夢です。不運なときに電源が切れた場合の単一のデバイスの同じ取引。 その他の主な問題は次のとおりです。増分更新はサポートされていません。たとえば、しばらくの間デバイスの電源が入っていない場合、次にデバイスが更新されたときに、一連のリリースバージョンがスキップされ、直接バージョンスキップの更新を実行できる必要があります。この結果、更新された展開は、特定の更新を特定の過去のバージョンの上に適用できることを確認するという悪夢になります。さらに、gitハッシュはバージョン番号ではなくバージョンを識別するために使用されるため、増分更新を容易にするためのバージョンの辞書式比較は現在不可能です。 現在サポートしていない新しい要件は、管理サーバー側で構成する必要があるデバイスごとの構成オプション(キー/値のペア)がいくつか存在することです。ソフトウェアの更新と同じHTTP要求でデバイスにこれらのデバイスごとのオプションを提供することはどうしても構いません(多分、それをHTTPヘッダー/ Cookieにカプセル化できます)。常に別のHTTPリクエストにします。 ハードウェアの2つのバージョン(および将来的にはさらに多く)のハードウェアが存在するため、多少複雑になります。ハードウェアの現在のバージョンは、実際には初期SDイメージの環境変数として格納され(それらは自己識別できません)、すべてのソフトウェアはデバイスのすべてのバージョンと互換性があるように設計されています。ファームウェアの更新はこの環境変数に基づいて選択され、更新パッケージにはハードウェアのすべてのバージョンのファームウェアが含まれています。ちょっと不格好ですがこれで我慢できます。 現在、手動で更新をデバイスにアップロードする方法はありません(要するに、これらのデバイスには2つのwifiアダプターがあり、1つはインターネットへの接続用で、もう1つはユーザーがデバイスの構成に使用するAPモードです。将来的にはデバイスのローカルウェブインターフェースに「アップデートソフトウェア」機能を追加するつもりです)。これは大きな問題ではありませんが、更新のインストール方法にある程度の影響を与えます。 …

7
有料ソフトウェア更新のためのAptリポジトリの使用
毎週または毎月更新される可能性がある、ホストされた/オンサイトのWebアプリケーションのソフトウェア更新を配布する方法を決定しようとしています。オンサイト製品を使用しているお客様に手動での更新について心配する必要はありません。GoogleChromeから自動的にダウンロードしてインストールするだけです。Ubuntuとインストールおよび構成されたソフトウェアを含むOVFファイルを提供することを計画しています。 ソフトウェアの分散方法について最初に考えたのは、鍵を使用してSSH経由でアクセスされる6つのAptリポジトリ/チャネル(現時点ではどちらが良いかわからない)を作成することです。そのため、顧客がサブスクリプションを更新しない場合は、アカウントを無効にできます。 : ベータ-パッケージに重大な欠陥がないかどうかを確認するためにテストデータで内部的に使用されます。 内部-パッケージの欠陥をチェックするためにライブデータで内部的に使用されます(ドッグフード段階)。 外部1-ユーザーベースの1%に展開(ランダムに選択)して欠陥をチェックします。 外部9-ユーザーベースの9%(ランダムに選択)に展開され、欠陥をチェックします。 外部90-残りの90%のユーザーに展開されます。 ホスト-ホストされた環境にデプロイされます。 問題が報告された場合、次のリポジトリに移動するために、各段階でサインオフします。 コミュニティへの私の質問は次のとおりです。 誰かが以前にこのようなことを試しましたか? 誰もがこのタイプの手順のマイナス面を見ることができますか? もっと良い方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.