कैसे लोगों को एक खोज स्कोप के रूप में निर्दिष्ट करने के लिए / सामग्री स्रोत SharePoint का उपयोग करना 2013 बाकी एपीआई

मैं SharePoint के साथ काम करने के लिए कारण था 2013 खोज एपीआई के माध्यम से पहली बार के लिए आराम. मैं लोगों के लिए खोज करना चाहता था, नहीं दस्तावेजों. चाबी यहाँ है कि सीखने आप इसका GUID के द्वारा सामग्री स्रोत निर्दिष्ट करें (या कम से कम इस मामले में). निम्नलिखित jQuery स्निपेट दिखाता है कैसे:

    loadExpertsAsync: समारोह() {

        jQuery.support.cors = सच है;

        $.ajax({
            यूआरएल: यह.CreateFullApiUrl() +
                "?querytext 'पोर्टल' =&sourceid 'b09a7990-05ea-4af9-81ef-edfab16c4e31' =" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,कौशल,AboutMe,रुचियाँ,पद नाम,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            विधि: "हो जाओ",
            शीर्ष लेख: { "स्वीकार करें": "आवेदन/json; odata वाचाल =" },
            कैश: झूठी,
            सफलता: समारोह (परिणाम) {

मेरे मामले में, मैं एपीआई के खिलाफ SharePoint ऑनलाइन चल रहा हूँ. वह GUID मिल करने के लिए, मैं इन चरणों का पालन:

  1. SharePoint व्यवस्थापक केंद्र तक पहुँच
  2. "खोज से बाएँ हाथ नेविगेशन" का चयन करें
  3. "परिणाम स्रोतों का प्रबंधन करें" का चयन करें
  4. "स्थानीय लोगों के परिणाम" का चयन करें
  5. URL पर देखो.

मेरा URL की तरह कुछ देखा:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Sourceid पैरामीटर क्या मेरे लिए काम किया है.

(मैं समझता हूँ कि sourceid वास्तव में एक तरह की स्थायी बात सपा के साथ हो सकता, but I’ll always check anyway 🙂 ).

</अंत>

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

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

उदाहरण SharePoint बाकी कॉल्स

यहाँ नमूना बाकी कॉल है कि मेरे लिए काम करते हैं और आपकी रूचि मदद कर सकता का एक सेट है. के रूप में 02/2014, there are two examples 🙂

  1. इसके नाम में रिक्त स्थान के साथ एक स्तंभ का संदर्भ
  2. एक बहु चयन स्तंभ संदर्भ
  3. बाकी के जरिए लोगों को खोजें

 

मैं इस समय गुजरता के रूप में जोड़ें करेंगे.

यहाँ हैं कुछ उपयोगी रूप में अच्छी तरह से मैंने पाया है स्याही:

इसके नाम में रिक्त स्थान के साथ एक स्तंभ का संदर्भ

मैं के साथ एक स्तंभ "ब्लॉग के लेखक" नामक एक कस्टम सूची बनाएँ (ब्लॉग और लेखक के बीच रिक्ति).

उस स्तंभ को संदर्भित करने के लिए $select है:

image

बस अंतरिक्ष "_x0020_" के साथ बदलें. हम internets भर में कई उदाहरणों में _x0020_ देखें और बाकी कोई अलग है.

यदि आप ऐसा नहीं करते, तुम इस तरह एक त्रुटि संदेश प्राप्त करने के लिए उत्तरदायी हो:

अभिव्यक्ति “ब्लॉग लेखक” मान्य नहीं है.

काफी आसान है.

एक बहु चयन लुकअप स्तंभ संदर्भ

सेट अप:

  1. नामांकित श्रेणियाँ एक कस्टम सूची बनाएँ.
  2. कुछ श्रेणियाँ जोड़ें. मैं श्रेणियाँ thusly जोड़ा:image
  3. MockBlog नामक एक और कस्टम सूची बनाएँ और श्रेणियों के रूप में एक बहु चयन सूची स्तंभ जोड़ें (या आप कैसे रोल अगर उस साइट स्तंभ है).

आपकी Mockblog सूची में कुछ आइटम जोड़ें और तुम तैयार हो.

JQuery का उपयोग कर एक Ajax शैली फोन कुछ इस तरह दिखेगा:

serverUrl   = "/_api/वेब/सूचियाँ/GetByTitle('MockBlog')/आइटम" +
             "?$का चयन करें शीर्षक =,श्रेणियाँ/शीर्षक,Blog_x0020_Author/शीर्षक" + 
             "&$विस्तृत करें = Blog_x0020_Author,श्रेणियाँ";

हम "मेरे शीर्षक सभी श्रेणियों के लिए दे SharePoint बता रहे हैं (श्रेणियाँ/शीर्षक). वास्तविक मान के लिए जाओ शीर्षक द्वारा $विस्तृत करेंआईएनजी श्रेणियाँ सूची." (मेरी शोकहारा paraphrasing शायद बहुत ढीला है, लेकिन यह कैसे मैं यह व्याख्या कर रहा हूँ).

अगर तुम यह जावास्क्रिप्ट और सारंगी पर आउटपुट देखने के लिए का उपयोग कर के माध्यम से कर रहे हैं, तुम कुछ इस तरह बदले में मिल:

 

image

(इसके बाद के संस्करण एक JSON ऑब्जेक्ट है)

बाकी के जरिए लोगों को खोजें

मैं इस बारे में blogged अलग से. स्थानीय लोगों को सामग्री स्रोत का GUID जिसका मूल्य है एक sourceid पैरामीटर निर्दिष्ट करने के लिए कुंजी है. (Scopes कहा जा करने के लिए सामग्री स्रोतों का इस्तेमाल किया और यह सब कुछ मेरे लिए एक गुंजाइश कॉल करने के लिए मेरी-ओह-मेरा इतना मुश्किल नहीं है!).

और अधिक पढ़ें इसके बारे में यहाँ: http://www.mstechblogs.com/paul/?p=10385

 

</अंत>

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

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

त्वरित और आसान: एक SharePoint साइट के आराम का उपयोग कर बनाएँ

कैसे यह करने के लिए उस शो के आसपास संसाधनों का एक बहुत कुछ कर रहे हैं, लेकिन मैं नहीं मिल सकता है एक व्यापक जाने के लिए लिंक, तो यहाँ हम कर रहे हैं.

आप किसी SharePoint साइट में बाकी एपीआई का उपयोग कर बना सकते हैं।  यहाँ है एक पूरी तरह से पके हुए उदाहरण:

<!--
    SiteRequestForm.html: जानकारी एकत्र और उपयोगकर्ता के लिए एक साइट बनाएँ.
-->

<केंद्र>
<तालिका>
    <टी. आर.>
        <td>साइट का नाम:</td>
        <td><इनपुट प्रकार"पाठ =" नाम"SiteName =" आईडी"SiteName =" /></td>
    </टी. आर.>
    <टी. आर.>
        <td colspan= "2">
            <इनपुट प्रकार= "जमा करें" आईडी"CreateSiteButton =" मान= "साइट बनाएँ" />
        </td>
    </टी. आर.>
</तालिका>
</केंद्र>

<स्क्रिप्ट एसआरसी="../Plugins/jquery-1.11.0.min.js"></स्क्रिप्ट>

<स्क्रिप्ट>
var CreateSiteLogicContainer = {

    createSiteData: {
            "पैरामीटर": {
                __metadata: { "प्रकार": 'सपाWebInfoCreationInformation" },
                यूआरएल: "Paultest1",
                शीर्षक: "Paultest1",
                विवरण: "बाकी-बनाया वेब द्वारा पॉल!",
                भाषा: 1033,
                WebTemplate: "अनुसूचित जनजातियों",
                UseUniquePermissions: झूठी
            }
    },

    createSite: समारोह () {

        jQuery.support.cors = सच है;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").वैल();
        
        $.ajax({
            यूआरएल: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            विधि: 'पोस्ट",

            शीर्ष लेख: {
                "स्वीकार करते हैं": आवेदन/json"; odata वाचाल =",
                "सामग्री-प्रकार": आवेदन/json";odata वाचाल =",
                "एक्स-RequestDigest": $("#__REQUESTDIGEST").वैल()
            },

            डेटा: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            सफलता: समारोह () { चेतावनी("सफलता"); },
            त्रुटि: समारोह () { चेतावनी("त्रुटि"); }

        });
    },

    wireUpForm: समारोह () {
        $("#CreateSiteButton").क्लिक करें(समारोह () {
            चेतावनी("के बारे में प्रयास करें और साइट बनाने के लिए।");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</स्क्रिप्ट>

जब सफल, आप इस तरह की प्रतिक्रिया में एक JSON पैकेट प्राप्त:

image

मेरे मुख्य विचारों और इस शामिल से सीखों:

  • इस दृष्टिकोण का उपयोग करता है jQuery.  मेरे मामले में, मेरे jQuery पुस्तकालय में स्थित है "../ plugins. "  आप जो अपने पसंदीदा JQ स्थान को इंगित करने के लिए परिवर्तित करने के लिए चाहता हूँ.
  • आप की प्रतिलिपि बनाएँ और एक पृष्ठ पर सामग्री संपादक वेब पार्ट में उस पूरे टुकड़ा चिपकाएँ कर सकते हैं और यह काम करना चाहिए तो बस ठीक है।  आप API कॉल के अंत बिंदु परिवर्तित करें और सुनिश्चित करें कि आप सही ढंग से JQ को संदर्भित करने के लिए चाहता हूँ.
  • URL अपने एपीआई समाप्तिबिंदु के सापेक्ष है।  मेरे मामले में, यह उप-साइटों के नीचे पैदा कर रही है https://bigapplesharepoint.com
  • तुम एक सामग्री लंबाई प्रदान करने की आवश्यकता नहीं. कुछ ब्लॉग पोस्ट और MSDN दस्तावेज़ का तात्पर्य है कि आप, लेकिन मेरे लिए स्वचालित रूप से हुआ, जो मुझे लगता है $.ajax कॉल द्वारा खुद को संभाला जा रहा है.
  • इस लाइन से बचने के एक "मना" प्रतिसाद करने के लिए आवश्यक है: "एक्स-RequestDigest": $("#__REQUESTDIGEST").वैल().  यह करने के लिए अन्य तरीके हैं, लेकिन यह बहुत अच्छा है।  मैं ब्लॉग है कि यह शॉर्टकट प्रदान करने के लिए लिंक खो दिया है।  एच/टी तुम करने के लिए, रहस्यमय ब्लॉगर!

गुड लक और आशा है कि यह किसी को मदद मिलती है.

</अंत>

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

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

SharePoint त्वरित लॉन्च में रिश्तेदार यूआरएल के साथ कष्टप्रद समस्या पर काबू पाने

मैं दूसरे दिन त्वरित लॉन्च नेविगेशन करने के लिए एक लिंक जोड़ने के लिए चाहता था और SharePoint मुझे बताया:

image

कि शुद्ध पाठ संस्करण है:

सुनिश्चित करें कि URL मान्य है और के साथ या तो मान्य वर्ण शुरू होता है (एक संख्या चिह्न (#) या फ़ॉरवर्ड स्लैश (/)) या कोई मान्य प्रोटोकॉल समर्थित (उदाहरण के लिए, ' http://’, ' https://’, ' फ़ाइल://’, ' एफ़टीपी://’, ' इन्हें मेल करें:’, ' समाचार:’).

"Blech और चेचक!"मैंने कहा.

त्वरित लॉन्च में एक ज्ञात लिंक ढूँढें और उसके व्यवहार को ओवरराइड करने के लिए जावास्क्रिप्ट का उपयोग करने के लिए यह करने के लिए एक workaround है.

इस परीक्षण के लिए, thusly अपने परीक्षण साइट के लिए एक नई लिंक जोड़ने:

image

मैं jQuery का उपयोग. यह हल करने के लिए, कुछ जावास्क्रिप्ट और jQuery कोड इस तरह की एक पंक्ति के साथ और अपने पसंदीदा तकनीक का उपयोग कर पृष्ठ पर जाओ:

 

$(दस्तावेज़).तैयार( समारोह () {

    $("एक:होता है('URL प्रतिस्थापन का परीक्षण')").क्लिक करें(समारोह () { चेतावनी("परिवर्तित क्लिक व्यवहार!"); वापस जाएँ झूठी;});

});

और अपने चाचा बॉब है.

JQuery चयनकर्ता पाता है हर <एक> टैग है कि इसके नाम में "Test URL प्रतिस्थापन" है. आप ढूँढें जो आपके लिंक और इस तरह के आधार पर ट्यून करने के लिए चाहते हो सकता.

.Click(समारोह() ओवरराइड करता है जब उपयोगकर्ता क्लिक किया जो भी SharePoint किया होता. सुनिश्चित करें कि आप "वापसी झूठी" या फिर इसे अपने सामान करना और फिर href बात करने की कोशिश भी करेंगे, जो लगभग निश्चित रूप से अपने लक्ष्य नहीं है.

यह किया गया था और एक SharePoint ऑनलाइन वातावरण में परीक्षण होना चाहिए लेकिन में अच्छी तरह से काम 2010 और इससे पहले भी.

</अंत>

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

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

त्वरित और आसान: SharePoint बाकी केवल रिटर्न कॉल 100 रिकॉर्ड्स

मैं एक सार्वजनिक सामना करना पड़ रहा वेब साइट पर मेरे SharePoint अभ्यास में यहाँ के लिए काम कर रहा है न्यू यार्क और यह जावास्क्रिप्ट और बाकी कॉल्स का एक बहुत का उपयोग करता है सामग्री दिखाएँ.

Mainline विकास के दौरान, मैं बस के साथ एक छोटे डाटासेट बनाएँ 10 या तो में कोई कस्टम सूची और बाकी कॉल मेरे सभी पंक्तियाँ वहाँ से खींच लिया।  एक बार मैं कुछ सौ पंक्तियों के डेटा के लिए अनुमानित वृद्धि दर का परीक्षण करने के लिए है के लिए सूची अप टकरा गया, मैंने पाया कि मैं ठीक हो रही थी 100 पंक्तियाँ मेरे बाकी कॉल पर वापस लौटे.

इस पते के लिए एक बहुत ही साधारण बात है।  मेरे मामले में (और मेरा मानना है कि ज्यादातर मामलों में), डिफ़ॉल्ट SharePoint करने के लिए कहता है बाकी (और संभवतः एक उद्योग मानक के रूप में?) वापस जाएँ 100 पंक्तियाँ।  डिफ़ॉल्ट रूप से अधिक पर लौटने के लिए, अपने फोन पर $top पैरामीटर का उपयोग करें, के रूप में:

/Insights Dev/_api/web/lists/GetByTitle पाने('MockBlog')/आइटम?$का चयन करें = ID,शीर्षक,श्रेणियाँ/शीर्षक,Blog_x0020_Author/शीर्षक,DatePublished,BlogSummary&$विस्तृत करें = Blog_x0020_Author,श्रेणियाँ&$फ़िल्टर =&$शीर्ष = 9999

मैं उठाया 9999 इस मामले में जब से मैं growth-wise पता है कि, वहाँ अभ्यस्त हो अधिक से अधिक 200 या तो पंक्तियाँ एक वर्ष में इस सूची में जोड़ा।  यदि यह छलकती हो जाता है, हम सड़क के नीचे कुछ पेजिंग को लागू कर सकते हैं.

</अंत>

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

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

त्वरित और आसान: "अमान्य URL पैरामीटर का समाधान” lists.asmx में UpdateListItems के साथ समस्या

के द्वारा lists.asmx UpdateListItems के साथ कार्य करते समय, यह त्रुटि उत्पन्न करने के लिए आसान है:

अमान्य URL पैरामीटर.

प्रदान की गई URL में कोई अमान्य आदेश या मान है. कृपया URL को फिर से जाँचें.

आप इस त्रुटि प्राप्त कर सकते हैं जब आप ID में शामिल करने के लिए भूल जाओ फ़ील्ड्स अद्यतन करने के लिए की सूची।  यह, एसपी इन वेब सेवाओं का एक बहुत की तरह, सा counterintuitive के बाद से आप ID की ID विशेषता में शामिल करने की ज़रूरत है <विधि> तत्व।  और तुम नहीं कर रहे हैं ID को अद्यतन और शायद कभी नहीं करने के लिए चाहते पहली जगह में.

इस SOAP एनवलप काम करता है:

<soapenv:लिफ़ाफ़ा xmlns:soapenv =' http://schemas.xmlsoap.org/soap/envelope/'>
  <soapenv:शरीर>                      
    <UpdateListItems xmlns =' http://schemas.microsoft.com/sharepoint/soap/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <अपडेट>                     
         <बैच OnError ="जारी रखें">
          <विधि ID ="1" अध्यक्ष तथा प्रबंध निदेशक ="अद्यतन">
            <फ़ील्ड का नाम ="CooperativeLock">अवरोधित!</फ़ील्ड>
            <फ़ील्ड का नाम ="आईडी">1</फ़ील्ड>
          </विधि>
        </बैच>                     
        </अपडेट>                
      </UpdateListItems>             
  </soapenv:शरीर>         
</soapenv:लिफ़ाफ़ा>

तब आप कष्टप्रद "अमान्य URL पैरामीटर" संदेश प्राप्त होगा यदि आप ID फ़ील्ड संदर्भ बाहर पट्टी.

</अंत>

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

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

 

गरीब आदमी जावास्क्रिप्ट में कैशिंग है

[TL;डॉ. संस्करण: async कॉल के परिणामों को संग्रहीत करने के लिए कुकीज़ का उपयोग करें; पिछले async कॉल का परिणाम तुरंत प्रस्तुत करना और फिर उन्हें पृष्ठ-लोड करने के बाद मान्य करें।]

मैं SharePoint इंट्रानेट साइट पर एक ग्राहक के लिए काम कि सुविधाओं कर दिया गया है, अन्य बातों के अलावा, एक stylized माध्यमिक नेवीगेशन जिसका मेनू विकल्पों के माध्यम से एक नियमित रूप से पुराने कस्टम सूची प्रबंधित कर रहे हैं।  विचार है कि ग्राहक को प्रभावित करने वाले या वैश्विक नेविगेशन द्वारा इसे बाहर डाल द्वारा प्रभावित किया जा रहा बिना "उनके" साइट मेनू नियंत्रण करने के लिए हो जाता है.

(वहाँ कुछ अविश्वसनीय रूप से एक CEWP कि बताते हैं कि कुछ सीएसएस और जे एस एक साइट के व्यवहार के बारे में लगभग सब कुछ मौलिक परिवर्तन करने के लिए लोड करता है, लेकिन है कि एक और पोस्ट के लिए किसी HTML फ़ाइल को जोड़ने के बारे में विध्वंसक है)

यह बहुत आसान के लिए कोड:

  • पेज लोड हो रहा है खत्म करो और एक async बाकी या lists.asmx या जो कुछ भी का उपयोग कर एक सूची से मेनू आइटम को लोड करने के लिए कॉल करने के लिए प्रतीक्षा करें
  • JQuery का उपयोग, गतिशील रूप से अगर एक गुच्छा आबाद <li>एक माता पिता के अंदर है <उल> (इस tecnnique की एक सरलीकृत विवरण के लिए ईसाई Pinder लेख यहाँ देखें)
  • सभी स्वरूपण करने के लिए सीएसएस का उपयोग करें
  • लाभ!

है गले में हाजिर यहाँ यह है कि हर बार किसी को भी साइट के पृष्ठों में से एक हिट, उस उपयोगकर्ता के वेब ब्राउज़र सूची से आइटम प्राप्त करने के लिए पहुँच रहा है।  एक बार देव पूरा हो गया है और परीक्षण किया जा करने के लिए बातें साबित हो गया है स्थिर और पूर्ण करें, इस कॉल अनावश्यक है अधिक से अधिक 99% समय के बाद से मेनू शायद ही कभी बदल जाता है।  यह भी एक अजीब UI प्रभावित इस बहादुर नई दुनिया में हाइपर ajaxy वेब साइटों की आम है जो है – पृष्ठ renders और केवल तब मेनू प्रदान करता है।  यह चिड़चिड़ा और मेरे विचार में ध्यान भंग है।  और चिड़चिड़ा. तो, कैशिंग। 

मैं तर्क thusly संशोधित:

  • यह देखो कि के रूप में मैं पिछले मेनू में होते हैं जो ब्राउज़र में एक कुकी के लिए पढ़ें
    • अगर पाया, यह तुरंत प्रस्तुत करना।  पेज लोडिंग समाप्त करने के लिए इंतजार मत करो।  (आप की जरूरत है अपने HTML रणनीतिक यहाँ रखा है यह सुनिश्चित करने के लिए, लेकिन ऐसा करना कठिन नहीं है).
  • पेज लोड हो रहा है खत्म करो और एक async बाकी या lists.asmx या जो कुछ भी का उपयोग कर एक सूची से मेनू आइटम को लोड करने के लिए कॉल करने के लिए प्रतीक्षा करें
  • क्या मैं कुकी के खिलाफ मिल गया की तुलना करें
    • यदि यह मैच, रुको
    • अन्यथा, jQuery का उपयोग, गतिशील रूप से अगर एक गुच्छा आबाद <li>है में एक <उल>
  • सभी स्वरूपण करने के लिए सीएसएस का उपयोग करें
  • लाभ!

आप में से कुछ कहने के लिए जा रहे हैं, "अरे! चूंकि आप मेनू पढ़ रहे हैं वैसे भी कोई वास्तविक कैशिंग यहाँ पर जा रहा है हर एक बार.”  और तुम ठीक कह रहे हैं-मैं किसी भी प्रकार के तोड़ सर्वर नहीं दे रहा हूँ।  लेकिन renders HTML पेलोड पूरी तरह से क्योंकि कॉल async है और पृष्ठ प्रारंभिक के बाद होता है, यह "उपयोगकर्ता के लिए और अधिक उत्तरदायी लगता"।  अधिक खींचता है पृष्ठ के रूप में सुंदर मेनू renders.  यदि मेनू में परिवर्तन होता है, उपयोगकर्ता एक नर्वस पुनः आरेखित मेनू के लिए अधीन है, लेकिन केवल उस एक बार.

वहाँ कुछ तरीके इस कैशिंग और अधिक प्रभावी बनाने के लिए और एक ही समय में बाहर सर्वर मदद कर रहे हैं:

  • एक नियम है कि "कुकी"कैश की एक न्यूनतम के लिए मान्य है में डाल दिया 24 घंटे या कुछ अन्य समय सीमा. वहाँ तक है कोई समयसीमा समाप्त कुकी, कुकी मेनू स्नैपशॉट का उपयोग करें और कभी नहीं सर्वर हिट.

.. ठीक है कि सभी कि मन अभी आया है :). 

अगर किसी को किसी भी चालाक विचारों यहाँ है मैं उन्हें पता है कि प्यार होता.

और अन्त में – यह तकनीक अन्य सामान के लिए इस्तेमाल किया जा सकता है।  इस क्लाइंट पृष्ठ डेटा-संचालित चीजों की एक संख्या है विभिन्न पृष्ठों पर, उनमें से कई अपेक्षाकृत शायद ही कभी बदल रहा (एक बार एक हफ्ते या महीने में एक बार की तरह).  यदि आप कार्यक्षमता की विशिष्ट क्षेत्रों को लक्षित, आप एक और अधिक उत्तरदायी UI सामग्री स्थानीय कुकी स्टोर से खींच और तुरंत प्रतिपादन के द्वारा दे सकते हैं।  यहां तक कि अगर तुम किसी भी चक्र सर्वर की बचत नहीं कर रहे हैं यह तेजी से उपयोगकर्ता के लिए लगता है।  तुम कर सकते हैं सर्वर साइकिल इस स्थानीय कुकी कैश अमान्य करने के लिए कुछ शर्तें और ट्रिगर्स पर तय करके सहेजें।  है कि सभी स्थिति और artsy सामान और वास्तव में सबसे ज्यादा मज़ा :). 

</अंत>

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

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

कैसे करना है: इकाई परीक्षण और परीक्षण कवरेज 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

पिछले सूट आप कभी पहन लूँगा?

[त्वरित नोट-यह एक बहुत लंबे समय के बाद एक न्यूयॉर्क में यहाँ अपने समूह के लिए खोलने का काम पर है और आप त्रि राज्य क्षेत्र में रहते हैं अगर आप रुचि रखते हैं की ज़रूरत है।]

मैं स्लैलम परामर्श शामिल से अधिक हो 18 महीने पहले और कि यह मेरे सबसे लंबे समय तक स्थायी नौकरी के बाद से बना देता है 2007. मैं इसे इस तरह की योजना नहीं. नौकरी hopping के एक स्ट्रिंग करने से पहले कि SharePoint दुनिया में मेरी छलांग के साथ शुरू कर दिया, मैं ग्यारह साल के लिए एक ही स्थान पर थी. मैं अंत में एक नया पाया है, लंबी दौड़ के लिए यहाँ स्लैलम पर काम करने के लिए जगह स्थायी.

इस जगह से बढ़ रहा है और मैं कि नियंत्रित करने के लिए कुछ मदद की ज़रूरत है. हालांकि मैं वास्तुकार शब्द हो/से अधिक या गलत तरीके से इस्तेमाल SharePoint अंतरिक्ष में कुछ समय के लिए अब पाया है की जरूरत है मैं मदद की तरह आम तौर पर एक "SharePoint समाधान वास्तुकार" कहा जाता है. मैं इस बारे में ब्लॉग करने के लिए कैसे पर संघर्ष कर रहा है. मैं बस पासा/राक्षस शैली में बुलेट बिंदुओं का एक गुच्छा सूचीबद्ध करने के लिए नहीं चाहते. मेरी उत्कृष्ट भर्ती साथियों कि पहले से ही कर रहे हैं :). तो, मैं एक "दिन जीवन में" दृष्टिकोण लेने का फैसला. यह पढ़ सकते हैं और विचार:

1) यदि यह अपील और

2) चाहे आप कि आप यह कर सकते हैं आपकी हड्डियों में पता.

यदि हाँ, तो, मुझे संपर्क करें (paul.galvin@slalom.com) और बात करते हैं.

इन कर रहे हैं क्या आप अपनी टीम पर एक समाधान वास्तुकार के रूप में विशिष्ट सप्ताह/महीने में क्या उम्मीद कर सकते हैं:

  • परियोजनाओं को चलाने, एक समय में एक से अधिक अक्सर. और कुछ परियोजनाओं बड़े हैं तो आप कि एक परियोजना ही होगा. "एक परियोजना चल रहा है" का मतलब है कि तुम निरीक्षण और वितरण की समग्र गुणवत्ता के लिए जिम्मेदारी है. लगभग हर मामले में आप एक प्रधानमंत्री होगा और devs का एक बहुत मजबूत टीम, बास, UX लोग, आदि।, आप का समर्थन करने के लिए. लेकिन आप मुख्य ग्राहक देखता है चेहरे होगा, न्यास, आदि. इस भूमिका में छाया में नहीं छुपा है :). आप इस समय बिल होगा और आप यह करने के लिए व्यस्त रखने के लिए लक्ष्य है 80 समय का प्रतिशत.
  • कागजी कार्रवाई के साथ-बोता मदद, RFPs, डेक-कि सभी अच्छी चीजें. मुझे लगता है कि हम हमारे बोना प्रक्रिया नीचे बहुत तंग और ठोस है, तो यह काफी फार्मूलाबद्ध है. यदि आप बोता आज लिखने के लिए इस्तेमाल कर रहे हैं, हमारी प्रक्रिया आप के लिए एक चुनौती किया जा करने के लिए नहीं जा रहा है. RFPs-ये थोड़ा मुश्किल हैं. वे प्रकृति में bespoke के साथ शुरू हो जाते हैं और RFPs आमतौर पर एकाधिक अलग लेखकों में खींच. यह दोनों अच्छे और बुरे है, लेकिन मुख्य रूप से अच्छा. जब हमें जरूरत उत्कृष्ट ग्राहक सेवा के लिए भी नए काम को जीतने के लिए कोशिश कर रहा करते समय हथकंडा इस scrambly प्राप्त कर सकते हैं. आप शायद एक RFP ही नहीं होगा, लेकिन आप अनुभागों में योगदान करने के लिए कहा जाएगा.
  • विक्रय कॉल्स, लेकिन नहीं एक करीब. एक महीने के पाठ्यक्रम में, आप हमारी विक्रय टीम विक्रय कॉल्स के एक जोड़े पर जाने के लिए उम्मीद कर सकते हैं. आप कमरे में SME होगी, नोट्स लेने के लिए और समाधान को आकार मदद. हालांकि, तुम से पूछा नहीं होगा या बिक्री चक्र शुरू से खत्म करने के लिए संभाल करने के लिए उम्मीद की. आप "को बेचने की जरूरत नहीं,"आप अभी शांत आवाज कमरे में विशेषज्ञ कारण का होना चाहिए. इस पर भरोसा और आत्मविश्वास बनाता है और यही कारण है कि तुम वहाँ रहे हैं. बेशक, अगर आप की तरह बेच, तब आप यहाँ भी विकसित करने के लिए कमरा है.
  • भर्ती के साथ मदद. हम रेफरल कार्यक्रम के कुछ प्रकार है, अगर तुम सच में पता है तो आपको लगता है कि समुदाय में मजबूत लोगों स्लैलम का हिस्सा होना चाहिए, तुम इस तरह लाभ प्राप्त कर सकते हैं. हम नियोक्ताओं समर्पित है (जो बहुत ही अच्छे हैं) काम के इस प्रकार का बड़ा हिस्सा करने के लिए. असली मदद उम्मीदवारों-साक्षात्कार है वे एक अच्छा फिट सांस्कृतिक रहे हैं? वे अपने सामान पता है? वे कर सकते हैं * मेरी * जीवन आसान? 🙂 यह spurts में आता है, एक दो बार एक महीने, हालांकि कुछ महीनों में आप यह सब नहीं होता.
  • उत्तम आचरण को परिभाषित करने में मदद, हमारे आईपी ऊपर का निर्माण और हमारे बाजार में और अधिक प्रतिस्पर्धी बनाने. आप एक अनुभवी लड़का/लड़की हो. खण्ड के चारों ओर-SharePoint में नहीं बस तुम गया है, लेकिन आप अन्य प्रौद्योगिकियों में अनुभव है और अच्छे और बुरे के माध्यम से रहते थे (यहां तक कि भयानक) सब पर परियोजनाओं. एक परिणाम के रूप में, तुम्हें पता है क्या काम करता है और क्या नहीं करता है. हम आपको उस अनुभव को हमारे साथ एक सामरिक अर्थ में एक दिन के लिए दिन के आधार पर साझा करने के लिए चाहता हूँ (अर्थात. वास्तव में अच्छी तरह से अपनी परियोजनाओं को चलाने) लेकिन इसके अलावा रणनीतिक. "सर्वोत्तम प्रथाओं" एक शब्द के रूप में थोड़ा overused है और मैं इसे का उपयोग करने के लिए संकोच. मूल विचार है कि आप गहरी और प्रासंगिक अनुभव के साथ एक अनुभवी व्यक्ति के रूप में आ रहे हैं और हम कैसे हम एक दिन के लिए दिन के आधार पर ग्राहकों के साथ संलग्न में अपने learnings का सबसे अच्छा एकीकृत करने के लिए चाहते हैं.
  • आनंद लो -हम एक बहुत एकीकृत गुच्छा रहे हैं. मैं अभी तक एक और साधारण बात से बचने के लिए चाहते हैं, लेकिन यह इस मामले में वास्तव में उपयुक्त है-हम कड़ी मेहनत (की तरह) और हम भी कठिन खेल :). वहाँ एक हारून Sorkin यहाँ मज़ाक की तरह है, कक्ष हमेशा चालाक लोगों से भरा हुआ है, हम हमारे पीने की तरह है और हम मज़ा की एक उचित संख्या का आयोजन घटनाओं-मूवी की रात, बेसबॉल यात्राएं (यहां तक कि अगर वे कर रहे हैं भयानक, व्यावहारिक रूप से बुराई टीमों).

अगर मैं यह सब एक शब्द में योग कर सकता, मैं शब्द "नेतृत्व" का प्रयोग करेंगे नेतृत्व परियोजनाओं, अभ्यास के बाहर के निर्माण में एक प्रमुख भूमिका ले (आईपी, निर्माण टीम ऊपर), आदि.

लेकिन इंतज़ार! वहाँ और भी है! और क्यों स्लैलम पर काम?

  • आशय-के उल्लेखनीय एकता सभी इस बात बाहर हो जाना चाहता है. न्यूयॉर्क कार्यालय 'इस बात' है. हर कोई इस के साथ बोर्ड पर है.
  • बहन-अपनी पाल में हवा की कार्यालयों, बहन प्रथाओं-स्लैलम है "एक पूर्ण सेवा संगठन परामर्श". मैं ऊपर SharePoint अभ्यास का नेतृत्व (एक "अभ्यास क्षेत्र नेतृत्व" स्लैलम शब्दावली में). मैं बहन है पर प्रथाओं 11 अन्य स्लैलम कार्यालयों. हालांकि मैं कर रहा हूँ जहाँ तक राजा तो SharePoint यहाँ स्लैलम न्यूयॉर्क में संबंध है, मैं शिकागो में सहकर्मी प्रथाओं है, सिएटल, डलास, अटलांटा, बोस्टन, आदि. जहाँ से मैं समर्थन पर आकर्षित कर सकते हैं. यह वास्तव में-दोनों दुनिया के सर्वश्रेष्ठ न्यूयॉर्क लेकिन संगठन भर में प्रतिभा के टन के लिए उपयोग में उल्लेखनीय स्वायत्तता यहाँ है.
  • अपनी बिक्री में हवा (2) -हम SharePoint-से भी अधिक बहुत अधिक करते हैं. हम द्वि करते हैं, CRM, UX, व्यापार परामर्श, मोबाइल, कस्टम विकास और दूसरों. हम पार के बीच अपने आप को बेचने में अच्छा कर रहे हैं और हम अच्छा कर रहे हैं पर चित्रकारी- और अधिक महत्वपूर्ण बात, हमारे ग्राहकों के लिए एक "पूर्ण सेवा" चित्र पर-दे रहे थे. यह मेरे लिए विशेष रूप से आकर्षक है. मैं कई छोटे orgs क्योंकि हम कबूतर "SharePoint लोगों के रूप में." छिपे थे SharePoint gigs पर और कुंठित और फिर काम पर गया है कि स्लैलम के साथ ऐसा नहीं होता और हम और अधिक दिलचस्प काम करने के लिए एक परिणाम के रूप में प्राप्त.
  • स्थानीय मॉडल-कोई यात्रा.
  • दीर्घकालिक विकास-स्लैलम gangbusters जा रहा है. विकास और स्थिरता के बहुत सारे. विकास भी मतलब है कि हम हम उन ग्राहकों का समर्थन करने के लिए और अधिक ग्राहकों और कर्मचारियों को जोड़ने के रूप में नेता आज नई टीमों ने सिर के लिए किराया करने के लिए की जरूरत.

मैं पर जा सकता है, लेकिन मैं शायद पहले से भी लंबे समय चला गया है. मुझे लगता है कि मैं यहाँ सार पर कब्जा कर लिया है. यदि आप के बारे में सोच रहे हैं नौकरियां और यह बदल करने के लिए आपको अच्छा लग रहा है, बात करते हैं.

चलो बात वैसे भी यदि आप अपनी वर्तमान नौकरी पर-मुबारक हो :). मैं स्थानों के एक बहुत में गया है और समय पर बहुत ही "खुश" था. स्लैलम अलग है और मैं तुम्हें उस के समझाने का मौका का स्वागत करेंगे.

</अंत>

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

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

त्वरित और आसान: एक विंडोज स्टोर App में किसी सूची बॉक्स में किसी आइटम का आकार सेट करें

एक विंडोज स्टोर App में मैं पैदा कर रहा हूँ, मैं उपयोगकर्ता विभिन्न सूचनात्मक संदेश दिखाने के लिए चाहते हैं।  मैं इतना है कि वे उन्हें और सब कि अच्छी चीजें के माध्यम से स्क्रॉल कर सकते हैं यह दिखाने के लिए उपकरण के रूप में एक ListBox उठाया। 

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

        निजी शून्य AddGameStateLogMessage(स्ट्रिंग theMessage)
        {
            TextBox टी = नई पाठ बॉक्स();
            t.Text = GameStateCounter     + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            मोटाई thisPadding = नई मोटाई(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem ली = नई ListBoxItem();
            ली।सामग्री टी =;
            ली।MaxHeight = 25;
            thisPadding = नई मोटाई(5, 0, 5, 0);
            ली।Padding = thisPadding;

            GameStateLog.Items.Insert(0,li);
        }

इसके बाद के संस्करण में, मैं एक पाठ बॉक्स बनाने के हूँ और इसकी फ़ॉन्ट सेट करना, इसकी पैडिंग, आदि.

अगले, मैं एक ListBoxItem बनाने के लिए और इसकी सामग्री को स्वरूपित पाठ बॉक्स सेट करें.

अंत में, मैं ListBoxItem में सूची बॉक्स सम्मिलित करना।  (मैं सूची के शीर्ष पर सबसे हाल ही में संदेशों को दिखाने के लिए चाहता हूँ, इसलिए सम्मिलित करें(0,li) एक साधारण जोड़ने के बजाय() मंगलाचरण।).

मैं इस से पहले थोड़ा मैं ListBox व्यवहार के साथ बहुत खुश हूँ, लेकिन ऊपर दिखाए गए स्वरूप बहुत उपयोगी किया गया है tweaking हो जाएगा।  उम्मीद है कि किसी और यह उपयोगी पाता.

</अंत>

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

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