क्षेत्र में खुला स्रोत संचार लेखांकन अनुप्रयोग

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


संचार की वर्तमान स्थिति का विश्लेषण कैसे करें? समस्या क्षेत्रों को जल्दी से कैसे समझें? क्षेत्र में संचार के बाद के विकास की योजना कैसे बनाएं? उद्योग की जानकारी बनाए रखने, उनके आधार पर विश्लेषणात्मक रिपोर्ट तैयार करने और विकास योजनाओं को तैयार करने के लिए एक रजिस्ट्री-प्रकार का समाधान तैयार करना।



संचार वेब अनुप्रयोग


IONDV। टेलीकॉम, या जैसा कि हम इसे एक टीम में कहते हैं, संचार IONDV पर आधारित एक सॉफ्टवेयर समाधान है हेल्थकेयर, शिक्षा क्षेत्रों की सुविधाओं में संचार की उपलब्धता सहित क्षेत्र के आबादी क्षेत्रों में संचार सेवाओं (इंटरनेट, मोबाइल संचार, टेलीविजन, मेल, आदि) की उपलब्धता पर डेटा को व्यवस्थित करने, रिकॉर्डिंग, भंडारण और प्रदर्शन के लिए लागू किया गया है। एप्लिकेशन GitHub पर सार्वजनिक रूप से उपलब्ध है । परंपरागत रूप से, गितुब पर सभी रिपॉजिटरी के लिए README रिपॉजिटरी में एक निर्देश है, लेकिन हमने बिना पंजीकरण के, समीक्षा के लिए डेमो सिस्टम तैनात किया: https://telecom-ru.iondv.com


आप इस डेमो पर केवल एक छोटा वीडियो शॉट भी देख सकते हैं।


कुछ तकनीकी विवरण

डेमो को यैंडेक्स क्लाउड में 2 सीपीयू कोर और 2 जीबी मेमोरी के साथ सर्वर पर तैनात किया गया है। और इस आभासी मशीन पर दर्जनों ऐसे डेमो एप्लिकेशन हैं। हमने एक अन्य लेख में समान संसाधन पर एक समान प्रणाली का परीक्षण किया - "सामाजिक परियोजना के सॉफ्टवेयर कार्यान्वयन को लाने के लिए अनुभव" सभी को याद रखें "स्रोत खोलने के लिए
" Https://habr.com/en/post/451092/ - प्रति सेकंड 400 अनुरोधों तक प्राप्त हुआ। संचार प्रणाली में अधिक मेटाडेटा है - 3-4 गहराई स्तर तक।
उदाहरण के लिए, एक संचार वस्तु में 10 संबंधित संस्थाएं (सेलुलर, इंटरनेट, मेल, टेलीविजन, आदि) हैं। जिनमें से प्रत्येक 3-5 अधिक है - सेलुलर संचार के लिए यह एक मानक, कनेक्शन का प्रकार, ऑपरेटर, निपटान, आदि है और ऑपरेटर भी घोंसले का शिकार है।


लेकिन इन संसाधनों पर भी, यह काफी जिम्मेदारी से व्यवहार करता है, हालांकि संबंधित डेटा लाने के लिए MongoDb बहुत अच्छा नहीं है। हमने मेट्रिक्स को लिया - सूची में 10 वस्तुओं को प्राप्त करने के लिए (जिसमें डेटा संबंधित डेटा सहित प्रदर्शित किया गया था), डेटाबेस में 1000-1500 प्रश्न किए गए थे। इसी समय, ब्राउज़र में उपयोगकर्ता के लिए मानक समय लगभग 600-700 एमएस है।


IONDV मंच पर संचार अनुप्रयोग के विकास के बारे में। ढांचा


आवेदन IONDV प्रौद्योगिकी पर आधारित है फ्रेमवर्क। यह उच्च-स्तरीय मेटाडेटा-आधारित वेब एप्लिकेशन बनाने के लिए ओपन सोर्स नोड.जेएस फ्रेमवर्क है, जिसमें गंभीर प्रोग्रामिंग कौशल की आवश्यकता नहीं होती है। फ्रेमवर्क का मूल एक स्वतंत्र डेटा मॉडल, कर्नेल एपीआई, फ़ंक्शन मॉड्यूल और प्रस्तुति टेम्पलेट है। MongoDb का उपयोग DBMS के लिए किया जाता है - यह एप्लिकेशन सेटिंग्स, मेटाडेटा और डेटा को स्वयं स्टोर करता है। रूपरेखा Node.js. में चलती है सभी एक साथ एक क्रॉस-प्लेटफॉर्म ढांचा प्रदान करते हैं।

वैसे, यह एप्लिकेशन फ्रेमवर्क के लिए महत्वपूर्ण है - इसने mongoDB का उपयोग करके नोड.जेएस पर नए संस्करण का उत्पादक शोषण शुरू किया। कुल मिलाकर, परियोजना के लिए रूपरेखा घटकों का विकास (जियोमॉड्यूल, रिपोर्ट मॉड्यूल का शोधन) और आवेदन मेटाडेटा में 2643 घंटे लगे।


फ्रेमवर्क पर एप्लिकेशन बनाने के सिद्धांत के बारे में थोड़ा सा। सब कुछ बहुत सरल है - रूपरेखा + मॉड्यूल + मेटाडेटा = अनुप्रयोग। विकास में तेजी से अनुप्रयोग विकास दृष्टिकोण।


अधिकांश IONDV अनुप्रयोगों की मुख्य कार्यक्षमता। फ्रेमवर्क एक डेटा रजिस्ट्री को संकलित करता है - रजिस्टर मॉड्यूल। यह विशेष रूप से मेटाडेटा संरचनाओं पर आधारित डेटा के साथ काम करने के लिए डिज़ाइन किया गया एक प्रमुख मॉड्यूल है।


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


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


इसके अलावा इस आवेदन में उपयोग किया जाता है:


  • रिपोर्टिंग के लिए एनालिटिक्स मॉड्यूल,
  • विजेट के रूप में सूचना प्रदर्शित करने के लिए डैशबोर्ड मॉड्यूल,
  • मैन्युअल रूप से विनियमित उद्योगों पर डेटा के साथ बस्तियों के नक्शे पर प्रदर्शित करने के लिए जियोडेटा मॉड्यूल,
  • उपयोगकर्ताओं और पहुंच भूमिकाओं के प्रबंधन के लिए प्रशासनिक मॉड्यूल। व्यवस्थापक नियंत्रण कक्ष।

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


मुख्य इकाई उदाहरण


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



और यहाँ JSON प्रारूप में मेटाडेटा का एक टुकड़ा है।


{ "isStruct": false, "key": [ "okato" ], "semantic": "name", "name": "naselenniyPunkt", "version": "", "caption": " ", "ancestor": null, "container": "", "creationTracker": "", "changeTracker": "", "history": 0, "journaling": true, "compositeIndexes": null, "properties": [ { "orderNumber": 10, "name": "okato", "caption": "", "type": 0, "size": 11, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": false, "readonly": true, "indexed": true, "unique": true, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, { "orderNumber": 30, "name": "name", "caption": "", "type": 0, "size": 128, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": true, "readonly": false, "indexed": true, "unique": false, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, 

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


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



हम सबसे सहज मॉड्यूल - जियोमैप या जियोडाटा मॉड्यूल के संचालन का वर्णन करेंगे - यह डेटा प्रदर्शित करने के लिए यैंडेक्स एपीआई का उपयोग करता है। आप यहां डेमो का परीक्षण कर सकते हैं , और हम आपको बताएंगे कि यह क्या दिखाता है।



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


आप "सेटलमेंट द्वारा संचार" परत पर जा सकते हैं और विश्लेषणात्मक मॉड्यूल में गणना किए गए क्षेत्र के क्षेत्रों पर सारांश डेटा को दाईं ओर प्रदर्शित किया जाएगा। यदि आप किसी जिले पर डबल-क्लिक करते हैं - तो केवल जिला डेटा प्रदर्शित होगा - फ़िल्टर चालू होगा। यदि आप फिर से क्षेत्र पर डबल-क्लिक करते हैं - सामान्य नक्शा वापस आ जाएगा।


JSON में मेटाडेटा के रूप में परतों के साथ-साथ डेटा कैसे प्राप्त करें, इसके बारे में जानकारी दी गई है। Html टेम्पलेट के रूप में प्रदर्शित करने का एक तरीका
2G परत के लिए मेटाडेटा की एक संक्षिप्त जानकारी के साथ एक पॉप-अप विंडो के बारे में एक टुकड़े का एक उदाहरण।


 "balloonContentLayoutClass" : "<div class='map-ajax-balloon' data-url='geomap/render/khv-svyaz-info/2gMobileKray/0/{{ properties.itemId }}?template=geo/balloon/2gMobile'><i class='fa fa-refresh fa-spin'></i></div>" 

सही विंडो में प्रदर्शित सभी मोबाइल डेटा के साथ ईजेएस टेम्पलेट का एक उदाहरण। इसमें आइटम ऑब्जेक्ट और उसके गुणों के साथ काम करके डेटा तक पहुंच प्रदान की जाती है:


 <% let result = { title: item.get('name') } if (item.get('chislennost')) { result.title += ' (' + item.property('chislennost').evaluate() + ' .)'; } let itemSvyaz = item.property('svyaz').evaluate(); if (itemSvyaz) { %> <ul class='balloon-attrlist' style='width:225px'> <li><%- result.title %></li> </ul> <ul class='mt10'> <table> <% let coll = itemSvyaz.property('mobile').evaluate(); if (coll && coll.length) { for (let elem of coll) { let collOp = elem.get('mobileOperator'); let collSt = elem.property('mobileStandart').evaluate(); if (collOp) { %> <tr> <td> <li><%- elem.property('mobileOperator').evaluate() %></li> </td> <td><% for (let element of collSt) { %> <%- element %> <% } %> </a></td> </tr> <% } } } } %> </table> </ul> 

सिस्टम से डेटा बीआई सिस्टम में एनालिटिक्स के लिए अपलोड किया जा सकता है। उदाहरण के लिए, हमने QlickView के साथ एकीकरण किया। विश्लेषकों के काम को आसान बनाने के लिए, उन्होंने REST-API सिस्टम का उपयोग नहीं किया, लेकिन सीधे MongoDB कनेक्टर के माध्यम से QlickView को DBMS से जोड़ा - इन कार्यों के लिए SQL एमुलेशन काफी उच्च गुणवत्ता वाला है।


कैसे प्राप्त करें?


लिनक्स के तहत, आप एप्लिकेशन को एक लाइन में स्थापित कर सकते हैं, अगर git, node.js और mongodb आयनडव-ऐप इंस्टॉलर का उपयोग करके स्थानीय रूप से इंस्टॉल किए जाते हैं। स्क्रिप्ट पर्यावरण निर्भरता स्थापित करेगी, फ्रेमवर्क, मॉड्यूल और गीथहब के अनुप्रयोगों के सभी आवश्यक रिपॉजिटरी को क्लोन करेगी, एप्लिकेशन को इकट्ठा, आरंभ और लॉन्च करेगी:


 bash <(curl -sL https://raw.githubusercontent.com/iondv/iondv-app/master/iondv-app) -q -i -m localhost:27017 telecom-ru 

लोकलहोस्ट के बजाय: 27017 आपको MongoDb का पता निर्दिष्ट करने की आवश्यकता है।


आप डॉकटर कंटेनर भी लॉन्च कर सकते हैं:


 #   mongodb: docker run --name mongodb -v mongodb_data:/data/db -p 27017:27017 -d mongo #  IONDV. Telecom docker run -d -p 80:8888 --link mongodb iondv/telecom-ru 

शुरू करने के बाद, लिंक खोलें http: // localhost: 8888 जहां जियोलेयर पर डेमो डेटा प्रदर्शित होता है। और http: // localhost: 8888 / रजिस्ट्री पर , बैक ऑफिस डेमो अकाउंट, आयन-डेमो पासवर्ड के साथ उपलब्ध होगा।


एप्लिकेशन उपयोगकर्ता गाइड भी देखें।


पेशेवरों क्या हैं?


IONDV संचार रजिस्ट्री का मुख्य लाभ। टेलीकॉम क्षेत्र में दूरसंचार क्षेत्र के विकास की स्थिति का एक दृश्य प्रतिनिधित्व है, जो संचार बुनियादी ढांचे की गुणवत्ता में सुधार के साथ-साथ सार्वजनिक डोमेन में इस डेटा को प्रदान करने की अनुमति देता है।


लेखांकन संचार के लिए समाधान खुले स्रोत IONDV ढांचे पर आधारित है। फ्रेमवर्क, और यह ओपन सोर्स जावास्क्रिप्ट कोड और JSON में एक ओपन मेटाडेटा संरचना है, जो शोधन की पूर्ण स्वतंत्रता का अर्थ है। लगभग Apache 2.0 के भाग के रूप में)। आप निश्चित रूप से ठीक कर सकते हैं, सुधार सकते हैं और बेच सकते हैं। इस तथ्य के बावजूद कि इंजन संसाधनों पर मांग नहीं कर रहा है - यह विभिन्न आकारों के विश्वसनीय व्यापार अनुप्रयोगों को विकसित करने के लिए बहुत अच्छा है।

Source: https://habr.com/ru/post/hi458146/


All Articles