Thursday 21 December 2017

Nodejs readfile बाइनरी विकल्प


Node. js लिखने योग्य धाराओं के साथ डेटा संग्रहीत करना यह ट्यूटोरियल Node. js लिखने योग्य नलियों के साथ डेटा को कैसे संग्रहीत करेगा और कैसे अपना कस्टम रीडबल स्ट्रीम बनाने के बारे में बताएगा। संस्करण सूचना लेखक: जेफ बारसेज़वेस्की प्रकाशित: 18 अगस्त, 2018 टैग: नोडज, स्ट्रीम स्तर: इंटरमीडिएट पूर्वापेक्षाएँ: बफ़र्स, इवेंट, एनपीएम मॉड्यूल स्थापित करें Node. js v0.10 (इस लेखन के रूप में नवीनतम स्थिर है v0.10.16), लेकिन नदियों आमतौर पर अपने शुरुआती दिनों से नोड। जेएस का एक हिस्सा रहा है Streams2 Writable सार क्लास का प्रयोग नोड के पुराने संस्करणों (पूर्व v0.10) के साथ एनपीएम मॉड्यूल पठनीय-स्ट्रीम (v1.0.15 के साथ परीक्षण) का उपयोग करके किया जा सकता है। धाराओं पाठ फ़ाइल लेखन सरल उदाहरण बस यूफ़्फ़ 8 पाठ लिखित में है, क्योंकि डिफ़ॉल्ट एन्कोडिंग के बाद यदि आप स्ट्रिंग्स लिखते हैं तो utf8 है। यदि आप एक अलग एन्कोडिंग के साथ तार लिखना चाहते हैं तो आप केवल createWriteStream लाइन को बदल सकते हैं या प्रत्येक लिखने के लिए एन्कोडिंग जोड़ सकते हैं। द्विआधारी फ़ाइल लेखन एक द्विपदीय फ़ाइल लेखन सिर्फ लिखने के लिए स्ट्रिंग्स के बजाय बफ़र का उपयोग करने का मामला है। ऊपर दिए गए उदाहरण में, मैं क्रिप्टो.क्रेतेरैंडबैइट्स () का उपयोग बफर डेटा बनाने के लिए करता हूं, लेकिन आप बाइनरी डेटा का उपयोग कर सकते हैं जो आप आसानी से आसानी से किसी दूसरे स्रोत से बना या पढ़ सकते हैं। फाइल को लिखा गया है जब जानने के लिए इनपुट और आउटपुट Node. js में एसिंक्रोनस ऑपरेशंस हैं, तो क्या होगा अगर हम यह जानना चाहते हैं कि कोई फ़ाइल पूरी तरह से लिखी गई है तो इसका उत्तर श्रोताओं को घटनाओं को सेटअप करने के लिए है, जो स्ट्रीम का उत्सर्जन करता है फिनिश इवेंट (नोड. जेएस v0.10 में जोड़ा गया) इंगित करता है कि सभी डेटा को अंतर्निहित सिस्टम में फ्लाई किया गया है। V0.10 से पहले नोड. जेएस पर, आप जब उस प्लावित के संकेत प्राप्त करने के लिए. end () में एक सीबी जोड़ सकते हैं, फिर भी किसी भी अन्य परिवर्तनों को डाउनस्ट्रीम खाते में लेते हैं और इस तरह कस्टम नोड। जेएस लिखने योग्य धाराओं का निर्माण करना जब आपको डाटाबेस या अन्य भंडारण सुविधा में डेटा स्टोर करने के लिए अपना खुद का कस्टम लिखने योग्य स्ट्रीम बनाने की आवश्यकता होती है, तो यह आसान है यदि आप नोड। जेएस 0.10 में उपलब्ध नई स्ट्रीम 2 राइटलेटबल वर्ग का उपयोग करें या एनपीएम पॉलीफिल मॉड्यूल पठनीय-स्ट्रीम एक लिखने योग्य स्ट्रीम बनाने के लिए जो सामान्य Node. js स्ट्रीम व्यवहार को लागू करता है, आपको केवल लेखन योग्य उप-वर्ग और लेखन (चक, एन्कोडिंग, सीबी) को लागू करना है। लिखने योग्य मेमोरी स्ट्रीम बनाना यहां एक उदाहरण है, जो एक सरल इन-मेमरी डेटास्टोर को लिख रहा है। हम कुंजी के रूप में स्ट्रीम के निर्माण पर दिए गए नाम का उपयोग कर रहे हैं, और हम समाप्त होने तक डेटा को जोड़ते हैं। लिखित धाराएं सुरुचिपूर्ण और सरल हैं, लिखित पाठ या द्विआधारी डेटा को नोड। जेएस धाराओं में प्रयोग करना सरल है, और यहां तक ​​कि पूरी तरह से कार्यात्मक कस्टम लिखने योग्य धाराओं का निर्माण भी नोड। जेएस v0.10 (या में शुरू की गई नई स्ट्रीम 2 कार्यक्षमता के साथ पार्क में चलना है पॉलीफिल पठनीय-धारा मॉड्यूल का उपयोग कर) अतिरिक्त पठन के लिए इस पृष्ठ को साझा करें। नोड। जेएस पठनीय धाराओं के साथ पाठ और बाइनरी डेटा पढ़ना यह ट्यूटोरियल नोड। जेएस पठनीय धाराओं के उपयोग और सृजन की व्याख्या करेगा: संस्करण सूचना लेखक: जेफ बारसेज़वेस्की प्रकाशित: 3 अगस्त 2018 टैग: नोडज, स्ट्रीम स्तर: इंटरमीडिएट पूर्वापेक्षाएँ: क्रिप्टो, इवेंट्स, एनपीएम मॉड्यूल स्थापित करें Node. js v0.10 (इस लेखन के रूप में नवीनतम स्थिर है v0.10.15), लेकिन धाराएं आमतौर पर अपने शुरुआती दिनों से नोड. जेएस का हिस्सा रही हैं Streams2 को पुराने के साथ इस्तेमाल किया जा सकता है एनएमएम मॉड्यूल पठनीय-धारा का उपयोग करके नोड के संस्करण उपभोक्ता या पठनीय धाराओं का इस्तेमाल करना एक फाइल को पढ़ने और इसे stdout में गूंजने का सरल उदाहरण: एक फ़ाइल के sha1 डाइजेस्ट का निर्माण करना और परिणाम को stdout (शःसम के समान) के लिए गूंज करना है: डेटा इवेंट डेटा के प्रत्येक भाग के लिए पठनीय स्ट्रीम पर निकाल दिया गया, ताकि आप प्रत्येक भाग के लिए डायजेस्ट को अपडेट कर दें, फिर अंत में घटना को निकाल दिया जाता है जब स्ट्रीम समाप्त हो जाता है ताकि आप अंतिम परिणाम का उत्पादन कर सकें। ध्यान दें कि हर बार जब आप कॉल करते हैं.on () एक श्रोता को पंजीकृत करने के लिए यह मूल स्ट्रीम को रिटर्न करता है ताकि आप आसानी से चेन तरीकों को निकाल सकें नोड. जेएस 0.10 के साथ धाराओं का उपभोग करने का एक बेहतर तरीका है। पठनीय इंटरफ़ेस धाराओं के साथ काम करना आसान बनाता है, खासकर धाराएं जहां आप धारा बनाने और स्ट्रीम का उपयोग करने के बीच अन्य चीजें करना चाहते हैं। ये नई पठनीय धाराएं उन पुलियां खींचती हैं जहां डेटा को आपके पास धक्का जाने के बजाय डेटा के लिए अनुरोध किया जाता है। इस उदाहरण को समझने की कुंजी यह है कि नई स्ट्रीम 2 पठनीय इंटरफ़ेस के साथ, एक पठनीय घटना उतनी ही उत्सर्जित हो जाएगी जैसे डेटा पढ़ने के लिए उपलब्ध है और आप कॉल कर सकते हैं। एक बार जब कोई और डाटा उपलब्ध न हो तो पढ़ें () रिक्त रिटर्न, लेकिन फिर से एक और पठनीय घटना फिर से निकाल दी जाती है जब डेटा फिर से उपलब्ध होता है यह फ़ाइल के अंत तक जारी रहता है जब अंत की तरह पहले से निकाल दिया जाता है एक पठनीय धारा बनाने के लिए फ़ाइल सिस्टम या स्ट्रीम से धाराओं का उपयोग करने के लिए, आप स्ट्रीम बनाने के लिए कोर एफएस और एचटीटीपी विधियों का उपयोग कर सकते हैं, लेकिन आप अपनी खुद की स्ट्रीम कैसे बना सकते हैं और इसे डेटा से भर सकते हैं यह डाटाबेस से डाटा हो सकता है या किसी भी संख्या में स्रोत से यहां एक पठनीय धारा बनाने का एक उदाहरण है जो यादृच्छिक बाइनरी डेटा से उत्पन्न होता है, फिर इसे पहले की तरह दिखाना है यह परीक्षण के लिए नदियों को बनाने में उपयोगी होगा: नोट: पढ़ने के बाद () को कहा जाता है, हमें तब तक पढ़ना जारी रखना चाहिए जब तक कि हम काम नहीं करते या पुश () तक झूठी लौटाते हैं। पुराने नोड. जेएस संस्करणों के साथ स्ट्रीम 2 का उपयोग करना यदि आप इस कोड को 0.10 से पुराने नोड. जेएस के साथ काम करना चाहते हैं, तो आप अपने पैकेज में पढ़ने योग्य-स्ट्रीम के लिए निर्भरता को शामिल कर सकते हैं और पढ़ने के लिए लाइन 5 बदल सकते हैं: यह मूल का उपयोग करेगा अगर Node. js संस्करण 0.10 है और यदि नहीं, तो यह पठनीय स्ट्रीम है, तो यह पॉलीफिल पठनीय-स्ट्रीम मॉड्यूल को लोड करेगा और वहां से इसका उपयोग करेगा। स्ट्रीम और स्ट्रीम 2 की रोकें रोकें धाराएं कभी-कभी किसी एप्लिकेशन से अधिक तेज़ी से डेटा प्रदान कर सकती हैं, इसलिए स्ट्रीम को रोकने की क्षमता शामिल होती है और स्ट्रीम को पुनरारंभ होने तक डेटा बफर होता है। स्ट्रीम 2 से पहले, आपको सावधानीपूर्वक ध्यान देने की ज़रूरत होगी कि आप पॉज़िंग और फिर से शुरू करने के साथ ही डेटा फिर से शुरू करने तक बफर करने लगे। हालांकि स्ट्रीम 2 (नोड. जेएस 0.10 या पठनीय-स्ट्रीम पैकेज के माध्यम से) से पठनीय है कि आपके और स्ट्रीम के लिए कार्यक्षमता को स्वचालित रूप से तब तक रोका गया है जब तक कि रीड () कहा जाता है। आप पुरानी धाराओं पर नए इंटरफेस को कार्यान्वित करने के लिए एक रीडबल के साथ पुरानी धाराओं को भी लपेट कर सकते हैं: एक अन्य स्थिति में आपको विराम और फिर से शुरू होने के बारे में चिंता करने की जरूरत है अगर आपका उपभोक्ता कोड पुराने पुश शैली इंटरफ़ेस कॉलिंग का उपयोग करता है.on (39data39, श्रोता)। यह स्ट्रीम को पीछे की संगतता मोड में डालता है और आपको कॉल करने की आवश्यकता होगी। रोकें () और. resume () अपने आवेदन में आने वाले डेटा की दर को नियंत्रित करने के लिए। यदि आप अपने कोड में पुराने इंटरफ़ेस का उपयोग कर रहे हैं, तो विवरण के लिए स्ट्रीम API डॉक्स देखें। ऑब्जेक्ट स्ट्रीम शुरू में जब धाराओं को आधिकारिक एपीआई पेश किया गया था, तो यह संकेत मिलता था कि डेटा एकत्रित होने वाला बफ़र बफर या स्ट्रिंग होगा, हालांकि कई प्रयोक्ताओं को यह पता चला कि यह वस्तुएं स्ट्रीम करने में सक्षम होने के लिए बहुत अच्छी थी नोड। जेएस 0.10 में धारा 2 ने औपचारिक रूप से स्पष्ट किया कि यह कैसे काम करना चाहिए। ऑब्जेक्ट मोड में कब पढ़ें (एन) बस अगले ऑब्जेक्ट देता है (एन की अनदेखी) ऑब्जेक्ट मोड में किसी स्ट्रीम को स्विच करने के लिए, ऑब्जेक्टमोड प्रॉपर्टी को अपनी पठनीय स्ट्रीम बनाने के लिए इस्तेमाल किए गए विकल्पों में सही सेट करें ताकि आप बसों में ऑब्जेक्ट्स का इस्तेमाल आसानी से कर सकते हैं, बफ़र्स और स्ट्रिंग्स का इस्तेमाल कर सकते हैं, लेकिन एकमात्र सीमा यह है कि ऑब्जेक्ट्स पास निरर्थक नहीं हो सकता है क्योंकि यह संकेत देगा कि स्ट्रीम समाप्त हो गया है। Node. js पठनीय धाराएं लचीला होती हैं और आसान नोड। जेएस पठनीय धाराओं का इस्तेमाल करना आसान होता है और यहां तक ​​कि निर्माण करने में आसान भी होता है। आप न केवल बाइनरी और स्ट्रिंग डेटा को स्ट्रीम कर सकते हैं बल्कि ऑब्जेक्ट भी कर सकते हैं और फिर भी स्ट्रीम कार्यक्षमता का लाभ उठा सकते हैं। मुझे आशा है कि आप पठनीय धाराओं के इस त्वरित दौरे का आनंद लें, मुझे बताएं कि क्या आपके कोई प्रश्न हैं अतिरिक्त पढ़ने के लिए कोमो में इस पेजजेंडोट सीटीओ को साझा करें हैकर। Fullstacker। बड़ा डाटा। ओपन सोर्सर नोड. जेएस के साथ बाइनरी डेटा को पार्सिंग बीयरिंग डेटा के कुछ खंभे को उजागर करते हुए शुरू, उम्मीद है कि एक हवा में। यदि आप खुद को इन विषयों की ओर आकर्षित करते हैं, तो मैं इस पुस्तक की सलाह देता हूं (आप एचएएलएसएसैंग पार्ट्स को छोड़ सकते हैं) यह भी ध्यान दें कि इसकी थोड़ी पुरानी स्कूल (मैंने पढ़ा है कि 10 से अधिक साल पहले, लेकिन यह काफी प्रभाव पड़ा है) इसलिए सीखने के लिए नए और बेहतर संसाधन हो सकते हैं। एक कंप्यूटर शब्द, बिट्स के समूहिंग की एक इकाई है उदाहरण के लिए, एक शब्द 8, 16, 32, 64 आदि हो सकता है, बिट्स चौड़े। आम तौर पर शब्दों की चौड़ाई सीपीयू आर्किटेक्चर चौड़ाई (यानी 64 बिट सीपीयू) के साथ मिलती है, लेकिन हमारे मामले में, एन के निश्चित आकार के बिट्स के सेट के रूप में शब्द के अर्थ को अच्छी तरह से व्यवहार करते हैं, जहां N बिट्स की संख्या है। Endianness शब्द endian अंत से आता है जब आप बाइट्स के अनुक्रम को देखते हैं और एक सादे पुराने नंबर पर बाइट्स के एक समूह को परिवर्तित करना चाहते हैं, तो वह यह दर्शाता है कि बड़ी समाप्ति के मामले में पहले नंबर का पहला अंक सबसे बड़ा है। छोटे अंत के मामले में पहला भाग छोटा है उदाहरण के लिए, द्विआधारी फ़ाइल में दिखाई देने वाले दो बाइट्स को देखने के दो तरीके हैं: 01 23 बड़ा endian 01 23 0123 291 (अहस्ताक्षरित) थोड़ा endian 01 23 2301 8961 (अहस्ताक्षरित) जाहिर है, वहाँ एक बड़ा अंतर है तो जो आदेश एक निश्चित कार्यक्रम या फ़ाइल है जिसका आप वर्तमान में उपयोग का निरीक्षण कर रहे हैं जो कि आपको दस्तावेज़ीकरण से कुछ मिलना चाहिए, और आमतौर पर फ़ाइल में कुछ भी नहीं है (कुछ अपवादों को छोड़कर जो इस क्षेत्र से बाहर हैं) आपको बताएंगे कि यह किस तरह से है है। विकिपीडिया पर एंडियननेस इस के लिए एक महान संदर्भ है यदि आप अधिक जानना चाहते हैं। नंबर (हस्ताक्षरित, अहस्ताक्षरित) तस्वीर को पूरा करने के लिए, जब कोई संख्या द्विआधारी रूप (फ़ाइल, पैकेट, आदि) में क्रमबद्ध होती है, तो इसे एन शब्दों द्वारा प्रस्तुत किया जाएगा, और ये एन शब्द एनएम बाइट्स के रूप में संग्रहीत किए जाते हैं। इसलिए यदि कोई संख्या किसी शब्द पर मैप करेगी, और हमारे फ़ाइल लेआउट पर एक शब्द 2 बाइट होगा, तो हमें एंडिएन्स के संदर्भ में 2 बाइट्स का मूल्यांकन करना होगा। अंत में, हमें यह भी तय करना होगा कि संख्या हस्ताक्षरित है, या अहस्ताक्षरित नहीं है। कृपया इसे निजी अनुसंधान के रूप में छोड़ दें, यह देखने के लिए कि बाइनरी डेटा में हस्ताक्षर किए नंबरों का प्रतिनिधित्व करने के लिए कई तरीके हैं, और सबसे आम लोगों में क्या हैं बाइनरी डेटा में पैटर्न जाहिर है, नेटवर्क के माध्यम से जाने वाली फाइलें या पैकेट हमारे बाइनरी चश्मे के साथ कुछ भी देख सकते हैं। जब आप कुछ प्रोटोकॉल और फाइलें बाहर निकालते हैं, तो आपको कुछ और सामान्य पैटर्न और शब्दावली मिलती है: हेडर - यह बाइनरी फ़ाइल के कुछ सौ बाइट ले जाने के लिए सामान्य है, ताकि आपके पास अपनी सामग्री में इसकी होल्डिंग का एक नक्शा होगा । आम तौर पर एक शीर्षलेख को बुलाया जाता है सेगमेंट - आमतौर पर वर्गीकरण या पदानुक्रम को इंगित करने के लिए कई खंडों में एक फ़ाइल का विभाजन, एक सेगमेंट को सुविधाजनक संख्या में बाइट्स (जैसे 1 केबी) में बांटा जा सकता है और फिर उसी प्रकार के सेगमेंट दोहरा सकते हैं। पैडिंग - जब लगातार बाइट्स का एक ब्लॉक एक अजीब संख्या के साथ समाप्त हो जाता है - उदाहरण के लिए: 7, यह सीरियलइज़र और डिसेराइलाइजर दोनों में बहुत ही महत्वपूर्ण है और इसे थोड़ा नहाएं देने और इसे 8 बाइट ब्लॉक (अंतिम बाइट्स आमतौर पर 0 मान प्राप्त करें) यह दिखाता है कि शब्द संरेखण कितना महत्वपूर्ण है (एक शब्द आमतौर पर 16, 32, 64 बिट्स, जो कि बाइट्स की एक भी संख्या है)। नोड। जेएस फर्स्ट आईडी के बारे में एक शब्द जिस तरह से निकले Ij. दूसरे शब्दों में, मैं इसे मेरे लिए काम करने के लिए या आप इसे पसंद करने के लिए लाल रंग की लंबाई में जाने के लिए अभ्यस्त। इस विशेष मामले में मुझे कुछ आवश्यकताएं थीं और नोड। जेएस ने प्रदर्शन और एसिंक व्यवहार के मामले में मेरे लिए खुशी से ज़्यादा उनको पूरा किया और मुझे खुश कर दिया। नोड के साथ प्रैक्टिकल बाइनरी पार्सिंग या तो यह हाथ से करता है और एक जटिल पर्याप्त भाषा (हमारे मामले में एक भाषा एक द्विआधारी प्रारूप या प्रोटोकॉल है) को दिए जाने पर आपके विवेक को खतरा है या यहां कुछ चीजें हैं जो आप उपयोग कर सकते हैं और उनके नोड-आईश समकक्ष: पारंपरिक पार्स जेनरेटर (बायसन, आदि) - जेसन न्यूर, यकीनन आसान पार्सर जेनरेटर (पीईजी पार्सर) - कैनोपी बाइनरी डाटा पार्सर (बेहतर नाम की कमी के कारण) - नोड-बाइनरी निफ्टी बिट-स्ट्रिंग (एर्लंग) को भंग करें- बिटसिनेक्स-जेएस इस मामले में बीमार उपस्टेट बाइनरी डेटा पार्सर नोड-बाइनरी का उपयोग कर रहे हैं। लिखित के समय मैं विघटन के बारे में जागरूक नहीं था - जो एपीआई के मामले में बहुत समान दिखता है, लेकिन कार्यान्वयन में नया और सरल है क्योंकि यह दावा करता है कि मैं इसका मूल्यांकन करने के लिए और जल्दी ही अच्छी तुलना करूँगा। दुर्भाग्य से मैं पार्स करने वाला प्रारूप स्वामित्व है, इसलिए मैं यहां प्रारूप और समाधान को पेस्ट नहीं कर सकता और किया भी हो सकता है :(। इसके बजाय हम अपना स्वयं का द्विआधारी प्रारूप बनाते हैं, लेकिन आम पैटर्न का उपयोग करते हैं, मुझे यकीन है कि आप में टक्कर लेंगे हेडर हमारे काल्पनिक फ़ाइल प्रारूप (ब्रैकेट्स में फ़ील्ड का आकार): जादू 2 आकार के हेडर 2 मेटा 1, 2 मेटा 2 2 सेगमेंट 2 मेटा 3 की शुरुआत 2 पहला भाग स्मृति में फ़ाइल की सामग्री को पढ़ना बहुत ही महत्वपूर्ण है सामान्य प्रोग्रामिंग कार्य, और, जैसा कि कई अन्य चीजों के साथ, नोड. जेएस कोर एपीआई इस तुच्छ को बनाने के तरीकों को प्रदान करता है। कई प्रकार की फ़ाइल सिस्टम विधियां हैं, सभी एफएस मॉड्यूल में निहित हैं। एक फ़ाइल fs. readFile के साथ है: इस प्रकार है: एन्कोडिंग एक वैकल्पिक पैरामीटर है जो फ़ाइल को पढ़ने के लिए एन्कोडिंग के प्रकार को निर्दिष्ट करता है। संभव एनकोडिंग ascii, utf8, और base64 हैं.यदि कोई एन्कोडिंग प्रदान नहीं किया जाता है, तो डिफ़ॉल्ट utf8 है। एक फ़ंक्शन कॉल करने के लिए जब फ़ाइल rea है डी और सामग्री तैयार हैं - इसे दो तर्क, त्रुटि और डेटा पारित किया गया है अगर कोई त्रुटि नहीं है, त्रुटि शून्य होगी और डेटा में फ़ाइल सामग्री शामिल होगी अन्यथा त्रुटि संदेश शामिल है। इसलिए यदि हम etchosts पढ़ना चाहते हैं और इसे stdout (जैसे यूनिक्स बिल्ली) में प्रिंट करना चाहते हैं: एटोग्रास्ट की सामग्री अब आपको दिखाई देनी चाहिए, बशर्ते आपको फ़ाइल को पहली जगह में पढ़ने की अनुमति है। अब एक उदाहरण पर एक नज़र डालें, जब आप एक अमान्य फ़ाइल पढ़ने की कोशिश करते हैं तो क्या होता है - सबसे आसान उदाहरण वह है जो मौजूद नहीं है। यह आउटपुट है: यह एक बुनियादी Node. js त्रुटि ऑब्जेक्ट है - यह अक्सर err. stack को लॉग करने के लिए उपयोगी हो सकता है, क्योंकि इसमें स्टैक ट्रेस को उस कोड में स्थान पर रखा गया है जिस पर त्रुटि ऑब्जेक्ट बनाया गया था।

No comments:

Post a Comment