사람 검색 범위를 지정 하는 방법 / SharePoint를 사용 하 여 콘텐츠 원본 2013 나머지 API

SharePoint를 사용 하는 이유를 했다 2013 처음으로 나머지를 통해 검색 API. 나는 사람들에 대 한 검색 하 고 싶 었, 없는 문서. 여기서 학습 키의 GUID 통해 콘텐츠 원본 지정 (또는 경우 적어도). 다음과 같은 jQuery 코드 표시 방법:

    loadExpertsAsync: 함수() {

        jQuery.support.cors = true;

        $.아 약 스({
            url: .CreateFullApiUrl() +
                "?querytext = '포털'&sourceid ='b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,기술,AboutMe,관심 분야,JobTitle,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&rowlimit = 99",
            메서드: "가져오기",
            헤더: { "수락": "응용 프로그램/json; odata 자세한 정보 표시 =" },
            캐시: false,
            성공: 함수 (결과) {

내 경우에는, 온라인 SharePoint에 대 한 API를 실행 해요. GUID를 얻으려면, 이러한 단계를 따라:

  1. SharePoint 관리 센터에 액세스
  2. 왼쪽 탐색에서 "검색"을 선택
  3. "결과 소스 관리"를 선택 하십시오
  4. "현지 사람들 결과"를 선택
  5. URL에 보고.

내 URL 같은 것을 보았다:

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

Sourceid 매개 변수는 어떤 날 위해 일했던.

(sourceid 실제로 SP와 영구적인 것의 종류를 수 있습니다 이해, 하지만 난 항상 어쨌든 확인해 보겠습니다 🙂 ).

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

예를 들어 SharePoint 나머지 호출

다음은 나를 위해 작동 하 고 또한 당신을 도울 수 있습니다 샘플 나머지 통화의 집합이입니다.. 로 서의 02/2014, 두 가지 예들이있다 🙂

  1. 이름에 공백 열 참조
  2. 다중 선택 열을 참조
  3. 나머지를 통해 사람들이 검색을 수행

 

이것을 추가할 것입니다 시간이 지남에 따라.

여기는 몇 가지 유용한 잉크 뿐만 발견 했습니다.:

이름에 공백 열 참조

"블로그 작성자" 라는 열이 있는 사용자 지정 목록을 만들합니다 (블로그와 저자 사이 공간).

해당 열을 참조 하는 $select이입니다.:

image

단순히 "_x0020_" 공간을 바꿉니다. 우리는 인터넷에 걸쳐 많은 예에서 _x0020_ 참조 및 나머지는 전혀 다른.

그렇게 하지 않으면, 당신은이 같은 오류 메시지가 책임:

식 “블로그 작성자” 유효 하지 않은.

충분히 쉬운.

참고 다중 선택 조회 열

설정:

  1. 카테고리 라는 사용자 지정 목록 만들기.
  2. 일부 카테고리 추가. Thusly 카테고리를 추가:image
  3. MockBlog 라는 또 다른 사용자 지정 목록을 만들고 다중 선택 목록 열으로 카테고리를 추가 (사이트 열 경우는 어떻게 롤 또는).

Mockblog 목록에 어떤 항목을 추가 하 고 당신은 준비.

JQuery를 사용 하 여 Ajax 스타일 호출 이것 같은 것을 볼 것 이다:

serverUrl   = "/_api/웹/목록/GetByTitle(' MockBlog')/항목" +
             "?$선택 제목 =,카테고리/제목,Blog_x0020_Author/제목" + 
             "&$확장 Blog_x0020_Author =,카테고리";

우리는 "제목을 나는 모든 범주에 대 한 SharePoint를 말하는 거 야 (카테고리/제목). 에 대 한 실제 값을 얻을 제목 에 의해 $확장ing 범주 목록입니다. " (아마 꽤 느슨한은 내 평안한 지나친의 역, 하지만이 방법에서 그것을 해석 해요).

자바 스크립트와 피 들러를 사용 하 여 출력에서 보고를 통해이 수행 하는 경우, 답례로 이것 같은 것을 얻을합니다:

 

image

(위는 JSON 개체입니다.)

나머지를 통해 사람들이 검색을 수행

내가 이것에 대해 블로그에 별도로. 키는 sourceid 매개 변수 값은 로컬 사람들 콘텐츠 원본의 GUID를 지정 하는 것입니다.. (콘텐츠 원본 범위 호출 하는 데 사용 되며 모든 것에 전화 나를 위해 범위 내-오-내 열심히 하지!).

여기 그것에 대해 자세히 보기: http://www.mstechblogs.com/paul/?p=10385

 

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

신속 하 고 쉽게: 나머지를 사용 하 여 SharePoint 사이트를 만들

이 작업을 수행 하는 방법을 보여 주위 자원의 많은 있다, 하지만 포괄적인 이동 하려면 링크를 찾을 수 없습니다., 그래서 여기에 우리가 있습니다..

나머지 API를 사용 하 여 SharePoint 사이트를 만들 수 있습니다.  여기에 완벽 하 게 구운된 예제가입니다.:

<!--
    SiteRequestForm.html: 정보를 수집 하 고 사용자에 대 한 사이트를 만들.
-->

<센터>
<테이블>
    <tr>
        <td>사이트 이름:</td>
        <td><입력 유형= "텍스트" 이름"사이트 이름 =" id"사이트 이름 =" /></td>
    </tr>
    <tr>
        <td colspan= "2">
            <입력 유형= "제출" id"CreateSiteButton =" "만들기 사이트 =" />
        </td>
    </tr>
</테이블>
</센터>

<스크립트 src="../Plugins/jquery-1.11.0.min.js"></스크립트>

<스크립트>
var CreateSiteLogicContainer = {

    createSiteData: {
            "매개 변수": {
                __metadata: { "유형": "특검팀WebInfoCreationInformation" },
                Url: "Paultest1",
                제목: "Paultest1",
                설명: "나머지 만든 웹 폴!",
                언어: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: false
            }
    },

    createSite: 함수 () {

        jQuery.support.cors = true;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").발();
        
        $.아 약 스({
            url: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            메서드: "게시물",

            헤더: {
                "동의": "응용 프로그램/json; odata 자세한 정보 표시 =",
                "콘텐츠 유형": "응용 프로그램/json;odata 자세한 정보 표시 =",
                "X-RequestDigest": $("# __REQUESTDIGEST").발()
            },

            데이터: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            성공: 함수 () { 경고("성공"); },
            오류: 함수 () { 경고("오류"); }

        });
    },

    wireUpForm: 함수 () {
        $("#CreateSiteButton").클릭 하십시오.(함수 () {
            경고("에 대 한 시도 하 고 만들 사이트.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</스크립트>

성공 하면, 이 같은 응답에서 JSON 패킷을 얻을:

image

내 주요 생각과이 포함에서 learnings:

  • 이 방법은 사용 하는 jQuery.  내 경우에는, jQuery 라이브러리 내에 있는 ".../ 플러그인. "  당신의 마음에 드는 JQ 위치를 가리키도록 변경 하 고 싶을 것 이다.
  • 복사 하 고 페이지에 콘텐츠 편집기 웹 파트에 붙여 그 전체 조각 수와 잘 작동 합니다.  API 호출의 변화와 JQ를 올바르게 참조 하는 것을 확인 해야.
  • URL은 API의 끝점에 상대적입니다.  내 경우에는, 그것은 밑에 하위 사이트를 만드는 https://bigapplesharepoint.com
  • 콘텐츠 길이 제공 하기 위해 필요 하지 않습니다.. 일부 블로그 게시물 및 MSDN 문서 의미 당신이 할, 하지만 나를 위해 일 하는 자동으로, 나는 $.ajax 통화 자체에 의해 처리 되 고.
  • 이 라인 "금지한" 응답을 방지 하는 데 필요한: "X-RequestDigest": $("# __REQUESTDIGEST").발().  다른 방법이 그것을 할 수 있다, 하지만 이것은 매우 좋다.  이 바로 가기이 키를 제공 하는 블로그에 링크를 분실 했습니다.  H/T 당신에 게, 신비한 블로거!

행운을 빌어요 그리고이 밖으로 사람을 도움이 되기를 바랍니다..

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

SharePoint 빠른 실행에서 상대 Url 성가신 문제를 극복

빠른 실행 탐색 다른 하루에 링크를 추가 하 고 싶었다 고 SharePoint:

image

그의 순수 텍스트 버전은:

URL은 유효 하 고 유효한 문자 중 하 나와 함께 시작 (숫자 기호 (#) 또는 슬래시 (/)) 또는 유효한 지원 되는 프로토콜 (예를 들어, ' http://’, ' https://’, ' 파일://’, ' ftp://’, ' mailto:’, ' 뉴스:’).

"Blech 그리고 수 두!"나는 말했다.

이 해결 방법은 JavaScript를 사용 하 여 빠른 실행에 알려진된 링크를 찾아서 해당 동작을 재정의 하는 것입니다..

이것을 테스트 하려면, thusly 테스트 사이트에 새 링크를 추가:

image

내가 jQuery를 사용. 그것을 해결 하기 위해, 일부 자바 스크립트와 당신의 마음에 드는 기술을 사용 하 여 페이지에 jQuery 같은 코드 줄:

 

$(문서).준비( 함수 () {

    $("는:포함(' 테스트할 URL 교체 ')").클릭 하십시오.(함수 () { 경고("변경된 클릭 동작!"); 반환 false;});

});

그리고 밥의 삼촌.

JQuery 선택기 발견 모든 <는> 이름에 "테스트 URL 대체" 태그. 당신은 찾기-조정 하는 링크와 같은 따라 할 수 있습니다..

.click(함수() 뭐 든 SharePoint 했을 것 이다 때 사용자가 클릭 한 재정의. 당신이 "false를 반환" 그렇지 않으면 그것은 것입니다 당신의 물건을 하려고 href 것 너무 다는 것을 확인합니다, 거의 확실 하지 귀하의 목표.

이것은 행 해졌다 고 SharePoint 온라인 환경에서 테스트 해야 하지만 잘에서 작동 2010 이전 버전도.

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

신속 하 고 간단: SharePoint 나머지 전화만 반환 100 레코드

여기에서 내 SharePoint 연습에 대 한 공공 직면 하 고 웹 사이트에서 작업 했습니다. 뉴욕 자바 스크립트와 나머지 호출을 많이 사용 하 여 콘텐츠 표시.

Mainline 개발 중, 그냥 함께 작은 데이터 집합을 만들려면 10 또는 그렇게 행에 사용자 지정 목록이 나 나머지 통화 모든 거기에서 가져온.  일단 내가 승진 예상된 성장에 대 한 테스트 데이터의 몇 백 행 목록, 정확 하 게 참이 었 어 발견 100 내 나머지 전화에 다시 반환 하는 행.

이것은 매우 간단한 일이 주소로입니다.  내 경우에는 (대부분의 경우에 믿고), 기본 SharePoint 나머지 호출 (업계 표준으로 가능 하 게 하 고?) 반환 100 행입니다.  기본 보다는 더 많은 수익을, $top 매개 변수를 사용 하 여 귀하의 전화에, 마찬가지로:

/Insights Dev/_api/web/lists/GetByTitle를 얻을(' MockBlog')/항목?$선택 = ID,제목,카테고리/제목,Blog_x0020_Author/제목,DatePublished,BlogSummary&$확장 Blog_x0020_Author =,카테고리&$필터 =&$위쪽 = 9999

내가 골 랐 어 요 9999 이 경우 이후 내가 아는 growth-wise, 되지 않습니다 이상 200 또는 그렇게 행 1 년에이 목록에 추가 합니다.  꼴 사나운 되는 경우, 도 아래로 몇 가지 페이징 구현할 수 있습니다..

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

신속 하 고 간단: "잘못 된 URL 매개 변수를 해결” lists.asmx에 UpdateListItems와 함께 문제

Lists.asmx 통해 UpdateListItems와 함께 작업 하는 경우, 그것은 오류를 생성 하 게 쉬운:

잘못 된 URL 매개 변수.

잘못 된 명령 또는 값 제공 된 URL 포함. URL을 다시 확인 하시기 바랍니다.

ID를 포함 하는 것을 잊지 때이 오류를 얻을 수 있습니다 있는 업데이트할 필드의 목록.  이, 많은 이러한 SP 웹 서비스 처럼, 조금 어 긋 한지를 ID 특성에는 ID를 포함 해야 합니다 <메서드> 요소입니다.  그리고 당신은 ID 업데이트 아마 결코 하 고 싶지 처음에.

이 SOAP 봉투 작품:

<soapenv:봉투 xmlns:soapenv =' http://schemas.xmlsoap.org/soap/envelope/'>
  <soapenv:바디>                      
    <UpdateListItems xmlns =' http://schemas.microsoft.com/sharepoint/soap/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <업데이트>                     
         <OnError 배치 ="계속">
          <메서드 ID ="1" Cmd ="업데이트">
            <필드 이름 ="CooperativeLock">잠겨!</필드>
            <필드 이름 ="ID">1</필드>
          </메서드>
        </일괄 처리>                     
        </업데이트>                
      </UpdateListItems>             
  </soapenv:바디>         
</soapenv:봉투>

ID 필드 참조를 빼내야 하는 경우 다음 거 야 성가신 "잘못 된 URL 매개 변수" 메시지.

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

 

불 쌍 한 남자의 자바 스크립트 캐싱

[TL;박사 버전: 쿠키를 사용 하 여 비동기 호출의 결과 저장; 즉시 과거 비동기 호출의 결과 렌더링 하 고 페이지 로드 후 확인.]

내가 일하고 SharePoint 인트라넷 사이트에 있는 클라이언트에 대 한 기능, 다른 것 들 중, 양식에 일치 시키는 보조 탐색 해당 메뉴 옵션이 일반 오래 된 사용자 지정 목록을 통해 관리 됩니다.  아이디어는 클라이언트에 영향을 미치는 또는 그것에 의해 밖으로 넣어 전역 탐색에 의해 영향을 받지 않고 "그들 의" 사이트의 메뉴 제어를 가져옵니다..

(뭔가 엄청나게을 로드 일부 CSS와 JS... 사이트의 동작에 대 한 거의 모든 것을 근본적으로 변경 하지만 그건 다른 게시물에 대 한 HTML 파일을 가리키는 CEWP 추가 대 한 파괴)

이 아주 간단한 코드:

아픈 자리 여기는 누구 든 지 사이트의 페이지 중 하나를 조회 수 모든 시간, 해당 사용자의 웹 브라우저 목록에서 항목을 가져올 밖으로 도달 합니다.  개발 완료 되 고 테스트 되 면 안정적이 고 완전 한 것을 입증 했다, 이 호출이 필요 하지 않습니다 더 이상 99% 거의 메뉴부터 시간 변경합니다.  그것도 이상한 UI에 영향을 미칠 하이퍼 ajaxy 웹 사이트의이 용감한 새로운 세계에 있는 일반적인-페이지 렌더링 하 고 그런 다음 메뉴 렌더링지 않습니다.  그것은 과민 하 고 내 보기에 산만 한입니다.  그리고 신경 과민. 그래서, 캐싱. 

Thusly 논리를 수정:

  • 마지막 그것을 읽고 메뉴를 포함 하는 브라우저에서 쿠키에 대 한 보고
    • 만약 발견, 즉시 렌더링 합니다.  페이지 로딩 완료를 기다리지 않는다.  (당신의 HTML 여기 전략적으로 배치 되도록 해야, 그것은 일을 열심히 하지만).
  • 로딩을 끝내 고 나머지 또는 lists.asmx 또는 무엇이 든을 사용 하 여 목록에서 메뉴 항목을 로드 하려면 호출 하는 비동기 페이지에 대 한 대기
  • 내가 쿠키에 대 한 비교
    • 일치 하는 경우, 중지
    • 그렇지 않으면, jQuery를 사용 하 여, 경우 동적으로 무리를 채울 <리>에 <ul>
  • CSS를 사용 하 여 모든 서식 할 수
  • 이익!

당신의 일부는 말 거 야, "이 봐! 아니 진짜 캐싱가 여기에 있기 때문에 어쨌든 메뉴를 읽고 있다 매 시간.”  그리고 당신 말이 맞아-하지 휴식의 어떤 서버를 주는 거 야.  하지만 HTML 페이로드 완전히 렌더링 호출은 비동기 이며 이후 페이지의 초기 발생 하기 때문에, 그것은 "느낌"는 사용자에 게 응답성.  메뉴는 페이지 그리는 만큼 꽤 렌더링 합니다.  메뉴 변화를 발생 하는 경우, 사용자 메뉴의 과민 다시 그릴을 복종 된다, 하지만 그 한 번만.

이 캐싱 보다 효과적으로 만들기 하는 동시에 서버 도와 몇 가지:

  • "쿠키 캐시"는 최소 유효 규칙에 24 시간 또는 다른 시간대. 만큼 만료 된 쿠키가, 쿠키의 메뉴 스냅숏을 사용 하 고 결코 서버.

그 게 지금 당장 마음에와 서 다 음... :). 

누구 든 지 여기 어떤 영리한 아이디어를 가진다면 그들을 알고 싶어요.

그리고 마지막으로-이 기술은 다른 것 들에 대 한 사용할 수 있습니다.  이 클라이언트의이 페이지는 다양 한 페이지에 다양 한 데이터 기반 것 들, 그들 중 많은 사람들이 상대적으로 거의 변화 (일주일에 한 번 또는 한 달에 한 번).  기능의 특정 영역을 대상 하는 경우, 로컬 쿠키 저장소에서 콘텐츠를 당기 및 즉시 렌더링 응답성 UI를 제공할 수 있습니다.  그것은 어떤 주기 서버 저장 하지 하는 경우에 사용자에 게 더 빨리 느낀다.  당신은 수 있습니다. 이 로컬 쿠키 캐시를 무효화할 일부 조건과 트리거에 결정 하 여 서버 사이클을 저장 합니다.  그건 모든 상황이 복잡 한 물건 및 진짜로 가장 재미 있는 :). 

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

HOWTO: 사무실에 대 한 QUnit.js 및 Blanket.js 단위 테스트 및 테스트 범위 구성 365 SharePoint 응용 프로그램

소개

단위 테스트 탐험 했습니다 하 고 SharePoint 온라인 사무실에 대 한 새로운 SharePoint 응용 프로그램에 작업으로 자바 스크립트에 대 한 범위를 테스트 365 스위트입니다.  명백한 연구 경로를 알려준 Qunit.js 그리고 그 후 바로, 받는 사람 Blanket.js.

QUnit을 사용 하자 단위 테스트를 설정 하 고 모듈에 그룹화 수 있습니다.  모듈은 관련된 테스트를 구성 하는 간단한 방법. (의도 한 대로 그것을 사용 오전 확실 하지, 하지만 작동 나를 위해 지금까지 지금까지 정의한 테스트의 작은 세트).

Blanket.js Qunit 통합 하 고 그것은 내게 실제 줄의 JavaScript 했다-그리고 더 중요 한 것은-하지 실제로 실행 된 테스트를 실행 하는 동안 표시 됩니다.  이것은 "범위"-다른 하는 동안 실행 라인 테스트에 의해 보호 됩니다..

좋은 테스트 사례를 설정 하 고 범위 보기 사이, 우리가 우리의 코드 결함 숨겨진 위험을 줄일 수 있습니다.  좋은 시간.

Qunit

Visual Studio를가지고 가정 프로젝트 설정, 자바 패키지를 다운로드 하 여 시작 http://qunitjs.com.  솔루션에 해당 CSS와 자바 스크립트를 추가 합니다.  이런 내 모습:

image

그림 1

당신이 볼 수 있습니다, 사용 하 던 1.13.0 당시 나는이 블로그 게시물을 작성. 다운로드 CSS 파일에 추가 하는 것을 잊지 마세요.

하는 방법, 다음 단계는 테스트 프로그램의 어떤 종류를 만들고 Qunit 비트 참조.  난 라는 "QuizUtil_test.html"와 같이 HTML 페이지를 만들어 "QuizUtil.js" 라는 스크립트 파일에 잔뜩 기능 테스트:

image 그림 2

다음은 코드:

<!문서 종류 html>
<html xmlns"http =://www.w3.org/ 1999/xhtml">
<머리>
    <제목>Qunit QuizUtil 테스트</제목>
    <링크 확인해"스타일 시트 =" href="../CSS/qunit-1.13.0.css" />
    <스크립트 유형= "텍스트/자바 스크립트" src="QuizUtil.js" 데이터 커버></스크립트>
    <스크립트 유형 ="텍스트/자바 스크립트" src ="qunit-1.13.0.js"></스크립트>
    <스크립트 유형 ="텍스트/자바 스크립트" src ="blanket.min.js"></스크립트>

    <스크립트>
        모듈("getIDFromLookup");
        테스트("QuizUtil getIDFromLookupField", 함수 () {
            var goodValue = "1;#폴 Galvin";

            동등한(getIDFromLookupField(goodValue) + 1, 2), "ID의 [" + goodValue + "] + 1 2 해야 합니다.";
            동등한(getIDFromLookupField(정의 되지 않음), 정의 되지 않음, "정의 되지 않은 입력된 인수가 정의 되지 않은 결과 반환 해야 합니다.");
            동등한(getIDFromLookupField(""), 정의 되지 않음, "빈 입력된 인수를 정의 되지 않은 값을 반환 해야 합니다.");
            동등한(getIDFromLookupField("gobbledigood3-thq;dkvn 이다;skfja sdjfbvubvqrubqer0873407t534piutheqw;vn"), 정의 되지 않음,"항상 반환 해야 결과 컨버터블을 정수로");
            동등한(getIDFromLookupField("2;#일부 다른 사람"), "2", "검사 [2;#일부 다른 사람].");
            동등한(getIDFromLookupField("9834524;#long 값"), "9834524", "큰 값 테스트입니다.");
            notEqual(getIDFromLookupField("5;#누구 든 지", 6), 6, "테스트는 notEqual (5 같지 6 이 샘플에 대 한: [5;#누구 든 지]");

        });

        모듈("htmlEscape");
        테스트("QuizUtil htmlEscape()", 함수 () {
            동등한(htmlEscape("<"), "&lt;", "이스케이프 연산자 보다 덜 ('<')");
            동등한(htmlEscape("<사업부 클래스 =  "someclass">일부 텍스트</div>"), "&lt;사업부 클래스 =&quot;someclass&quot;&gt는;일부 텍스트&lt;/div&gt는;", "더 복잡 한 테스트 문자열입니다.");
        });

        모듈("getDateAsCaml");
        테스트("QuizUtil getDateAsCaml()", 함수 () {
            동등한(getDateAsCaml(새로운 내용 날짜("12/31/2013")), "2013 12 31T:00:00:00", "테스트 하드 코딩 된 날짜: [12/31/2013]");
            동등한(getDateAsCaml(새로운 내용 날짜("01/05/2014")), "2014-01-05T:00:00:00", "테스트 하드 코딩 된 날짜: [01/05/2014]");
            동등한(getDateAsCaml(새로운 내용 날짜("01/31/2014")), "2014-01-31T:00:00:00", "테스트 하드 코딩 된 날짜: [01/31/2014]");
            동등한(getTodayAsCaml(), getDateAsCaml(새로운 내용 날짜()), "getTodayAsCaml() getDateAsCaml 동일 해야 합니다.(새 날짜())");
            동등한(getDateAsCaml("말도 값"), 정의 되지 않음, "넌센스 값의 날짜를 보십시오.");
            동등한(getDateAsCaml(정의 되지 않음), 정의 되지 않음, "의 날짜를 얻는 것을 시도 [정의 되지 않음] 날짜입니다.");
        });

        모듈("getParameterByName");
        테스트("QuizUtil getParameterByName (쿼리 문자열에서)", 함수 () {
            동등한(getParameterByName(정의 되지 않음), 정의 되지 않음, "얻는 것을 시도 정의 되지 않은 매개 변수는 정의 되지 않은 반환 해야 합니다.");
            동등한(getParameterByName("존재 하지 않습니다."), 정의 되지 않음, "우리가 알고 매개 변수가 존재 하지 않는 매개 변수 값을 좀 하려고 합니다.");

        });

        모듈("쿠키");
        테스트("QuizUtil 다양 한 쿠키 기능.", 함수 () {
            동등한(setCookie("테스트", "1", -1), getCookieValue("테스트"), "가져오기 설정 쿠키 작동 합니다.");
            동등한(setCookie("anycookie", "1", -1), true, "유효한 요리 설정 반환 해야 '사실'.");
            동등한(setCookie("미친 쿠키 이름 !@#$%"%\^&*(()?/><.,", "1", -1), true, "나쁜 쿠키 이름 설정 false를 반환 합니다 ''.");
            동등한(setCookie(정의 되지 않음, "1", -1), 정의 되지 않음, "쿠키 이름으로 정의 되지 않은 전달.");
            동등한(getCookieValue("존재 하지 않습니다."), "", "쿠키 테스트를 존재 하지 않습니다.");
        });

    </스크립트>
</머리>
<바디>
    <div id"qunit ="></div>
    <div id= "qunit 조명 기구"></div>

</바디>
</html>

여기 일어나 고 몇 가지:

  1. 내 코드 참조 (QuizUtil.js)
  2. Qunity.js 참조
  3. 일부 모듈 정의 (getIDFromLookup, 쿠키, 그리고 다른)
  4. 배치는 <div> ID가 "qunit".

다음, 그냥이 페이지를 당겨 하 고 당신이 이것 같은 것을 얻을합니다:

image

그림 3

위쪽에 보시 면, 몇 가지 옵션이 있습니다., 두 번째는 재미 있습니다:

  • 테스트를 통과 하는 숨기기: 꽤 분명 합니다.  문제 영역 및 불 요 반사 파의 많은 하지 그냥 볼 눈을 도울 수 있다.
  • 모듈: (드롭 다운): 이 테스트를 해당 그룹으로 테스트를 필터링 합니다..

테스트 스스로 – 몇 가지 의견 서:

  • 그것은 그것을 테스트할 수 처음에 코드를 작성 해야 한다는 말도 없이 간다.  그 규율을 적용 도울 수 있는 도구를 사용 하 여. 예를 들어, "GetTodayAsCaml 라는 함수를 했다()”.  이러면 아주 쓸만한 입력된 인수 걸리기 때문에 평등에 대 한 테스트를 하 고, 우리가 지속적으로 현재 날짜를 반영 하기 위해 테스트 코드를 업데이트 해야 합니다.  나는 데이터 입력된 매개 변수를 추가한 다음 CAML 형식으로 오늘 날짜를 원하는 경우 현재 날짜를 전달 리팩터링.
  • Qunit 프레임 워크 문서 자체 테스트 하 고 꽤 강력한 것 같습니다.  그것은 일치 여부를 테스트 같은 간단한 것 들을 할 수 있으며 ajax 스타일 호출에 대 한 지원 ("진짜" 또는 당신의 가장 좋아하는 mocker를 사용 하 여 모의).
  • -"정의 되지 않은"와 어떻게 지 사례를 통해 생각 하는 세력 또한 과정을 통과 또는 null 함수에 전달 됩니다.  그것은 죽은 간단 하 게 밖으로 이러한 시나리오를 테스트 합니다.  좋은 물건.

Blanket.js 범위

Blanket.js는 테스트 실행의 과정에서 실행 하는 코드의 실제 라인을 추적 하 여 Qunit을 보완 합니다.  그것은 통합 오른쪽 Qunit 그렇게 하더라도 그것은 완전히 별도 응용 프로그램, 그것은 정중 하 게 재생-정말 마치 그것은 하나의 완벽 한 애플 리 케이 션.

이것은 행동에 blanket.js:

image 그림 4

image

그림 5

(실제로 맨 "범위 사용" 확인란을 클릭 해야 [그림 참조 3] 이 수 있도록.)

그림에서 강조 표시 된 라인 5 내 테스트에 의해 실행 되지 않 았, 그래서 전체 범위를 원한다 면 실행 하도록 발생할 않는 테스트를 고안 해야.

다음이 단계에 따라 작업 하는 blanket.js를 얻을:

  1. 다운로드 http://blanketjs.org/.
  2. 프로젝트에 추가
  3. 테스트 프로그램 페이지 업데이트 (내 경우에는 QuizUtil_test.html) 다음과 같이:
    1. 참조 코드
    2. 장식 귀하 <스크립트> 이 같은 참조:
    <스크립트 유형= "텍스트/자바 스크립트" src="QuizUtil.js" 데이터 커버></스크립트>

Blanket.js "데이터-커버" 특성을 줍 고 그것의 마술을 않습니다.  Qunit에 후크, "범위 사용" 옵션 추가 UI 업데이트 봐라!

요약 (TL; 박사)

Qunit을 사용 하 여 테스트 사례를 작성.

  • 그것을 다운로드합니다
  • 프로젝트에 추가
  • 테스트 프로그램 페이지 작성
  • 테스트 만들기
    • 일부 쓸만한 수 코드 리팩터링
    • 창의력을 발휘해!  미친 생각, 불가능 한 시나리오 고 어쨌든 테스트.

Blanket.js를 사용 하 여 범위를 확인

  • Qunit 작동 하는지 확인
  • Blanket.js를 다운로드 하 고 프로젝트에 추가
  • 테스트 프로그램 페이지 추가:
    • Blanket.js에 대 한 참조 추가
    • "데이터-커버" 특성을 추가 여 <스크립트> 태그
  • Qunit 테스트 실행.

난 결코 전에 이런 한 초보적인 물건 시간의 소수에서 근무 했다. 

행복 한 테스트!

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

마지막 옷 착용 하는 거 야?

[빠른 참고-이것은 뉴욕에서 여기 내 그룹에 대 한 열기 작업에 꽤 긴 게시물 및 트라이-스테이트 지역에 살고 있는 당신이 관심 있다면 할 필요가 있습니다.]

슬 라 럼 컨설팅에 합류 18 개월 전 그리고이 이후 가장 긴 지속적인 직장 2007. 그런 식으로 계획 하지 않았다. 일 호핑의 문자열 전에 SharePoint 세계로 내 도약 시작, 11 년 동안 한 곳에는. 마지막으로 새로운 발견 했습니다., 슬 라 럼에서 장거리 여기 일 지속.

이 성장 하 고 제어 하는 몇 가지 도움이 필요. 내가 필요로 하는 도움의 종류는 일반적으로 호출 "SharePoint 솔루션 건축가" 건축가 단어 이상 및/또는 잘못 사용할 SharePoint 공간에 꽤 동안 지금 발견 했습니다.. 이것에 대해 블로그를 하는 방법에 메고. 단순히 주사위/괴물 스타일에서 총알 포인트 들을 밖으로 나열 하 고 싶지 않아. 내 우수 모집 또래 있었나 하는 이미 :). 그래서, "일상 생활에서" 접근 방식을 취하기로 결정 했다. 읽고 그것을 넘어와 고려:

1) 호소 하는 경우와

2) 당신은 당신의 뼈에 알고 있는지 여부를 당신이 그것을 할 수 있습니다.

그렇다면, 저에 게 연락 (paul.galvin@slalom.com) 고 이야기 하자.

이들은 팀 솔루션 아키텍트로 서 전형적인 주/달에서 무엇을 기대할 수 있습니다.:

  • 프로젝트 실행, 한 번에 하나 이상을 자주. 일부 프로젝트는 큰, 그래서 하나의 프로젝트를 자신의 것 이라고. 감독과 배달의 전반적인 품질에 대 한 책임을가지고 하는 것을 의미 "실행" 프로젝트. 거의 모든 경우에는 오후 야 devs 정말 강한 팀, BAs, UX 사람, 등입니다., 당신을 지 원하는. 하지만 클라이언트 보고 주요 얼굴을 있을 거 야, 트러스트, 등. 이 역할에서 그림자에 더 숨어가 있다 :). 이 시간을 빌 거 고 이렇게 충분히 바쁜 유지 하는 목표는 80 시간의 %.
  • 서류-뿌리와 함께 도움이, Rfp, 갑판-모든 좋은 것 들. 우리는 우리의 뿌리 다 프로세스 아래로 꽤 빡 빡 하 고 단단한 그래서 상당히 formulaic 생각. 오늘은 암 퇘 지를 작성 하는 데 사용 하는 경우, 우리의 프로세스 당신에 대 한 도전이 될 것 이다. Rfp-이들은 조금 더. 그들은 자연에서 시작 맞춤 수 경향이 및 Rfp는 일반적으로 여러 다른 저자에 끌어. 그것은 둘 다 좋은 나쁜, 하지만 주로 좋은. 또한 새 작업에 승리 하는 동안 우수한 고객 서비스에 대 한 필요성을 저글링 해야 할 때이 scrambly 얻을 수 있습니다.. 아마 RFP를 소유 하지 않습니다 하지만 섹션 기여 하 게 됩니다..
  • 판매 전화, 가까이 하지 하지만. 한 달 동안, 우리의 영업 팀과 함께 판매 전화에가 서 기대할 수 있습니다.. 방에 있는 중소기업을 있을 거 야, 메모 및 솔루션을 형성 하는 데 도움이. 그러나, 당신이 요청 하지 않습니다 또는 처음부터 끝까지 영업 주기를 처리할 것으로 예상. 당신은 "판매를 하지 않아도,"하면 방에 있는 이유는 전문가의 잔잔한 목소리. 이 신뢰와 신뢰를 구축 하 고 그래서 거기 있어. 물론, 판매 하는 것이 드시 면, 다음 당신이 여기 너무 성장을 위한 공간이 있다.
  • 모집에 도움이. 우리가 추천 프로그램의 어떤 종류를, 그래서 만약 당신이 정말 당신이 생각 하는 지역 사회에서 강한 사람 회전의 일부가 되어야 합니다., 그런 식으로 혜택을 받을 수합니다 있습니다.. 우리가 채용 전용 (누가 우수한가) 일의이 종류의 사자의 점유율을 해야. 진짜 도움 후보-인터뷰는 들은 문화적으로 적합 한? 그들은 자신의 물건을 알아? 그들은 * 내 * 인생을 더 쉽게? 🙂 This comes in spurts, 한 달에 몇 번, 비록 몇 개월에서 안 할 것 그것은 전혀.
  • 모범 사례를 정의 하는 데 도움이, 우리의 IP를 구축 하 고 우리 시장에서 더 경쟁력을 만들합니다. 당신은 경험 있는 남자/여자. 블록-뿐 아니라 SharePoint에에서 있 었 어 요, 하지만 당신은 다른 기술에 경험을가지고 좋은 나쁜을 참아 (심지어 끔찍한) 온통 프로젝트. 결과적으로, 어떤 작품과 무엇 하지 않습니다 알으십시오. 우리가 전술 감각에 하루 기준 우리와 함께 그 경험을 공유할 수를 원할 거 야 (즉. 진짜로 잘 당신의 프로젝트를 실행) 그러나 또한 전략적으로. "모범 사례" 기간으로 서 조금 상 이며 그것을 사용 하기 위해 주저. 기본 개념은 깊고 관련 경험을 가진 숙련 된 사람으로 오고 있어 우리가 우리가 일상으로 고객과 함께 참여 하는 방법으로 당신의 learnings의 최고를 통합 하려는.
  • 즐거운 시간 보내세요 -우리는 매우 통합된 무리. 또 다른 단조를 피하려고, 하지만 경우에 정말 적절 하다-우리는 열심히 (일종의) 우리 힘들어도 재생 :). 농담 여기의 아론 Sorkin 종류, 방에 항상 영리한 사람, 우리 처럼 우리의 음료와 재미의 상당수 조직 이벤트-영화 밤, 야구 여행 (경우에 그들은 끔찍한, 실질적으로 악마 팀).

한 단어에 모두 합 수 하는 경우, 단어 "리더십"을 사용 하는 것 프로젝트 리드, 연습 밖으로 건물에 리드 역할을 수행 (IP, 팀 건물), 등.

하지만 기다릴! 더 많은 있다! 왜 다른 회전에서 작동?

  • 의도-놀라운 화합 모두이 것 밖으로 성장 하 고 싶어. "이이 일"은 뉴욕 사무실. 모두이 보드에.
  • 당신의 돛-여동생 사무실 바람, 여동생 사례-슬 라 럼은 조직 컨설팅 "전체 서비스". SharePoint 연습을 지도 ("연습 지역 리드" 회전에). 나는 여동생에 관행 11 다른 회전 사무실. 그래서 비록 내가 킹까지 SharePoint 우려 여기 회전 뉴욕에서, 나는 시카고에 있는 피어 사례, 시애틀, 달라스, 아 틀 란 타, 보스턴, 등. 있는 지원 따라 그릴 수 있습니다.. 그것은 정말 여기 뉴욕 하지만 조직 전체에서 재능의 톤에 대 한 액세스 상당한 자율성-두 세계의 최고의.
  • 귀하의 판매에 바람 (2) -우리가 훨씬 더 이상 SharePoint-을. 우리가 할 BI, CRM, UX, 비즈니스 컨설팅, 모바일, 사용자 지정 개발 및 기타. 우리 끼리 판매 크로스에 좋은 위치와 우리가 좋은 그림-그리고 더 중요 한 것은, 우리의 고객을 위한 시-"전체 서비스" 사진 제공. 이것은 특히 나에 게 호소. 많은 작은 orgs SharePoint 연주회와 좌절 또다시 우리 비둘기 "SharePoint 사람." 숨어 있기 때문에 작업에 있 었 어 요 하 회전으로 발생 하지 않습니다 그리고 우리는 결과적으로 더 재미 있는 일을.
  • 로컬 모델-아니 여행.
  • 장기 성장-회전 gangbusters 진행 되고있다. 성장 및 안정성의 많은. 성장 또한 우리가 우리가 추가 더 많은 고객 및 직원 들 그 클라이언트를 지원 하기 위해 새로운 팀을 머리에 오늘 지도자를 고용 해야 의미.

난 갈 수 있습니다., 하지만 난 아마 이미 ve 너무 오래. 내가 생각 하는 내가 여기 본질을 점령 했습니다.. 에 대해 생각 하 고 있다면 당신에 게 좋은 보이는 작업 및이 변경, 이야기 하자.

만약 당신이 귀하의 현재 직업-행복 이야기 하자 어쨌든 :). 많은 장소에 있 었 어 요 그리고 시간에 "만족" 했다. 슬 라 럼 다른 이며 나의 설득에 기회를 환영 합니다..

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin

신속 하 고 쉽게: Windows 스토어 애플 리 케이 션의 목록 상자에 있는 항목의 크기를 설정

Windows 스토어 애플 리 케이 션에 나를 만드는 오전, 사용자 각종 정보 메시지를 표시 하 고 싶습니다.  그리고 모든 좋은 것 들을 통해 스크롤할 수 있도록 표시 도구 ListBox를 선택 합니다. 

메시지는 정보 제공, 이후 사용자가 결코 그들 주위의 모든 여분의 공백을 제공할 필요가 없습니다 그래서 아무것도 그들을 선택 합니다.  ListBox의 기본 동작 패딩의 상당한 금액을 제공 하 고 그것을 제거 하 고 싶었다.  잘.... ListBox에 것의 그 종류를 직접 할 수 없습니다.  그러나, 추가한 항목을 할 수 있습니다:

        개인 void AddGameStateLogMessage(문자열 메시지)
        {
            텍스트 상자 t = 새로운 내용 텍스트 상자();
            t.Text = GameStateCounter     + ": " + 메시지;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            두께 thisPadding = 새로운 내용 두께(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem 리 = 새로운 내용 ListBoxItem();
            리입니다.콘텐츠 = t;
            리입니다.MaxHeight = 25;
            thisPadding = 새로운 내용 두께(5, 0, 5, 0);
            리입니다.패딩 = thisPadding;

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

위의, 나는 TextBox를 만드는 고 그것의 글꼴 설정, 그것의 패딩, 등.

다음, ListBoxItem를 만들고을 서식이 지정 된 텍스트 상자 콘텐츠 설정.

마지막으로, ListBox에 ListBoxItem을 삽입합니다.  (목록의 상단에 가장 최근에 메시지를 표시., 따라서 삽입(0,리) 간단한 추가 대신() 호출 합니다.).

나는 조정이 조금 전에 ListBox 동작 정말 행복해 하지만 위의 패턴 아주 유익한 되었습니다.  바라 건 대 다른 사람이 발견 도움이.

</끝>

undefined내 블로그를 구독.

에 지 저 귐에 나를 따르라합니다 http://www.twitter.com/pagalvin