वर्ग पुरालेख: SharePoint ऑनलाइन

रोमांचक घोषणा दुष्ट

घोषणाएं कर सच में मेरी बात नहीं है, लेकिन इस बार, मैं वास्तव में और वास्तव में बस शुरू की स्लैलम बिग एप्पल SharePoint साइट के बारे में उत्साहित हूँ। 

मैं स्लैलम परामर्श पर काम और पोर्टल्स का प्रबंधन & सहयोग अभ्यास।  बिग एप्पल साइट न्यूयॉर्क में मेरे यहाँ अभ्यास के लिए "मेरे" साइट है।  मैं लंबे समय इनमें से एक चाहता हूँ. मुझे यकीन है कि कई हूँ सपा समर्थक है इसी तरह कुछ के लिए कामना की है।  कितनी बार हम अपनी कंपनी की सार्वजनिक स्थल पर ध्यान दिया है, या ग्राहकों में से एक और उन्हें यह से बाहर है और सिर्फ जानने के निर्माण और बधाई देने कि वे इसे पर सपा का निर्माण होता देखा?  हम सभी जानते हैं कि सपा इस तरह की बात पर बहुत अच्छा है, लेकिन यह बहुत आम नहीं है। 

अच्छी तरह से, अंत में मेरे लिए सिर्फ सही-संरेखित संसारों SP ऑनलाइन वास्तव में सस्ती है, मैं सही टीम और यह वास्तव में क्या करने के लिए पर्याप्त समय था.

यह एक अद्भुत यात्रा का शुभारंभ करने के लिए प्राप्त करने के लिए गया था और और कि कुछ वहाँ साइट पर साझा किया है.

सब के बारे में यह यहाँ पढ़ें और यदि आप इसके पीछे विवरण में रुचि रखते हैं, मैं इसके बारे में बात करने के लिए खुश से अधिक कर रहा हूँ.

यहाँ की आधिकारिक घोषणा कड़ी है: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</अंत>

कैसे करना है: इकाई परीक्षण और परीक्षण कवरेज QUnit.js और Blanket.js के साथ एक कार्यालय के लिए कॉन्फ़िगर करें 365 SharePoint अनुप्रयोग

परिचय

मैं इकाई परीक्षण तलाश रहा है और कवरेज के लिए जावास्क्रिप्ट परीक्षण के रूप में मैं कार्यालय में SharePoint ऑनलाइन के लिए एक नया SharePoint app पर काम 365 सुइट।  मुझे करने के लिए स्पष्ट अनुसंधान रास्तों का नेतृत्व किया Qunit.js और उस के बाद का अधिकार, करने के लिए Blanket.js.

QUnit मुझे ऊपर इकाई परीक्षण सेट करें और उन्हें में मॉड्यूल समूह हैं।  एक मॉड्यूल अभी संबंधित परीक्षणों को व्यवस्थित करने के लिए एक सरल तरीका है. (मुझे यकीन नहीं है मैं यह उद्देश्य के रूप में उपयोग कर रहा हूँ, लेकिन यह मेरे लिए अभी तक मैं इस तरह अभी तक परिभाषित किया परीक्षणों के छोटे सेट के साथ कार्य करना है).

Blanket.js Qunit के साथ एकीकृत करता है और यह मेरे जावास्क्रिप्ट के वास्तविक लाइनों है कि थे- और अधिक महत्वपूर्ण बात है-वास्तव में परीक्षण चलाने के पाठ्यक्रम में क्रियान्वित थे नहीं दिखाएगा।  इस 'कवरेज'-लाइनों है कि निष्पादित परीक्षण द्वारा कवर कर रहे हैं जबकि अन्य नहीं हैं.

अप अच्छा परीक्षण मामलों की स्थापना और कवरेज देखने के बीच, हम कि हमारे कोड दोष छिपा है जोखिम को कम कर सकते हैं।  गुड टाइम्स.

Qunit

मान लें आप अपने दृश्य स्टूडियो है प्रोजेक्ट सेट अप, जावास्क्रिप्ट पैकेज से डाउनलोड करके प्रारंभ करें http://qunitjs.com.  जावास्क्रिप्ट और इसी सीएसएस करने के लिए अपने समाधान जोड़ें।  मेरा इस तरह दिखता है:

image

चित्रा 1

जैसा कि आप देख सकते हैं, मैं इस्तेमाल कर रहा था 1.13.0 समय पर मैंने लिखा है इस ब्लॉग पोस्ट. डाउनलोड करें और सीएसएस फ़ाइल जोड़ने के लिए मत भूलना.

कि जिस तरह से बाहर, टेस्ट हार्नेस के कुछ प्रकार बनाने के लिए और Qunit बिट्स को संदर्भित करने के लिए अगले कदम है।  मैं तो मैं "के रूप में दिखाया गया QuizUtil_test.html" नामक एक HTML पृष्ठ बनाया "QuizUtil.js" नामक एक स्क्रिप्ट फ़ाइल में एक गुच्छा कार्यों का परीक्षण कर रहा हूँ:

image चित्रा 2

यहाँ कोड है:

<!DOCTYPE html>
<html xmlns"http =://www.w3.org/ 1999/xhtml">
<सिर>
    <शीर्षक>Qunit साथ QuizUtil टेस्ट</शीर्षक>
    <लिंक रिलायंस एनर्जी"stylesheet =" href="../CSS/qunit-1.13.0.css" />
    <स्क्रिप्ट प्रकारपाठ/जावास्क्रिप्ट"=" एसआरसी="QuizUtil.js" डेटा-कवर></स्क्रिप्ट>
    <स्क्रिप्ट प्रकार ="पाठ/जावास्क्रिप्ट" src ="qunit-1.13.0.js"></स्क्रिप्ट>
    <स्क्रिप्ट प्रकार ="पाठ/जावास्क्रिप्ट" src ="blanket.min.js"></स्क्रिप्ट>

    <स्क्रिप्ट>
        मॉड्यूल("getIDFromLookup");
        टेस्ट("QuizUtil getIDFromLookupField", समारोह () {
            var goodValue = "1;#पॉल Galvin";

            बराबर(getIDFromLookupField(goodValue) + 1, 2), "की ID [" + goodValue + "] + 1 2 होना चाहिए";
            बराबर(getIDFromLookupField(अपरिभाषित), अपरिभाषित, "अपरिभाषित इनपुट तर्क अपरिभाषित परिणाम लौट जाना चाहिए।");
            बराबर(getIDFromLookupField(""), अपरिभाषित, "खाली इनपुट तर्क कोई अनिर्धारित मान वापस आ जाना चाहिए।");
            बराबर(getIDFromLookupField("gobbledigood3-thq;dkvn एडीए;skfja sdjfbvubvqrubqer0873407t534piutheqw;वी. एन."), अपरिभाषित,"हमेशा एक परिणाम परिवर्तनीय एक पूर्णांक के लिए वापस चाहिए");
            बराबर(getIDFromLookupField("2;#कुछ अन्य व्यक्ति"), "2", 'की जाँच [2;#कुछ अन्य व्यक्ति].");
            बराबर(getIDFromLookupField("9834524;#लंबे मान"), "9834524", "बड़े मान परीक्षण।");
            notEqual(getIDFromLookupField("5;#किसी को भी", 6), 6, "एक notEqual परीक्षण (5 इसके बराबर नहीं है 6 इस नमूने के लिए: [5;#किसी को भी]");

        });

        मॉड्यूल("htmlEscape");
        टेस्ट("QuizUtil htmlEscape()", समारोह () {
            बराबर(htmlEscape("<"), "&लेफ्टिनेंट;", "ऑपरेटर की तुलना में एक कम से बचने ('<')");
            बराबर(htmlEscape("<div वर्ग =  "someclass">कुछ पाठ</div>"), "&लेफ्टिनेंट;div वर्ग =&quot;someclass&quot;&जी. टी.;कुछ पाठ&लेफ्टिनेंट;/div&जी. टी.;", "और अधिक जटिल परीक्षण स्ट्रिंग।");
        });

        मॉड्यूल("getDateAsCaml");
        टेस्ट("QuizUtil getDateAsCaml()", समारोह () {
            बराबर(getDateAsCaml(नई दिनांक("12/31/2013")), "2013-12-31T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [12/31/2013]");
            बराबर(getDateAsCaml(नई दिनांक("01/05/2014")), "2014-01-05T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [01/05/2014]");
            बराबर(getDateAsCaml(नई दिनांक("01/31/2014")), "2014-01-31T:00:00:00", "हार्ड कोडित दिनांक का परीक्षण: [01/31/2014]");
            बराबर(getTodayAsCaml(), getDateAsCaml(नई दिनांक()), "getTodayAsCaml() getDateAsCaml बराबर होना चाहिए(नई तारीख())");
            बराबर(getDateAsCaml("बकवास मान"), अपरिभाषित, "एक बकवास मान की तारीख करने के लिए प्रयास करें।");
            बराबर(getDateAsCaml(अपरिभाषित), अपरिभाषित, "की तारीख करने के लिए प्रयास करें [अपरिभाषित] दिनांक।");
        });

        मॉड्यूल("getParameterByName");
        टेस्ट("QuizUtil getParameterByName (से क्वेरी स्ट्रिंग)", समारोह () {
            बराबर(getParameterByName(अपरिभाषित), अपरिभाषित, "करने के लिए कोशिश अपरिभाषित पैरामीटर अपरिभाषित लौट जाना चाहिए।");
            बराबर(getParameterByName("मौजूद नहीं है"), अपरिभाषित, "जब हम जानते हैं कि पैरामीटर मौजूद नहीं पैरामीटर मान प्राप्त करने के लिए प्रयास करें।");

        });

        मॉड्यूल("कुकीज़");
        टेस्ट("QuizUtil विभिन्न कुकी कार्य।", समारोह () {
            बराबर(setCookie(टेस्ट"", "1", -1), getCookieValue(टेस्ट""), "जाओ मैं सेट कुकी काम करना चाहिए।");
            बराबर(setCookie("anycookie", "1", -1), सच है, "एक मान्य खाना पकाने की स्थापना 'सच' लौट जाना चाहिए।");
            बराबर(setCookie("पागल कुकी का नाम !@#$%"%\^&*(()?/><.,", "1", -1), सच है, "एक बुरा कुकी नाम की स्थापना 'झूठी' लौट जाना चाहिए।");
            बराबर(setCookie(अपरिभाषित, "1", -1), अपरिभाषित, "कुकी नाम के रूप में अनिर्धारित गुजर रहा।");
            बराबर(getCookieValue("मौजूद नहीं है"), "", "कुकी टेस्ट मौजूद नहीं है।");
        });

    </स्क्रिप्ट>
</सिर>
<शरीर>
    <div आईडी"qunit ="></div>
    <div आईडी= "qunit-स्थिरता"></div>

</शरीर>
</html>

वहाँ कई चीज़ें यहाँ क्या हो रहा हैं:

  1. मेरे कोड को संदर्भित (QuizUtil.js)
  2. Qunity.js संदर्भित
  3. कुछ मॉड्यूल को परिभाषित करना (getIDFromLookup, कुकीज़, और दूसरों)
  4. रखकर एक <div> जिसका आईडी "qunit" है.

तब, मैं सिर्फ इस पृष्ठ ऊपर खींचने के लिए और आप इस तरह कुछ मिल:

image

चित्रा 3

यदि आप शीर्ष के पार देखो, आपके पास कुछ विकल्प हैं, जिनमें से दो रोचक हैं:

  • परीक्षण पारित छुपाएँ: बहुत स्पष्ट है।  आपकी आँख बस समस्या क्षेत्रों और अव्यवस्था की नहीं एक बहुत कुछ देखने में मदद कर सकते हैं.
  • मॉड्यूल: (ड्रॉप डाउन): यह परीक्षण आप चाहते हैं की सिर्फ उन समूहों के लिए नीचे परीक्षण को फ़िल्टर करेंगे.

परीक्षण के रूप में खुद-कुछ टिप्पणियाँ:

  • यह कि आप ऐसी है कि यह पहली जगह में testable है अपने कोड लिखने के लिए की आवश्यकता है कहे बिना जाता है।  उपकरण का उपयोग करके उस अनुशासन को लागू मदद कर सकते हैं. उदाहरण के लिए, मैं एक समारोह "getTodayAsCaml कहा जाता था()”.  यह बहुत testable नहीं के बाद से यह कोई इनपुट तर्क लेता है और यह समानता के लिए परीक्षण करने के लिए, हम लगातार परीक्षण कोड वर्तमान दिनांक को प्रतिबिंबित करने के लिए अद्यतन करने के लिए की आवश्यकता होगी।  मैं इसे एक डेटा इनपुट पैरामीटर जोड़ने तो वर्तमान दिनांक जब मैं CAML स्वरूप में आज की तिथि चाहते हैं गुजर द्वारा refactored.
  • Qunit फ्रेमवर्क दस्तावेज़ अपने स्वयं के परीक्षण और यह बहुत मजबूत लगता है।  यह समानता के लिए परीक्षण की तरह सरल बातें कर सकते हैं और भी ajax शैली कॉल के लिए समर्थन किया है (दोनों "असली" या ठट्ठा अपने पसंदीदा mocker का उपयोग कर).
  • इस प्रक्रिया के माध्यम से जा रहे भी बढ़त मामले – क्या "अनिर्धारित" के साथ होता है के माध्यम से लगता है कि करने के लिए आप बलों या null एक समारोह में पारित कर दिया गया है।  यह मर बाहर इन परिदृश्यों का परीक्षण करने के लिए सरल बनाता है।  अच्छी चीजें.

Blanket.js के साथ कवरेज

Blanket.js Qunit ट्रैकिंग कोड के वास्तविक लाइनों है कि आपके परीक्षण चलाने के पाठ्यक्रम के दौरान निष्पादित द्वारा पूरक।  यह अधिकार तो भले ही यह एक पूरी अलग app है Qunit में एकीकृत, यह अच्छी तरह से खेलता-यह वास्तव में लग रहा है जैसे कि यह एक निर्बाध app है.

इस क्रिया में blanket.js है:

image चित्रा 4

image

चित्रा 5

(आप वास्तव में ऊपर "कवरेज को सक्षम करें" चेकबॉक्स पर क्लिक करने के लिए है [आंकड़ा देखें 3] यह सक्षम करने के लिए।)

चित्रा में हाइलाइट की गई रेखाएँ 5 मेरा परीक्षण के किसी भी द्वारा निष्पादित नहीं किया गया है, तो मैं एक परीक्षा है कि यदि मैं पूर्ण कवरेज चाहते हैं निष्पादित करने के लिए उन्हें कारण ईजाद करना करने की आवश्यकता.

इन चरणों का पालन करके काम कर blanket.js हो जाओ:

  1. इसे से डाउनलोड करें http://blanketjs.org/.
  2. यह आपके प्रोजेक्ट के लिए जोड़ें
  3. अपने टेस्ट हार्नेस पृष्ठ अद्यतन करें (मेरे मामले में QuizUtil_test.html) इस प्रकार:
    1. संदर्भ कोड
    2. सजाने के लिए अपने <स्क्रिप्ट> इस तरह का संदर्भ:
    <स्क्रिप्ट प्रकारपाठ/जावास्क्रिप्ट"=" एसआरसी="QuizUtil.js" डेटा-कवर></स्क्रिप्ट>

Blanket.js को "डेटा-आवरण" विशेषता ऊपर उठाता है और अपने जादू करता है।  यह Qunit में हुक, "कवरेज को सक्षम करें" विकल्प जोड़ने के लिए यूआई अद्यतन करता है और voila!

सारांश (TL; डॉ.)

लिखने के अपने परीक्षण के मामलों के लिए Qunit का उपयोग करें.

  • यह डाउनलोड करें
  • यह आपके प्रोजेक्ट के लिए जोड़ें
  • लिखने के एक परीक्षण हार्नेस पृष्ठ
  • अपने परीक्षण बनाएँ
    • Testable किया जा करने के लिए अपने कोड के कुछ refactor
    • रचनात्मक होना!  पागल के बारे में सोचो, असंभव परिदृश्यों और उन्हें वैसे भी परीक्षण.

कवरेज सुनिश्चित करने के लिए blanket.js का उपयोग करें

  • सुनिश्चित करें कि Qunit कार्य कर रहा है
  • Blanket.js डाउनलोड और यह आपके प्रोजेक्ट के लिए जोड़ें
  • यह अपने टेस्ट हार्नेस पेज जोड़ें:
    • Blanket.js के लिए एक संदर्भ जोड़ें
    • एक "डेटा-आवरण" विशेषता को जोड़ने अपने <स्क्रिप्ट> टैग
  • भागो अपने Qunit परीक्षण.

मैं कभी इस से पहले के किसी भी किया था और कुछ मामूली सामान घंटे की एक मुट्ठी भर में काम कर रहा था। 

खुश परीक्षण!

</अंत>

undefinedमेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

बीपीओ 2010 और "Superset”

मैं एक के पढ़ रहा था इन सुंदर सामान्य ब्ला की तरह लेखों पर बीपीओ (माइक्रोसॉफ्ट के विनिमय और क् लाउड में SharePoint) और शुक्र है अंत करने के लिए के माध्यम से waded:

अन्य निकट अवधि डिलिवरेबल्स के मामले में, Microsoft है कि बीपीओ वी. अगला देशी PowerShell PowerShell संस्करण पर एक PowerShell समापन बिंदु बनाने के द्वारा पटकथा में प्रदान करने के लिए 2. प्रमाणीकरण के माध्यम से ऑनलाइन IDs किया जाएगा, एक एकल क्रेडेंशियल के साथ दोनों PowerShell और पोर्टल के लिए इस्तेमाल किया जा करने के लिए सक्षम होने के नाते।कीन execs TechEd पर इस हफ्ते व्यक्त करता रहा है अन्य Microsoft संदेश गूंज रहा: बादल क्षमताओं, समय के साथ, जाएगा  क्या उपलब्ध ऑन-प्रिमाइसेस है एक superset बन. वर्तमान में, रिवर्स सच है, और प्रत्येक उत्पाद के सॉफ्टवेयर समकक्ष में उपलब्ध कार्यों के एक सबसेट माइक्रोसॉफ्ट के ऑनलाइन सेवाओं की पेशकश.

धारणा है कि क् लाउड से ऑन-प्रिमाइस मेरे लिए नया है और अधिक क्षमता प्रदान करेगा. मुझे आश्चर्य है कि कैसे सच कि अंत में जा रहा है।  यह मेरे लिए counterintuitive लगता है।  मैं पूरी तरह से मिलता है कि कंपनियों के एक बहुत कुछ करने के लिए क्लाउड सामान कदम होगा विचार (या बादल में बंद शुरू) लेकिन मैं आम तौर पर लगता है कि वे करते हैं यह क्योंकि प्रो (आसान व्यवस्थापक, SLAs, आदि) अब तक विपक्ष पल्ला झुकना (सीमित कार्यक्षमता). 

मैं एक मुश्किल समय विश्वास करेगा कि बादल प्रसाद पर ूेम क्षमताओं से अधिक का एक छोटा सा आ रहा है।  बहु किरायेदार कठिन है और लगता है जैसे यह समझौता अच्छा है SLA और उपयोग की आसानी प्रदान करने के लिए बाध्य करना पड़ेगा...

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

</अंत>

मेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin

SharePoint ऑनलाइन और InfoPath

मैं पिछले व्यक्ति को यह एहसास होना कर सकते हैं, SharePoint ऑनलाइन लेकिन (जो मैं अक्सर सुना है लोग कहते हैं एक महिमा WSS है) InfoPath Forms Services का समर्थन करता है।  कि बहुत शक्तिशाली है सामान, बीपीओ $1.99 के लिए/month की तरह कुछ है कि आईपी एफएस एक काई उद्यम की सुविधा है और विशेष रूप से विचार 10,000 उपयोगकर्ताओं को।  शायद यह थोड़ा कि अधिक से अधिक है.

तो, SharePoint ऑनलाइन आसान परिभाषा खारिज करती है।  यह इस उद्यम सुविधा गया है, कोई अज्ञात पहुँच लेकिन (जो भी WSS का समर्थन करता है).  आप खोज के साथ कुछ रोचक सामान कर सकते हैं (MOSS-ish, के बाद से आप साइट स्तर scopes को परिभाषित कर सकते हैं), लेकिन अगर तुम एसएसपी के लिए उपयोग की जरूरत है, तुम ऐसा नहीं कर सकते।  आप इस उत्पाद के साथ रात भर "एक ओर और दूसरे पर" खेल खेल सकते हैं

Microsoft अगले कुछ महीनों में सपा ऑनलाइन का एक नया संस्करण जारी करने के कारण है।  मुझे आश्चर्य है क्या अजीब संकर यह होने जा रहा है?

</अंत>

मेरे ब्लॉग के लिए सदस्यता लें.

मेरे चहचहाना पर का पालन करें http://www.twitter.com/pagalvin