दो-फलक वेब फ़ाइल प्रबंधक क्लाउड कमांडर

कई फ़ाइल प्रबंधक हैं, लेकिन एक ऐसा है जो मुझे लगता है कि बहुत से सीखना दिलचस्प होगा। आखिरकार, यह दो-पैनल है, एक ब्राउज़र में काम करता है, एक संपादक (सिंटैक्स हाइलाइटिंग के साथ) और एक कंसोल से लैस है, जिसमें एक क्लाइंट और एक सर्वर शामिल है, और जावास्क्रिप्ट / Node.js. में लिखा गया है।











वेबसाइट: Cloudcmd.io

डेमो: हरोकू , जित्सु



प्रस्तावना



कंप्यूटर की पहली किताब जो मैंने पढ़ी वह थी विंडोज: विजार्ड लैब । वह विंडोज 9x के लिए कई प्रकार की उपयोगिताओं के बारे में बात करता है। उनमें से कुछ अब मौजूद नहीं हैं (उदाहरण के लिए जिप मैजिक 2000), जबकि अन्य सक्रिय रूप से उपयोग किए जाते हैं, और सबसे महत्वपूर्ण बात, इस दिन (कुल कमांडर) के लिए विकसित की जाती है। सबसे अधिक मुझे फ़ाइल प्रबंधकों के बारे में अनुभाग पसंद आया। मेरे पास अभी तक एक कंप्यूटर नहीं है, लेकिन फिर भी मुझे एहसास हुआ कि यह एक्सप्लोरर का उपयोग करने के लिए गंभीर नहीं है, और टू-पैनल फ़ाइल प्रबंधकों का उपयोग करने के लिए यह अधिक सही और सुविधाजनक है। मैंने हर उस चीज़ की कोशिश की, जो उस हर कंप्यूटर पर किताब में थी जिसे मैं देखने में कामयाब रहा। सबसे अधिक, ज़ाहिर है, मुझे कुल कमांडर पसंद आया। वह अपने व्यवसाय में सबसे अच्छा है, यह निर्विवाद है।



कुछ साल बाद, मुझे एक कंप्यूटर मिला। कुछ समय बाद, विंडोज के बगल में, मैंने लिनक्स स्थापित किया, और सुविधाजनक फ़ाइल प्रबंधन के लिए उपयुक्त कुछ खोजना चाहता था। मैं वास्तव में सफल नहीं हुआ। हाँ, मिड नाइट कमांडर * निक्स सबसे अच्छा है, यह सच है। लेकिन कई कार्य जो मुझे कुल मिलाकर उपयोग करने के लिए थे, वे इसमें नहीं थे। वे ग्राफिक मैनेजर में नहीं थे। इनमें से एक फ़ंक्शन नाम दर्ज करते समय वर्तमान फ़ाइल के पॉइंटर को आगे बढ़ा रहा है (जब बहुत सारे फ़ोल्डर हैं, और मेरे पास बहुत संगीत है - सूची के माध्यम से फ़्लिप करना सबसे सुखद बात नहीं है)।



अंत में, मुझे संगीत सुनने, वीडियो देखने और नंगे कंसोल में फ़ाइलों को प्रबंधित करने में अधिक सुखद था। जिसे मैंने कुछ देर के लिए रोक दिया।



कारणों



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



मैं क्लाउड सेवाओं के विचार के बारे में उत्साहित हो गया, मुझे इन परियोजनाओं के खुलेपन और क्षमताओं को इतना पसंद आया कि मैंने अपना बनाना शुरू कर दिया। यह क्लाउड कमांडर का फाइल मैनेजर है।



एनालॉग


अधिकांश एनालॉग्स php में लिखे गए हैं, जो मेरे बहुत करीब नहीं है। अधिकांश कोड जो मैं जावास्क्रिप्ट में लिखता हूं, इसलिए, तदनुसार, मैं एक ऐसी भाषा में लिखे गए अधिक एप्लिकेशन देखना चाहता हूं जो सबसे अच्छा नहीं हो सकता है, लेकिन सबसे आम है, यह सुनिश्चित करने के लिए है।



वेब फ़ाइल प्रबंधक


वेब के लिए बहुत सारे फ़ाइल प्रबंधक हैं। लेकिन, व्यवहार में, उनमें से प्रत्येक में कई मूलभूत समस्याएं हैं:





अच्छे प्रबंधकों में से, मैं उदाहरण के लिए, निम्नलिखित का हवाला दे सकता हूं:





ऊपर वर्णित एप्लिकेशन बहुत अच्छा काम करते हैं। लेकिन सामान्य फ़ाइल प्रबंधक से, उदाहरण के लिए, मैं एक और उम्मीद करता हूं। और अगर एक ब्राउज़र में काम करने की आवश्यकता है - तो इस प्रकार के कार्यक्रमों को और अधिक अनुकूल क्यों न बनाएं, न केवल आम उपयोगकर्ताओं के लिए, बल्कि अधिक उन्नत लोगों के लिए जो अपना अधिकांश समय क्लासिक दो-पैनल फ़ाइल प्रबंधकों में बिताते हैं।



दो-फलक फ़ाइल प्रबंधक


मुझे दो-पैनल फ़ाइल प्रबंधक नहीं मिले हैं, जो 2 साल पहले एक ब्राउज़र में काम करेंगे, जब मैंने अपना कार्यान्वयन लिखना शुरू कर दिया था, तो अब मुझे यह नहीं मिलेगा। हालांकि मैं नियमित रूप से इस मुद्दे की निगरानी करता हूं।



सबसे पहले, मेरे पास किसी के उपक्रम को जारी रखने के लिए, परियोजना से जुड़ने के लिए, इसलिए बोलने के लिए विचार थे। मुझे एक एनालॉग मिला (सोर्सली पर मुझे अब लिंक याद नहीं है), वेब इंटरफेस के साथ SourceForge पर कुल कमांडर, यह PHP में लिखा गया था, जिसके साथ मैं उस समय खेल रहा था। उसका सभी कोड एक फ़ाइल में संयुक्त हो गया था, और मैं वास्तव में इससे निपटना नहीं चाहता था। इसके अलावा, उन दिनों में, मुझे Node.js में सक्रिय रूप से दिलचस्पी होने लगी, और मैं इसे एक नई परियोजना पर आजमाना चाहता था।



तब से जो दिलचस्प चीजें सामने आई हैं, मैं केवल उस मेट्रो कमांडर को अलग कर सकता हूं। सच है, इसे महसूस करने का कोई मौका नहीं है, क्योंकि यह केवल win8 पर काम करता है, और ब्राउज़र में नहीं, बल्कि मूल रूप से। लेकिन स्क्रीनशॉट प्रभावशाली लगते हैं। अन्यथा, इस दिशा में कोई विशेष आंदोलन नहीं हैं, कम से कम उन जगहों पर जहां मैं देख रहा हूं।



विशेषताएं



और इसलिए, क्लाउड कमांडर के बारे में इतना दिलचस्प क्या है कि यह ध्यान देने योग्य है? आइए इन बिंदुओं की अधिक विस्तार से जांच करें क्योंकि यह वास्तव में महत्वपूर्ण है।



सबसे दिलचस्प विशेषताओं में से यह निम्नलिखित पर प्रकाश डालने लायक है:







मतभेद


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



संपादक 110 से अधिक भाषाओं में हाइलाइटिंग सिंटैक्स का समर्थन करता है। फ़ाइल प्रारूप इसके विस्तार से निर्धारित होता है। क्लाउड कमांडर के लिए स्रोत कोड को स्वयं इसमें सही किया गया है (और यह लेख भी इसमें लिखा गया है)।



कंसोल आपको सर्वर पर कमांड निष्पादित करने की अनुमति देता है, और इससे कोई फर्क नहीं पड़ता कि यह लिनक्स, मैक ओएस या विंडोज है। जिस सर्वर पर क्लाउड कमांडर चल रहा है, उसे ब्राउज़र में सीधे कंसोल से नियंत्रित किया जाता है।



एक महत्वपूर्ण अंतर Node.js के रूप में भी है जिस पर फ़ाइल प्रबंधक चलता है। कोई और अधिक php + अपाचे



कमियों


फायदे की उपस्थिति भी किसी भी तरह से इसके बिना नुकसान की उपस्थिति का मतलब है। सबसे महत्वपूर्ण:







ये मूलभूत दोष हैं। अगर हम समस्याओं को दबाने की बात करते हैं, तो ऐसे हैं। संपादक में:







संरचना



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



सर्वर मॉड्यूल


सर्वर स्थापित निर्भरता के बिना काम कर सकता है, जबकि यह सीमित संचालन मोड में जाता है। इस मोड में, कंसोल काम नहीं करता है, js / css / html ऑप्टिमाइज़ेशन प्रदर्शन नहीं किए जाते हैं, कॉपी करना, मूविंग करना और फ़ोल्डरों को हटाना काम नहीं करता है। Package.json में निर्धारित मॉड्यूल स्थापित करने के बाद, निम्नलिखित उपयोग किए जाते हैं:







आम मॉड्यूल


कुछ मॉड्यूल क्लाइंट और सर्वर दोनों पर काम करते हैं, जैसे कि डिफ-मैच-पैच , लंबे समय तक विकसित होता है, लेकिन यह बहुत स्थिर काम करता है।



ग्राहक मॉड्यूल


क्लाइंट पर, उपयोग किए जाने वाले मॉड्यूल की सूची बहुत व्यापक है। यह है:







आंतरिक उपकरण


संग्रह कार्यक्रम


अधिकांश प्रश्न संभवतः ग्राहक पर अभिलेखागार के कारण होते हैं। इसका उपयोग संपादक द्वारा सर्वर को भेजे गए डेटा के आकार को कम करने के लिए किया जाता है। इस मोड को सेटिंग्स में चालू (और बंद) किया जा सकता है। वास्तव में, जैसा कि मैंने कहा, क्लाइंट-सर्वर एप्लिकेशन में अड़चन डेटा ट्रांसफर है। पैकिंग (और सर्वर पर अनपैकिंग), बदले में, बहुत तेज है।



diff


लेकिन पाठ को हमेशा पूरी तरह से नहीं भेजा जाना चाहिए। यह केवल सर्वर को भेजने के लिए फायदेमंद है जो डेटा बदल गया है, अर्थात् पैच। इसलिए, अगर संपादन के बीच, सर्वर पर फ़ाइल नहीं बदली - एक पैच भेजा जाता है और सर्वर पर लागू किया जाता है (बशर्ते कि फ़ाइल का वजन बहुत अधिक न हो, क्योंकि प्रत्येक ऐसा ऑपरेशन पूरी फ़ाइल को रैम में लोड करना है), अगर यह बदल गया है, तो संकुचित डेटा भेजा जाता है। । इसके लिए धन्यवाद, डेटा प्रोसेसिंग स्पीड डेस्कटॉप एप्लिकेशन के बहुत करीब है।



स्थानीय भंडारण


हर बार जब आप फ़ाइलें खोलते हैं तो सर्वर से डेटा डाउनलोड करना भी आवश्यक नहीं होता है। इसलिए, जब खोला (फाइलें) लोकलस्टोरेज में रखा जाता है, तो शा -1 हैश वाली जगह पर। और, यदि हैश बदल गया है (हमारी जानकारी के बिना), फ़ाइल फिर से डाउनलोड की जाती है, अन्यथा फ़ाइल को सहेजे जाने पर हर बार हैश अपडेट किया जाता है। निर्देशिका के साथ भी ऐसा ही है। यदि विकल्प सक्षम है, तो निर्देशिका की सामग्री एक बार भरी हुई है, और इसे अद्यतन करने के लिए, Ctrl + R दबाएं (या एक नई फ़ाइल / फ़ोल्डर बनाएँ / हटाएं)।



उन्नत मॉड्यूल लोड हो रहा है


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



क्लाइंट मॉड्यूल आवश्यकतानुसार लोड किए जाते हैं। यदि किसी व्यक्ति को मेनू की आवश्यकता होती है, तो यह लोड हो जाता है, यदि कंसोल पूरे सत्र के लिए काम नहीं आता है, तो इसकी फाइलें लोड भी नहीं हुई हैं और निष्पादित करना शुरू नहीं करती हैं, जो काम की गति को काफी बढ़ाता है और क्लाइंट और सर्वर दोनों पर संसाधनों को बचाता है।



शामिल हों


थ्रेड्स नोड.जेएस एक बहुत शक्तिशाली उपकरण है जो अन्य स्क्रिप्टिंग भाषाओं से मौलिक रूप से अलग है। नोड.जेएस में विसर्जन की प्रक्रिया में, यह विचार कि आप फ़ाइलों को एक स्ट्रीम में जोड़ सकते हैं और इसे दे सकते हैं जैसे कि कोई एक फ़ाइल मुझे नहीं छोड़ती थी। मैंने सोचा कि गति में देरी होगी, लेकिन नहीं। सब कुछ एक घड़ी की तरह काम करता है, और कोई विशेष मंदी नहीं है, और इसके बजाय, यह संभव है कि फ़ाइलों को एक में विलय न करें, और उन्हें क्रमिक रूप से लोड न करें, लेकिन उन्हें एक फ़ाइल के रूप में लोड करने के लिए



यह विचार, हाल ही में, jsDelivr में बढ़ावा देने के लिए शुरू हुआ। और, यह मुझे लगता है, यह सही दिशा है।



संक्षेप में: यदि आपको jquery.js और jquery.fancybox.js फ़ाइल डाउनलोड करने की आवश्यकता है, तो आप इसे इस तरह से कर सकते हैं:



cloudcmd.jit.su/join/lib/jquery.js:lib/fancybox.js





":" प्रतीक का उपयोग करते हुए, फ़ाइल नाम एक दूसरे से अलग हो जाते हैं, इस प्रकार, आप बिल्कुल कुछ भी जोड़ सकते हैं, और यह विशेष रूप से सर्वर की गति को प्रभावित नहीं करना चाहिए, क्योंकि फाइलें क्रमिक रूप से पढ़ी जाती हैं, लेकिन पढ़ने के तुरंत बाद क्लाइंट को दी जाती हैं।



यदि फ़ाइल को पढ़ा नहीं जा सकता है, तो इसके बजाय एक त्रुटि संदेश भेजा जाता है, जिसके बाद धारा बंद हो जाती है।



डिज़ाइन



पर्याप्त ही आवेदन के बारे में कहा गया है, लेकिन कुछ चीजें हैं जो मैं विकास के बारे में कहना चाहूंगा। जैसा कि पहले ही उल्लेख किया गया है, क्लाउड कमांडर अपने आप में लिखा जाता है।



परियोजना को एक गीथूब पर होस्ट किया गया है। इसकी दो शाखाएँ हैं: देव और गुरु



पहले एक में एक विकल्प है जिसे विकसित किया जा रहा है, सभी परिवर्तन वहां किए गए हैं, और हालांकि आदर्श रूप से सब कुछ हमेशा काम करना चाहिए, कभी-कभी अलग-अलग घटनाएं होती हैं।



दूसरी शाखा में नवीनतम स्थिर संस्करण है। इसे हमेशा भंडार से लिया जा सकता है, इसके साथ सब कुछ ठीक होना चाहिए।



निरंतर एकीकरण और परीक्षण


प्रत्येक पुश के बाद, कोड ट्रैविस.की प्रणाली को भेजा जाता है, जहां निर्धारित परीक्षण चलाए जाते हैं, और कोड को NodeJitsu और हरोकू में तैनात किया जाता है।



और अगर कुछ काम नहीं करता है जैसा कि यह होना चाहिए, एक ईमेल तुरंत आता है, और रिपॉजिटरी में आइकन अपने रंग को लाल में बदल देता है।



यदि कुछ सेवाओं पर क्लाउड कमांडर प्रतिक्रिया नहीं दे रहा है, तो साइट पर , शीर्ष पर, हरे रंग के सर्कल नहीं, लेकिन लिंक के पास लाल वाले प्रदर्शित होते हैं। यदि उत्तर लंबा है - पीला।



टास्क रनर


परियोजना में गुल का उपयोग होता है, जो सभी नियमित क्रियाओं को स्वचालित करता है: जेएस, सीएसएस, रन परीक्षण आदि।



प्रतिबद्ध


एक दिन मुझे एक लेख आया, जिसमें अंगुलर में अपनाई गई नामकरण की शैली के बारे में बात की गई थी। यह वास्तव में एक बहुत ही महत्वपूर्ण प्रक्रिया है। परिवर्तन, सुधार, रीफैक्टरिंग, आदि का अपना उपसर्ग होता है, और रिलीज के दौरान, feature



साथ शुरू होता है और fix



उपसर्गों को इतिहास से मिटा दिया जाता है और ChangeLog



में एक निश्चित रूप में प्रदर्शित किया जाता है, यह सब एक आदेश के साथ किया जाता है - gulp changelog







अंतभाषण



मैं पाठक को इसके दूर आने के लिए धन्यवाद देना चाहता हूं (भले ही वह बस भटक गया हो)। मुझे उम्मीद है कि लेख उपयोगी और दिलचस्प था। शायद एक निरंतरता होगी, प्रतीक्षा करें और देखें।



यह हब पर मेरा पहला लेख है, अगर टाइपो, सुझाव, टिप्पणियां हैं - मैं पीएम में या रिपॉजिटरी में छिपी शाखा में पूछता हूं। मैं खुद को सही करने की कोशिश करूंगा।



All Articles