Jupyter/Colab notebook जनरेट करना

nbgenerate टूल, DevSite के एचटीएमएल और मार्कडाउन कॉन्टेंट और टेंप्लेट को Colab के साथ काम करने वाले Jupyter Notebook में बदल देता है.

खास जानकारी

Google Colab की साइट से:

Colab notebook की मदद से, एक ही दस्तावेज़ में, इस्तेमाल किए जा सकने वाले कोड और रिच टेक्स्ट के साथ-साथ इमेज, एचटीएमएल, लैटेक्स वगैरह को भी जोड़ा जा सकता है.

Colab में, Python कोड को वेब ब्राउज़र से लिखा और चलाया जा सकता है. इसके लिए, किसी और सेटअप या इंस्टॉलेशन की ज़रूरत नहीं होती. मार्कडाउन वाले कॉन्टेंट को कोड का इस्तेमाल करके दिखाया जा सकता है सेल का इस्तेमाल करें, ताकि एक ही दस्तावेज़ में रिच कॉन्टेंट दिया जा सके. इससे Colab notebook एक लोकप्रिय समाधान है, जो न सिर्फ़ आंकड़ों पर रिसर्च करने और मशीन लर्निंग के साथ-साथ अन्य तरीकों से डिज़ाइन किए गए ये कॉन्सेप्ट आम तौर पर डेवलपर के दस्तावेज़ों में मिलते हैं.

इस वजह से, Colab notebooks में शेयर किया गया कॉन्टेंट, अक्सर Google डेवलपर दस्तावेज़ में पब्लिश किए गए कॉन्टेंट से मेल खाता है. nbgenerate टूल, यूआरएल को मैन्युअल तरीके से काम करने वाले Colab notebook के साथ, DevSite मार्कअप को मैन्युअल तरीके से सिंक करना होगा. यह टूल, DevSite के एचटीएमएल और मार्कडाउन को .ipynb फ़ाइल फ़ॉर्मैट में बदल देता है. इसका इस्तेमाल, Colab और अन्य Jupyter notebook में किया जाता है. इससे DevSite के कॉन्टेंट का इस्तेमाल किया जा सकता है इसे डेवलपर दस्तावेज़ों और Colab notebook, दोनों पर एक ही जगह से ऐक्सेस किया जा सकता है.

बैकग्राउंड और तकनीकी जानकारी, nbgenerate-dd पर मौजूद ओरिजनल डिज़ाइन दस्तावेज़ में देखी जा सकती है.

बुनियादी इस्तेमाल

अपने DevSite प्रोजेक्ट में पेजों के लिए Colab notebook जनरेट करने के लिए, आपको ये काम करने होंगे nbgenerate निर्देश को लागू करने से पहले, _notebooks.yaml नाम वाली फ़ाइल जोड़ें.

अपने प्रोजेक्ट में _notebooks.yaml जोड़ना

DevSite प्रोजेक्ट के पेजों से Colab नोटबुक जनरेट करने के लिए, प्रोजेक्ट के रूट में _notebooks.yaml नाम की फ़ाइल जोड़ें. यह फ़ाइल, आपकी साइट के _project.yaml की डायरेक्ट्री में होनी चाहिए. इस फ़ाइल में, Colab नोटबुक के तौर पर शेयर किए जा रहे हर पेज के लिए एक एंट्री होनी चाहिए. हर एंट्री के source फ़ील्ड में, आपके DevSite टेंंट में मौजूद पूर्ण पाथ होना चाहिए, ताकि उसे Colab नोटबुक में बदला जा सके. कॉन्टेंट बनाने target फ़ील्ड में, google3 डिपो पाथ के बारे में बताना होगा, जहां Colab को जनरेट किया गया था नोटबुक को कॉपी किया जा सकता है.

उदाहरण के लिए:

- source: /earth-engine/ee-image.html
  target: //depot/google3/third_party/earthengine_community/ipynb/ee-image.ipynb
- source: /earth-engine/guides/image_objects.md
  target: //depot/google3/third_party/earthengine_community/ipynb/guides/image_objects.ipynb

इस उदाहरण में ऐसे टारगेट पाथ का इस्तेमाल किया गया है जिन्हें कॉपीबारा का इस्तेमाल करके GitHub पर डुप्लीकेट किया गया है कि जनरेट की गई नोटबुक को सार्वजनिक तौर पर ऐक्सेस किए जा सकने वाले हाइपरलिंक के ज़रिए खोला जा सकता है. Google3 पाथ को GitHub से सिंक करने के तरीके के बारे में जानने के लिए, copybara देखें. GitHub में जनरेट की गई नोटबुक के लिंक जोड़ने वाले उदाहरणों के लिए, विजेट के उदाहरण भी देखें.

नोटबुक जनरेट की जा रही हैं

पहली बार nbgenerate चलाने से पहले, अपने .bashrc और आपके मौजूदा शेल में:

alias nbgenerate="/google/bin/releases/devsite/tools/nbgenerate/nbgenerate.par"

इसके बाद, _notebooks.yaml में दी गई सभी फ़ाइलों को फिर से जनरेट करने के लिए, कमांड लाइन से nbgenerate चलाएं:

nbgenerate googledata/devsite/content/en/PROJECT

nbgenerate में, प्रोसेसिंग को सीमित करने के लिए एक या उससे ज़्यादा पाथ को आर्ग्युमेंट के तौर पर चुनें फ़ाइलों या पाथ से जुड़ी जानकारी डालें, उदाहरण के लिए:

nbgenerate third_party/devsite/developers/en/earth-engine/guides

डायरेक्ट्री पाथ को बार-बार प्रोसेस किया जाता है. _notebooks.yaml में मौजूद या उससे नीचे की डायरेक्ट्री में मौजूद सभी फ़ाइलों को प्रोसेस किया जाएगा.

अगर ऊपर दिए गए उपनाम का इस्तेमाल करके nbgenerate को चलाने पर, आपको "अनुमति नहीं दी गई" मैसेज मिलता है, तो टूल को इस कमांड से भी चलाया जा सकता है:

blaze run //devsite/tools/nbgenerate -- googledata/devsite/content/en/PROJECT

कॉन्टेंट फ़िल्टर करना

ऐसे मामलों में जहां कुछ सामग्री केवल DevSite के पेजों या जनरेट की गई Colab notebook है, लेकिन दोनों नहीं. आप इसका इस्तेमाल करके कॉन्टेंट फ़िल्टर कर सकते हैं: is_ipynb वैरिएबल, जो nbgenerate कन्वर्ज़न के दौरान True पर सेट है प्रोसेस. DevSite पर स्टैग करने और पब्लिश करते समय गड़बड़ियों से बचने के लिए, उन पेजों के सबसे ऊपर ये जोड़ें जिनमें चुनिंदा कॉन्टेंट शामिल करना है:

    
{% if is_ipynb is not defined %}{% set is_ipynb=False %}{% endif %}
     

इसके बाद, Jinja टैग का इस्तेमाल करके यह कंट्रोल किया जा सकता है कि Colab, DevSite या दोनों में कौनसा कॉन्टेंट दिखे. उदाहरण के लिए:

# Overview

This section will show in both the DevSite page and in the Colab notebook as
a text cell.


{% if is_ipynb %}

This content will only appear in Colab notebooks but not on DevSite pages. This
is useful for providing Colab-specific initialization and setup instructions or
code.
{% endif %}
 


{% if not is_ipynb %}
```js
// This code snippet will only be rendered in DevSite but not in Colab
// notebooks.
console.log('Hello, nbgenerate!');
```
{% endif %}
 

```py
# This snippet will appear in both DevSite and in the Colab notebook as a code
# cell.
print('Hello, nbgenerate!');
```

विजेट के उदाहरण

साइटें, आम तौर पर होने वाले व्यवहारों को शामिल करने के लिए, अक्सर अपने DevSite विजेट तय करती हैं. यहां is_ipynb वैरिएबल का इस्तेमाल करने वाले विजेट के कुछ उदाहरण दिए गए हैं. इन्हें आपकी साइट के हिसाब से बनाया जा सकता है.

Colab notebook के बटन का विजेट

Earth Engine के डेवलपर दस्तावेज़ में, पसंद के मुताबिक बनाए गए विजेट का इस्तेमाल किया जाता है. इससे, GitHub में Colab की नोटबुक से सिंक किए गए DevSite पेजों पर, Colab में चलाएं और GitHub पर सोर्स देखें बटन लगातार दिखते रहते हैं.

सेक्शन विजेट का सैंपल

सैंपल सेक्शन विजेट, एक से ज़्यादा प्रोग्रामिंग भाषाओं या एनवायरमेंट में दिखाए गए कोड स्निपेट के लिए, टैब वाले सेक्शन सेट अप करने का उदाहरण देता है. विजेट सिर्फ़ Colab notebook में Python स्निपेट शामिल करता है. यह साथ ही, यह बटन लिखते समय टैब किए गए सेक्शन दिखाने के लिए इस्तेमाल होने वाले मार्कअप को हटा देता है नोटबुक का इस्तेमाल करें.