Kā norādīt cilvēkus kā meklēšanas tvērumu / Satura avotu, kas izmanto SharePoint 2013 PĀRĒJIE API

Man nebija iemesla strādāt ar SharePoint 2013 Meklēšanas API caur atpūtu, pirmo reizi. Gribēja, lai meklētu cilvēkus, nav dokumentu. Mācīšanās, šeit ir tas, ka galvenais norādīt satura avotus, izmantojot tās GUID (vai vismaz šajā gadījumā). Šādas jQuery fragments parāda cik:

    loadExpertsAsync: funkcija() {

        jQuery.support.cors = patiess;

        $.Ajax({
            URL: tas.CreateFullApiUrl() +
                "?querytext = "portāls"&sourceID = = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Prasmes,AboutMe,Intereses,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            metode: "IEGŪT",
            galvenes: { "Akceptēt": "pieteikums/json; oData = runīgs" },
            kešatmiņa: viltus,
            panākumi: funkcija (rezultāts) {

Manā gadījumā, Esmu darbojas API pret SharePoint online. Lai iegūtu GUID, Pēc šo soļu veikšanas:

  1. Piekļūt SharePoint administrēšanas centru
  2. Izvēlieties "meklēt", no kreisās puses navigācijas
  3. Izvēlieties "Manage rezultātu avotus"
  4. Izvēlieties "Vietējie rezultāti"
  5. Paskaties uz URL.

Mans URL izskatās kaut kas līdzīgs:

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

SourceID = parametrs ir tas, kas strādāja par mani.

(Es saprotu, ka sourceID = faktiski var būt sava veida pastāvīga lieta ar SP, but I’ll always check anyway 🙂 ).

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Piemērs SharePoint pārējiem zvaniem

Šeit ir noteikts paraugs pārējiem zvaniem, kurus darbs mani un var jums palīdzēt kā arī. Kā no 02/2014, there are two examples 🙂

  1. Norādītu kolonnu ar tās nosaukumā atstarpes
  2. Multi-izvēlēties kolonnas atsauce
  3. Veikt cilvēku meklēšanas caur atpūtu

 

Es pievienošu tā kā laiks iet.

Šeit ir daži noderīgi tintes, esam noskaidrojuši, kā arī:

Norādītu kolonnu ar tās nosaukumā atstarpes

Pielāgota saraksta izveide ar kolonna ar nosaukumu "Bloga autors" (atstarpe starp blogu un autoru).

$select atsauces šai kolonnai ir:

image

Vienkārši nomainiet atstarpi ar "_x0020_". Mēs redzam daudz piemēru _x0020_ pāri internets un pārējais ir ne ar ko neatšķiras.

Ja jums nav ko darīt, jūs esat atbildīgs, tiks parādīts kļūdas ziņojums, kas līdzīgs šim:

Izteiksme “Bloga autors” nav derīgs.

Nieks.

Multi-izvēlēties uzmeklēšanas kolonnas atsauce

Iestatīt:

  1. Izveidojiet pielāgotu sarakstu ar nosaukumu kategorijām.
  2. Pievienot dažas kategorijas. I pievienotās kategorijas thusly:image
  3. Izveidot citu pielāgotu sarakstu, ko sauc par MockBlog un pievienot kategorijas kā multi-izvēlēties sarakstā kolonnu (vai vietnes kolonnu, ja tā ir, kā jūs roll).

Dažus vienumus pievienot sarakstam Mockblog un jūs esat gatavs.

Ajax stila zvanu, izmantojot jQuery izskatīsies apmēram šādi:

serverUrl   = "/_api/web/saraksti/GetByTitle('MockBlog')/krājumi" +
             "?$izvēlieties = Title,Kategorijas/nosaukums,Blog_x0020_Author/nosaukums" + 
             "&$izvērsiet = Blog_x0020_Author,Kategorijas";

Mēs esam spēcīgi SharePoint "Dodiet man nosaukums visu kategoriju (Kategorijas/nosaukums). Faktiskās vērtības, lai saņemtu Nosaukums ar $izvērsieting kategoriju sarakstā." (Mani mierīgs pārfrazējot ir iespējams diezgan plats, bet tā kā es esmu interpretējot).

Ja tu to dari, izmantojot JavaScript un iepazīties ar produkciju, izmantojot Fiddler, jums kaut kas līdzīgs šim pretī:

 

image

(Iepriekš ir JSON objekts)

Veikt cilvēku meklēšanas caur atpūtu

Es blogged par to atsevišķi. Galvenais ir, lai norādītu sourceID = parametrs, kuru vērtība ir vietējiem iedzīvotājiem satura avota GUID. (Satura avotos mēdza saukt par tvērumu, un tas ir mans-oh-mans tik grūti nav aicināt visu jomu man!).

Lasīt vairāk par to šeit: http://www.mstechblogs.com/paul/?p=10385

 

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Ātri un viegli: Izveidojiet SharePoint vietnes, izmantojot pārējo

Ir daudz resursus visā, kas parāda, kā to izdarīt, bet nevarēju atrast visaptverošu iet uz saiti, tāpēc šeit mēs esam.

Var izveidot SharePoint vietnē, izmantojot pārējo API.  Šeit ir pilnīgi cep piemērs:

<!--
    SiteRequestForm.html: Apkopot informāciju un veidot vietnes lietotājam.
-->

<centrs>
<tabula>
    <TR>
        <TD>Vietnes nosaukums:</TD>
        <TD><ievades tips= "text" vārds= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD colspan= "% 2">
            <ievades tips= "iesniegt" ID= "CreateSiteButton" vērtība= "Izveidot vietnes" />
        </TD>
    </TR>
</tabula>
</centrs>

<skriptu src="../Plugins/jQuery-1.11.0.min.js"></skriptu>

<skriptu>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametri": {
                __metadata: { "tips": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Nosaukums: "Paultest1",
                Apraksts: "izveidots atpūtas web, Paul!",
                Valodas: 1033,
                Web veidni: "sts",
                UseUniquePermissions: viltus
            }
    },

    createSite: funkcija () {

        jQuery.support.cors = patiess;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.Ajax({
            URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            metode: "AMATU",

            galvenes: {
                "Akceptēt": "lietojumprogrammu/json; oData = runīgs",
                content-type": "lietojumprogrammu/json;oData = runīgs",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            datu: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            panākumi: funkcija () { brīdinājums("veiksme"); },
            kļūda: funkcija () { brīdinājums("kļūda"); }

        });
    },

    wireUpForm: funkcija () {
        $("#CreateSiteButton").noklikšķiniet uz(funkcija () {
            brīdinājums("Apmēram, lai mēģinātu izveidot vietni.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skriptu>

Kad veiksmīga, jūs saņemsiet paciņu JSON atbildi, kā šis:

image

Manas galvenās domas un mācība no šī iekļaut:

  • Šo pieeju izmanto jQuery.  Manā gadījumā, mana jQuery bibliotēka atrodas ".../ plug-in. "  Jūs vēlaties mainīt, norādiet uz jūsu mīļākie Alekseev atrašanās vietu.
  • Var kopēt un ielīmēt, ka viss fragments satura redaktora Web daļu lapas, un tai vajadzētu strādāt tikai naudas sodu.  Jūs vēlaties mainīt API zvanu beigu punktam un pārliecinieties, ka jūs uzmeklēt Alekseev pareizi.
  • URL ir attiecībā pret jūsu API galapunktu.  Manā gadījumā, tā ir izveidot apakšvietnes zem https://bigapplesharepoint.com
  • Jums nav nepieciešams sniegt satura garums. Dažus blog posts un MSDN dokumenta nozīmē, ka jums, bet notika man automātiski, kuru es pieņemu, veic pati $.ajax zvanu.
  • Šīs rindas ir vajadzīga, lai nerastos "aizliegtā" atbildi: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Ir arī citi veidi, kā to izdarīt, bet tas ir diezgan jauki.  Ir zaudējuši saites, blog, kas nodrošināja šo saīsni.  H/T pie jums, noslēpumainā blogger!

Good luck, un ceru, ka tas palīdz kāds.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Pārvarēt kaitinošas problēmas ar relatīvo URL SharePoint Quick Launch

Gribēja, lai pievienotu saiti ātrās palaišanas navigācijas citu dienu un SharePoint pastāstīja:

image

Tīra teksta versija, kas ir:

Nodrošinātu, ka URL ir derīgs un sākas ar derīgu rakstzīmi (numura zīme (#) vai uz priekšu vērstu slīpsvītru (/)) vai derīgu atbalstītu protokolu (piemēram, ' http://’, "https://’, "fails://’, "ftp://’, "mailto:’, "jaunumi:’).

"Blech un Baku!"Es teicu.

Risinājums, lai tas ir izmantot JavaScript atrast zināmu saiti ātrās palaišanas un novērst tās darbību.

Lai pārbaudītu šo, pievienot jaunu saiti uz testa vietā thusly:

image

Es izmantot jQuery. Lai to atrisinātu, iegūt dažas JavaScript un jQuery uz lapu, izmantojot savu iecienītāko metodi un ar līniju kods, kas līdzīgs šim:

 

$(dokumentu).gatavs( funkcija () {

    $("a:satur("Testa URL Nomaiņa")").noklikšķiniet uz(funkcija () { brīdinājums("uzvedības izmaiņas noklikšķiniet uz!"); atgriešanās viltus;});

});

Un Bobs ir tavs tēvocis.

JQuery selektoru atrod katru <a> frāzi, ka tās nosaukums ir "Testa URL Nomaiņa". Jūs varat atrast melodija, atkarībā no jūsu saites un tādas.

Uzklikšķināt(funkcija() ignorē neatkarīgi no SharePoint būtu jādara, kad lietotājs noklikšķina uz. Pārliecinieties, ka jums "atgriezties viltus" vai cits to darīt jūsu stuff, un mēģiniet href lieta pārāk, kas ir gandrīz noteikti nav jūsu mērķis.

Tas tika darīts, un testa SharePoint online vidē, bet vajadzētu strādāt arī ar 2010 un agrāk pārāk.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Ātrs un vienkāršs: SharePoint atpūtas zvanīt tikai atgriež 100 Ieraksti

Esmu strādājusi valsts saskaras ar tīmekļa vietnē mana SharePoint praksē šeit New York un to izmanto daudz JavaScript un pārējie zvani Rādīt saturu.

Maģistrālēm izstrādes laikā, Vienkārši izveidot mazu kopu ar 10 vai tik rindas ar pielāgotu sarakstu un mans pārējie zvani izvilka no turienes.  Reiz es bumped līdz sarakstā ir daži simti rindas datu, lai pārbaudītu sagaidāmo pieaugumu, Es atklāju, ka man bija panākt, lai tieši 100 rindās atgriezās atpakaļ uz manu pārējie zvani.

Tas ir ļoti vienkārša lieta, lai adresi.  Manā gadījumā (un es uzskatu, vairumā gadījumu), noklusējuma pārējie zvani uz SharePoint (un iespējams, nozares standartu?) atgriešanās 100 rindas.  Atgriezties vairāk nekā noklusējuma, izmantojiet parametru $top zvanam, kā:

IEGŪT /Insights Dev/_api/web/lists/GetByTitle('MockBlog')/krājumi?$Atlasiet = ID,Nosaukums,Kategorijas/nosaukums,Blog_x0020_Author/nosaukums,DatePublished,BlogSummary&$izvērsiet = Blog_x0020_Author,Kategorijas&$filtrs =&$top = 9999

Es paņēmu 9999 Šajā gadījumā, jo es zinu, ka growth-wise, tur nebūs vairāk nekā 200 vai tik gadā rindas pievienot šim sarakstam.  Ja tas kļūst nepievilcīgs, mēs varētu ieviest dažas lapošanas pa ceļu.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Ātrs un vienkāršs: Atrisināt "Nederīgs URL parametrs” problēma ar UpdateListItems lists.asmx

Strādājot ar UpdateListItems pa lists.asmx, tas ir viegli radīt kļūdas:

Nederīgs URL parametrs.

Norādīto URL ir nederīga komanda vai vērtība. Lūdzu, pārbaudiet vietrādi URL vēlreiz.

Jūs varat saņemt šo kļūdu, kad esat aizmirsis iekļaut ID laukus, lai atjauninātu sarakstu.  Tas, tāpat kā daudz no šiem SP web pakalpojumiem, ir mazliet pretēji jūsu intuīcijai, jo jums nepieciešams iekļaut ID ID atribūts <Metode> elements.  Un jūs neesat atjaunināt ID un droši vien nekad vēlaties pirmām kārtām.

Šī SOAP aploksne darbojas:

<soapenv:Aploksnes xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Organizācija>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <atjauninājumus>                     
         <Partijas OnError ="Turpināt">
          <Metode ID ="% 1" Cmd ="Update">
            <Lauka nosaukums ="CooperativeLock">bloķēta!</Lauks>
            <Lauka nosaukums ="ID">1</Lauks>
          </Metode>
        </Partijas>                     
        </atjauninājumus>                
      </UpdateListItems>             
  </soapenv:Organizācija>         
</soapenv:Aploksne>

Ja jūs sloksne no lauka atskaites ID tad jūs saņemsiet kaitinošas ziņojums "Nederīgs URL parametrs".

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

 

Nabaga cilvēks ir kešatmiņā, JavaScript

[TL;DR versija: izmanto sīkdatnes, lai saglabātu async sarunu rezultāti; padarīt rezultāti pēdējos async aicina nekavējoties un pēc tam apstiprināt tos pēc lapas ielādes.]

Es esmu strādājusi par SharePoint iekštīkla vietnes klientu, ka līdzekļi, cita starpā, stilizētu sekundārās navigācijas, kuru izvēlnes opcijas tiek pārvaldīti regulāru veco pielāgotu sarakstu.  Ideja ir tāda, ka klients saņem, neietekmējot vai slimas ar globālās navigācijas uzdeva to kontrolēt "viņu" portāla izvēlne.

(tur ir kaut kas ārkārtīgi graujošām par pievienojot CEWP, kas norāda uz HTML failu, kas ielādē daži CSS un JS pašos pamatos mainīt gandrīz visu par vietņu uzvedība... bet tas ir citā amatā)

Šī ir diezgan vienkāršs kods:

Iekaisis vietas šeit ir tas, ka katru reizi, kad kāds pieskaras viens no vietnes lapas, šī lietotāja web pārlūkprogrammā ir sasniedzamas, lai saņemt vienumus no saraksta.  Pēc tam, kad ir pabeigta dev un pārbaude ir pierādījusi lietas ir stabilas un pabeigt, šo aicinājumu nav vajadzīga vairāk nekā 99% laika, jo reti maina izvēlni.  Tai arī dīvaini UI ietekmē, kas ir kopīgs šo drosmīgs jaunu pasauli, hiper ajaxy tīmekļa vietnes-lappuse tiek atveidota, un tikai tad izvēlnē padarīt.  Tas ir nervozs un uzmanību, manuprāt.  Un nervozs. Tik, kešatmiņā. 

Loģika ir rediģēts thusly:

  • Meklēt cookie pārlūks, kas satur izvēlnes, kā es to izlasītu pēdējās
    • Ja konstatēts, padarīt to nekavējoties.  Negaidiet, lai lapas lejuplādēšanas pabeigšanai.  (Jums ir jāpārliecinās, ka jūsu HTML stratēģiski novietoti šeit, bet tas nav grūti izdarāms).
  • Pagaidiet, līdz lappuse ir lejuplādēšanas pabeigšanai un veikt zvanu izvēlnes elementus sarakstā, izmantojot atpūtas vai lists.asmx vai kāds ielādējiet async
  • Salīdzināt to, ko es saņēmu pret cookie
    • Ja tas atbilst, apstājieties
    • Pretējā gadījumā, izmantojot jQuery, dinamiski aizpildīt ķekars, ja <Li>ir programmā <UL>
  • Izmantot CSS darīt visu formatējumu
  • Peļņa!

Daži no jums gatavojas teikt, "Hei! nav, nav īsta caching notiek šeit, jo jūs lasāt izvēlnes, tomēr katru reizi, kad.”  Un tev taisnība-es neesmu dodot serveris nekādu pārtraukumu.  Bet jo async izsaukums un notiek pēc sākotnējās lappuses HTML komerckrava pilnībā padara, to "jūtas" vairāk reaģē uz lietotāja.  Izvēlnes padara diezgan daudz kā lapa vērš.  Ja notiek izmaiņas izvēlnes, lietotājs ir pakļauts nervozitātes atkārtoti izdarīt no izvēlnes, bet viena vienīga reize.

Ir daži veidi, kā padarīt šo kešatmiņā efektīvākas un izpalīdzēt serverī vienlaikus:

  • Ielikt "sīkfailu kešatmiņa" ir derīga vismaz kārtulā 24 stundas vai kādu citu laika periodu. Kamēr nav beidzies sīkfailu, izmantojiet izvēlni sīkfailu momentuzņēmumu un nekad hit servera.

Nu... tas ir viss, kas nāk prātā tieši tagad :). 

Ja kāds ir jebkurš gudrs idejas šeit labprāt vēlētos zināt tos.

Un visbeidzot – šo tehniku var izmantot arī citas lietas.  Šī klienta lapa ir vairākas lietas, datu vadītas dažādās lappusēs, daudzi no viņiem mainās samērā reti (piemēram, reizi nedēļā vai reizi mēnesī).  Ja jums mērķis konkrētas jomas funkcionalitāti, jūs varat dot vairāk atsaucīgāku UI, velkot saturu no vietējo Sīkfails uzglabāt un padarot nekavējoties.  Tā uzskata ātrāk lietotājs, pat tad, ja nav krājat naudu serverim jebkurā cikliem.  Jums var saglabāt serverī cikli, izlemjot par dažiem nosacījumiem un trigeriem par spēkā neesošiem šī vietējā sīkfailu kešatmiņa.  Tas ir visas situācijas un artsy stuff, un tiešām visvairāk jautru :). 

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

kā: Konfigurēt vienības testu un testa segumu ar QUnit.js un Blanket.js Office 365 SharePoint App

Intro

Es esmu bijis izpētīt vienības pārbaude un testa segumu JavaScript, kā es strādāju par jaunu SharePoint app tiešsaistē SharePoint, Office 365 komplekts.  Acīmredzams pētniecības ceļi aizveda mani uz Qunit.js un pēc tam pa labi, lai Blanket.js.

QUnit atļaujiet iestatīt vienības testos un tos grupēt moduļus.  Modulis ir tikai vienkāršs veids, kā organizēt saistītos testus. (Es neesmu pārliecināts, ka es lietoju to, kā paredzēts, bet tas strādā man līdz šim ar nelielu testu es līdz šim definēto kopu).

Blanket.js integrējas ar Qunit un to parādi faktiskās rindas JavaScript, kas bija- un vēl svarīgāk – netika faktiski izpildītas laikā darbojas testu.  Tas ir "segums"-līnijām, kas izpildīts attiecas pārbaudes, kamēr citi nav.

Starp labu precedentiem iestatīšanu un skatīšanu pārklājums, mēs varam samazināt risku, ka mūsu kods ir slēpta defekti.  Labos laikos.

Qunit

Pieņemot, ka jums ir Visual Studio projektu iestatīt, Sāciet ar JavaScript pakotnes lejupielāde no http://qunitjs.com.  Pievienot JavaScript un CSS atbilstošās savu risinājumu.  Raktuves izskatās:

image

Stāvs 1

Kā jūs varat redzēt, Bija, izmantojot 1.13.0 brīdī, kad es uzrakstīju šo blog post. Neaizmirstiet lejupielādēt un pievienot CSS failu.

Kas no tā, kā, Nākamais solis ir izveidot sava veida testa siksnas un references Qunit biti.  Es esmu testēšanas funkcijas ķekars skripta fails, ko sauc par "QuizUtil.js", tāpēc es radīju HTML lapas, ko sauc par "QuizUtil_test.html", kā parādīts:

image Stāvs 2

Šeit ir kods:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<galvu>
    <nosaukums>QuizUtil tests ar Qunit</nosaukums>
    <saite rel= "izvēršamā stila lapu" href="../CSS/qunit-1.13.0.CSS" />
    <skriptu tips= text/javascript"" src="QuizUtil.js" datu segums></skriptu>
    <skripta tips ="text/javascript" src ="qunit-1.13.0.js"></skriptu>
    <skripta tips ="text/javascript" src ="blanket.min.js"></skriptu>

    <skriptu>
        modulis("getIDFromLookup");
        tests("QuizUtil getIDFromLookupField", funkcija () {
            var goodValue = "% 1;#Paul Galvin";

            vienāds(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 vajadzētu būt 2";
            vienāds(getIDFromLookupField(nedefinēta), nedefinēta, "Undefined ievades argumentu vajadzētu atgriezties nenoteikts rezultāts.");
            vienāds(getIDFromLookupField(""), nedefinēta, "Nedefinēts vērtību vajadzētu atgriezties tukšu ievades arguments.");
            vienāds(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), nedefinēta,"Vienmēr jāatgriežas kabriolets rezultātu līdz veselam skaitlim");
            vienāds(getIDFromLookupField("% 2;#kāda cita persona"), "% 2", "Pārbaudot [2;#kāda cita persona].");
            vienāds(getIDFromLookupField("9834524;#Long vērtība"), "9834524", "Lielu vērtību tests.");
            notEqual(getIDFromLookupField("5;#ikviens", 6), 6, "Testēšana notEqual (5 nav vienāds ar 6 šajā izlasē: [5;#ikviens]");

        });

        modulis("htmlEscape");
        tests("QuizUtil htmlEscape()", funkcija () {
            vienāds(htmlEscape("<"), "&lt;", "Bēg mazāk nekā operators ('<')");
            vienāds(htmlEscape("<div class =  "someclass">Nedaudz teksta</DIV>"), "&lt;div class =&quot;someclass&quot;&gt;Nedaudz teksta&lt;/DIV&gt;", "Vairāk sarežģītu testu virkne.");
        });

        modulis("getDateAsCaml");
        tests("QuizUtil getDateAsCaml()", funkcija () {
            vienāds(getDateAsCaml(jaunā Datums("12 31 2013")), "2013-12-31T:00:00:00", "Grūti kodētu datuma pārbaude: [12/31/2013]");
            vienāds(getDateAsCaml(jaunā Datums("01/05/2014")), "2014-01-05T:00:00:00", "Grūti kodētu datuma pārbaude: [01/05/2014]");
            vienāds(getDateAsCaml(jaunā Datums("01/31/2014")), "2014-01-31T:00:00:00", "Grūti kodētu datuma pārbaude: [01/31/2014]");
            vienāds(getTodayAsCaml(), getDateAsCaml(jaunā Datums()), "getTodayAsCaml() jābūt vienādai getDateAsCaml(jaunais datums())");
            vienāds(getDateAsCaml("muļķības vērtība"), nedefinēta, "Centieties iegūt muļķības vērtība datuma.");
            vienāds(getDateAsCaml(nedefinēta), nedefinēta, "Centieties iegūt dienas [nedefinēta] datumu.");
        });

        modulis("getParameterByName");
        tests("QuizUtil getParameterByName (no vaicājuma virknes)", funkcija () {
            vienāds(getParameterByName(nedefinēta), nedefinēta, "Centieties iegūt nenoteiktu parametru vajadzētu atgriezties Nedefinēts.");
            vienāds(getParameterByName("nepastāv"), nedefinēta, "Mēģināt iegūt parametra vērtība, kad mēs zinām, ka parametrs vairs nepastāv.");

        });

        modulis("Sīkfaili");
        tests("QuizUtil sīkfailu dažādas funkcijas.", funkcija () {
            vienāds(setCookie("test", "% 1", -1), getCookieValue("test"), "Get sīkfails, es noteikti būtu jāstrādā.");
            vienāds(setCookie("anycookie", "% 1", -1), patiess, "Nosakot spēkā vārīšanas vajadzētu atgriezties"taisnība".");
            vienāds(setCookie("traks cookie nosaukums !@#$%"%\^&*(()?/><.,", "% 1", -1), patiess, "Nosakot sliktu sīkfaila nosaukumu vajadzētu atgriezties 'false'.");
            vienāds(setCookie(nedefinēta, "% 1", -1), nedefinēta, "Iet nedefinētu nosaukums sīkdatne.");
            vienāds(getCookieValue("nepastāv"), "", "Sīkdatne neeksistē tests.");
        });

    </skriptu>
</galvu>
<organizācija>
    <DIV ID= "qunit"></DIV>
    <DIV ID= "qunit armatūra"></DIV>

</organizācija>
</HTML>

Ir vairākas lietas, kas te notiek:

  1. Apskatot manu kodu (QuizUtil.js)
  2. Atsauces Qunity.js
  3. Definējot dažiem moduļiem (getIDFromLookup, Sīkfaili, un citi)
  4. Ievietojot <DIV> kura ID ir "qunit".

Pēc tam, Es vienkārši velciet šo lapu uz augšu, un jums kaut kas līdzīgs šim:

image

Stāvs 3

Ja paskatās pāri augšpusei, jums ir dažas iespējas, no kuriem divi ir interesanti:

  • Paslēpt izturējis testus: Diezgan skaidrs.  Var palīdzēt jūsu acu tikai redzēt problemātiskās jomas un nav daudz traucējumu.
  • Modulis: (nolaižamais saraksts): Tas filtrēs testus uz leju, lai tikai tām grupām, testi, ko vēlaties.

Attiecībā uz testiem, sevi-daži komentāri:

  • Pats par sevi saprotams, ka jums rakstīt kodu, tāda, ka pirmām kārtām ir testable.  Izmantojot rīku var palīdzēt īstenot šo disciplīnu. Piemēram, Man bija funkciju sauc "getTodayAsCaml()”.  Tas nav ļoti testable, jo tas aizņem ievades arguments un pārbaudītu to līdztiesības, mums būtu nepieciešams pastāvīgi atjaunināt testa kodu, lai parādītu pašreizējo datumu.  Es to refactored pievienošanu datiem ievades parametrs, pēc tam iet, kad es gribu, lai šodienas datumu formātā CAML pašreizējo datumu.
  • Qunit ietvaros dokumentus saviem testiem un šķiet diezgan stabila.  To var darīt vienkāršas lietas, piemēram, pārbaudes par vienlīdzību un ir arī atbalsts stilā ajax zvanus ("īstu" vai izsmēja, izmantojot savu iecienītāko smējējs).
  • Iet cauri procesam arī liek domāt ar malu gadījumos – kas notiek ar "Nedefinēts" vai null tiek nodota funkcijai.  Tas padara miris vienkārši pārbaudīt ārā šos scenārijus.  Labs stuff.

Ar Blanket.js segumu

Blanket.js papildina Qunit, izsekojot faktisko koda rindiņas, kas darbojas jūsu pārbaudes gaitā izpildīt.  Tā integrē tiesības Qunit tik pat, ja tas ir pilnīgi atsevišķs app, tas spēlē labi – tiešām izskatās, ka tas ir viens bezšuvju app.

Tas ir blanket.js darbībā:

image Stāvs 4

image

Stāvs 5

(Jūs faktiski ir noklikšķiniet uz "Aktivizēt segums" rūtiņas augšpusē [sk. 3] lai iespējotu šo.)

Iezīmētās līnijas attēlā 5 nav izpildīts jebkurš no maniem testiem, tāpēc man ir nepieciešams izstrādāt testa, kas izraisa to izpildīt, ja es gribu pilnu pārklājumu.

Iegūt blanket.js darbu, rīkojieties šādi:

  1. Lejupielādējiet to no http://blanketjs.org/.
  2. Pievienot savam projektam
  3. Atjaunināt jūsu iejūgs testa lappuse (QuizUtil_test.html manā gadījumā) šādi:
    1. Atsauces kods
    2. Izrotāt jūsu <skriptu> atsauci, piemēram, tas:
    <skriptu tips= text/javascript"" src="QuizUtil.js" datu segums></skriptu>

Blanket.js paceļ "datu segums" atribūts un paveic savu brīnumu.  To āķi vērā Qunit, atjaunina UI pievienot "Enable segums" variants un voila!

Kopsavilkums (TL; DR)

Lietojiet Qunit, lai rakstītu pārbaudes lietas.

  • To lejupielādēt
  • Pievienot savam projektam
  • Rakstīt testa siksnas lappusi
  • Izveidojiet savu testu
    • Daži no jūsu kodam jābūt testable refactor
    • Esiet radošs!  Domāju, ka crazy, neiespējami scenārijus un testa viņiem vienalga.

Izmantojiet blanket.js lai nodrošinātu pārklājumu

  • Pārliecinieties, vai darbojas Qunit
  • Blanket.js lejupielādēt un pievienot to savam projektam
  • To pievienotu jūsu iejūgs testa lappuse:
    • Pievienot atsauci uz blanket.js
    • "Datu segums" atribūtu, lai pievienotu jūsu <skriptu> tagu
  • Darboties, Qunit pārbaudes.

Es nekad nebija jebkura šāda pirms un bija daži rudimentārs stuff darbojas nedaudzas stundas. 

Laimīgs testēšana!

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Pēdējā uzvalks būs kādreiz valkāt?

[Quick Piezīme-Šī ir diezgan ilgi pastu atvērt manu grupu šeit Ņujorkā darbu un jums vajadzēs dzīvot ar tri-state jomā, ja jūs interesē.]

Es pievienojos slaloma apspriešanās gaitā 18 mēneši un kas padara šo manu garāko ilgstošu darbu kopš 2007. Nav plānu to tādā veidā. Pirms lēciena darbu virkne, kas sākās ar mans lēciens uz SharePoint pasauli, Es biju vienā vietā vienpadsmit gadus. Es beidzot atrada jaunu, ilgstoša vieta ilgajam šeit darbā Slalom.

Šī vieta ir paplašinājušās, un man ir vajadzīga neliela palīdzība, lai kontrolētu, kas. Veida palīdzību, kas man ir nepieciešams, parasti tiek saukta "SharePoint risinājumus arhitekts", kaut arī esam noskaidrojuši arhitekta vārds virs un/vai nepareizi izmantot SharePoint vietas diezgan, bet tagad. Esmu bijis cīnās par to, kā blogu par šo. Es nevēlos, lai vienkārši uzskaitīt out ķekars aizzīmju punktiem Kubiņi/Monster stilā. Savu lielisko rekrutēšanas vienaudžiem ir bijis darīt, ka jau :). Tik, Es nolēmu veikt "diena dzīvē" pieeja. To pārlasīja un apsvērt:

1) Ja apelācijas un

2) Vai jūs zināt jūsu kauliem, to var izdarīt.

Ja atbilde ir "Jā", sazinieties ar mani (Paul.Galvin@Slalom.com) un Let's talk.

Šie ir tas, ko jūs varat sagaidīt darīt tipiska nedēļas/mēneša risinājumu arhitekts manā komandā:

  • Vadīt projektus, bieži vien vairāk nekā vienam laikā. Daži projekti ir lieli, un tāpēc, ka viens projekts varētu savu. "Gaitas" projekts nozīmē, ka jums ir uzraudzību un atbildību par vispārējo kvalitāti, piegādes. Gandrīz katrā gadījumā jums būs PM un patiešām spēcīga komanda devs, BAs, UX cilvēki, u. tml., lai atbalstītu jums. Bet tu būsi galvenās sejas klients redz, fondi, uc. Nav neviena slēpjas ēnās šajā lomu :). Šoreiz būs rēķinu un mērķis ir uzturēt jūs aizņemts pietiekami, lai to izdarītu 80 procentus no jūsu laika.
  • Palīdzēt ar dokumentiem – sivēnmātes, RFPs, klājiem – viss, kas labs stuff. Es domāju, ka mums ir mūsu darba uzdevuma procesu nosaka diezgan stingra un cieta, tāpēc tas ir diezgan šablonisks. Ja esat pieradis rakstiski sivēnmātes šodien, mūsu process nav būs izaicinājums jums. RFPs – tie ir mazliet grūtāk. Tās mēdz būt ekskluzīvs raksturs sākt ar un RFPs parasti ieraut vairāku citu autoru. Tas ir gan labi, gan slikti, bet galvenokārt labas. To var iegūt scrambly, kad mums ir nepieciešams, lai žonglēt nepieciešamību izcilu klientu apkalpošanu arī mēģinot iegūt jaunu darbu. Jūs droši vien nebūs pašu RFP, bet jums tiks lūgts palīdzēt sadaļas.
  • Pārdošanas zvaniem, taču ne tuvāk. Mēneša laikā, jūs varat sagaidīt, lai dotos uz pāris vizītēm ar mūsu pārdošanas komanda. Jūs būsiet MVU istabā, piezīmes un palīdzēt veidot risinājums. Tomēr, jums netiks jautāts vai paredzēts apstrādāt pārdošanas ciklu no sākuma līdz beigām. Jums nav nepieciešams "pārdot,"jums vienkārši vajag būt eksperts iemesls telpā rāmā balsī. Tas attīsta uzticību, un tas ir iemesls, kāpēc jūs tur. protams, Ja tev patīk pārdot, tad vēl ir vietas šeit augt pārāk.
  • Palīdzība ar pieņemšanu darbā. Mums ir sava veida referral program, Tātad ja jūs tiešām zināt spēcīgu ļaudīm aprindām, ka jūs domājat, ka vajadzētu būt daļai Slalom, tādā veidā var gūt labumu. Mums ir veltīta darba devēji (kas ir lielisks) lauvas tiesu no šāda veida darbu darīt. Reālu palīdzību intervējot kandidātus – vai tie ir labs fit kulturāli? Viņi zina savas stuff? Viņi var dot * savu * dzīvi vieglāku? 🙂 This comes in spurts, pāris reizes mēnesī, lai gan dažos mēnešos nedarītu to vispār.
  • Palīdzētu noteikt paraugpraksi, veidot mūsu IP un padara mūs vairāk konkurētspējīgu tirgus. Jūs esat pieredzējis puisis/gal. Jūs esat bijis ap bloku – ne tikai koplietošanas vidē SharePoint, bet ir pieredze citām tehnoloģijām, un dzīvoja ar labu un ļaunu (pat briesmīgi) projektus visā. Kā rezultātā, jūs zināt, kas darbojas un kas ne. Mēs jūs dalīties šajā pieredzē ar mums ikdienā taktiskā ziņā gribēs (ti. palaist savus projektus patiešām labi) bet arī stratēģiski. "Labākās prakses" ir mazliet overused kā terminu un I hesitate to izmantot. Pamatideja ir tāda, ka jūs nākat kā pieredzējis cilvēks ar dziļu un attiecīgo pieredzi un mēs gribam apvienot labāko no jūsu mācība kā mēs iesaistīties ar klientiem par ikdienā.
  • izpriecājies – mums ir ķekars ļoti integrēta. Vēlaties, lai izvairītos no vēl viena kļuvis triviāls, bet tas ir patiesi piemērots šajā lietā – mēs cītīgi strādājam (sava veida) un mēs spēlējam vēl grūtāk :). Tur ir Aaron Sorkin veida ķircināšanās šeit, istabas vienmēr ir pilns ar gudri cilvēki, mums patīk mūsu dzērienu un organizējam godīgu skaits jautri notikumi-movie night, beisbola braucieniem (pat tad, ja tie ir briesmīgs, praktiski ļauno komandām).

Ja varētu apkopojot to visu vērā vienu vārdu, Varētu lietot vārdu "vadība". Vadīt projektus, uzņemties vadību ēkā, prakse (IP, veidotos komanda), uc.

Bet uzgaidiet! Tur ir vairāk! Kāpēc vēl strādāt pie Slalom?

  • Ievērojams vienotību nodomu – visi grib augt šī lieta out. "Šī lieta" ir New York office. Visi ir uz klāja ar šo.
  • Vēja jūsu buras-māsa biroji, māsu prakses – slaloms ir konsultāciju uzņēmums "pilna servisa". Es vadu SharePoint prakse ("prakse platība apsteidzes" slaloms lingo). Man ir māsa prakse pie 11 citi slaloma biroji. Tik pat ja es esmu karalis tik tālu, cik SharePoint pauž bažas šeit slaloma Ņujorkā, Man ir vienranga praksi Čikāgā, Seattle, Dallas, Atlanta, Boston, uc. no kurām vari smelties no atbalsta. Tas ir patiešām labāko no abām pasaulēm – ievērojama autonomija šeit Ņujorkā, bet piekļuve t talants visā organizācijā.
  • Vēja jūsu pārdošanas (2) -Mēs var izdarīt vairāk nekā SharePoint-daudz. Mēs darām BI, CRM, UX, biznesa konsultācijas, Mobilais, pielāgotu izstrādāšanu u.c.. Mēs esam labi šķērsot pārdot starp sevi un mēs esam labi pie glezna- un vēl svarīgāk, pēc – "pilna servisa" attēlu piegādi mūsu klientiem. Tas ir īpaši pievilcīgi man. Esmu bijis pie daudziem mazākiem orgs darba SharePoint koncertos un neapmierinātas atkal un atkal, jo mēs bijām balodis holed kā "SharePoint cilvēki". Tas nenotiek ar slaloma un mēs nokļūt darīt vairāk interesantu darbu rezultātā.
  • Vietējo modelis-bez ceļošanas.
  • Ilgtermiņa izaugsmi – slaloms ir turpinājies gangbusters. Daudz attiecībā uz izaugsmi un stabilitāti. Izaugsme nozīmē arī to, ka mēs šodien darbā līderi augšējus jaunajām grupām kā mēs pievienot vairāk klientu un personāla atbalstu tiem klientiem, kas.

Varētu doties uz, bet es droši vien jau ir vilkusies pārāk ilgi. Es domāju, ka esat notverti būtība šeit. Ja jūs gadījumā SAČUKSTATIES par maiņu darbu, un tas izskatās labi, lai jūs, Let's talk.

Ja jūs esat apmierināts ar savu pašreizējo darbu – parunāsim anyway :). Es esmu bijis daudz vietu un tajā laikā bija ļoti "laimīgi". Slaloma ir atšķirīgs un atzinīgi vērtētu iespēju pārliecināt jūs, ka.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

Ātri un viegli: Iestatīt vienumu lielumu sarakstu lodziņā Windows veikalā App

Windows Store App veidoju, Es gribu parādīt lietotājam dažādi informatīvie ziņojumi.  Es paņēmu ListBox kā rīku, lai parādītu to, tāpēc, ka viņi var ritināt tos un visu, kas labs stuff. 

Ziņojumi ir tikai informatīva, Tātad nav nepieciešams nodrošināt visu, kas papildus atstarpes ap viņiem, jo lietotājs nekad viņiem izvēlēties kaut ko.  Pēc noklusējuma sarakstlodziņu un sniedz ievērojamu papildinājumu un vēlējās, lai atbrīvotos no tā.  Nu.... jūs nevarat darīt kaut ko tamlīdzīgu, ListBox tieši.  TOMĒR, to var darīt, lai vienumi, kuriem pievienojat:

        privāts anulēts AddGameStateLogMessage(virkne Ziņojumu)
        {
            TextBox t = jaunā TextBox();
            t.Text = GameStateCounter     + ": " + Ziņojumu;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Biezumu thisPadding = jaunā Biezums(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = jaunā ListBoxItem();
            Li.Satura = t;
            Li.MaxHeight = 25;
            thisPadding = jaunā Biezums(5, 0, 5, 0);
            Li.Padding = thisPadding;

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

iepriekš, Es esmu izveidojot tekstlodziņu un tā fonta iestatīšana, tā odere, uc.

Nākamo, Es izveidot ListBoxItem un noteikt tā saturu, lai formatētu tekstlodziņu.

Beidzot, ListBoxItem ievietot sarakstlodziņu.  (Es gribu parādīt jaunāko ziņojumu saraksta sākumā, līdz ar to ievietot(0,Li) tā vietā, lai vienkārši pievienot() piesaukšana.).

Man būs tweaking to mazliet pirms es esmu patiešām apmierināts ar ListBox uzvedība, bet modelis parādīts iepriekš ir bijusi ļoti auglīga.  Cerams, ka kāds cits atrod noderīga.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin