00:00:00नमस्ते सबको! एक और बेसेल (Basel) कम्युनिटी सेशन में आपका स्वागत है।
00:00:29मैं माया एवेंडानो हूँ और मैं यहाँ बेसेल में एक DX इंजीनियर हूँ।
00:00:32अगर आप हमारे इन सेशन्स में पहली बार आए हैं और आपको चैट नहीं दिख रही है,
00:00:35तो आप बेसेल के कम्युनिटी प्लेटफॉर्म [community.basel.com/live](https://www.google.com/search?q=https://community.basel.com/live) पर हमसे जुड़ सकते हैं।
00:00:41वहाँ आप चैट का इस्तेमाल कर सकते हैं और सवाल पूछ सकते हैं, जिसकी हम काफी सराहना करते हैं।
00:00:45या अगर आप X (ट्विटर) या किसी और प्लेटफॉर्म पर देख रहे हैं, तो बेझिझक उसका इस्तेमाल करें।
00:00:49आज के सेशन के लिए मैं बहुत उत्साहित हूँ, क्योंकि एक दिलचस्प बात यह है कि,
00:00:53मैं खुद कुछ सालों तक Svelte डेवलपर रही हूँ और मैंने इस पर कई साइड प्रोजेक्ट्स बनाए हैं।
00:00:58तो मैं इसकी बहुत बड़ी प्रशंसक हूँ और मेरे पास इसकी टी-शर्ट भी है।
00:01:01तो चलिए, साथी Svelte प्रशंसकों और इसे जानने के इच्छुक लोगों के लिए,
00:01:06आज हमारे साथ Svelte टीम के कुछ सदस्य मौजूद हैं। तो, आपका स्वागत है।
00:01:12नमस्ते। हैलो सबको! क्या आप हमें अपने बारे में कुछ बताना चाहेंगे?
00:01:21ज़रूर, मेरा नाम रिच है।
00:01:24मैं 10 साल से Svelte पर काम कर रहा हूँ क्योंकि मैंने यह प्रोजेक्ट 2016 में शुरू किया था।
00:01:32शुरुआत में, ताकि मैं इसे अपनी पत्रकारिता की नौकरी में विजुअल जर्नलिज्म के लिए इस्तेमाल कर सकूँ,
00:01:38जहाँ खबरें बताने के लिए जावास्क्रिप्ट की मदद ली जाती है। और फिर चार साल से कुछ ज़्यादा समय पहले,
00:01:44मैं बेसेल में आ गया और यह मेरा फुल-टाइम काम बन गया और तब से मैं यही कर रहा हूँ।
00:01:53हाँ, मुझे लगता है कि आपके जितने सालों का अनुभव किसी और के पास नहीं होगा।
00:01:57मुझे लगता है कि मेरे पास Svelte मेंटेनर के तौर पर लगभग पाँच साल का अनुभव है।
00:02:02तो, मेरा नाम साइमन है। मैं भी बेसेल में Svelte पर काम करता हूँ
00:02:08और मैं अपनी पिछली कंपनी में एक हैकथॉन के ज़रिए Svelte से जुड़ा था।
00:02:13मैं कुछ नया आज़माना चाहता था। उस समय, मैं मुख्य रूप से एंगुलर (Angular) पर काम कर रहा था।
00:02:18हैकथॉन के लिए Svelte का इस्तेमाल किया और तुरंत ही मुझे इससे लगाव हो गया, लेकिन मुझे यह भी पता था,
00:02:22“ठीक है, मैं इसे अपने रोज़ाना के काम में इस्तेमाल नहीं कर सकता, तो मैं Svelte के संपर्क में और कैसे रह सकता हूँ?”
00:02:29सुनने में बहुत किताबी (nerdy) लग सकता है, मुझे पता है। लेकिन इस तरह, मैं एक पार्ट-टाइम मेंटेनर बन गया।
00:02:34और कुछ सालों बाद, मुझे इस पर फुल-टाइम काम करने के लिए बेसेल से जुड़ने का मौका मिला।
00:02:39और हाँ, तब से मैं बहुत खुश हूँ।
00:02:43मैं इलियट हूँ। जैसा कि मैं रिच को बीच-बीच में याद दिलाता रहता हूँ,
00:02:46जिस साल उसने Svelte शुरू किया था, उसी साल मैंने हाई स्कूल पास किया था।
00:02:49तो मैं यहाँ मेंटेनर के रूप में उतने लंबे समय से नहीं हूँ।
00:02:54लेकिन मैंने शुरुआत की थी, मुझे ठीक से याद नहीं कि वह 2021 के आखिर में था या 2022 की शुरुआत में।
00:02:59SvelteKit बीटा के दौरान ही मैंने Svelte कम्युनिटी को ढूँढा और उससे जुड़ा।
00:03:04और फिर रिच के कुछ समय बाद ही मैंने वर्सेल (Vercel) में काम शुरू कर दिया था।
00:03:09अगर मुझे सही याद है, तो यह उसी साल की पतझड़ (fall) की बात थी।
00:03:12पर मैंने वर्सेल की वेबसाइट से जुड़ी कई अन्य चीज़ों पर काम किया।
00:03:16और फिर, अब हैरानी की बात है कि एक साल और कुछ महीने पहले, जो कि बहुत कम समय लगता है,
00:03:23मुझे Svelte टीम में आने का मौका मिला। तो तब से मैं इस पर फुल-टाइम काम कर रहा हूँ।
00:03:27हाल ही में एक बहुत ही बेहतरीन काम जो मैंने किया है, वह है Svelte के लिए असिंक्रोनस SSR इम्प्लीमेंटेशन लिखना।
00:03:36तो इस तरह की चीज़ें ही वह सॉफ्टवेयर डेवलपमेंट का काम हैं जो मुझे पसंद हैं
00:03:43और Svelte के बारे में मुझे हमेशा से पसंद रही हैं।
00:03:48अद्भुत। आप सभी का यहाँ होना बहुत अच्छा है।
00:03:51और हमारे उन दर्शकों के लिए जो शायद परिचित न हों, क्या आप संक्षेप में Svelte और SvelteKit के बारे में बता सकते हैं?
00:04:00हम ज़रूर कोशिश कर सकते हैं। Svelte, असल में कई चीज़ें है।
00:04:04यह एक कम्युनिटी है, यह जीने का एक तरीका है, लेकिन यह एक डिक्लेरेटिव कंपोनेंट फ्रेमवर्क भी है।
00:04:11अगर आपने React और Vue जैसी चीज़ों का इस्तेमाल किया है, तो आप बुनियादी सिद्धांत से परिचित होंगे
00:04:15कि 'document.createElement' और 'setAttribute' लिखने के बजाय,
00:04:21आप अपने ऐप को डिक्लेरेटिव कंपोनेंट्स के रूप में परिभाषित करते हैं।
00:04:25और फिर फ्रेमवर्क का काम उस डिक्लेरेटिव इरादे को स्क्रीन पर दिखने वाली चीज़ों में बदलना होता है।
00:04:33Svelte उन फ्रेमवर्क्स से थोड़ा अलग है क्योंकि इसका डिज़ाइन 'कंपाइलर-फर्स्ट' है।
00:04:40अनिवार्य रूप से, यह एक भाषा है जो बहुत ही बेहतरीन प्रदर्शन करने वाली वैनिला जावास्क्रिप्ट में बदल जाती है।
00:04:48इस्तेमाल के मामले में, यह कई अन्य फ्रेमवर्क्स जैसा ही है, लेकिन अपने डिज़ाइन के कारण,
00:04:53हमें चीज़ों को अन्य फ्रेमवर्क्स की तुलना में थोड़ा बेहतर और संक्षिप्त तरीके से करने का मौका मिलता है।
00:04:58और फिर Svelte के अलावा, जो कि इसकी बुनियादी परत है,
00:05:02हमारे पास एक और फ्रेमवर्क है जो Svelte के ऊपर काम करता है, जिसे SvelteKit कहते हैं,
00:05:08जो कि अगर आप React की दुनिया से हैं, तो यह हमारे Next.js जैसा है।
00:05:13और यह बाकी सारी चीज़ें जोड़ता है, जैसे राउटिंग, सर्वर-साइड रेंडरिंग, डेटा लोडिंग और बिल्ड टूल,
00:05:18और वे सभी चीज़ें जिनकी आपको ऐप बनाते समय ज़रूरत होती है, लेकिन आप नहीं चाहते कि
00:05:24आपको उन्हें खुद बनाने में परेशान होना पड़े।
00:05:28शानदार, बहुत-बहुत धन्यवाद।
00:05:29और आप लोग पर्दे के पीछे भी काफी व्यस्त रहे हैं।
00:05:32और मैं यह जानना चाहूँगी कि पिछले कुछ महीनों में आपने क्या-क्या किया है।
00:05:37मैंने सुना है कि आपके पास दिखाने के लिए कुछ डेमो भी हैं?
00:05:41जी हाँ, हमारे पास कुछ डेमो हैं।
00:05:43क्या मुझे इसकी शुरुआत करनी चाहिए?
00:05:44क्योंकि मुझे लगता है कि क्रम के हिसाब से, पहले असिंक्रोनस Svelte डेवलपमेंट के बारे में बात करना ज़्यादा सही होगा,
00:05:51और फिर हम उन चीज़ों पर आगे बढ़ सकते हैं जो हम उसके ऊपर बना रहे हैं।
00:05:55ठीक लग रहा है।
00:05:55ठीक है, तो पिछले एक साल से ज़्यादा समय से शायद, मुझे ठीक से पता नहीं है।
00:06:02हम उस चीज़ पर काम कर रहे हैं जिसे हम आम तौर पर असिंक्रोनस Svelte कहते हैं। शायद अगर मैं अपनी स्क्रीन शेयर करूँ,
00:06:12तो मैं उसका एक छोटा डेमो दे सकता हूँ, और फिर हम इसके इस्तेमाल के अन्य तरीकों पर चर्चा कर सकते हैं।
00:06:20मुझे बस यह याद करना है कि स्क्रीन शेयर बटन कहाँ है।
00:06:26इन सभी परमिशन डायलॉग्स से गुज़रना पड़ता है।
00:06:28ज़रा रुकिए।
00:06:30पूरी स्क्रीन शेयर करें।
00:06:33लीजिए।
00:06:34ठीक है, मुझे लगता है कि मेरी स्क्रीन शेयर हो रही है।
00:06:35क्या स्क्रीन शेयर हो रही है, या अभी भी बैकस्टेज ही है?
00:06:38हाँ, हमें दिख रही है।
00:06:40ठीक है, तो अनजान लोगों के लिए, यह Svelte.dev है।
00:06:43यह हमारी वेबसाइट है।
00:06:44यह 'प्लेग्राउंड' है जहाँ आप बिना कुछ इंस्टॉल किए या कमांड लाइन के चक्कर में पड़े
00:06:49Svelte को आज़मा सकते हैं।
00:06:51आप सीधे यहाँ कोड लिख सकते हैं।
00:06:53तो यह डिफ़ॉल्ट प्लेग्राउंड है जो आपको मिलता है।
00:06:55शायद मैं इसे थोड़ा बड़ा कर दूँ ताकि हर कोई देख सके।
00:06:58तो यहाँ हमारे पास कुछ 'स्टेट' (state) है।
00:07:03तो ये अजीब चीज़ें, इन्हें 'रून्स' (runes) कहा जाता है।
00:07:05यह बताने का तरीका है कि आपके Svelte कंपोनेंट में कुछ बदलने वाला है,
00:07:10और जब वह बदलेगा, तो हमें फिर से रेंडर करने की ज़रूरत होगी।
00:07:12तो हमारे पास एक 'name' है और एक 'count' है।
00:07:15और फिर हम उस 'name' को यहाँ ऊपर दिखा रहे हैं।
00:07:17और फिर हम उसकी वैल्यू को इसके कंटेंट से बाँध (bind) रहे हैं।
00:07:21तो हम ऐसा कर सकते हैं।
00:07:24और हम इस बटन पर क्लिक कर सकते हैं, जिससे संख्या बढ़ती जाएगी।
00:07:27ये बहुत ही बुनियादी चीज़ें हैं जो हर फ्रेमवर्क
00:07:29किसी न किसी तरीके से कर सकता है।
00:07:35असिंक्रोनस Svelte जो क्षमता जोड़ता है, वह है 'Await' कीवर्ड का सीधे इस्तेमाल करना
00:07:41अपने कंपोनेंट्स के अंदर।
00:07:45तो मान लीजिए-- चलिए नाम और इन सब चीज़ों को हटा देते हैं।
00:07:49और इसे एक 'ID' में बदल देते हैं और एक से शुरू करते हैं।
00:07:56और मैं जो करने जा रहा हूँ वह यह है कि मैं कुछ JSON डेटा खींचने वाला हूँ
00:08:01एक बाहरी स्रोत से।
00:08:04मैं पहले ऐसी चीज़ बनाकर शुरुआत करूँगा जो ID से ली गई (derived) हो।
00:08:10तो यह URL तब कंप्यूट किया जाएगा जब भी वह ID बदलेगी।
00:08:16और आप देख सकते हैं कि अगर मैं यहाँ URL लिखता हूँ, तो जैसे-जैसे यह बदलता है,
00:08:22URL भी बदलता जाता है।
00:08:24और फिर मैं उस URL का इस्तेमाल करके कुछ डेटा लाऊँगा,
00:08:28my data equals derived.
00:08:30और फिर यहाँ अंदर, मैं 'Await fetch URL' कर सकता हूँ।
00:08:36और फिर हम रिस्पॉन्स को JSON में बदलना चाहते हैं।
00:08:41मुझे यकीन है कि डेवलपमेंट में काम करने वाले हर किसी ने इस तरह की चीज़
00:08:43लाखों बार देखी होगी।
00:08:47और फिर नीचे यहाँ, चलिए एक 'ब्लॉक कोट' (block quote) बनाते हैं
00:09:00और वह डेटा दिखाते हैं जो हम यहाँ से खींच रहे हैं।
00:09:03तो आप देख सकते हैं कि अगर हम असल में इसे देखें--
00:09:06वह टूट गया है।
00:09:13तो यह वही है जो हमें मिलने वाला है, और हम इसे दिखाना चाहते हैं।
00:09:16तो यहाँ अंदर, मैं इस तरह 'data.quote' करने वाला हूँ।
00:09:21ओह, कुछ गड़बड़ हो गई है।
00:09:23साइमन, इलियट, अगर आपको दिख रहा है कि मैंने क्या बिगाड़ा है, तो ज़रूर बताएँ।
00:09:28ओह, नहीं, यह बस देरी (delay) की वजह से है।
00:09:30ठीक है।
00:09:31और फिर उसके नीचे, हम कोट के लेखक का नाम जोड़ेंगे।
00:09:40और शायद जब तक हम इस पर काम कर रहे हैं, उस देरी को हटा देते हैं।
00:09:44पता नहीं।
00:09:46अगर मैं इसे कर्ली ब्रेसेस में लपेट दूँ तो मदद मिलेगी।
00:09:50और अब अगर मैं इस पर क्लिक करता हूँ, तो यह हट जाएगा,
00:09:55और यह नया डेटा लाएगा, और इसे रेंडर करेगा।
00:09:58यह सुनने में बहुत ही बुनियादी और तुच्छ लग सकता है,
00:10:01लेकिन अगर आप देखें कि आपको मूल रूप से हर दूसरे फ्रेमवर्क में यह कैसे करना पड़ता है,
00:10:08तो यह बहुत जल्दी डरावना और जटिल हो जाता है।
00:10:10आपके पास कुछ लोकल स्टेट होना चाहिए, और फिर
00:10:13आपके पास एक 'इफेक्ट' (effect) होना चाहिए, जो शायद 'useEffect' हो
00:10:16या अन्य फ्रेमवर्क्स में उसके बराबर, जिसमें आप डेटा फेच करते हैं।
00:10:20और फिर जब फेच रिज़ॉल्व होता है, तब आप उस लोकल स्टेट को असाइन करते हैं,
00:10:25और आपको एरर वगैरह को भी संभालना पड़ता है।
00:10:27और यह वाकई काफी जटिल हो जाता है।
00:10:32लेकिन इसके साथ, यह बस काम करता है।
00:10:36और अगर देरी होती है--
00:10:43तो भी यह काम करना जारी रखता है।
00:10:45हालाँकि आप इसे देखकर सोच सकते हैं, ज़रा रुकिए,
00:10:46अगर मैं बटन को कई बार क्लिक कर रहा हूँ,
00:10:49तो मैं असल में सीधे आखिरी नतीजे पर पहुँचना चाहता हूँ।
00:10:51मैं बीच की इन सभी चीज़ों को नहीं करना चाहता।
00:10:53तो हम वह भी कर सकते हैं।
00:10:54हम यहाँ अंदर कह सकते हैं, अगर मैं इस हेल्पर को इम्पोर्ट करूँ जिसे
00:10:58'get abort signal from self' कहते हैं, और फिर उस सिग्नल को फेच में पास कर दूँ,
00:11:11तो इस बार, जैसे ही मैं बटन क्लिक करूँगा,
00:11:15यह वास्तव में उन सभी बीच के अनुरोधों को खारिज कर देगा
00:11:19और सीधे आखिरी वाले पर पहुँच जाएगा,
00:11:21क्योंकि वे पहले वाले अनुरोध बहुत देर से रिज़ॉल्व हो रहे हैं।
00:11:26और तब तक, हमने पहले ही आईडिया फिर से बदल दिया है।
00:11:28तो हम मौजूदा सिग्नल्स को कैंसिल कर रहे हैं।
00:11:33ठीक है, हम और क्या कर सकते हैं?
00:11:34शायद मैं इस बटन को तुरंत अपडेट होते देखना चाहता हूँ।
00:11:38तो हम असिंक्रोनस होल्डिंग से बाहर निकलने के लिए
00:11:43'state.eager' कह सकते हैं।
00:11:47यह भी काफी उपयोगी है।
00:11:49और हम कुछ स्टाइल जोड़ सकते हैं।
00:11:51हम कह सकते हैं 'data loading equals effect.pending'
00:11:58जो 0 से ज़्यादा है।
00:11:59और फिर अगर हम लोडिंग स्टेट में हैं,
00:12:04तो लोडिंग के दौरान हम इसे 'फ़ेड आउट' (fade out) कर सकते हैं।
00:12:11और यह भी वह सब है जिसे अगर आप
00:12:13खुद तालमेल बिठाकर करने की कोशिश करते
00:12:15तो यह बहुत ही मुश्किल काम होता।
00:12:17हम और भी आगे जा सकते हैं।
00:12:19मान लीजिए मैं कोट के साथ एक फोटो भी जोड़ना चाहता हूँ।
00:12:28यह कुछ ऐसा दिख सकता है।
00:12:37अगर मैं इसे बदलता हूँ, तो मुझे
00:12:41बहुत सारी अलग-अलग तस्वीरें मिलेंगी।
00:12:42जाहिर तौर पर, सब लैपटॉप की हैं, मुझे नहीं पता ऐसा क्यों है।
00:12:46ठीक है, यह एक बेहतर तस्वीर है।
00:12:48हालाँकि, आप ध्यान देंगे कि वहाँ
00:12:50थोड़ी सी देरी हो रही है।
00:12:52हमें कोट के लिए डेटा मिलता है, और फिर इमेज दिखाई देती है।
00:12:57क्योंकि हम इमेज रेंडर कर रहे हैं,
00:12:58और फिर हमें इमेज पाने के लिए वापस नेटवर्क पर जाना पड़ रहा है,
00:12:59और यह उतना अच्छा नहीं है।
00:13:02तो अगर हम उसे एक छोटे 'प्रीलोड' (preload)
00:13:07हेल्पर से बदल दें, जिसे मैं अपने यूटिल्स मॉड्यूल से इम्पोर्ट करने जा रहा हूँ,
00:13:17तो इस बार, हम देखेंगे कि इमेज और कोट
00:13:24दोनों एक ही समय में आते हैं।
00:13:27मैंने अभी-अभी एक छोटी सी बग पकड़ी है।
00:13:28हमें जाकर उसे ठीक करना होगा।
00:13:30लेकिन आपको अंदाज़ा मिल गया होगा।
00:13:31हम अपनी गणनाओं (computations) के अंदर 'Await' का उपयोग कर सकते हैं,
00:13:34और हम इसे अपने टेम्पलेट के अंदर भी उपयोग कर सकते हैं।
00:13:36और ये सभी चीज़ें पूरी तरह से समन्वित (coordinated) हैं
00:13:40एक ऐसे तरीके से जो कई कंपोनेंट्स के साथ काम करता है,
00:13:44जो एक ही इवेंट के जवाब में स्वतंत्र रूप से काम कर रहे हैं।
00:13:47यह सर्वर-साइड रेंडरिंग के साथ भी काम करता है।
00:13:49यह वे सभी चीज़ें करता है जिन्हें अगर आपको
00:13:52बिना असिंक्रोनस Svelte के करना पड़ता
00:13:55तो वे बेहद कष्टदायक होतीं।
00:13:58और इस नींव के साथ, हम कुछ
00:14:02काफी शानदार चीज़ें बनाने में सक्षम हैं, जिसके बारे में मैं
00:14:05बाकी दोनों को बात करने के लिए सौंप रहा हूँ।
00:14:09हाँ।
00:14:10मैं जल्दी से रिमोट फंक्शन्स का डेमो देने वाला हूँ, जो
00:14:17जो इसी के ऊपर बनाए जाएँगे।
00:14:19तो अब जबकि हमारे पास Svelte में async है, यह बहुत शक्तिशाली है।
00:14:24लेकिन SvelteKit, इसके ऊपर बना मेटा फ्रेमवर्क,
00:14:27अभी भी एक तरह से पुरानी दुनिया में ही है।
00:14:30हमारे पास ये लोड फंक्शन्स हैं, जो एक अलग फाइल में रहते हैं।
00:14:34और उसके साथ, हम इस सब नई और बेहतरीन चीज़ों का
00:14:38वास्तव में उपयोग नहीं कर सकते जो हमने अभी देखी हैं।
00:14:41और इसलिए हम अभी जिस चीज़ पर काम कर रहे हैं, वो है रिमोट फंक्शन्स।
00:14:45वे SvelteKit में पहले से ही उपलब्ध हैं।
00:14:48वे प्रायोगिक हैं, लेकिन आप उनका उपयोग अभी भी कर सकते हैं।
00:14:50और मैं यहाँ रिमोट फंक्शन्स का
00:14:55सबसे सरल संभव तरीका दिखाने जा रहा हूँ, बस समय की कमी के कारण।
00:14:59तो मैं क्या करने वाला हूँ कि मैं बस
00:15:01एक बहुत ही सरल काउंटर बनाने जा रहा हूँ जहाँ
00:15:04जब भी मैं बटन क्लिक करूँ, यह गिनती बढ़ा दे,
00:15:08लेकिन वो गिनती सर्वर पर रहेगी।
00:15:10और इसलिए मैं इसे इस counter.remote.ts फाइल में लागू करूँगा।
00:15:16मैं बस एक काउंट से शुरुआत करने वाला हूँ।
00:15:18और फिर कुछ ऐसा, गेट काउंट।
00:15:20और फिर हम $app/server से एक क्वेरी का उपयोग करेंगे।
00:15:26और यह एक रिमोट क्वेरी है।
00:15:29और हम यहाँ बस काउंट वापस कर देंगे।
00:15:31और दूसरी तरफ, हम फिर उसका उपयोग कर सकते हैं
00:15:37और कह सकते हैं, अभी इंपोर्ट की गई फाइल से await get count।
00:15:44तो यह इंपोर्ट TypeScript के लिए एक नियमित इंपोर्ट जैसा दिखता है।
00:15:48बस इतना है कि हम एक फंक्शन इंपोर्ट कर रहे हैं,
00:15:52और फिर हम इसे कॉल कर रहे हैं, और यह एक प्रॉमिस देता है।
00:15:54तो हम इसका इंतज़ार (await) कर रहे हैं।
00:15:56लेकिन असल में, यह क्लाइंट-सर्वर की सीमा को पार कर रहा है।
00:16:01तो यह गेट काउंट, वास्तव में सर्वर पर रहता है।
00:16:05तो असल में हो यह रहा है कि क्लाइंट
00:16:08एक छिपे हुए एंडपॉइंट पर रिक्वेस्ट भेज रहा है
00:16:14और वहां से डेटा वापस ला रहा है।
00:16:17और बेशक, यह सर्वर-साइड रेंडरिंग जैसा भी है।
00:16:19तो शुरुआती लोड पर, यह बैकएंड से रिक्वेस्ट नहीं करेगा,
00:16:23बल्कि इसे सीधे करेगा।
00:16:25और अब हमारे पास यह काउंट तो है, लेकिन हम अभी इसके साथ
00:16:29कुछ कर नहीं सकते।
00:16:29हम इसे बढ़ाना चाहते हैं।
00:16:31तो यह रिमोट फंक्शन के लिए दूसरा हिस्सा होगा।
00:16:34हम इसे बहुत जल्दी लागू करने जा रहे हैं-- कोपायलट नहीं।
00:16:38यह गलत कमांड है।
00:16:40हमें $app/server से कमांड चाहिए।
00:16:45और यहाँ, हम बस अपने सर्वर की स्थिति (state) अपडेट करेंगे।
00:16:49और वह अपने आप में अभी मदद नहीं करेगा,
00:16:52क्योंकि हमें इसे यह भी बताना होगा, क्योंकि यह एक कमांड है,
00:16:55कि इसके साथ एक अपडेट भी भेजें।
00:16:58और इसलिए हम यहाँ अपने रिमोट फंक्शन गेट काउंट को कॉल कर रहे हैं,
00:17:03और उस पर refresh कॉल कर रहे हैं।
00:17:05और इसके साथ, हम मूल रूप से इसे बता रहे हैं,
00:17:08कि एक सिंगल-फ्लाइट म्यूटेशन जैसा कुछ करो।
00:17:10जब आपको कॉल किया जाए, तो काउंट को एक से बढ़ा दें,
00:17:14और फिर क्लाइंट को यह जानकारी वापस भेजें
00:17:19कि, जब भी इस पेज पर गेट काउंट का उपयोग किया जाए,
00:17:22तो अब इसे एक से बढ़ जाना चाहिए,
00:17:24कि अब एक नई स्थिति उपलब्ध है।
00:17:27और इसलिए अगर मैं अब इसे यहाँ जोड़ता हूँ,
00:17:29तो मैं on click जैसा कुछ करूँगा और बस काउंट बढ़ा दूँगा।
00:17:37मैं बस इतना ही करने जा रहा हूँ।
00:17:38यह एक नियमित फंक्शन कॉल जैसा दिखता है।
00:17:40लेकिन फिर से, यह वास्तव में सर्वर को कॉल करता है।
00:17:43और अब जब मैं इसे क्लिक करता हूँ, तो मैं इसे बढ़ा रहा हूँ।
00:17:49तो यह रिमोट फंक्शन्स की एक
00:17:53बहुत ही सरसरी झलक थी।
00:17:55आप इसके साथ बहुत कुछ बना सकते हैं।
00:17:58यह AI के साथ मिलकर भी शानदार ढंग से काम करता है।
00:18:01उदाहरण के लिए, सेशन शुरू होने से पाँच मिनट पहले,
00:18:06मैंने इस कोड कोपायलट से पूछा, हे, मेरे लिए
00:18:12एक पोर्टल-थीम वाला बेसिक ब्लॉक बनाओ जहाँ
00:18:18मैं कुछ रिमोट फंक्शन्स दिखाना चाहता हूँ।
00:18:20और तुम्हें MCP, यानी Svelte MCP के साथ Svelte 5 का उपयोग करना चाहिए।
00:18:25एलियट जल्द ही उसके बारे में थोड़ा और बात करेंगे।
00:18:29उसका उपयोग करो और रिमोट फंक्शन्स और async का उपयोग करो।
00:18:32और इसने मूल रूप से इसे एक ही बार में कर दिया।
00:18:34तो यह प्री-रेंडर किया गया है।
00:18:35यह ब्लॉक प्री-रेंडर किया गया है।
00:18:37और अब मैं यहाँ टाइप कर सकता हूँ--
00:18:42यहाँ आस-पास सेव करें।
00:18:43और यह इसे अपडेट कर देता है।
00:18:49और अंदरूनी तौर पर, यह मूल रूप से वही काम कर रहा है।
00:18:53बस इस पर एक त्वरित नज़र डालते हुए,
00:18:56हम await get posts का उपयोग कर रहे हैं।
00:18:59गेट पोस्ट्स एक प्री-रेंडर फंक्शन है,
00:19:01जिसका अर्थ है कि यह रनटाइम के बजाय
00:19:05बिल्ड टाइम पर निष्पादित होता है।
00:19:06हमारे पास यहाँ नीचे एक कमेंट सेक्शन है
00:19:12जहाँ हम कमेंट्स लोड कर रहे हैं और फिर एक नया कमेंट
00:19:15पोस्ट करने के लिए एक फॉर्म का उपयोग कर रहे हैं और इसी तरह।
00:19:19और यह सब रिमोट फंक्शन्स का उपयोग कर रहा है, कहीं भी
00:19:23कोई लोड फंक्शन नहीं है।
00:19:24और AI ने इसे एक ही बार में कर दिया।
00:19:27और एलियट अब इसके बारे में
00:19:32शायद अधिक विस्तार से बात करने जा रहे हैं।
00:19:34हाँ, बहुत बढ़िया लग रहा है।
00:19:37मुझे भी वही रिच हैरिस वाली चीज़ें करनी होंगी
00:19:41जो हमें स्क्रीन शेयर करने के साथ शुरुआत में करनी पड़ी थीं।
00:19:46ठीक है, ये रहा।
00:19:52तो मैं आप लोगों से उस AI विकास के बारे में बात करने
00:19:57के लिए एक मिनट लेने जा रहा हूँ जो हम हाल ही में कर रहे हैं।
00:19:59और 'हम' से मेरा मतलब साफ़ है कि मेरा मतलब खुद से नहीं है।
00:20:02मेरा मतलब मुख्य रूप से पाओलो नाम के एक व्यक्ति और Svelte के
00:20:06हमारे कुछ अन्य योगदानकर्ताओं से है।
00:20:09वास्तव में, हाल ही में हमने जो भी AI से संबंधित काम किया है,
00:20:13वह ज़्यादातर उन्हीं की तरफ से आया है।
00:20:14तो उनका बहुत-बहुत धन्यवाद।
00:20:15उन्होंने कमाल का काम किया है।
00:20:18और हाँ, चलिए मैं यहाँ आपके लिए ज़ूम करता हूँ।
00:20:24ये रहा।
00:20:27तो मैं इसे समझाने में काफी समय ले सकता हूँ
00:20:28कि हमने इसे करने के लिए क्या बनाया है
00:20:31क्योंकि हमारे पास एक MCP सर्वर है।
00:20:32इसमें कुछ बहुत ही शानदार फंक्शन्स हैं।
00:20:36हमारे पास कुछ स्किल्स हैं जिन्हें हमने प्रकाशित किया है।
00:20:38लेकिन शुक्र है कि आपको विस्तार से यह जानने
00:20:41की ज़रूरत नहीं है कि यह सब कैसे काम करता है
00:20:43क्योंकि हमने Open Code और Cloud Code
00:20:47प्लगइन्स भी प्रकाशित किए हैं।
00:20:48तो मैं यहाँ Open Code प्लगइन इंस्टॉल करने जा रहा हूँ, जिसका
00:20:52मूल रूप से मतलब है कि इस कॉन्फ़िगरेशन को कॉपी करना
00:20:55और फिर इसे अपनी लाइब्रेरी की एक
00:20:58Open Code.json फाइल में डाल देना।
00:21:00और मैं बस Open Code से इसके साथ एक साइट बनवाने वाला हूँ।
00:21:06और हम देखेंगे कि यह कैसे चलता है।
00:21:10तो मैं इससे पूछने जा रहा हूँ।
00:21:11मैंने एसेट्स (assets) में कुछ इमेज प्रदान की हैं।
00:21:17मुझे दुर्भाग्य से इसे आपके लिए ज़ूम करने दीजिए।
00:21:28दुर्भाग्य से, ऐसा नहीं लग रहा है कि मैं इसे आपके लिए ज़ूम कर सकता हूँ।
00:21:34ये रहा।
00:21:34ठीक है।
00:22:00[टाइपिंग]
00:22:06और हम देखेंगे कि इसके साथ क्या होता है।
00:22:09कोई गलती नहीं।
00:22:11हाँ, बिल्कुल।
00:22:12वह बहुत महत्वपूर्ण है।
00:22:13यदि आप अपने प्रॉम्प्ट के अंत में वह नहीं लिखते,
00:22:15तो वे उतनी अच्छी तरह काम नहीं करते।
00:22:18लेकिन जब तक यह चल रहा है, मैं आपको
00:22:21उस काम के बारे में थोड़ा बता सकता हूँ जिस पर वे काम कर रहे हैं।
00:22:25तो अगर आप यहाँ Svelte साइट पर आते हैं
00:22:28और हमारे AI डॉक्स पर आते हैं, तो आपको हर चीज़ का अवलोकन मिल जाता है।
00:22:32हमने एक MCP प्रकाशित किया है, जिसके साथ अपना खुद का CLI सामान है।
00:22:36और इसमें कई--
00:22:40ओह, हे, उन्होंने पिछले पाँच मिनट में इसे ठीक कर दिया।
00:22:43तो यह पाँच मिनट पहले जैसा था, उससे अलग दिख रहा है।
00:22:46लेकिन हमारे पास कई टूल्स हैं जो यह आपकी मशीन पर सक्षम करता है।
00:22:51उनमें से अधिकांश का संबंध--
00:22:53या पहले दो का संबंध Svelte के बारे में
00:22:58अच्छी जानकारी प्राप्त करने से है।
00:22:58तो यह आपके एजेंट को सिखाता है कि डॉक्यूमेंटेशन कैसे पढ़ें
00:23:03और विशेष रूप से इसे इस तरह से पढ़ें
00:23:05कि यह वह विशिष्ट जानकारी प्राप्त कर सके
00:23:08जिसकी उसे तलाश है, बिना पूरे डॉक्स को यहाँ डंप किए
00:23:11या उन्हें खोजने और समय और कॉन्टेक्स्ट
00:23:12बर्बाद किए बिना।
00:23:15यह वास्तव में कमाल का Svelte ऑटोफिक्सर है
00:23:17जिसे उन्होंने बनाया है जो उन पैटर्न्स को पहचानता है
00:23:21जो LLMs अक्सर उपयोग करते हैं जो अच्छे नहीं होते, और उन्हें ठीक करता है।
00:23:26और इसमें हमारे प्लेग्राउंड के साथ कुछ प्लेग्राउंड इंटीग्रेशन भी है
00:23:33जिसका उपयोग आप यहीं कर सकते हैं।
00:23:37और दूसरी अच्छी चीज़ जो हमारे पास है
00:23:39वो हमारे मुख्य डिजाइन निर्णयों में से एक है
00:23:44जब हम इस सब AI सामग्री को देख रहे होते हैं
00:23:46कि हम इसे एजेंटों और लोगों दोनों के लिए उपयोगी कैसे बनाएं?
00:23:52हम नहीं चाहते कि यह कोई अस्पष्ट चीज़ हो
00:23:55जहाँ आपका एजेंट जादुई रूप से चीज़ें जानता हो।
00:23:59आप इसे नहीं जानते।
00:24:00इसे समझना मुश्किल है।
00:24:01तो मूल रूप से, हम जो कुछ भी करते हैं,” उसे हम
00:24:04डॉक्यूमेंटेशन में भी एकीकृत करने का प्रयास करते हैं।
00:24:07और इसलिए हमारी स्किल्स जिन्हें हमने प्रकाशित किया है,
00:24:09जो इस ओपन कोड प्लगइन या क्लाउड कोड प्लगइन
00:24:12का हिस्सा हैं जब आप इसे इंस्टॉल करते हैं, तो वे वास्तव में
00:24:15अपनी सारी सामग्री डॉक्स पर भी प्रकाशित करते हैं।
00:24:18तो आप हमेशा जान सकते हैं कि यदि आप
00:24:20हैरान हैं कि हम आपके LLM को किन सर्वोत्तम प्रथाओं के बारे में बता रहे हैं,
00:24:25तो आप उन्हें स्वयं आकर पढ़ सकते हैं।
00:24:27और वे हमेशा हमारी साइट पर इसी तरह रहेंगे।
00:24:31तो चलिए वापस चलते हैं और देखते हैं कि इस चीज़ ने
00:24:34कितना काम (churning) किया है।
00:24:35अभी तक बहुत ज़्यादा नहीं।
00:24:39शायद बहुत ज़्यादा, असल में।
00:24:45हाँ, तो हमारे पास बहुत सारी स्टाइलिंग चल रही है।
00:24:56और मुझे लगता है कि मैं बस अपना लोकल होस्ट
00:25:00खोलूँगा और देखूँगा कि इसने क्या किया है।
00:25:03कुछ नहीं।
00:25:07ठीक है, खैर, मैं इसे रोक कर नहीं रखना चाहता
00:25:10जब यह अभी भी अपनी पूरी प्रक्रिया पर विचार कर रहा है।
00:25:12इसमें कुछ समय लग सकता है।
00:25:13तो अगर हमारे पास अंत में समय हुआ, तो हम वापस आकर
00:25:15देख सकते हैं कि LLM हमारे आर्टिसनल पोटैटो कैनन
00:25:19बिजनेस के लिए क्या लेकर आया है।
00:25:20लेकिन हाँ, यह हमारा AI विकास है जो हमने
00:25:25पिछले कुछ महीनों में किया है।
00:25:26शानदार।
00:25:32हाँ, नए युग में यह अत्यंत प्रासंगिक है।
00:25:37मैं वास्तव में यह जानना चाहूँगा कि आगे क्या है।
00:25:40आप लोग किस चीज़ का इंतज़ार कर रहे हैं?
00:25:46अगला रिलीज़ Svelte Kit 3 होने जा रहा है।
00:25:51इस समय हम सक्रिय रूप से उस पर काम कर रहे हैं।
00:25:53लेकिन यह बहुत सारी नई सुविधाओं वाली कोई बहुत बड़ी चीज़ नहीं होने वाली है।
00:25:56जिसमें ढेर सारे नए फीचर्स होंगे।
00:25:57यह मूल रूप से बहुत सारी पुरानी चीजों को
00:25:59हटाने का एक अवसर है, एक तरह से मैदान साफ करना
00:26:02ताकि हम सभी रोमांचक नई चीजें बना सकें।
00:26:06सबसे बड़ा बदलाव यह है कि यह अब एनवायरनमेंट
00:26:09API का उपयोग करेगा क्योंकि V8 अभी ठीक दो घंटे पहले रिलीज हुआ है।
00:26:15और इसके लिए नवीनतम वर्जन के रूप में Svelte 5 की आवश्यकता होगी।
00:26:21तो आप Svelte 4 का उपयोग करने में पूरी तरह सक्षम हैं।
00:26:25और उसके बाद, हम
00:26:29async Svelte और रिमोट फंक्शन को स्टेबल बनाने पर ध्यान केंद्रित करेंगे।
00:26:33सुनने में अच्छा लग रहा है।
00:26:37और मैंने कहीं से सुना है कि मैं
00:26:41एलियट को कमान सौंपने जा रहा हूँ क्योंकि LLM
00:26:44कुछ तैयार कर रहा था।
00:26:46क्या आप हमें दिखाना चाहते हैं कि आपके पास क्या है?
00:26:47जैसा कि इन चीजों के साथ होता है, इसने ठीक उसी पल
00:26:49काम खत्म किया जब हम अगले हिस्से की ओर बढ़े।
00:26:55तो चलिए यहाँ चलते हैं।
00:26:59हाँ, तो यह हमारा आर्टिसनल पोटैटो कैनन स्टोरफ्रंट है
00:27:03जो हमें लगभग $1 के टोकन में मिला है।
00:27:07और वास्तव में, कोड पर नज़र डालते हुए,
00:27:13इसने कुछ भी अजीब न करने और Svelte के लिए
00:27:17बेहतरीन तरीकों का उपयोग करने में बहुत अच्छा काम किया है।
00:27:22तो इसे आजमाएं।
00:27:25हमें बताएं कि आपको यह कैसा लगा।
00:27:27मैं पाओलो और अन्य लोगों द्वारा इस सभी AI काम
00:27:29पर किए गए प्रयासों से वास्तव में प्रभावित हुआ हूँ।
00:27:33और हम इसमें सुधार करना जारी रखना चाहेंगे।
00:27:35तो अपना फीडबैक हमें जरूर दें।
00:27:38शुक्रिया।
00:27:40बहुत बढ़िया, डेमो के देवता आज हमारे पक्ष में हैं।
00:27:45क्या हम कुछ सवालों के लिए मंच खोलें?
00:27:47मुझे लगता है कि चैट में हमारे पास पहले से ही कुछ सवाल हैं।
00:27:51मैं शुरुआत करता हूँ, ठीक है?
00:27:53तो हमारे पास रिमोट फंक्शन्स के लिए एक सवाल है।
00:27:57क्या हमें रिमोट फंक्शन्स के लिए स्ट्रीमिंग मिलेगी?
00:28:00रिमोट फंक्शन्स का अनुभव (DX) बहुत शानदार है।
00:28:03उन्हें हर जगह इस्तेमाल करना चाहता हूँ।
00:28:05हाँ, मुझे लगता है कि रिचर्ड इसका जवाब दे सकते हैं
00:28:06क्योंकि आप उसी क्षेत्र में काम कर रहे हैं।
00:28:10जी हाँ, यह अजीब इत्तेफाक है कि आपने इसका जिक्र किया।
00:28:12क्योंकि मैं अभी एक ऐप बना रहा हूँ जिसे
00:28:15वाकई इस फीचर की जरूरत है।
00:28:17और हमने— साइमन ने कुछ समय पहले एक PR पर काम किया था,
00:28:22जिसने इसके कुछ हिस्सों को लागू किया था।
00:28:23तब से डिजाइन को लेकर हमारे
00:28:28विचार थोड़े और विकसित हुए हैं।
00:28:31लेकिन यह कुछ ऐसा है जिसे वापस शुरू करने के लिए हम बहुत उत्सुक हैं।
00:28:35तो हाँ, अगर हम यह एक हफ्ते बाद कर रहे होते,
00:28:40तो शायद हम कह पाते, "यह रहा पुल रिक्वेस्ट।"
00:28:43हम अभी वहां तक नहीं पहुंचे हैं।
00:28:44लेकिन निश्चिंत रहें, यह एक बहुत ही उच्च प्राथमिकता है।
00:28:47और हम इस फीचर के लिए बहुत उत्साहित हैं।
00:28:49जो लोग परिचित नहीं हैं, उनके लिए बता दूँ कि
00:28:51हम क्वेरी फंक्शन के रियल-टाइम वर्जन के
00:28:55बारे में बात कर रहे हैं, जहाँ जब आप सर्वर से
00:28:59डेटा का अनुरोध करेंगे, तो यह एक async iterable लौटाएगा,
00:29:04जो हर बार नया डेटा आने पर,
00:29:09उस डेटा को क्लाइंट को वापस भेज देगा।
00:29:12तो आप बिना किसी पोलिंग के रियल-टाइम डेटा प्राप्त कर सकते हैं।
00:29:15और जैसे ही वह पेज
00:29:16उस डेटा को दिखाना बंद कर देगा,
00:29:21अनुरोध अपने आप बंद हो जाएगा।
00:29:23और async iterable खुद को साफ (clean up) कर लेगा।
00:29:26और इन रियल-टाइम समस्याओं के बारे में सोचने का
00:29:28यह वास्तव में एक बहुत अच्छा तरीका है।
00:29:31हाँ, इसके लिए बहुत उत्साहित हूँ।
00:29:33और पूरी तरह स्पष्ट करने के लिए, मैं
00:29:35आप लोगों को बताना चाहता हूँ कि रिच का "जल्द ही" से क्या मतलब है,
00:29:38फिलहाल एलियट मुझे इस पर काम करने से
00:29:40रोक रहा है।
00:29:41और मैं उसके कुछ खत्म करने का इंतज़ार कर रहा हूँ।
00:29:43तो जैसे ही मैं अपने मौजूदा काम से फ्री हो जाऊंगा,
00:29:45हम इस पर लग जाएंगे।
00:29:46बढ़िया।
00:29:50हमारे पास एक और सवाल है।
00:29:52और वह है, अन्य फ्रेमवर्क्स के बजाय Svelte को क्यों चुनें?
00:29:55जाहिर है, हमें लगता है कि यह सबसे अच्छा और सबसे सक्षम फ्रेमवर्क है।
00:30:07लेकिन आज के दौर में किसी भी फ्रेमवर्क
00:30:11को चुनने का असली कारण यह है
00:30:13कि आपको दूसरों की तुलना में इसमें अधिक मज़ा आता है।
00:30:18इसका बहुत सारा हिस्सा व्यक्तिगत पसंद के बारे में है
00:30:20न कि किसी और चीज के बारे में।
00:30:22और खासकर आजकल, जब
00:30:24फ्रेमवर्क्स के बीच स्विच करना वाकई आसान है,
00:30:28आपके पास एक जादुई विज़ार्ड (AI) उपलब्ध है जो आपको सिखा सकता है—
00:30:32"मैं Vue में इसे इस तरह से करने का आदी हूँ।"
00:30:35"मैं इसे Angular या किसी और चीज़ में कैसे करूँगा?"
00:30:37वे ऐसा कर सकते हैं।
00:30:38सीखने की प्रक्रिया आज के दौर में
00:30:43अनिवार्य रूप से बहुत सरल हो गई है।
00:30:45इसलिए आपको उस टूल का उपयोग करना चाहिए जिसमें आप सबसे अधिक उत्पादक हैं
00:30:49और जिसका उपयोगकर्ता बनकर आप सबसे खुश हैं।
00:30:53और इसका एक हिस्सा प्रोजेक्ट के इर्द-गिर्द के समुदाय के बारे में है।
00:30:57एक हिस्सा प्रोजेक्ट के समग्र दर्शन (philosophy) के बारे में है।
00:31:02लेकिन मुझे नहीं लगता कि आज के दौर में आपको
00:31:05इस आधार पर निर्णय लेने की ज़रूरत है कि कौन सा फ्रेमवर्क काम कर सकता है।
00:31:11क्योंकि वे सभी एक ही काम कर सकते हैं,
00:31:13या किस फ्रेमवर्क का इकोसिस्टम सबसे बड़ा है।
00:31:16क्योंकि अब यह वास्तव में चिंता का विषय नहीं है।
00:31:18तो बस वही फ्रेमवर्क चुनें जो सबसे ज्यादा मजेदार हो।
00:31:21और हमें लगता है कि वह निश्चित रूप से Svelte है।
00:31:26शानदार जवाब।
00:31:27बहुत पसंद आया।
00:31:29अगला, कोई पूछ रहा है, क्या कैश (cache) से संबंधित कुछ नया है?
00:31:35हाँ, मुझे लगता है कि यह शायद रिमोट फंक्शन्स के बारे में है।
00:31:38तो रिमोट फंक्शन्स के संदर्भ में,
00:31:41हमारे पास अभी तक कोई कैश API नहीं है।
00:31:45एक आंतरिक प्रस्ताव (proposal) है।
00:31:48यह अभी सक्रिय कार्य नहीं है।
00:31:51चल रहे अन्य कामों के बीच इसे फिलहाल किनारे रख दिया गया है।
00:31:55लेकिन इसे जल्द ही फिर से शुरू किया जाएगा।
00:31:58और फिर हमारे पास एक बहुत अच्छा कैशिंग API होगा जो
00:32:01रिमोट फंक्शन्स के साथ एकीकृत होगा।
00:32:05अद्भुत।
00:32:06हमारे पास एक हल्का-फुल्का सवाल है।
00:32:08आपका पसंदीदा Svelte Summit लोकेशन कौन सा है?
00:32:10ओह, वाह।
00:32:13क्या आप तुरंत एक राउंड रॉबिन (बारी-बारी से जवाब) करना चाहते हैं?
00:32:16एलियट, आप म्यूट हैं।
00:32:22तो मेरा मतलब है, अगर हम शिखर सम्मेलनों की बात कर रहे हैं,
00:32:24तो हमारे पास एवरेस्ट है, K2 है।
00:32:28नहीं, लेकिन मेरे लिए, स्थान उतना मायने नहीं रखता।
00:32:34क्योंकि मैं ज़्यादातर समय अन्य Svelte डेवलपर्स
00:32:36के साथ ही बिताता हूँ।
00:32:38तो चाहे यह सुनने में कितना भी अजीब लगे, कहीं भी जाना शानदार है।
00:32:43लेकिन यूरोप वाकई बहुत अच्छा है।
00:32:46तो वहां कहीं भी
00:32:48ऐसी जगह है जहां मैं अभी तक नहीं गया हूं और जाना चाहूंगा।
00:32:51तो मुझे विदेश कहीं भी जाने का बहाना मिले तो मुझे खुशी होती है।
00:32:56Svelte की दुनिया में एक प्रवृत्ति है
00:33:01कि हर चीज़ के साथ SV प्रीफिक्स लगाया जाता है।
00:33:04तो आप जो भी शब्द
00:33:06या लाइब्रेरी या कॉन्सेप्ट बनाने की कोशिश कर रहे हैं,
00:33:08आप उसके आगे बस SV लगा देते हैं।
00:33:11और मुझे लगता है कि अगर हम वाकई उस पर ध्यान दें,
00:33:12तो हमारा सम्मेलन स्वालबार्ड (Svalbard) में होगा।
00:33:15बढ़िया।
00:33:20जो कि एक— नार्वेजियन द्वीप समूह है।
00:33:23क्या आपने अभी-अभी इसे गूगल किया?
00:33:27वास्तव में पिछले दिनों बातचीत में इसका ज़िक्र आया था।
00:33:31हाँ, अचानक ही।
00:33:35हाँ।
00:33:38तो अगर मैं पूरी तरह से सपना देख सकूँ, तो मुझे लगता है कि मेरा पसंदीदा स्थान
00:33:41वास्तव में एक नाव पर होगा।
00:33:45बस समुद्र के बीच में।
00:33:47अच्छा मौसम हो।
00:33:49और बस, पता नहीं, एक नाव पर तीन दिन बिताएं।
00:33:52वह बहुत अच्छा होगा।
00:33:55ऊपर बताए गए सभी विकल्प प्यारे लग रहे हैं।
00:33:57और अगला Svelte Summit जब भी होगा, मैं उसके लिए बहुत उत्साहित हूँ।
00:34:00और समुदाय और कार्यक्रमों की बात करें तो,
00:34:03हमारे पास एक सवाल है कि लोग
00:34:05Svelte के साथ कैसे जुड़ सकते हैं, कोई कार्यक्रम या सामुदायिक
00:34:07अवसर हैं?
00:34:11हर समय कार्यक्रम होते रहते हैं।
00:34:13यदि आप sveltesociety.dev पर जाते हैं, तो आप
00:34:15कार्यक्रमों का कैलेंडर देख सकते हैं।
00:34:16और जुड़ने के बेहतरीन तरीकों पर बहुत सारे संसाधन भी हैं,
00:34:19खासकर यदि आपके क्षेत्र में
00:34:22कुछ नहीं हो रहा है और आप Svelte Society का
00:34:25एक चैप्टर शुरू करने में रुचि रखते हैं, तो sveltesociety.dev
00:34:28जानकारी प्राप्त करने की सही जगह है।
00:34:33हाँ, और इसके अलावा, अगर आप बिल्कुल नए हैं, तो डिस्कॉर्ड (Discord) में आएं
00:34:36और बस अलग-अलग चैनलों में नमस्ते कहें।
00:34:41विभिन्न चैप्टर्स या स्थानीय समूहों के लिए
00:34:47समर्पित चैनल भी हैं।
00:34:49तो ज्यादातर, वे संबंधित भाषाओं में
00:34:55अन्य डिस्कॉर्ड चैनलों के संदर्भ हैं।
00:34:57उदाहरण के लिए, एक जर्मन Svelte Society डिस्कॉर्ड
00:35:00चैनल भी है।
00:35:01तो हाँ, बस डिस्कॉर्ड चैनल में आएं,
00:35:06और आप वहां से आगे बढ़ सकते हैं।
00:35:08और वैसे, Svelte से संबंधित चैनल
00:35:12भी समय बिताने के लिए एक अच्छी जगह है।
00:35:16हाँ, Svelte के लोग बहुत प्यारे हैं।
00:35:18तो हाँ, उन्हें ज़रूर देखें।
00:35:22हमारे पास AI से संबंधित एक और सवाल है।
00:35:24मुझे पता है, एलियट, आपने इस पर बात की थी।
00:35:26तो किसी ने पूछा है, फ्रेमवर्क्स को एजेंट/AI दुनिया के
00:35:29अनुकूल होते देखना बहुत अच्छा है।
00:35:31मैं उत्सुक हूँ कि क्या आपके पास एजेंटों द्वारा Svelte को डिफॉल्ट के रूप में चुनने के कोई आंकड़े हैं।
00:35:36नहीं, वास्तव में नहीं।
00:35:37हम शायद v0 जैसी किसी चीज़ के माध्यम से
00:35:44इसका कुछ संकेत प्राप्त करने
00:35:46में सक्षम हो सकते हैं, जहाँ हम इस तरह की टेलीमेट्री देखते हैं।
00:35:49लेकिन सामान्य तौर पर Svelte के—
00:35:53मेरा मतलब है Svelte के— जो लोग Svelte पर काम करते हैं,
00:35:57उन्होंने चीजों पर टेलीमेट्री डेटा इकट्ठा करने के प्रति
00:36:01काफी नकारात्मक दृष्टिकोण अपनाया है।
00:36:06तो हमारे पास जो भी डेटा है,
00:36:08वह वही है जो सार्वजनिक रूप से उपलब्ध है।
00:36:10इसलिए हम NPM डाउनलोड ट्रेंड्स को देख सकते हैं, जो
00:36:14मुझे लगता है कि अभी किसी अजीब कारण से बहुत तेजी से ऊपर जा रहे हैं।
00:36:18तो शायद उन्हें बिल्कुल सच न मानें।
00:36:20हाँ, चिंता मत करो।
00:36:22लेकिन हाँ, हम निजता के कारणों से अपने उपयोगकर्ताओं
00:36:25का कोई डेटा इकट्ठा नहीं करते हैं।
00:36:27हम आपकी मशीनों पर उस तरह की घुसपैठ नहीं करना चाहते।
00:36:30तो हमें जो डेटा मिलता है वह सार्वजनिक रूप से उपलब्ध है
00:36:35और शायद Vercel के कुछ चैनलों के ज़रिए कुछ उपयोगी जानकारी मिल जाए।
00:36:43अनुभव के आधार पर कहें तो, अगर आप LLMs से पूछें कि क्या चुनना चाहिए,
00:36:46सबसे अच्छा क्या है, तो Svelte का ज़िक्र अक्सर आता है।
00:36:51तो यह कम से कम अच्छी बात है।
00:36:53लेकिन क्या इसका मतलब वाकई Svelte चुनना है,
00:36:56अगर आप अपने प्रॉम्प्ट में इसे स्पष्ट नहीं करते, तो यह एक अलग सवाल है।
00:37:01हाँ, यह बहुत दिलचस्प है।
00:37:03एक बार जब आप उन्हें यह सोचने के लिए प्रेरित करते हैं कि आदर्श टूल क्या है,
00:37:06तो वे अक्सर Svelte कहेंगे।
00:37:08लेकिन अगर आप यह नहीं कहते कि "मैं चाहता हूँ कि आप इस फ्रेमवर्क का उपयोग करें"
00:37:11या "मैं चाहता हूँ कि आप सबसे अच्छे फ्रेमवर्क का उपयोग करें,"
00:37:12सिर्फ "मेरे लिए एक ऐप बनाओ" कहें, तो वे आमतौर पर React को ही चुनेंगे।
00:37:17और इसे बदलने के लिए हम बहुत कुछ नहीं कर सकते।
00:37:21इसलिए हमारा ध्यान इस बात पर रहा है कि
00:37:23जो टीमें Svelte चुनती हैं,
00:37:27उन्हें बेहतरीन अनुभव मिले।
00:37:29और एजेंट्स (AI) के पास डॉक्यूमेंटेशन समझने और
00:37:31गलतियों को पकड़ने की सबसे अच्छी क्षमता हो।
00:37:36हाँ, और जैसा कि पोर्टल-थीम वाले ब्लॉग और Potato Cannon
00:37:42वेबसाइट से पता चलता है, वे कॉन्टेक्स्ट और
00:37:46MCP वगैरह को संभालने में काफी माहिर हो रहे हैं।
00:37:50तो हाँ, अब आप इसके साथ बहुत तेज़ी से काफी आगे बढ़ सकते हैं।
00:37:56बढ़िया।
00:37:57हाँ, आप जो काम कर रहे हैं उसे देखना सुखद है
00:37:58और साथ ही इंसानों और एजेंट्स दोनों तरह के
00:38:01दर्शकों की ज़रूरतों का ख्याल रखना भी बेहतरीन है।
00:38:04और हमारे पास Svelte फीचर्स पर
00:38:06कुछ और विशिष्ट प्रश्न हैं।
00:38:08तो एक सवाल है, क्या मार्कअप में एक ही रिमोट फंक्शन को
00:38:11बार-बार कॉल करना सही है,
00:38:14या हमें स्क्रिप्ट टैग में सिर्फ एक रेफरेंस रखना चाहिए?
00:38:17हाँ, यह बिल्कुल सही है।
00:38:20आप अभी इसी पर काम कर रहे हैं, तो आप ही बताइए।
00:38:24रिच को अभी लाइव क्वेरीज़ पर काम करने से जो चीज़ रोक रही है,
00:38:26उसका संबंध असल में इसी सवाल से है।
00:38:29जी हाँ, एक ही रिमोट फंक्शन को कई बार कॉल करना
00:38:35और अलग-अलग जगहों पर उसे बार-बार रेफरेंस देना
00:38:39पूरी तरह से ठीक है।
00:38:41जब आप रिमोट फंक्शन्स का उपयोग कर रहे हों,
00:38:44तो क्वेरीज़ के लिए आपका मानसिक मॉडल यह होना चाहिए कि
00:38:46जब मैं किसी आर्ग्यूमेंट के साथ क्वेरी कॉल करता हूँ,
00:38:50तो मुझे उस क्वेरी का एक रेफरेंस मिल रहा है,
00:38:54और क्वेरी खुद डेटा से अलग होती है।
00:38:57इसलिए अगर मैं ऐप में कहीं भी ID 1 के साथ 'getUser' कॉल करता हूँ,
00:39:04तो मुझे हर जगह उस क्वेरी का
00:39:07एक ही इंस्टेंस मिलेगा।
00:39:08तो आपके क्वेरी कॉल्स पूरे ऐप में डुप्लिकेट नहीं होते,
00:39:11ताकि आर्ग्यूमेंट्स के हर सेट के लिए अधिकतम एक ही कॉल हो।
00:39:16अलग आर्ग्यूमेंट्स अलग परिणाम देते हैं।
00:39:19समान आर्ग्यूमेंट्स समान क्वेरी उत्पन्न करते हैं।
00:39:21वे पूरे ऐप में डिडुप्लिकेटेड (अद्वितीय) होते हैं।
00:39:24अभी इसमें कुछ अजीब दिक्कतें हैं,
00:39:28और पिछले कुछ हफ़्तों से मैं उन्हीं को ठीक करने,
00:39:33नियमबद्ध करने और उन्हें थोड़ा
00:39:37ज़्यादा स्पष्ट बनाने पर काम कर रहा हूँ।
00:39:39और उम्मीद है कि वह जल्द ही आ जाएगा।
00:39:41लेकिन हाँ, बहुत छोटा जवाब है - हाँ।
00:39:44बस उन्हें कॉल करें और जहाँ चाहें इस्तेमाल करें।
00:39:47हाँ, और इसे थोड़ा विस्तार देते हुए,
00:39:48हम 'await' कीवर्ड वगैरह के साथ यह सारा काम
00:39:51सिर्फ इसलिए कर रहे हैं क्योंकि
00:39:54हम चाहते हैं कि जहाँ तक संभव हो, आप अपने कंपोनेंट की
00:39:57ज़रूरत की हर चीज़ को
00:39:59उसी कंपोनेंट के अंदर व्यक्त कर सकें।
00:40:00तो यहाँ ऊपर डेटा फेच करने और फिर उसे सावधानी से
00:40:04नीचे उन सभी चीज़ों तक पहुँचाने के दिन,
00:40:08अब खत्म होने वाले हैं।
00:40:10लेकिन इसके हिस्से के रूप में, अगर आपको क्वेरी का रेफरेंस रखना पड़े
00:40:14और फिर उसे हर जगह पास करना पड़े, तो फिर
00:40:15हमने वाकई अपना लक्ष्य हासिल नहीं किया।
00:40:17तो विचार यह है कि अगर इस कंपोनेंट को कुछ डेटा चाहिए
00:40:20और इस कंपोनेंट को भी वही डेटा चाहिए,
00:40:22तो उन्हें एक-दूसरे से बात करने की ज़रूरत नहीं है।
00:40:24वे बस क्वेरी इंटरफेस के माध्यम से
00:40:28सिस्टम से डेटा मांग सकते हैं।
00:40:29और सिस्टम यह सुनिश्चित करने की ज़िम्मेदारी लेता है
00:40:32कि इसके लिए केवल एक ही रिक्वेस्ट भेजी जाए
00:40:34और उन दोनों कंपोनेंट्स के बीच डेटा में
00:40:36कोई विसंगति न हो।
00:40:40बहुत बढ़िया, धन्यवाद।
00:40:42और यह सवाल एनिमेशन और ट्रांज़िशन API पर है।
00:40:47क्या इसके लिए किसी बड़े बदलाव की योजना है?
00:40:49वे कहते हैं, मुझे अटैचमेंट के ज़रिए साइज़ के बीच
00:40:54फ्लिप पास करना थोड़ा मुश्किल लगा।
00:40:57मैं इस पर काम करने के लिए बहुत बेताब हूँ।
00:41:02लंबे समय से इसका इंतज़ार कर रहा हूँ।
00:41:04करने के लिए बहुत कुछ है।
00:41:06हाँ, बाकी सब चीज़ें रास्ते में आ रही हैं।
00:41:09अनिवार्य रूप से, जब हमने अटैचमेंट्स API डिज़ाइन किया था,
00:41:12तो बिल्कुल यही बात हमारे ध्यान में थी।
00:41:16ट्रांज़िशन और एनिमेशन, वे अच्छे हैं।
00:41:19और वे फ्रेमवर्क में इस तरह
00:41:21एकीकृत हैं कि कुछ चीज़ें करना बहुत आसान हो जाता है।
00:41:25लेकिन जैसे ही आप एक सीमा पार करते हैं,
00:41:28वे वाकई आपकी और मदद नहीं कर पाते।
00:41:29आपको उन पर ज़्यादा प्रोग्रामेटिक नियंत्रण की ज़रूरत होती है।
00:41:33और वहीं ट्रांज़िशन और एनिमेशन को
00:41:36परिभाषित करने के लिए एक प्रोग्रामेटिक API उपयोगी होगा।
00:41:42और अटैचमेंट्स API—
00:41:46विचार यह है कि भविष्य में अटैचमेंट्स API,
00:41:49एक ऐसे API के साथ मिलकर जो कहे,
00:41:52हे, जब मुझे DOM से हटाया जाए,
00:41:54तो एक मिनट रुकिए जब तक मैं थोड़ा फेड आउट
00:41:58या थोड़ा हलचल (shimmy) जैसा कुछ कर सकूँ।
00:42:00और उसके बाद आप मुझे DOM से हटा सकते हैं।
00:42:02यही वो चीज़ है जो इन अधिक उन्नत ट्रांज़िशन
00:42:06एनिमेशन परिदृश्यों को सक्षम करेगी।
00:42:09लेकिन हम अभी वहाँ नहीं पहुँचे हैं।
00:42:11इसकी योजना है।
00:42:12यह ज़रूर होगा।
00:42:13लेकिन मैं आपको इसकी कोई समय-सीमा नहीं दे सकता।
00:42:16निश्चित रूप से अगले दो या तीन महीनों में तो नहीं।
00:42:22अच्छा है।
00:42:22कम से कम यह हमारी नज़रों में तो है।
00:42:24हमें यह सुनकर खुशी हुई।
00:42:25बढ़िया।
00:42:25मुझे लगता है कि हमारे पास एक और सवाल के लिए समय है।
00:42:27तो, आखिरी सवाल।
00:42:29Svelte एग्नॉस्टिक (तटस्थ) है, लेकिन टीम के सदस्यों का
00:42:32पसंदीदा डेटाबेस कौन सा है?
00:42:34एक और राउंड-रॉबिन करते हैं।
00:42:37SQLite.
00:42:37मैंने अतीत में एक त्वरित प्रयोग के लिए Neon का उपयोग किया था,
00:42:47और वह वाकई बहुत अच्छा था।
00:42:50हाँ, SQLite अच्छा है।
00:42:53मैं असल में इन 'सिंक इंजनों' के
00:42:59बेहतरीन और व्यापक रूप से उपलब्ध होने का इंतज़ार कर रहा हूँ ताकि
00:43:02हम 'लोकल फर्स्ट' चीज़ें कर सकें।
00:43:05और फिर—सच कहूँ तो मुझे फर्क नहीं पड़ता,
00:43:09कि मैं बैकएंड में कौन सा डेटाबेस इस्तेमाल कर रहा हूँ।
00:43:13हाँ, मुझे लगता है—
00:43:15मुझे नहीं पता कि मेरा वाकई कोई एक पसंदीदा है क्योंकि—
00:43:18जब आप सिर्फ पूछते हैं, "आपका पसंदीदा डेटाबेस क्या है,"
00:43:22तो बहुत सारे अलग-अलग विकल्प होते हैं क्योंकि
00:43:24वे अलग-अलग काम बेहतर तरीके से करते हैं।
00:43:26इसलिए आपको वाकई यह पता होना चाहिए कि आप
00:43:28कोई डेटाबेस क्यों चुन रहे हैं, तभी आप किसी को पसंदीदा कह सकते हैं।
00:43:31मुझे 'लोकल फर्स्ट सिंक इंजन' के लिए Convex जैसी चीज़ें
00:43:36बहुत दिलचस्प लगती हैं।
00:43:38मुझे लगता है कि वे बहुत शानदार हैं और उनमें
00:43:41बहुत सारी अच्छी चीज़ें हैं।
00:43:42सामान्य कार्यों के लिए मेरा पसंदीदा डेटाबेस
00:43:45असल में Dynamo है।
00:43:47इसकी आदत डालने में थोड़ी झुंझलाहट हो सकती है,
00:43:49लेकिन यह बहुत तेज़ है।
00:43:51और यह बहुत अच्छी तरह से स्केल करता है।
00:43:55लेकिन मुझे SQL भी बहुत पसंद है।
00:43:58तो अगर मैं किसी प्रोजेक्ट के लिए SQL डेटाबेस का उपयोग कर सकता हूँ,
00:44:04तो मैं शायद उसी के साथ जाऊँगा क्योंकि मेरे करियर की शुरुआत
00:44:07डेटा एनालिटिक्स वगैरह से हुई थी।
00:44:09तो SQL वो चीज़ है जिसके साथ मैं बड़ा हुआ हूँ, मूल रूप से।
00:44:14तो हाँ, मुझे नहीं पता कि मेरा कोई एक पसंदीदा है,
00:44:16लेकिन मैं इसके बारे में इस तरह सोचता हूँ।
00:44:20बढ़िया।
00:44:20और हमारे पास पाओलो की एक टिप्पणी है।
00:44:23मुझे पता है कि आपने पहले उनका नाम लिया था।
00:44:24वे कहते हैं, "मुझे बहुत सारे रंग दिख रहे हैं।"
00:44:27क्या हमें यकीन है कि रिच, साइमन और इलियट Vercel के लिए काम करते हैं?
00:44:32मेरी कुर्सी काली है।
00:44:35हाँ, लेकिन पाओलो मुझ पर Vercel हुडी पहनने का दबाव डाल रहे थे,
00:44:38लेकिन यहाँ बहुत गर्मी है।
00:44:40ठीक है दोस्तों।
00:44:45लेकिन वह मेरी अलमारी में है, और मैं उसे
00:44:48तब निकालता हूँ जब दिन ठंडे होते हैं।
00:44:51यही हम सुनना चाहते थे, ब्रांड का प्रतिनिधित्व करना।
00:44:54अद्भुत।
00:44:55हाँ, मैं Svelte के भविष्य के लिए बहुत उत्साहित हूँ
00:44:58और हमारे साथ जुड़ने के लिए
00:45:01और पर्दे के पीछे आपकी कड़ी मेहनत के लिए वाकई आपकी सराहना करता हूँ।
00:45:03Svelte टीम के बाकी सदस्यों को भी
00:45:05बहुत-बहुत धन्यवाद जो लाइव में नहीं हैं, Svelte मेंटेनर्स।
00:45:09और शानदार Svelte कम्युनिटी को भी बहुत-बहुत सलाम।
00:45:11हाँ, आज हमारे साथ जुड़ने के लिए रिच, साइमन, इलियट का धन्यवाद।
00:45:16धन्यवाद।
00:45:17बाय।
00:45:18यह मेरा सौभाग्य है।
00:45:20ठीक है, और दर्शकों, अभी कहीं मत जाइए
00:45:23क्योंकि समापन से पहले, हमारे पास एक बहुत ही खास मेहमान है।
00:45:26हमारे पास Vercel एजुकेशन टीम से ईव हैं।
00:45:31नमस्ते।
00:45:32कैसा चल रहा है?
00:45:33नमस्ते, ईव।
00:45:33अच्छा है।
00:45:34आप कैसी हैं?
00:45:35मैं बहुत अच्छी हूँ।
00:45:36धन्यवाद।
00:45:36यह हर तरफ दिग्गजों (GOATs) की एक शानदार टीम है।
00:45:40हाँ।
00:45:41क्या शानदार अनुभव है।
00:45:44ठीक है।
00:45:45क्या आप हमें 'अकादमी' के बारे में
00:45:47और आप क्या नया ला रही हैं, उसके बारे में और बताना चाहेंगी?
00:45:49हाँ, मुझे बहुत खुशी होगी।
00:45:50अगर आपने नहीं सुना है, तो Vercel की अब एक अकादमी है।
00:45:55हमारे पास 11 कोर्स हैं जो लाइव हैं।
00:45:57उनमें से सबसे नया कोर्स आज लाइव हुआ है,
00:46:03जो है—तड़-तड़ा—'Svelte on Vercel' कोर्स।
00:46:10तो इसे पूरा करने में
00:46:13पूरी टीम ने बहुत मदद की है।
00:46:15इसमें हम एक 'स्की अलर्ट' ऐप बनाते हैं।
00:46:18तो अगर आप एक स्कीअर—
00:46:23ओह, हाँ।
00:46:25मेरी स्क्रीन शेयर हो रही है, मैं उसे दिखाती हूँ।
00:46:28बहुत बढ़िया।
00:46:29ओह, यह रहा।
00:46:30ये रहा।
00:46:31तो यह करना ज़्यादा रोमांचक है।
00:46:34Svelte on Vercel कोर्स लाइव है।
00:46:36इसमें आप एक स्की अलर्ट्स ऐप बनाने जा रहे हैं।
00:46:40आज की दुनिया में, अगर आप इस साल स्कीइंग कर रहे हैं,
00:46:43तो आप जानते हैं कि यह सीज़न काफी कठिन रहा है।
00:46:47बर्फ बहुत कम है।
00:46:48हर जगह बहुत गर्मी रही है।
00:46:50इसलिए यह बहुत ज़रूरी है कि आपको सूचित किया जाए
00:46:52कि स्कीइंग के लिए अच्छा दिन कब है।
00:46:54और इसलिए यह एक ऐप है जिसे हम पूरे कोर्स के दौरान
00:46:58इसी मकसद के लिए बनाते हैं।
00:46:59तो हमारे पास कई तरह के—आप विभिन्न स्थितियों के लिए
00:47:02अलग-अलग अलर्ट लिख सकते हैं ताकि
00:47:06जब स्कीइंग का दिन हो, तो आप वहाँ मौजूद हों,
00:47:10और आप उस संभावित दिन को बर्बाद न करें।
00:47:13तो हाँ, यह कोर्स Svelte के बारे में है।
00:47:17आप इसे Vercel पर कैसे डिप्लॉय करते हैं?
00:47:19आप AI SDK का उपयोग कैसे करते हैं?
00:47:21आप वर्कफ्लो का उपयोग कैसे करते हैं?
00:47:23और रास्ते में प्रोडक्शन के लिए कुछ टिप्स भी।
00:47:27अद्भुत।
00:47:28बेहतरीन।
00:47:29मैं निश्चित रूप से 'बनाकर सीखने' में गहरा विश्वास रखती हूँ।
00:47:31तो हाँ, यह शानदार है।
00:47:33बहुत-बहुत धन्यवाद।
00:47:34और हम कोर्स का एक लिंक भी
00:47:36लाइव रिसोर्सेज में जोड़ देंगे।
00:47:38तो हाँ, आज हमारे साथ जुड़ने के लिए धन्यवाद, ईव।
00:47:41अद्भुत।
00:47:41बहुत-बहुत धन्यवाद।
00:47:42ठीक है।
00:47:46और इसी के साथ हम अपने लाइव सेशन के अंत में पहुँच गए हैं।
00:47:49हमारे साथ समय बिताने के लिए
00:47:51हमारी कम्युनिटी का बहुत-बहुत धन्यवाद।
00:47:52मैं झूठ नहीं बोलूँगा, आज चैट में बहुत हलचल थी।
00:47:54तो यह देखकर बहुत अच्छा लगा।
00:47:56हाँ, हमें उम्मीद है कि आपने इसका आनंद लिया होगा।
00:47:58और रिच हैरिस के शब्दों में, "Svelte जीने का एक तरीका है।"
00:48:02तो जाइए और इसका अनुभव लीजिए।
00:48:03जाइए और Svelte के साथ नई चीज़ें बनाइए।
00:48:05अगर आप हमारे भविष्य के कम्युनिटी सेशन्स में शामिल होना चाहते हैं,
00:48:08तो आप हमारे कम्युनिटी प्लेटफॉर्म
00:48:11[community.vercel.com/live](https://community.vercel.com/live) पर सारी जानकारी पा सकते हैं।
00:48:13हाँ, आप सभी का धन्यवाद।
00:48:15फिर मिलते हैं।
00:48:16बाय।