월별 아카이브: 6 월 2008

6 월 2008 SUGDC 컨퍼런스 — 그것은 포장 이다

도 내 첫 참석 SharePoint 회의 지난 주말이 폭발 했다.

목요일 오후, 버지니아 아래로 몰고, 내 새로 구입한 의해 유도 $50 내 휴대 전화에 GPS 기기 플러그 인 것. 장치는 완벽 한. 5 시간 운전 후, 트 레드 밀에 좋은 실행을 할 에너지를 했다 그리고, 더욱 놀랍게도, 에너지는 광고 스피커의 칵테일 시간에 대 한 로비에 머리를 했다. 내가 회의 n00b, it turned out that the cocktail hour was really a ruse to get speakers to show up and help stuff papers and swag into shoulder bags for conference attendees 🙂

힘든 시간을 내가 제일 먼저 금요일 오전 말하는 때문에 자 고 했다. 신경 질, 난 내 프레 젠 테이 션 및 동물 행성에 매우 불안 고양이 쇼에 슬라이드를 추가 하는 데 필요한 잔소리 감각 유지 나 늦게. 때문에 늦게 자 서, 난 자연스럽 게 일찍 일어나서. 상당히 자세한 기술 아키텍처 슬라이드 추가 않았다. 때문에 그것은 잘 가치가 노력 했다는 25 Q의 분&그것 없이 아주 어 색 한 것. 기술 트랙의 첫 번째 슬롯을 얻을 운이 좋 았. Sahil 말리 크 원래 금요일 오전 얘기 하 고 토요일을 말하는 거 라고 하지만 그 시간을 교환 하는 데 필요한. 이 날 내 프레 젠 테이 션을 할 하 고 다시 앉아가 앞으로 금요일과 토요일 모든 것을 즐길 수.

프레 젠 테이 션에 갔다 확인. 난 확실히 공간이 그것을 개선 하기. 어떻게 우리가 액세스 하 고 웹 서비스 사용자 지정 작업을 사용 하 여 SharePoint Designer 워크플로를 사용할 수에 대 한 이야기. 시간이 지남에, 이 정보를 연결 합니다. 시리즈 내에 이상에서 EUSP.com 려 고 그 도구에서 가장 많이 사용 하는 최종 사용자에 대 한. 내 슬라이드에서 데모를 통해 날 려 35 분, 시간에서 내 실망을. 다행히, Q&활기찬 했다, 사실은 의심의 여지가 도움이 그것은 점심 식사 하기 전에 이른 아침. Q&A는 모든 프레 젠 테이 션의 제일 좋아하는 부분은.

많은 흥미로운 과목 이었고 이번 주 더 자세히 그들에 대해 블로그에 희망 (시간 허용, 언제나 처럼). CMS 시계에서 동료의 SharePoint의 위치는 시장에서 매우 중요 한 아직 매우 희망 검토 제공. SharePoint 리소스 및 채용은 또한 "저렴 한 좋은 인재를 찾는 어려움의 부족에 초점을 맞춘 다른 토론" 매우 빡 빡이 시장에서. CMS 시계 남자 "길드 같은 것으로 SharePoint 인적 자원 풀 참조." 난 주로 MMORPG 측면에서 그 용어에 익숙하지, 그것은 나에 게 작은 스릴을 준, to be honest 🙂

회의의 하이라이트는 그냥 회의 및 "알고 사람들이 함께 따라 잡고" 한 동안 온라인. 최고와 함께 바에 앉아 있던 베 키 Isserman (MossLover) 에 대 한 3 또는 4 시간 (그리고 그, 밤에 마시는 완료 했다). 나에 대해 얘기를 자주 못 파스 케이프 또는 바빌론 5 캔자스 시티 주민들과.

밥 폭스 되었고 거기 평소, 험난 했던 거는, 채팅 및 그냥 평범한 열광적인 에너지. 그는 토요일 아침에 Sahil 말리 크와 함께 초대 고 그.

토요일 (하루 2), 마이크 Lotter InfoPath에 대 한 이야기를 회의에 자신을 끌어 및 다음 일반적인 질문의 종류를 하루의 끝에 베 키 입사&에 대 한에 대 한 세션 30 받는 사람 45 InfoPath에 주로 집중 하는 분 (마이크) 아 약 스 (베 키). 베 키 그녀의 전체/공식 프레 젠 테이 션을 통해 갈 수 있었지만 이들이 일 중 하나를 볼 수 있는 기회를 얻을 거 야 확신 하는 것이 좋겠다. 나는 감각이 그녀 거 야 "타격 회로" 앞으로.

에 갈 수 있다. 2 개의 마지막 포인트 — 회의의 재정적인 목적 어린이 기적 네트워크를 위한 기금 마련 하는 것 이었고 그것 제기 $5,000. 그건 굉 장. 마지막으로, 공개적으로 감사 게리 잎, Gary 본과 밥 폭스 경고를 하 고 회의에서 연설 할 수 있도록. 물론, 두 Gary 했다 사람들이 지원 하 고 구성의 팀 및 모두 굉 장했다. 전에 내가 서 하 고 그것은 내가 기대 했던 것 보다 더 높은 기대를 했다.

다음 11 월 7 일 예정 된 회 및 8에 대 한 경고가 계속. 몇 가지 훌륭한 콘텐츠 이외에도, 그것은 블로그를 통해 알고 있 었 어 그 모든 온라인 인격과 회의 대 한 대단한, 지 저 귀 다, 포럼, 등.

</끝>

내 블로그를 구독.

테크노 태그:

FBA 및 SQL Server: 러브 스토리

내 동료는 FBA 환경에서 웹 파트에 일하고 있다. 다른 것 들 중, 웹 파트는 SQL server에서 일부 데이터를 당긴 다. 이 프로젝트에 대 한 원대한 계획 지시 DBA가 SQL에서 데이터 수준 보안을 구성 (SQL 쿼리 또는 다른 접근에 사용자 ID를 포함에 반대).

문제는 SQL server 모르는 우리의 FBA 환경에 대해 아무것도 그래서 그것은 우리를 믿을 수 없다는. 이 문제를 해결 하는 우리, 더 나은 단어의 부족, 우리가 SQL 데이터 수준 보안 작동 되도록 SQL에 연결할 수 있도록 수동으로 광고 사용자 가장.

비록 FBA는 ASP.NET 기능, 우리 SharePoint 나라 사람들이 가르쳐 다양 한 검색 엔진을 당신이 FBA를 쿼리 하는 경우, SharePoint에서 FBA를 구성 하는 방법을 알고 하려는 의미 합니다.. 찾을 수 없습니다는 FBA를 사용 하도록 설정 하는 방법에 대 한 정보 중심 우리가 필요 방식으로 SQL와 통신 하는 ASP.NET 응용 프로그램 찾기.

이것을 연구 하는 과정에서, 우리는 다시이 문서를 읽으십시오: ASP.NET 가장

더 많은 연구가이 codproject 문서 우리을 이끌어: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

우리가 우리의 코드를 작성 도움이, 아래 포함 되어 있는. 그것은 가장 우아한 물건, 그러나 그것은 작동 했다. 난 당신이 도움이 되기를 바랍니다..

다음은 우리를 위해 일 하는 코드:

보호 void btnSearchCarrier_Click(개체 보낸 사람, EventArgs e)
 {
 시도
 {
 ImpersonateUser iU = 새로운 내용 ImpersonateUser();
 // TODO: 대체 자격 증명 iU.Impersonate("도메인 이름", "사용자 이름", "비밀 번호");

//
 코드
//

 iU.Undo();
 }
 catch (예외 예)
 {

 }
 }

// 아래에 언급 된 가장 클래스를 사용 하 여.

공용 클래스 ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = true)]
 공용 정적 extern bool LogonUser(
 문자열 lpszUsername,
 문자열 lpszDomain,
 문자열 lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 ref IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 개인 extern 정적 bool CloseHandle(IntPtr 핸들);

 개인 정적 IntPtr tokenHandle = 새로운 내용 IntPtr(0);
 개인 정적 WindowsImpersonationContext impersonatedUser;

 // DLL에이 코드를 통합 하는 경우, 그것을 요구 해야 합니다.
 // FullTrust 실행.
 [PermissionSetAttribute(SecurityAction.Demand, 이름 = "FullTrust")]
 공용 void 가장(도메인 이름 문자열, 문자열 이름, 문자열 암호)
 {
 시도
 {

 // 관리 되지 않는 LogonUser 함수를 사용 하 여 사용자에 대 한 토큰을 얻으려면
 // 지정 된 사용자, 도메인, 그리고 비밀 번호.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // 이 매개 변수를 전달 하면 기본 토큰을 만들려면 LogonUser.
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // 단계 -1 액세스 토큰에 대 한 핸들을 얻기 위해 LogonUser를 호출.
 bool returnValue LogonUser =(
 사용자 이름,
 도메인 이름,
 비밀 번호,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 ref tokenHandle); // tokenHandle - 새 보안 토큰

 만약 (returnValue false = =)
 {
 int ret = Marshal.GetLastWin32Error();
 Console.WriteLine("LogonUser를 호출 하지 못했습니다 오류 코드 : " +
 ret);
 던져 새로운 보려면.Win32Exception(ret);
 }

 // 단계 - 2
 WindowsIdentity newId = 새로운 내용 WindowsIdentity(tokenHandle);
 // 단계 -3
 impersonatedUser = newId.Impersonate();

 }
 catch (예외 예)
 {
 Console.WriteLine("예외 발생. " + 전입니다.메시지);
 }
 }


 /// <요약>
 /// 중지 가장
 /// </요약>
 공용 무효 취소()
 {
 impersonatedUser.Undo();
 // 무료 토큰.
 만약 (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</끝>

내 블로그를 구독.

테크노 태그:

세계관에 추가: SSRS 하더군요 “rsAccessDenied”, 하지만 … 정말 액세스 권한이

몇 주 전에, 필자는 내 개발자 동료와 이끼에 대 한 SQL Server Reporting Services 플러그 인을 포함 하는 프로젝트. 그는 멋진 보고서를 적절 한 프런트 엔드를 제공 하는 웹 파트를 개발 했다 (되 고 그 뒤에 몇 천 검색할 값 매개 변수에서 영리한 조회 주요 기능).

이 위대한 작업은 개발 환경에서 하지만 사용자 수용 테스트에서 (UAT) 환경, 그것은 작동 하지 않을. 디버거를 발사, 우리는이 같은 예외 세부 정보를 볼:

사용 권한을 사용자에 게 부여 하는 'UAT_domainmosssvc'이 작업을 수행 하는 데 충분 하지 않습니다.(rsAccessDenied).

위의 오류에 라이브 검색을 할 경우, 그것은 아주 일반적인 발견. 무섭게 일반적인. 최악의 종류의 많은 다른 잠재적인 루트를가지고 있기 때문에 일반적인 원인과 사람의 제안된 솔루션 "느낌" 오른쪽. 우리는 아마 그들 모두를 시도.

우리의 경우, 문제는 우리가 UAT을 DEV의 백업/복원을 했. 데이터에, 뭔가 아직도 "DEV_domain을 언급 했다" (업데이트 된 "UAT_Domain" 대신). 우리는 새로운 사이트를 만들었습니다., 추가 웹 파트와는 우리의 문제를 해결.

한 시간이 나 두 선을 바라 건 대이 사람 저장 됩니다..

</끝>

내 블로그를 구독.

테크노 태그:

빠른 수정: SharePoint 사이트에 액세스를 던졌습니다. [HttpException (0x 80004005): 요청 시간 초과입니다.]

내 개발자 동료 중 이번 주 프로젝트에서 작업 하 고 건물 일부 미친 웹 파트에서 작업 하는 동안 시간 초과 문제에 부딪쳤다. 그의 웹 파트 괜찮다고, 하지만 "갑자기" 비관련된 사이트 되었다 매우 느리고 자주 초과이 오류와 함께:

[HttpException (0x 80004005): 요청 시간 초과입니다.]

로그인 하 고 여러 가지 다른 사이트 잘 했다 보았다. 페이지에 몇 가지 숨겨진된 웹 파트 했다 의심 및 사용 믿음직한 ?내용 = 1 디버그 기술, 사실 찾 았 어 요 11 페이지에서 웹 파트, 만 두는 표시 했다. 더 나은 (let's-hope-I-find-something-ugly-here-that-I-can-fix 관점에서), 3 닫힌된 웹 파트의 "오류"의 이름을 했다.

해당 웹 파트를 삭제 (자체는 의외로 오랜 시간이 걸렸습니다.) 그리고 그 문제 해결. 오늘 🙂

</끝>

내 블로그를 구독.

테크노 태그:

클래스에서 빨리 훈련은 우수

하루를 시작 해요 4 빨리의 파트너 훈련으로 머리를 향하고 래리 케이 여기에 니드 엄, MA.

두 일 세션 클래스로 세분화 됩니다. (3 그리고 2 일 각각) 자격이 "빠른 ESP: 난 파트너 제휴에 대 한 사용자 지정 검색 응용 프로그램을 개발" 및 "빠른 ESP: 얼라이언스 파트너 II에 대 한 사용자 지정 검색 응용 프로그램을 개발 ".

이것은 실제 부트 캠프 형식 클래스. 물자는 깊은 (매우, 매우 깊은). 강사 (래리) 명확 하 게 그의 물건을 알고 있다. 좋습니다이 훈련 하는 경우 그것을 고려 하면.

</끝>

SharePoint와 빠른 — 엔터 프 라이즈 애플 리 케이 션의 리츠 땅콩 버터 컵?

난 하루를 마쳤다 2 써니 Needham에 빠른 훈련, MA, 그리고 아이디어와 붕괴 야 (나는 모든 좋은 훈련 수업). 하나의 특정 측면의 빠른 날 생각을 했다 내가 하 고 싶 었 동안 그것은 아직도 신선 하 고 정상적인 나날 "물건 적어" 내 머리를 밖으로 밀어.

우리 SharePoint WSS 3.0 / 모스 구현자 자주 어떤 합리적인 크기의 SharePoint 프로젝트와 어려운 문제에 직면: 그런 모든 우리의 완벽 하 게 설계 된 정보 아키텍처 내에서 맞는 SharePoint에 로드 된 모든 태그 데이터 어떻게 받을 수 있나요?

만큼 자주, 우리 자신을 문제의 범위 때문에이 같은 어려운 문제가 되지 않습니다.: "우리는 아무것도 걱정 하지 않는 이상 3 개월 오래 된입니다." "우리 키워드 검색으로 모든 물건을 처리할 거 고가 앞으로 우리가 할 거 야 그것은 올바른 방법으로…" 등.

하지만, 우리 자신을 문제의 범위 수 없습니다 그리고 우리는 수천의 10 또는 수천의 100 보고 하면 어떻게 됩니까 (또는 심지어 수백만) 워드 프로세서의 — 로드 그리고 우리의 경건한 소원의 태그?

빠른 답이 될 수 있습니다..

FAST의 검색 프로세스가 포함 되어 움직이는 부품을 많이 하지만 한 단순화 된 보기가:

  • 크롤러 프로세스 콘텐츠 찾습니다..
  • 그것은 콘텐츠를 찾아서 문서 프로세서의 풀을 관리 하는 브로커 프로세스를 떨어져 손.
  • 브로커 프로세스 문서 프로세서 중 하나에 떨어져 손.
  • 문서 프로세서는 문서를 분석 하 고 파이프라인 과정을 통해, 문서에서 bejeezus를 분석 하 고 인덱스 작성기 형식 과정 떨어져 손.

빠른 우주선에, 우리는 많은 처리 파이프라인 문서 제어. 우리는 대 한 일치와 혼합 수 있습니다. 100 파이프라인 구성 요소 및, 대부분 흥미롭게도, 우리는 우리 자신의 구성 요소를 작성할 수 있습니다.. 내가 말한 것 처럼, 어떤 방법은 모든 하지만 일요일 빠른 문서 분석은 고 그것은 그 문서에 대 한 유용한 정보를 많이. 그 미친 빠른 사람들은 명확 하 게 미친 고 문서 분석에 대 한 강 박 도구 또는 정말 문서를 분류 하는 전략을가지고 있기 때문에.

그래서 … 빨리 우리 자신의 사용자 지정 파이프라인 구성 요소와 조합 하 여 사용, 우리 빨리에서 모든 컨텍스트 정보를 들고 수 있으며 이끼 다시 피드. 그것은 이것 같은 것을 갈 수도 있습니다.:

  • 문서 모스에서 빨리에 공급.
  • 일어나는 정상적인 미친 강 박 빠른 문서 구문 분석 및 분류.
  • 우리 자신의 사용자 지정 파이프라인 구성 요소는 데이터베이스에 해당 컨텍스트 정보 중 일부 드랍 스.
  • 우리의 자신의 디자인의 프로세스 컨텍스트 정보를 읽으십시오, 우리의 IA에서 MOSS 문서에 맞게 하는 방법에 몇 가지 결정 하 게 하 고 웹 서비스와 개체 모델을 사용 하 여 표시.

물론, 완벽 하지만 강 박 덕분에 그런 자동화 프로세스 수 있습니다. (아마도 insane-but-in-a-good-way 빠른 사람), 우리 진짜 더 보다는 다만 간신히 검색 가능한 문서 잔뜩 있는 SQL 데이터베이스를 채우지 진정으로 효과적인 대량 로드 프로세스에서 총 싸움을 할 수 있습니다..

</끝>

내 블로그를 구독.

테크노 태그: , ,

Www.EndUserSharePoint.com에서 최종 사용자에 대 한 학습

위로 마크 밀러 http://www.endusersharepoint.com 구축, 내 경험에, 최고의 최종 사용자 중심의 SharePoint 사이트에는 ' 구. 지난 달에, 그는 주변을 "앞 페이지에 초점을 맞춘 최고의 최종 사용자 블로거의 일부에 입 대 했다" 정기적으로, 포함 하 되이 국한 되지 않음 Paul Culmsee, 크리스 퀵, 그리고 Dessie Lunsford. 그는 다른 사람 및 그들의 일정으로 기여할 준비를 줄 수 있다.

참여 하는 기회에 뛰어와 내 취임 게시물은 여기. 일류 비즈니스 워크플로 솔루션을 만드는 데 SharePoint Designer를 사용 하는 방법에 대 한 시리즈를 쓰고 있어요. EUSP.com의 초점 유지, 최종 사용자 프런트와 센터 그 기사 하겠습니다 항상.

개인적으로 세 가지 광범위 한 그룹으로 SharePoint 세계를 분할 하는 경향이 있다: SharePoint 컨설턴트, 풀 타임 SharePoint 직원 개발자와 최종 사용자. 내가 쓸 때, 자주 스스로 게 물어, 이러한 그룹 중 어떤 주제에 관심이 있을 수도 있습니다.? 가장 자주, 처음 두에 대 한 서 면 결국 (기술) 그룹, 나 컨설턴트는 자신 때문에 주로; 그것은 항상 쉽게 하 고 더 정통 있는 익숙한 가장 개인적인 차원에서 그런 것 들에 대 한 쓰기.

내가 전에 언급 했습니다, 최종 사용자 커뮤니티는 멀리, 기술 커뮤니티 보다 훨씬 더 큰. EUSP.com 노치 이며 진심으 모든 3 명 그룹에 게 추천. 사이트의 레이저 초점을 최종 사용자에 게 분명 가치가. 그러나, 개발자와 컨설턴트 우리만 수 우리의 직업에 더 나은 우리가 이해 하 고 우리가 제공 하는 최종 사용자의 요구에 효과적으로 대응 하는 경우. I know I need all the help I can get 🙂 체크 아웃.

</끝>

내 블로그를 구독.

WSS에서 SSRS 웹 서비스를 호출 / 모스는 FBA 환경

우리 "CreateSubscription를 호출 하는 데 필요한" SSRS는 FBA에서 호스팅되는 웹 서비스 메서드는 사용자 지정 웹 파트에서 MOSS 환경 관리. 우리의 변형을 막아:

  • 401: 권한이 없습니다.
  • 개체 이동

"개체 이동" 그것은 그 말 때문에 메시지는 가장 흥미로운 "개체" (SSRS 서비스) "이동 했다" login.aspx에. 이 명확 하 게 우리가 했다 인증 문제가 어떤 종류의 의미.

내가 결국 깨달았다 즐겨찾기에 블로그 항목 FBA 환경 생활 범용 WSS 또는 MOSS 웹 서비스를 호출 하는 방법을 설명 하는 로버트가 렛에 의해. 참고 문서에 직접 연결할 수 없습니다 (로 06/09/08) 인증을 하기 때문에. 내가 제공 하는 링크 "모든 게시물에 제공" 보기 및 당신은 "폼 기반 인증을 사용 하는 액세스 모스 웹 서비스"에 대 한 검색 하 여 특정 문서를 찾을 수 있습니다..

다음은 우리를 위해 일 하는 코드:

ReportingService2006 rs = null; 
// 인증 인증 인증 = 새로운 내용 인증(); 
auth.Url = "http://URL/_vti_bin/Authentication.asmx";
auth.CookieContainer =
새로운 내용 CookieContainer();
LoginResult 결과 = auth.로그인("userid", "비밀 번호");
만약 (결과입니다.오류 코드 = = LoginErrorCode.NoError) 
{
// 오류 없음, 그래서 쿠키를 얻을.
CookieCollection 쿠키 = auth.CookieContainer.GetCookies(새로운 내용 Uri(auth.Url));
쿠키 authCookie = 쿠키[결과입니다.CookieName];
rs =
새로운 내용 ReportingService2006();
rs입니다.Url =
"http://server/_vti_bin/ReportServer/ReportService2006.asmx";
rs입니다.CookieContainer =
새로운 내용 CookieContainer();
rs입니다.CookieContainer.Add(authCookie);
}
시도
{
  rs입니다.CreateSubscription(보고서, extSettings, desc, eventType, matchData, parameters1);
}
catch (예외 예)
{
  Console.WriteLine(전입니다.Message.ToString());
}

두 일을 것 들을 해석:

  • 인증 서비스에 접속 하 여 말 우리의 웹 파트 필요, "이 봐, 토니, 그것은 나를!".
  • 인증 서비스 회신 말, "이 봐, 난 당신을 알으십시오. 아이 어떻게? 여기에 토큰이입니다."
  • SSRS 서비스를 호출 하 고 말, "토니 보낸 날, 여기에 토큰이입니다."

</끝>

내 블로그를 구독.

월별 검색 분석 수행?

그것은 좋은 연습, 아마 가장 좋은 연습, 한 달에 한 번 검색 보고서를 검토 하 여 최상의 선택을 추가 하는 기회를 찾아, 당신의 동의어 사전 조정 하 고 어쩌면 심지어 그렇지 않으면 관리에 숨겨진 몇 가지 비즈니스 인텔리전스를 밝히기.

그것은 이미 달의 3. 시간의 awastin’ 🙂

</끝>

내 블로그를 구독.

테크노 태그:

면처리된 검색 울타리 보 모 더 이상

난 오늘 놀고에 대 한 이유는 codeplex 면처리된 검색 오늘 프로젝트.

그것은 잠시 동안 주변 되었습니다., 다운로드 하 여 그것을 사용 하 여 일반적인 이유로 주저 하지만 (주로 시간의 부족), plus outright fear 🙂

귀하의 검색을 개선 하 고 새로운 옵션을 탐험 하고자 하는 경우, 그것을 다운로드 하 고 그것을 설치 하는 경우 한 시간 정도 자유 시간. 설치 설명서의 지시를 따 랐 고 그것은 내게 미만 20 노력 하 고 그것을 설치 하는 분. 분 값 0을 제공 하 고 있습니다..

그것은 확장을 심하게 보여요. 저자는 복잡 한 BDC 시나리오에 대 한 자세한 도보를 제공. 그것을 누락 될 수 있습니다., 하지만 그들은 또한 제공 하는 것 간단한 시나리오와 관련 된 기존의 속성 중 하나 또는 어쩌면 하나의 새로운 관리 속성을 추가 하는 것이 좋겠다. 나는 시도 하 고 시간의 다음 기간에는 자신을 작성 한다.

히 프 라인 — 분에, 설치할 수 있습니다., 그것을 구성합니다, use it and add some pretty cool functionality to your vanilla MOSS search and be a hero 🙂

</끝>

내 블로그를 구독.

테크노 태그: