İnsanlar arama kapsam olarak belirtme / SharePoint kullanarak içerik kaynağı 2013 REST API

SharePoint ile çalışmak için bir nedeni vardı. 2013 Arama API'sı üzerinden ilk kez dinlenme. Kişileri aramak istedim, belgeleri değil. İşte bu öğrenme anahtar GUID'sine üzerinden içerik kaynakları belirtin (ya da en azından bu durumda). Aşağıdaki jQuery pasajı gösterir nasıl:

    loadExpertsAsync: işlevi() {

        jQuery.support.cors = TRUE;

        $.Ajax({
            URL: Bu.CreateFullApiUrl() +
                "?Querytext 'portalları' =&kaynak kimlik = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Becerileri,AboutMe,İlgi alanları,İş unvanı,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            yöntemi: "Al",
            başlıkları: { "Kabul etmek": "uygulama/json; Odata = verbose" },
            önbellek: yanlış,
            başarı: işlevi (Sonuç) {

Benim durumumda, I koşma API SharePoint karşı online. GUID elde etmek için, Aşağıdaki adımları takip:

  1. SharePoint Yönetim Merkezi'ne erişmek
  2. "Sol navigasyon arama" seçin
  3. "Sonuç kaynaklarını Yönet" seçin
  4. "Yerel halkın sonuçları" seçin
  5. URL bakmak.

Benim URL gibi bir şey görünüyordu.:

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

Kaynak kimlik parametresidir ne amele için beni.

(Kaynak kimlik aslında bir tür SP ile kalıcı şeyler olabilir anlamak, but I’ll always check anyway 🙂 ).

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Örnek SharePoint diğer aramalar

İş için beni ve de yardımcı olabilir örnek dinlenme çağrıları bir dizi işte. Güncelliği 02/2014, iki örnek var 🙂

  1. Adının içinde boşluklar içeren bir sütun başvurusu
  2. Çoklu seçim bir sütun başvurusu
  3. Geri kalan yolu ile insanların arama yapın

 

Bunun için zaman geçtikçe ekleyeceğiz.

İşte bazı yararlı mürekkepler de buldum:

Adının içinde boşluklar içeren bir sütun başvurusu

"Blog yazarı" adlı bir sütun ile özel liste oluşturma (Blog ile yazar arasındaki boşluk).

O sütuna başvurmak için $select olduğunu:

image

Sadece "_x0020_" boşluğun yerine. Karşıdan karşıya belgili tanımlık enterne _x0020_ birçok örneklerde gördüğümüz ve dinlenme farklı.

Eğer bunu yapmazsan, Böyle bir hata mesajı almak sorumlu:

İfade “Blog yazar” geçerli değil.

Kolay yeterli.

Referans çoklu seçim arama sütunu

Kurmak:

  1. Kategoriler adlı özel liste oluşturma.
  2. Bazı Kategoriler ekleme. Thusly Kategoriler eklendi:image
  3. MockBlog adı verilen başka bir özel liste oluşturun ve Kategoriler çoklu seçim liste sütun olarak eklemek (nasıl roll ise sütun sitesi veya).

Bazı öğeler Mockblog listenize ekleyin ve hazır.

JQuery kullanarak Ajax tarzı aramayý şuna benzer:

serverUrl  = "/_api/web/liste/GetByTitle('MockBlog')/öğeleri" +
             "?$seçin Title =,Kategoriler/başlık,Blog_x0020_Author/başlık" + 
             "&$genişletme Blog_x0020_Author =,Kategoriler";

SharePoint söylüyoruz "tüm kategoriler için başlık verin (Kategoriler/başlık). Fiili değerlerini almak Başlık tarafından $genişletmeIng Kategoriler listesi." (Benim huzurlu paraphrasing muhtemelen oldukça gevşek, Ama bu ne kadar bu yorumlama).

Eğer bu yolu ile JavaScript ve kemancı çıkış kullanılarak yapıyoruz, Böyle bir şey alıyorsun:

 

image

(Yukarıda bir JSON nesnesi olan)

Geri kalan yolu ile insanların arama yapın

Ben bu konuda blogged ayrı ayrı. Yerel halkın içerik kaynağı GUID değeri olan kaynak kimlik parametre belirtmek için anahtarıdır. (Kapsamları çağrılacak kullanılan içerik kaynakları ve her şey benim için bir kapsam aramak için Ah-benim çok zor değil mi!).

Devamı bu konuda burada: http://www.mstechblogs.com/paul/?p=10385

 

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Hızlı ve kolay: DİNLENME kullanarak bir SharePoint sitesi oluşturma

Bunu nasıl kaynaklarını gösteren etrafında vardır., Ama kapsamlı gitmek için bir link bulamadım., İşte.

REST API kullanarak bir SharePoint sitesi oluşturabilir.  Tamamen pişmiş bir örnek:

<!--
    SiteRequestForm.html: Bilgi toplama ve kullanıcı için bir site oluşturun.
-->

<Merkezi>
<Tablo>
    <tr>
        <TD>Site adı:</TD>
        <TD><giriş türü= "metin" adı"SiteAdı =" kimliği"SiteAdı =" /></TD>
    </tr>
    <tr>
        <TD colspan"2 =">
            <giriş türü"submit =" kimliği"CreateSiteButton =" değer= "Site Oluştur" />
        </TD>
    </tr>
</Tablo>
</Merkezi>

<komut dosyası src="../Plugins/jQuery-1.11.0.min.js"></komut dosyası>

<komut dosyası>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametreleri": {
                __metadata: { "türü": "SPWebInfoCreationInformation" },
                URL: "Paultest1",
                Başlık: "Paultest1",
                Açıklama: Paul tarafından web diğerleri tarafından oluşturulan"!",
                Dil: 1033,
                LCID'sine: "sts",
                UseUniquePermissions: yanlış
            }
    },

    createSite: işlevi () {

        jQuery.support.cors = TRUE;

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

            başlıkları: {
                "Kabul et": "uygulama/json; Odata = verbose",
                "content-type": "uygulama/json;Odata = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            veri: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            başarı: işlevi () { Uyarı("başarı"); },
            hata: işlevi () { Uyarı("hatası"); }

        });
    },

    wireUpForm: işlevi () {
        $("#CreateSiteButton").' ı tıklatın(işlevi () {
            Uyarı("Yaklaşık denemek ve siteyi oluşturmak için.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</komut dosyası>

Başarılı olduğunda, Bu yanıt bir JSON paket al:

image

Temel düşünce ve bu olası üzerinden Öğrenmeler:

  • Bu yaklaşım, jQuery kullanır.  Benim durumumda, benim jQuery kütüphanesi bulunur ".../ plugins. "  Bu senin en sevdiğin JQ konumu belirtmek için değiştirmek istediğiniz.
  • Kopyalayabilir ve içerik Düzenleyicisi Web Bölümü sayfasındaki tüm bu pasajı yapıştırın ve sadece iyi çalışması gerekir.  Youll'istemek-e doğru JQ başvuru emin olun ve API çağrısı bitiş noktası değiştirmek için.
  • URL'nin göreli olarak API'ın bitiş noktasıdır.  Benim durumumda, altında alt siteler oluşturma https://bigapplesharepoint.com
  • Bir içerik-uzunluk sağlamak gerek yok. Bazı blog yazıları ve MSDN belgesi anlamına gelir senin böyle, Ama benim için otomatik olarak oldu., varsayıyorum $.ajax çağrısı tarafından ele alınır.
  • Bu satır için bir "yasak" yanıtı önlemek için gerekli: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Bunu yapmak için başka yolları da vardır, Ama bu çok hoş.  Blog için bu kısayolu sağlanan bağlantıyı kaybettim.  H/T size, gizemli blogger!

İyi şanslar ve kimse bu yardımcı olur.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

SharePoint çabuk denize indirmek içinde göreli URL'ler ile can sıkıcı bir sorun üstesinden gelmek

Hızlı başlatma gezinti geçen gün bir bağlantı eklemek istedim ve SharePoint söyledi:

image

Saf metin sürümü:

URL geçerli ve geçersiz bir karakter ya da ile başlar emin olun (numara işareti (#) ya da eğik çizgi (/)) veya geçerli bir iletişim kuralını destekleyen (Örneğin, ' http://’, ' https://’, ' dosya://’, ' ftp://’, ' mailto:’, ' Haberler:’).

"Blech ve çiçeği!"Dedim.

Bu geçici bir çözüm bulmak bilinen bir bağlantı-e doğru çabuk denize indirmek içinde ve davranışını geçersiz kılmak için JavaScript kullanmaktır.

Bu test etmek için, thusly, testi sitenize yeni bir bağlantı eklemek:

image

JQuery kullanılan. Bunu çözmek için, biraz JavaScript ve jQuery favori tekniği kullanarak sayfaya ve bu kod satırını ile:

 

$(Belge).hazır( işlevi () {

    $("bir:içerir('Test URL değiştirme')").' ı tıklatın(işlevi () { Uyarı("Değiştirilen tıklayın davranış!"); geri dönmek yanlış;});

});

Amcan Bob.

JQuery seçimi bulur her <bir> adını "Test URL değiştirme" olan etiket. Sen-ebilmek istemek-bul-bağlı olarak, bağlantı ve bu tune için.

Devamı(işlevi() Ne zaman kullanıcı tıkırtı ne SharePoint yapardı geçersiz kılar. Ya da yanlış "geri" Bu şeyler yapmak ve href şey de denemek emin olun, hangi hedef neredeyse kesin değil mi.

Bu yapıldı ve bir SharePoint çevrimiçi ortamda test ama gerektiğini iyi iş 2010 ve daha önce de.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Hızlı ve basit: SharePoint dinlenme çağrı tek döndürür 100 Kayıtları

Ben bir kamu bakan web sitesinde burada içinde benim SharePoint uygulama için çalışıyoruz New York ve içerik göstermek için bir sürü JavaScript ve REST telefonu kullanır.

Ana hat geliştirme sırasında, Sadece küçük bir veri kümesi oluştur 10 veya satırları özel liste ve dinlenme aramalarıma oradan çok çekti.  Bir kez birkaç yüz beklenen büyüme için test edilecek verilerin satır için listesini çarptı., Ben tam olarak başlamıştı bulundu. 100 geri kalan telefonlarıma geri satırları.

Adres için çok basit bir şey bu.  Benim durumumda (ve çoğu zaman inanıyorum), varsayılan diğer SharePoint için çağırır. (ve muhtemelen bir endüstri standardı olarak?) geri dönmek 100 satırları.  Daha fazla varsayılan dönmek için, Aramanız için $top parametresini kullanın, olarak:

/Insights Dev/_api/Web/Lists/GetByTitle olsun('MockBlog')/öğeleri?$seçin ID =,Başlık,Kategoriler/başlık,Blog_x0020_Author/başlık,DatePublished,BlogSummary&$genişletme Blog_x0020_Author =,Kategoriler&$Filtre =&$Top = 9999

Ben aldım 9999 Bu durumda beri growth-wise biliyorum, orada alışkanlık'var olmak daha--dan 200 veya satırları bir yıl içinde bu listeye ekledi.  Hantal hale gelirse, Yolun aşağısında bir disk belleği uygulayabilirsiniz.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Hızlı ve basit: "Geçersiz URL parametresi çözmek” lists.asmx UpdateListItems ile sorun

UpdateListItems ile lists.asmx yolu ile çalışırken, hata oluşturmak çok kolaydır:

Geçersiz URL parametresi.

Sağlanan URL geçersiz bir komut veya değeri içerir.. Lütfen URL'yi yeniden denetleyin.

Kimliği alanına dahil etmek boş zaman bu hatayı alabilirsiniz güncelleştirmek için alan listesi.  Bu, Bu SP web hizmetleri çok gibi, Kimliği özniteliğinde kimliği eklemeniz gerekir beri biraz counterintuitive olduğunu <Yöntemi> öğe.  Ve sen kimliği güncelleme ve muhtemelen ilk etapta istiyorum asla.

Bu SOAP Zarf works:

<soapenv:Zarf xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Vücut>                      
    <UpdateListItems xmlns =' http://schemas.microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <güncelleştirmeleri>                     
         <Toplu OnError ="Devam">
          <Yöntem kimliği ="1" Cmd ="Güncelleştirme">
            <Alan adı ="CooperativeLock">kilitli!</Alan>
            <Alan adı ="KİMLİĞİ">1</Alan>
          </Yöntemi>
        </Toplu iş>                     
        </güncelleştirmeleri>                
      </UpdateListItems>             
  </soapenv:Vücut>         
</soapenv:Zarf>

Eğer kimliği alanı başvurusu şerit sataşmak "Geçersiz URL parametresi" iletisini alırsınız:.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

 

Zavallı adam, JavaScript önbelleğe alma'nın

[TL;DR sürüm: zaman uyumsuz arama sonuçlarını depolamak için tanımlama; Geçmiş zaman uyumsuz arama sonuçlarını hemen işlemek ve sonra onları sayfa yükleme sonra doğrulayın.]

SharePoint intranet sitesindeki bir müşteri için bu özellikleri çalıştım, diğer şeyler arasında, stilize bir ikincil gezinti menüsü seçeneklerini düzenli eski özel liste yönetilir.  Fikir istemci etkileyen veya onun tarafından koymak Genel gezinti tarafından etkilenen varlık olmadan "kendi" sitenin menü kontrol etmek alır.

(Bu temelde bir sitenin davranış hakkında hemen hemen her şeyi değiştirmek için bazı CSS ve JS yükler ama bu başka bir yazı için bir HTML dosyasına işaret eden bir CEWP ekleme konusunda son derece yıkıcı bir şey)

Bu basit kodu:

Sore spot burada olduğunu ne zaman kimse bir sitenin sayfaları hits, kullanıcının web tarayıcısı listeden öğeleri almak için dışarı ulaşıyor.  Tam ve test dev bir kez şeyler olduğu için stabil ve tam kanıtlamıştır, Buna gerek yok daha fazla 99% zamandan beri menü nadiren değişir.  Ayrıca bu cesur yeni dünya hiper-ajaxy web sitelerinin ortak bir garip UI etkiler vardır – sayfa oluşturur ve ancak o zaman menü hale geliyor.  Gergin ve rahatsız edici benim görüşüme göre.  Ve gergin. Yani, önbelleğe alma. 

Thusly mantığı modifiye:

  • Ben son okurken, menüyü içeren tarayıcı çerezde arayın
    • Eğer bulundu, Bunu hemen işleme.  Sayfa yükleme bitirmesini beklemek gerekmez.  (HTML burada stratejik olarak yerleştirilmiş emin olmanız gerekir, Ama bu kadar da zor değil).
  • Sayfanın yüklenmesini bitirmek ve bir zaman uyumsuz yük kadar dinlenme ya da lists.asmx kullanarak listeden menü öğeleri için arama yapmak bekleyin
  • Çerez karşı elimizdeki karşılaştırın
    • Eşleşiyorsa, DURDUR
    • Aksi takdirde, jQuery kullanarak, Eğer bir grup dinamik olarak doldurmak <Li>' ın içinde bir <ul>
  • Tüm biçimlendirme için CSS kullanma
  • Kar!

Bazılarınız söyleyeceksin, "hey! menü yine de okuduğunuz bu yana çok önbellekleme burada olmayacak her zaman.”  Ve haklısın-break herhangi bir sunucu vermiyorum.  Ama çağrı zaman uyumsuz ve sonra sayfayı ilk olur çünkü HTML yükü tam olarak işler, "kullanıcıya daha duyarlı hissediyorum".  Menü çok sayfa çizer olarak işler.  Eğer menü değiştirmek için, kullanıcı bir gergin yeniden çizmek menü için tabi tutulur, Ama sadece bir kere.

Bu önbelleğe alma daha verimli hale getirmek ve aynı zamanda sunucu yardım için bazı yolları vardır.:

  • "Tanımlama bilgisi önbelleği" için en az geçerli bir kural koymak 24 Saat veya diğer bir süre. Süresi dolan kurabiye yok sürece, Çerezin menü anlık kullanın ve asla sunucu hit.

Şu an aklıma gelen tek şey... :). 

Kimse burada akıllı bir fikrin varsa onları bilmek isterdim..

Ve son olarak – bu yöntem-ebilmek var olmak kullanılmış için diğer şeyler.  Bu istemcinin sayfa verilere şeylerin bir dizi çeşitli sayfalarda vardır., pek çoğu nispeten nadiren değiştirme (haftada bir veya ayda bir gibi).  İşlevselliği belirli alanları hedefliyorsanız, daha duyarlı bir kullanıcı Arabirimi yerel tanımlama bilgisi deposundan içerik çekme ve hemen işleme verebilir.  Sunucu herhangi bir devir kurtarmıyorsun bile daha hızlı kullanıcıya hissediyor.  Sen Can sunucu döngüsü bu yerel tanımlama bilgisi önbelleği geçersiz kılmak için bazı koşullar ve tetikleyiciler karar vererek kaydedin.  Tüm durumsal ve iddialı şeyler ve gerçekten en eğlenceli :). 

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Nasıl Yapılır: Birim testi ve Test kapsamındaki QUnit.js ve Blanket.js ile bir Office için Yapılandır 365 SharePoint uygulaması

Intro

Birim test keşfetmek olmuştur ve online Office SharePoint için yeni bir SharePoint uygulaması üzerinde çalışmak için JavaScript test kapsamı 365 Suite.  Bana açık araştırma yolları açtı Qunit.js ve sonra da sağ, Hedef Blanket.js.

QUnit birim testleri ayarlamak ve grup onları modüller edeyim.  Bir modül ilgili testleri düzenlemek için basit bir yol olduğunu. (Bunu gerektiği gibi kullanarak emin değilim, Ama benim için şu ana kadar tanımladığınız testleri küçük kümesiyle defa çalışıyor).

Blanket.js Qunit ile entegre ve o-ecek göstermek beni-e doğru-ve daha da önemlisi – aslında test çalışması sırasında yürütülen değil gerçek satır JavaScript.  Bu "kapsam"-diğerleri olmayan çalıştırılır satırı testi ile kaplıdır..

Kadar iyi test çalışmalarını ayarlama ve kapsam görüntüleme arasında, Biz bizim kod hataları gizlenmiş riskini azaltabilir.  İyi zamanlar.

Qunit

Projeyi Visual Studio var varsayarak kurmak, JavaScript paketi indirerek başlangıç http://qunitjs.com.  JavaScript ve karşılık gelen CSS çözümünüze eklemelisiniz.  Benim şuna benzer:

image

Şekil 1

Gördüğünüz gibi, I was istimal 1.13.0 o zaman bu blog yazısı yazdı.. Download ve CSS dosyası eklemek unutmayın.

Bu yoldan çekilin, bir çeşit test bandı oluşturun ve Qunit bit için sonraki adımdır.  "QuizUtil.js" denilen "gösterildiği gibi QuizUtil_test.html" adı verilen bir HTML sayfası oluşturan bir komut dosyası işlevleri bir sürü test ediyorum:

image Şekil 2

İşte kod:

<!DOCTYPE HTML>
<HTML xmlns"http =://www.w3.org/ 1999/xhtml">
<kafa>
    <Başlık>QuizUtil testi ile Qunit</Başlık>
    <bağlantı rel"stil sayfası =" href="../CSS/qunit-1.13.0.css" />
    <komut dosyası türü= text/javascript"" src="QuizUtil.js" veri-kapak></komut dosyası>
    <komut dosyası türü ="text/javascript" src ="qunit-1.13.0.js"></komut dosyası>
    <komut dosyası türü ="text/javascript" src ="blanket.min.js"></komut dosyası>

    <komut dosyası>
        modülü("getIDFromLookup");
        test("QuizUtil getIDFromLookupField", işlevi () {
            var goodValue = "1;#Paul Galvin";

            eşit(getIDFromLookupField(goodValue) + 1, 2), "Kimliği [" + goodValue + "] + 1 2-meli var olmak";
            eşit(getIDFromLookupField(Tanımsız), Tanımsız, "Tanımsız giriş bağımsız değişkeni tanımsız sonuç döndürmelidir.");
            eşit(getIDFromLookupField(""), Tanımsız, "Boş giriş bağımsız değişkeni tanımsız bir değeri döndürür.");
            eşit(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), Tanımsız,"Her zaman sonuç üstü açık bir tamsayıya dönmesi gerekir");
            eşit(getIDFromLookupField("2;#bir başka kişi"), "2", "Kontrol [2;#bir başka kişi].");
            eşit(getIDFromLookupField("9834524;#uzun değeri"), "9834524", "Büyük bir değer test.");
            notEqual(getIDFromLookupField("5;#kimse", 6), 6, "Bir notEqual test (5 eşit değildir 6 Bu örnek için: [5;#kimse]");

        });

        modülü("htmlEscape");
        test("QuizUtil htmlEscape()", işlevi () {
            eşit(htmlEscape("<"), "&lt;", "Kaçan bir küçüktür işleci ('<')");
            eşit(htmlEscape("<div class =  "someclass">Bazı metin</div>"), "&lt;div class =&quot;SomeClass&quot;&gt;Bazı metin&lt;/div&gt;", "Daha karmaşık sınama dizesi.");
        });

        modülü("getDateAsCaml");
        test("QuizUtil getDateAsCaml()", işlevi () {
            eşit(getDateAsCaml(Yeni Tarihi("12/31/2013")), "2013-12-31T:00:00:00", "Sabit kodlanmış Tarih testi: [12/31/2013]");
            eşit(getDateAsCaml(Yeni Tarihi("01/05/2014")), "2014-01-05T:00:00:00", "Sabit kodlanmış Tarih testi: [01/05/2014]");
            eşit(getDateAsCaml(Yeni Tarihi("01/31/2014")), "2014-01-31T:00:00:00", "Sabit kodlanmış Tarih testi: [01/31/2014]");
            eşit(getTodayAsCaml(), getDateAsCaml(Yeni Tarihi()), "getTodayAsCaml() getDateAsCaml eşit olmalıdır(Yeni Tarih())");
            eşit(getDateAsCaml("saçmalık değeri"), Tanımsız, "Tarihi bir saçmalık değerinin elde etmeye çalışmak.");
            eşit(getDateAsCaml(Tanımsız), Tanımsız, "Tarihi elde etmeye çalışmak [Tanımsız] Tarih.");
        });

        modülü("getParameterByName");
        test("QuizUtil getParameterByName (sorgu dizesi)", işlevi () {
            eşit(getParameterByName(Tanımsız), Tanımsız, "Elde etmeye çalışmak tanımsız parametresi tanımsız dönmek.");
            eşit(getParameterByName("mevcut değil"), Tanımsız, "Biz parametre yok biliyorum parametre değeri elde etmeye çalışmak.");

        });

        modülü("Tanımlama bilgileri");
        test("QuizUtil çeşitli tanımlama işlevleri.", işlevi () {
            eşit(setCookie("testi", "1", -1), getCookieValue("testi"), "Get set kurabiye çalışması gerekir.");
            eşit(setCookie("anycookie", "1", -1), TRUE, "Geçerli bir pişirme ayarı 'true' döndürür.");
            eşit(setCookie("çılgın tanımlama bilgisi adı !@#$%"%\^&*(()?/><.,", "1", -1), TRUE, "Kötü tanımlama bilgisi adı ayarlama 'false' a dönmelidir.");
            eşit(setCookie(Tanımsız, "1", -1), Tanımsız, "Geçen tanımlama bilgisi adı olarak tanımlanmamış.");
            eşit(getCookieValue("mevcut değil"), "", "Tanımlama bilgisi testi yok.");
        });

    </komut dosyası>
</kafa>
<vücut>
    <div kimliği"qunit ="></div>
    <div kimliği"qunit-fikstür ="></div>

</vücut>
</HTML>

Orada birçok şey oluyor burada:

  1. Kodumu başvurma (QuizUtil.js)
  2. Başvuru Qunity.js
  3. Bazı modüller tanımlama (getIDFromLookup, Tanımlama bilgileri, ve diğerleri)
  4. Yerleştirerek bir <div> ID "qunit" mı.

O zaman, Bu sayfa yukarı çekin ve böyle bir şey almak:

image

Şekil 3

Üstünde bakarsanız, birkaç seçenek var, ikisi de ilginç:

  • Testler geçti gizle: Çok açık.  Sadece sorun alanları ve yığılmayı değil bir sürü görmek göz yardımcı olabilir.
  • Modülü: (damla aşağı): Bu testler sadece bu gruplara testlerin istediğiniz aşağı süzer.

Testler kendilerini – birkaç yorum gelince:

  • Bu öyle ki ilk etapta test edilebilir kodunuzu yazmanız gerektiğini söylemeye gerek yok.  Aracı kullanarak bu disiplin uygulamak yardımcı olabilir. Örneğin, "GetTodayAsCaml adında bir işlevi vardı.()”.  Hiçbir giriş bağımsız değişkeni alır bu yana bu çok test edilebilir değildir ve eşitlik için sınamak için, sürekli geçerli tarihin yansıtması için test kodu güncelleştirmeniz gerekir.  Ben bir veri giriş parametresi ekleyerek daha sonra geçerli tarihten bugüne CAML biçimde istediğim zaman geçirmeden refactored.
  • Kendi test Qunit framework belgeleri ve oldukça sağlam görünüyor.  Eşitlik için sınama gibi basit şeyler yapabilirsiniz ve ayrıca ajax tarzı telefon desteği vardır ("gerçek" veya alay senin favori mocker kullanma).
  • Sürecinden de kenar durumlarda – ne "Tanımsız" ile olur düşünmek için zorlar veya null bir işlev geçirilir.  Bu senaryolar dışarı test ölü basit kolaylaştırır.  İyi malzeme.

Blanket.js ile kapsama

Blanket.js, testlerinizi ders sırasında yürütmek gerçek kod satırlarının takip ederek Qunit tamamlar.  O bütünleşmek sağ Qunit bile olsa tamamen ayrı bir app 's, o güzel oyun-bir kesintisiz app var gibi görünüyor.

Bu blanket.js eylem olduğunu:

image Şekil 4

image

Şekil 5

(Aslında üst "kapsamı etkinleştir" onay kutusunu tıklamanız gerekiyor [bkz: şekil 3] Bunu etkinleştirmek için.)

Şekilde vurgulanan satırlar 5 herhangi benim testleri tarafından yürütülen değil, Yani tam kapsama istiyorsanız idam etmelerine neden test hazırlamak gerekir..

Aşağıdaki adımları uygulayarak çalışma blanket.js olsun:

  1. Download http://blanketjs.org/.
  2. Projenize eklemek
  3. Test koşum sayfanızı güncelleştirin (Benim durumumda QuizUtil_test.html) aşağıdaki gibi:
    1. Başvuru kodu
    2. Süslemeleri, <komut dosyası> Bu şekilde başvuru:
    <komut dosyası türü= text/javascript"" src="QuizUtil.js" veri-kapak></komut dosyası>

Blanket.js kadar "gizli veri" özniteliğini seçer ve sihrini yok.  Qunit kanca, UI "kapsamı etkinleştir" seçeneği eklemek için güncelleştirir ve voila!

Özet (TL; DR)

Qunit test çalışmalarınızı yazmak için kullanın..

  • Download o
  • Projenize eklemek
  • Bir test koşum sayfa yazmak
  • Testlerinizi oluşturmak
    • Refactor kodunuzu test edilebilir olması için bir kısmını
    • Yaratıcı olun!  Çatlak gibi düşünüyorum, imkansız senaryoları ve zaten test.

Blanket.js kapsama sağlamak için kullanın.

  • Qunit çalıştığından emin olun
  • Blanket.js indirmek ve projenize eklemek
  • Test koşum sayfanıza ekleme:
    • Blanket.js bir başvuru ekleyin
    • Bir "gizli veri" özniteliğini ekleyin, <komut dosyası> etiket
  • Qunit testler.

Asla bunları daha önce yaptım ve bir avuç saat çalışan bazı temel şeyler vardı. 

Mutlu test!

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Şimdiye kadar giymek son takım?

[Hızlı Not-Bu bir iş benim grup burada New York için açılış oldukça uzun bir yazı olduğunu ve Eğer ilgileniyorsanız tri-devlet alanında yaşamak gerek.]

Ben Slalom danışmanlık katıldı içinde 18 ay önce ve bu yana en uzun süreli iş yapar 2007. Bu şekilde planı yoktu. İş atlamalı dize önce o zaman artık SharePoint dünyaya başladı, Ben on yıl bir yerde oldu. Nihayet yeni buldum, Slalom burada uzun mesafe için çalışmak bir yerde kalıcı.

Burası büyüyor ve kontrol için biraz yardıma ihtiyacım var. Her ne kadar ben mimar üzerinde ve/veya yanlış kullanılan kelime SharePoint alanı için tamamen a süre şimdi buldum yardım etmek I lüzum tür genellikle bir "SharePoint çözümleri mimarı" denir. Ben bu konuda blog nasıl mücadele oldum. Ben sadece liste madde işareti noktalarının zar/Monster tarzında bir demet dışarı istemiyorum. Mükemmel işe eş, zaten yapıyor :). Yani, "Life day" bir yaklaşım almaya karar verdim. Okumak ve düşünün:

1) Eğer temyiz ve

2) İster ki sen-ebilmek yapmak o, kemiklerde biliyorum.

Evet ise, bana ulaşın (Paul.Galvin@Slalom.com) ve konuşalım.

Bunlar tipik hafta/ay bir çözümleri mimar benim takım yapmak için ne bekleyebilirsiniz.:

  • Proje çalışması, sık sık daha fazla tek tek. Bazı projeler büyük ve bu yüzden size bir proje sahibi. "Bir proje çalışan" demektir, gözetim ve teslim genel kalitesini sorumlu olmasını. Neredeyse her durumda bir PM olacak ve devs gerçekten güçlü ekibi, Ticari Etkinlik raporu, UX insanlar, vs., sizi desteklemek için. Ancak istemciye görür ana yüz, güven ilişkileri, vb. İşte bu rolü gölgelerde hiçbir gizleme :). Bu kez fatura ve bunun için meşgul tutmak için hedeftir 80 Saat yüzdesi.
  • Evrak-SOWs yardım, DC'de, deste – tüm iyi şeyler. Ben oldukça denekler öyledir bizim ekmek işlemi oldukça sıkı ve sağlam olduğunu düşünüyorum. Bugün SOWs yazma için kullanılan konum, işlemimiz sizin için bir meydan okuma olacak değil. DC'de – Bunlar biraz zor.. Onlar doğal olarak öncelikle ısmarlama eğilimi ve DC'de genellikle birden fazla farklı yazarların çekin. Hem iyi hem de kötü, ama esas olarak iyi. Biz de yeni iş kazanmak çalışırken mükemmel müşteri hizmeti ihtiyacını dengelemek istediğinizde bu scrambly alabilirsiniz. Eğer muhtemelen bir RFP kendi olmaz ama bölümler katkıda istenir.
  • Satış görüşmeleri, değil bir yakın ama. Bir ay, satış ekibimiz ile satış aramaların bir çift olarak gitmek bekleyebilirsiniz. KOBİ salonunda olacağım, Not alma ve çözüm şekli yardım. Ancak, size sorulan alışkanlık veya satış döngüsünün başından sonuna kadar idare bekleniyor. "Satmak gerekmez,"odada uzman neden sakin ses olması yeterlidir. Bu güven ve güven inşa edilmiştir ve bu yüzden orada konum. Elbette, Eğer satış gibi, sonra orada burada çok büyümek için Oda.
  • İşe alma ile yardım. Biz tavsiye programı çeşit var, gerçekten bilmek Peki sizce toplumda güçlü millet Slalom parçası olmalıdır, Bu şekilde yararlanabilir. Biz İşverenler adadık (kim mükemmel) aslan payını bu tür iş yapmak. Gerçek yardım aday-görüşme oldukları uygun kültürel? Onlar işi biliyor musunuz? Onlar-ebilmek yapmak * zaman * hayat daha kolay? 🙂 This comes in spurts, birkaç kez bir ay, her ne kadar bazı aylarda bunu hiç değil mi.
  • En iyi yöntemler tanımlamak yardım, bizim IP oluşturmak ve bizi pazarda daha rekabetçi hale. Eğer deneyimli bir adam/gal konum. Blok etrafında-değil sadece SharePoint'teki oldum, ama diğer teknolojilerinde tecrübe ve iyi ve kötü yaşadı (bile korkunç) tüm projeler. Sonuç olarak, ne işleri ve ne değildir bilmek. Biz taktik anlamda günlük bazda bu deneyimi paylaşmak istiyorum (Yani. projeleriniz gerçekten iyi çalıştırmak) Stratejik açıdan. "En iyi uygulamalar" bir terim biraz gereksiz ve ben kullanmak için tereddüt. Derin ve ilgili deneyime sahip deneyimli bir kişi olarak gelen ve biz nasıl biz günlük olarak müşterilerle içine girerler, öğrendiklerini en iyileri entegre istediğiniz temel fikirdir.
  • İyi eğlenceler -Biz çok entegre bir grup vardır. Ben başka bir izlenimlerin önlemek istiyorum, ama bu durumda gerçekten uygun bir-biz çok çalışıyoruz (çeşit) ve biz bile zor oyun :). Burada şaka bir Aaron Sorkin tür, Oda her zaman akıllı insanlarla dolu, bizim gibi bizim içecek ve eğlence adil bir dizi organize etkinlikler-film gecesi, Beyzbol gezileri (olsalar bile korkunç, hemen kötü takım).

Eğer ı-işlem o tüm bir kelime, Ben kelime "liderlik." kullanmak istiyorum Yol projeleri, uygulama binanın içinde bir rol almak (IP, ekip oluşturma), vb.

Ama bekleyin! Daha fazla! Neden başka Slalom çalışması?

  • Niyet-olağanüstü birlik herkese bu şeyi büyümek istiyor. "Bu" New York ofisi şeydir. Herkes bu gemide olduğunu.
  • Ofisler, yelken-kardeş Rüzgar, kardeş uygulamaları-Slalom ise "tam hizmet organizasyon danışmanlık". Ben SharePoint uygulama kadar kurşun (bir "uygulama alanı"kurşun Slalom lingo içinde). Ben kız kardeşim var, uygulamalar 11 diğer Slalom ofisleri. Düz-se bile ım'kral kadar çok SharePoint burada Slalom New York ilgilidir, Ben Chicago arası uygulamalar var, Seattle, Dallas, Atlanta, Boston, vb. hangi ben destek çizebilirsiniz. Her iki dünyanın en iyi – New York ama yetenek kuruluş çapında tonlarca erişim önemli özerklik burada gerçekten.
  • Senin satışlarda Rüzgar (2) -Biz SharePoint-daha çok daha yapmak. BI yapıyoruz, CRM, UX, iş danışmanlığı, Cep, Özel gelişim ve diğerleri. Biz kendimizi arasında çapraz satış iyi ve biz boyama- ve daha da önemlisi iyi, "tam hizmet" resmi üzerine-müşterilerimiz için teslim. Bu özellikle benim için itiraz ediyor. Biz "SharePoint kişi" delikli güvercin oldukları SharePoint konser ve sinirli tekrar tekrar çalışan birçok küçük orgs adlı oldum Bu Slalom ile olmaz ve sonuç olarak daha ilginç işi olsun.
  • Yerel modeli-hiçbir seyahat.
  • Uzun vadeli büyüme-Slalom gangbusters devam ediyor. Büyüme ve istikrar. Büyüme de biz biz daha fazla müşteri ve personel bu istemcileri desteklemek üzere ekledikçe liderleri bugün yeni takım baş işe gerekiyor demektir.

I could go, Ama ben zaten çok uzun gittin. Sanırım burada özü yakalanan ettik. Hakkında düşünüyorsanız değişen işleri ve bu sizin için iyi görünüyor, konuşalım.

Mevcut işinizi en-mutlu iseniz yine konuşalım :). Ben pek çok yerde içinde oldum ve zaman çok "mutlu". Slalom farklıdır ve bu ikna etmek için bir şans bekleriz.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin

Hızlı ve kolay: Bir Windows Store App bir liste kutusuna bir öğe boyutunu ayarlama

Bir Windows Store App ben yaratıyorum., Kullanıcı çeşitli bilgi iletileri göstermek istiyorum.  Onlar onları ve o güzel şeyleri kullanabilecekleri göstermek için aracı olarak bir liste kutusu aldı. 

İletileri yalnızca bilgilendirme, böylece kullanıcı asla onları için bir şey seçebilirsiniz beri çevrelerindeki tüm bu ekstra boşluk sağlamak için gerek yoktur.  Liste kutusu varsayılan davranışını doldurma önemli bir miktar sağlar ve ondan kurtulmak istedim.  Şey.... Böyle şeyler ListBox üzerinde doğrudan yapamam.  ANCAK, eklediğiniz öğeler yapabilirsin:

        Özel geçersiz AddGameStateLogMessage(dize Henüz)
        {
            Metin kutusu t = Yeni Metin kutusu();
            t.Text GameStateCounter    = + ": " + Henüz;
            t.TextWrapping TextWrapping.Wrap =;
            t.MinWidth = 400;
            Kalınlığı thisPadding = Yeni Kalınlığı(5, 0, 5, 0);
            t.Padding thisPadding =;
            t.FontSize = 12;

            ListBoxItem li = Yeni ListBoxItem();
            li.İçerik = t;
            li.MaxHeight = 25;
            thisPadding = Yeni Kalınlığı(5, 0, 5, 0);
            li.Doldurma thisPadding =;

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

belgili tanımlık yukarıda içinde, Ben bir metin kutusu oluşturma ve yazı tiplerini ayarlama, onun doldurma, vb.

Sonraki, ListBoxItem oluşturmak ve içeriğini biçimlendirilmiş metin kutusu için ayarlayın.

Nihayet, ListBoxItem ListBox yerleştirin.  (Listenin üstündeki en son iletileri göstermek istiyorum., Dolayısıyla ekleme(0,Li) basit bir Ekle yerine() çağırma.).

Ben bu önce biraz ListBox davranışı ile çok mutluyum ama yukarıda gösterilen deseni çok verimli oldu tweaking.  Umarım başkası yararlı bulur.

</sonunda>

undefinedBenim blog abone.

Heyecan beni izleyin http://www.twitter.com/pagalvin