잊혀진 계절


참조 URL
  1. http://www.youtube.com/watch?v=njgnX8gcgQ4 - 이용
  2. http://www.youtube.com/watch?feature=player_detailpage&v=MbAbQri7kwM - 아이유 버전



























'Music' 카테고리의 다른 글

10월의 어느 멋진 날에  (0) 2013.08.17
잊혀진 계절  (0) 2013.08.16
18- (5) Porco Rosso - Joe Hisaishi (Music Box Collection)  (0) 2013.08.14
Howl's Moving Castle Theme - Sungha Jung  (0) 2013.08.14
Joe Hisaishi - HANA-BI 【はなび】  (0) 2013.08.14

18- (5) Porco Rosso - Joe Hisaishi (Music Box Collection)





'Music' 카테고리의 다른 글

잊혀진 계절  (0) 2013.08.16
Joe Hisaishi in Budokan - Studio Ghibli 25 Years Concert  (0) 2013.08.14
Howl's Moving Castle Theme - Sungha Jung  (0) 2013.08.14
Joe Hisaishi - HANA-BI 【はなび】  (0) 2013.08.14
비상 - 임재범  (0) 2013.05.19

Howl's Moving Castle Theme - Sungha Jung



Joe Hisaishi - HANA-BI 【はなび】 




'Music' 카테고리의 다른 글

18- (5) Porco Rosso - Joe Hisaishi (Music Box Collection)  (0) 2013.08.14
Howl's Moving Castle Theme - Sungha Jung  (0) 2013.08.14
비상 - 임재범  (0) 2013.05.19
문이 열리네요 - 유리상자  (0) 2013.05.19
되돌리다 - 이승기  (0) 2012.12.02

Cross Document messaging 통신
다른 사이트 페이지끼리 통신 하기


참조 URL
  1. https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage
  2. http://m.mkexdev.net/75
  3. http://jjeong.tistory.com/476
  4. postMessage를 이용한 크로스도메인간 iframe 리사이징
  5. http://jsonobject.tistory.com/53





[그림1] postMessage를 통한 크로스 사이트 통신



 '그림1'에서와 같이 페이지에서 iFrame로 임베이딩된 상태에서는 브라우저의 보안 정책으로 인해 자바스크립트를 통해 페이지간 통신을 할 수 없었다. 하지만 postMessage를 통해서 가능하게 되었다. 지원하는 브라우저는 아래 '그림2'에서와 같이 IE8에서부터 지원이 되므로 거의 대부분의 브라우저에서 지원된다고 보면 될 것이다.



[그림2] postMessage 브라우저 호환표

http://caniuse.com/#feat=x-doc-messaging )


 이제 postMessage의 사용법에 대해서 알아 보자



데이터 송신하기


데이터를 송신하기 위해서는 window 객체의 postMessage 함수를 사용하면 된다


[코드1] 데이터 송신



data: 전달할 메세지, 즉 송신할 데이터를 지정한다

ports: 메세지를 전송할 포트(생략 가능)

targetOrigin: 타켓 도메인,  즉 메세지를 수신받는 도메인을 지정한다 대상이 특정 도메인이 아니라면 * 로 지정한다 




데이터 수신하기


데이터를 수신하는 측에서는 단순히 window 객체의 message 이벤트를 구현하면 된다


[코드2] 데이터 수신



data: 메세지 즉 송신한 데이터이다

origin: 메세지를 보내는 곳의 도메인 정보 크로스 도메인 환경이라면 상대 도메인을 확인하는 것이 보안상 좋다

source: 메세지를 보내는 윈도우 객체 



이제 이 코드를 가지고 아래 예제 코드로 활용법을 보도록 하자.



[코드] 송신쪽 페이지 코드



[코드] 수신쪽 페이지 코드



Syntax

otherWindow.postMessage(message, targetOrigin, [transfer]);



otherWindow

A reference to another window; such a reference may be obtained, for example, using the contentWindow property of an iframe element, the object returned by window.open, or by named or numeric index on window.frames.


message

Data to be sent to the other window.


targetOrigin

Specifies what the origin of otherWindow must be for the event to be dispatched, either as the literal string "*" (indicating no preference) or as a URI. If at the time the event is scheduled to be dispatched the scheme, hostname, or port of otherWindow's document does not match that provided in targetOrigin, the event will not be dispatched; only if all three match will the event be dispatched. This mechanism provides control over where messages are sent; for example, if postMessage were used to transmit a password, it would be absolutely critical that this argument be a URI whose origin is the same as the intended receiver of the message containing the password, to prevent interception of the password by a malicious third party. Always provide a specific targetOrigin, not *, if you know where the other window's document should be located. Failing to provide a specific target discloses the data you send to any interested malicious site.


transfer [Optional]

Is a sequence of Transferable objects that are transferred with the message. The ownership of these objects is given to the destination side and they are no more usable on the sending side.












일정에 따르는 내부 이벤트 정보

( Item, GlobalObjectId 추적 )



 반복 일정에서 ItemId와 GlobalObjectId의 상관 관계 그리고 수정에 대해서 알아 보고자 한다. 일정 관련 개발시 또는 연동 때문에 여러가지 케이스에 대해서 밑에와 같이 정리해 보았다. 익스체인지 일정은 과거 일정과 미래 일정이 현재 일을 포함 할 경우 이전 일정에 대해서는 새로 생성을 하고 기존 일정을 수정하여 처리하고 있다. 이렇게 변경되는 사항들을 잘 정리해서 쉽게 일정 연동을 할 수 있기를 바라겠다.



밑에서 나온 분석 자료에서 'Uid'가 익스체인지의 ItemId임을 주지 하기 바랍니다.



1. 현재일 보다 미래 일정에 대해서 수정
 
8월 12일 반복 시작일

1.1  화요일 반복 일정 생성
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpB3AAA=","EMail":"test@test.com","Tstamp":"635116401739714845","Title":"반복 테스트 #1 화요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAABqFxwHnpTOAQAAAAAAAAAAEAAAAErmMOMEWQpJoohCYDFvDhU=","EventType":"Created"}

1.2 화요일 반복 일정 생성 전체 일정 수정
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpB3AAA=","EMail":"test@test.com","Tstamp":"635116403135292644","Title":"반복 테스트 #1 화요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAABqFxwHnpTOAQAAAAAAAAAAEAAAAErmMOMEWQpJoohCYDFvDhU=","EventType":"Modified"}

1.3 화요일 반복 일정 한 항목만 수정 - 날짜 수정 없음
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpB3AAA=","EMail":"test@test.com","Tstamp":"635116432690946758","Title":"반복 테스트 #1 화요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAABqFxwHnpTOAQAAAAAAAAAAEAAAAErmMOMEWQpJoohCYDFvDhU=","EventType":"Modified"}

1.4 화요일 반복 일정 한 항목만 수정 - 날짜 수정 있음
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpB3AAA=","EMail":"test@test.com","Tstamp":"635116433589856729","Title":"반복 테스트 #1 화요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAABqFxwHnpTOAQAAAAAAAAAAEAAAAErmMOMEWQpJoohCYDFvDhU=","EventType":"Modified"}

1.5 화요일 반복 일정 - 모든 반복 일정 삭제
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpB3AAA=","EMail":"test@test.com","Tstamp":null,"Title":null,"GlobalObjectId":null,"EventType":"Deleted"}
 
1.6 반복 일정중에서 한 항목에 대해서만 삭제
2013-08-09 11:29:29,239 [ 116] INFO Default - SonicMQ send : {"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpBzAAA=","EMail":"test@test.com","Tstamp":"635116445692231978","Title":"토요 반복 일정","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADuh2SPJZTOAQAAAAAAAAAAEAAAAK8400lwUDdGhrjVUfWxnmQ=","EventType":"Modified"}
2013-08-09 11:29:34,066 [ 116] INFO Default - SonicMQ send : {"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpBzAAA=","EMail":"test@test.com","Tstamp":"635116445740518419","Title":"토요 반복 일정","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADuh2SPJZTOAQAAAAAAAAAAEAAAAK8400lwUDdGhrjVUfWxnmQ=","EventType":"Modified"}
2013-08-09 11:29:44,145 [ 105] INFO Default - SonicMQ send : {"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpBzAAA=","EMail":"test@test.com","Tstamp":"635116445840891818","Title":"토요 반복 일정","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADuh2SPJZTOAQAAAAAAAAAAEAAAAK8400lwUDdGhrjVUfWxnmQ=","EventType":"Modified"}
 
1.7 반복일정의 최종 삭제
2013-08-09 11:29:49,043 [ 133] INFO Default - SonicMQ send : {"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpBzAAA=","EMail":"test@test.com","Tstamp":null,"Title":null,"GlobalObjectId":null,"EventType":"Deleted"}
 
 
 금일(오늘)을 포함하지 않는 미래의 일정은 ItemId와 GlobalObjectId가 변경되지 않고 예상되로 반복 일정 수정이 일어 나고 있다. 



 
2. 과거일에서 현재일 포함 미래일 범위의 일정에 대해서 수정
 
 
8월 1일 반복 시작일

2.1 과거 목요일 반복 일정 생성
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCDAAA=","EMail":"test@test.com","Tstamp":"635116536408209382","Title":"반복일정 테스트 #3 - 목요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADIsGZkvZTOAQAAAAAAAAAAEAAAAL7jcbkKvu5CkiLigoQ5+PI=","EventType":"Created"}

2.2 과거 목요일 반복 일정 변경 - 범위만 변경
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCDAAA=","EMail":"test@test.com","Tstamp":"635116536652862034","Title":"반복일정 테스트 #3 - 목요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADIsGZkvZTOAQAAAAAAAAAAEAAAAL7jcbkKvu5CkiLigoQ5+PI=","EventType":"Modified"}
 
2.3 과거 목요일 반복 일정 변경 - 반복일을 금요일로 날짜 변경

2.3.1 과거 목요일 반복 일정 변경 - 금요일로 날짜 변경 - 8월 9일 이전의 일정이 새로 생성 됨
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCEAAA=","EMail":"test@test.com","Tstamp":"635116537102912102","Title":"반복일정 테스트 #3 - 목요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADIsGZkvZTOAQAAAAAAAAAAEAAAAL7jcbkKvu5CkiLigoQ5+PI=","EventType":"Created"}

2.3.2 과거 목요일 반복 일정 변경 - 금요일로 날짜 변경 - 8월 9일 이후의 일정만 수정 됨{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCDAAA=","EMail":"test@test.com","Tstamp":"635116537103422167","Title":"반복일정 테스트 #3 - 목요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAAAouLOLvZTOAQAAAAAAAAAAEAAAAKD44Bwh7SFNoqxBurnSKYk=","EventType":"Modified"}
 
 
과거일 포함 수정이 일어나면
 - 이전 날짜는 새로 생성이 되고 GlobalObjectID는 이전과 동일 합니다. ( 새로 생성이 되어 ItemID는 다름 )
 - 이때 이후 날짜는 수정이 되며 ItemId는 같지만 GlobalObjectID는 다르게 변경 됨
 
 
 
2.4 목요일 반복 일정 전체 삭제 - 8월 9일 이전일 삭제 진행 - 삭제시 Exchange에 Item이 없기 때문에 GlobalObjectID를 알아 낼 수 없음
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCEAAA=","EMail":"test@test.com","Tstamp":null,"Title":null,"GlobalObjectId":null,"EventType":"Deleted"}
 
2. 5 금요일 반복 일정 전체 삭제 - 8월 9일 이후일 삭제 진행 - 삭제시 Exchange에 Item이 없기 때문에 GlobalObjectID를 알아 낼 수 없음
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCDAAA=","EMail":"test@test.com","Tstamp":null,"Title":null,"GlobalObjectId":null,"EventType":"Deleted"}
 
 
 
 
-- 새로 일정 생성해서 진행 함 
 
2.6 금일 이전 한 항목만 일자 변경은 저장을 할 수 없어서 수행 하지 못함
 
2.7 금일 이후 한 항목만 일자 변경
{"Uid":"AAMkAGM2NmM0MDFhLTMxMDItNGEzNC04MjQ5LTdmNTcyMmNlYmY0MgBGAAAAAAD14fnht2jpSpaypawvJwO3BwA2K3ZCpui2TKCftY0IT00tAAAAAAAPAAA2K3ZCpui2TKCftY0IT00tAAA2tpCFAAA=","EMail":"test@test.com","Tstamp":"635116547854317040","Title":"반복일정 테스트 #4 - 목요일","GlobalObjectId":"BAAAAIIA4AB0xbcQGoLgCAAAAADVpTb8v5TOAQAAAAAAAAAAEAAAAFO0GqAx2KxCu43J1ILBwSw=","EventType":"Modified"}




 

 금일(오늘)을 포함한 반복 일정은 ItemId와 GlobalObjectId가 변경된다. 금일 이전 일정은 새롭게 생성되어 ItemId가 생성되지만 GlobalObjectId는 동일한다. 그러지만 수정된 반복 일정은 ItemId는 동일하지만 GlobalObjectId가 변경된다. 이 규칙을 잘 이해해야 익스체인지의 일정과 연계 개발을 쉽게 할 수 있을 것이다. 









Front end 웹 개발 프레임 워크 - twitter bootstrap html5 boilerplate, foundation


참조 URL
  1. http://html5boilerplate.com/
  2. http://foundation.zurb.com/
  3. http://getbootstrap.com/
  4. http://bootstraphero.com/
  5. http://bootstraphero.com/the-big-badass-list-of-twitter-bootstrap-resources



 웹 디자인에 정형화된 코드의 집합체인 프레임워크는 종류가 다양하다. 그 중에 Html5Bolierplate와 Foudataion, Twitter Bootstrap가 가장 유명하다. 그 중에 Twitter Bootstrap와 연계되어 개발이 진행중인 연관 프로젝트가 가장 활성화가 잘 되고 있다.


Html5Boilerplate은 가장 기본적인 기능만을 미리 선언해 두었으며 IE 버전에 따라 다르게 동작하도록 하는 기능정도만이 추가 되어 있어서 나머지 CSS는 추가적으로 모두 작업을 해야만 한다.


Foudation은 Html5Boilerplate 보다는 많은 부분을 다루고 있다. 그리드 시스템, 버튼, 탭, 슬라이드를 만들 수 있는 스타일 시트와 자바스크립트를 제공한다. 그렇지만 BootStrap 처럼 포괄적으로 제공하고 있지는 않다.


Twitter.BootStrap은 웹 페이지 제작에 필요한 거의 모든 요소를 만들 수 있게 제공이 되고 있다. HTML페이지에 테그와 선택자만 입력해도 사용할 수 있으며 같이 제공되는 자바스크립트도 점더 세련되게 사용자와 반응 할 수 있도록 한다.


그래서 전체적인 지원 범위를 비교해 보면 아래와 같을 것이다.



Html5Boilerplate < Foudation < Twitter.Strap



밑바탕 부터 차근 차근 개발이 필요한 사이트는 Html5Boilerplate를 사용하면 될것이고 디자인이나 레이아웃 그리고 브라우져마다 다른 특이점을 고려하기 힘든 상황이라면 Twitter.Bootstrap를 이용해서 필요한 부분만 수정하여 웹 사이트를 개발하면 쉽게 이쁘고 확장성이 있는 멋진 웹 사이트를 제작할 수 있을 것이다.













우루사의 꽤 괜찮은 광고










Extended WPF Toolkit™ Community Edition


참조 URL
  1. http://wpftoolkit.codeplex.com/
  2. http://wpftoolkit.codeplex.com/documentation
  3. http://wpftoolkit.codeplex.com/releases/view/99072
  4. https://www.facebook.com/DataGrids


 WPF 개발시 기본 컨트롤을 확장하여 보다 쉽게 사용할 수 있도록 Toolkit를 만들어 배포하고 있다.


















+ Recent posts