translation

यह AI द्वारा अनुवादित पोस्ट है।

statpan

LegiNote प्रोजेक्ट विकास की कहानी 2 - तकनीकी ढाँचा और वर्कर

  • लिखने की भाषा: कोरियाई
  • मानक देश: सभी देशcountry-flag
  • आईटी
प्रोफ़ाइल छवि

durumis AI द्वारा सारांशित पोस्ट

  • LegiNote प्रोजेक्ट वेब सेवा विकास के लिए Svelte, Rust, Go, Python आदि का उपयोग करता है, विशेष रूप से Go में विकसित वर्कर OpenAPI डेटा संग्रह और अद्यतन कार्य करता है।
  • वर्कर डेटा संग्रह तर्क सेटिंग, निष्पादन, DB लोडिंग आदि कार्य करता है, और विभिन्न API डेटा के लिए विस्तारशीलता का लक्ष्य रखता है।
  • प्रोजेक्ट निर्भरता को कम करने के लिए फ़ंक्शन-वार फ़ोल्डर पृथक्करण द्वारा संरचित है, और PostgreSQL, pq, sqlx आदि का उपयोग करके डेटाबेस कनेक्शन और क्वेरी प्रसंस्करण किया जाता है।

नमस्ते स्टेटपैन हूँ।

लेगिनोट साइड प्रोजेक्ट के डेवलपमेंट स्टोरी को लिख रहा हूँ।

पिछले भाग के लिए, कृपया निम्नलिखित लिंक देखें।



बेसिक आर्किटेक्चर

LegiNote प्रोजेक्ट विकास की कहानी 2 - तकनीकी ढाँचा और वर्कर

태양토끼님 협찬 Leginote 설계


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

फ्रंटएंड: स्वेल्ट

बैकएंड: रस्ट (हम रस्टपिंग पर बहुत ध्यान दे रहे हैं, लेकिन यह बदल सकता है)

वर्कर: गो (अतिरिक्त निर्भरता को छोड़कर, हम मानक लाइब्रेरी के उपयोग पर ध्यान केंद्रित करेंगे)

डेटा विश्लेषण: पायथन (पूर्व-संसाधन से लेकर भविष्य में कृत्रिम बुद्धिमत्ता के एकीकरण तक)

उपरोक्त स्टैक में से, मैं वर्कर और डेटा विश्लेषण भागों पर ध्यान केंद्रित करने जा रहा हूं, जो कि मेरे योगदान के मुख्य क्षेत्र हैं, और मैं डेवलपमेंट स्टोरी को इसी क्रम में जारी रखूंगा।

सबसे पहले, आइए वर्कर के बारे में बात करते हैं।


वर्कर

भाषा का चुनाव


LegiNote प्रोजेक्ट विकास की कहानी 2 - तकनीकी ढाँचा और वर्कर

golang logo

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

विशेष रूप से, हाल के दिनों में, रस्ट ऐसी भाषा रही है जिस पर मैंने सबसे अधिक ध्यान दिया है, और जब रस्ट का उल्लेख किया जाता है, तो अक्सर सी++ और गोलैंग का भी उल्लेख किया जाता है। (हालांकि सी++ भी एक उत्कृष्ट भाषा है, हमने इसे इस तरह की नेटवर्क सेवा विकास परियोजनाओं से बाहर रखा है। मुझे यकीन नहीं है कि क्या मैं इसे भविष्य में सीधे उपयोग करूंगा जब तक कि हम डीप लर्निंग फ्रेमवर्क के आंतरिक कामकाज को नहीं संभाल रहे हैं।)

इस तरह, मैंने रस्ट और गोलैंग सीखा और सरल नेटवर्क अनुरोधों में उनका उपयोग किया, जिससे मैं रस्ट के फायदे और नुकसान और गोलैंग के फायदे और नुकसान को समझ सका। इस लेख में उन दोनों के फायदे और नुकसान की तुलना करना बहुत लंबा हो जाएगा, इसलिए मैं इसे संक्षेप में रखूंगा और बाद में एक अलग लेख में इसे विस्तार से बताऊंगा।

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


वर्कर की भूमिका

LegiNote प्रोजेक्ट विकास की कहानी 2 - तकनीकी ढाँचा और वर्कर

OpenAPI स्क्रीन

वर्कर की भूमिका हर अवधि में ओपनएपीआई साइट से डेटा एकत्र करना और उसे अपडेट करना है, और इसे तीन भागों में विभाजित किया जा सकता है।

1. विशिष्ट जानकारी एकत्र करने के लिए तर्क सेट करना

2. एकत्र किए गए डेटा को चलाने के लिए एक रनर सेट करना

3. एकत्रित डेटा को डीबी में लोड करना

उद्देश्य विभिन्न एपीआई डेटा के लिए ऊपर दिए गए तीन चरणों की समान प्रक्रिया को लागू करना और इसे विस्तारित करना है।



प्रोजेक्ट संरचना योजना

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

प्रोजेक्ट इस प्रकार संरचित है।

leginote-worker-bill/
├── main.go
├── api/
│ └── client.go
├── db/
│ ├── connection.go
│ └── repository.go
├── util/
│ ├── error.go
│ └── runner.go

│ └── config.go
├── worker/
│ └── worker.go
├── go.mod
└── go.sum


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

db - डीबी के साथ संवाद करने के लिए तर्क परिभाषित किया गया है। connection के अंदर का कोड केवल कनेक्शन का प्रबंधन करता है, और repository में विभिन्न upsert SQL को निष्पादित करने के लिए तर्क हैं। कोड में SQL रखना बहुत जटिल है, इसलिए हम भविष्य में SQL को अलग फ़ाइल में रखने की योजना बना रहे हैं।

util - इसमें विभिन्न प्रकार के सहायक तर्क परिभाषित हैं जो कार्य करते समय उपयोग किए जाते हैं। error गो में उत्पन्न त्रुटि परिणामों को आसानी से संभालने के लिए अस्थायी रूप से बनाया गया एक स्क्रिप्ट है। जैसा कि आप बाद में विकास कहानी में देखेंगे, यह एक बड़ा बटरफ्लाई प्रभाव का कारण बनता है(?)

config फ़ाइल .env फ़ाइल पढ़ती है, और हम .env फ़ाइल पढ़ने के लिए कोई अलग पैकेज नहीं उपयोग कर रहे हैं, इसलिए हमने .env फ़ाइल पढ़ने के लिए एक फ़ंक्शन को स्वयं परिभाषित किया है।

worker - इसमें मुख्य तर्क है जो api और db तर्क का उपयोग करके वांछित क्रिया को लागू करता है। अगर भविष्य में वर्कर की संख्या बढ़ जाती है, तो यह भी बढ़ना चाहिए, लेकिन फिलहाल केवल एक मुख्य वर्कर क्रिया को शामिल किया गया है।


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


प्रोजेक्ट निर्भरताएँ

पोस्टग्रेस का उपयोग करने के लिए pq

क्वेरी का उपयोग करने के लिए sqlx



वर्कर का समापन

सिर्फ सिद्धांतों को सूचीबद्ध करना थोड़ा उबाऊ लग सकता है, और मुझे भी थोड़ा नीरस लग रहा है, इसलिए मैं इसे थोड़ा जल्दी खत्म कर रहा हूँ।

भाग 2 पहले ही खत्म हो गया है। मुझे उम्मीद है कि भाग 3 से, मैं कोड की कुछ पंक्तियाँ शामिल करूँगा और चर्चा करूँगा।




लेगिनोट के विकास के दौरान, यदि आपको कोई ऐसी सुविधा की आवश्यकता है जो आपको लगती है कि होनी चाहिए, या यदि आपके मन में विकास के बारे में कोई प्रश्न है, तो कृपया बेझिझक टिप्पणी करें!

statpan
statpan
Python, Typescript, Go, Rust 언어에 관심을 가지고 사용하고 있습니다. 주 업무 분야는 자연어 처리, 데이터 사이언스 영역 입니다.
statpan
लेगिनोट प्रोजेक्ट विकास की कहानी3 - गो में अनुरोधगो भाषा का उपयोग करके संसद ओपनएपीआई से कानूनी जानकारी प्राप्त करने वाली लेगिनोट परियोजना के विकास की प्रक्रिया को प्रस्तुत करता है। इसमें HTTP अनुरोध और डेटा संरचना परिभाषा आदि शामिल हैं।

August 26, 2024

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

August 17, 2024

उत्पादकता में सुधार के लिए स्वचालन प्रोग्राम बनाते हैं।उत्पादकता में सुधार के लिए स्वचालन प्रोग्राम निर्माण सेवा प्रदान करते हैं। आरपीए, एआई आधारित वेब, दस्तावेज़, ईमेल आदि कार्यों के स्वचालन के माध्यम से दक्षता में वृद्धि करें।
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

March 22, 2024

[गैर-तकनीकी, डेवलपर बनकर कैसे बचे] 16. नए डेवलपर के लिए पोर्टफोलियो बनाने के टिप्सनए डेवलपर के पोर्टफोलियो को लिखने के टिप्स दिए गए हैं। प्रोजेक्ट के अनुभव और डेवलपमेंट फीचर को विस्तार से लिखना और यह स्पष्ट करना महत्वपूर्ण है कि किस तरह की सेवा विकसित की गई है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[गैर-तकनीकी, डेवलपर के रूप में जीवित रहना] 7. नई नौकरी में मददगार और बेकार चीजेंगैर-तकनीकी व्यक्ति के डेवलपर के रूप में नौकरी पाने के लिए, तकनीकी ब्लॉग कम प्रभावी होते हैं, लेकिन Git का उपयोग और सूचना प्रौद्योगिकी सहायक (आईटी सहायक) प्रमाणपत्र प्राप्त करना मददगार हो सकता है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

March 29, 2024

[गैर-तकनीकी, डेवलपर के रूप में जीवित रहना] 14. नव नियुक्त डेवलपर अक्सर पूछे जाने वाले तकनीकी साक्षात्कार सामग्री सारांशनव नियुक्त डेवलपर साक्षात्कार में अक्सर पूछे जाने वाले तकनीकी प्रश्न (मेमोरी क्षेत्र, डेटा संरचना, डेटाबेस आदि) को संक्षेप में प्रस्तुत किया गया है। डेवलपमेंट इंटरव्यू की तैयारी में यह मददगार होगा।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[गैर-तकनीकी पृष्ठभूमि वाले, डेवलपर बनने का सफ़र] 17. नए डेवलपर का पोर्टफोलियो, कहाँ तक?नए डेवलपर के पोर्टफोलियो को बुनियादी CRUD फंक्शन के कार्यान्वयन और बाहरी API एकीकरण के अनुभव के इर्द-गिर्द बनाना अच्छा होता है।
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[python]पायथन बेसिक 1 पायथन मॉड्यूल को समझनापायथन मॉड्यूल वेरिएबल, फंक्शन, क्लास आदि को एक साथ रखने वाली फाइलें हैं, जो दूसरों द्वारा बनाए गए मॉड्यूल का उपयोग करने या सामान्य रूप से उपयोग किए जाने वाले वेरिएबल, फंक्शन आदि को एक साथ लाने के लिए उपयोगी हैं। `import` कीवर्ड का उपयोग करके मॉड्यूल को इम
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

March 27, 2024