Google 에서 제공되는 서비스들은 거의 대부분 API를 제공하고 있다.
ATOM - 우리가 보통 말하는 SOAP과 같은 형태로 규격화된 XML로 구성된 형태와 JavaScript에서 쓰기 편한 JSON 형태들, 결과값도 다양한 형태로 제공한다.
(우리나라 포털은 이런 것과는 전혀 반대로 가고 있다. 뭐 다음이나, 네이버에는 개발자 들이 많으니, 외부 개발자들이 끼어들 필요가 없어서 그런듯... 애플 앱스토어 같은 성공 모델도, 이들에게는 큰 감흥이 없는 것 같다.)

이 중 Google Calendar 값을 가져와서 편집하려는 .NET 기반 툴을 만들려고 생각 중이였다.

 http://code.google.com/apis/calendar/data/2.0/developers_guide_protocol.html

난 맨처음 ATOM 기반의 데이터를 보았기 때문에, XMLDocument Reader로 읽어서 원하는 값들을 뽑으려고 했다.
하지만, 내용이 너무 방대하고 많아서 이 내용들을 정리할 생각에 뒷목이 뻣뻣함이 느껴졌는데,
알고보니까, 언어별로 이미 패키지화 해버렸다.
패키지는 다음 URL에서 받으면 된다.

http://code.google.com/p/google-gdata/downloads/list

MSI 파일로 설치를 하면 기본 경로로 C:\Program Files\Google\Google Data API SDK 위치에 설치된다.
Calendar 뿐만 아니라, Google 에서 제공하는 각종 기능들을 다룰 때 사용하는 대부분의 기능들을 담은 패키지를 제공한다.

그 중 완벽 정리된, .NET 코드로 작성하는 방법은 아래의 URL에서 참고하면 된다.

http://code.google.com/apis/calendar/data/2.0/developers_guide_dotnet.html

거의 완벽 정리. ( 문제는 언어 장벽! ㅠ.ㅠ )

각종 Open API 기반 서비스는 Google 기반으로 동작하게 할 수 밖에 없을 것 같다.
다음도, 네이버도 결국 이런 서비스를 제공하는 것은 요원한 일이 될테니..

구글 서비스나 잘 구성해서 써야 겠다.

 

Google Calendar 내용을 모두 열어 보는 코드를 간단하게 짜보면 아래와 같다.


Google.GData.Client.GDataCredentials m_credential 
= new Google.GData.Client.GDataCredentials("구글아이디", "구글암호");

Google.GData.Calendar.CalendarService svc = new Google.GData.Calendar.CalendarService("지금 만들고 있는 프로그램의 이름");
svc.Credentials = m_credential;

Google.GData.Calendar.EventQuery query
= new Google.GData.Calendar.EventQuery(http://www.google.com/calendar/feeds/default/private/full);

query.StartDate = DateTime.MinValue;
query.EndDate = DateTime.MaxValue;
Google.GData.Calendar.EventFeed feed = svc.Query(query);

foreach (Google.GData.Calendar.EventEntry entry in feed.Entries)
{
     if (entry.Times.Count > 0)
     {
            entry.Times[0].AllDay;  // 종일 이벤트인지?
            entry.Times[0].StartTime;  // 시작일
            entry.Times[0].EndTime;   // 종료일
      }
      entry.Title.Text; // 이벤트 제목
}

저 코드면 맨 마지막에 나오는 값들로 표시를 하거나 정리를 할 수 있게 된다.

그런데 특이한 점은 일정에서 날짜와 시간이 반드시 들어갈 줄 알았는데, 알고 보니까,
외부에서 파일을 import 해서 넣은 일정들은 저 entry.Times 값이 없는 경우가 있다.
그래서 entry.Times 에서 갯수를 파악한 뒤 내용을 꺼냈다.  - 주의가 필요 -

Posted by 하인도

댓글을 이용해서 pjyoung 님께서 질문을 남겨주셨는데요.( http://www.hind.pe.kr/805#comment6147213 )
내용을 읽어보다가, 잠시 대기라는 느낌이 들어 글을 남김니다.

지금 OBJECT 태그를 이용하시는 것까지는 맞는데요. CODEBASE 부분의 Tag 부분이 잘못된 것 같습니다.
CODEBASE라는 부분의 의미는 Object 태그가 들어간 페이지를 브라우저를 통해 띄울 때,
해당 ActiveX가 없을 때 어디서 받아가지고 오는 것인지 알려주는 부분입니다.

은행권 사이트를 예를 들어볼께요.(ActiveX 범벅이라 참 좋은 예제 같습니다 -_-;;; )
먼저 한번도 들어가본적이 없는 은행권 사이트에 접속을 합니다.
그 은행권에서 사용하는 보안용 ActiveX의 GUID가 33e6b301-a928-438d-b3b1-733bfc68ccdb 라고 하죠.
그 은행권 사이트에 접속하는 IE에서는 자신의 컴퓨터 안에 저 위의 GUID에 해당하는 ActiveX가 있는지 검색합니다.
당연히 있으면 띄우고 없으면 CODEBASE에 설정된 정보를 따라 들어가 다운로드 받고 설치합니다.
그 때 IE에서 보면 주소바 아래쪽에 노란색 바 같은게 뜨잖아요?
바로 그 행동을 한다고 사용자에게 알려주는 부분입니다.
그러나 여기서 잠시… 이 CODEBASE에 담기려면, 인증서가 배포 파일 안에 있어야 됩니다.
공인인증서 같은 것인데, 프로그램 배포용 공인인증서 입니다.
그거 안들어가면 IE에서 설치 못합니다.
(바이러스 따위로 인지해버린다는 거죠.)

아래의 링크를 보시면 알겠지만, 그 CODEBASE에 관련된 내용이 자세히 나와있습니다.

.http://digitalangelmaster.wordpress.com/2008/02/15/기존-activex-control-업그레이드/

 

그런데 위의 내용은 어떻게 보면 실험용이라기보다는 실전용의 의미에 가깝습니다.

만일 그냥 웹페이지에 띄우는 실험이나 자체적인 연습이라고 한다면 다르게 접근하시면 됩니다.
먼저 CODEBASE 부분을 삭제하시구요.
다음은 그 ActiveX를 띄우는 PC에 ActiveX를 강제적으로 설치하는 것입니다.

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm /codebase “xxxxxxxx/form.dll”

저 위의 명령이 바로 그 ActiveX를 강제적으로 설치하는 것입니다.
아예 미리 PC 안에 설치되어 있으면 IE 에서는 군말 없이 띄웁니다. 즉 위의 명령을 써서, 직접 PC에 인스톨을 하는 것입니다. 그러면 특별한 코드상의 문제만 없다면 화면에 뜰 것입니다.

한번 확인해보세요.
(제가 해보고 싶었지만, 지금 밀린일이 좀 많아서 테스트는 안해봤어요 -_- ;;;)

Posted by 하인도

MOSS 2007 기반으로 개발을 하거나, 기타 웹 어플리케이션을 만들면 꼭 들어가는 코드가 바로 JavaScript 이다.특히나 동적 웹을 구현을 하려면 특히 자주 활용하게 된다.
하지만, 그 Javascript의 동작이 올바른지 올바르지 않은지에 대한 판단을 하는 모습을 보면, 상당히 원시적으로 하는 경우를 많이 보게 된다. 일단 동작하는 화면을 보고, 그 결과물을 보고 현재 구성된 Javascript를 보고, 일부 수정하거나 MessageBox를 띄우고 결과물 보고..
이렇게 Javascript를 수정하는 경우 경험이 많은 개발자야 짐작과 동시에 문제점을 찾기라도 하지만, 웹 개발에 익숙치 않거나, 아예 문법 오류로 인해 Javascript 자체가 실행 안된 경우라면, 거의 좌절이다. 게다가, 웹 페이지 내에 직접 박아 넣은 Javascript라면 그럭저럭 짐작이라도 하는데, 다른 Javascript 소스를 include 한 경우라면, 이야기가 점점 꼬이기 시작한다. 뭐가 문제인지 짐작도 되지 않는다.
다행이, FireFox나 Google Chrome과 같은 웹브라우저에서는 자체적으로 혹은 외부 플러그인을 통해 디버깅이 가능하며 그 기능은 상상을 초월한다. 훌륭하다 못해 멋지기 까지 할 정도로 정확하게 값을 뽑아오며, 정확히 어느 파일의 어느 위치에 오류가 있는지 알려주며,  현재 상태 값을 보면서 정확한 오류 내용을 파악할 수 있다.

그러나, 우리나라 환경에서 개발하는, 그것도 새로 개발도 아니고, 기존 코드를 수정하는 입장인 경우, Javascript를 까보면, FireFox나, Chrome에서는 동작하지도 않는 경우가 허다하다. 특히나 ActiveX 같은 X 같은 플러그인 꽂은 곳은 아예 Gothem! 레벨. 결국 IE로 띄워 뭔가 디버깅을 시도해야 된다는 슬픈 일이 닥친다.

하지만, MS 기반, IE 온리 개발하는 곳에서는 일반적으로 Visual Studio를 이용한 .NET 개발이 주로 발생되는데, 이 경우 라면 해피하다. 여기서는 이 해피한 경우에 대처하는 좋은 방법을 알려드리려 한다.

1. IE 설정.

IE가 6.0으로 쫑 날 줄 알았으나, FireFox와 Chrome, 사파리 등의 웹 브라우저의 등장으로 위기감의 고조와 함께, 그 동안 계속되었던 6.0의 버그, 속도 문제등의 이유로 결국 7.0을 내 놓았다. 그러나, 7.0을 탑재한 Vista의 처절한 실패로 인해 Windos 7과 함께, 등장한 8.0 으로 업그레이드 되었다.

즉, 이제 IE는 6.0, 7.0, 8.0 이 혼재된 모습을 보이기 시작했다.

일단, 8.0을 기준으로 설명하며, 7,0이나, 6.0은 다른 곳을 찾아보거나, 짐작해서 옵션을 변경해야 할 것 같다.
IE를 실행 한 뒤, 인터넷 옵션을 띄우고, 인터넷 옵션에서 “고급”탭을 클릭해서 연다.

여러가지의 항목들 중 “스크립트 디버깅 사용 안함(기타)”, “스크립트 디버깅 사용 안함(Internet Explorer)”에 체크 되어 있는 것을 끄도록 한다.

2. 에러 페이지까지 가기.

Visual Studio가 깔린 PC에서 IE를 통해 먼저 에러가 발생하는 페이지까지 접근하도록 한다. 지금 필자에게는 마땅히 띄울 UI가 담긴 Page가 없으므로 에러가 발생하는 페이지를 띄우도록 할 것이다.

에러가 발생했다. 그러면 에러 페이지가 뜨는데, 여기서 체크 박스들을 없애고 “예(Y)”를 클릭한다.

위의 팝업이 안뜨면 브라우저의 왼쪽 아래에 있는 경고 표시를 클릭하면 볼 수 있다.

일단 “예(Y)”를 하면, IE에 등록된 Javascript 디버거들의 목록이 뜬다.

현재 필자는 변변한 디버거라고는 Visual Studio 정도지만, Office 2003~2007 을 전체설치하는 경우 Javascript 디버거가 별도로 설치될 수 있다. 또는 3rd Party 제품이 뜰 수도 있다. 다른 제품들은 각 제품의 설명을 보도록 하고, 여기서는 Visual Studio로 선택하도록 한다.

혹여 Visual Studio일지라도 이미 떠 있는 Visual Studio를 선택할 수 있는데, 가급적이면, 새 인스턴스 Visual Studio를 선택하도록 한다.

3. Visual Studio 에서 디버깅.

“새 인스턴스 Visual Studio XXXX”를 선택하고 “Y”를 클릭하면 Visual Studio가 뜬다. 이 때 디버깅을 하는 것은 iexplore.exe 자체. 무슨 프로세스를 걸던 간에 일단 띄워보면, 정확한 오류 메시지를 알려준다.

 
오류 보시고, 이번엔 “중단(B)” 버튼을 클릭한다.
그러면 소스가 보일 것이고, 어디서 오류가 났는지 볼 수 있다.

왼편에는 지금 오류가 난 페이지와 관련된 각종 Javascript 소스들과 Html 소스들이 쭉 나래비가 펼쳐질 것이고,
오른편에는 해당되는 소스가 보인다. 여기서 부터는 Visual Studio 만의 디버그 UI를 활용함으로써 충분한 기능을 발휘할 수 있다.

소스 자체에서 커서를 위로 올리면 인텔리센스의 또다른 기능인, 변수 값들을 볼 수 있으며, 조사식, 콜스택, 지역 변수 값들을 모두 보면서 진행할 수 있다. 한단계씩 실행할 수도 있다.

4. 고급 디버깅 - 중단점

꼭 오류가 나기 이전 단계에서 디버그를 시작하고 싶은 경우에는 중단점을 이용하면 된다.
자신이 원하는 곳에다 중단점을 걸고 진행하면 되는데, 이를 위해서는 항상 동일한 위치에서 오류가 발생해야 쉽게 적용 가능하다. 방법은 아래와 같다.

1. 자신이 원하는 위치에 중단점을 건다.(Visual Studio 버전에 따라 중단점을 걸게 되는 조건이 조금씩 다르다.)
  
2. 디버그를 끝까지 진행시킨다.(디버그에서 계속 버튼 – 디버깅이 멈춰진 곳에서 계속 진행하도록 하는 버튼)을 누르거나 선택하면 된다.)
   
3. 경고창으로 뜨는 메시지에 예외를 iexplore로 보내겠다는 메시지에 예(Y)를 선택한다.
  
4. 브라우저로 돌아와서, 다시 Refresh를 한다.

5. 그러면 자신이 중단점을 건 위치에 커서가 멈춰 있게 된다.
  

 

5. 줄이며.

사실 Visual Studio의 기능은 막강한 편이다. 최초 5.0, 6.0 같은 경우 Windows 기반 Application 제작에 비중이 실렸다면, Visual Studio 2003 부터 조금씩 조금씩 웹 쪽에 대한 기능이 실리기 시작했다. 특히 Visual Studio 2005 부터는 ASP 개발에 있어 그 편리성은 혁신에 가깝게 진행되었다.

최소한 위의 디버그 모드에 대한 기능은 2003보다는 2005가, 2005 보다는 2008에서 더 정확하게 확실하게 동작함을 알 수 있다. 다소 툴이 무거워 쉽게 접근하는건 무리겠지만, 웹 표준에 제대로 맞지도 않는 웹 개발을 특히나 유지보수를 하려고 한다면, IE를 쓰고, Visual Studio를 쓰는 강수를 노려야 되니… 뭐 억지로라도 쓰도록 한다.
일단 쓸 수 있는 환경(CPU나 RAM이나.. 개발자 PC의 성능 문제가 대부분)이라면, 나름 장점이 많은 도구이니, 활용하는데 큰 무리가 없으리라 본다.


UPDATE:

저 위의 방법은 Javascript가 오류가 난다는 가정하에서 하나씩 거는 방법이다. 만일 Javascript의 오류가 나지 않을때, 디버그를 걸어 확인하고 싶을 때까 있다.

그런 경우에는 소스 내에 "debugger;" 라는 줄을 추가하면 된다.

그러면 debugger 라고 적힌 줄에서 에러가 난 것 처럼 표시되고, 위의 방법대로 진행이 가능하다.

Posted by 하인도

블로그 내 필자를 관리하는 방법을 설명합니다.

 

일단 scmaid.org의 관리자 페이지에 들어갑니다.

들어가는 방법은 아래 메뉴에 표시된 위치를 클릭하면 들어가집니다.

 

 

다음은, 관리자 화면으로 넘어갈때, ID/Password를 묻는데, (안 묻는다면 일단 Logout을 하시고 다시 들어기시기 바랍니다.) 그 안에 관리자 아이디와 암호를 넣습니다.
(아이디와 암호 부분은 이정호 선임을 통해 전달 받거나 하시면 됩니다.)

 

 

이제 관리자 화면을 볼 수 있는데, 그 중, 네트워크 –> 필진 목록을 클릭해주세요.

(만일 IE 8.0에서 메뉴가 제대로 보이지 않으면 주소 줄 옆의 호환성 보기 아이콘( )을 클릭하세요!)

 

 

필진 목록을 클릭하면 필진 목록이 보이는데, 여기에 모든 기능이 담겨 있습니다.

직접 페이지를 띄워서 테스트를 하셔도 되고, 화면을 보시면서 익혀도 됩니다.

 

 

1. 필진 초대하기.

팀 블로그이기 때문에, 필자가 1인이지 않습니다. 여러 사람이 동시에 글을 올릴 수 있습니다. 그러나 공개 게시판과 같은 형식이 아니기 때문에, 특정 인에 대해서만 필진으로 등록하게 됩니다. 여기서 중요한 것은 필진의 이메일 주소가 반드시 필요합니다. 또한 이메일 주소 자체가 ID이기 때문에, 반드시 올바른 이메일 주소여야만 합니다.

먼저 관리자는 초대장 부분에 있는 “받는 사람” 필드에 E-Mail 주소를 넣습니다.

그 외의 부분은 필요한 만큼만 채우시면 됩니다. 그리고 초대장을 발송하세요.

 

그러면 받는 사람에게 다음과 같은 메일이 옵니다.  메일 안에 “블로그 바로가기”라는 링크를 클릭하시면 됩니다.

클릭하면 아래와 같은 화면이 뜹니다.(자동으로 생성된 암호로 로그인됩니다.)

 

필명에다가 자신의 별명이나 이름을 씁니다. 저 이름으로 글 쓸 때마다 박히니, 가명을 쓰셔도

되고, 진명을 쓰셔도 되고, 별명을 쓰셔도 무방합니다.  그리고 그 아래의 “저장하기” 버튼 클릭하시구요.

 

다음은 비밀번호 있는 부분에 있는 부분에서 “새로운 비밀번호” “비밀번호 확인” 부분에 자신만의 암호를 넣어주세요.

만일 이 부분을 안채우시면 암호를 알 길이 없습니다.(자동으로 만들어진 비밀 번호이여서, 관리자도 알 수 없습니다.)

입력 후 “저장하기” 버튼을 클릭하세요.

 

나머지는 그대로 두세요!

 

 

이렇게 필진을 등록하시면 됩니다.

 

2. 필진 관리하기.

필진 관리는 관리자 권한에서만 가능합니다.

관리로는 필진의 권한 설정과 필진 삭제 정도의 기능이 있습니다.

그 모든 처리는 표 안에서 다 됩니다.

필진 관리를 하기 위해서는 관리자 페이지에서 네트워크 –> 필진 관리로 일단 들어갑니다.

 

 

권한 부분의 설정은 관리자, 글관리가 있는데,

이중 최소한 글 관리에 체크를 해주시기 바랍니다.

체크하는 순간 알아서 저장 적용됩니다.

 

마찬가지로 필진을 빼고 싶은 경우 사용자 제외를 클릭하시면 됩니다.

(삭제된 필진의 글은 모두 관리자로 넘어가게 됩니다.)

Posted by 하인도

지금까지 2003 IIS만 주로 쓰고 있다가, 2008로 넘어오면서 나름 적응을 했다고 생각했다.

그런데, 2008 R2에서는 시스템 성능 및 보안 등등 여러가지를 손 본듯 싶었다.

 

이번에 지원 프로젝트건이 있어 잠시 나왔다.

ClearQuest 7.1.1 과 IIS간의 연동 부분이 있는데, ClearQuest에서 제공하는 COM 과 연결하는 작업이 반드시 필요한 내용이였다.

로컬 및 자체 Staging 서버(애석하게도 여기는 2008이였지, 2008 R2가 아니였다.)에서는

잘 돌다가, 갑자기 운영서버에 올라가니 다음과 같은 오류를 뿜었다.

 

'/' 응용 프로그램에 서버 오류가 있습니다.
--------------------------------------------------------------------------------

80040154 오류로 인해 CLSID가 {94773112-72E8-11D0-A42E-00A024DED613}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.Runtime.InteropServices.COMException: 80040154 오류로 인해 CLSID가 {94773112-72E8-11D0-A42E-00A024DED613}인 구성 요소의 COM 클래스 팩터리를 검색하지 못했습니다.

소스 오류:

줄 19: ....

 

처음에는 COM이기 때문에, 해당 서버에 저 COM이 제대로 등록되어 있지 않았나 싶었다.

그래서 구성 요소 서비스에 들어가, 해당 Component가 이상한가 봤는데,

애석하게도 내가 다루고 있던 COM은 서버형이 아니므로 전혀 무관계.

이번에는 RegEdit 를 띄운 뒤, 저 CLSID를 검색하는데,

잘 걸린다. 위치도 제대로 되어 있고, 모든 설정은 OK! 였다.

.NET Framework 문제인가? 3.5가 아닌 2.0 기반의 Classic .NET 설정의 문제인가.

아니면 내가 코드를 짤 때 레퍼런스 설정이 잘못된 것인가?

여러가지 의문점들을 하나씩 수정하면서 체크해봤다.

대략 1시간 정도 시간을 보내고 났다.

그러나 방법은 모르겠고.....

 

그러다가, 현재 동작 중인 응용 프로그램 설정에서 다음을 보았다.

3264compotableproblem

 

저게 x64 형태의 서버에서만 설정하는 부분인 것 같다.

성능상의 Issue를 최소화 시키기 위해 x86기반의 응용 프로그램 제외 모드가 있는 것 같다.

그런데, 애석하게도 저 옵션이 Default 값이 False인듯.

True로 바꾸자 모든게 매끄럽게 진행이되었다.

Posted by 하인도

IBM에서는 MS의 MOSS 2007의 대항마로 Lotus Connections 라는 도구를 들고 왔더군요.

회사내에서도 이것을 설치하여 운영 중인데, 커뮤니티 개념의 활동을 여기서 주로

할 수있도록 배려 해주더군요. 그런데 이 안에도 Blog가 있는데, 그 안에 탑재된 편집기가,

MOSS 2007의 편집기에 버금갈 정도로 불편하더군요 -_-;;;;;;

그래서 Live Writer를 붙이는 방법을 조금 조사해봤고, 그 결과를 Report 합니다.


(주의! 전 영문판이라서 양키 말로 나옵니다. 양해 바랍니다. 한글판 깔면 한글로 나와요 )



위의 선택사항 중 Other blog service (기타 블로그 서비스)를 선택하시면 됩니다. 그리고 다음~

다음과 같은 내용이 뜨는데, 이제 실제적인 블로그 설정 내용이 필요합니다.


위의 내용을 입력하기 앞서 먼저 그럼 필요한 설정 내용이 있어야 되겠군요.

그럼 이번엔 Connection 사이트에 접속합니다.

로그인 해주시고...

사이트에 들어가셨으면 맨 상위 툴바 메뉴 에 있는 "블로그" 클릭하시고

그 다음 아래쪽의 "내 블로그"를 클릭하세요.

그리고 난 뒤에 원하는 블로그의 링크를 클릭하세요.

이번에 컴퓨터 공학 관련 자료를 한번 정리하려고 만든 Computer Sciences 블로그를

예로 들어봐야 겠군요. 원하는 블로그를 클릭해서 들어갑니다.

자 여기서 주소줄의 내용을 긁어 옵니다.

제 블로그의 주소는 아래와 같습니다.

http://platon.mauminfo.com/blogs/6f782857b91c/?lang=ko_kr


일단 기억만 해두시고...

여기 블로그의 외부에 제공하는 API URL은 다음과 같습니다.

/blogs/services/xmlrpc">http://<hostname>/blogs/services/xmlrpc

굵은 글씨 부분이 바로 그 API 주소 입니다.
일단 저기까지 파악되셨으면 아까 설치하려다 만 부분으로 다시 돌아갑니다.

자 이제 다음과 같이 넣어 주시기 바랍니다.


Web address of your blog ( 여러분의 블로그의 웹 주소 )에는

http://platon.mauminfo.com/blogs/146c9570-be4f-6f782857b91c/?lang=ko_kr

를 넣고, 아이디와 암호를 넣은 뒤,

자, 다음을 눌러보시죠!


앗!!!! 그런데?!


이게 무신 일..... 애석하게도 Connect 에서 제공하는 블로그를 외부에서 접근하려면,

http가 아닌 https 여야 되는것 같더군요.

일단 OK를 클릭하시고! 아까 넣었던 주소 중에 이번에는 http를 https로 변경해서 넣어주세요.

https://platon.mauminfo.com/blogs/1457b91c/?lang=ko_kr

자 그럼 이번에 해보시면 무사히 무언가 자동으로 처리되어 넘어가고

다시 무언가 입력하는 화면이 나옵니다. 여기가 바로 블로그에서 제공하는 외부 API 설정입니다.

일단 Type of blog that your are using( 현재 사용 중인 Blog의 유형 )에서

Metaweblog API를 선택하세요. 그리고 안의 주소에 다음과 같이 넣어주세요.

http://platon.mauminfo.com/blogs/services/xmlrpc

여기서 주의할 것은 아까 처럼 https를 넣게 되면 위의 캡처 화면과 동일한 에러를 뿜는다는거.

꼭 http로 해주세요. 그럼 다음과 같이 정리될 겁니다.


다음을 눌러주시구요....

그러면 실제 사용할 블로그를 선택하는 창이 뜨는데 여기서 올바른 블로그를 선택해주세요.

(안그러면 어뚱한데 글이 올라갑니다)

선택 하 다음!

그러면 무언가 자동적으로 쭉 진행되다 다음과 같은 알림 창이 뜹니다.

현재 블로그의 테마나 기타 설정 내용 대로 Windows Live Writer에서도 사용할 꺼냐는 것입니다.

최소한 블로그를 보는 것 처럼 편집하려면 역시 이게 좋기 때문에, 가급적 Yes를 선택해주시면 됩니다.

자 그럼 쭉 프로그레스가 차면서 무언가 열심히 작업합니다.

끝나면 마침 확인 창 같은 화면이 뜹니다.

블로그 닉네임은 자신이 알아보기 쉬운 말로 적어주시면 됩니다. 뭐 Connect - Computer Sciences 라고 적으셔도 되고..

그냥 두셔도 됩니다. Finish 하시면 됩니다.


그러면 다음과 같은 훤한 입력을 위한 화면이 뜹니다.


이제 열심히 포스팅 해주시면 됩니다 ㅋ.

Posted by 하인도

JSP, JSP Tag

기술자료/Web 2010/01/02 13:14

.NET 2.0 시절 부터 웹 프로그램을 시작하는 바람에,

ASP.NET 2.0에서 제공하는 MVC 분리 작업에 놀라면서 다양한 방법으로 사용했다.

사실 이 부분에 있어 대부분의 View와 연결하는 작업이 숨겨져서 구현된 부분이 많아

그 내용을 조사하는데 많은 시간을 할애한것도 사실이지만,

최소한 전체적으로 바라 볼때, 상당히 매력적인 것은 사실이였다.

 

그러다가, 요즘 Java  쪽으로 넘어와서 보는데,

왠걸… 이거 구석기 시대의 웹프로그래밍이 아닌가…

일단 servlet. 이건 Http 처리를 위한 최하단 프로그래밍이였고,

JSP는 옛날 유행했던 HTML 코드와 프로그램 코드가 엉겨서 어쩔 줄 모르게 만드는
(이 부분이 내가 과거 웹프로그래밍을 기피하게 된 원인 1순위) 형태였다.

 

이미 시작한 것 끝까지 가자는 마음에 하나씩 구현하다가,

우연히 JSP Tag 라는 것을 들었다. 그러다가… 아하.. 라는 생각을.

바로 이 JSP Tag라는 것이 지금까지 내가 해왔던 ASP.NET 2.0의 형태였다.

단지 틀린 것은 ASP.NET 2.0에서는 대부분 MS에서 구현하여 숨긴 내용을

여과없이 보여주면서, 원하는대로 만들라고 하는 것 뿐이였다.

 

아직은 JSP tag 손대기는 시간상이나, 지식상으로 딸리기 때문에, 일단 당분간은
JSP 구현을 계속 할 예정이다. ( 의외로 많이 익숙해져 버렸다. )

게다가 바로 이 Servlet은 AJAX.NET을 위한 데이터 I/F 구현에 있어서는

최강의 모습을 보여주니 더욱더 매력적이지 않을 수 없다.

 

나중에 시간이 되면 JSP tag 쪽 공부도 할 예정이다.

Posted by 하인도

지금까지 해온 웹 프로그래밍은 ASP.NET 2.0 기반으로 해왔기 때문에, 이 지식을 기반으로 Java에 매핑하기 시작했다. 사실 지금까지 ASP.NET 2.0 형태로 Web Form을 구성하면서, 외부에 노출되지 않은 내부 기능들에 많이 답답해 왔던 것도 사실이다.


그런데, 이번 Java기반 웹 프로그래밍을 하면서 이 ASP.NET이 많은 부분에 있어 프로그래머에게 편의를 주고 있다는 점을 알게되었다. ( 물론 Java 기반의 웹 프로그래밍을 전부 파악하고 하는 말은 아니다. 분명 Java에서도 다양한 기능들이 있기 때문에, 쉽게 처리할 수 있는 방법은 있을 것이다. )


일단 ASP.NET 2.0 으로 넘어가면서 웹 페이지 디자인 코드 부분과 코드 부분이 명확하게 나뉘게 되었다. 그래서 실제적인 .NET 코드들은 코드 부분이 담기는 페이지에 담기고, HTML 부분은 ASP 부분에만 담기게 되었다. 그 사이를 IIS와 .NET 엔진에서 알아서 붙여 진행하였다. ( 이 부분은 대부분의 웹 프로그래밍 환경에서는 최악의 문제점으로 알고 있다. 디자인과 코드가 뒤엉키다 보면 유지보수가 너무 어렵다. )


더 결정적인 부분.

사실 Form에서 데이터를 전달할 때, Ghost 페이지라는 것을 만들어 사용했다. 즉, Form에서 입력된 데이터를 DB에 저장하거나, 그 데이터를 기반으로 특정 값을 찾는 작업을 하려고 할 때, 사용자에게 보여주지는 않는 페이지를 Form의 Action으로 등록하여 처리하는 것이다. 


이 때, Servlet과 JSP에서는 이렇게 처리한다.

JSP에는 실제 사용자에게 값을 입력 받을 때 사용되는 Form(혹은 결과값을 보여주는 Form)으로 제공되고, Servlet은 이 Form에서 만들어진 값을 받아 처리하게 되는 일종의 Ghost 페이지처럼 동작하도록 하는 것이다.


즉, 입력 Form(JSP) –> Servlet –> Form(JSP).


합리적이긴 하지만, ASP.NET 2.0 기반 프로그래머 입장에서는 순간 헤매기 십상일 듯 싶었다.

게다가 Servlet 이라는게 사실 Web Server와 직접 연동하여 동작하는 작업을 구성하는 것이기 때문에 왠지 접근하기가 쉽지 않은(.NET 에서는 이 부분의 로직을 모두 숨겨서 알아서 처리해 줬기 때문이다. )부분이라, 망설임이 지대로다.


지금 Google Apps Engine 코드들을 하나씩 까면서 차근 차근 따라가보고 있다.

뭐랄까 새록새록 한 기분?

Posted by 하인도
지금 ClearQuest로 XMLHttpRequest를 해야 되는 경우가 발생되어 적용하는 중,
예제로 준 방법이 Perl 방법이라 난해 한데다 제대로 수행되지 않는 경우가 발생했다.
그래서 VBScript로 적용 선회를 했고 간신히 성공했다.
여기저기 사이트를 통해 알아본 결과 내용을 정리하면 아래와 같다.


맨 먼저 VB에서 HttpRequest 처리를 하려면, XMLHttpRequest를 지원하는 Object를 만들어야 한다.

Dim xmlhttp

xmlhttp = CreateObject("Microsoft.XMLHTTP")


위의 내용을 보면 Microsoft.XMLHTTP라는 오브젝트를 생성하게 되는데, 대개 위의 오브젝트를 생성하면 크게 버전문제와 상관 없이 동작할 것이다. 간혹 유사한 이름이긴 한데, 다른 형태의 XMLHTTP를 부르려면, XML 버전에 따라 지원하기도 하고 안하기도 하는 변덕을 구경하기 때문에, 그냥 위의 내용 처럼 적용해주면 된다.

xmlhttp.open "POST" "http://localhost/ReceiverForData.aspx", false


이번엔 위에서 정의해서 만든 HttpRequest 오브젝트로 실제 호출하기 위한 구성을 해준다.
POST 부분은 데이터가 어떻게 HttpRequest를 타고 전달되는지를 결정하게 되는데,
GET으로 하게 되면 주소값 내에 전달할 데이터가 담기게 되고, POST를 하게 되면 별도로 데이터를
추가해 넣을 수 있다. 이 때 데이터가 크거나 다양한 경우 가급적 POST로 전달하는게 좋다.

xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"

  
사실 HttpRequest는 일종의 숨겨진 웹브라우저를 띄워 웹서버를 호출 하는 것이다. 단지 사용자 눈에 브라우저가 뜬 것을 보지 못할 뿐, 뒤쪽에서는 마치 그런 짓을 하고 있는 것이다. 이 때 웹 서버를 호출하는 순간 웹서버에게 자신의 신분을 알려주는 작업을 해야 하는데, 이 작업에 해당하는게 바로 Header에 데이터를 넣는 것이다.
여기서는 현재 웹서버에 데이터를 전달 할때, form 기반으로 데이터를 전달하는 형태라는 것을 알리게 된다.

xmlhttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)"

  
위와 동일한 역할을 한다. 단지 이 부분은 현재 웹브라우저나, 컴퓨터 설정 상태들을 담는 내용이다. 완전히 웹서버를 속이고 자신이 마치 IE 8.0 인양 알려주는 작업이다. 간혹 일부 웹서버에서는 위와 같이 브라우저 버전이 IE, FireFox, 같은게 아니면 튕기는 작업을 당할 수 있기 때문에, 가급적 자신의 신분을 저렇게 숨겨 놓는게 제일 좋다.
xmlhttp.send "ID=OKSK&Name=OsakuSakurazo"

Post 형태의 데이터를 전송할 때 저렇게 한다. 보낼 데이터가 없으면 빼면 되고, 있다면, 변수이름=값 형태로 쭉 나열한다. 2개 이상의 값을 전송할 때는 사이에다 "&"를 넣어주도록 한다.

만일 결과물이 필요하다면....

xmlhttp.responseText


에서 빼오면 된다.(웹페이지 내에서 Text만 쭉 긁은 값이 나오게 된다.)

이 자료를 만드는데 사용한 Reference들은 다음과 같다.
http://web5.w3.org/TR/XMLHttpRequest/
http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx

Posted by 하인도

요즘 뜨는 화두중 하나가 바로 클라우딩 컴퓨터다.
인터넷을 통해 각종 서비스를 제공하는 일종의 ASP 같은 형태인데, 기존 ASP와는 다르게, 동작을 위한 Platform을 제공한다는 것이다. 그렇다고 웹 호스팅 업체 처럼 운영체제 단을 제공하는 것은 아니고, .NET 환경의 응용 프로그램이 동작하기 위한 기초 서비스들을 제공한다는 의미이다.

사실 획기적인 사업 아이템은 아니라 생각된다. 호스팅 업체 잡고 하거나, IP 업체와 Join 해서 네트워크 선을 사내에 끌고 들어와 사내 서버실에서 하면 되었고, 사실 지금도 그렇게 하고, 계속 그렇게 진행될 것이다.
하지만, 작은 업체에서 자체적인 서버실은 무리가 있고, 그렇다고 비싼 호스팅 업체에 네트워크 비용 뿐만 아니라, Rack이나 서버 임대료등은 역시나 무리가 있다. 그렇다고 운영체제에 SQL 까지 사다 보면, 어느새 돈 천만원이 넘어가버린다. 얼마로 책정될지는 모르겠지만, 최소한 호스팅 업체보다 싸다고 한다면, 분명 이런 클라우드 컴퓨터 시스템은 나름 괜찮은 비용으로 훌륭하게 서비스 받지 않을까 싶다.

일단 .NET 기반의 어셈블리등을 배포 할 수 있고, SQL의 기본적인 데이터형은 대부분 지원한다. 게다가 IIS 7에 ASP.NET 3.5 그리고 각종 Workflow에 WCF의 기본 구성까지 모두 가능하다.
그런데 국내 각종 소개 자료를 보면, 지금까지 글로 쓴 내용 처럼 무언가 비지니스 적으로 좋거나, 기존 기술 보다 낫다는 수준에 불과해 내가 이해하기가 애매 했다.
그러다가 하나씩 문서를 보면서 문득 이 Azure 서비스가 바로 MVC를 기반으로 제공된 또하나의 프로그래머들의 놀이터라는 생각이 들었다.


 
복잡허니 무언가 무척 많았지만, 사실 저 3가지의 형태를 갖춘 것이 바로 Azure였다.
사용자와 직접 맞부닥치는 웹 페이지나, 웹 서비스는 모두 Web Role에서 관장한다.
그리고 Worker 부분에서는 데이터를 조작하거나, 변경, 계산하는 작업을 하게 된다.
이 때 Worker는 마치 윈도우의 서비스 처럼 주기적을고 계속 뱅뱅이를 도는 구조로
되어 있다. 즉 Web에서 사용자의 Action이 없어도 알아서 무언가를 처리하려 할 때
바로 이 Worker를 사용한다.
Storage 부분에서 데이터를 저장하게 된다. 기본적으로 DB의 구조를 따르고 있지만,
굉장히 추상적으로 구성되어 있는데, 아직까지 상세한 내용은 잘 모르겠다.

이 때, 괄목할만한 사항이 있는데, 바로 Web과 Worker간의 통신이다.
물론 Web쪽에서 Worker를 직접 부를 수도 있겠지만, 여기서는 직접 부르기 보다,
Queue라는 비동기 로직을 통해 주고 받는 구조로 되어 있다.
즉 View와 Control의 직접적인 커플링을 최소화 하겠다는 의지인 것이다.

실시간으로 데이터를 업데이트 하는데는 조금 무리수가 있지만,
비동기적으로 처리하려 할 때 이보다 좋은 구조가 없으리라 생각된다.

지금 계획적인 개인적인 프로젝트가 있는데, 한번 이 Auzre를 이용해 구현 해봐야 겠다.
Posted by 하인도