Kako določiti ljudi kot obseg iskanja / Vir vsebine z uporabo SharePoint 2013 POČITEK API

Sem imel razlog za delo s SharePointovim 2013 Iskanje API preko ostalo prvič. Hotela sem, da iskanje za ljudi, ne dokumente. Tipko učenje, tukaj je, da določite vire vsebine preko GUID (ali vsaj v tem primeru). Odlomek prikazuje ta jQuery kako:

    loadExpertsAsync: Funkcija() {

        jQuery.support.cors = True;

        $.Ajax({
            URL: to.CreateFullApiUrl() +
                "?querytext = "portalov"&ID = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Spretnosti,AboutMe,Interese,Delovno mesto,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl "" +
                "&RowLimit = 99",
            metoda: "DOBILI",
            glave: { "Sprejeti": "Uporaba/json; odata = verbose" },
            predpomnilnika: FALSE,
            uspeh: Funkcija (rezultat) {

V mojem primeru, Tečem API proti SharePoint online. Da bi dobili GUID, Sledil sem te korake:

  1. Dostop do SharePoint admin center
  2. Izberite "iskanje" iz navigacije levico
  3. Izberite "upravljanje virov rezultat"
  4. Izberite »Lokalnih prebivalcev rezultati«
  5. Pogled na URL.

Moj URL pogledal nekaj podobnega:

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

ID parametra je kakšen obdelan navzlic.

(Razumem, da ID lahko dejansko nekakšno stalni stvar s SP, ampak vseeno bom vedno preverila 🙂 ).

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Primer SharePoint ostali klici

Tu je niz vzorec ostalo klicev, ki delajo za mene in lahko pomoč vi jasno tudi. Kot od 02/2014, there are two examples 🙂

  1. Sklic na stolpec s presledki v svojem imenu
  2. Referenčni multi-izberite stolpec
  3. Izvedite iskanje ljudi preko ostalo

 

Bom dodati, da to po nekem času.

Tukaj je nekaj koristnih črnila, sem našel tudi:

Sklic na stolpec s presledki v svojem imenu

I ustvarite seznam po meri z stolpec imenovan "Blog avtorja" (prostor med Blog in avtor).

$select sklicuje ta stolpec je:

image

Preprosto zamenjati prostor z "_x0020_". Vidimo _x0020_ v veliko primerov čez internets in ostalo se ne razlikuje.

Če ne naredite, ki, ste dobili sporočilo o napaki, kot je ta:

Izraz “Avtor blog” ni veljaven.

Enostavno dovolj.

Referenčni stolpec multi-izberite za iskanje

Nastavite:

  1. Ustvarite seznam po meri z imenom kategorije.
  2. Dodajte nekaj kategorij. Sem dodal kategorije thusly:image
  3. Ustvarite drug seznam po meri, ki se imenuje MockBlog in dodajte kategorije kot multi-izberite seznam stolpcev (ali stolpec mesta, če to je, kako ste roll).

Dodajanje nekaterih elementov na seznam Mockblog in ste pripravljeni.

Ajax slog klic z uporabo jQuery bo izgledala nekako takole:

serverUrl  = "/_api/web/seznami, GetByTitle("MockBlog")/elementi" +
             "?$Izberite naslov =,Kategorije/naslov,Blog_x0020_Author/naslov" + 
             "&$Razširite = Blog_x0020_Author,Kategorije";

Smo si pravi SharePoint "Daj mi naslov za vse kategorije (Kategorije/naslov). Dobili dejanske vrednosti za Naslov z $Razširiteing seznam kategorije." (Moj prijeten parafrazo je verjetno zelo ohlapno, ampak to kako sem to tolmačenje).

Če to delaš preko JavaScript in uporabo Violinista pogledati izhod, dobiš kaj takega v zameno:

 

image

(Zgoraj je predmeta JSON)

Izvedite iskanje ljudi preko ostalo

I blogged o tem posebej. Ključno je, da določite ID parametra, katerega vrednost je GUID vira vsebine domačini. (Vire vsebine, ki se uporablja za se imenuje obsegov in je my-oh-my ne tako težko poklicati vse področje zame!).

Preberite več o tem tukaj: http://www.mstechblogs.com/paul/?p=10385

 

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Hitro in enostavno: Ustvarite SharePointovo mesto z ostalo

Obstaja veliko virov okoli ki kažejo, kako to storiti, vendar nisem mogel najti povezavo obsežno go-do, Torej, tukaj smo.

Ustvarite SharePointovo mesto z uporabo programskega vmesnika REST.  Tukaj je primer popolnoma pečen:

<!--
    SiteRequestForm.html: Zbirajo informacije in ustvarite mesto za uporabnika.
-->

<Center>
<Tabela>
    <tr>
        <TD>Ime mesta:</TD>
        <TD><vnos vrsta= "besedilo" ime= "Imemesta" ID= "Imemesta" /></TD>
    </tr>
    <tr>
        <TD ColSpan= "2">
            <vnos vrsta= "submit" ID= "CreateSiteButton" vrednost= "Ustvarjanja mesta" />
        </TD>
    </tr>
</Tabela>
</Center>

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

<skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametri": {
                __metadata: { "tip": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Naslov: "Paultest1",
                Opis: "preostali ustvaril spletno z Paul!",
                Jezik: 1033,
                Spletne: "sts",
                UseUniquePermissions: FALSE
            }
    },

    createSite: Funkcija () {

        jQuery.support.cors = True;

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

            glave: {
                "Sprejeti": "uporaba/json; odata = verbose",
                "content-type": "uporaba/json;odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            podatkov: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            uspeh: Funkcija () { Opozorilo("uspeh"); },
            Napaka: Funkcija () { Opozorilo("napaka"); }

        });
    },

    wireUpForm: Funkcija () {
        $("#CreateSiteButton").kliknite(Funkcija () {
            Opozorilo(»Tem, da poskusite in ustvarjanja mesta.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skript>

Ko uspešno, dobiš JSON paket v odgovor takole:

image

Moj ključnih misli in learnings iz tega:

  • Ta pristop uporablja jQuery.  V mojem primeru, moj jQuery knjižnica se nahaja v ".../ plugins. "  Boste želeli spremeniti, da pokažete na vaš najljubši JQ namestitev.
  • Lahko kopirate in prilepite to je celo odlomek v spletni gradnik urejevalnika vsebine na strani ter to should opus šele lep.  Boste želeli, da spremenite končna točka API klic in preverite, ali se sklicujete JQ pravilno.
  • URL je glede na vaš API endpoint.  V mojem primeru, je ustvarjanje podmesta pod https://bigapplesharepoint.com
  • Vi ne potreba skrbeti dolžine vsebine. Nekaj blog delovnih mest in MSDN dokumenta pomeni, da vam, vendar se je zgodilo mi samodejno, ki predvidevam je ravna z $Ajax klica, sama.
  • Ta vrstica mora izogne "prepovedano" odziv: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  So drugi ways uganjati to, ampak to je zelo lepo.  So izgubili povezavo na blog, ki to bližnjico.  H/T vam, skrivnostni blogger!

Vso srečo in upanje to pomoč nekdo ven.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Premagati siten Problem z relativne naslove URL v SharePoint Quick Launch

Sem želel dodati povezavo hitri zagon navigacije drugi dan in mi je povedal SharePoint:

image

Čist tekst prevod to je:

Zagotoviti, da URL je veljaven in se začne z bodisi veljaven znak (Številski znak (#) ali poševnico (/)) ali veljavno podpira protokol (na primer, "http://’, "https://’, "datoteke://’, "ftp://’, "mailto:’, "novice:’).

"Blech in pox!"Sem rekel.

Rešitev za to je, da uporabite JavaScript najti znanih link v nagel splavitev ter preglasitve njegovega vedenja.

V skušnja to, Dodajte novo povezavo na vašo spletno stran test thusly:

image

Sem rabil jQuery. To rešiti, dobili nekaj JavaScript in jQuery na stran using vaš najljubši tehniko in z linijo kodo, kot to:

 

$(dokument).pripravljena( Funkcija () {

    $("a:vsebuje("Preskusni URL zamenjavo")").kliknite(Funkcija () { Opozorilo("kliknite spremenjeno vedenje!"); vrnitev FALSE;});

});

In Bob je vaš stric.

JQuery Selektor najde vsak <a> oznako, ki je "Test URL zamenjavo" v svojem imenu. Če želite najti-tune, ki odvisno od vaše povezave in tako.

Kliknite na(Funkcija() preglasi karkoli SharePoint bi storila, ko uporabnik kliknil. Izdelovanje varen vi "return false" drugače bo naredil svoje stvari in poskusite href stvar preveč, ki je skoraj gotovo ni vaš cilj.

To je bilo storjeno in test v SharePoint online okolju pa mora delati tudi v 2010 in prej preveč.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Hitro in preprosto: SharePoint ostalo klic samo vrne 100 Zapisi

Sem delal na javno sooča spletno stran za moje SharePoint prakse tukaj v New York in ga uporablja veliko JavaScript in ostalo klicev prikažete vsebino.

Med razvojem kopno, Ustvariti majhne dataset s samo 10 ali tako vrstice v seznam po meri in moji ostali klici potegnil od tam.  Enkrat sem vrč seznam imeti nekaj sto vrstic podatkov, da test za pričakovano rast, Sem ugotovila, da je že točno 100 vrstic vrne nazaj na moje klice ostalo.

To je zelo preprosta stvar za naslov.  V mojem primeru (in menim, v večini primerov), privzeto ostali klici v SharePoint (in morebiti kot industrijski standard?) vrnitev 100 vrstice.  Vrniti več kot privzeto, uporabite $top parameter na vaš klic, kot v:

PRITI /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/elementi?$Izberite = ID,Naslov,Kategorije/naslov,Blog_x0020_Author/naslov,DatePublished,BlogSummary&$Razširite = Blog_x0020_Author,Kategorije&$filter =&$Top = 9999

Pobral sem 9999 v tem primeru, ker vem da growth-wise, ne bo več kot 200 ali tako vrstice dodati ta seznam v letu.  Če postane Neokretan, lahko izvajamo nekaj ostranjevalne po cesti.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Hitro in preprosto: Rešiti "neveljaven Parameter URL za” problem z UpdateListItems v lists.asmx

Pri delu z UpdateListItems preko lists.asmx, To je enostavno ustvari napako:

Parameter neveljaven URL.

URL preskrbljen vsebuje neveljaven ukaz ali vrednost. Prosimo preverite naslov spet.

Lahko dobiš to napako, ko ste pozabili vključiti ID v na seznam polj za posodobitev.  To, kot veliko SP spletne storitve, je malo counterintuitive, saj morate vključiti ID v atributu ID v <Metoda> element.  In ne boš posodobiti ID in verjetno nikoli ne želite na prvem mestu.

Te ovojnice SOAP deluje:

<soapenv:Ovojnica xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/Envelope/ ">
  <soapenv:Telo>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/ ">                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <posodobitve>                     
         <Paketna NaNapaki ="Še">
          <Metoda ID ="1" Cmd ="Posodobitev">
            <Polje ime ="CooperativeLock">zaklenjena!</Polje>
            <Polje ime ="ID">1</Polje>
          </Metoda>
        </Serija>                     
        </posodobitve>                
      </UpdateListItems>             
  </soapenv:Telo>         
</soapenv:Ovojnica>

Če ste strip, sklic polja ID potem boste dobili siten vest "Parameter neveljaven URL".

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

 

Revež je predpomnjenje v JavaScript

[TL;DR. različica: uporablja piškotke za shranjevanje rezultatov asinhron klici; bili rezultati zadnjih asinhron klici takoj in jih nato potrditi po nalaganja strani.]

Sem delal na SharePointovem mestu intranet za stranko, da značilnosti, med drugim, stilizirane sekundarni navigacija, katerih možnosti menija se upravljajo preko rednih stare seznam po meri.  Ideja je, da stranka dobi nadzor nad "svoje" mesto meni brez vpliva ali vpliva globalne navigacije, dal, ki jih je.

(Obstaja nekaj neverjetno subverzivna o dodajanju CEWP, ki kaže na datoteko HTML, ki naloži nekaj CSS in JS bistveno spreminjajo skoraj vse o spletnega mesta obnašanje... ampak to je za drugo delovno mesto)

Šifra tega zal prepost:

Sore spot tukaj je, da vsakič, ko kdorkoli izmed na spletnih straneh zadetkov, to uporabnik spletnega brskalnika je dosegel, da se elementi s seznama.  Ko dev je popolna in testiranje izkazal stvari stabilno in popolne, Ta klic je nepotrebno več kot 99% od takrat redko spremembe v meniju.  Je tudi čudno UI določajo, kateri je splošen v tem krasnem novem svetu spletnih mest hiper-ajaxy-stran postane in šele nato render meniju.  Je živčnosti in moteča v mojem mnenju.  In živčnosti. Tako, predpomnjenje. 

Sem spremenil logika thusly:

  • Poiščite piškotek v brskalnik, ki vsebuje jedilnik, kot sem nazadnje prebral
    • Če najdemo, Render takoj.  Ne čakati na strani konča nakladanja.  (Vi potreba prepričati se vaš HTML strateško dani tukaj, vendar to ni težko narediti).
  • Čakati na strani konča nakladanja in da je Asinhroni klic otovoriti ki gre gor jedilnik reč na seznamu using počitek ali lists.asmx ali karkoli
  • Primerjati, kaj imam proti piškotek
    • Če se ujema, ustavi se
    • Drugače, z uporabo jQuery, dinamično zapolnijo kup, če <Li>je v a <UL>
  • Uporaba CSS storiti vse oblikovanje
  • Dobiček!

Nekateri od vas bodo rekli, "Hej! ni resnično caching tekoč naprej vsepovsod ker berete meni vseeno vsak čas.”  In imaš prav-ne dajem strežnik kakršnokoli odmor.  Ampak ker klic je asinhron in se zgodi, ko je začetno stran HTML tovora popolnoma postane, "meni" bolj odziven na uporabnika.  Meni postane precej toliko, kot stran črpa.  Če se meni zgodi, da sprememba, uporabnik je izpostavljen živčnosti ponovno pripravi menija, ampak samo en čas.

Obstaja nekaj načinov, da bi ta caching učinkovitejši in pomagati strežniku hkrati:

  • V pravilu, da "piškotek cache" velja za najmanj 24 ur ali neki drugi časovni okvir. Dokler je ni poteklo piškotek, uporabite piškotek je meni posnetek in nikoli zadeti strežnik.

No... to je vse, ki pridejo na misel zdaj :). 

Če ima kdo kakšno pametno ideje tukaj bi radi vedeli zanje.

In nenazadnje-to tehniko se lahko uporabijo za druge stvari.  Ta odjemalski strani je število podatkovnih stvari na različnih straneh, Mnogi od njih spreminjajo razmeroma redko (kot enkrat na teden ali enkrat na mesec).  Če ciljate posebnih področjih funkcionalnosti, lahko daš več odgovarajoč UI s potegom vsebine iz lokalnih piškotek trgovine in vračanje takoj.  Zdi hitreje uporabniku, tudi če ne shranjujete strežnik ciklov.  Vi lahko z odločitvijo o nekaterih pogojih in sprožilce, da izničita ta predpomnilnik lokalnih piškotek shrani strežnik ciklov.  To je vse situacijsko in artsy stvari in res najbolj zabavno :). 

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

kako: Konfiguriranje enote Test in Test pokritost z QUnit.js in Blanket.js za pisarno 365 SharePoint App

Intro

Bil raziskovati enota testiranja in test zajetje za JavaScript, saj delam na novo SharePoint app za SharePoint online v pisarni 365 Suite.  Poti očitno raziskave me je pripeljala do Qunit.js in prav po tem, za Blanket.js.

QUnit mi nastavite unit testov in jih združite v module.  Modul je samo preprost način za organiziranje ustreznih preskusih. (Ne vem, jaz sem ga uporabljajo, kot je bilo predvideno, vendar deluje za mene tako daleč s majhen nabor testov, ki jih doslej določili).

Blanket.js, ki se integrira z Qunit in to bo pokazal dejanski vrstic JavaScript, ki so bili- in še pomembneje-so bili dejansko izvršeni med teče testov.  To je "zajetje"-proge, da izvajajo so zajete test, medtem ko druge niso.

Med postavljanje ki gre gor dober testnih primerov in pokritost, mi lahko zmanjša tveganje, da ima naša koda skrite napake.  Dobrih časih.

Qunit

Ob predpostavki, da imate Visual Studio projekta nastavite, začnete s prenosom JavaScript paket iz http://qunitjs.com.  Dodajte JavaScript in CSS ustrezne vaša rešitev.  Rudnik pogled tako le:

image

Slika 1

Kot lahko vidite, Sem bil using 1.13.0 v času, ko sem napisal ta blog post. Ne pozabite, da prenesete in dodate datoteki CSS.

Ki s poti, naslednji korak je ustvariti neke vrste test pas in reference Qunit bitov.  Sem testiranje kup funkcij v skriptno datoteko, imenovano "QuizUtil.js", zato sem ustvaril HTML strani, imenovano "QuizUtil_test.html", kot je prikazano:

image Slika 2

Tukaj je koda:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<vodja>
    <naslov>QuizUtil test z Qunit</naslov>
    <povezava rel= "stylesheet" href="../CSS/qunit-1.13.0.css" />
    <skript vrsta= text/javascript"" src="QuizUtil.js" podatki zajemajo></skript>
    <skript tipa ="text/javascript" src ="qunit-1.13.0.js"></skript>
    <skript tipa ="text/javascript" src ="blanket.min.js"></skript>

    <skript>
        modul("getIDFromLookup");
        test("QuizUtil getIDFromLookupField", Funkcija () {
            var goodValue = "1;#Paul Galvin";

            enako(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 2 se";
            enako(getIDFromLookupField(undefined), undefined, "Undefined argument vnosa mora vrniti Nedefiniran rezultat.");
            enako(getIDFromLookupField(""), undefined, "Prazen argument vnosa mora vrniti nedefinirana vrednost.");
            enako(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), undefined,"Naj vedno vrne rezultat kabriolet na celo število");
            enako(getIDFromLookupField("2;#drugo osebo"), "2", "Preverjanje [2;#drugo osebo].");
            enako(getIDFromLookupField("9834524;#dolge vrednosti"), "9834524", "Velike vrednosti test.");
            notEqual(getIDFromLookupField("5;#kdorkoli", 6), 6, "Testiranje a notEqual (5 ni enako 6 za ta vzorec: [5;#kdorkoli]");

        });

        modul("htmlEscape");
        test("QuizUtil htmlEscape()", Funkcija () {
            enako(htmlEscape("<"), "&lt;", "Bežijo manj kot upravljavec ('<')");
            enako(htmlEscape("<razred del =  "someclass">Nekaj besedila</div>"), "&lt;razred del =&quot;SomeClass&quot;&gt;Nekaj besedila&lt;/div&gt;", "Bolj zapletene test niz.");
        });

        modul("getDateAsCaml");
        test("QuizUtil getDateAsCaml()", Funkcija () {
            enako(getDateAsCaml(nove Datum("12/31/2013")), "2013-12-31T:00:00:00", "Testiranje nespremenljivo zapisan datum: [12/31/2013]");
            enako(getDateAsCaml(nove Datum("01/05/2014")), "2014-01-05T:00:00:00", "Testiranje nespremenljivo zapisan datum: [01/05/2014]");
            enako(getDateAsCaml(nove Datum("01/31/2014")), "2014-01-31T:00:00:00", "Testiranje nespremenljivo zapisan datum: [01/31/2014]");
            enako(getTodayAsCaml(), getDateAsCaml(nove Datum()), "getTodayAsCaml() mora biti enak getDateAsCaml(nov datum())");
            enako(getDateAsCaml(»nesmisel vrednost"), undefined, "Poskusite dobiti datum vrednost neumnosti.");
            enako(getDateAsCaml(undefined), undefined, "Poskusite dobiti datum v [undefined] datum.");
        });

        modul("getParameterByName");
        test("QuizUtil getParameterByName (iz niza poizvedbe)", Funkcija () {
            enako(getParameterByName(undefined), undefined, "Poskusite dobiti Nedefiniran parameter vrne undefined.");
            enako(getParameterByName("ne obstaja"), undefined, "Poskušali dobiti vrednost parametra, ko vemo, da je parameter ne obstaja.");

        });

        modul("Piškotki");
        test("QuizUtil različne funkcije piškotek.", Funkcija () {
            enako(setCookie("test", "1", -1), getCookieValue("test"), "Get piškotek nastavim should opus.");
            enako(setCookie("anycookie", "1", -1), True, "Nastavitev veljaven kuhanje should odziv"true".");
            enako(setCookie("noro piškotek ime !@#$%"%\^&*(()?/><.,", "1", -1), True, "Nastavitev slabo piškotek ime naj vrne"false".");
            enako(setCookie(undefined, "1", -1), undefined, "Mimo definirana kot ime piškotka.");
            enako(getCookieValue("ne obstaja"), "", "Piškotek ne obstaja test.");
        });

    </skript>
</vodja>
<telo>
    <div ID= "qunit"></div>
    <div ID= "qunit-stalnica"></div>

</telo>
</HTML>

Obstaja nekaj stvari, ki se dogaja tu:

  1. Navajanje svoj zbornik (QuizUtil.js)
  2. Navajanje Qunity.js
  3. Opredelitev nekaterih modulov (getIDFromLookup, Piškotki, in drugi)
  4. Dajanje a <div> katerega ID je "qunit".

Nato, Sem samo dvigni tostran in dobiš kaj takega:

image

Slika 3

Če pogledaš na vrhu, imate nekaj možnosti, dva, ki so zanimive:

  • Skrivanje opravil teste: Precej očitno.  Lahko pomagajo vaše oči, samo glej problematična področja in ni veliko nereda.
  • Modul: (padajočega): To bo filter preskusi na samo tiste skupine testov, ki jih želite.

Za preskuse, sami – nekaj pripomb:

  • Samoumevno je, da morate pisati kodo tako, da je testirati na prvem mestu.  Z orodjem lahko pomaga izvrševanje discipline. Na primer, Sem imel funkcijo, imenovano "getTodayAsCaml()”.  To ni zelo testirati, saj se noben argument vnosa in test za enakost, bi morali nenehno posodabljanje test kodo, da odražajo trenutni datum.  Sem refactored Dodajanje podatkov vhodni parameter in nato mimo trenutni datum, ko hočem današnji datum v obliki CAML.
  • Qunit okvirni dokumenti svoje testi in zdi zelo močna.  Lahko naredite preproste stvari, kot so testiranje za enakost in ima tudi podporo za style ajax klice ("pravi" ali zasmehovali, using vaš najljubši mocker).
  • Tekoč skozi proces tudi sile, da razmišljajo skozi rob primerih – kaj se dogaja z "neopredeljenih" ali null je prešla v funkcijo.  To pomožen mrtvih preprost test teh scenarijev.  Dobre stvari.

Pokritost z Blanket.js

Blanket.js dopolnjuje Qunit s sledenjem dejanski vrstic kode, ki izvršiti tekom teče vaš testov.  Vključuje pravico v Qunit kljub temu je povsem ločene od app, zelo lepo-res izgleda kot da je en brezšivne app.

To je blanket.js v akciji:

image Slika 4

image

Slika 5

(Dejansko moraš klikniti na "Omogoči pokritost" polje na vrhu [glej sliko 3] v ta namen.)

Označene vrstice na sliki 5 bili izvršeni po katerem koli od mojih testov, zato morate oblikovati test, ki povzročajo jih vršiti če hočem popolno zajetje.

Dobili blanket.js, ki delajo z naslednjim korakom:

  1. Prenesete iz http://blanketjs.org/.
  2. Dodati projektu
  3. Posodobite vaše strani pas test (QuizUtil_test.html v mojem primeru) takole:
    1. Referenčna koda
    2. Okrasite vaš <skript> reference takole:
    <skript vrsta= text/javascript"" src="QuizUtil.js" podatki zajemajo></skript>

Blanket.js dvigne atribut "podatkov-kritje" in ne njeno čarobno.  Kljuke v Qunit, Posodobi UI dodati možnost "Omogoči pokritost" in kot tančica tanka tkanina!

Povzetek (TL; DR)

Uporabo Qunit pisanje testnih primerov.

  • Travnato gričevje to
  • Dodati projektu
  • Pisanje test pas stran
  • Ustvarite vaš testi
    • Nekatere kode biti testable refactor
    • Bodite kreativni!  Razmišljati o crazy, nemogoče scenarijev in test jih nekako.

Uporabite blanket.js, da se zagotovi pokritost

  • Preverite, ali deluje Qunit
  • Travnato gričevje blanket.js ter povečati to v vaš projekt
  • Dodajte vaš test pas stran:
    • Dodajte sklic v blanket.js
    • Dodaj "podatkov-kritje" attribute v vaš <skript> Tag
  • Teči Qunit preskusov.

Nikoli nisem storil vse to pred in imel nekatere nepopolne stvari delajo v nekaj urah. 

Happy testiranje!

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Zadnji obleko, ki jo boste vedno nosite?

[Hitro Opomba-to je precej dolg post na zaposlitev odpiranje za mojo skupino tukaj v New Yorku in boste morali živeti v tri-državno območje, če vas zanima.]

Sem se pridružil Slalom Consulting nad 18 meseci in da je to moj najdaljših delo od 2007. Nisem načrt je tako. Pred niz delo skokov ki se je začela s svoj skok v svetu SharePoint, Sem bil na enem mestu za enajst let. Sem končno našel novo, trajno mesto za delo za dolge razdalje tukaj na slalomu.

Ta kraj je raste in rabim pomoč za nadzor, ki. Vrste pomoč rabim se navadno imenuje "Rešitve SharePoint arhitekt", čeprav sem našel besedo arhitekt nad in/ali nepravilno uporabijo v prostoru SharePoint zakaj precej prebiti zdaj. Sem se borila na kako blog o tem. Ne želim, da enostavno ven kup bullet točk v slogu kocke/Monster. Moje odlično najemanju vrstniki življati been početje to že :). Tako, Sem se odločil, da pristop "dan v življenju". Preberite in upoštevati:

1) Če pritožbe in

2) Ali ste vedeli v kosti, da lahko to storite.

Če ja, stik z mano (Paul.Galvin@Slalom.com) in naj 's talk.

To so, kaj lahko pričakujete v tipično teden/mesec kot arhitekt za rešitve na moji ekipi:

  • Projekti, pogosto več kot eno naenkrat. Nekateri projekti so velike in tako bi vi lasten to en projekt. "Teče" projekt pomeni, da imate nadzor in odgovornost za kakovost dostave. V skoraj vsakem primeru boste imeli PM in res močno ekipo devs, BAs, UX ljudi, itd., za podporo, ki jo. Vendar boste glavni obraz vidi odjemalec, skladi, itd. Ni ne skriva v senci v tej vlogi :). Si bom račun tokrat in cilj je, da si zaseden, za to 80 odstotkov časa.
  • Pomoč z dokumentacijo-svinje, RFP, krovi – vse, kar dobre stvari. Mislim, da imamo naše SVINJA proces navzdol zal tesen in trdna, tako da je dokaj formuliranega. Če ste se uporablja za pisanje svinje danes, naš proces ne bo izziv za vas. RFP – to so malo težje. Se nagibajo k treba začeti s dogovorili v naravi in RFP običajno potegnite v več različnih avtorjev. To je dobro in slabo, ampak predvsem dobro. To lahko dobite scrambly, ko smo morali manipulirati potrebo odlične storitve za stranke, hkrati pa poskuša osvojiti novo delo. Ste verjetno ne bo lastnik RFP, vendar bo moral prispevati odsekov.
  • Prodajnih klicev, vendar ne bližje. V mesecu, lahko pričakujete, da gredo na nekaj prodajnih klicev z našo prodajno ekipo. Boste MSP v sobi, zapiske in pomagali pri oblikovanju rešitev. Vendar, ne bo vprašal, ali pričakuje ravnati prodajnega cikla od začetka do konca. Ne potrebujete, da "prodajo,"samo morate biti miren glas razuma strokovnjak v sobi. Ta gradi zaupanje in zato si tam. seveda, Če vam je všeč, prodajo, potem obstaja soba za vas, da tukaj rastejo tudi.
  • Pomoč pri zaposlovanju. Imamo neke vrste napotitev program, torej če veste, da res močni ljudje v Skupnosti, ki mislite, morajo biti del Slalom, lahko koristi tako. Smo namenske nabornikov (ki so odlično) narediti levji delež tovrstnega dela. Resnično pomagali je anketirala kandidatov – so primerna kulturno? Ne vedo, da svoje stvari? Lahko * svoj * življenje lažje? 🙂 This comes in spurts, nekajkrat na mesec, Čeprav v nekaj mesecih vam ne bi to sploh.
  • Pomoč, opredeljevanje najboljših praks, izgradnjo naše IP in da nas bolj konkurenčni na trgu. Ste izkušeni reveža/gal. Ste bili okrog bloka-ne samo v SharePoint, vendar imate izkušnje v drugih tehnologij in živeli z dobre in slabe (tudi grozno) projekti vsega. Kot posledica, veste, kaj deluje in kaj ne. Boste želeli, da te izkušnje delite z nami na podlagi dan v taktičnem smislu (i.e. res dobro vodeno vaše projekte) ampak tudi strateško. "Najboljše prakse" je malo overused kot izraz in sem okleval, da ga uporabljajo. Osnovna ideja je, da ste prihajajo kot izkušena oseba z globoko in ustrezne izkušnje in želimo povezati najboljše svoje learnings v kako smo sodelovanje s strankami na podlagi dan.
  • zabavaj se -mi smo kup zelo integriran. Želim, da bi se izognili še en Plitkoumnost, ampak to je res zmožen v tem primeru-zelo se trudimo (neke vrste) in igramo še težje :). Tam je Aaron Sorkin nekakšen šala tukaj, prostor je vedno poln pametne ljudi, radi našo pijačo in organiziramo pošteno število zabavno prireditev-filmski večer, baseball potovanj (tudi če so grozno, praktično zlo ekip).

Če lahko povzamem it vse v eno besedo, Bi uporaba besede "vodstvo". Vodi projekte, sprejeti vodilno vlogo pri gradnji praksa (IP, izgradnjo ekipe), itd.

Ampak čakati! Obstaja več! Zakaj drugega dela na slalomu?

  • Izjemno enotnosti namena-vsakdo želi, da rastejo to stvar ven.. "Ta stvar" je newyorški urad. Vsakdo je na krovu, s tem.
  • Veter v jadra-sestra pisarne, sestra prakse – Slalom je "polnem obratovanju", svetovanje, organizacija. Vodim do prakse SharePoint (a "praksi območju svinec" v Žargon Slalom). Imam sestro praks na 11 drugi uradi Slalom. Tako čeprav sem kralj kolikor SharePoint gre tukaj v New Yorku Slalom, Imam strokovno prakso v Chicagu, Seattle, Dallas, Atlanta, Boston, itd. iz katere lahko rišem na podporo. To je res najboljše iz obeh svetov-znatna avtonomnost tukaj v New Yorku, vendar dostop do ton talenta v organizaciji.
  • Veter v prodajo (2) -Naredimo več kot SharePoint – veliko bolj. Naredimo dvo, CRM, UX, poslovno svetovanje, Mobile, razvoj po meri in drugi. Smo dobri pri navzkrižno prodajo med sebe in smo dobro na slikarstvo – in še pomembneje, dali na – "polno storitev" sliko za naše stranke. To je še posebej privlačna za mene. Sem bil na veliko manjši orgs deluje na SharePoint nastopov in uničen znova in znova, ker smo bili golobe, skriva kot "SharePoint ljudi." To ne bo zgodilo z Slalom in dobimo kot rezultat narediti bolj zanimivo delo.
  • Lokalna model-št potovanja.
  • Dolgoročno rast – Slalom že gangbusters. Veliko rast in stabilnost. Rast pomeni tudi, da moramo danes najem voditelji glavo gor nove ekipe, kot smo dodali več strank in osebje za podporo teh strank.

Lahko bi šla na, ampak sem verjetno že šli predolgo. Mislim, da ste captured Bistvo tukaj. Če razmišljate o spreminjanje delovnih mest, in to izgleda dobro za vas, Let's talk.

Če ste zadovoljni, na vaše sedanje zaposlitve – spregovorimo nekako :). Bil v veliko krajev in je bil zelo "srečni" v času. Slalom je drugačen in bi pozdravil priložnost, da se boste prepričali, da.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

Hitro in enostavno: Nastavite velikost a elementov v polju s seznamom v App Store za Windows

V Windows Store App sem ustvariti, Želim pokazati uporabnik različne informativne sporočila.  Sem izbral seznamskem polju kot orodje za prikaz, tako da lahko premikate skozi njih in vse, kar dobre stvari. 

Sporočila so informativni le, tako ni potrebe za zagotavljanje vseh teh dodatnih presledkov okrog njih, saj uporabnik nikoli jih lahko izberete za nič.  Privzeto obnašanje zapisati zagotavlja precejšen znesek odmika in sem hotel znebiti se to.  No.... neposredno ne morete storiti to reč v zapisati v seznam.  VENDAR, lahko to storite artiklom dodate:

        zasebno nična AddGameStateLogMessage(niz theMessage)
        {
            Polje z besedilom t = nove Polje z besedilom();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Debelina thisPadding = nove Debelina(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nove ListBoxItem();
            Li.Vsebina = t;
            Li.MaxHeight = 25;
            thisPadding = nove Debelina(5, 0, 5, 0);
            Li.Oblazinjenje = thisPadding;

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

v zgoraj, Sem ustvarite polje z besedilom in nastavite njegovo pisavo, svoj oblazinjenje, itd.

Naslednji, Ustvarite a ListBoxItem in nastavite njegove vsebine v oblikovano učbenik.

Končno, Vstavim v ListBoxItem v zapisati v seznam.  (Želim pokazati najnovejših sporočil na vrhu seznama, zato vključka(0,Li) namesto enostavno dodate() poziv.).

I bo treba poteg to malo preden sem res zadovoljna s seznamom vedenje pa vzorec, ki je prikazan zgoraj, je bilo zelo plodno.  Upajmo, da nekdo meni, da je koristno.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin