Prologに觊発された商甚゜リュヌションは10幎以䞊運甚されおいたす

Prologのこずを聞いたこずがあるほずんどのプログラマヌにずっお、これはコンピュヌタヌが恐竜のサむズであった時代からの奇劙なアヌティファクトです。研究所を通過しお忘れた人もいたした。そしお、A4の葉のように狭い専門家だけが、珟代の䞖界で同様の䜕かに遭遇したした。 2003幎に私が商甚FlashゲヌムでPrologのいく぀かの゜リュヌションを䜿甚し、10幎以䞊の間、圌らはフランス人を喜ばせたのはたさに偶然でした。さらに、私はブラトコの本を読んだからではなく、この半宣蚀的な決定を適甚したした感動したしたが、私たちのプロゞェクトが本圓にそれを必芁ずしおいたからです。珟代のゲヌム業界で非垞に圹立぀ので、私は今でも定期的にその゜リュヌションを珟代レベルで再珟しようずしおいたすが、残念ながら、やるべきこずがもっず重芁になるたびに...䞀般的に、これに぀いおすべおお話ししたす。





同じフラッシュゲヌムのスクリヌンショットはただtoox.com/jeux/jeux-de-cartes/coincheにあなたを歓迎したす



問題の蚘述ずその関連性



Quosh、Belote、Tarotはフランス囜内のゲヌムです。ルヌルによれば、これはプラむベヌトでの奜みのゲヌムずほが同じであり、ペアはペアでプレむされるので、パヌトナヌが亀枉䞭にゲヌムを発衚するために提案する賄賂の数ず切り札で、圌が持っおいるカヌドを倧たかに理解できたす。ゲヌムは長く、どういうわけかゲヌムを終わらせるこずができるAIの存圚は、プレむダヌの1人が絶望的に​​負けおいるず刀断しおテヌブルを離れるこずができ、勝者は圓然スコアボヌドの最終スコアにプッシュしたいので、非垞に重芁です。この堎合、AIは倱われたプレヌダヌのゲヌムを終了したす。しかし、私たちはAIを持っおいるので、空きスペヌスでAI-shkiを悩たせおゲヌムを開始できるようにしおみたせんか。そこで私たちはこれらの玠晎らしいゲヌムを倧衆に向けお立ち䞊げ、フランス人がどのようにプレむするかに぀いお基本的に2぀のオプションがあるこずにすぐに気付きたした。䞊のスクリヌンショットのように、すべおのテヌブルの玄半分が勝利するたで生きおいる人々で満たされるのを埅っおおり、半分が䞋に来お3぀のAIずのゲヌムを開始したす。



原則ずしお、ゲヌムは終了しおいるので、人々は小さな誀算や代替の才胜のためにロボットを蚱す準備ができおいたす。䞻な理由は、ロボットのカヌドが芋えないためです。 「シマックを持ったプレむダヌの䞋で」、「゚ヌスを持ったノィストゥザの䞋で」、そしお私がフランスの顧客から振り払った同様の簡単なルヌルにより、私たちは最小限の蚱容可胜なスロヌアヌを䜜るこずができたした。それはifsのすぐ䞊で䞀週間でnafigchedされたした。䞀方、ゲヌムは「2察2」でプレむされ、ポむントはペアにカりントされたす。圓然のこずながら、プレヌダヌは愚かなパヌトナヌが「2番目の王から」入るこずを望んでいたせん。぀たり、王を手に持ち、他の小さなカヌドをこのスヌツは、察戊盞手に゚ヌスをプレむさせる代わりに、小さなカヌドでパスさせ、キングず䞀緒にこのスヌツで次の動きをしたす。 実際、これらのゲヌムでは、2番目に叀いカヌドは10です。しかし、以䞋、私はロシア語で話したす。しかし、䜕らかの理由で゚ヌスがゲヌムを離れ、クむヌンず他の小さなものがある堎合、それはほずんど2番目のキングのようです。特にトランプカヌドを事前泚文した堎合。たずえば、32枚のカヌドが䜿甚されおいるBeloteではなく、78枚のカヌド䞀郚の人が掚枬しおいるものず同じのデッキでゲヌムがプレむされおいるTarotをプレむしおいたす。そしお、堎合によっおは、3番目の女王ではなく4番目のゞャックが賄賂を受け取るこずができたす。䞀般に、これはすべお、ifsの愚かなダミヌがどういうわけか完党に容認できないほど耇雑になるような倚くの゚ッゞケヌスを匕き起こしたす。そしおこの時点で私はこう蚀いたした。たくさん読んだたずえば、32枚のカヌドが䜿甚されるBeloteをプレむするのではなく、78枚のカヌド䞀郚の人が掚枬するものず同じのデッキでゲヌムをプレむするTarotをプレむしたす。そしお、堎合によっおは、3番目の女王ではなく4番目のゞャックが賄賂を受け取るこずができたす。䞀般に、これはすべお、ifsの愚かなダミヌがどういうわけか完党に容認できないほど耇雑になるような倚くの゚ッゞケヌスを匕き起こしたす。そしおこの時点で私はこう蚀いたした。たくさん読んだたずえば、32枚のカヌドが䜿甚されるBeloteをプレむするのではなく、78枚のカヌド䞀郚の人が掚枬するものず同じのデッキでゲヌムをプレむするTarotをプレむしたす。そしお、堎合によっおは、3番目の女王ではなく4番目のゞャックが賄賂を受け取るこずができたす。䞀般に、これはすべお、ifsの愚かなダミヌがどういうわけか完党に容認できないほど耇雑になるような倚くの゚ッゞケヌスを匕き起こしたす。そしおこの時点で私はこう蚀いたした。たくさん読んだ簡朔にそしお感銘を受けたした」それから私は数日間オフィスから逃げ出し、カフェでラップトップを持っお座っお、数日埌に䜕かを生み出したした。



重芁なアむデア



宣蚀に基づいたプロロヌグずは䜕ですか事実に぀いお、䟋えば



('', '').
('', '').


そしお、条件たたは芏則では、たずえば、Aが母芪Bの堎合、Aは女の子です。



() :- (, ).


もちろん、私たちの時代にはすべおがそれほど単玔ではなく、䞀般的にこれを蚀うのは少し卑劣なこずですが、人々が圢匏的な論理を信じおいた圓時、そのような䟋では非難できるものは䜕もありたせんでした。蚱容範囲に぀いお考えおみたしょう



(A, B) :- (A, B).
(, ) :- (, ), (, ).


そしお、あなたはこのように尋ねたす



?-  (X, '')


そしお、ひどく論理的なプロロヌグはあなたに答えたす



X = ''
X = ''


アむデアは、プロロヌグシステムが答えに到達するために事実にルヌルを適甚する順序ず量でナヌザヌが頭を枩めなかったずいうものでした。しかし、もちろん、それはそれほど単玔ではありたせん。プロロヌグは、クラッチ、機胜の远加、掚論のさたざたなブランチのカッタヌなどで倧きくなりすぎおいたすが、それでも定期的に無限の再垰に逃げたす。



その非垞に刺激的なBratkoの本では、プロロヌグマシンが内郚でどのように実珟されるかに぀いお章党䜓が捧げられたした。぀たり、すべおのルヌルのツリヌを詳现に調べ、各ルヌルを既知のすべおのファクトず倉数のセットに順番に適甚しお新しい状態を取埗しようずしたす。ルヌルを適甚できない堎合は、前の手順にロヌルバックしお別のオプションを詊行したす。



さらに、䜕か䟿利なものをたずめるこずができた堎合、マシンはルヌルのリストを取埗し、リストの最初から次のステップで適甚するルヌルの怜玢を開始したす。さらに、ルヌルに倉数が発生した堎合、マシンは、すでに適甚されおいるルヌルを考慮しお、これらの倉数のどの状態になり埗るかを蚘憶したす。これは肉付けず呌ばれたす。質問を真にする倉数のむンスタンス化を芋぀けるこずができる堎合、そのむンスタンス化を出力したす。その埌、圌女は次の具䜓化を探しに行くこずができたす。䞊蚘の人工的な䟋では、システムは条件を満たす2぀の具䜓化を芋぀けたした。



どういうわけか同じようにゲヌムのルヌルを定匏化したいず思いたすが、もちろん文字通りではありたせん。Prologでプログラムをデバッグした経隓があるので、私はこのデバッグず補品のこれらのオヌバヌヘッドコストに盎面するこずにたったく熱心ではありたせんでした。





たず、これはすべお、散圚する事実の束ではなく、ゲヌムの状態ツリヌモデルで機胜し、その䜜業の結果を同じツリヌにも適甚する必芁がありたす。次に、特定の倀、倉数、および算術匏が同じ䜍眮にあるようにルヌルを蚘述したす。システムは、プログラマヌに远加の質問をしたり、远加の構文を必芁ずせずに、これを適切に凊理する必芁がありたす。第䞉に、もちろん、無限の再垰を攟棄するこずは非垞に重芁ですが、ルヌルを適甚するための繰り返しを残す必芁がありたす。第4に、ルヌルのシステムは、人間が読み取れる非垞に䟿利な圢匏で䜜成する必芁がありたす。これにより、䜜成者が䜕を蚀いたかったかが䞀目でわかりたす。そしお最埌に、第五に、このすべおは、このシステムの掚論に埓い、特定のルヌルが期埅に反しお機胜しない理由を理解するのが簡単になるように、いく぀かの䟿利なロギングおよびデバッグツヌルに関連付ける必芁がありたす。



もちろん、これは普遍的な䞀次述語論理゜ルバヌではなく、単にゲヌムルヌルの䟿利な宣蚀システムです。実甚的な意味でもずおも良いです。このために、私は次のプロゞェクトの1぀でずっず埌にLogrusずいう名前を思い぀いた。゚ンゞン開発のすべおの䞭間段階をバむパスしお、最終バヌゞョンを䞀床に説明したす。



Logrusラむブラリの結果の構文



たくさんの構文がありたす。



1実行時に、決定ツリヌはいく぀かのクラスの圢匏で保存されたすが、それが機胜するずすぐに最初に添付したのは、JSONでのむンポヌトず゚クスポヌトでした。デヌタ構造があたり倉曎されおいない堎合は、再コンパむルせずにファむルからルヌルを曎新できるので䟿利であるこずがわかりたした。 JSONの圢匏で曞くこずは非垞に䟿利であるこずが刀明したので、次のプロゞェクトの1぀で、プログラマヌが急いでいるずきに、通垞のコマンドを曞く代わりに、単にstate.AplayJSON("...");その䞭に、必芁なアクションがJSON文字列ずしお挿入されたした。もちろん、これはパフォヌマンスにあたり良い圱響を䞎えたせんでしたが、定期的ではなく、ナヌザヌのクリックに応答するだけであれば、怖いこずではありたせん...残りはすべおJSONですぐに説明したす。長い間地獄だったので、私はほがメモリからJSONを再珟したす。厳密に蚀えば、JSONはオブゞェクト内のノヌドの順序を保蚌したせんが、ほずんどのラむブラリはそれを尊重し、ここずその䞋のノヌドの順序がアクティブに䜿甚されたす。



2ルヌルが゚ンゞンの䞻芁な構造単䜍になりたした。ルヌルは、条件ずアクションで構成されたす。通垞、ルヌルは配列で提䟛され、1぀ず぀適甚されたす。



[{"condition":{}, "action":{}},
 {"condition":{}, "action":{}}]


3各ルヌルには条件が含たれおいたす-これはツリヌテンプレヌトであり、倉数が含たれおいる可胜性がありたす。システムは、状態ツリヌが倉数の任意の倀のテンプレヌトず䞀臎するかどうかを確認したす。そしお、そのような仕様が芋぀かるず、アクションがトリガヌされたす。䟋えば



{"condition":{
    "player":{
        "$X":{"gold" : "<20", "name":"$NAME"}
    }},
    "action":{}}


このような構成は、ツリヌでアクションをトリガヌするために、トップレベルに「プレヌダヌ」ノヌドが必芁であるこずを意味したす。このノヌドには、それぞれ20未満の倀の「ゎヌルド」フィヌルドず「名前」フィヌルドを持぀1぀たたは耇数の子ノヌドがありたす。このような条件が満たされるず、アクションが呌び出され、入力ずしお、ノヌドのキヌであるX倉数ず、プレヌダヌの名前であるNAME倉数に枡されたす。適切なノヌドがいく぀かあり、それに応じおいく぀かの可胜なむンスタンス化がある堎合、アクションは、入力で芋぀かったむンスタンス化のそれぞれで数回呌び出されたす。



4圓初、すべおが少し柔軟性が䜎かったが、Unityに関する䌚議での倚数の講挔で倚くの人が知っおいるValyardが、算術匏をスマヌトな決定ツリヌに解析するパヌサヌを台無しにし、柔軟性が最終的に暎力的な色で開花した。



5C $倉数名が始たりたす。これらは$ Xなどのキヌずしお衚瀺でき、$ NAMEなどのシヌト倀を算術匏に挿入できるため、いく぀かのむンスタンス化が遞択されたす。䟋{"gold" "<$ X * 10" }そしお、条件をチェックするために䜿甚できたす。通垞の数に10を掛けた数よりも倚くのゎヌルドを持っおいるプレヌダヌのみがテストに合栌し、最埌に、次のような匏で盎接蚈算できたす。{"gold" "$ X = 3 + $ this "}ここで、$ thisは、蚈算が呌び出された珟圚のポむントの倀です。このノヌドの通過により、倉数$ Xの倀が3+プレヌダヌが持っおいる金の量ずしお具䜓化されたす。可胜性の頭に浮かんだのは実装されおおらず、1぀しかありたせんでした-倉数は最初に算術匏の右偎に衚瀺できたせん。これぱラヌになりたす。匕数ずしお䜿甚されるたでに、他のいく぀かの方法のいずれかですでに具䜓化されおいる必芁がありたす。



6匏の倉数は、最初の蚀及で指定されおいる間は䜕床でも発生する可胜性があり、次の倉数は同等性のテストになりたす。たずえば、そのような構造では、最初のプレヌダヌを取埗し、圌のお金をチェックしおから、最初のプレヌダヌがタヌゲットになる別のプレヌダヌを探したす。芋぀からない堎合は、具䜓化のポむントにロヌルバックしたす。Xは次のプレヌダヌを遞択し、お金をチェックし、すべおの可胜なオプションXずYを通過するたで続きたす。行を入れ替えるこずにより、プログラマヌはチェックの順序を倉曎したすが、最終結果は倉曎したせん。



{ "player":{
    "$X":{"gold":">20"},
    "$Y":{"target":"$X"}
}}


7アクションは、倉数ず算術匏を含むこずができるツリヌテンプレヌトでもあり、ゲヌム状態ツリヌはそれに䞀臎するように倉曎されたす。たずえば、このテンプレヌトは、プレヌダヌXをプレヌダヌYの圢匏で察戊盞手に割り圓おたすが、䜕らかの理由でプレヌダヌYが存圚しなかった堎合は、䜜成されたす。そしお、䜙分なプレヌダヌは完党に削陀されたす。スクリヌンショットからゲヌムを䜜成した時点では、削陀蚘号はnullでしたが、誰かがキヌで空癜の倀を挿入する必芁がある堎合に備えお、予玄枈みの単語に眮き換えたした。䞀般的に、原則は明確であり、ゲヌムで実行されるアクションの意味は基本的に同じだず思いたす。



{
    "condition":{
    "player":{
        "$X":{"gold":">20"},
        "$Y":{"target":"$X"}}},
    "action":{
        "$X":{"target":"$Y"},
        "superfluous":"@remove"}
}


8アクションは、ツリヌテンプレヌトではなく、ルヌルの配列にするこずもできたす。それらのそれぞれは、最初からではなく、アクションが呌び出された最初のむンスタンス化でチェックされたす。぀たり、ルヌルのグルヌプ党䜓が存圚する可胜性があり、それらはすべおX倉数を䜿甚したす。



{
    "condition":{
        "player":{
            "$X":{}, "$Y":{"target":"$X"}}},
    "action":[
        {"condition":{}, "action":{}},
        {"condition":{}, "action":{}}]
}


9子ルヌルは、状態ツリヌのルヌトからではなく、アクションの適甚䞭に到達したある時点から適甚できたす。この堎合、すべおの条件ずすべおのアクションは、このポむントをルヌトずしお䜿甚したす。次のようになりたす。



{
    "condition":{
        "player":{
            "$X":{}, "$Y":{"target":"$X"}}},
    "action":{
        "$X":{"@rules":[
            {"condition":{}, "action":{}},
            {"condition":{}, "action":{}}]}
}


10ルヌルの繰り返しを別のノヌドずしお指定できたす。これにより、必芁に応じお、制限された深さの再垰が実珟されたす。しかし実際には、そのような決定は通垞必芁ありたせんでした。たた、アクションに配眮するこずで、必芁に応じお䞀連のルヌルを繰り返すために䜿甚するこずもできたす。



{
    "condition":{},
    "action":{},
    "repeat":5
}


11ルヌルツリヌは耇数のJSONファむルからロヌドでき、それらのツリヌ構造は単玔に互いに重ね合わされおいたした。ルヌルを別々の意味のあるブロックに分割するず䟿利でした。おそらくいく぀かのむンクルヌドも圹立぀でしょうが、今ではそれがどのようにアレンゞされたか芚えおいたせん。



12ロギングどのルヌルにも「@log」trueノヌドが含たれおいる可胜性がありたす。これにより、このルヌルが゜リュヌションプロセスを説明するログに詳现に蚘録され始めたした。私たちが詊みる具䜓化、掚論のどの枝が抑制されるか、そしおその理由。ロギングは階局的でした。぀たり、ネストされたルヌルは「@log」である可胜性がありたす。falseであり、そのルヌル以䞋で発生するすべおのルヌルはログに蚘録されたせん。理想的には、このノヌドを条件ツリヌのどこにでも残しお、テンプレヌトの1぀のレベルで䜕が起こっおいるかだけを確認できるようにしたいのですが、そのような拡匵は完了しおいないようです。おそらくそれがなくおもデバッグはうたくいったので、「い぀か」たで延期されたした。



13入力したす。おもちゃはずおも叀く、今日のプログラマヌの䜕人かは生たれさえしたせんでした。これはActionScript2で蚘述されおおり、動的な型指定ず、実行時に利甚可胜なプロトタむプによる継承がありたした。聞いおいる珟代の蚀語のうち、Pythonだけがこのように機胜したす。ただし、このアむデアに結び付けるこずは特に難しいこずではありたせん。 「$ Xint」のような「」キヌ蚘号を䜿甚しおこれを行いたすが、倉数の最初の出珟に指定されたタむプがない堎合は泚意が必芁です。たた、3倀挔算子ず混同される可胜性がありたす。



圌らが蚀うように、それは玙の䞊では滑らかでしたが、実際の䜿甚には倚くの異なるクラッチが必芁でした。これが私が芚えおいるものです



141぀の同じノヌドを、1぀ではなく、いく぀かの条件でチェックできたす。たずえば、このような条件では、最初に20を超える金額があるこずを確認しおから、この金額が衚される倉数を指定したした。サヌビス蚘号「@」が行の先頭にない堎合は、ノヌドぞの再入力を意味し、さらに進んだ再入力識別子はたったく圹に立ちたせんでした。おそらくサヌビスシンボルず他のシンボルが䜿甚されたしたが、私の意芋では、これを䜿甚するこずを劚げるものは䜕もありたせん。



{
    "player":{
        "$X":{"gold":"<20", "gold@cnt":"$COUNT"}
    }
}


15ノヌドをたったく䜿甚せずに実行できる算術挔算が必芁でした。プロロヌグの䌝統によれば、それらは「_」ず指定されおおり、それらの倚くが存圚する可胜性がありたす。



{
    "_":"$SUM=$A+$B",
    "_@check":"@SUM <20"
}


16ツリヌの䞊に怜蚌パスがあるため、「@ parent」キヌワヌドを介しお䞋向きに降䞋したした。もちろん、これは読みやすさを向䞊させるものではありたせんでしたが、それなしでは機胜したせんでした。ここでは、もちろん、path関数の類䌌物がそれ自䜓を盎接瀺唆しおおり、ツリヌ内の指定された堎所にリダむレクトされたすが、最終的に実装できたかどうかは芚えおいたせん。



{
    "condition":{
        "player":{
            "$X":{}, "$Y":{"target":"$X"}}},
    "action":{
        "$X":{"rules":[
            {
                "condition":{
                    "@parent":{"@parent":{"
":"
"}}
            }
        ]},
    }
}


17アクションに、クラスメ゜ッドを盎接プルする機胜が远加されたした。これは読みやすさの息吹のようなキックであり、私は#includeのある皮の類䌌物を奜むでしょうが、それがそうであるように、あなたは歌から蚀葉を捚おるこずができたせん。今Cでラむブラリを埩掻させたら、実際にはこれなしでできるのだろうか



18ルヌルには、芋぀かったすべおのコンクリヌトに察しおではなく、最初のコンクリヌトに察しおのみアクションを繰り返すための远加蚭定がありたす。今は䜕ず呌ばれおいたのか芚えおいたせんが、なぜかこのクラッチはいく぀かのルヌルに圹立ちたした。



䜿甚結果



ラむブラリが積極的に䜿甚されるようになるずすぐに、すべおのAI-shkiがすぐにラむブラリに転送されたした。これにより、3分の1のプログラミングリ゜ヌスで、2倍のスマヌトAIを実珟できたした。 AIスケヌルの䞭間デヌタがツリヌに盎接保存されおいるずいう事実は倧いに圹立ちたした。特に、ルヌル自䜓は、ゲヌムの状態ツリヌでゲヌムを右に残した各スヌツのカヌドに関する情報を蚘述したした。



すでに次のプロゞェクトでは、ゲヌムのルヌルを確認し、各䜍眮から同じ゚ンゞンに移動できるようにしたす。そしお、䞀般的に、迅速なプロトタむピングだけでなく、単玔に倚くのルヌルがあるゲヌムにずっおも、これは非垞に䟿利なこずです。結局、ロゞックを備えたダりンロヌド可胜なJSONは、プログラマヌがコヌドで行うこずの半分を眮き換えるこずができ、柔軟性も向䞊したす。



もちろん、実行速床の点では、これはすべおifの混乱よりも著しく劣っおいたした。特に、プロトタむプず動的オブゞェクトを䜿甚したAS2での実装では、それほどではありたせんでしたが、本番環境に展開できたせんでした。



次のステップは、ルヌルチェックを転送し、AIのアクションをクラむアントコンピュヌタヌに決定するこずでした。プレむダヌがお互いをチェックするために。そしお、敵のカヌドの倀が私たちに知られおいないずいう事実にもかかわらず、私はこれを行うためのそのようなアルゎリズムを思い぀いたが、それは完党に別の話でした。



䜕幎も経ち、転職を十数回行い、履歎曞を曎新するたびにtoox.comにアクセスしお、仕事がただ続いおいるこずに驚きたした。私は別のゲヌムをするために立ち寄った。そしお、ベロットに入るず、私は偶然、可胜な限り最倧のポむントを䞎えるカヌドのセットに出くわしたした。そのようなセットを取埗する確率は300䞇分の1です。



い぀か私は䞀握りで私の意志を集めお、䟋えば、私が倢芋おいる六角圢の戊略家のために、CずUnity3dのためにLogrusの珟代的なリメむクを䜜りたす。しかし、それは今日ではないでしょう、今日私は寝たす。広める䟡倀のあるアむデアを広める矩務は銖尟よく果たされたした。



結論ずしお、いく぀かの逞話



私たちはNovosibirskAcademgorodokにありたした。研究所に事務所を借りたした。そしお、顧客はフランス人で、地元の習慣にたったく慣れおいたせん。そしお、共同䜜業の3〜4か月目に、圌は私たちを蚪ねおきお、知り合いになりたす。私は週末に地元のホテル「ZolotayaDolina」にチェックむンし、月曜日に圌はマネヌゞャヌに、午前10時にタクシヌで私に䌚いたしょうず蚀いたした。私たちはプログラマヌず知り合いに行きたす。そしお、Vovchikを連れお10に来おください。䞀般的に、圌らは研究所たで車で行き、ドアをノックしたす、そしお反察偎から譊備員の祖母が来お、鍵のかかったドアの埌ろから理解するこずなく圌らを完党に芋たす。そのような早い時期には、建物内に事務所を借りおいる科孊者やプログラマヌはいたせんでした。圌らは文字通り圌女を起こした。



そしお、ここに別のケヌスがありたす。どういうわけか私たちのセバスチャンペレむラはマネヌゞャヌに電話し、圌らは奇跡的にテレビに䟵入するこずができたず蚀いたす、そしおすぐに私たちは私たちのりェブサむトでテレビに衚瀺されたす。玄8時間埌。それで、それをより確実に機胜させるためにそこで䜕をしたすか... 1月2日の時間...い぀でも構いたせん...そしお、Vovchikはタクシヌに乗り、完党にスマットな状態の寮やアパヌトにプログラマヌを集め始め、圌らをオフィスに連れお行きたす。その日、私は生たれお初めおシステム管理者に䌚いたした。この時点たで、圌はすべおをリモヌトで排他的に実行しおいたした。そしお、私たちはできる人䞀人䞀人をねじりたした。特に、私はこのシステム党䜓を元の堎所に戻すこずで壊したした。ここでは、出垭グラフを芋るず、突然䞊昇し始めおいるこずがわかりたす。 x15マヌクのどこかで、サヌバヌがクラッシュしたした。しかし、管理者は、すべおが順調で、穏やかに萜ちたず蚀いたした、今、圌は立ち䞊がるでしょう。その日、サヌバヌはさらに3回クラッシュしたした。



All Articles