विषयवस्तु पर जाएँ
KAMOUniverse

परिवर्तन लॉग

क्या नया है.

यह जहाज के रूप में, प्लेटफार्म के हर सुधार.

  1. · KBService

    साझा स्वीप को लॉक करें और दो फली चलाएं

    प्रत्येक @Scheduled स्वीप यहाँ जिसका प्रभाव साझा किया गया है, अब एक नाम वितरित लीज लेता है कुछ भी करने से पहले सिंगलटनटास्करूनर, इसलिए यह एक बार प्रति बार बेड़े में चला जाता है। फली। यह एकमात्र चीज थी जो इस सेवा को एक प्रतिकृति पर रखने वाली थी - कहीं भी कोई शेडलॉक नहीं है इस मंच, इसलिए प्रतिकृति गणना क्या झाड़ू सही बनाया था। @transactional और दोस्त बाहरी विधि पर रहते हैं जहां प्रस्तुत: स्प्रिंग उन्हें एक साथ लागू करता है प्रॉक्सी और आंतरिक विधि इस माध्यम से पहुंची है:: संदर्भ, जो कभी एक के माध्यम से नहीं जाता है। उन्हें आगे बढ़ने से स्वीप चुपचाप गैर ट्रांसेक्शनल हो जाएगा। प्रतिकृतियां 1 -> 2, KlusterServices में एक PodDisruptionBudget के साथ तो एक नोड नाली प्रतीक्षा करता है।.

  2. · ESigService

    साझा स्वीप को लॉक करें और दो फली चलाएं

    प्रत्येक @Scheduled स्वीप यहाँ जिसका प्रभाव साझा किया गया है, अब एक नाम वितरित लीज लेता है कुछ भी करने से पहले सिंगलटनटास्करूनर, इसलिए यह एक बार प्रति बार बेड़े में चला जाता है। फली। यह एकमात्र चीज थी जो इस सेवा को एक प्रतिकृति पर रखने वाली थी - कहीं भी कोई शेडलॉक नहीं है इस मंच, इसलिए प्रतिकृति गणना क्या झाड़ू सही बनाया था। @transactional और दोस्त बाहरी विधि पर रहते हैं जहां प्रस्तुत: स्प्रिंग उन्हें एक साथ लागू करता है प्रॉक्सी और आंतरिक विधि इस माध्यम से पहुंची है:: संदर्भ, जो कभी एक के माध्यम से नहीं जाता है। उन्हें आगे बढ़ने से स्वीप चुपचाप गैर ट्रांसेक्शनल हो जाएगा। प्रतिकृतियां 1 -> 2, KlusterServices में एक PodDisruptionBudget के साथ तो एक नोड नाली प्रतीक्षा करता है।.

  3. · AIService

    साझा स्वीप को लॉक करें और दो फली चलाएं

    प्रत्येक @Scheduled स्वीप यहाँ जिसका प्रभाव साझा किया गया है, अब एक नाम वितरित लीज लेता है कुछ भी करने से पहले सिंगलटनटास्करूनर, इसलिए यह एक बार प्रति बार बेड़े में चला जाता है। फली। यह एकमात्र चीज थी जो इस सेवा को एक प्रतिकृति पर रखने वाली थी - कहीं भी कोई शेडलॉक नहीं है इस मंच, इसलिए प्रतिकृति गणना क्या झाड़ू सही बनाया था। @transactional और दोस्त बाहरी विधि पर रहते हैं जहां प्रस्तुत: स्प्रिंग उन्हें एक साथ लागू करता है प्रॉक्सी और आंतरिक विधि इस माध्यम से पहुंची है:: संदर्भ, जो कभी एक के माध्यम से नहीं जाता है। उन्हें आगे बढ़ने से स्वीप चुपचाप गैर ट्रांसेक्शनल हो जाएगा। प्रतिकृतियां 1 -> 2, KlusterServices में एक PodDisruptionBudget के साथ तो एक नोड नाली प्रतीक्षा करता है।.

  4. · kamo-internal

    कोडर सत्र चल गोले के बगल में, और एक स्क्रॉलबार जो दोनों सिरों तक पहुंचता है

    ## टर्मिनल अब एक मशीन के दो विचार हैं दो शीर्ष स्तर के टैब के बजाय उप-टैब, क्योंकि वे दो गंतव्य नहीं हैं: एक टर्मिनल एक ऐसा खोल है जो सत्र चल सकता है, एक सत्र एक वार्तालाप है इसमें शेल हो सकता है। स्विच एक सेगमेंटेड कंट्रोल है, दूसरा MUI टैब नहीं स्ट्रिप - दो टैब बार क्रोम के रूप में पढ़ा गया, एक खंडित रेल "में से एक के रूप में पढ़ा यह दो है, जो यह क्या है। प्रत्येक आधा अपना खुद का निर्माण करता है, इसलिए एक एकल `+` up in navigator header (जो हमेशा उनमें से एक का मतलब हो सकता है) अब है केवल पतन के दौरान दिखाया गया है, जहां न तो पंक्ति फिट होती है। टर्मिनल्सवर्कबेंच को इंटरेक्शन सेंटर और मैक्सिमम्ड द्वारा साझा किया जाता है नेविगेटर, वास्तव में टर्मिनल के रूप में पहले से ही पाणे थे, इसलिए दो बहाव नहीं कर सकते। यह टर्मिनल सूची को फिर से मतदान के बजाय एक प्रोप के रूप में लेता है - दोनों सतहों पहले से ही इसे पकड़ो। ## दो क्रियाएँ, और कौन सी स्थिति है? एक सत्र पहले से ही टर्मिनल में चल रहा है **ओपन ** और उस विंडो को बढ़ाता है। वह नहीं कहता है कि **Resume* और एक टर्मिनल खुलता है जो इसे वापस लेता है। कभी भी दोनों ही नहीं, और कभी भी एक विकलांग पंक्ति नहीं। एक सत्र को फिर से शुरू करना जो पहले से ही है संलग्न एक वार्तालाप दो प्रमुख देता है: दोनों CLIs उसी के लिए लिखते हैं ट्रांसक्रिप्ट और दूसरा खुलता है कि वह फिर से खेलना जो पहले बीच में है। नियम एक कार्य है, `terminalForSession`, इसलिए कुछ भी इसे दो बार जवाब दे सकता है अलग-अलग मशीन एक रसीद छोड़ देता है जब यह एक तैयार करता है - और ऐसा कहते हैं कुछ है कि अभी तक लिखा नहीं किया गया है फिर से शुरू करने की पेशकश की तुलना में। सत्रों को दिन-प्रतिदिन समूहित किया जाता है। उनमें से चार सौ एक फ्लैट स्तंभ में एक दीवार है; इस सप्ताह के पहले / इससे पहले एक सूची है जिसे आप कल दोपहर में पा सकते हैं। सूची आसपास रहती है नियम: टर्मिनल सूची के रूप में समान पंक्ति ज्यामिति और 3px रेल, और समान typographic विभाजन — क्या एक व्यक्ति या मॉडल लिखा है इंटरफ़ेस में सेट किया गया है सैन, क्या मशीन रिपोर्ट इम्युलेटर के मोनो में सेट की गई है। यहाँ कुछ भी अनुमति मोड के लिए पूछ सकते हैं। प्रत्येक सत्र के साथ शुरू होता है बायपास की अनुमतियां और यह देव मशीन पर फैसला किया जाता है; अनुरोध नाम जो सत्र और कुछ नहीं। एक परीक्षण पिन है कि ग्राहक ऐसा नहीं हो सकता है पैरामीटर ## टर्मिनल का अपना स्क्रॉलबार एक्सटर्म अपने व्यूपोर्ट पर ब्राउज़र के ग्रे बार को आकर्षित करता है, जो केवल "एक बिट" की पेशकश कर सकता है। ऊपर और "एक बिट नीचे"। टर्मिनल में दो छोर दो और स्थान नहीं हैं - वे वास्तव में दो जगह हैं जो आप चाहते हैं, जो आप दौड़ते हैं और क्या करते हैं? लाइव प्रॉम्प्ट - इसलिए प्रत्येक को एक बटन मिलता है: ऊपर तीर के ऊपर कूदना शुरू करना, नीचे तीर के नीचे कूदने के लिए, तीर पर प्रेस-एंड-होल्ड दोहराने के साथ, ट्रैक पर क्लिक-टू-पेज और एक ड्रैगेबल अंगूठे। xterm के अपने बार छिपा हुआ है, नहीं फिर से तैयार; viewport अभी भी स्क्रॉल, तो पहिया, trackpad और स्पर्श अपरिवर्तित हैं। जब आउटपुट फोल्ड के नीचे पहुंच गया है तो कूद से अंत बटन रोशनी। एक टर्मिनल इसके बाद रुक गया है वास्तव में ऐसा लग रहा है जो समाप्त हो गया है, और यही है केवल एक चीज जो बार जानता है कि पाठक नहीं देख सकता। ## सत्यापन पूर्ण गेट: 14 स्रोत गार्ड और 5322 परीक्षण, प्लस टीएससी। नया यूआई भी था एक स्थानीय दोहन से एक ब्राउज़र में प्रस्तुत किया गया है और बजाय माना जाता है - जो एक पारदर्शी क्रिया चिप पकड़े गए जो शब्द के माध्यम से truncated शीर्षक दिखा रहा है "Resume", और एक खाली राज्य जिसने एक मशीन को चार सौ के साथ फ्लैश किया क्योंकि `loading` अभी भी प्रभाव रन से पहले प्रतिपादन पर झूठी है। axe-core रिपोर्ट शून्य WCAG AA नए घटकों में उल्लंघन करता है। The वर्कबेंच अपने स्वयं के मोशनकॉनफिग का संचालन करता है: इंटरेक्शन सेंटर अपने पैनल को लपेटता है एक में, नेविगेटर नहीं करता है, और एक के बाहर फ्रेमर गति सीधे बिना किसी शब्द के बेहतर-कम-गति के माध्यम से। CI की आवश्यकता के रूप में पहली बार, शब्दकोश कुंजी उतरा।.

  5. · SecurityService

    एक सदस्य के कोडर सत्र की सूची और एक टर्मिनल में एक खुला

    टर्मिनलों के बगल में दो एंडपॉइंट, और वे उसी नियम का पालन करते हैं जो करते हैं: लिनक्स खाते को कॉलर के ओवन सत्र से हल किया गया है और कोई खाता नाम नहीं है कभी अनुरोध से लिया जाता है। इसलिए सदस्य केवल अपने को देख सकते हैं या फिर खोल सकते हैं स्वयं के सत्र - वहाँ कोई आईडी नहीं है वे आपूर्ति कर सकते हैं कि किसी तक पहुंच जाएगा इसलिए, क्योंकि खाता वह हिस्सा नहीं है जो वे आपूर्ति करते हैं। Unreachable dev मशीन $ 200 के साथ वापस आती है: True` और खाली सूची, जैसा कि टर्मिनल लिस्टिंग करता है: "मशीन नीचे है" कुछ टैब है कह सकते हैं, जहां त्रुटि कुछ भी कह सकती है। नया सत्र या एक मौजूदा एक फिर से शुरू होता है। जब POST रिटर्न करता है तो कुछ भी नहीं चलता है। मशीन सत्र को नीचे लिखती है और एक रसीद वापस हाथ; टर्मिनल विंडो कंसोल अगले प्रस्तुत करता है साधारण टिकट, और रसीद क्या इस सत्र में टर्मिनल बदल जाता है - उसी हैंड-ऑफ Send-to-AI उसी टर्मिनल डिस्पैच रेजिस्ट्री के माध्यम से उपयोग करता है। विंडो आईडी को यहां नामित किया गया है क्योंकि दोनों हिस्सों को इसकी आवश्यकता होती है: कंसोल को खोलने के लिए खिड़की, रसीद की कुंजी करने के लिए रजिस्ट्री, और tmux को फिर से कनेक्ट होने से बचने के लिए अनुमति देने के लिए मौजूद है। यह समापन बिंदु एक कमांड, एक मॉडल, एक प्रयास या अनुमति मोड को व्यक्त नहीं कर सकता है। उनमें से प्रत्येक मशीन का फैसला करना है। तार क्या है जो पार करता है सत्र, और कुछ नहीं - इसलिए `bypassPermissions`, जो इनमें से प्रत्येक एक सत्र के साथ चलता है, यहाँ एक पैरामीटर नहीं है और एक नहीं बन सकता है। टर्मिनल सारांश बढ़ जाता है `coderSessionId`: सत्र एक खोल चल रहा है, पढ़ा tmux उपयोगकर्ता विकल्प एजेंट सेट बंद। यह वही है जो कंसोल को कहते हैं "पहले से खुला" बजाय एक बातचीत को फिर से शुरू करने के बजाय जो दूसरे में रहता है ऐसा नहीं है कि यह कहाँ से हो सकता है। खोलने के रूप में बिल्कुल एक खोल खोलने के रूप में लेखा परीक्षा है - एक ही घटना प्रकार, एक ही उच्च गंभीरता - क्योंकि यह एक है। `mvn test` के साथ सत्यापित; जावा सीआई रन नहीं, इसलिए एक लाल रेपो अभी भी तैनात होगा।.

  6. · KlusterServices

    उपाय करें कि क्या वास्तव में किसी को एक अनुरोध की लागत है

    इस कार्यक्रम में हर फिक्स एक ऐसा दावा है जो रोलआउट के दौरान होता है। अब तक उन दावों Untested थे: मीडिया सर्विस ने रणनीति के साथ भेज दिया अपने पूरे जीवन के लिए एक प्रतिकृति पर रीक्रिएट करें, इसलिए प्रत्येक तैनात ने एकमात्र पॉड सर्विंग चैट और अटैचमेंट को हटा दिया और प्रतिस्थापन शुरू किया बाद में - एक ~ 65 दूसरा छेद, दिन में कई बार - और कुछ भी इसे मापा नहीं गया। पहला व्यक्ति एक असफल दस्तावेज़ अपलोड की रिपोर्ट करने वाला सदस्य था, और यहां तक कि एक flaky फीचर के रूप में पढ़ा गया था, बल्कि चूंकि एक अनुसूची पर चैट डाउन है। एक ब्लैकबॉक्स निर्यातक अब हर 10 सेकंड में आठ सार्वजनिक होस्ट को लोड करता है। दस, 30s डिफ़ॉल्ट नहीं: विफलता यह पकड़ने के लिए मौजूद है डिजाइन से कम है, और 30 के दशक में एक साफ ग्राफ का मतलब केवल मतलब होता है कि केवल एक ही ग्राफ का मतलब होता है। छेद दो स्क्रैप के बीच गिर गया। दो सावधानियां, और दूसरा उपयोगी है: PublicHostDown एक मेजबान एक मिनट के लिए जवाब नहीं दिया है। एक आउटेज, तैनाती या नहीं। 10 मिनट में 100% सफल होने के नीचे पब्लिकहॉस्टफ्लैपिंग। यह वह है जो रोलआउट को पकड़ता है एक मुट्ठी भर अनुरोध छोड़ देना - यह 1m 'for' elapse से पहले लंबे समय तक ठीक हो जाता है, यह वास्तव में क्यों है कि विफलता के रूप में रिपोर्ट हो जाता है 'यह बेतरतीब ढंग से मुझे लॉग इन बाहर और कभी एक घटना के रूप में नहीं। इसके अलावा एक प्रमाण पत्र चेतावनी (शीत-त्रेफिक स्व-सिग्न विफलता में कोई डिटेक्टर नहीं था), एक अटक गया रोलआउट अलर्ट, और अपने वांछित प्रतिकृति गिनती के नीचे बैठे एक तैनाती के लिए - क्योंकि प्रतिकृतियां: 2 केवल मदद करता है जबकि दूसरा फली वास्तव में ऊपर है, और वह जो स्वस्थ नहीं दिखता है। TLS सत्यापन जानबूझकर है: एक प्रमाण पत्र जो गलत तरीके से कार्य करता है उसे विफल करना चाहिए जांच, क्योंकि यह वास्तव में क्या एक ठंडी ट्रेफिक एक बार में हर ओरग में करने के लिए इस्तेमाल किया है। मॉनिटरिंग/सीआई यहां लंबे समय तक चलने वाले सम्मेलन द्वारा लक्ष्य को लागू नहीं करता है, इसलिए दोनों फाइलें अपनी ओर ले जाती हैं स्वयं लागू लाइन।.

  7. · KlusterServices

    देव मशीन पर कोडर सत्र, सूचीबद्ध और पुन: प्रयोज्य

    यहीं है क्योंकि मशीन एकमात्र ऐसी चीज है जो किसी को जानता है। ##The session index वास्तव में उनके टर्मिनलों के रूप में जो कुछ भी tmux चल रहा है। कोई तालिका नहीं यही कारण है: डिस्क पहले से ही जानता है, यह वही है जो CLI स्वयं शुरू होता है, और Memoized on (mtime, size), और यह होना चाहिए - इस मशीन के खिलाफ बनाया गया था 444 सत्र और 1.1 जीबी ट्रांसक्रिप्ट है, उनमें से एक 205 एमबी है। केवल पहला प्रत्येक फ़ाइल का अंतिम 128 KB पढ़ा जाता है: कार्य निर्देशिका, शाखा और प्रारंभिक संकेत पहले रिकॉर्ड में हैं, उत्पन्न शीर्षक और सारांश हैं जैसा कि सत्र चल रहा है, और बीच टूल कॉल है। विरुद्ध उपाय वास्तविक स्टोर: 2.8s ठंड, 17ms गर्म। ## दो चीज़ें एक ट्रांसक्रिप्ट नहीं कह सकती हैं एक ट्रांसक्रिप्ट रिकॉर्ड नहीं करता है कि कंसोल ने इसे शुरू किया, इसलिए एक सत्र शुरू हुआ इसके बिना एक सदस्य सिर्फ बनाया सूची से लापता है वे हैं देखिए, जो बटन के रूप में पढ़ता है। और एक transcript जहां यह से संचालित किया जा रहा है रिकॉर्ड नहीं है, तो एक खोल कि अब चल रहा है सत्र आईडी को एक tmux उपयोगकर्ता विकल्प (@kamo coder) के रूप में रखता है, उस शीर्षक के बगल में जो पहले से ही वहाँ रहते हैं। यह पूरी डुप्लिकेट नियम है: एक सत्र जो पहले से ही जुड़ा हुआ है उसे पुनः प्राप्त करने के लिए एक बातचीत दो सिर देता है, दोनों CLIs एक transcript के लिए लेखन और दूसरा फिर से खेलना क्या पहले बीच में है। इसलिए लिस्टिंग एक क्षेत्र बढ़ जाती है, इसलिए `list-session-F` अब सात के लिए पूछता है - शीर्षक LAST रहता है और विभाजित रहता है, क्योंकि विभाजक मुद्रण योग्य है और एक सदस्य इसे टाइप कर सकता है। ##The caller अभी भी कभी एक आदेश की आपूर्ति नहीं करता कमांड लाइन यहां बनाई गई है: CLI का पथ खाता के तहत हल हो गया खुद का घर, सत्र id minted या इस डिस्क पर पाया, और `-permission-mode बायपासPermissions`, जो एक पैरामीटर नहीं है और नहीं किया जा सकता एक। तैयार रिकॉर्ड अब `kind` ले जाते हैं, और वह जो क्षेत्र की भविष्यवाणी करता है वह एक है Send-to-AI hand-off, जो एकमात्र ऐसा ही है। कार्य निर्देशिका एक चीज है जो एक अनुरोध को प्रभावित कर सकती है और उसे बाध्य कर सकती है खाते के अपने घर के लिए रियलपैथ। यह एक विशेषाधिकार सीमा नहीं है - टर्मिनल पहले से ही उस खाते के रूप में चलता है - यह निर्देशिकाओं का सेट रखता है REQUEST एक व्यक्ति तक पहुंच सकता है सेट से छोटा नाम दे सकता है। एक रिकॉर्ड जिसका नाम है खाते को केवल उस खाते के टर्मिनल द्वारा रीडीमेबल किया जाता है। 40 नए परीक्षण, सूट में 199, सभी उत्तीर्ण। सूचकांक के खिलाफ सत्यापित है अकेले जुड़नार के बजाय वास्तविक 444 सत्र स्टोर। इंस्टॉल-एजेंट.sh द्वारा जहाजों, सीआई द्वारा नहीं: इस तैनाती को धक्का देने के लिए वीएम के लिए कुछ भी नहीं है।.

  8. · KlusterServices

    हर नाली का बजट, और असफल एक ऐसी तैनाती जो रोलआउट सुरक्षा को पीछे छोड़ देती है

    PodDisruptionBudgets 25 तैनाती के लिए जो अब वास्तव में दो प्रतिकृतियां चलाते हैं। MinAvailable: 1 एक नाली को एक फली को छोड़ देता है और पूरे नोड को नीचे देने के बजाय इसके प्रतिस्थापन की प्रतीक्षा करता है एक बार। कामो नेमस्पेस में इनमें से शून्य था जबकि क्लस्टर-सेवाएं, कामो-यूनिवर्स, रेटकैक, Longhorn-system और kubevirt सब उन्हें था - नामस्थान होल्डिंग उत्पादन बिना एक था। वास्तव में दो प्रतिकृतियों पर केवल तैनाती दिखाई देती है। एक एकल प्रतिकृति तैनाती पर पीडीबी खराब है कोई नहीं: minAvailable: 1 प्रतिकृतियों के खिलाफ: 1 शून्य व्यवधान की अनुमति देता है, इसलिए यह सुरक्षित नहीं है। कार्यभार, यह हमेशा के लिए नोड रखरखाव को अवरुद्ध करता है। README.md कहते हैं, और जानबूझकर नामों कभी-कभी सूचीबद्ध नहीं होना चाहिए। स्क्रिप्ट/ऑडिट-deploy-safety.sh तैनात होने में विफल रहता है अगर कामो में एक तैनाती वापस एक आकार में बहती है कि एक रोलआउट के दौरान अनुरोध छोड़ देता है: कोई तत्परता जांच नहीं, कोई प्रीस्टॉप हुक नहीं, कोई मिनटReadySeconds, बिना किसी ऑप्ट-आउट के पुनर्निर्मित करें, या दो प्रतिकृतियां जो उन्हें नोड्स में फैलने के कुछ भी नहीं हैं। यह प्रकट होने के बजाय CLUSTER ऑडिट करता है। वे सेटिंग्स 48 अलग-अलग भंडारों में रहते हैं 48 वर्कफ़्लोज़ के साथ; प्रति-रिपो गार्ड पहले एक प्रतिगमन पकड़ेगा, लेकिन यह 48 प्रतियां हैं, जो कि 48 प्रतियों को रखने के लिए हैं। कदम में और कोई भी रेपो जो कभी भी इसे गोद नहीं लेता है वह चुपचाप मुक्त हो जाता है। उनमें से प्रत्येक प्रकट होता है समाप्त होता है यहाँ व्यापार यह है कि यह एक लॉक के बजाय एक धुआं अलार्म है - यह तथ्य के बाद रिपोर्ट करता है, इसलिए यह है पूरे टेबल और नामों को प्रिंट करता है जो सिर्फ असफल होने के बजाय बहती है। छूट खुद ही तैनाती पर घोषणाएं हैं, और एक कारण अनिवार्य है: छूट बिना किसी विफलता के। यही कारण है कि अगले व्यक्ति को एक जानबूझकर सिंगलटन (कामोडमैन) बताने देता है कुछ से विशेष NATS टिकाऊ को बांधता है, किसी को गोल नहीं मिला।.

  9. · RAGService

    अनुक्रमण उपभोक्ताओं को साझा करें, और दो फली चलाएं

    आरएजी सर्विस अपने स्वयं के दो जेटस्ट्रीम ड्यूरेबल्स को बांधती है - राग-नोट-उपभोक्ता और राग-केबी-उपभोक्ता - और किसी भी समूह के साथ एक टिकाऊ पुश उपभोक्ता बिल्कुल एक ग्राहक स्वीकार नहीं करता है। दूसरा फली [SUB-90012] को मना कर दिया गया है, जिससे अनुक्रमण को पिन किया गया है, जो भी पहले के साथ बंधे थे जब वह पॉड वह होता है जो मर जाता है तो कुछ भी नहीं। दोनों अब एक वितरित समूह में शामिल होते हैं, इसलिए NATS प्रत्येक घटना को वास्तव में एक फली के लिए हाथ देता है। यही कारण है कि अनुक्रमण आवश्यकता: एक बार, प्रति पॉड एक बार नहीं, और एक बार प्रति पॉड नहीं जो एक रेस जीतने के लिए हुआ। प्रतिकृतियां 1 -> 2. यह सेवा कोई @Scheduled काम नहीं चलाता है और कोई विशेष NATS टिकाऊ नहीं बांधता है, इसलिए एक दूसरा फली डुप्लिकेट कुछ भी नहीं - यह स्टेटलेस अनुरोध सेवा है, और एकमात्र चीज इसे ध्यान में रखते हुए एक प्रतिकृति थी कि कुछ भी संख्या बढ़ गई थी। एक प्रतिकृति मैक्स परSurge एक साफ तैनाती के दौरान जोखिम को छिपाता है और कहीं नहीं: एक OOM हत्या, एक OOM हत्या असफलता जांच या नोड नाली ने 59-79 सेकंड के लिए पूरी तरह से क्षमता को बाहर ले लिया स्प्रिंग संदर्भ बूट करने के लिए लेता है। KlusterServices में एक PodDisruptionBudget अब एक नाली प्रतीक्षा करता है।.

  10. · VectorService

    दो फली

    प्रतिकृतियां 1 -> 2. यह सेवा कोई @Scheduled काम नहीं चलाता है और कोई विशेष NATS टिकाऊ नहीं बांधता है, इसलिए एक दूसरा फली डुप्लिकेट कुछ भी नहीं - यह स्टेटलेस अनुरोध सेवा है, और एकमात्र चीज इसे ध्यान में रखते हुए एक प्रतिकृति थी कि कुछ भी संख्या बढ़ गई थी। एक प्रतिकृति मैक्स परSurge एक साफ तैनाती के दौरान जोखिम को छिपाता है और कहीं नहीं: एक OOM हत्या, एक OOM हत्या असफलता जांच या नोड नाली ने 59-79 सेकंड के लिए पूरी तरह से क्षमता को बाहर ले लिया स्प्रिंग संदर्भ बूट करने के लिए लेता है। KlusterServices में एक PodDisruptionBudget अब एक नाली प्रतीक्षा करता है।.

  11. · ConversionService

    दो फली

    प्रतिकृतियां 1 -> 2. यह सेवा कोई @Scheduled काम नहीं चलाता है और कोई विशेष NATS टिकाऊ नहीं बांधता है, इसलिए एक दूसरा फली डुप्लिकेट कुछ भी नहीं - यह स्टेटलेस अनुरोध सेवा है, और एकमात्र चीज इसे ध्यान में रखते हुए एक प्रतिकृति थी कि कुछ भी संख्या बढ़ गई थी। एक प्रतिकृति मैक्स परSurge एक साफ तैनाती के दौरान जोखिम को छिपाता है और कहीं नहीं: एक OOM हत्या, एक OOM हत्या असफलता जांच या नोड नाली ने 59-79 सेकंड के लिए पूरी तरह से क्षमता को बाहर ले लिया स्प्रिंग संदर्भ बूट करने के लिए लेता है। KlusterServices में एक PodDisruptionBudget अब एक नाली प्रतीक्षा करता है।.

  12. · APIService

    दो फली

    प्रतिकृतियां 1 -> 2. यह सेवा कोई @Scheduled काम नहीं चलाता है और कोई विशेष NATS टिकाऊ नहीं बांधता है, इसलिए एक दूसरा फली डुप्लिकेट कुछ भी नहीं - यह स्टेटलेस अनुरोध सेवा है, और एकमात्र चीज इसे ध्यान में रखते हुए एक प्रतिकृति थी कि कुछ भी संख्या बढ़ गई थी। एक प्रतिकृति मैक्स परSurge एक साफ तैनाती के दौरान जोखिम को छिपाता है और कहीं नहीं: एक OOM हत्या, एक OOM हत्या असफलता जांच या नोड नाली ने 59-79 सेकंड के लिए पूरी तरह से क्षमता को बाहर ले लिया स्प्रिंग संदर्भ बूट करने के लिए लेता है। KlusterServices में एक PodDisruptionBudget अब एक नाली प्रतीक्षा करता है।.

  13. · kamo-internal

    एक तत्परता जांच का उत्तर दें, और दो फली चलाएं

    इस तैनाती में कोई तत्परता जांच नहीं थी, इसलिए एक फली ने तैयार होने के तुरंत बाद अपने कंटेनर की गिनती की थी। प्रक्रिया शुरू हुई। अधिकतम 0 Kubernetes के साथ पढ़ता है कि "नई फली सेवा कर रही है" और पुराने एक सेवानिवृत्त - जबकि अगला अभी भी शुरू हो रहा है और इसके बंदरगाह को बाध्य नहीं किया है। अनुरोध लैंडिंग एक बंदरगाह पर कुछ भी नहीं सुन रहा था, जहां तैनाती पर रुकने वाले 502 लोग आए थे। /api/health उत्तर केवल इस फली के लिए और जानबूझकर कोई backend स्पर्श: एक तत्परता जांच यह तय करता है कि यह फली सेवा को छोड़ देता है और इसे एक बैकेंड में वायर करने से बैकेंड ब्लिप हो जाता है। यहां प्रत्येक पॉड की रोलिंग पुनः आरंभ। नाली और 660s अनुग्रह अवधि पहले से ही यहाँ थी; लापता जांच क्या उन्हें रोका है गिनती। प्रतिस्थापन सेवा करने से पहले कुबेर्नेट्स को ड्रेनिंग पॉड से रिटायर किया गया था। प्रतिकृतियां 1 -> 2. सर्वर-साइड स्टेट रेडिस में रहता है, फली में नहीं, और कोई निर्धारित काम नहीं है डुप्लिकेट करने के लिए, इसलिए दूसरा प्रतिकृति कुछ भी नहीं बदलता है, इसके अलावा एक फली को खोने से एक आउटेज होने लगता है। एक प्रतिकृति में एक OOM हत्या, एक असफल जीवन जांच या एक नोड नाली के लिए नीचे पूरी बात ले लिया जब तक यह बूट करने के लिए लेता है। टोपोलॉजीस्प्रेडConstraints (पहले, अभी तक निष्क्रिय) दोनों को विभिन्न नोड्स पर रखें जहां क्लस्टर इसे प्रबंधित कर सकता है, और KlusterServices में एक PodDisruptionBudget एक नाली प्रतीक्षा करता है।.

  14. · kamo-marketing

    SIGTERM पर नाली, और दो फली चला

    अगला एक नंगे प्रक्रिया के साथ SIGTERM संभालता है। उड़ान में था - एक फॉर्म पोस्ट, एक सर्वर एक्शन, एक स्ट्रीम आरएससी पेलोड, एक अपलोड। जब एक अनुरोध स्थायी मिलीसेकेंड; एक क्लस्टर पर अदृश्य नहीं है जो प्रत्येक धक्का पर तैनात करता है। स्क्रिप्ट/स्टैंडलोन-entry.cjs स्टैंडअलोन सर्वर को लपेटता है: SIGTERM पर यह स्वीकार करना बंद कर देता है, निष्क्रिय हो जाता है एक बार में रहते हैं, इसलिए उड़ान में कुछ भी नहीं के साथ एक फली अभी भी एक सेकंड में बाहर निकलती है, और चलने देता है अनुरोध एक टोपी के तहत समाप्त होता है जो समाप्ति के नीचे बैठता हैGracePeriodSeconds। से पोर्ट कामो-आंतरिक, जो इसे महीनों तक उत्पादन में चला गया है। रैपर सर्वर के बजाय सर्वर-nonce.js शुरू होता है, NEXT SERVER ENTRY के माध्यम से - CSP nonce सर्वर वास्तव में रहता है जहां यह श्रृंखला में था। प्रतिकृतियां 1 -> 2. सर्वर-साइड स्टेट रेडिस में रहता है, फली में नहीं, और कोई निर्धारित काम नहीं है डुप्लिकेट करने के लिए, इसलिए दूसरा प्रतिकृति कुछ भी नहीं बदलता है, इसके अलावा एक फली को खोने से एक आउटेज होने लगता है। एक प्रतिकृति में एक OOM हत्या, एक असफल जीवन जांच या एक नोड नाली के लिए नीचे पूरी बात ले लिया जब तक यह बूट करने के लिए लेता है। टोपोलॉजीस्प्रेडConstraints (पहले, अभी तक निष्क्रिय) दोनों को विभिन्न नोड्स पर रखें जहां क्लस्टर इसे प्रबंधित कर सकता है, और KlusterServices में एक PodDisruptionBudget एक नाली प्रतीक्षा करता है।.

  15. · kamo-capcha

    दो फली

    प्रतिकृतियां 1 -> 2. सर्वर-साइड स्टेट रेडिस में रहता है, फली में नहीं, और कोई निर्धारित काम नहीं है डुप्लिकेट करने के लिए, इसलिए दूसरा प्रतिकृति कुछ भी नहीं बदलता है, इसके अलावा एक फली को खोने से एक आउटेज होने लगता है। एक प्रतिकृति में एक OOM हत्या, एक असफल जीवन जांच या एक नोड नाली के लिए नीचे पूरी बात ले लिया जब तक यह बूट करने के लिए लेता है। टोपोलॉजीस्प्रेडConstraints (पहले, अभी तक निष्क्रिय) दोनों को विभिन्न नोड्स पर रखें जहां क्लस्टर इसे प्रबंधित कर सकता है, और KlusterServices में एक PodDisruptionBudget एक नाली प्रतीक्षा करता है।.

  16. · kamo-register

    SIGTERM पर नाली, एक तत्परता जांच का जवाब दें, और दो फली चलाएं

    अगला एक नंगे प्रक्रिया के साथ SIGTERM संभालता है। उड़ान में था - एक फॉर्म पोस्ट, एक सर्वर एक्शन, एक स्ट्रीम आरएससी पेलोड, एक अपलोड। जब एक अनुरोध स्थायी मिलीसेकेंड; एक क्लस्टर पर अदृश्य नहीं है जो प्रत्येक धक्का पर तैनात करता है। स्क्रिप्ट/स्टैंडलोन-entry.cjs स्टैंडअलोन सर्वर को लपेटता है: SIGTERM पर यह स्वीकार करना बंद कर देता है, निष्क्रिय हो जाता है एक बार में रहते हैं, इसलिए उड़ान में कुछ भी नहीं के साथ एक फली अभी भी एक सेकंड में बाहर निकलती है, और चलने देता है अनुरोध एक टोपी के तहत समाप्त होता है जो समाप्ति के नीचे बैठता हैGracePeriodSeconds। से पोर्ट कामो-आंतरिक, जो इसे महीनों तक उत्पादन में चला गया है। इस तैनाती में कोई तत्परता जांच नहीं थी, इसलिए एक फली ने तैयार होने के तुरंत बाद अपने कंटेनर की गिनती की थी। प्रक्रिया शुरू हुई। अधिकतम 0 Kubernetes के साथ पढ़ता है कि "नई फली सेवा कर रही है" और पुराने एक सेवानिवृत्त - जबकि अगला अभी भी शुरू हो रहा है और इसके बंदरगाह को बाध्य नहीं किया है। अनुरोध लैंडिंग एक बंदरगाह पर कुछ भी नहीं सुन रहा था, जहां तैनाती पर रुकने वाले 502 लोग आए थे। /api/health उत्तर केवल इस फली के लिए और जानबूझकर कोई backend स्पर्श: एक तत्परता जांच यह तय करता है कि यह फली सेवा को छोड़ देता है और इसे एक बैकेंड में वायर करने से बैकेंड ब्लिप हो जाता है। यहां प्रत्येक पॉड की रोलिंग पुनः आरंभ। Dockerfile HEALTHCHECK ने /api/health को बताया है क्योंकि यह लिखा गया था; मार्ग नहीं था अस्तित्व में है, इसलिए जब तक यह वहाँ रहा है तब तक चेक विफल रहा है। प्रतिकृतियां 1 -> 2. सर्वर-साइड स्टेट रेडिस में रहता है, फली में नहीं, और कोई निर्धारित काम नहीं है डुप्लिकेट करने के लिए, इसलिए दूसरा प्रतिकृति कुछ भी नहीं बदलता है, इसके अलावा एक फली को खोने से एक आउटेज होने लगता है। एक प्रतिकृति में एक OOM हत्या, एक असफल जीवन जांच या एक नोड नाली के लिए नीचे पूरी बात ले लिया जब तक यह बूट करने के लिए लेता है। टोपोलॉजीस्प्रेडConstraints (पहले, अभी तक निष्क्रिय) दोनों को विभिन्न नोड्स पर रखें जहां क्लस्टर इसे प्रबंधित कर सकता है, और KlusterServices में एक PodDisruptionBudget एक नाली प्रतीक्षा करता है।.

  17. · kamo-login

    SIGTERM पर नाली, एक तत्परता जांच का जवाब दें, और दो फली चलाएं

    अगला एक नंगे प्रक्रिया के साथ SIGTERM संभालता है। उड़ान में था - एक फॉर्म पोस्ट, एक सर्वर एक्शन, एक स्ट्रीम आरएससी पेलोड, एक अपलोड। जब एक अनुरोध स्थायी मिलीसेकेंड; एक क्लस्टर पर अदृश्य नहीं है जो प्रत्येक धक्का पर तैनात करता है। स्क्रिप्ट/स्टैंडलोन-entry.cjs स्टैंडअलोन सर्वर को लपेटता है: SIGTERM पर यह स्वीकार करना बंद कर देता है, निष्क्रिय हो जाता है एक बार में रहते हैं, इसलिए उड़ान में कुछ भी नहीं के साथ एक फली अभी भी एक सेकंड में बाहर निकलती है, और चलने देता है अनुरोध एक टोपी के तहत समाप्त होता है जो समाप्ति के नीचे बैठता हैGracePeriodSeconds। से पोर्ट कामो-आंतरिक, जो इसे महीनों तक उत्पादन में चला गया है। इस तैनाती में कोई तत्परता जांच नहीं थी, इसलिए एक फली ने तैयार होने के तुरंत बाद अपने कंटेनर की गिनती की थी। प्रक्रिया शुरू हुई। अधिकतम 0 Kubernetes के साथ पढ़ता है कि "नई फली सेवा कर रही है" और पुराने एक सेवानिवृत्त - जबकि अगला अभी भी शुरू हो रहा है और इसके बंदरगाह को बाध्य नहीं किया है। अनुरोध लैंडिंग एक बंदरगाह पर कुछ भी नहीं सुन रहा था, जहां तैनाती पर रुकने वाले 502 लोग आए थे। /api/health उत्तर केवल इस फली के लिए और जानबूझकर कोई backend स्पर्श: एक तत्परता जांच यह तय करता है कि यह फली सेवा को छोड़ देता है और इसे एक बैकेंड में वायर करने से बैकेंड ब्लिप हो जाता है। यहां प्रत्येक पॉड की रोलिंग पुनः आरंभ। प्रतिकृतियां 1 -> 2. सर्वर-साइड स्टेट रेडिस में रहता है, फली में नहीं, और कोई निर्धारित काम नहीं है डुप्लिकेट करने के लिए, इसलिए दूसरा प्रतिकृति कुछ भी नहीं बदलता है, इसके अलावा एक फली को खोने से एक आउटेज होने लगता है। एक प्रतिकृति में एक OOM हत्या, एक असफल जीवन जांच या एक नोड नाली के लिए नीचे पूरी बात ले लिया जब तक यह बूट करने के लिए लेता है। टोपोलॉजीस्प्रेडConstraints (पहले, अभी तक निष्क्रिय) दोनों को विभिन्न नोड्स पर रखें जहां क्लस्टर इसे प्रबंधित कर सकता है, और KlusterServices में एक PodDisruptionBudget एक नाली प्रतीक्षा करता है।.

  18. · kamo-nowww

    SIGTERM पर नाली, और एक तत्परता जांच का जवाब दें

    अगला एक नंगे प्रक्रिया के साथ SIGTERM संभालता है। उड़ान में था - एक फॉर्म पोस्ट, एक सर्वर एक्शन, एक स्ट्रीम आरएससी पेलोड, एक अपलोड। जब एक अनुरोध स्थायी मिलीसेकेंड; एक क्लस्टर पर अदृश्य नहीं है जो प्रत्येक धक्का पर तैनात करता है। स्क्रिप्ट/स्टैंडलोन-entry.cjs स्टैंडअलोन सर्वर को लपेटता है: SIGTERM पर यह स्वीकार करना बंद कर देता है, निष्क्रिय हो जाता है एक बार में रहते हैं, इसलिए उड़ान में कुछ भी नहीं के साथ एक फली अभी भी एक सेकंड में बाहर निकलती है, और चलने देता है अनुरोध एक टोपी के तहत समाप्त होता है जो समाप्ति के नीचे बैठता हैGracePeriodSeconds। से पोर्ट कामो-आंतरिक, जो इसे महीनों तक उत्पादन में चला गया है। इस तैनाती में कोई तत्परता जांच नहीं थी, इसलिए एक फली ने तैयार होने के तुरंत बाद अपने कंटेनर की गिनती की थी। प्रक्रिया शुरू हुई। अधिकतम 0 Kubernetes के साथ पढ़ता है कि "नई फली सेवा कर रही है" और पुराने एक सेवानिवृत्त - जबकि अगला अभी भी शुरू हो रहा है और इसके बंदरगाह को बाध्य नहीं किया है। अनुरोध लैंडिंग एक बंदरगाह पर कुछ भी नहीं सुन रहा था, जहां तैनाती पर रुकने वाले 502 लोग आए थे। /api/health उत्तर केवल इस फली के लिए और जानबूझकर कोई backend स्पर्श: एक तत्परता जांच यह तय करता है कि यह फली सेवा को छोड़ देता है और इसे एक बैकेंड में वायर करने से बैकेंड ब्लिप हो जाता है। यहां प्रत्येक पॉड की रोलिंग पुनः आरंभ। पहले दो प्रतिकृतियों पर; यह वही है जो दूसरे को वास्तव में एक के दौरान पहले कवर करता है दोनों को अंधा करने के बजाय रोलआउट।.

  19. · kamo-shared-library

    एक वितरित लॉक, इसलिए एक निर्धारित स्वीप दूसरे प्रतिकृति को बच सकता है

    इस प्लेटफॉर्म पर कहीं भी कोई शेडलॉक नहीं है और कभी नहीं रहा है। सभी 97 @Scheduled 18 सेवाओं के दौरान स्वीप केवल सही है क्योंकि प्रत्येक सेवा वास्तव में एक फली चलाता है। किसी भी स्केल उन्हें और स्वीप दो बार एक टिक चलाता है - एक सदस्य के इनबॉक्स में दो बैठक अनुस्मारक, दो चैट-ईमेल नोटिस, दो बिलिंग अवधि में गुजरता है। उन एकल प्रतिकृति तैनाती केवल नहीं थी Un-scaled; प्रतिकृति गिनती लोड असर थी, और कोड पहले से ही तीन स्थानों में ऐसा कहता है। ************* पट्टा, शरीर वास्तव में एक फली पर एक शरीर चलाता है। एक परीक्षा कॉल, एक घोषणा नहीं है। @Scheduled @Scheduled के बगल में @Scheduled स्पष्ट डिजाइन है और यह यहां एक जाल है: इसे AOP प्रॉक्सी द्वारा लागू किया जाएगा, और एक प्रॉक्सी पूरी तरह से बाईपास हो जाता है जब एक विधि एक ही बीन के अंदर से पहुँचा है - स्प्रिंग सेल्फ-इन्वेक्शन समस्या यह कोडबेस किया गया है पांच बार पकड़े गए। एक स्वीप जो चुपचाप अपने लॉक को खो देता है और हर पॉड पर चला जाता है वह यह है कि एक ही विफलता, और किसी भी ग्राहक ने अपने ईमेल की गिनती नहीं की। ताला लगाकर यह कहकर कि यह कैसे पहुंच गया था, इसे बायपास नहीं किया जा सकता है। रेडिस, डाटाबेस नहीं। इस क्लस्टर पर एक लॉक टेबल को डीडीएल की आवश्यकता होती है, और डीडीएल हर सेवा का जवाब देता है Hikari कनेक्शन उम्र बढ़ने के दौरान ~ 15 मिनट के लिए 500 'schema संस्करण mismatch'। भुगतान करना प्लेटफॉर्म-वाइड आउटेज को स्थापित करने के लिए जो प्लेटफॉर्म-वाइड आउटेज को रोकता है, एक बुरा व्यापार है जब रेडिस पहले से ही तैनात है। FAILS CLOSED. यदि रेडिस अप्रगम्य है तो कार्य छोड़ दिया जाता है, नहीं चला जाता है: काम के लिए जो ईमेल भेजता है या पैसे ले जाता है, दो बार दौड़ने से भी बदतर होता है, और अगले टिक रिट्रीज़। रिलीज तुलना-and-delete स्क्रिप्ट इसलिए एक ऐसा निकाय जो अपने पट्टे को ओवरग्रेन करता है, एक लॉक को हटा नहीं सकता है, दूसरा फली है। जब से लिया गया, और ओवररनिंग को एआरआरओआर में लॉग किया जाता है क्योंकि इससे कोई और खुलासा नहीं करेगा। जहां एक सेवा में कोई रेडिस नहीं है, तो वह हमेशा शरीर को चलाता है - वास्तव में क्या कोड आज करता है, इसलिए इसे अपनाना कभी भी अपने आप में व्यवहार में बदलाव नहीं करता - और स्टार्टअप पर चेतावनी देता है। में प्रकट गार्ड सीआई ने उस राज्य में एक सेवा के लिए प्रतिकृतियों को मना कर दिया। 7 टेस्ट; पूर्ण सूट 2710 ग्रीन।.

  20. · kamo-register

    ऑर्ग के ओवरले रंग में साइन अप साइट पर हर लोगो को पेंट करें

    Org चुनें "Register Site Logo Overlay" in Kamo-internal beside. होम पेज और लोडिंग स्क्रीन ओवरले। पूरी साइट के लिए एक सेटिंग: पंजीकरण प्रवाह का हर कदम, संगठन और टीम स्क्रीन, पूरा स्क्रीन और बंद साइनअप स्क्रीन। इसलिए ThemeLogo इसके लिए कोई प्रस्ताव नहीं लेता है और रंग ही पढ़ता है, जिस तरह से यह पहले से ही कंपनी-vs-software auth लोगो पहचान पढ़ा - config.json है यह साइट ऑर्ग ब्रांडिंग का एकमात्र स्रोत है, और एक प्रोप एक और होगा प्रत्येक कॉल साइट को याद रखना चाहिए। रंग पहले से ही हल हो जाता है: कामो-आंतरिक स्टोर एक TOKEN तो एक org कि rebrand एक मिलान ओवरले रहता है, और सुरक्षा सेवा हल जब यह config.json लिखता है तो उस ओरग के पैलेट के खिलाफ। यहाँ कुछ नहीं तेरह टोकन शब्दावली की जरूरत है। सीएसएस को पार्स नहीं किया जा सकता है बल्कि पारित होने के बजाय - एक अमान्य पृष्ठभूमि रंग मास्क बॉक्स पारदर्शी, जो एक लोगो के रूप में पढ़ता है जो गायब हो गया। एक मुखौटा, फ़िल्टर नहीं: एक फिल्टर केवल लोगो के मौजूदा रंगों को धक्का दे सकता है चारों ओर और एक मध्यस्थ लक्ष्य तक नहीं पहुंच सकता। <img> घुड़सवार रहता है और केवल अदृश्य इसलिए यह मास्क भरने के लिए अपने सटीक बॉक्स को बनाए रखता है, प्रत्येक कॉलर के लेआउट को अपरिवर्तित छोड़ दें। अपने खुद के स्तंभ और अपने config.json कुंजी, साइन-इन से अलग साइट का: दोनों स्वतंत्र रूप से ब्रांडेड हैं, और एक ऑर्ग है कि सफेद लेबल एक की जरूरत नहीं सफेद लेबल दूसरी।.

  21. · kamo-login

    ऑर्ग के ओवरले रंग में साइन-इन साइट पर हर लोगो को पेंट करें

    ऑर्ग का चयन "लॉगिन साइट लोगो ओवरले" घर के बगल में कामो-आंतरिक में पेज और लोडिंग स्क्रीन ओवरले। पूरी साइट के लिए एक सेटिंग: साइन-इन फॉर्म, वर्कस्पेस पिकर, पासवर्ड रिकवरी और रीसेट, और साइन-आउट स्क्रीन एक ही पृष्ठभूमि पर एक ही लोगो है, और कोई भी चाहता है पांच बार छाया सेट करने के लिए। इसलिए ThemeLogo इसके लिए कोई प्रस्ताव नहीं लेता है और रंग ही पढ़ता है, जिस तरह से यह पहले से ही कंपनी-vs-software auth लोगो पहचान पढ़ा - config.json है यह साइट ऑर्ग ब्रांडिंग का एकमात्र स्रोत है, और एक प्रोप एक और होगा प्रत्येक कॉल साइट को याद रखना चाहिए। रंग पहले से ही हल हो जाता है: कामो-आंतरिक स्टोर एक TOKEN तो एक org कि rebrand एक मिलान ओवरले रहता है, और सुरक्षा सेवा हल जब यह config.json लिखता है तो उस ओरग के पैलेट के खिलाफ। यहाँ कुछ नहीं तेरह टोकन शब्दावली की जरूरत है। सीएसएस को पार्स नहीं किया जा सकता है बल्कि पारित होने के बजाय - एक अमान्य पृष्ठभूमि रंग मास्क बॉक्स पारदर्शी, जो एक लोगो के रूप में पढ़ता है जो गायब हो गया। एक मुखौटा, फ़िल्टर नहीं: एक फिल्टर केवल लोगो के मौजूदा रंगों को धक्का दे सकता है चारों ओर और एक मध्यस्थ लक्ष्य तक नहीं पहुंच सकता। <img> घुड़सवार रहता है और केवल अदृश्य है, इसलिए यह अभी भी लोड पर आग लगाता है (प्राकृतिक आकार का एकमात्र स्रोत) और onError (जो लोगो-पूर्ण विस्तार गिरावट चल रहा है), और इसलिए यह अभी भी मास्क भरने के लिए अपना सटीक बॉक्स रखता है। हर कॉलर का लेआउट है अपरिवर्तित। "ComoCRM द्वारा संचालित" गोली में छोटे एनिमेटेड चिह्न ऑर्ग का अपना है लोगो भी, इसलिए यह सेटिंग का अनुसरण करता है - यह सिर्फ अगले / छवि के माध्यम से प्रस्तुत करता है उस गोली के उत्सुक भार के लिए, इसलिए यह मास्क को अपने बजाय ले जाता है एक ThemeLogo बन गया। यह अन्यथा एक लोगो होगा सेटिंग याद आती है।.

  22. · kamo-internal

    साइन-इन और साइन-अप साइटों के लिए एक लोगो ओवरले चुनें

    होम पेज के बगल में एक चौथा और पांचवां सतह, लोडिंग स्क्रीन और KamoMeets overlays, उनके तेरह टोकन शब्दावली और उनके लाइव साझा करना Swatches. दोनों को हमेशा की पेशकश की जाती है, कमोमेट्स के विपरीत: हर ओरग में साइन-इन होता है और एक साइन-अप साइट जो भी ऐप इसे चलाता है, और उसके डोमेन के साथ एक org अभी भी लॉगिन पर पहुंचता है।/register.kamocrm.com अपने आप में चित्रित ब्रांडिंग। वे यहां केवल दो ओवरले भी हैं जो उस क्षण को लागू नहीं करते हैं जो वे उस समय लागू नहीं होते हैं। बचाया जाता है। कामो-लॉगिन और कामो-रजिस्टर में पढ़ने के लिए कोई संगठन नहीं है, इसलिए सुरक्षा सेवा टोकन को हल करती है और रंग को थीम में बेक करती है config.json उन साइटों को प्राप्त करते हैं; फिर से लिखने का प्रावधान करते समय परिवर्तन भूमि वह फ़ाइल जो पहले से ही ट्रिगर को बचाती है। पांच निकटवर्ती ड्रॉपडाउन बहाव के लिए पांच स्थान होंगे, इसलिए संपादक ब्लॉक अब एक renderOverlayselect() है जो सरफेस शेयर - a sixth सतह बीस लाइनों के बजाय एक कॉल है। केवल पंक्तियां पहले से ही उनकी साझा की गई। दो क्षेत्रों की सवारी संगठन। JSON से उनके भाई-बहनों की तरह, एक साथ राउंड ट्रिप टेस्ट: मैपर ब्राउज़र के रास्ते में दो बार चलता है, और एक फ़ील्ड यह अपने आउटपुट से वापस नहीं पढ़ सकता एक सेटिंग है जो चुपचाप अपने अगले लोड पर पलट देता है।.

  23. · MediaService

    मीडिया सर्विस को एक से अधिक पॉड पर सही बनाएं और दो रन करें

    मीडिया सर्विस ने कभी भी एक एकल प्रतिकृति चलाई है, इसलिए इसकी एक तैनाती कुल चैट आउटेज थी और यह एक पूर्ण चैट आउटेज थी। ओओएम समान था। यह दो नहीं चला सकता, क्योंकि वे सभी कोड में थे: 1. STOMP BROKER IN-HEAP है। सक्षमसरलब्रोकर का मतलब है कि ConvertAndSend केवल WebSockets तक पहुंचता है पॉड से जुड़ा हुआ है जो कॉल करता है। तेरह रिले नियंत्रकों ने पहले से ही इस सही ढंग से संभाला एक सादे डिस्पैचर (कोई कतार समूह नहीं) के साथ NATS को सब्सक्राइब करके, इसलिए हर पोड को हर जगह मिलती है संदेश और स्थानीय रूप से प्रकाशन। तेरह अन्य कॉल साइटों ने नहीं किया - टाइपिंग संकेतक, उपस्थिति, अपठित बैज, उत्तर अनुदान, WebRTC प्रस्ताव/answer/ICE, आने वाली चैट सूचनाएं — और प्रत्येक ने अपने इच्छित दर्शकों को लगभग आधे तक पहुंचाया होगा। StompFanout उन पैटर्न को सामान्य करता है जो पहले से ही उपयोग करते हैं: {destination, पेलोड} को प्रकाशित करें एक कोर NATS विषय, हर फली इसे अपने ब्रोकर में रिले करता है। कोर NATS, जेटस्ट्रीम नहीं, क्योंकि ये लाइव-मोमेंट इवेंट्स हैं जिनमें कोई मूल्य फिर से खेलना नहीं है और विषय को कवर करने वाली कोई स्ट्रीम नहीं है। क्योंकि कोर NATS प्रकाशक को भी वितरित करता है, भेजते हैं () स्थानीय रूप से भी नहीं लिखते हैं - कि यहां दो बार वितरित होगा। NATS डाउन के साथ यह स्थानीय भेजने के लिए वापस आता है, जो क्या है? मंच पहले किया था। 2.पर-नियंत्रण उपभोक्ता एक अनन्य टिकाऊ था। ChatSessionSubscriptionManager ने इसका नाम दिया जेटस्ट्रीम चैट सत्र के बाद टिकाऊ GUID, और एक टिकाऊ धक्का उपभोक्ता वास्तव में एक स्वीकार करता है ग्राहक दूसरे फली के बांध को मना कर दिया गया था [SUB-90012] और हर सदस्य जिसका सॉकेट उतर गया था वहाँ कुछ भी नहीं मिला - कोई संदेश नहीं पढ़ा रसीद, कोई सदस्य-added घटनाओं, कोई त्रुटि नहीं। अब एक ephemeral उपभोक्ता: कोई भी नाम नहीं, प्रति पॉड, सर्वर द्वारा reaped. यह हटा देता है कि उसने टकराव पर एक ताजा टिकाऊ नाम का आविष्कार किया। यह काम करता है, और यह एक लीक स्थायी सर्वर-साइड उपभोक्ता प्रति टकराव कि कभी भी नष्ट नहीं हुआ। 3. FIVE more FIXED-NAME DURABLES, नौकरी के आधार पर विपरीत उपचार की आवश्यकता है। रूपांतरण और वीओआईपी एसटीओएमपी रिले एक कोर प्रेषक के बजाय जेटस्ट्रीम के माध्यम से चला गया, इसलिए उनके पास समान ही था। Exlusivity बग - अब ephemeral, क्योंकि हर फली प्राप्त करना चाहिए। चैट-ईमेल सूचक, सामाजिक इनबाउंड उपभोक्ता और विपणन रूपांतरण उपभोक्ता को वास्तव में ONCE चलाने की आवश्यकता होती है, इसलिए वे अपना ध्यान रखते हैं टिकाऊ और एक वितरित समूह में शामिल हों, जिसका मतलब है कि एक जीवित व्यक्ति उस काम को उठाता है जब एक फली मर जाता है। मीडिया मार्ग पर चिपचिपा सत्र की आवश्यकता है, वैकल्पिक नहीं: ये STOMP क्लाइंट SockJS का उपयोग करते हैं, जिसका xhr-streaming/xhr-polling Fallback एक कनेक्शन के लिए खड़े कई HTTP अनुरोध हैं सत्र की स्थिति के खिलाफ जो एक पॉड की स्मृति में रहता है। राउंड-रोबिन इसे तोड़ देता है। ingressroute.yaml देखें। 1 -> 2. 367 टेस्ट पास.

  24. · SecurityService

    साइन-इन और साइन-अप लोगो ओवरले को config.json में बेक करें

    कामो-लॉगिन और कामो-रिजिस्टर अपने मेजबानों पर कोई ऑर्ग कॉन्टेक्स्ट नहीं चलाते हैं, इसलिए यह फ़ाइल एकमात्र मार्ग है जिसका ब्रांडिंग होता है - एक ही KamoMeet पहले से ही उपयोग किया जाता है। Token को org के पैलेट के खिलाफ यहां हल किया जाता है और यहां तक कि समाप्त हेक्स लिखा जाता है, जो तेरह टोकन शब्दावली को बाहर रखता है दो और कोडबेस जो प्रत्येक को इसकी अपनी प्रतिलिपि की आवश्यकता होगी। बेकिंग एक हल रंग गलती नहीं है संग्रहीत टोकन बचाता है: इस फ़ाइल को हर ब्रांडिंग सेव पर पुनर्निर्मित किया जाता है, रंग में परिवर्तन शामिल होता है, इसलिए मूल्य नहीं जा सकता। असंतोष का मतलब कोई ओवरले नहीं है, इसलिए एक ओरग जिसने कोई भी कुंजी हासिल नहीं की है और इसका लोगो असंतुलित होता है - जो हर ओरग होता है जब तक कि किसी को चुना जाता है। टेस्ट में तीन सतहों को अलग रखा गया है: वे एक बिल्डर साझा करते हैं, और अपनी साइन-इन साइट को ओवरले करने के लिए अपने कामोमेट लोगो को पेंट नहीं करना चाहिए एक साइड इफेक्ट के रूप में।.

  25. · kamo-shared-library

    साइन-इन और साइन-अप साइटों के लिए एक लोगो ओवरले

    पहले से ही स्थापित शब्दावली home logo overlay में दो और स्तंभ: एक टोकन, हेक्स नहीं, इसलिए एक ऑर्ग जो पुनर्ब्रांड अपने मेल खाते में एक ओवरले रखता है नए रंग। दोनों में कोई बैकफिल नहीं है - null, none है जो क्या है? हर ओर्ग आज की तरह दिखता है। एक साझा सेटिंग के बजाय अलग कॉलम, उसी कारण से, एक साझा सेटिंग के बजाय अलग कॉलम होम पेज और लोडिंग स्क्रीन के पास अपना है: दो साइटें ब्रांडेड हैं स्वतंत्र रूप से और एक org कि श्वेत लेबल को सफेद लेबल की आवश्यकता नहीं है दूसरा। पैचसंगठन एक एलो-लिस्ट है, इसलिए नाम भी वहां जाते हैं। एक स्तंभ यह सेवा खुशी से deserializes लेकिन उस विधि का नाम नहीं है एक 200 और चुपचाप कभी संग्रहीत के साथ स्वीकार नहीं - कोई त्रुटि, कोई लॉग लाइन नहीं, और एकमात्र लक्षण एक ऐसी सेटिंग है जो इसके अगले भार को उलट देती है।.

  26. · kamo-login

    एक एड्रेस-परिवर्तन पत्र में लिंक का उत्तर दें

    /verify-email-change एक बदलाव के पते पत्र में टोकन खर्च करता है और कहता है क्या हुआ? यह वर्कस्पेस के बजाय यहां रहता है क्योंकि पत्र एक व्यक्तिगत मेलबॉक्स पर जाता है - आमतौर पर एक फोन पर पढ़ा जाता है जिसे कभी भी साइन इन नहीं किया जाता है। वर्कस्पेस, और अक्सर कुछ में हस्ताक्षर नहीं किया जाता है। लॉगिन मेजबान जो हमेशा एक संगठन के लिए हल करता है और कभी एक सत्र की जरूरत नहीं है, इसलिए यह एकमात्र स्थान है जो लिंक उस व्यक्ति के लिए काम करने के लिए निश्चित है जो इसकी जरूरत है। पृष्ठ पर कुछ भी कुछ नहीं पूछता है। यह आता है, टोकन खर्च करता है, और रिपोर्ट - यहां एक फॉर्म एक ऐसा फॉर्म होगा जिसे रीडर से नहीं भर सकता उनके द्वारा खोले गए मेलबॉक्स। रिएक्ट के विकास के खिलाफ खर्च की रक्षा की जाती है डबल-इन्वाक, क्योंकि टोकन एकल-उपयोग है और दूसरा कॉल इसे खर्च करेगा और फिर सफलता की रिपोर्ट करें क्योंकि यह लिंक अब वैध नहीं है। रिले के बगल में /api/recover और आकार उसी तरह: सुरक्षा सेवा है क्लस्टरआईपी केवल, इसलिए यह क्लस्टर डीएनएस पर जाता है, जो बनाता है सेवा का नाम होस्ट करें और X-Forwarded-Host में ब्राउज़र का होस्टनाम डालता है - एकमात्र शीर्षलेखक बैकएंड ने इसे पढ़ लिया।.

  27. · kamo-internal

    अपना खुद का पता बदलें, और हर अकाउंट के लिए एक प्लेटफॉर्म टैब

    दो सतहों, एक भेद से जुड़ गए, मंच को कभी समझाया नहीं गया है कोई भी: एक उपयोगकर्ता खाता PERSON है, और एक सदस्य एक संगठन है उस व्यक्ति के साथ संबंध। मेरा प्रोफाइल एक व्यक्तिगत ईमेल पता कार्ड प्राप्त करता है, एक्सेस रूम के बगल में पासवर्ड क्योंकि यह क्या है - तीन पहचानकर्ता साइन-इन में से एक स्वीकार करता है, और पता एक पासवर्ड रीसेट करने के लिए मेल किया जाता है। संपर्क के तहत इसे फाइल करना विवरण स्टेशनरी के तहत एक कुंजी दाखिल करना होगा। इसके बजाय वह खुद को करता है कमरे की बचत बार के माध्यम से जाना: एक परिवर्तन एक अनुरोध, एक पत्र और एक है पुष्टिकरण और एक सहेजें बटन जिसने कोई सबूत के साथ साइन-इन पहचानकर्ता लिखा मेलबॉक्स एक नियंत्रण में पूरी समस्या होगी। खाता Security provider id द्वारा नामित संगठन से संबंधित है, और केवल वह इसे बदल सकता है। इसलिए कार्ड हर जगह दिखाई देता है और संपादन योग्य होता है एक जगह - इसे दूसरों में छिपाने के लिए एक सदस्य शिकार छोड़ देंगे ऐसा प्रतीत होता है कि हटा दिया गया है। जहां इसे संपादित नहीं किया जा सकता है, यह कहता है कि किसके पास है है, और दोनों तरीके वापस प्रदान करता है: छोड़ने के बिना शीर्ष बाएं मेनू से स्विच करना एप्लिकेशन, और उस संगठन के अपने साइन-इन पते पर सीधे हस्ताक्षर करना (या, जब यह अभी तक नहीं है, तो साझा एक पर, इस तरह के रूप में नामित)। दोनों से आते हैं ऑर्गेन्ट्रीडोमेनरिसोल्वर, इसलिए मेजबान कभी नहीं है जो हल करने में विफल रहता है। एक व्याख्याता हर संगठन पर कार्ड के तहत बैठता है, न केवल अंदर इनकार। "User account" बनाम "member account" एक अंतर है जो किसी के बाहर नहीं है मंच को जानने का कोई कारण है, और यह वास्तव में लोड-असर हो जाता है क्षण किसी को कुछ मना कर दिया जाता है - जो मिलने का सबसे बुरा समय है पहली बार विचार करना। /खाता एक चौथा टैब प्राप्त करता है, उपयोगकर्ता, नए MANAGE USERS प्लेटफॉर्म पर गेट किया गया सही। सही पहले से ही "वर्तमान संगठन होना चाहिए मंच संगठन" पूर्व शर्त — प्लेटफॉर्मRightsResolver रिटर्न कुछ नहीं पर सभी के लिए एक एक किरायेदार के अंदर सत्र - इसलिए टैब अलग से संगठन की जांच नहीं करता है; एक दूसरा अधिकार सर्वर के साथ हमेशा असहमत हो सकता है। खोज और खोज पेजिंग सर्वर भी हैं: ग्रिड का अपना फ़िल्टर पंक्तियों की खोज करता है जो ऐसा होता है पकड़ना, जो एक मंच-व्यापी तालिका पर एक के लिए "कोई परिणाम नहीं" रिपोर्टिंग का मतलब है वह खाता जो मौजूद है। एक पंक्ति के पीछे के दराज को विषय के बजाय परिणाम से बैंड किया जाता है। पहचान एक ड्राफ्ट में संपादित करें और एक बार सेव करें; खाता राज्य प्रति स्विच और रिपोर्ट करता है इसके साथ कितने सत्र हुए; वसूली अलग और पुष्टि की गई है। परमेश्वर खातों और सिस्टम उपयोगकर्ता केवल पढ़ने के लिए तैयार करते हैं, क्योंकि सर्वर उन्हें मना कर देता है और एक संपादन की रचना करना जो कभी भी जमीन पर नहीं जा रहा था, कहा जा रहा है की तुलना में बदतर है पहला। इसके अलावा सुरक्षा प्रदाता बैनर को ठीक करता है जो इस पृष्ठ पर है। यह `org.domain` प्लस इस संगठन के सदस्य आईडी - एक से अपनी कड़ी का निर्माण किया होस्टनाम जो वर्कस्पेस होस्ट नहीं है, एक सदस्य आईडी पर जो ओवर में मौजूद नहीं है वहाँ। यह अब साइन-इन स्क्रीन पर सर्वर को हल करता है।.

  28. · kamo-shared-library

    एक कतार समूह सब्सक्राइब जोड़ें, इसलिए एक पॉड पर पिन करने के बजाय काम साझा किया जाता है

    सदस्यता के लिए साथीपर्सनल। दो अलग-अलग नौकरियां, दो अलग-अलग उपभोक्ता: सब्सक्राइब प्रत्येक पॉड को हर संदेश (एक STOMP प्रसारण में कुछ भी समाप्त) देखना चाहिए। सब्सक्राइब करें Queue काम बिल्कुल होना चाहिए ONCE (एक ईमेल भेजना, एक प्रदाता को बुलाना) न तो क्या एक सादे टिकाऊ एक से अधिक प्रतिकृति पर करता है। कोई वितरित समूह के साथ एक टिकाऊ धक्का उपभोक्ता एक एकल ग्राहक को स्वीकार करता है, इसलिए दूसरा फली को मना कर दिया जाता है [SUB-90012] और काम है जो भी पहले pod बाध्य करने के लिए pinned — कुछ भी नहीं है कि अगर वह pod है कि मर जाता है ले रहा है। एक वितरित समूह जोड़ना एक कतार में समान टिकाऊ हो जाता है, फलियों का हिस्सा होता है, रिलीवर रखता है और वास्तव में वे थे के रूप में मैक्स। ReconcileDeliverGroup मौजूदा reconcileDurable Filter दर्पण, और वैकल्पिक नहीं है: हर उपभोक्ता यह परिवर्तन पहले से ही पुराने आकार में धारा पर मौजूद है, और जेनेट नहीं होंगे एक कतार के रूप में एक सादे टिकाऊ में शामिल हों। इसके बाद पहली तैनाती रद्द करने के बिना उन सदस्यताओं को स्थायी रूप से साझा करने के बजाय मृत्यु हो गई - एक ही चुप, आत्मनिर्णय विफलता फिल्टर मिलान के लिए लिखा गया था। डिलीवरी लूप अब सभी तीन प्रविष्टि बिंदुओं के पीछे एक विधि है।.

  29. · kamo-shared-library

    एक ephemeral सदस्यता जोड़ें, इसलिए एक से अधिक पॉड एक बातचीत की सेवा कर सकते हैं

    एक टिकाऊ पुश उपभोक्ता बिल्कुल एक ग्राहक स्वीकार करता है। उसी नाम को बांधने के लिए दूसरा फली है [SUB-90012] से इनकार कर दिया उपभोक्ता पहले से ही एक सदस्यता के लिए बाध्य है, और कुछ भी नहीं है। ChatSessionSubscriptionManager ने चैट सत्र GUID के बाद अपना टिकाऊ नाम दिया, इसलिए दो के साथ मीडिया सर्विस पॉड जो भी एक बातचीत को बाध्य करता है वह चुपचाप उसे और हर सदस्य के मालिक होगा जिनका WebSocket अन्य पॉड पर उतरा था उन्हें कुछ भी नहीं मिला - कोई संदेश नहीं, कोई पढ़ा रसीद नहीं, कोई नहीं सदस्य वर्धित घटनाओं, कोई त्रुटि नहीं। यही कारण है कि मीडिया सर्विस को एक के लिए पिन किया गया है प्रतिकृति, और क्यों इसकी तैनाती रोलओवर के बजाय कुल चैट आउटेज है। सदस्यताEphemeral() बजाय एक नाम का उपभोक्ता बनाता है। टकराव के लिए कोई क्रॉस-पॉड पहचान नहीं है इसके अलावा, प्रत्येक पॉड को अपने स्वयं के STOMP क्लाइंट को हर संदेश और प्रशंसकों को प्राप्त होता है - जो क्या है इन-हेप ब्रोकर की आवश्यकता होती है। यह फ़िल्टर रखता हैउपजेक्ट टिकाऊ पथ सेट करने के लिए सीखा (एक) खाली फ़िल्टर पूरे स्ट्रीम का उपभोग करता है, और एक निष्क्रिय थ्रेसहोल्ड को जोड़ता है ताकि एक फली SIGKILLed हो। बिना सदस्यता के अपने उपभोक्ता को स्ट्रीम पर हमेशा के लिए छोड़ नहीं देता है। मौजूदा कॉलर के लिए कोई व्यवहार परिवर्तन नहीं: सदस्यता () अछूता है, और वितरण लूप दोनों पथ का उपयोग अब एक विधि है इसलिए वे बहाव नहीं कर सकते। Ephemeral उपभोक्ता संदेश प्रकाशित नहीं करते हैं जबकि कुछ भी सदस्यता नहीं दी गई थी। नहीं टिकाऊ लोग - दोनों DeliverPolicy का उपयोग करते हैं। नया - इसलिए यह एक प्रतिगमन नहीं है।.

  30. · kamo-internal

    "What हुआ?" विंडो को भरता है, इसलिए इसे अधिकतम करने में वृद्धि होती है

    रिपोर्ट फॉर्म पर हर दूसरे क्षेत्र को इसकी सामग्री से आकार दिया जाता है। The वर्णन यह है कि कोई वास्तव में लिख रहा है, इसलिए यह अब लेता है जो भी ऊंचाई बाएं है - और उपकरण विंडो को अधिकतम करना इसलिए है मूल्य निर्धारण तीन भागों और तीनों की जरूरत है: स्क्रॉल क्षेत्र `minHeight: 100%` पर एक आंतरिक फ्लेक्स कॉलम प्राप्त करता है, नहीं `height: 100%`। एक निश्चित पूर्ण ऊंचाई पर खिड़की की तुलना में एक रूप लंबा अपने क्षेत्रों को संपीड़ित करेगा क्योंकि फ्लेक्स बच्चे डिफ़ॉल्ट रूप से सिकुड़ते हैं। एक न्यूनतम के रूप में यह बिल्कुल पूर्ण ऊंचाई है जब वहाँ कमरे में है - जो कमरे में वर्णन लेता है - और जब वहाँ है तो यह अतीत में बढ़ता है नहीं, जिस पर बाहरी बॉक्स स्क्रॉल इंगित करता है और कुछ भी स्क्वैश नहीं है। क्षेत्र एक 'minHeight' मंजिल के साथ एक फ्लेक्स आइटम बन जाता है। `minRows` चला गया इसके साथ: वह TextareaAutosize ड्राइव करता है, जो सामग्री को मापता है और उसके साथ होता है। एक इनलाइन ऊंचाई लिखते हैं, और 'flex-basis: 0` के साथ अन्यथा होगा क्षेत्र को शून्य करने के लिए ढहने के लिए कुछ भी नहीं होना चाहिए। Textarea को `ऊंचाई: ऑटो ! महत्वपूर्ण` के साथ जारी किया गया है, नहीं `height: 100%`। रेखांकित रैपर अपने बच्चों को खींचता है, इसलिए textarea यह unaided भरने जाएगा - एक निश्चित के साथ एक फ्लेक्स आइटम को छोड़कर क्रॉस-आकार में खिंचाव नहीं होता है और ऑटोसाइज इसे एक इनलाइन देता है। सेटिंग वापस आ गया ऑटो वापस करने के लिए यह लड़ाई के बजाय खिंचाव बहाल। 100% था पहले कोशिश की और चुपचाप सब पर कुछ नहीं करता: प्रतिशत नहीं है इसके खिलाफ हल करने के लिए ब्लॉक युक्त निश्चित, इसलिए यह ऑटो वापस गिर जाता है और क्षेत्र अपनी आंतरिक दो पंक्तियों में प्रस्तुत करता है, जिसमें कहीं भी कोई त्रुटि नहीं है सूचना मापा, नहीं माना जाता है। इस घटक से निर्मित एक पिल्ले वाला दोहन खुद की भावना उत्पादन एक 720px विंडो में textarea के 240px देता है, 444px पर 940px, और एक मंजिला क्षेत्र जिसमें फॉर्म 430px पर स्क्रॉल किया जाता है - साथ में शीर्षक क्षेत्र अभी भी सभी तीनों में 40px। प्रतिबद्ध गार्ड का दावा ऊंचाई के बजाय नियम, क्योंकि jsdom कोई लेआउट नहीं है, और यह था जब नियमों को 100% कर दिया जाता है तो विफल होने की पुष्टि की गई।.

तुम्हारा ब्रह्मांड इंतजार कर रहा है.

मिनटों में मुफ्त शुरू करें. जब भी आप तैयार हों तो उत्पाद जोड़ें - कोई माइग्रेशन नहीं, कोई नया लॉगइन नहीं.

हमेशा के लिए मुफ्त - कोई क्रेडिट कार्ड की आवश्यकता नहीं