how use gradle build
यह ट्यूटोरियल ग्रूव में प्रोजेक्ट और राइट टास्क बनाने के लिए ग्रैड का उपयोग करने का तरीका बताता है और आईडीई और बिल्ड कमांड दोनों का उपयोग करके ग्रैडल रैपर के साथ कार्य चलाता है:
समकालीन डेवलपर्स होने के नाते, हमें Shift-Left, DevOps, Continuous Integration (CI), Continuous Delivery (CD), आदि जैसे कुछ शब्दों के बारे में जानना होगा।
इस ट्यूटोरियल में, हम ग्रूवी और ग्रैडल के बारे में सीखेंगे और ग्रैड बिल्ड कार्यों को बनाने और क्रमशः प्रोजेक्ट बनाने के लिए उनके उपयोग के साथ। ग्रूवी एक बहुआयामी भाषा है - संक्षिप्त, परिचित और जावा प्लेटफॉर्म के लिए वाक्यविन्यास का उपयोग करने के लिए आसान है और इसका उपयोग निर्माण और स्वचालन कार्यों को लिखने के लिए किया जा सकता है।
यह भाषा ग्रैडल के साथ अच्छी तरह से चमकती है, जो सीआई / सीडी पाइपलाइन में एक डेवलपर के वर्कफ़्लो को एकीकृत करने में उपयोग किए जाने वाले लोकप्रिय उपकरणों में से एक है।
यह ट्यूटोरियल जावा डेवलपर्स के लिए ग्रेडल की व्याख्या करता है। इसमें यह विवरण है कि यह कैसे काम करता है; किसी भी प्लेटफ़ॉर्म पर तैनाती के लिए जावा में लिखे सोर्स कोड के निर्माण के लिए ग्रैडल का उपयोग कैसे करें।
यह IDE के अधिकांश के लिए प्लगइन्स प्रदान करता है और सॉफ़्टवेयर को तेज़ी से वितरित करना आसान बनाता है। उपर्युक्त अवधारणाओं को सीखने की यात्रा के साथ हमें अनुसरण करने के लिए, यह बहुत अच्छा होगा यदि आप किसी के भंडार को देखते हैं नमूना परियोजना कि हमने गितूब पर बनाया है।
आप क्या सीखेंगे:
- सिस्टम आवश्यकताएँ और आवश्यकताएँ
- ग्रूवी में अपना पहला कार्यक्रम लिखें - हैलो वर्ल्ड
- ग्रूवी भाषा की मूल बातें
- ग्रेड क्या है?
- ग्रेड के उपयोग की विशेषताएं और लाभ
- एक ग्रेड प्रोजेक्ट बनाएँ
- स्वचालित क्रिया निर्माण गिट क्रियाओं का उपयोग करना
- निष्कर्ष
- अनुशंसित पाठ
सिस्टम आवश्यकताएँ और आवश्यकताएँ
इस खंड में एक IDE - IntelliJ IDEA और Java डेवलपमेंट किट (JDK) स्थापित करने का चरण शामिल है। ग्रूवी भाषा में मूल अवधारणाओं पर विवरण हमारे पहले निर्माण कार्य को लिखने के लिए गति प्राप्त करने के लिए एक कोड स्निपेट की मदद से समझाया गया है।
IntelliJ आईडिया स्थापित करें
जावा प्रोजेक्ट बनाने के लिए एक आईडीई (एकीकृत विकास पर्यावरण) स्थापित करें। हम इस ट्यूटोरियल के लिए IntelliJ IDEA (कम्युनिटी एडिशन) का उपयोग करते हैं। विंडोज / मैक / लिनक्स पर डाउनलोड करने और इसे स्थापित करने के लिए संबंधित लिंक का पालन करें।
खिड़कियाँ: यहां क्लिक करें
मैक: यहां क्लिक करें
लिनक्स: यहां क्लिक करें
स्थापना और सेटअप JDK
JDK डाउनलोड करें । चरण को पूरा करने के लिए किसी RedHat खाते के लिए साइन अप करने की आवश्यकता है। एक बार जब यह डाउनलोड हो जाए, तो इसे अपने विंडोज पीसी पर इंस्टॉल करने के लिए सेटअप को चलाएं। एक बार यह स्थापित हो जाने के बाद, कमांड प्रॉम्प्ट खोलें और यह देखने के लिए कि क्या यह काम कर रहा है या नहीं, नीचे दी गई कमांड्स को चलाएं।
नीचे दिए गए आदेशों का उपयोग यह जानने के लिए किया जा सकता है कि JDK कहाँ स्थापित है या नहीं।
D: softwaretestinghelp> जहां जावा
D: softwaretestinghelp> जहाँ javac
अब हम अपने IDE के साथ स्थापित JDK को कॉन्फ़िगर करते हैं। IntelliJ IDEA में प्लेटफ़ॉर्म सेटिंग्स खोलें और नीचे दिखाए गए चरणों का पालन करके JDK जोड़ें। कृपया याद रखें कि यह JDK उन सभी परियोजनाओं पर लागू होता है जिन्हें आप इस IDE का उपयोग करके काम करेंगे।
चरण 1: छवि में दिखाए अनुसार प्लेटफ़ॉर्म सेटिंग्स के तहत डाउनलोड किए गए JDK को SDK में जोड़ें।
चरण 2: अद्यतन परियोजना एसडीके प्रोजेक्ट सेटिंग्स में जैसा कि छवियों में दिखाया गया है
Android के लिए youtube से mp4 कनवर्टर ऐप
कॉन्फ़िगर की गई सेटिंग्स को लागू करने के बाद, कृपया आईडीई में छोटे हरे हथौड़ा आइकन का उपयोग करके परियोजना का निर्माण करें।
एक उदाहरण परियोजना सेट करें
परियोजना के साथ शुरू करने के दो तरीके हैं। हम या तो जीथब प्रोजेक्ट पेज से प्रोजेक्ट जिप फाइल को डाउनलोड कर सकते हैं और इसे इंटेलीज आईडीईए में ग्रैडल प्रोजेक्ट के रूप में आयात कर सकते हैं या जीथब रिपोजिटरी से प्रोजेक्ट को क्लोन कर सकते हैं।
गिथब से परियोजना को क्लोन करने के लिए कदम नीचे दिए गए हैं:
अपने डेस्कटॉप पर शॉर्टकट आइकन को डबल-क्लिक करके आईडीई खोलें। कृपया पहले से खोले गए किसी भी मौजूदा प्रोजेक्ट को बंद करें। कृपया याद रखें कि Git प्लगइन डिफ़ॉल्ट रूप से IntelliJ IDEA के साथ बंडल किया गया है। इस प्रकार, कृपया इसे स्थापित न करें।
चरण 1: IDE के वेलकम स्क्रीन पर क्लिक करें संस्करण नियंत्रण से प्राप्त करें ।
चरण 2: प्रदान करना जीथब रिपॉजिटरी यूआरएल और क्लोन पर क्लिक करें।
चरण 3: पर क्लिक करें हाँ जब चेकआउट फ़ाइल संकेत दिखाया जाता है।
चरण 4: आउटपुट को समाप्त करने और जांचने के लिए पृष्ठभूमि प्रक्रिया की प्रतीक्षा करें।
चरण 5: एक्सप्लोरर में प्रोजेक्ट संरचना को देखने के लिए तह प्रोजेक्ट फलक पर क्लिक करें।
डबस्मैश देखने के लिए सबसे अच्छी वेबसाइट
ग्रूवी में अपना पहला कार्यक्रम लिखें - हैलो वर्ल्ड
प्रोजेक्ट में, ग्रेडल बिल्ड फ़ाइल खोलें जिसे कॉल किया गया है build.gradle अपने आईडीई के फ़ाइल एक्सप्लोरर का उपयोग करके और फ़ाइल के अंत में नीचे दिए गए कोड को लिखें।
task helloWorld { doLast { println('Hello, World!') } }
अब प्ले टास्क आइकन के संदर्भ मेनू पर रन पर क्लिक करके पहला कार्य चलाएँ और आउटपुट का निरीक्षण करें छापना ग्रूवी की इनबिल्ट विधि। हम प्रयोग कर सकते हैं 'CTRL + SHIFT + F10' भी। (कृपया नीचे दी गई छवि देखें)
आउटपुट को ऊपर दिखाए गए के समान कुछ दिखना चाहिए।
ग्रूवी भाषा की मूल बातें
अब जब आप सीख चुके हैं कि ग्रूवी में अपना पहला कार्यक्रम कैसे बनाया जाए, तो हम भाषा की मूल बातों में तेजी ला सकते हैं और सीख सकते हैं। यह खंड अवधारणाओं को कवर करेगा जैसे चर नाम, वाक्यविन्यास, ऑपरेटर, विधियाँ / कार्य / क्लोज़र इत्यादि।
हम उन अवधारणाओं को भी कवर करेंगे जो परियोजना के दृष्टिकोण से अधिक प्रासंगिक हैं जैसे कि एक परियोजना के गुणों तक पहुंच और दूसरे में लिखे गए क्लोजर / फ़ंक्शन को आयात करना। build.gradle फ़ाइल।
भाषा की विभिन्न अवधारणाओं के बारे में जानने के लिए नीचे दिए गए कोड स्निपेट और टिप्पणियों को देखें। यह कोड स्निपेट ग्रूवी की अवधारणाओं पर त्वरित वॉकथ्रू और संशोधन के लिए काफी उपयोगी है।
// Primer on Groovy def var1 = 'var1' // A string variable declared and assigned outside a closure/function def var2 = 4 // An integer // Both of the above given variables are of type Object task task1 { doLast { println('Hello, World!') // A single line comment /* A Multi line comment Print a stored variable. Strings can be concatenated. Parentheses are not mandatory */ println var1 + ' is my variable ' println var1 + 2 // adding a digit to a string - No string conversion required. // operators for strings and numbers println(var2 + 3) def var3 = var2 + 2 // type of var3 is integer and var2 and var1 are Objects println(var3 * var2) // multiplication print(var3 / var2 + '
') // division prints float and observe the concatenation of new line '
' def mylist = (1, 2, 3) // creating a list // for loop on list items for (def i=0; i <= mylist.size() -1 ; i++){ // loop using for println(mylist(i)) } // While loop on list items def i=0 while (i<=mylist.size() - 1) { println(mylist(i)) i++ } } }
दोनों छोरों में, ध्यान दें कि सूची में एक शून्य-आधारित सूचकांक है। आगे के विवरण में उल्लेख किया गया है ग्रूवी ।
अब ग्रेडल के बारे में जानें और देखें कि कैसे एक टास्क चलाया जाए।
ग्रेड क्या है?
यह एक बिल्ड ऑटोमेशन सिस्टम है। यह कई भाषाओं में लिखित निर्माण परियोजनाओं का समर्थन करता है। इस ट्यूटोरियल में, हम जावा का उपयोग कर रहे हैं। यह खंड कमांड लाइन से ग्रैडल कमांड चलाने की विधि बताता है। हम अपने नमूना परियोजना के निर्माण, परीक्षण और तैनाती के लिए इसका उपयोग करने जा रहे हैं।
ग्रेड की निर्भरता
आप पहले से ही जान सकते हैं कि किसी भी ओपन-सोर्स सॉफ़्टवेयर प्रोजेक्ट में निर्भरता स्थापित करना कितना महत्वपूर्ण है। ग्रैड सार्वजनिक रिपॉजिटरी जैसे मावेन, जेसेटर और गूगल पर निर्भरता की खोज कर सकता है।
इन रिपॉजिटरी का उल्लेख करें build.gradle नीचे दिखाए अनुसार फाइल करें:
repositories { mavenCentral() jcenter() google() }
अब नीचे दिखाए अनुसार संकलन समय निर्भरता का उल्लेख करें।
dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' // https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59' }
उल्लेखित निर्भरताएँ स्वचालित रूप से डाउनलोड की जाती हैं और इसमें ग्रेड प्लगइन द्वारा परियोजना की कक्षा में शामिल किया गया है। आईडीई के प्रोजेक्ट एक्सप्लोरर में डाउनलोड की गई निर्भरता की जांच करें।
नीचे दिए गए आदेश का उपयोग करके ग्रेड संस्करण की जाँच करें।
ग्रेड के उपयोग की विशेषताएं और लाभ
नीचे सूचीबद्ध कुछ विशेषताएं हैं जो एक संगठन में DevOps के एक भाग के रूप में ग्रेड के आसान मानकीकरण और गोद लेने में मदद करती हैं।
- यह Groovy नामक एक DSL आधारित भाषा का उपयोग करता है। एक्सएमएल की तुलना में ग्रूवी में निर्माण कार्यों को लिखना आसान है। इसके अलावा, एक्सएमएल बोझिल हैं और पढ़ने में आसान नहीं हैं। हालांकि, ग्रूवी सीखना और पढ़ना आसान है।
- यह मोनोलिथिक और माइक्रोसर्विस आर्किटेक्चर दोनों पर आधारित परियोजनाओं के लिए निर्माण बिल्ड का समर्थन करता है।
- इसका उपयोग कई कलाकृतियों जैसे दस्तावेज़, एपीआई, बनाने के लिए किया जा सकता है। कार्यान्वयन जार आदि, और उन्हें उसी बिल्ड के हिस्से के रूप में प्रकाशित करें।
- यह काफी शक्तिशाली भाषा निर्माण है, जो अन्योन्याश्रित कार्यों का निर्माण करने के लिए एक भाग के रूप में कार्य करता है।
कई और विशेषताएं हैं जो उच्च गुणवत्ता के साथ सॉफ़्टवेयर की पैकेजिंग करते समय टीमों को अपने बिल्ड को अनुकूलित करने में सक्षम बनाती हैं। सुविधाओं पर अधिक जानकारी दी गई है यहां ।
अब हम आगे बढ़ते हैं और ग्रैड बिल्ड कार्य चलाते हैं।
एक ग्रेड कार्य चलाएं
टास्क 1 नामक बिल्ड टास्क को चलाने के लिए प्रोजेक्ट की रूट डाइरेक्टरी के तहत नीचे दी गई कमांड को रन करें।
D: softwaretestinghelp gitrepo>। Gradlew.bat task1
नीचे दिखाए अनुसार आउटपुट की जाँच करें।
एक ग्रेड प्रोजेक्ट बनाएँ
इस खंड में, हम परियोजना संरचना के माध्यम से जाएंगे, इसके विभिन्न घटकों को समझेंगे और परियोजना का निर्माण करेंगे।
नमूना परियोजना की संरचना
चर्चा के तहत नमूना परियोजना एक है src दो मुख्य निर्देशिकाओं (फ़ोल्डर) के साथ फ़ोल्डर। मुख्य और परीक्षण। मुख्य निर्देशिका में जावा स्रोत कोड है, जो नमस्कारवर्ल्ड नामक एक नमूना कमांड-लाइन एप्लिकेशन से संबंधित है।
हैलोवर्ल्ड क्लास में दो विधियाँ हैं अर्थात् मुख्य विधि, जो दी गई दलीलों की सूची में से पहली दलील और एक विधि 1 विधि को प्रिंट करती है, जो कि प्रथम तर्क को दूसरे तर्क के पहले 3 वर्णों के साथ संक्षिप्त करती है।
परीक्षण फ़ोल्डर में एक JUnit परीक्षण वर्ग है जो हमारे अनुप्रयोग में उपर्युक्त विधियों का परीक्षण करने के लिए परीक्षण करता है। कृपया इन परीक्षणों के स्रोत कोड की जाँच करें।
सैंपल प्रोजेक्ट में ग्रैडल रैपर फ़ोल्डर भी है। अपने निर्माण कार्यों को चलाते समय आपको ग्रेडेड रैपर संस्करण का उपयोग करना चाहिए।
ग्रैडल का संस्करण बहुत महत्वपूर्ण है और जब भी डेवलपर्स अपना कोड साझा करना चाहते हैं, तो परियोजना फाइलों के साथ एक आवरण साझा करना हमेशा फायदेमंद होता है। यह बहुत समय बचाता है क्योंकि रैपर ग्रेडेल के घोषित संस्करण को स्वचालित रूप से डाउनलोड करता है।
बिल्ड कार्य के उदाहरण
कोड का दस्तावेजीकरण एक डेवलपर की सबसे महत्वपूर्ण विशेषताओं में से एक माना जाता है। प्रलेखन को साझा करना एक सामान्य अभ्यास है एचटीएमएल प्रारूप। ग्रेडल उत्पन्न करने में मदद करता है javadocs में एचटीएमएल प्रारूप परियोजनाएं। हम नीचे दिए गए कमांड का उपयोग करके javadocs बना सकते हैं।
D: softwaretestinghelp gitrepo>। Gradlew.bat javadoc
कृपया जाँच करें जावाडोक परियोजना में निर्माण निर्देशिका के तहत और आपको नीचे दी गई छवि में दिखाए गए परिणामों के समान दिखना चाहिए।
कृपया का पालन करें जावाडोक जावा डॉक्यूमेंट लिखते समय इस लिंक पर दिए गए स्टाइल गाइड।
अब टेस्ट संसाधनों के लिए दस्तावेज बनाने के लिए बिल्ड.ग्रेडल फ़ाइल को बदलें।
नीचे दिखाए गए स्निपेट के साथ build.gradle फ़ाइल को अपडेट करें
javadoc { classpath += sourceSets.test.compileClasspath source += sourceSets.test.allJava }
मुख्य और साथ ही परीक्षण स्रोतों के लिए प्रलेखन उत्पन्न करने के लिए फिर से ग्रैडल जेवाडॉक कमांड चलाएं।
ग्रैड बिल्ड कार्यों पर अधिक जानकारी देखी जा सकती है यहां ।
अधिक ग्रेडल कार्यों को जानने की आज्ञा नीचे दी गई है।
D:softwaretestinghelpgitrepo> .gradlew.bat tasks
अब प्रोजेक्ट बनाते हैं।
ग्रैडल प्रोजेक्ट बनाएं
कमांड लाइन से नमूना परियोजना का निर्माण करने के लिए, नीचे दिए गए चरणों का पालन करें:
- प्रोजेक्ट पथ बदलें।
- प्रोजेक्ट बनाने के लिए नीचे दिए गए कमांड का उपयोग करें।
हालाँकि, आप IDE में छोटे हथौड़ा आइकन पर क्लिक करके भी प्रोजेक्ट बना सकते हैं।
D:softwaretestinghelpgitrepo> .gradlew.bat build
बिल्ड कमांड का आउटपुट नीचे दिखाया गया है।
बिल्ड रन परिणाम में विफलता इस ट्यूटोरियल के उद्देश्य के लिए जानबूझकर है और इसे उपेक्षित किया जा सकता है।
यदि आप इस बिल्ड के हिस्से के रूप में चलाए गए परीक्षणों के परिणाम देखना चाहते हैं, तो आप रिपोर्ट फ़ोल्डर की जांच कर सकते हैं जैसा कि नीचे दी गई छवि में दिखाया गया है।
परिणामों की जाँच करने के लिए आप एक ब्राउज़र में index.html फ़ाइल खोल सकते हैं।
स्वचालित क्रिया निर्माण गिट क्रियाओं का उपयोग करना
डेवलपर्स के रूप में, हमें अपनी परियोजनाओं को बनाने, परीक्षण करने और अपनी परियोजनाओं को प्रकाशित करने के लिए, ऑपरेशन टीम के साथ सहयोग करने के लिए स्थापित करना होगा।
इसके अलावा, अपने आप से एक वातावरण स्थापित करना एक कठिन काम हो सकता है और हमारी उत्पादकता पर प्रभाव पड़ सकता है। देवओप्स की एक नई संस्कृति के आगमन के साथ, हमें अपनी विफलताओं को कम करने के लिए अपने वर्कफ़्लोज़ को स्वचालित करने की आवश्यकता है, जो कि विफलताओं से उत्पन्न होती हैं।
इस बीच, डेवलपर्स के साथ सॉफ्टवेयर प्रोजेक्ट, जिन्हें भौगोलिक रूप से वितरित किया जाता है, को SCM सॉफ्टवेयर जैसे Git की सहायता से सहयोग की आवश्यकता होती है।
Github Actions को धन्यवाद। अब आप किसी भी Github भंडार पर एक अतिरिक्त टैब देख सकते हैं जिसे आप बनाते हैं। आप अपने विकास वर्कफ़्लोज़ बना सकते हैं और उन्हें किसी भी गितूब इवेंट पर चला सकते हैं जैसे कि पुश, रिलीज़, पुल_ क्रेक, आदि। यह डेवलपर / समुदाय को सीआई / सीडी की शक्ति देने के मामले में क्रांतिकारी है।
पर Git क्रियाएँ विन्यास खोलें .github / workflows / gradle.yml परियोजना में फ़ाइल। ध्यान दें कि हम अपनी परियोजना को विंडोज पर विकसित कर रहे हैं और गिट क्रियाओं में हम इसे ubuntu_latest पर परीक्षण कर रहे हैं।
Xbox एक के लिए सबसे अच्छा आभासी वास्तविकता हेडसेट
Github Actions में समुदाय-संचालित वर्कफ़्लोज़ भी हैं जिनका हम लाभ उठा सकते हैं और अपनी परियोजना को ग्राहकों तक पहुँचाने की गति बढ़ा सकते हैं। अपने निर्माण की स्थिति के आधार पर आप यह तय कर सकते हैं कि परियोजना को जारी करना है या नहीं। हमने नमूना परियोजना के भंडार के पूर्व-विमोचन का उदाहरण दिया है।
एक वैकल्पिक व्यायाम
नीचे दिए गए कुछ चरणों को आप आजमा सकते हैं।
- Github में एक नया भंडार बनाएँ।
- Gradle_sample प्रोजेक्ट में नए रिमोट का संदर्भ जोड़ें।
- नए रिपॉजिटरी में परिवर्तन प्रकाशित करने के लिए कमांड का उपयोग करें।
- Git Actions के तहत अपने ग्रेडल बिल्ड के परिणामों को देखें।
निष्कर्ष
ग्रैड का इस्तेमाल लिंक्डइन, एडोब, नेटफ्लिक्स, आदि जैसी कंपनियों में टीमों द्वारा किया जा रहा है और यह मास्टर करने के लिए एक महान उपकरण है। ग्रेड के साथ काम करना अन्य निर्माण साधनों जैसे मावेन और एंट में काम करने की तुलना में बहुत आसान है।
इन दिनों यह सब गति और चपलता के बारे में है। लर्निंग ग्रैडल और ग्रूवी आपको अधिक आसानी से DevOps सिद्धांतों को अपनाने में मदद कर सकते हैं।
संक्षेप में, हमने एक ग्रैडल प्रोजेक्ट के निर्माण पर अवधारणाओं को कवर किया, ग्रूवी में निर्माण कार्यों को लिखने पर और आईडीई और ग्रैड बिल्ड कमांड दोनों का उपयोग करके विकास के दौरान ग्रैडल आवरण के साथ चल रहे कार्यों पर।
हमने ubuntu_latest जैसे एक अलग लक्ष्य प्लेटफ़ॉर्म पर निर्माण का भी परीक्षण किया। हम इसे एक निर्माण की स्थिति के साथ उपयोग कर सकते हैं, जो एक प्रोजेक्ट रिलीज़ से संबंधित निर्णय लेने में मदद कर सकता है।
यदि आप सेलेनियम वेबड्राइवर का उपयोग करके ऑटोमेशन इंजीनियर हैं, तो ग्रेडल के साथ सेलेनियम प्रोजेक्ट को कॉन्फ़िगर करने और स्थापित करने के बारे में हमारे आगामी ट्यूटोरियल को पढ़ने में विफल नहीं हैं।
आशा है कि इस ट्यूटोरियल ने ग्रेडल कॉन्सेप्ट्स पर आपके ज्ञान को समृद्ध किया होगा !!
अनुशंसित पाठ
- ग्रैडल बनाम मावेन और मावेन प्लगइन्स
- सेलेनियम के साथ ग्रैडल प्रोजेक्ट कैसे बनाएं
- स्पॉक ट्यूटोरियल: स्पॉक एंड ग्रूवी के साथ परीक्षण
- SoapUI में मूल ग्रूवी लिपि को कैसे लिखें - SoapUi Tutorial # 6
- SoapUI Groovy Script में गुणों का उपयोग कैसे करें - SoapUI Tutorial # 7
- उन्नत सोपीयू ग्रूवी स्क्रिप्टिंग अवधारणाओं को जानें - सोपुई ट्यूटोरियल # 9
- SoapUI Groovy लिपियों में अपवाद को कैसे हैंडल करें - SoapUI Tutorial # 11
- सेलेनियम के लिए मावेन बिल्ड ऑटोमेशन टूल और मावेन प्रोजेक्ट सेटअप का उपयोग - सेलेनियम ट्यूटोरियल # 24