blog-post

Manticore Buddy: pluggable design

यह लेख Buddy v1.x के लिए बनाया गया था। यहां अद्यतन संस्करण के लिए जांचें

नमस्कार दोस्तों। Manticore Buddy के बारे में रोमांचक समाचार: हमने एक प्लगेबल डिज़ाइन में माइग्रेशन पूरा कर लिया है! इसका मतलब है कि आप एक प्लगइन के रूप में अपना स्वयं का Manticore Search SQL/JSON क्वेरी बना सकते हैं, इसे packagist.org पर प्रकाशित कर सकते हैं, और इसे CREATE PLUGIN SQL कमांड का उपयोग करके इंस्टॉल कर सकते हैं। आइए प्लगेबल सिस्टम की वास्तुकला और एक सरल ट्यूटोरियल में गोता लगाते हैं जो आपको शुरुआत करने में मदद कर सकता है।

वास्तुकला

परिचय

यदि आप Buddy से परिचित नहीं हैं, तो हम ब्लॉगपोस्ट पढ़ने की सिफारिश करते हैं:

जो हमने पहले प्रकाशित किए थे।

मूल रूप से, Buddy PHP में विकसित किया गया था, जिसमें सभी एक्सटेंशन और अतिरिक्त कमांड हैंडलर एक ही कोड बेस में थे। Manticore Search 6 के रिलीज़ होने के बाद, हमें कस्टम कार्यक्षमता जोड़ने के बारे में प्रश्न मिले और यह महसूस हुआ कि वर्तमान प्रणाली में लचीलापन की कमी है। इसलिए हमने प्लगेबल वास्तुकला में माइग्रेट करने का निर्णय लिया।

हमें विश्वास है कि सॉफ़्टवेयर विकास का सबसे महत्वपूर्ण सिद्धांत पहिया को फिर से आविष्कार न करना और चीजों को सरल रखना है। नतीजतन, हमने बहुत अधिक समय बिताने की बजाय PHP की दुनिया में सबसे प्रसिद्ध और लोकप्रिय पैकेज प्रबंधक का चयन किया - Packagist

प्लगइन प्रकार

प्लगइन्स के तीन प्रकार होते हैं:

  • core - जो डिफ़ॉल्ट रूप से Buddy के साथ शामिल होते हैं और जो पैकेज का हिस्सा होते हैं जो आपको Manticore इंस्टॉल करते समय प्राप्त होता है।
  • local - विकास और डिबगिंग के लिए उपयोग किया जाता है, प्रकाशन से पहले।
  • external - CREATE PLUGIN कमांड का उपयोग करके इंस्टॉल किए जाते हैं।

यह ट्यूटोरियल इस बात की व्याख्या करता है कि पहले local प्लगइन कैसे बनाया जाए और फिर इसे external में कैसे परिवर्तित किया जाए, जिससे किसी भी Manticore उपयोगकर्ता को आपके प्लगइन का उपयोग करके अपनी सेटिंग को बढ़ाने की अनुमति मिलती है।

अनुरोध -> प्रतिक्रिया प्रवाह

इसे काम करने के लिए, हमने Buddy और सभी प्लगइन्स में सामान्यत: उपयोग किए जाने वाले घटकों को नए पैकेज - Buddy Core में निकाला। इसे आपके प्लगइन के विकास के दौरान शामिल किया जाना चाहिए ताकि आपके IDE में चीजों को आसान बनाया जा सके और संकेत और ऑटो-कम्प्लीट का समर्थन किया जा सके।

कोड जो Buddy को एक डेमन के रूप में कार्य करने और आंतरिक कार्य करने की अनुमति देता है, जिसमें कोर और प्लगइन स्रोत कोड को जोड़ना शामिल है, इसे Buddy Base कहा जाता है। यह एक ReactPHP एप्लिकेशन है जो Buddy Core का उपयोग करता है और इसका मूल तर्क है कि सब कुछ काम करे और आदेश पर लॉन्च करने के लिए सही प्लगइन ढूंढे।

प्रक्रिया की स्पष्ट समझ के लिए, यहाँ एक आरेख है जो अनुरोध → प्रतिक्रिया प्रवाह को दर्शाता है:

Manticore Buddy Request to Response Flow

ट्यूटोरियल

आपके लिए चीजों को आसान बनाने और अपने स्वयं के प्लगइन का विकास शुरू करने के लिए, आइए देखें कि हम Buddy के लिए एक सरल प्लगइन कैसे बना सकते हैं जो SHOW HOSTNAME कमांड का समर्थन करता है और वर्तमान होस्ट मशीन का होस्टनेम लौटाता है। इससे आपको यह समझने में मदद मिलेगी कि अपने स्वयं के प्लगइन बनाते समय आपको किस प्रक्रिया का पालन करना चाहिए, और यह शुरुआत करने के लिए एक अविश्वसनीय रूप से सीधा उदाहरण भी है। यदि हम Manticore Search में SHOW HOSTNAME कैसे कार्य करता है उसका विश्लेषण करें उस सबको लागू करने से पहले, हम ऐसे परिणाम की अपेक्षा कर सकते हैं:

mysql> SHOW HOSTNAME;
ERROR 1064 (42000): sphinxql: syntax error, unexpected identifier, expecting VARIABLES near 'HOSTNAME'

तैयारी

जो पहली बात हमें करनी चाहिए वह है हमारे विकास परिवेश को तैयार करना। आपको सिर्फ एक बार यह करना है और बाद में आप Buddy को GIT repository से नवीनतम अपडेट प्राप्त करने के लिए अपडेट कर सकते हैं। चलिए टर्मिनल खोलते हैं और Buddy को हमारे मशीन में manticoresearch-buddy नामक फ़ोल्डर में क्लोन करते हैं और क्लोन किए गए फ़ोल्डरों में जाते हैं।

git clone https://github.com/manticoresoftware/manticoresearch-buddy.git
cd manticoresearch-buddy
git checkout v1.x

अब आपके पास Buddy का पूरा स्रोत कोड है, लेकिन कोई भी पैकेज इंस्टॉल नहीं हैं। Buddy अपने निर्भरताओं को प्रबंधित करने के लिए Composer का उपयोग करता है, और हमें सबसे पहले उन्हें इंस्टॉल करना होगा ताकि अनुप्रयोग चल सके। हालाँकि, इससे पहले, हम एक विशेष Docker कंटेनर चलाएंगे जिसे हमने विशेष रूप से विकास के लिए तैयार किया है। Manticore Executor Kit छवि में Manticore Buddy विकास अनुभव को सुविधाजनक बनाने के लिए सभी आवश्यक उपकरण शामिल हैं, चाहे आप नए प्लगइन्स बना रहे हों या Buddy में योगदान दे रहे हों।

docker pull ghcr.io/manticoresoftware/manticoresearch:test-kit-6.2.12
docker create --privileged --entrypoint bash \
  -v $(pwd):/workdir -w /workdir --name manticore-buddy \
  -it ghcr.io/manticoresoftware/manticoresearch:test-kit-6.2.12
docker start manticore-buddy

बधाई हो! आपने अब Manticore Search और Manticore Executor के साथ Buddy और प्लगइन्स विकसित करने के लिए एक Docker कंटेनर चालू किया है। कार्यशील निर्देशिका /workdir पर सेट है, और आपका स्रोत फ़ोल्डर कंटेनर से बंधा हुआ है। आपका अगला कदम Composer निर्भरताएँ इंस्टॉल करना है। याद रखें, यह और सभी आगे की आदेश manticore-buddy कंटेनर के अंदर निष्पादित किए जाने चाहिए।

docker exec -it manticore-buddy bash
composer install

आपका Buddy अब उपयोग, विकास, डिबगिंग, और परीक्षण के लिए तैयार है। अगला, आपको दो चीजें पूरी करनी हैं:

  1. सबसे पहले, /etc/manticoresearch/manticore.conf फ़ाइल को संपादित करें और वहां buddy_path के साथ हमारे स्रोत जोड़ें। इससे Manticore Search को यह पता चलेगा कि हमें स्रोतों से Buddy को चलाने का कस्टम पथ उपयोग करने की आवश्यकता है, न कि इंस्टॉल किए गए मॉड्यूल से। इसे searchd अनुभाग में जोड़ें:
    buddy_path = manticore-executor /workdir/src/main.php --debug
    
  2. दूसरी बात, searchd (Manticore Search सर्वर) चलाने की कोशिश करें और सुनिश्चित करें कि यह काम करता है।
    # Launch daemon inside the container and keep it foreground
    searchd --nodetach
    
    आपको [BUDDY] से शुरू होने वाली कुछ पंक्तियाँ दिखनी चाहिए। जब आप प्रक्रिया बंद करना चाहते हैं, तो बस Ctrl + C का उपयोग करें।

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

$ docker exec -it manticore-buddy mysql -h0 -P9306
MariaDB मॉनिटर में आपका स्वागत है। कमांड ; या \g के साथ समाप्त होती हैं।
आपका MySQL कनेक्शन आईडी 6 है
सर्वर संस्करण: 6.0.5 3bcbd00fa@230320 dev (columnar 2.0.5 8171c1a@230320) (secondary 2.0.5 8171c1a@230320) git branch HEAD (कोई शाखा नहीं)

कॉपीराइट (c) 2000, 2018, Oracle, MariaDB Corporation Ab और अन्य।

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

MySQL [(none)]> show queries;
+------+--------------+----------+-----------------+
| id   | query        | protocol | host            |
+------+--------------+----------+-----------------+
|   10 | select       | http     | 127.0.0.1:19148 |
|    9 | show queries | mysql    | 127.0.0.1:54484 |
+------+--------------+----------+-----------------+
2 पंक्तियाँ सेट में (0.008 sec)

MySQL [(none)]>

आपने अभी SHOW QUERIES कमांड मैन्टिकोर सर्च को भेजा है, जिसे फिर बड्डी में रूट किया गया और सफलतापूर्वक निष्पादित किया गया। आप देख सकते हैं कि बड्डी ने क्या प्राप्त किया और इसका उत्तर पहले टर्मिनल टैब में searchd लॉग में है। तो, हम यह पुष्टि कर सकते हैं कि बड्डी सही ढंग से काम कर रहा है और सब कुछ ठीक से सेट किया गया है।

प्लगइन टेम्पलेट

हमने विशेष GitHub टेम्पलेट रिपॉजिटरी बनाई है, जिसका हम अत्यधिक अनुशंसा करते हैं कि किसी भी मैन्टिकोर बड्डी प्लगइन बनाने के लिए इसका उपयोग करें। सभी प्लगइनों को buddy-plugin-[आपका-नाम] से प्रारंभ किया जाना चाहिए, जहां [आपका-नाम] आपके प्लगइन का नाम है। उदाहरण के लिए, चूंकि हम एक होस्टनेम चयन प्लगइन का विकास कर रहे हैं, हम इसे buddy-plugin-show-hostname नाम देंगे। तो:

  1. https://github.com/manticoresoftware/buddy-plugin-template खोलें।
  2. v1.x शाखा चुनें
  3. Use this template पर क्लिक करें और फिर Create a new repository पर क्लिक करें।
  4. अपने रिपॉजिटरी का नाम भरें और इसे बनाएं। सुनिश्चित करें कि आपका रिपॉजिटरी नाम buddy-plugin- से शुरू होता है क्योंकि यह अनिवार्य है।
  5. अपने नए रिपॉजिटरी को मैन्टिकोर बड्डी रिपॉजिटरी के plugins निर्देशिका में git clone करें, जिसे आपने पहले लागू किया था। नोट करें कि इसे कंटेनर के बाहर करना बेहतर है, खासकर यदि आप एक निजी रिपॉजिटरी से क्लोन कर रहे हैं।

https://github.com/manticoresoftware/buddy-plugin-show-hostname (शाखा: v1.x) में, आप पूरे कार्य को लागू देख सकते हैं। अगर आप विवरण में नहीं जाना चाहते हैं, तो आप बस अपने फोर्क किए गए रिपॉजिटरी के बजाय उसे git clone कर सकते हैं। हालाँकि, यदि आप एक प्लगइन बनाने में माहिर होना चाहते हैं, तो चलिए जारी रखते हैं।

असली कोड जोड़ें

अब हमें अगले कदम उठाने और हमारे नए प्लगइन के संबंधित डेटा के साथ हमारे टेम्पलेट को अपडेट करने की आवश्यकता है।

  1. सबसे पहले, हम composer.json खोलते हैं और प्लगइन का नाम, विवरण, और namespace अपडेट करते हैं। तो अंततः, आपके परिवर्तन इस तरह दिखेंगे (बस सुनिश्चित करें कि आप अपने प्लगइन रिपॉजिटरी नाम का उपयोग करते हैं):
diff --git a/composer.json b/composer.json
index 23c252b..f36cb6e 100644
--- a/composer.json
+++ b/composer.json
@@ -1,11 +1,11 @@
 {
- "name": "manticoresoftware/buddy-plugin-template",
- "description": "The Buddy template handler plugin",
+ "name": "manticoresoftware/buddy-plugin-show-hostname",
+ "description": "The Buddy SHOW hostname handler plugin",
  "type": "library",
  "license": "GPL-2.0-or-later",
  "autoload": {
    "psr-4": {
-     "Manticoresearch\\Buddy\\Plugin\\Template\\": "src/"
+     "Manticoresearch\\Buddy\\Plugin\\ShowHostname\\": "src/"
    }
  },
  "authors": [
  1. हमें दो क्लासों - Payload और Handler के namespace को भी अपडेट करने की आवश्यकता है। डिफ़ को इस तरह दिखना चाहिए:
diff --git a/src/Handler.php b/src/Handler.php
index 3756dc3..07fcfd0 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -8,7 +8,7 @@
   version. You should have received a copy of the GPL license along with this
   program; if you did not, you can find it at http://www.gnu.org/
 */
-namespace Manticoresearch\Buddy\Plugin\Template;
+namespace Manticoresearch\Buddy\Plugin\ShowHostname;

 use Manticoresearch\Buddy\Core\Plugin\BaseHandler;
 use Manticoresearch\Buddy\Core\Task\Task;
diff --git a/src/Payload.php b/src/Payload.php
index b170340..a35f201 100644
--- a/src/Payload.php
+++ b/src/Payload.php
@@ -8,7 +8,7 @@
   version. You should have received a copy of the GPL license along with this
   program; if you did not, you can find it at http://www.gnu.org/
 */
-namespace Manticoresearch\Buddy\Plugin\Template;
+namespace Manticoresearch\Buddy\Plugin\ShowHostname;

 use Manticoresearch\Buddy\Core\Network\Request;
 use Manticoresearch\Buddy\Core\Plugin\BasePayload;
  1. अंतिम चरण के रूप में, कृपया कंटेनर के अंदर composer install चलाकर नई निर्भरता को स्थापित करना न भूलें।

मैन्टिकोर सर्च से आपके प्लगइन तक और वापस अनुरोध प्रवाह

हम अब अपनी लॉजिक्स लागू करने के लिए तैयार हैं। लेकिन पहले, आइए जानें कि यह आंतरिक रूप से कैसे संभाला जाता है।

Manticore Buddy Request to Plugin Flow

मान लेते हैं कि हम लॉन्च किए गए searchd प्रक्रिया को एक MySQL क्लाइंट का उपयोग करके SHOW HOSTNAME क्वेरी भेज रहे हैं। मैन्टिकोर सर्च इसे संभाल नहीं सकता और इसे प्रतिक्रिया की प्रतीक्षा करने के लिए बड्डी को भेजता है। बड्डी सटीक प्रतिक्रिया लौट सकता है, जिसे बस MySQL क्लाइंट को वापस प्रॉक्सी किया जाएगा।

एक बार जब बड्डी मैन्टिकोर सर्च से क्वेरी प्राप्त करता है, तो यह इसे पार्स करता है और सभी प्लगइनों पर वैधता चलाता है: पहले मुख्य प्लगइन, और फिर बाहरी प्लगइन। इस वैधता को चलाने के लिए, यह Payload::hasMatch($request) विधि को निष्पादित करता है, जिसमें क्वेरी और कुछ मेटाडेटा जैसे कि अनुरोधित एंडपॉइंट, प्रकार (JSON या SQL) और इसी तरह के अनुरोध को पास करता है।

Payload वह संरचना का प्रतिनिधित्व करता है जिसमें कमांड को संभालने के लिए सभी आवश्यक डेटा होते हैं। यदि किसी प्लगइन का Payload hasMatch विधि में true लौटाता है, तो इसका मतलब है कि हम इस प्लगइन का उपयोग अनुरोध को संभालने के लिए करेंगे। यह Request से बनाया गया है, और इस चरण में, हमें क्वेरी को पार्स करना, मूल्यवान जानकारी निकालनी है, और इसे हमारे पेलोड डेटा में सेट करना है, जिसे Handler को पास किया जाएगा।

Handler वह क्लास है जो वास्तव में लागू किए गए कमांड को निष्पादित करती है। यह विवादित वातावरण में मुख्य सर्वर लूप को अवरुद्ध किए बिना समानांतर विस्तार का उपयोग करते हुए ऐसा करती है। एक साधारण विधि run है जो एक क्लोजर बनाती है, जिसे एक कार्य करना चाहिए और प्रतिक्रिया को Manticore Search को वापस लौटाना चाहिए, जिसे फिर उपयोगकर्ता के लिए प्रॉक्सी किया जाता है।

हमारे मामले में, हमें केवल SHOW HOSTNAME क्वेरी स्वरूप का समर्थन करने के लिए एक जांच जोड़ने की आवश्यकता है और फिर gethostname PHP फ़ंक्शन को कॉल करने और इसे एक प्रतिक्रिया के रूप में वापस लौटाने के लिए Handler तर्क लिखने की आवश्यकता है। बस इतना ही! आइए हम Payload के साथ शुरू करते हैं।

Payload को लागू करना

जब आप src/Payload.php खोलते हैं, तो आप देखेंगे कि वहां केवल दो विधियाँ हैं: fromRequest और hasMatch। हमने उन पंक्तियों को TODO टिप्पणियों के साथ चिह्नित किया है, इसलिए हमें जो करने की आवश्यकता है उसे खोजना आसान होना चाहिए। हमारे मामले में, क्वेरी बहुत सरल है और बिल्कुल भी लचीली नहीं है, इसलिए हमें fromRequest विधि में कुछ भी बदलने की आवश्यकता नहीं है। हम केवल TODO टिप्पणियों को हटा सकते हैं। हमें जो करने की आवश्यकता है वह है स्थिर फ़ंक्शन hasMatch() को अपडेट करना। वहाँ हमें एक जांच लागू करनी है कि क्वेरी कड़ाई से स्ट्रिंग SHOW HOSTNAME से मेल खाती है या नहीं, केस-इंसेंसिटिव तरीके से। एक बार जब यह मेल खा जाता है, तो हमें true लौटाना चाहिए। अन्यथा, हमें false लौटाना चाहिए। इस प्रकार आधार प्रणाली समझती है कि जब हमें एक क्वेरी प्राप्त होती है जो एक होस्टनेम दिखाती है, तो इसे इस प्लगइन का उपयोग करने की आवश्यकता है।

Payload में किए गए अंतिम परिवर्तन इस प्रकार लगने चाहिए:

diff --git a/src/Payload.php b/src/Payload.php
index a35f201..bd0795e 100644
--- a/src/Payload.php
+++ b/src/Payload.php
@@ -26,7 +26,6 @@ final class Payload extends BasePayload {
   */
  public static function fromRequest(Request $request): static {
    $self = new static();
-   // TODO: add logic of parsing request into payload here
    // We just need to do something, but actually its' just for PHPstan
    $self->path = $request->path;
    return $self;
@@ -37,7 +36,6 @@ final class Payload extends BasePayload {
   * @return bool
   */
  public static function hasMatch(Request $request): bool {
-   // TODO: validate $request->payload and return true, if your plugin should handle it
-   return $request->payload === 'template';
+   return stripos($request->payload, 'show hostname') !== false;
  }
 }

हम Payload परिवर्तनों के साथ समाप्त कर चुके हैं और वास्तविक तर्क लागू करने के लिए Handler की ओर बढ़ सकते हैं।

Handler को लागू करना

अब, आइए हम src/Handler.php खोलते हैं और TODO चिह्नों की समीक्षा करते हैं, साथ ही यह देख सकते हैं कि क्या हो रहा है। हमें run विधि में नेविगेट करना है और इसे अपडेट करना है।

हम एक क्लोजर देख सकते हैं जो एक TaskResult लौटाता है, जो एक विशेष परिणाम प्रकार है जो एक मानक JSON प्रतिक्रिया को लपेटता है।

हम एक gethostname() कॉल शामिल करेंगे और प्रतिक्रिया को उस TaskResult के भीतर लपेटकर तैयार करेंगे जिसे क्लाइंट को लौटाया जाएगा। अंतिम अंतर कुछ इस प्रकार होगा:

diff --git a/src/Handler.php b/src/Handler.php
index 07fcfd0..944899b 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -11,6 +11,7 @@
 namespace Manticoresearch\Buddy\Plugin\ShowHostname;

 use Manticoresearch\Buddy\Core\Plugin\BaseHandler;
+use Manticoresearch\Buddy\Core\Task\Column;
 use Manticoresearch\Buddy\Core\Task\Task;
 use Manticoresearch\Buddy\Core\Task\TaskResult;
 use RuntimeException;
@@ -33,9 +34,11 @@ final class Handler extends BaseHandler {
   * @throws RuntimeException
   */
  public function run(Runtime $runtime): Task {
-   // TODO: your logic goes into closure and should return TaskResult as response
    $taskFn = static function (): TaskResult {
-     return TaskResult::none();
+     $hostname = gethostname();
+     return TaskResult::withRow([
+       'hostname' => $hostname,
+     ])->column('hostname', Column::String);
    };

    return Task::createInRuntime(

डिबगिंग और विकास

अब जब आपने कार्यान्वयन पूरा कर लिया है, तो परीक्षण और डिबगिंग (यदि आवश्यक हो) का समय है। एक विशेष प्रकार का प्लगइन है जिसे local कहा जाता है, जिसे विशेष रूप से इस उद्देश्य के लिए डिज़ाइन किया गया है। चूंकि आपका प्लगइन पहले से ही plugins निर्देशिका में है, यह स्वचालित रूप से एक local प्लगइन बन जाता है। इसका उपयोग करने के लिए, बस:

  1. रूट बडी निर्देशिका में, प्लगइन को शामिल करने के लिए कमांड composer require [your-plugin-name]:dev-main चलाएँ। your-plugin-name वह नाम है जो आपने पहले अपने प्लगइन के composer.json से संपादित किया था।
  2. यह सुनिश्चित करने के लिए searchd को पुनः प्रारंभ करें कि कोड अद्यतित है।

यह विधि आपको लाइव में अपने प्लगइन को विकसित करने, डिबग करने, संपादित करने और परीक्षण करने की अनुमति देती है, बिना इसे Git भंडार में धकेलने और packagist.org पर प्रकाशित किए।

प्रकाशन और स्थापना

जब आप डिबगिंग के साथ समाप्त हो जाते हैं और अपने प्लगइन को प्रकाशित करने के लिए तैयार होते हैं, तो बस अपने परिवर्तनों को Git भंडार में कमिट करें और अपने पैकेज को packagist.org पर प्रकाशित करें।

इसके बाद, यह सुनिश्चित करने के लिए जांचें कि यह अपेक्षित रूप से काम कर रहा है, CREATE PLUGIN [your-plugin-name] TYPE 'buddy' VERSION 'dev-main' कमांड चलाकर, जो Composer का उपयोग करके प्लगइन को डाउनलोड करने और इसे plugin_dir में स्थापित करने का प्रयास करेगा।

इस तरह:

$ docker exec -it manticore-buddy mysql -h0 -P9306
MySQL [(none)]> CREATE PLUGIN manticoresoftware/buddy-plugin-show-hostname type 'buddy' VERSION 'v1.x';

Query OK, 0 rows affected (1 min 12.213 sec)

MySQL [(none)]> show hostname;
+----------+
| hostname |
+----------+
| dev      |
+----------+
1 row in set (0.011 sec)

MySQL [(none)]>

बधाई हो! आपका प्लगइन ठीक से काम करता है और यह आपको SHOW hostname क्वेरी का उपयोग करके होस्टनेम निकालने की अनुमति देता है।

निष्कर्ष

We hope you enjoyed this article and gained a deeper understanding of the new Buddy pluggable architecture, already available in the Linux dev packages and coming soon to the next release (following Manticore 6.0.4, so if there’s a newer version when you read this, it’s likely already included). आप तुरंत अपने प्लगइन का विकास शुरू कर सकते हैं हमारे द्वारा प्रदान की गई निर्देशों का पालन करके। जबकि यह प्लगबल सिस्टम का एक बुनियादी परिचय है, हम एक जटिल प्लगइन के विकास पर एक अधिक उन्नत लेख बनाने और प्रकाशित करने की योजना बनाते हैं। हमारे Slack या Telegram चैट में हमसे प्रश्न पूछने में संकोच न करें, और जटिल प्लगइन ट्यूटोरियल के लिए विषय सुझाने के लिए स्वतंत्र महसूस करें।

याद रखें कि यह हमारे core plugin’s code पर एक नज़र डालने का भी अच्छा विचार है ताकि आप अधिक गहराई में जा सकें और जान सकें कि यह अधिक जटिल मामलों में कैसे काम करता है।

Sincerely yours,
Manticore Team.

मैंटीकोर सर्च इंस्टॉल करें

मैंटीकोर सर्च इंस्टॉल करें