Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

क्या 'नो पास' दृष्टिकोण रेल डेवलपर्स के लिए एक स्मार्ट विकल्प है?

<पी> रेल्स 8 को एक स्पष्ट आधार के साथ भेजा गया:"कोई PaaS आवश्यक नहीं।" जैसे-जैसे क्लाउड प्लेटफ़ॉर्म अधिक महंगे हो गए हैं, रूबी ऑन रेल्स ने बाहरी बुनियादी ढांचे की निर्भरता को कम करने की ओर कदम बढ़ाया है ताकि डेवलपर्स कम से कम सेवा निर्भरता के साथ एप्लिकेशन को तैनात और चला सकें।

<पी> क्या  नो पास  दृष्टिकोण रेल डेवलपर्स के लिए एक स्मार्ट विकल्प है?

<पी> परंपरागत रूप से, इंटरनेट पर रेल्स ऐप को तैनात करने का मतलब डेटाबेस सर्वर (जैसे, पोस्टग्रेएसक्यूएल) और कैशिंग, बैकग्राउंड जॉब्स या वेबसॉकेट के लिए रेडिस जैसी अतिरिक्त सेवाओं का प्रावधान करना है। रेल्स 8 के साथ, कोर टीम कैशिंग, जॉब क्यू और रीयल-टाइम वेबसॉकेट के समाधानों में बदलाव करके इसे बदलने की उम्मीद करती है - ये सभी आपके एप्लिकेशन के डेटाबेस द्वारा संचालित हैं।

<पी> इस लेख में, हम यह पता लगाएंगे कि रेल्स 8 "सॉलिड ट्राइफेक्टा" के अवलोकन से शुरुआत करते हुए "कोई Paa आवश्यक नहीं" वादे को कैसे पूरा करता है।

सॉलिड कैश आपको रेडिस के बिना कैश करने में मदद करता है

<पी> रेल्स 8 में मेरी पसंदीदा सुविधाओं में से एक सॉलिड कैश है , एक नया कैश स्टोर जो रेडिस या मेम्केच्ड की आवश्यकता को प्रतिस्थापित करता है . सॉलिड कैश इन-मेमोरी की-वैल्यू स्टोर के बजाय कैश्ड डेटा को बनाए रखने के लिए डेटाबेस का उपयोग करता है। हालाँकि डिस्क पर कैश्ड ऑब्जेक्ट को संग्रहीत करना रैम की तुलना में तकनीकी रूप से धीमा है, इसके कुछ महत्वपूर्ण फायदे हैं।

<पी> सबसे पहले, डिस्क स्टोरेज आपको अधिक स्थान देता है और मेमोरी की तुलना में बहुत सस्ता है। सॉलिड कैश के साथ, आप रैम खत्म हुए बिना कहीं अधिक डेटा कैश कर सकते हैं (और इसे लंबे समय तक रख सकते हैं)। 37signals (बेसकैंप और HEY के पीछे की कंपनी) पर, रेडिस से सॉलिड कैश पर स्विच करने से उन्हें अपने कैश को 10+ टेराबाइट्स डेटा तक विस्तारित करने की सुविधा मिलती है, जिससे अंततः उनके P95 रेंडर समय में 50% की कमी आती है।

<पी> हाँ, मेमोरी से पढ़ना डिस्क से पढ़ने की तुलना में तेज़ है। कई मामलों में (जैसे बेसकैंप का उपयोग), अधिक डेटा को कैशिंग करने का ट्रेडऑफ़ इस गति को सार्थक बनाता है।

<पी> डिफ़ॉल्ट रूप से, रेल्स 8 सॉलिड कैश (SQLite द्वारा समर्थित) का उपयोग करता है। बेशक, जैसा कि रेल सम्मेलनों में होता है, आप अभी भी रेडिस जैसा कोई अन्य विकल्प चुन सकते हैं यदि यह आपके लिए बेहतर विकल्प है। लेकिन इस डिफ़ॉल्ट के साथ बने रहने से आप रेडिस जैसी किसी अन्य उत्पादन सेवा का समर्थन किए बिना चीजों को कैश कर सकते हैं, जो आपके बुनियादी ढांचे के बोझ को सरल करता है।

सॉलिड क्यू आपको पृष्ठभूमि कार्य करने में मदद करता है - रेडिस के बिना

<पी> "सॉलिड" ट्राइफेक्टा का मेरा दूसरा पसंदीदा हिस्सा सॉलिड क्यू है, एक नया सक्रिय जॉब बैकएंड जो रेडिस या साइडकीक जैसी एक अलग जॉब सिस्टम निर्भरता की आवश्यकता के बिना बैकग्राउंड जॉब प्रोसेसिंग को संभालता है।

<पी> कई रेल डेवलपर्स पृष्ठभूमि नौकरियों के लिए साइडकीक (जो रेडिस पर निर्भर करता है) या विलंबित जॉब जैसे रत्नों का उपयोग करते हैं। सॉलिड क्यू, ज़रूरत को दूर करने का रेल्स का प्रयास है किसी अन्य निर्भरता के लिए. यह आपके एप्लिकेशन के डेटाबेस में जॉब क्यूइंग को एकीकृत करता है, इसलिए आपको मेमोरी समाधान या क्यूइंग सिस्टम की आवश्यकता नहीं है।

<पी> सॉलिड क्यू नौकरियों को डेटाबेस तालिका में रिकॉर्ड के रूप में संग्रहीत करता है और नौकरी कतार को प्रबंधित करने के लिए कुशल SQL सुविधाओं का उपयोग करता है। यह या तो रेल्स वेब प्रक्रिया में एम्बेडेड (एकल-सर्वर सेटअप के लिए प्यूमा प्लगइन के रूप में) या अलग कार्यकर्ता प्रक्रियाओं में चल सकता है।

<पी> ​जैसा कि रेल्स कोर टीम के एक सदस्य ने बताया, लक्ष्य यह था कि एक डेवलपर को "रेल स्थापित करें, एक डेटाबेस स्थापित करें, और सात अलग-अलग रत्नों और अन्य प्रणालियों को प्रबंधित किए बिना सीधे पृष्ठभूमि कार्य प्रसंस्करण करें।"

सॉलिड केबल आपको वेब सॉकेट करने में मदद करता है (आश्चर्य की बात है, रेडिस के बिना)

<पी> रेल्स 8 की "नो-रेडिस-नीडेड" पहेली का तीसरा भाग सॉलिड केबल है - एक नया एक्शन केबल एडॉप्टर, जैसा कि आपने अनुमान लगाया, एक डेटाबेस का उपयोग करता है। ऐतिहासिक रूप से, एक्शन केबल को कई रेल प्रक्रियाओं के बीच संदेश प्रसारित करने के लिए रेडिस सर्वर की आवश्यकता होती है। सॉलिड केबल के साथ, आप वास्तविक समय वेबसॉकेट कार्यक्षमता के लिए एक्शन केबल का लाभ उठा सकते हैं, चैट और नोटिफिकेशन जैसी एप्लिकेशन सुविधाओं के लिए लाइव अपडेट को अनलॉक कर सकते हैं - अतिरिक्त सेवाएं चलाए बिना।

<पी> मुझे आशा है कि "सॉलिड" ट्राइफेक्टा का लाभ अब तक स्पष्ट हो गया है। आप रेडिस सर्वर या अन्य पब/उप सेवा को खड़ा किए बिना दीर्घकालिक डेटा को कैश कर सकते हैं, उच्च-थ्रूपुट पृष्ठभूमि नौकरियों को संसाधित कर सकते हैं और वास्तविक समय सुविधाओं को तैनात कर सकते हैं। साथ में, ये सुविधाएँ छोटे ऐप्स के लिए जटिलता को कम करती हैं (आप एक डेटाबेस के साथ एक ही होस्ट पर सब कुछ चला सकते हैं) और तैनाती को आसान बनाने के रेल 8 दर्शन में फिट बैठते हैं।

क्या Redis की आवश्यकता को हटाना इतनी बड़ी बात है?

<पी> यह देखने के बाद कि रेल्स 8 रेडिस पर निर्भरता को हटाने के बारे में कितना है, आप उत्सुक हो सकते हैं कि यह वास्तव में कितना मायने रखता है। उत्तर आपके संदर्भ पर निर्भर करता है, लेकिन निस्संदेह कुछ उल्लेखनीय लाभ हैं।

<पी> कम चलने वाले हिस्सों का मतलब कम जटिलता है, विशेष रूप से तैनाती में। प्रत्येक अतिरिक्त सेवा (रेडिस, एक अलग बैकग्राउंड जॉब रनर, आदि) एक और चीज़ है जो टूट सकती है या स्केलिंग की आवश्यकता हो सकती है। अधिक जानकारी के लिए डेटाबेस का उपयोग करके, आप अपने उत्पादन कार्यों को सरल बनाते हैं। आपको Redis मेमोरी की निगरानी करने या यह सुनिश्चित करने की आवश्यकता नहीं है कि Redis इंस्टेंस हमेशा चल रहा है।

<पी> कई रेल डेवलपर्स ने ऐसे परिदृश्य का सामना किया है, जहां विकास में, आप कैश सर्वर नहीं चलाते हैं या शायद एक अलग कतार एडाप्टर का उपयोग करते हैं, लेकिन उत्पादन में, आप रेडिस/साइडकीक का उपयोग करते हैं। नए रेल डिफ़ॉल्ट के साथ, आप आश्चर्य को कम करते हुए, विकास और उत्पादन में समान सेटअप चला सकते हैं। स्टैक अधिक आत्मनिर्भर है और उत्पादन के लिए विशेष कॉन्फ़िगरेशन के बिना बॉक्स से बाहर "बस काम करता है"। <पी> कम सर्वर या ऐड-ऑन का मतलब सस्ता होस्टिंग बिल भी है। यहां तक ​​कि बड़े पैमाने पर भी, बुनियादी ढांचे को मजबूत करने में कुछ लागत दक्षता आती है। डेटाबेस स्पेस मेमोरी से सस्ता है!

<पी> रेल्स आपको रेडिस या अन्य सेवाओं का उपयोग करने से नहीं रोकता है। यह उन्हें वैकल्पिक बनाता है . आप बिल्ट-इन सॉलिड एडेप्टर के साथ शुरुआत कर सकते हैं, और यदि आपको ज़रूरत है, तो आप रेडिस या अन्य समाधान पेश कर सकते हैं।

SQLite डेटाबेस प्रक्रिया की आवश्यकता को हटा देता है

<पी> रेल्स 8 में एक और सार्थक बदलाव एक उपयोगी उत्पादन डेटाबेस के रूप में SQLite को अपनाना है, जो रेल्स के SQLite एडाप्टर में कई सुधारों द्वारा सक्षम है। यदि आपका ऐप उत्पादन में SQLite का उपयोग कर सकता है, तो आपको एक अलग डेटाबेस सर्वर चलाने की आवश्यकता नहीं है। इसके बजाय, आपका डेटा ऐप प्रक्रिया द्वारा प्रबंधित डिस्क पर एक साधारण फ़ाइल में रहता है। SQLite में रेल 8 के सुधार इसे पहले की तुलना में अधिक यथार्थवादी बनाते हैं।

<पी> SQLite परिनियोजन को और अधिक सरल बना सकता है। आपको सर्वर पर MySQL या Postgres को स्थापित या प्रबंधित करने या प्रबंधित DB सेवा का उपयोग करने (और भुगतान करने) की आवश्यकता नहीं है। यह सिर्फ एक फ़ाइल है जिसे रेल्स ऐप पढ़ता और लिखता है।

<पी> यदि आप SQLite से आगे निकल जाते हैं, तो आप निश्चित रूप से बाद में पूर्ण-विशेषताओं वाले डेटाबेस सिस्टम पर माइग्रेट कर सकते हैं। रेल्स कोर टीम ने डिफ़ॉल्ट को हल्के विकल्प में बदल दिया है - जो "नो पास" कथा के साथ अच्छी तरह से फिट बैठता है।

कमल 2 आपको तैनात करने में मदद करता है

<पी> रेल्स 8 चलाना को सरल बनाता है एक ऐप उत्पादन में है—लेकिन ऐप को तक पहुंचाने के बारे में क्या? उत्पादन? कमल 2 की रिलीज़ उस प्रश्न का उत्तर देने का प्रयास करती है।

<पी> कमल एक ऑर्केस्ट्रेशन टूल है जो आपके ऐप को (डॉकर कंटेनर के माध्यम से) किसी भी लिनक्स सर्वर पर न्यूनतम परेशानी के साथ तैनात करता है। यह आपके ऐप की छवि बनाने, उसे पुश करने और सर्वर पर चलाने को स्वचालित करता है, बिना आपको सभी सर्वर सेटअप को हस्तनिर्मित किए।

<पी> क्या  नो पास  दृष्टिकोण रेल डेवलपर्स के लिए एक स्मार्ट विकल्प है?

<पी> कुछ कॉन्फ़िगरेशन और एक कमांड के साथ (kamal setup ), कमल एक ताज़ा लिनक्स बॉक्स लेगा और उसमें आपके डॉकर कंटेनर को चलाने के लिए आवश्यक चीज़ें उपलब्ध कराएगा।

<पी> उसके बाद, परिनियोजन kamal deploy चलाने जितना आसान है , जो नवीनतम छवि खींचता है और शून्य-डाउनटाइम परिनियोजन के रूप में पुराने कंटेनर को नए कंटेनर से बदल देता है।

<पी> कमल 2 आपको किसी भी लिनक्स होस्ट पर PaaS जैसा परिनियोजन अनुभव देने की आशा करता है। आप किसी भी सर्वर को एक ही कमांड से अपना ऐप चलाने वाले रेल सर्वर में बदल सकते हैं। आरंभिक कॉन्फ़िगरेशन में कठिनाई हो सकती है, लेकिन बाद की तैनाती अधिक सरल है। यह सेल्फ-होस्टिंग को हेरोकू जैसे प्लेटफ़ॉर्म पर धकेलने जितना सुविधाजनक बनाने की दिशा में एक बड़ा कदम है।

क्या "नो पास" एक अच्छा विचार है?

<पी> क्या रेल्स 8 वास्तव मेंहै प्लेटफ़ॉर्म को अतीत की चीज़ बना दें? और क्या छोटी से मध्यम आकार की टीमें वास्तव में स्व-मेज़बानी करके पैसे बचा सकती हैं?

<पी> मैंने हाल ही में कमल का उपयोग करके वीपीएस पर एक हॉबी प्रोजेक्ट तैनात किया था, और यह एक निराशाजनक अनुभव था। जबकि मेरे द्वारा इसे कार्यान्वित करने के बाद तैनाती अपेक्षाकृत निर्बाध है, सेटअप इससे बहुत दूर था, और यदि मुझे कभी भी इस परियोजना को बढ़ाने की आवश्यकता होती है तो मेरा काम मेरे लिए समाप्त हो जाता है।

<पी> तो, मेरे लिए, उत्तर नहीं है - रेल्स 8 प्लेटफ़ॉर्म के मूल्य प्रस्ताव को नहीं हटाता है . मैं अपने ऐप पर ध्यान केंद्रित करूंगा और हेरोकू जैसे प्लेटफॉर्म को बुनियादी ढांचे को संभालने दूंगा।

<पी> एकल डेवलपर्स और छोटी टीमों को बड़े पैमाने की अर्थव्यवस्थाओं का पीछा करने की तुलना में अपने उपयोगकर्ताओं पर ध्यान केंद्रित करने से अधिक लाभ होगा। होस्टिंग, परिनियोजन और स्केलिंग को ऐसे प्लेटफ़ॉर्म पर आउटसोर्स क्यों नहीं किया जाए जो इन क्षेत्रों में इसे कुचल दे और आपके ग्राहकों को पसंद आने वाले उत्पाद के निर्माण पर ध्यान केंद्रित करे?

<पी> बेशक, जैसे-जैसे आपकी टीम और एप्लिकेशन बढ़ते हैं, आपको प्लेटफ़ॉर्म की कीमत कम आकर्षक लग सकती है। कुछ बिंदु पर, एसआरई और ऑप्स जिम्मेदारियों के लिए समर्पित समय और/या लोगों का होना समझ में आता है, और कमल (अन्य शानदार रेल्स 8 डिफॉल्ट्स के साथ) इसे आसान बनाने की दिशा में एक बड़ा कदम है।

यह सब एक साथ लाना

<पी> रेल्स 8 स्व-होस्टिंग और प्लेटफ़ॉर्म का उपयोग करने के बीच के अंतर को कम करता है, लेकिन यह इसे इतना बंद नहीं करता है कि ईमानदारी से दावा किया जा सके कि "PaaS की आवश्यकता नहीं है।" हालाँकि, यह स्पष्ट है कि रेल्स 8 बहुत अधिक डेवलपर अनुभव का त्याग किए बिना PaaS के बजाय VPS चुनना आसान बनाता है; मुझे नहीं लगता कि यह कोई प्लेटफ़ॉर्म किलर है।

<पी> सॉलिड कैश, सॉलिड क्यू और सॉलिड केबल सभी वेब ऐप्स के लिए पहले की तृतीय-पक्ष आवश्यकताओं को प्रथम-पक्ष समर्थन में लाते हैं, और मैं इसके लिए आभारी हूं। किसी एप्लिकेशन को ज़मीन पर उतारने के लिए हल्के लेकिन शक्तिशाली डिफॉल्ट का होना अद्भुत है, और इससे भी बेहतर, उन्हें अधिक बुनियादी ढांचे की आवश्यकता नहीं होती है। यदि आप स्वयं-मेजबानी करना चुनते हैं, तो कमल आपके लिए तैनाती का कुछ बोझ दूर कर सकता है।

<पी> चाहे आप प्लेटफ़ॉर्म का उपयोग कर रहे हों या नहीं, त्रुटियों और आउटेज पर त्वरित प्रतिक्रिया देने और अपने ग्राहकों को एक बेहतरीन उपयोगकर्ता अनुभव प्रदान करने के लिए निगरानी आवश्यक है। अपने रेल एप्लिकेशन के स्वास्थ्य और प्रदर्शन के बारे में वास्तविक समय में जानकारी प्राप्त करने के लिए हनीबेजर के लिए साइन अप करें।


  1. जावास्क्रिप्ट संकलन () विधि जावास्क्रिप्ट संकलन () विधि

    जावास्क्रिप्ट संकलन () विधि का उपयोग स्क्रिप्ट निष्पादन के दौरान नियमित अभिव्यक्ति को संकलित करने के लिए किया जाता है। इसे जावास्क्रिप्ट संस्करण 1.5 में हटा दिया गया है। जावास्क्रिप्ट संकलन () विधि के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html> <head> <style>  

  1. CSS निरपेक्ष और सापेक्ष इकाइयाँ CSS निरपेक्ष और सापेक्ष इकाइयाँ

    CSS निरपेक्ष इकाइयाँ और सापेक्ष इकाइयाँ दोनों दूरी इकाइयों की श्रेणी में आती हैं। CSS सापेक्ष इकाइयाँ किसी अन्य तत्व के संदर्भ में एक तत्व की लंबाई को परिभाषित करती हैं। उदाहरण के लिए, vh सापेक्ष इकाई व्यूपोर्ट ऊंचाई के सापेक्ष है। CSS सापेक्ष इकाइयाँ निम्नलिखित हैं - Sr.No इकाई और इससे संबंधित

  1. प्रत्येक दिए गए अंतराल के बाद माउस की स्थिति कैप्चर करने के लिए जावास्क्रिप्ट उदाहरण प्रत्येक दिए गए अंतराल के बाद माउस की स्थिति कैप्चर करने के लिए जावास्क्रिप्ट उदाहरण

    प्रत्येक दिए गए अंतराल के बाद माउस की स्थिति को पकड़ने के लिए, कोड इस प्रकार है। माउस की स्थिति को कैप्चर करने के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़;}.result { font-size:18px; फ़ॉन्ट-वजन:500; color:blueviolet;}हर दिए गए अंतरा