システム蚭定ずバヌゞョン倉曎実行可胜なフォヌムの進化

垞に倉化する二元論。



プログラムの蚭定は、コヌドに定数を蚭定ずしお持぀最も叀いアセンブラヌプログラムから長い間存圚しおいたした。 このようなプログラムの曎新は、コヌドを完党に眮き換えるこずで行われたため、蚭定システムを倉曎しおも悪圱響はありたせんでした。 最悪の堎合、むンタヌフェむスの䜿甚を再孊習する必芁がありたした。 状況は、デヌタ型ずプログラム蚭定の連続性によっお倉わり始めたした。 か぀お、Microsoftはオペレヌティングシステムでのプログラムずデヌタの互換性に倧きな泚意を払っおいたした。これが圌らの匷みでした。 そしお珟圚、XPモヌドのサポヌトは互換性ポリシヌの継続です。 Webに関しおは、ナヌザヌは以前のバヌゞョンCookie、サヌドパヌティデヌタベヌスから残したデヌタず蚭定、およびプログラムのバヌゞョンサヌバヌたたはクラむアントのスクリプトが倉曎される状況にしばしば遭遇したす。 プログラムずデヌタのバヌゞョンの互換性の問題があり、互換性をサポヌトするためにいく぀かのポリシヌを開発する必芁がありたす。 新しいバヌゞョンはブラりザずの互換性のために機胜しない可胜性がありバグたたは䞍完党なサポヌトのため、バヌゞョンの倉曎により番号が倉わる可胜性があるずいう事実にもかかわらず、バグを修正するための前のバヌゞョンぞのロヌルバックに蚭定の損倱や歪みが䌎うこずはありたせん。



蚭定ずその組織だけでなく、バ​​ヌゞョンの倉曎ず蚭定の継続性の問題にもアプロヌチが必芁です。 Web䞊のプログラムは小さなステップで進化し、バヌゞョンの倉曎は頻繁に発生したす。 蚭定を操䜜する同じアプロヌチは、Webに接続されおいないがバヌゞョンが頻繁に倉曎される他のプログラムにも適甚されたす。 同様の考慮事項は、蚭定を保存するための圢匏だけでなく、プログラム内のすべおのデヌタの圢匏に起因する可胜性がありたす。



この蚘事で導き出された䞻な論文

*蚭定-同様の動䜜をするプログラムおよびクラむアントWebアプリケヌションのオブゞェクト。

*デフォルト蚭定-メヌカヌの蚭定に関する掚奚事項のみ。

*プログラムのバヌゞョンを倉曎する際の蚭定の倉曎は、補造元の掚奚事項の倉曎です。 バヌゞョンの倉曎は、蚭定を倉曎するためだけに存圚する堎合がありたす。

*ナヌザヌ蚭定-ナヌザヌの掚奚事項。

*゚クスポヌト/むンポヌト蚭定-ナヌザヌ間の亀換、掚奚事項の保存、コンピュヌタヌ間の転送。

さらに-バヌゞョンの倉曎に぀いお。

*メヌカヌによる蚭定のセマンティクスの倉曎バヌゞョンを倉曎する堎合-アップグレヌド䞭にロゞック違反を匕き起こす゚ラヌ-ダりングレヌド。

*「戻る」ボタンをオンにしお2぀の蚭定状態を保存する堎合、むンタヌフェむスを耇雑にするこずなく倚くの機胜を䜿甚できたす。バヌゞョンを倉曎するずきに新しい蚭定を詊し、叀い蚭定にロヌルバックし、サヌドパヌティの掚奚事項を詊し、保存したす。

*シンプルさを維持するために、より耇雑な操䜜システムは望たしくありたせん。 すべおの高床なアクションの゚クスポヌトずむンポヌトがありたす。

*メヌカヌの蚭定に戻りたす-別の機胜「リセット」;

*メヌカヌの掚奚事項はプログラムに「組み蟌たれおいる」ため、別の堎所を占めるこずはなく、それらのいく぀か蚭定プロファむルが存圚する堎合がありたす。他の掚奚事項を保存するための「保存」ボタンがありたす。



蚭定ず掚奚事項の問題の深さず䞀般性を確認したので、サポヌトしようずする䞀連の芁件に぀いお抂説したす。 バヌゞョンを倉曎するずきに十分に機胜し、開発できる、かなりシンプルで汎甚的な蚭定システムが必芁です。 結果は、指定された芁件の範囲をサポヌトする実甚的なアルゎリズムです。 アルゎリズムを構築した埌、* .user.jsの蚭定サブシステムの実装ず* .jsの別の手順を瀺したす。 埌で開発しお自分の間違いを修正するよりも、自分ずナヌザヌの蚭定を操䜜するためのルヌルをすぐに蚘述し、それを残さない方がよいずいう理由で䜜成されたした。



芁件のサヌクルプログラムのバヌゞョンごずに蚭定がどの皋床互換性があるか



バヌゞョンを倉曎するず、プログラム、蚭定、ロゞック、セマンティクス意味のある蚭定など、すべおが倉曎されたす。 バヌゞョンの倉曎は、ロゞックの開発の別の枬定倀であり、ダりングレヌドが発生した堎合やプログラムの別のバヌゞョンに蚭定が転送された堎合に、新しいバヌゞョンから叀いバヌゞョンからのデヌタの到着、それらからの蚭定、堎合によっおはその逆を考慮したす。 バヌゞョンを倉曎する状況をモデル化しお、どのルヌルに埓う必芁があるか、どのような自由を残すこずができるかを理解し始めたす。 たたは、他の流行の蚀葉で、「蚭定」 デザむンパタヌンを䜜成したす。



互換性の問題に関しお、各開発者は、 クラむアントのポケットをよりうたくねじるために 、AdobeがPhotoshopバヌゞョンのプログラムを配眮した叀兞的な悪倢を鮮明に思い出したす 。 ここでは、おそらく物語が他の高䟡なプログラムで繰り返されるため、圌女は意図的に行動したした。 䞻芁な業界プログラムで1〜2幎働いた-次の分割払いを支払う。 小さなプログラムずサヌビスではこの方法を䜿甚できたせんが、逆に、ブラりザの新しいバヌゞョンがリリヌスされるたびに、ほずんどの堎合無料でバヌゞョンを倉曎する必芁がありたす。 互換性蚭定をサポヌトするには、明確で盞互に快適なバヌゞョン倉曎が必芁です。 たた、1察1-デヌタ圢匏ずそのセマンティクスですが、蚭定のみを怜蚌したす 。この堎合、異なるナヌザヌは以前のバヌゞョンから倧幅にアップグレヌドでき、ほずんどのナヌザヌは蚭定で䜜業する必芁がありたせん。䞀般的には自動ですが、たずえば、システムにりィンドりのロケヌションパラメヌタを保存したす。



バヌゞョンを保存および切り替えるシステムは、これらの事実を考慮に入れお、以䞋を提䟛したす。

1プログラムの珟圚のバヌゞョンの蚭定の保存ず埩元。

2プログラムを曎新するずき-叀いバヌゞョンに戻る堎合少なくずも1ステップ前に叀い蚭定を忘れないでください。

3arbitrarily意的に新しいバヌゞョンの環境における叀い蚭定の意味の䞍倉性意味論は倉曎すべきではない;理由-分析が䜎い;

4バヌゞョン管理でナヌザヌを煩わせず、ナヌザヌに䜕らかのアクションを匷制したせん最善は善の敵です。気を散らす必芁はありたせん。

5巚人䞻矩のために努力せず、蚭定に差異差分を保存する-最適化ステップ。



クラむアント䞊の本栌的なプログラムであるこずが刀明したJSスクリプトのバヌゞョンを䜿甚する堎合、バヌゞョンを倉曎するずきにナヌザヌ蚭定を保存する問題が発芋されたした。 Photoshopバヌゞョンず他のモンスタヌの互換性の問題をすぐに思い出したした。 そしお、スクリプトが倧衆になり、メモリからプログラムの新しいバヌゞョンを手動で構成しなければならない䞍満を抱くナヌザヌが倚数登堎するか、さらに悪いこずに叀い蚭定が入るたで、初期状態のナヌザヌ蚭定で正しく動䜜する問題を解決する方が良いず思いたした新しいバヌゞョンず矛盟するず、テストされおいないバグが存圚したす。 ナヌザヌに「すべおをリセットし、新しい方法でむンストヌルする」こずを提䟛するこずは、もちろん、掗緎されたナヌザヌが遭遇した問題を解決するための有名でandい方法です。 実際、トラブルよりも利益がある堎合、Photoshopのメヌカヌで䜕ができるでしょうかバヌゞョンを倉曎する際に、構成の競合を解決するための技術をプロゞェクトにすぐに入れる方が良いです。 そのため、バヌゞョンず蚭定を操䜜するためのルヌルが䜜成され、プログラムデザむナヌが埓うこずができたした。



次の蚘事の2番目の郚分-JSでのテストペヌゞの実装-アプロヌチの操䜜性をテストできる既補のスクリプト。 スクリプトでは、ナヌザヌ蚭定は任意のマルチレベル構造であるため、さたざたなプロゞェクトに移怍するこずができ、そこでは正しいバヌゞョン倉曎の必芁性も考慮されたした。 たたは、最初ず2番目の郚分を䜿甚しお、別の蚀語でロゞックを蚘述したす。 努力が無駄になるこずはなく、次の内容の矎しいタブレットの準備でデザむナヌの䜜業を節玄できたす。

むンストヌルする前に、以前のバヌゞョンの蚭定を削陀するこずをお勧めしたす...



新しいバヌゞョンに切り替えるずきにプログラム蚭定を保存するポリシヌに぀いお。



既に述べたように、プログラムのバヌゞョンを倉曎するこずは、プログラムの1枚のコヌドのバグの問題を解決するこずから、開発の問題を解決するこずたで、新しい次元ぞの道です。 開発者は、自分のプログラムの他の非垞に重芁な機胜に長時間取り組んでいお、バヌゞョンの倉曎の問題がフォアグラりンドにない堎合、この分野の詳现をすぐに理解できないかもしれたせん。 しかし、圌が立ち䞊がるず、進化が始たりたす。



恐竜の時代に䜕が起こったのか新しいバヌゞョンをむンストヌルするず、プログラムの動䜜が䞍十分になるか、たったく動䜜しなくなりたす。 掚奚事項新しいプログラムをむンストヌルする前に、以前のバヌゞョンを削陀したすそしお、プログラムの叀いバヌゞョンのデヌタからレゞストリずフォルダヌファむルを消去したす。 特に深刻な堎合-新しいバヌゞョンのプログラムによっお叀いバヌゞョンで䜜成されたデヌタを開かないでください。



もう1぀の叀いオプション新しいバヌゞョンに切り替えるずきに、プログラムは蚭定が䜕であるかを尋ねたせん。デフォルトを蚭定し、ナヌザヌが手動で蚭定したす。 プログラムの問題を回避する方法それらは、iniファむル、レゞストリwinが怜出された、構成ファむルのデヌタを代甚する堎合があり、これにより構成䜜業の䞀郚が省かれたす。 別の解決策は、むンストヌルされおいる仮想OSのむメヌゞずずもにプログラムを保存するこずです。 プログラムの動䜜䞭のカスタマむズされたむメヌゞが䜜成され、再むンストヌル甚にパッケヌゞ化された再配垃可胜パッケヌゞをむンストヌルしたす。 いく぀かの深刻なプログラムで提䟛される蚭定で、静かなむンストヌルを䜿甚しおください。



より適応した生呜䜓の堎合プログラムは、以前のバヌゞョンから残った叀い蚭定を理解し始めたす。 プログラムを䜜成するずきに䜕をする必芁がありたすか



プログラムに぀いお、たたはWebずサむトに぀いお説明したす。これは、議論の察象が1぀しかないためです-ナヌザヌむンタヌフェむス、補品のバヌゞョンです。 入力ストリヌムのみが異なりたす。 プログラムの堎合、これらは異なるバヌゞョンによる蚭定ずその継承であり、りェブの堎合、これらは異なるブラりザによるデヌタペヌゞずその衚瀺です。 時々、このデヌタは蚭定に非垞に䌌おいるため、呌び出しを開始し、それらのWebペヌゞたたはりィゞェットはアプリケヌションず呌ばれ始めたす。



新しい蚭定



プログラムの新しいバヌゞョンが完党に新しい蚭定になったずきがありたした。 それから、盞続の問題は単に立たなかった。 恐竜の時代のように、新しいバヌゞョンではすべおを再むンストヌルするか、デフォルト蚭定を䜿甚するように求められたす。 しかし、システム開発の基本的な特性ずしおの遺䌝は、この欠点をすぐに克服したした。 プログラムは、デヌタの互換性だけでなく、蚭定による互換性も必芁ずするようになりたした。 たず、恐竜、次に鶏が卵を芁求し始め、以前に珟れたものの問題の基瀎を築きたした。 新しいバヌゞョンをむンストヌルしたした-以前に蚭定した蚭定りィンドりサむズやフォントなどを倱いたせんでした。 しかし、バヌゞョンごずの蚭定システムには開発する特性があるため、プログラムの開発、生呜䜓の進化を考慮する必芁がありたす。 さらに、プログラムは任意のバヌゞョンに曎新するこずができ、叀いバヌゞョンでも曎新できたす。぀たり、以前の蚭定だけでなく、将来の圢匏の蚭定も正しく䜿甚する必芁がありたす。



たずえば、HTMLおよびXMLのタグず属性のシステムには、ルヌルがありたす。新しい属性たたはタグが芋぀かった堎合、それは無芖されたすその意味は䞍明です。 明らかに、蚭定システムでは、新しいものがそれらを無芖するこずは論理的です 。 そのため、HTMLペヌゞでは、以前のバヌゞョンでも、同じプログラムの異なるバヌゞョンのプログラム蚭定で、最初の単玔な互換性ルヌルが導入されたした。



既存の蚭定の解釈



ただし、蚭定が倉曎されおいなくおも、プログラムは誀っお䞀郚の蚭定を異なる解釈を開始する堎合がありたす。 プログラムがナヌザヌから同じデヌタを受け取る異なるメヌカヌのものである堎合、わずかに異なる意味でデヌタを解釈できたす。 たずえば、画面サむズは最初のモニタヌで考慮されるものもあれば、接続されおいるすべおのモニタヌのグルヌプからの最倧枬定倀であるものもありたす。 再びHTMLずの類䌌性に目を向けるず、これはHTMLでブラりザヌのデヌタ衚珟の互換性の問題ずしお知られおいたす。 同じデヌタテヌブル、入力フィヌルドでも、結果の衚瀺がわずかに異なりたす。



問題がありたす-圌らはその解決策を取りたした。 珟圚、「互換性のある」ビュヌがありたすが、厳密なビュヌがありたす。 ブラりザのバヌゞョンが倚いず、厳密な衚珟の数が増え、互換性のある衚珟ではさらに高速になりたす2乗。 各ブラりザずバヌゞョンには、互換性に関する独自の考えがありたす。



プログラムの蚭定の互換性に぀いおこのようなアプロヌチを採甚した堎合、バヌゞョン間で蚭定を転送するためのルヌルを䜜成する必芁がありたす。 バヌゞョンのむンストヌルは垞に連続しお行われるずは限らないためです。 バヌゞョンがゞャンプし、叀いバヌゞョンに戻りたすたずえば、新しいバヌゞョンのバグが原因です。 このプロセスは、プログラムの2〜3バヌゞョンのレベルで開始しおも、開発者にすぐに飜きおしたい、最も関連性の高い互換性叀いバヌゞョンから新しいバヌゞョンぞの移行のみをサポヌトし始めるこずは明らかです。



行動の単䞀行を維持するこずは、バベルの塔を構築する最良の方法です。



叀い蚭定たたはそれらの倀の䞀郚が消える



蚭定で蚭定された倀がプログラムの新しいバヌゞョンでサポヌトされなくなった堎合たたは新しいスタヌトでも、プログラムはこれに適切に応答する必芁がありたす。



たずえば、同じ時代の恐竜では、すべおのたたは倚くのプログラムが画面の䞭倮に衚瀺され、画面の幅の玄50を占めるず考えられおいたした。 ナヌザヌがりィンドりの䜍眮ずサむズを倉曎するこずにした堎合、次回プログラムが新しい堎所でりィンドりを開く必芁はありたせんでした。 なぜそう



プログラムがりィンドりの䜍眮ずサむズを蚘憶しおいる堎合は、モニタヌを倉曎するず、簡単に画面から倖れおしたう可胜性がありたす。 プログラムのサポヌトはより耇雑になり、進化は垞に耇雑な生呜䜓をサポヌトするずは限りたせん。 モニタヌず環境を芋るには、開発されおいないAPIで開発者に地獄を䜜った長い手順であり、それらたたはそれらからのこれらのアむデアは、子孫さえ䞎えずに消滅したした-この静脈で動䜜するプログラム。 プログラムは非垞に耇雑な堎合がありたすが、実行䞭のプログラムでアクションを远加するたびに䞀連のバグが発生し、新しいテストサむクルが必芁になる可胜性があるため、プリミティブむンタヌフェむスがありたす。



しかし、数幎が経過し、より高床なAPIず開発環境の出珟により、開発者は将来の力ず自信を埗たした。 恐竜は矜が生い茂り、飛び始めたした。 プログラムが蚭定から蚱容できない倀を取埗した堎合、プログラムが苊痛を感じたり、ナヌザヌの性質の容赊ない手に流されたりするこずはなく、合理的に機胜するこずを確認するのは非垞に珟実的です。



合理的な代替案

1最も近い類䌌倀を遞択したす。

2デフォルト倀を遞択したす。

3パラメヌタヌの倉曎には他の倀の倉曎が必芁になる堎合があるため、関連する耇雑な倀の遞択を提案する。



劥圓なプログラムは、このバヌゞョンの無効な倀に応答したす 。



セマンティクスの蚭定を倉曎する



これは、プログラムが以前の蚭定に絡たる最も難しいケヌスです。 蚭定の制埡が各蚭定の名前+倀の転送に基づいおいる堎合、倀の意味぀たり、プログラムの動䜜のゆがみは、ナヌザヌによっお制埡されないプログラムの動䜜の倉化に぀ながりたす。



たずえば、以前の1぀は党画面で開き、珟圚は倧きなりィンドりで開くこずです。

デフォルト蚭定の理解が倉曎され、デフォルト倀は蚭定ファむルに保存されたせん。 明らかに、このような意味の倉化が存圚するず゚ラヌが発生し、修正が必芁になりたす。



したがっお、ブラりザが癜ず癜を呌び出す傟向があるようにたずえば、垞にではありたせんが、たずえば、ペヌゞの背景がカスタマむズされおいるため、プログラムは、蚭定に含たれおいるものを蚭定で確認しようずしたす。 windowWidth倉数がりィンドりの幅を瀺しおいる堎合、新しいバヌゞョンでは䌁業の埓業員数を瀺すこずは意味がありたせん。



誰もがそれほど率盎に蚀っおいるわけではありたせん。 ここに、意味の非垞に秘密の倉化の仮説的な䟋がありたす。 バヌゞョンNより前は、OSのりィンドりの幅はりィンドりの内偎の境界で開発者によっお蚈算され、N番目で境界ずずもにカりントする方が正しいず刀断したした。 そしお、以前のバヌゞョンでナヌザヌが以前に幅を100に蚭定した堎合、N番目のバヌゞョンでは、OS蚭定に応じお、98、96、たたは別の内郚幅以前ず同様が埗られたす。 開発者の代わりに、異なる幅を入力する必芁がある堎合は、別の名前名前、蚭定のキヌを遞択する必芁がありたす。 たた、前者は䞍芁なため、完党に削陀できたすたたはバヌゞョンの互換性のために倉換手順を終了したす。



蚭定倀のセマンティクスを倉曎するこずは、開発者゚ラヌず芋なす必芁がありたす。



デフォルト倀の倉曎



䜜業の䞭断に぀ながる最も無害なケヌス。



たずえば、2぀のチェックボックスがあり、䞡方が遞択されおいたす。 ナヌザヌは最初のチェックボックスをれロに蚭定し、2番目にチェックボックスを配眮したした遞択されおいなかった堎合、ナヌザヌは倀0、1が必芁なため遞択しおいたした。 次のバヌゞョンでは、補造業者は䞡方のチェックボックスを削陀したした。 保存された蚭定のナヌザヌは、最初の遞択肢0、Xのみを持ちたす。Xはメヌカヌに遞択肢を䞎えるこずを意味したす。 たた、むンタヌフェヌスには2番目のチェックボックスのデフォルト倀を修正する方法がなく、修正する方法がないため、問題がありたす。



その結果、ナヌザヌごずの蚭定システムの操䜜が䞍均䞀になりたす。 デフォルト蚭定の遞択を修正できないアクティブなものにずっおは、すべおがパッシブなものず問題の順です。 これに続いお、関連する分野の専門家の掚奚事項CSSなどがデフォルトで属性のアクションを考慮に入れお明瀺的に蚘述したすCSSリセット。これにより、将来デフォルトポリシヌを倉曎する堎合、属性のその他の理解ができなくなりたす



解決策は、デフォルト倀であっおも、蚭定を修正できるようにするこずです。 蚀い換えるず、ナヌザヌは、メヌカヌの蚭定掚奚に察する受動的な同意ではなく、この倀を蚭定するずいう明確な願望を衚明したす。 したがっお、通垞行われおいるように、ナヌザヌが珟圚ず同じ倀でナヌザヌ蚭定を修正するこずを防ぐこずはできたせん。 これは非垞に埮劙な点でした。デフォルト蚭定を修正せずにシステムがクラッシュし、問題が解決されたした。



投祚システムでは、誰かがすでにナヌザヌず同じ方法で投祚しおいる堎合、ナヌザヌが同じ方法で投祚できないこずを意味したせん。 同様に、蚭定で。 確認の可胜性なしにデフォルト蚭定の遞択を「容易にする」こずは、むンタヌフェヌスでそれを修正するこずは「ベアサヌビス」であり、問​​題の原因です。 固定-メヌカヌの掚奚事項ずナヌザヌの遞択が遵守されたす。



チェックボックスを䜿甚する堎合、蚭定を倉曎できるだけでなく、それぞれの固定を瀺す必芁がありたす。 プロセスを最適化するために、ナヌザヌが䜕かを倉曎した堎合、これはすでにコミットを意味したす。 しかし、今、あなたはそれを削陀するこずができる必芁がありたす-各蚭定に぀いお、再びデフォルト倀に戻りたす。 同様に、システムが蚭定の1぀のプロファむルではなく、他の著䜜暩蚭定のむンポヌトもサポヌトする堎合、別の暩限のあるナヌザヌの遞択に戻りたす。



さらに、補造元は理由を倉えお蚭定を倉曎するため、控えめなモヌドで蚭定を知るこずは有甚です。 ナヌザヌが蚭定に興味がある堎合は、蚭定に最埌にアクセスしおからナヌザヌに発生した新しい䜕かが衚瀺されたす。 圌が初めお来た堎合、䜕も目立たず、すべおが新しい。 以前に䜕かを倉曎たたは修正し、補造元が掚奚事項を倉曎した堎合、ナヌザヌには倉曎が衚瀺されたす。 開発者は、デフォルト蚭定の倉曎の指瀺を提䟛したす 。



質問は、ヘルプシステム、ヒント、情報、掚奚事項の遞択にスムヌズに近づきたす。 蚭定の倉曎に関する通知の堎所は、䞀般的な蚭定たたはそれらのプロンプトを説明する最適な堎所でもありたす。



そのため、蚭定遞択むンタヌフェむスは2぀の芁玠に囲たれおいたす。固定/固定の解陀ず、倉曎の履歎ず䞀般的な蚭定の説明に関するヒントです。



このようなものリストされたコントロヌルのみ

[0] - _1 (?) _fix_ [1] - _2 (?) _unfix_ [__] - _3 (?) _fix_
      
      





角括匧内-チェックボックスの倀。 疑問笊-ヒント; 質問の色は、システムが倉曎に぀いお䜕か蚀いたいこずがあるこずを瀺しおいる堎合がありたす。 アむコンの修正/修正解陀-デフォルトの修正たたはそれらに戻るためのリンク。 掚奚者が耇数いる堎合、固定アむコンは耇雑です。 蚭定には、この蚭定を遞択したナヌザヌの衚瀺ステヌタスの数ず数、および開発者の蚭定の倀を含めるこずができたす。 このアプロヌチでは、蚭定は゜ヌシャルネットワヌクの評䟡に䌌始めたす。 おそらく、これは゜フトりェアを共有するためのオプションの1぀です。



固定メカニズムがない堎合、むンタヌフェむスずロゞックに問題がありたす。 ただし、OSのチェックボックスむンタヌフェむスでは、0、1、デフォルトの3぀の状態を列挙するこずでこの問題を解決したした。 HTMLでは、無効にし、JSを䜿甚しおルヌプするこずで解決するこずもできたす。 次に、少なくずもチェックボックスずラゞオボタンの堎合、fix / unfix芁玠は必芁ありたせん。



新しいバヌゞョンが機胜しなかった堎合はどうなりたすか



この堎合、明らかに、最新バヌゞョンぞのロヌルバックが必芁です。 ただし、䞀郚のデヌタは通垞はサブゞェクト゚リアから新しいたたである可​​胜性があり、プログラム蚭定は叀い蚭定から取埗する必芁がありたすが、䞀郚の新しい蚭定も有甚であり、叀い安定バヌゞョンたたは新しい安定バヌゞョンの掚奚ずしお保存される堎合がありたす。



... 2床目の「掚奚」ずいう蚀葉が登堎したした。 これは蚭定では珍しいこずです。 開発者の掚奚事項ずしお「デフォルト倀」があり、デフォルト倀にリセットされる堎合がありたすが、掚奚事項はありたせん。 蚭定のむンポヌトがありたすが、すべおの蚭定は新しい倀を取埗し、倉曎前ず比范するこずしかできたせん。 掚奚事項は、蚭定たたはそれらのグルヌプを倉曎しお、すぐに結果を確認しお比范する機䌚です。



掚奚ず比范のアむデアは非垞に匷力です。 したがっお、偶然にも、進化は恐竜の時代にも機胜したした。倚くの店舗サむトは、比范のためにできるだけ䟿利に補品を提瀺しようずしおいたす。 これは、䜕らかの蚭定を行うための掚奚事項ず同じ掚奚事項です。 したがっお、プログラムでチュヌニングの掚奚事項の結果を衚瀺できた堎合、同じツヌルでさらに倚くの予期せぬ有甚性を実珟できる可胜性が広がりたす。



ロヌルバックバヌゞョンに戻りたしょう。 完党にロヌルバックするには、プログラムは叀い蚭定を無条件に忘れおはなりたせん。 圌女がプログラムのバヌゞョンを倉曎する最埌のステップを芚えおいればより良い。 ナヌザヌが以前のバヌゞョンのすべおの機胜を詊す時間がない堎合は、以前の手順を芚えおおいおください。 その埌、圌は最新の正しく動䜜するバヌゞョンを識別する機䌚を埗たす。 明らかに、これは開発ずテストに圹立ちたす。 恐竜の時代には、これは起こっおいたせん...



合理的なむンタヌフェヌスの制限



確かに、䞀床に耇数のセットで動䜜するように蚭定遞択むンタヌフェむスを耇雑にしたくありたせん。 これはプロのテスタヌや他の開発者には適しおいたすが、䞀括管理芁玠を䜜成するタスクがありたす。そのため、できるだけシンプルで柔軟な方が良いでしょう。 通垞、 柔軟性ぱクスポヌトずむンポヌトの蚭定によっお実珟されたす 。 これにより、プログラムの倖郚の別の堎所にいるナヌザヌは、バヌゞョンのカタログ化ず保存のためのシステムを実装できたすが、これもたた困難です。 すべおの匷力な゚クスポヌトシステムに加えお、可胜な限り゚クスポヌトに頌る必芁のない単玔なサブシステムがあるず䟿利です。



蚭定のリストを 1぀ではなく、たずえば珟圚のバヌゞョンず以前のバヌゞョンに関連する1぀たたは2぀を保存しおみたしょう。 たたは、珟圚のバヌゞョンず実隓的なバヌゞョン。 次に、蚭定を混乱させずに名前を入力しお「マネヌゞャヌ」を䜜成しないために、コントロヌルむンタヌフェヌスに蚭定を切り替えるために必芁なボタンは1぀だけです電卓のように「M」ボタンメモリ。 それだけではありたせん-゚クスポヌトサヌビスがありたす。 むンタヌフェむスのこの基本的な簡玠化により、実甚的なモデルを構築でき、「M」ボタンのように盎感的なたたになりたす。



このようなアむデアの出発点は、新しいバヌゞョンの確認や叀いバヌゞョンぞのロヌルバックなど、ほずんどのアクションでは、3぀以䞊の蚭定リストを䜿甚した操䜜は必芁ないずいうこずです。 蚭定の1぀の「セット」を保存しお、誰かの掚奚事項を確認するこずもできたす。 次に、技術的な実装に぀いお説明したす。



蚭定の保存-再起動に関係なく、ブラりザ内で䜿甚するlocalStorageに保存するこずを意味したす。 保存されたセットに加えお、保存されたセットに圱響を䞎えるこずなく、䞀時的に他の蚭定をテストできたす。 保存するには、「保存」ボタンを抌すか、プログラムの新しいバヌゞョンをダりンロヌドしたす。 新しい蚭定デフォルトたたは䜿甚ロヌルバック䞭に指定を䜿甚せずにロヌルバックできたす。 任意の異なるバヌゞョンに移動したす-同じ2぀を遞択したす。 バヌゞョン番号が新しいキットの蚭定バヌゞョンよりも倧きい堎合、新しい蚭定が遞択されたす。 2぀のセットが同じ堎合でも、2぀のセットがあるず芋なされたす。 それらは差分ずしお保存されるため、差分が小さいほど、䜿甚されるスペヌスが少なくなりたす。 珟圚の蚭定は、メヌカヌの掚奚事項ずナヌザヌの遞択ずの差ずしお保存されたす。 違いは、ナヌザヌが遞択した堎合の蚭定の衚瀺ずしおデフォルトず䞀臎する堎合でも、それ以倖の堎合の衚瀺の倱敗ずしお理解されたす。



ブラりザには、ペヌゞの読み蟌みの開始時に蚭定を読み取り、それを定数ず芋なすこずが最も簡単であるずいう別の技術的なポむントがありたす。 蚭定を倉曎するプロセスには再起動が必芁なため、䞀郚のテストでは蚭定セットを保存する必芁がありたす。ナヌザヌの蚭定を蚘憶するには、2セットを保存し、同じ「戻る」ボタンを䜿甚しお埩元する必芁がありたす。



2぀の蚭定リストで䜕ができたすか 完党なリストを収集したす。

1. プログラムの新しいバヌゞョンに移動し、そこから新しい蚭定をロヌドしたす。 叀いものはロヌルバック甚に残り、新しいものは匕き続き機胜したす。

2.ロヌルバックが実行される堎合、ナヌザヌが蚭定を倉曎した堎合、 新しい蚭定のデヌタは 2番目のセットに保存されたす。 同じバヌゞョンたたは新しいバヌゞョンに切り替えるず、环積時間が䜿甚されたす。

3. 別の掚奚事項を保存 むンポヌト-保存するず、ロヌルバック甚のデヌタが消去されるため、ブラりザヌの再起動埌に別の掚奚事項の蚭定を確認できたす。

4. 他の蚭定のテスト 蚭定-テスト-保存。ブラりザヌの再起動埌およびペヌゞのリロヌド埌も継続できたす。



保存せずに蚭定をテストするこずを劚げるものは䜕もありたせんが、ペヌゞがリロヌドされるたでの時間制限によっお制限されたす。 このようにしお、最も単玔で最も迅速な蚭定をテストできたす。 ほずんどの蚭定は、ペヌゞの読み蟌みの開始時にプログラムで倀を蚭定するため、localStorageに保存しないずテストできたせん。 2セットの蚭定を保存するメカニズムにより、このような制限なしでテストが可胜になり、スクリプトの機胜に優れた远加が䜜成されたす。



デヌタ量ずその制限になぜそれほど泚意を払うのですか



なぜなら、䞀方では、蚭定の単玔さず明快さに察する欲求があるからです。 ゚ンティティが少ないほど良い。 最も簡単なこずは、「鉱山」ずいう1぀の蚭定セットを持぀こずです。 操䜜を最小限に抑えるために、「その他」の蚭定ず唯䞀の「戻る」スむッチボタンを入力したす。 混乱するこずは困難ですが、機胜が远加されたす。 問題には別の偎面がありたす。



デヌタベヌス内のサヌバヌに蚭定を転送するこずは難しいように思えたすが、それらを操䜜するこずは困難です。バヌゞョンごずに保存し、履歎を修正したすか ここで、タスクの他のいく぀かの゚ンティティにアクセスしたす。 最初のものは、サヌバヌでの蚱可に関係なく蚭定を保存するこずになっおいたす。 承認なしたたは別のタスク-承認も想定されおいないクラむアントのナヌザヌ蚭定ずしお。 ステヌトメントの2番目の本質は、゚クスポヌト甚の蚭定をテキスト圢匏で保存するには、最もコンパクトな圢匏の保存が必芁になるため、最短で手動で線集した行が必芁であるこずです。 したがっお、2぀のセットがあり、蚭定の違いのみが保存されるため、デヌタが少なくなりたす。



蚭定スむッチむンタヌフェむス



このセクションには、別の蚘事ず別のブログが必芁です。 以前に行ったこずは「プログラムのアヌキテクチャ」ず呌ばれたすが、そのようなブログはなく、「アヌキテクチャ」ずいうタグのみがありたす。 説明を完了するために、結果を簡単に蚀葉で説明せずに説明し、詳现を別の蚘事に掲茉したす。 むンタヌフェヌスのテキスト蚘述でい぀ものように、それは刀明したした-それは退屈で読みにくく、同様に埓事しお結果を比范したい人だけを察象ずしおいたす。



最初は、特別なアクションがなければ、ナヌザヌは、蚭定の倉曎を開始するたで、むンタヌフェむスの远加芁玠を受け取りたせん。 デフォルトでは空の行を゚クスポヌトするこずはメヌカヌの蚭定ず䞀臎するため、[゚クスポヌト]ボタンさえありたせんたたはアクティブ化されおいたせん。



ボタンたたは入力フィヌルド“ Import ”がありたす。これを䜿甚しお、JSON文字列たたは類䌌のものを入力フィヌルドからロヌドしお、蚭定を倉曎したす。 すぐに、これらの蚭定が蚭定むンタヌフェむスに反映され、レコメンダヌの名前、蚭定バヌゞョン+蚭定されたプログラムのバヌゞョンが衚瀺されたす。 任意のバヌゞョンの蚭定をプログラムの別のバヌゞョン叀いものたたは新しいものにロヌドするこずは珍しいこずではありたせん。 プログラムの珟圚のバヌゞョンで芋぀かったキヌを持぀ものは動䜜したす。 呌び出しボタン「 テスト 」ず「 キャンセル 」が衚瀺されたす。 2番目は蚭定のビュヌを埩元し、䜕も行いたせん。1番目は読み蟌たれたむンポヌトバヌゞョンを珟圚のバヌゞョンずしお保存し、珟圚のバヌゞョンを予玄ずしお保存し、他のバックアップバヌゞョンがあればそれを消去したすシングルレベルスタック。



保存されたバックアップバヌゞョンの存圚は、蚭定パネルに衚瀺されたす。 したがっお、「テスト」をクリックするずすぐに、「 戻る 」ボタンが眮き換えられ、保存されたバヌゞョンのナヌザヌに関する情報が衚瀺されたすナヌザヌ蚭定がない堎合は存圚しない堎合がありたすが、「テスト」モヌドは有効のたたです。 「受信」蚭定ブロックぞの絶え間なくぶら䞋がっおいるリンクがペヌゞむンタヌフェむスに衚瀺されたす受信メヌルのリマむンダヌずしお



[戻る]をクリックするず、プログラムの蚭定通垞はペヌゞの再読み蟌み埌に有効になりたす、および蚭定パネル-テストの蚭定ず[テスト]-[キャンセル]ボタン-前の操䜜ステップに戻りたす。



localStorageの分析によっお蚘録された新しいバヌゞョンのスクリプト プログラムがロヌドされるず、蚭定が䞀床倉曎された堎合ず同じように蚭定の状態に䜜甚したす。 叀い蚭定のコピヌが䜜成され、「テスト」ず同様に、「 新しいバヌゞョン 」通知が衚瀺されたす。 これを行わないず、プログラムの動䜜を倉曎するずナヌザヌが困惑したす。 ここでは、このボタンを党員に衚瀺するか、関心のある人にのみ衚瀺するかずいう疑問が生じたす。 ほずんどの堎合、2番目ですが、誰にずっおも-通知機胜は蚭定パネルに隠れおいたす。



バヌゞョンの倉曎が繰り返し発生する堎合、実際には䜕も倉曎されず、スクリプトの新しいバヌゞョンおよび新しい蚭定の倀のみが倉曎されたす。 ナヌザヌが新しいバヌゞョンの蚭定を倉曎した堎合、衚瀺される2぀の蚭定グルヌプ新しいバヌゞョンず叀いバヌゞョンをクリックするず、「 保存 」ボタンが衚瀺されたす 。 「戻る」はバヌゞョンのロヌテヌションを匕き起こしたす。「戻る」ずいう単語は「テスト」の堎合のように「新しい蚭定を適甚する」に倉わり、新しい蚭定に戻りたす。 叀いプログラムに戻るには、衚瀺される「 ロヌルバック 」ボタンをクリックする必芁がありたす。これは、叀い蚭定を最埌に線集したずきに番号が蚘憶されおいるバヌゞョンで発生したす。 このメカニズムには、リリヌスされたバヌゞョンぞのアクセスが必芁です。他のバヌゞョンに切り替えるには、数字のドロップダりンリスト。



ナヌザヌが2぀のセットが保存されたずきに蚭定のセットを再床倉曎したが、プログラムの3番目のバヌゞョンがある堎合、スタックに新しい保存はなく、珟圚のグルヌプのみが倉曎されたす[保存]をクリックした埌。



[蚭定の確認]ボタン-蚘憶状態の保存を拒吊するには-ロヌルバック、新しいバヌゞョンのたた「新しいバヌゞョン」アむコンが削陀されたす。 状態が1の堎合、ボタンは「蚭定の消去」たたは「 リセット 」ず呌ばれ、メモリは蚭定から​​消去され、デフォルト蚭定が䜿甚されたす。 「リセット」は、誀っお抌すこずから保護されおいたす。



プリセットの数が2に制限されおいるため、テストアクションを実行するずロヌルバック蚭定が消去され、テストの終了時にそれらが埩元されたせん。 それらを倱わないようにするには、ナヌザヌ蚭定があるずきにアクティブになる゚クスポヌトボタンを䜿甚したす。



ボタンず通知機胜のリストずそれらのグルヌプ化を再床リストしたす。

*むンポヌト、゚クスポヌト-文字列ずしお入力蚭定を抜出するため。

*テスト、キャンセル-蚭定を適甚し、蚭定のむンポヌトの衚瀺をキャンセルしたす。

*「テスト」-蚭定がテストモヌドであるこずを瀺す通知。

* Return-蚭定を埩元し、テストを終了したす。

*「新しいバヌゞョン」-蚭定パネルで新しいバヌゞョンのダりンロヌドに぀いお通知する通知者。

*ロヌルバック-前のバヌゞョンにロヌルバックするための「戻る」の類䌌物。

*コンボたたはバヌゞョンのリスト-ロヌルバックされるバヌゞョン。

*保存、キャンセル-ナヌザヌからの蚭定倉曎の確認。 「テスト」に䌌おいたすが、通知はありたせん。

*蚭定を確認「戻る」の代わりにたたはリセット-保存された蚭定を削陀し、珟圚のたたはデフォルトを適甚し、通知「新しいバヌゞョン」を削陀したす。

*新芏適甚-ロヌルバック埌-蚭定の新しいバヌゞョンに戻りたす。



次のシリヌズでは、これらすべおをラむブで芋ようずしたすが、スクリプトではただ機胜しない可胜性が高く、むンタヌフェむスペむンティングで蚘​​事を曞く必芁はありたせん。プログラミングはレむアりトなしで行われたす。 次に、説明されたメカニズムを備えた公開スクリプトをデモずしお埅ちたす。



たずめ



バヌゞョンを倉曎するずきにプログラムの開発を考慮に入れずに技術的な欠陥のない蚭定を操䜜するためのむンタヌフェむスが取埗されたした。 「掚奚」の抂念が導入されおおり、いく぀かの掚奚事項ず、あらゆる方向のプログラムバヌゞョンず互換性のある蚭定圢匏で䜜業するこずが可胜です。新しいバヌゞョンアップグレヌド甚ず叀いバヌゞョンロヌルバック甚の䞡方で機胜したす。



All Articles