दिलचस्प पोस्ट
f: कन्वर्टडेटाइम गलत दिनांक प्रदर्शित करता है Google ड्राइव API v3 माइग्रेशन PHP memory_limit बढ़ाना किस बिंदु पर यह पागल हो जाता है? कैसे codeigniter में एसक्यूएल इंजेक्शन से बचने के लिए शेलकोड लेखन सेगमेंटेशन गलती निष्पादित करें एचटीएमएल फॉर्म का उपयोग किए बिना JSF पृष्ठ पर पोस्ट करने के लिए अनुरोध कैसे प्रोग्राम करना है? ब्लूटूथ फ़ाइल स्थानांतरण एंड्रॉइड सी # में बिटमैप पिक्सेलफॉर्मेट्स परिवर्तित करना आर में दशमलव स्थानों का प्रारूपण करना मैं ट्री व्हीव्यू में ट्री इटैम द्वारा एक माउस क्लिक ईवेंट कैसे स्वीकार किया? सी # में int के लिए कोई अतिप्रवाह अपवाद नहीं है? क्या url के मूल्य उद्धृत करना वास्तव में आवश्यक है? क्यों बड़े ऑब्जेक्ट ढेर और क्यों हम परवाह है? लोग base128 का उपयोग क्यों नहीं करते हैं? Constexpr के साथ तालिका देखें

जीज़िप के जावास्क्रिप्ट कार्यान्वयन

मैं एक वेब अनुप्रयोग लिख रहा हूं जो AJAX डेटा को एक छोटे, फिक्स-साइज़ सर्वर-साइड कैशे में AJAX के माध्यम से संग्रहीत करने की आवश्यकता है (सोचें: Opensocial quotas )। मेरे पास सर्वर पर नियंत्रण नहीं है I

मुझे सर्वर-साइड कोटा के अंदर रहने के लिए संग्रहीत डेटा के आकार को कम करना होगा, और यह सर्वर पर भेजने से पहले ब्राउज़र में स्ट्रैटेड JSON को जंप करने की उम्मीद कर रहा था।

हालांकि, मुझे ज़ज़िप के जावास्क्रिप्ट लागूकरण के तरीके में बहुत कुछ नहीं मिल रहा है। किसी भी सुझाव के लिए कि कैसे मैं इसे भेजने से पहले ग्राहक पक्ष पर डेटा को सम्मिलित कर सकता हूं?

Solutions Collecting From Web of "जीज़िप के जावास्क्रिप्ट कार्यान्वयन"

संपादित करें एक बेहतर एलजीडब्ल्यू समाधान प्रतीत होता है जो कि http://pieroxy.net/blog/pages/lz-string/index.html (टिप्पणी में भेदी के लिए धन्यवाद) पर सही ढंग से यूनिकोड स्ट्रिंग संभालता है।


मैं किसी भी gzip कार्यान्वयन के बारे में नहीं जानता, लेकिन जेएसओएलएटी लाइब्रेरी (साइट को चले गए लगता है) में एलजेडब्ल्यू संपीड़न / डीकंप्रेस के लिए फ़ंक्शन हैं। कोड एलजीपीएल के तहत कवर किया गया है ।

// LZW-compress a string function lzw_encode(s) { var dict = {}; var data = (s + "").split(""); var out = []; var currChar; var phrase = data[0]; var code = 256; for (var i=1; i<data.length; i++) { currChar=data[i]; if (dict[phrase + currChar] != null) { phrase += currChar; } else { out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); dict[phrase + currChar] = code; code++; phrase=currChar; } } out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0)); for (var i=0; i<out.length; i++) { out[i] = String.fromCharCode(out[i]); } return out.join(""); } // Decompress an LZW-encoded string function lzw_decode(s) { var dict = {}; var data = (s + "").split(""); var currChar = data[0]; var oldPhrase = currChar; var out = [currChar]; var code = 256; var phrase; for (var i=1; i<data.length; i++) { var currCode = data[i].charCodeAt(0); if (currCode < 256) { phrase = data[i]; } else { phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar); } out.push(phrase); currChar = phrase.charAt(0); dict[code] = oldPhrase + currChar; code++; oldPhrase = phrase; } return out.join(""); } 

मुझे एक और समस्या थी, मैं gzip में डेटा सांकेतिक शब्दों में बदलना नहीं चाहता था लेकिन जीज़िप डेटा को डिकोड करना चाहता था। मैं ब्राउज़र के बाहर जावास्क्रिप्ट कोड चला रहा हूं, इसलिए मुझे इसे शुद्ध जावास्क्रिप्ट का इस्तेमाल करने की आवश्यकता है।

यह मुझे कुछ समय ले गया लेकिन मुझे पता चला कि जेएसएक्सजीएफ पुस्तकालय में जीज़िप डेटा पढ़ने का एक तरीका है।

यहां वह जगह है जहां मुझे लाइब्रेरी मिली: http://jsxgraph.uni-bayreuth.de/wp/2009/09/29/jsxcompressor-zlib-compressed-javascript-code/ यहां तक ​​कि एक स्टैंडअलोन उपयोगिता भी है जो कि, JSXCompressor , और कोड एलजीजीएल लाइसेंस प्राप्त है।

बस अपने प्रोजेक्ट में jsxcompressor.js फ़ाइल को शामिल करें और फिर आप एक बेस 64 एन्कोडेड जीज़िप डेटा पढ़ सकेंगे:

 <!doctype html> </head> <title>Test gzip decompression page</title> <script src="jsxcompressor.js"></script> </head> <body> <script> document.write(JXG.decompress('<?php echo base64_encode(gzencode("Try not. Do, or do not. There is no try.")); ?>')); </script> </html> 

मैं समझता हूं कि आप क्या चाहते थे, लेकिन मैं अभी भी यहां उत्तर देता हूं क्योंकि मुझे संदेह है कि यह कुछ लोगों को मदद करेगा।

हम सिर्फ जावा को ज़िप के लिए zlib के पोर्ट https://github.com/nodeca/pako , बंद कर दिया है। मुझे लगता है कि अब डिफ्लेट / फ़्लाईट / जीज़िप / यूनजीप के सबसे तेज़ी जे एस कार्यान्वयन है इसके अलावा, इसमें लोकतांत्रिक एमआईटी लाइसेंस है Pako सभी zlib विकल्प का समर्थन करता है और इसके परिणाम बाइनरी बराबर हैं।

मैंने एक जीडब्ल्यूटी मॉड्यूल से एलजीएमए के कार्यान्वयन को स्वसंपूर्ण जावास्क्रिप्ट में रख दिया। इसे एलजीएमए-जेएस कहा जाता है

जावास्क्रिप्ट में लागू कुछ अन्य संपीड़न एल्गोरिदम हैं:

  • Huffman
  • LZ77

मैंने परीक्षण नहीं किया, लेकिन ज़िप के एक जावास्क्रिप्ट कार्यान्वयन है, जिसे जेएसज़िप कहते हैं:

http://jszip.stuartk.co.uk/

https://stuk.github.io/jszip/

मुझे लगता है कि एक सामान्य क्लाइंट-साइड जावास्क्रिप्ट संपीड़न क्रियान्वयन प्रसंस्करण समय के संदर्भ में एक बहुत ही महंगा ऑपरेशन होगा क्योंकि असम्पीडित पेलोड के साथ कुछ और HTTP पैकेट के समय का स्थानांतरण करने का विरोध किया गया था।

क्या आपने कोई परीक्षण किया है जो आपको एक विचार देगा कि बचाने के लिए कितना समय है? मेरा मतलब है, बैंडविड्थ बचत वह नहीं हो सकती है जो आप के बाद कर रहे हैं, या कर सकते हैं?

अधिकांश ब्राउज़रों मक्खी पर gzip विघटित कर सकते हैं। यह जावास्क्रिप्ट कार्यान्वयन से बेहतर विकल्प हो सकता है

आप पिक्सेल में 1 पिक्सेल प्रति 1 पिक्सेल जावा एपलेट एम्बेडेड कर सकते हैं और इसका इस्तेमाल संपीड़न के लिए कर सकते हैं।

यह जावास्क्रिप्ट नहीं है और क्लाइंट को जावा रनटाइम की आवश्यकता होगी लेकिन यह आपके लिए क्या आवश्यक है।