공룡호가 사는 세상 이야기

using System;  
using System.Data;  
using System.Data.SqlClient;  
 
public class DB_TEST  
{  
    public static void Main(string[] args)  
    {  
        SqlConnection conn = new SqlConnection();  
        conn.ConnectionString =  
            "Server=ip;database=CL_ADMIN;uid=sa;pwd=password;";  
 
       try 
       {  
          conn.Open();  
          Console.WriteLine("데이터베이스 연결성공..");  
         String log = " SELECT * FROM dbo.OB_TEST"; // 쿼리문  
          SqlCommand cmd = new SqlCommand(log, conn); // 적용  
           SqlDataReader rd = cmd.ExecuteReader(); // 쿼리 수행  
 
          while (rd.Read()) //한줄씩 잃기  
          {  
            Console.WriteLine(String.Format("{0}, {1}", rd[0],rd[1]));  
            //내용 출력하는 부분         
                 
          }  
         rd.Close();  
 
       }  
       catch 
       {  
 
            Console.WriteLine("데이터베이스 연결 실패..");  
        }  
        finally 
        {  
            if (conn != null)  
            {  
                conn.Close();  
            }  
            Console.WriteLine("데이터베이스 연결해제");  
 
        }  
    }  
}

다운로드
심포니 소개
상품 소개
참여하기

Lotus라 하여, IBM에서 무료 오피스를 내 놓았다. 베타 버전이긴 하지만, 간단히 한번 써 본 결과 꽤 우수하다.
어차피, 사람들이 돈을 내고 오피스 툴을 사용하는 것은 아니지만, 성능이 우수하다면 쓰는 것도 괜찮지 않을까.
무엇보다 MS오피스에 비해 가볍다는 것이 장점이다. 그리고 기업 입장에서도 반가운 일이 아닐까.
한번씩 경험 해 보고 리뷰 아티클을 작성하고 상품도ㅇ0ㅇ - 솔직히 나는 블투헤드셋이 탐난다 -


http://worldofsolitaire.com/


놀라움도 잠시, 그냥 2시간 내내 이것만 -
한번 쯤 즐겨 보는 것도 ㅇ0ㅇ

Ping 날리기 공개 소스

// ping.cpp
// Borland C++ 5.0: bcc32.cpp ping.cpp
// Visual C++ 5.0: cl ping.cpp wsock32.lib

닷넷 프레임워크 버전 변경을 했다가, 한참 고생했다.

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

IIS 메타베이스에 액세스하지 못했습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: System.Web.Hosting.HostingEnvironmentException: IIS 메타베이스에 액세스하지 못했습니다.

ASP.NET을 실행하는 데 사용되는 프로세스 계정에는 IIS 메타베이스(예: IIS://servername/W3SVC)에 대한 읽기 권한이 있어야 합니다. 메타베이스 권한을 수정하는 데 대한 자세한 내용은 http://support.microsoft.com/?kbid=267904를 참조하십시오.

소스 오류:

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.

스택 추적:

[HostingEnvironmentException: IIS 메타베이스에 액세스하지 못했습니다.]
   System.Web.Configuration.MetabaseServerConfig.MapPathCaching(String siteID, VirtualPath path) +3492202
   System.Web.Configuration.MetabaseServerConfig.System.Web.Configuration.IConfigMapPath.MapPath(String siteID, VirtualPath vpath) +9
   System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +163
   System.Web.CachedPathData.GetConfigPathData(String configPath) +382
   System.Web.CachedPathData.GetConfigPathData(String configPath) +243
   System.Web.CachedPathData.GetApplicationPathData() +68
   System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +3385711
   System.Web.Configuration.RuntimeConfig.GetLKGRuntimeConfig(VirtualPath path) +189


버전 정보: Microsoft .NET Framework 버전:2.0.50727.42; ASP.NET 버전:2.0.50727.42



해 결 방 법
aspnet_regiis.exe 도구를 사용하면 된다.
aspnet_regiis.exe 는 windows폴더에 microsoft.net 폴더 아래에 있고,
cmd에서 해당 경로를 찾아가서 아래와 같이 입력한다.
aspnet_regiis.exe -ga iwam_계정이름(컴퓨터이름)
예)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe
그러면 iis메타베이스에 대한 접근 권한을 iwam 계정이 갖게 된다.
iwam계정은 iis 프로세스를 시작시키기 위한 식별자 계정.
그리고 나서 iis 를 열고 등록정보 중에 http 헤더부분을 보면 사용자지정 헤더부분에
X-Powered-By:APS.NET 이라고 있는지 확인 한 후,

없으면
다시 aspnet_regiis.exe를 열고
aspnet_regiis -i 
돌아가는지 확인
안되면
aspnet_regiis -e
aspnet_regiis -i
돌아가는지 확인

'프로그래밍' 카테고리의 다른 글

놀라운 Ajax solitaire 카드 놀이  (0) 2007.12.07
Ping 날리는 소스  (2) 2007.11.21
다음커뮤니케이션 R&D 팀장 IBM developerWorks Interview  (0) 2007.10.04
C# TIP 몇가지  (0) 2007.10.04
구글 가젯 만들기, Part1  (1) 2007.08.21

기존의 '만나고 싶었습니다' 코너가 dW Interview로 개편됩니다.
새로운 dW Interview는 개발자들을 만나 그들의 활동사항과 철학을 들여다볼 수 있는 코너입니다. 특히 인터뷰 대상자가 다음 인터뷰 대상자를 추천하는, 릴레이 인터뷰 형식으로 진행돼 더욱 흥미로워질 것입니다.
우선 그 첫 회로 다음 커뮤니케이션 윤석찬 R&D 팀장님과의 만남을 통해, 웹에 대한 그만의 남다른 애정과 철학, 그리고 오픈소스에 대한 열정을 살짝 들여다 봤습니다.

윤석찬 | 다음커뮤니케이션 R&D 팀장
channy@gmail.com / http://channy.creation.net/blog/

 
  윤석찬

지질학을 전공한 것으로 알고 있는데, 웹 개발자의 길로 들어서게 된 계기가 있으신지요?
94년도에 학교에서 처음 계정을 받아서 인터넷을 하게 되었습니다. 전세계 사람들과 이메일로 연락을 하고 정보를 찾을 수 있다는 측면에서 매우 충격적이었죠. 때문에 컴퓨터 전공이 아니었지만, 모자익(Mosaic) 브라우저를 통해 인기 서비스가 된 웹(Web) 이라는 것이 뭔지 조금 더 알고 싶다는 욕심이 들었습니다. 그래서 국내 인터넷 기술자 모임이던 웹 코리아라는 커뮤니티에 참여하게 됐죠. 실은 참여하는 정도가 아니라, 매우 열심히 했었습니다^^. 이 커뮤니티를 통해 C나 Pearl 같은 웹 개발 언어도 공부할 수 있었습니다.


그랬다면, 석사 과정은 컴퓨터공학 같은 전공을 선택했을 수도 있었을텐데, 석사까지 지질학을 전공한 특별한 이유가 있나요?

고민이 됐던 게 사실입니다. 그런데 중요한 계기가 있었어요. 대학 4학년 시절에 지질학과 컴퓨터의 접목에 대한 발표를 위해, 우연히 해외 컨퍼런스에 참가하게 됐습니다. 그 컨퍼런스에서 지질 정보를 석유나 광산 탐사에 사용하는 지리정보시스템(GIS)을 처음으로 접했어요. 그래서 웹 프로그래밍을 통해 지질 정보를 만들어보겠다는 포부를 가지고 대학원에 진학했습니다. 당시 전통 지질학과에서 GIS를 하겠다는 것은 마치 이단아처럼 평가를 받았어요. 그러나 객원 연구원으로 있었던 한동대 GIS연구소의 배려로 야외 조사 결과를 GIS D/B화 하는 주제의 논문을 쓸 수 있었어요. 그 때가 학교. 연구소, 직장까지 1인 3역을 했던, 제 인생에서 가장 바빴던 시기입니다.

비전공자로서, 개발자가 된다는 것이 쉽지는 않았을 것 같은데요?
당시에 웹 개발을 공부하는 사람들은, 대부분 비전공자였습니다. 컴퓨터공학(당시엔 전자계산학이었다) 전공자들은 웹보다는 전통적인 소프트웨어 개발 쪽에 관심을 뒀었죠. 웹 개발이 비전 있는 진로라고 판단하기 쉽지 않던 시기거든요. 특히 인터넷 자체가 초창기였기 때문에, 인터넷으로 배포되는 최신 기술 트렌드나 개발 언어는 웬만한 관심자가 아니고서는 얻어내기가 힘들었습니다. 지금은 정보의 전달 속도가 매우 빨라졌지만, 10년 전만 하더라도 학교에서 배우는 지식은 낡은 것이었습니다. 물론 전산학의 전통적인 가치를 부정하는 건 아니지만, 컴퓨팅 환경의 빠른 변화를 체험하기는 어려웠다는 것이죠. 단적으로 웹 관심자들은 파이썬이나 펄에 대해 공부하고 있을 때, 전공자들은 포트란이나 코볼을 배우고 있었어요. 10년 동안 인터넷과 웹을 중심으로 하는 컴퓨팅 환경의 변화, 그 최전선에 있을 수 있다는 것은 제겐 행운이죠.

현 소속이 다음커뮤니케이션의 R&D센터 팀장입니다. 다음이라는 인터넷 포탈 서비스 기업이 추진하는 R&D는 무엇일지 무척 궁금한데요, 무엇을 연구하나요?
2004년 3월에 다음에 합류를 했는데, 부끄럽게도 당시의 R&D센터는 회원정보, CMS, 빌링, DB 등을 관리, 운영하는 전사 S/W 인프라 조직이었습니다. 개발보다는 전산 인프라를 보다 효율적으로 운영하는 방법을 고민하는 것이 주 역할이었죠. 지난 3년간 지속적인 변화 과정을 거쳐, 조금씩 내부 서비스와 연계한 연구 개발을 해왔습니다. Ajax, XML 편집기, 동영상 기술 등을 내부 서비스에 이식하는 역할이 대표적이죠. 이와 함께 기술 전략이나 개발 프로세스 개선, 개발자 지원 정책도 고민하고 있고요. 신입 개발자 공채, 사내 개발자 지식(KB) 운영, 개발자 컨퍼런스 같은 것이 그 예입니다. 하반기부터는 회사와 서드파티 개발자를 연결하는 작업에 집중할 예정입니다. 오픈 API 공개와 개발자 네트워크 육성이 주요 관심사예요.

Web 2.0 얘기를 안 할 수 없을 것 같습니다. 사실 Web 2.0 트렌드가 부각되면서 윤석찬 팀장님의 브랜드도 급상승한 것처럼 보이거든요. 세미나, 책, 기술원고 등 웹 2.0 관련 기획시 섭외 대상 0순위라고 하는데 어떻게 생각하시는지요?
사실 그 부분에서 오해가 좀 있습니다. 분명한 것은 전 Web 2.0의 전도사로서 일련의 활동을 한 것이 아닙니다. 10년 전, 커뮤니티 활동을 하면서부터 현재까지 바뀌지 않는 저의 관심사나 철학은 웹의 공유정신과 이를 현실화 할 수 있는 기술 플랫폼입니다. 그것이 흔히 말하는 오픈 소스이고, 웹의 측면에서는 웹 표준화 작업이죠. Web 2.0이 실제 어떤 형태로 최종 완성될지는 아무도 장담할 수 없지만, 적어도 Web 2.0은 공유와 참여라는 웹 본연의 의미에 중점을 두고 있습니다. 파이어폭스의 문구처럼 ‘웹을 되돌리자(take back the Web)’는 측면에서 Web 2.0이 초창기 웹이 실현하고자 했던 이상에 가까운 가장 현실적 수단이라고 본거죠. 저는 기술자이지 비즈니스맨이 아니므로, 제가 잘 할 수 있는 이야기만 하려고 노력하고 있습니다.

Web 2.0의 대표적인 예로 블로그가 많이 소개됩니다. 블로그가 활성화 되면 포탈의 영향력이 줄어들 것이라는 의견들도 있는데요, 실제로 그럴 수 있다고 보시나요?
Web 2.0의 개념이 왜 생겨났는지에 대한 이해가 필요할 듯 합니다. 미국은 우리보다 브로드밴드의 활성화가 조금 늦게 이뤄졌습니다. 오마이스쿨이나 세이클럽, 미니홈피 같은 사용자 참여형 서비스가 이제 막 활성화된 상태예요. 사용자의 참여는 곧 데이터의 축적으로 연결되는데, 그 데이터를 플랫폼화 한 것이 바로 미국의 Web 2.0입니다. 우리는 데이터를 안으로만 닫았다는 것이 다른 점이죠. 블로그 같은 참여형 서비스의 증가로 인한 포탈의 영향력 변화는 충분히 가능성이 있습니다. 앞으로 포탈의 생존 여부는 결국 데이터 플랫폼의 ‘Open’ 여부에 달려 있다고 봅니다. 사용자 참여의 질이나 이를 잘 필터링 하는 능력이 관건이 되겠지만, 이베이, 구글, 아마존처럼 개발자나 서드파티의 참여를 장려하는 개방된 웹 서비스 생태계를 만드는 노력이 필요합니다.

Web 2.0 트렌드로 인해 부각된 것 중 하나가 Ajax입니다. 몇몇 초보 개발자들은 맹목적으로 Ajax를 배우려고 하는 경향이 있는데, Web 2.0 구현에 있어서 Ajax가 얼마나 의미가 있다고 보시나요?
우려가 되는 것이 사실입니다. Ajax라는 기술이 부각된 것은 실은 미국의 트렌드예요. 사용성을 증대 시킨다는 측면에서 우리가 많이 사용하는 Active-X와 Flash, Ajax의 경우 기능상 차이는 없습니다. 단지 미국은 다양한 플랫폼을 쓰는 특성상 크로스 플랫폼이 지원되는 Ajax를 선택할 수 밖에 없는 것이죠. Ajax는 새로운 것이 아니라 기술에 대한 접근 관점의 차이일 뿐입니다. Ajax 말고도 수많은 리치 인터넷(Rich Internet) 기술이 있죠. 이런 관점에서 초보 개발자들의 경우 단순히 기술 트렌드 만을 쫓기보다는 그 기술이 담고 있는 접근 방식에 동의하는지 고민해야 한다고 생각합니다. 또 다양한 대안을 고민하고 적합한 기술 방식을 찾아내는 안목도 길러야 할 것이고요.

오픈소스 커뮤니티인 모질라 프로젝트에 한국 운영자로서 참여하고 있는데, 어떻게 참여하게 됐나요?
인터넷을 처음 접할 때 배운 철학은 정보와 지식의 공유 정신이었습니다. 이러한 비전을 현실적으로 만들고 있는 것이 바로 오픈 소스죠. 1998년 넷스케이프가 오픈소스로 전환됐을 때 잠시 관심을 가졌다가 2002년에 Mozilla 1.0 한국어 버전을 만들면서 본격적으로 시작했으니, 벌써 4년이 되었습니다. 모질라 프로젝트를 통해 소수 웹 브라우저나 소수 운영체제 사용자들에게 열려 있지 않은 비표준적인 웹 환경을 인식하게 됐고, 이를 기반으로 우리의 웹 현실을 반추해 볼 수 있었습니다. 초창기 웹 커뮤니티를 하던 열정을 되살려 웹 표준 기반 사이트 개발에 대한 홍보나 저술, 강의 활동을 열심히 하고 있습니다.

국내는 특히 윈도우 사용이 보편적이어서, 파이어폭스를 비롯한 오픈소스 웹 브라우저들의 사용자가 많지 않습니다. 사용자 확대 측면의 활동도 계획을 하고 있는지요?
사용자 선택권을 넓혀 주는 대안의 관점이나, 보편적인 웹을 추구하는 표준화 관점에서도 사용자 확대는 중요한 요소입니다. 현재 국내는 4~5만 명의 사용자를 확보하고 있어요. 유럽은 30%, 미국은 12%가 파이어폭스를 사용하죠. 10월에 파이어폭스 2.0이 발표되면 마케팅 활동에 좀더 매진할 계획입니다. 목표는 국내 웹 사용자의 1%, 즉 약 20만 명을 확보하는 겁니다. 사용자 확보를 위해 포탈과 연계한 홍보, 통합 확장 기능 팩, 간편한 입문 웹페이지 제작 등을 할 예정입니다.

파이어폭스에 관심을 갖고, 개발에 참여하시는 특별한 이유가 있으신가요?
윈도우와 인터넷 익스플로러가 지배하는 국내 웹 환경에서 파이어폭스를 사용한다는 것은 매우 어려운 일입니다. 그럼에도 불구하고 사용자들은 탭 브라우징, 마우스 제스처, RSS 구독 같은 기능의 중독성(?) 때문에 파이어폭스를 고집하는 것이죠. 이런 파이어폭스 사용자의 확대는 사실 전체 인터넷 이용자에게 도움이 됩니다. 2001년, 인터넷 익스플로러(IE) 6이 출시된 후 마이크로소프트는 1000명이 넘던 IE 개발팀을 해체했었어요. 다음 버전 개발에 대한 의지가 없었던 것이죠. 그러나 파이어폭스 1.0이 사용자들 사이에서 호평을 받고, 바로 이어서 2.0 출시가 임박하면서 마이크로소프트도 4년 만에 IE 7 출시 계획을 밝혔습니다. 또 IE 7에는 파이어폭스의 기능들이 대거 반영됐어요. 이러한 성과가 오픈소스 활동의 보람이죠.

최근에 관심을 가지고 있는 분야나 이슈가 있으신지요?
하반기에는 파이어폭스 2.0에 대한 소개 및 마케팅 활동에 주력하게 될 것 같습니다. 최근 관심 있게 지켜보는 이슈는 W3C의 대안기구로 부각되고 있는 WHATWG.org의 활동입니다. 좀더 생산적인 웹을 구현하자는 취지로, 모질라나 구글, 오페라, 애플 등의 관계자들이 참여하고 있는 기구예요. 국제적인 웹 표준화 활동이 이뤄질 전망이어서 관심을 갖고 있습니다.



[윤석찬 소개] 다음커뮤니케이션 R&D센터에 근무중이며 한국 모질라 커뮤니티(www.mozilla.or.kr) 리더로 파이어폭스 개발에 관여해 왔다. 오픈 소스, 웹 표준 관련 활동을 지속적으로 해 왔기 때문에 최근 부각되는 웹 2.0과 웹 어플리케이션 기술에 대한 관심 또한 높다. ZDNet 컬럼리스트로 활동하고 있으며 개인 블로그(http://channy.creation.net/blog)를 운영하고 있다.
 

NEXT> 윤석찬 님의 인터뷰 대상자 추천
이창신(NC iLab 플랫폼 오프너)
추천 이유: Java SE 5 등 자바 표준안 제정에 참여했으며 아파치 프로젝트에서도 커미터로 활약하고 있는, 국내 몇 안 되는 유명한 오픈소스 개발자입니다.

*IBM developerWorks의 개발자 인터뷰가 릴레이 인터뷰 형식으로 변경됩니다. 다음 인터뷰 대상자는 엔씨소프트의 이창신 님입니다. 다음 인터뷰도 많은 기대 바랍니다


http://www-128.ibm.com/developerworks/kr/interview/2006_10.html

'프로그래밍' 카테고리의 다른 글

Ping 날리는 소스  (2) 2007.11.21
IIS 메타베이스에 액세스 하지 못했습니다. 오류 해결  (1) 2007.10.21
C# TIP 몇가지  (0) 2007.10.04
구글 가젯 만들기, Part1  (1) 2007.08.21
Resource Leaking  (6) 2007.08.13

C# TIP 몇가지

프로그래밍2007. 10. 4. 20:34

C#을 해 보면서 기존에 사용하던 언어와 조금 달라서 필요한 것들을 찾아 쓰고 메모해 두었던 것들을 포스팅.

키보드 이벤트 처리

특정 이벤트에서 키보드 키 메시지를 잡아야 할 때, 이벤트 처리 메소드에 전달되는 e 객체의 KeyChar속성을 이용한다. 키보드 각각의 값이 상수로 정의되어 있으므로, 원하는 키의 후킹이 가능
private void NONAME(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
 if(e.KeyChar == (int)Keys.Enter) { ... }
 또는
 if (e.KeyCode.Equals(Keys.Enter))
}

String의 Bytes단위 처리

String에는 영문자가 있을 수도 있고, 특수문자가 있을 수도 있고, 한글이 있을 수도 있다. 총 바이트 개수를 알고 싶을 때에는, 다음과 같이 한다
int length = Encoding.Default.GetByteCount(textBox1.Text);

URL로의 Redirect

LinkLabel을 붙이고, 이벤트에 보면 LinkLabel 클릭 이벤트가 존재한다. 당연히 URL로 이동을 해야 하는데 이런 부분은 속성창에서 지원해 주지 않으므로 직접 코딩한다
System.Diagnostics.Process.Start("http://dolbbi.com");

Dialog를 이용하지 않고 MessageBox의 지원 기능으로 분기하기

사용자의 요구에 따라 특정 이벤트로 분기해야 할 경우, Dialog를 생성하지 않고 MessageBox로 분기한다. 단, 복잡한 분기보다는 Yes/No의 간단한 분기에서 사용. (별거 없다 -_ -)
DialogResult result = MessageBox.Show("choose, yes or no", "messagebox", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
            switch (result)
            {
                case DialogResult.Yes:
                    // CALL EVENT
                    break;
                case DialogResult.No:
                    // CALL EVENT
                    break;
            }

IBM developerWorks에 구글 가젯 만들기에 대한 Article이 올라왔다. 간단히 한번 만들어 볼까.

가젯은 매우 작은 APP이다. 또한 웹 페이지에 이 APP를 추가하는 것이 가능하며, 다른 사용자나 개발자들이 이 가젯을 자신에 맞게 수정/보완 하여 사용할 수도 있으며, 개발자의 경우에는 자신의 웹 프로젝트에도 포함시켜 사용할 수도 있다. 가젯이 뭔지 모르는 사람은 일단 만들어보자. 호호-ㅁ-

본 튜토리얼을 따라가면서 작성하게되는 시계. 구글 개인화 홈페이지에 직접 제작한 시계를 붙여 넣을 수 있다. 단순히 시계는 구글에서도 제공하고 있지만, 시계를 작성해 봄으로서 자신이 원하는 APP 또한 제작할 수 있다는 점이 매력적이다.

사용자 삽입 이미지

구글은, 데스크톱과 유니버설, 두 종류의 가젯을 제공한다. 예상할 수 있듯이 데스크톱 가젯은 구글 데스크톱에서 독립적으로 사용하는 가젯으로 사용자의 컴퓨터에 있는 문서를 검색하거나 RSS Feed를 구독하고, 날씨나 만화를 볼 수도 있다. 유니버설 가젯구글 데스크톱, 구글 홈페이지 그리고 대부분의 웹페이지에서 구동할 수 있다. 이 튜토리얼에서는 유니버설 가젯을 만드는데 초점이 맞추어져 있다. 그 중에서도 개인화된 구글 홈페이지를 귀한 가젯 개발이다.

구글에 Sign in을 하고나면, 구글의 개인화 홈페이지 계정을 사용할 수 있다. 개인화 홈페이지는, 내가 자주 읽는 신문사의 최근 기사 중, 지정한 카테고리의 RSS를 통해 지정된 화면 위치에 뿌려준다던가, 자주 사용하는 검색엔진, 나의 일정, 달력, 시계, 즐겨찾기 등과 같은 다른 사람과는 다른 나만의 홈페이지를 만들어 사용할 수 있다. 사용자는 이 개인화 홈페이지를 첫페이지로 사용할 수 있으며, 각 사용자에게 최적화 되어 있으므로, 잘 이용한다면 굉장히 편리한 서비스가 될 수 있다.

그러나, 장점이 있는 만큼 단점도 분명히 존재한다. 이를테면, 내가 운영하고 있는 블로그에 새로운 글이 올라왔는지, 어제/오늘/현재까지의 방문자 수가 얼마인지 등은, 직접 블로그에 가 보지 않는 한, 알수가 없는데, 이러한 정보들을 내 개인화 홈페이지에 추가하고 싶을 수 있다. 그런데 이런부분은 구글에서 제공하고 있지 않다는 것이 단점이라 볼 수 있겠다.

하지만, 구글 개인화 홈페이지에는 사용자가 직접 자신만의 가젯을 작성하고 원하는 위치에서 서비스를 할 수 있게 해 준다. 그리고 어렵지 않다. XML과 API작업, 자바스크립트에 대한 어느정도의 지식만 있으면 가능하다. 또한, 내가 만든 가젯이 다른 사람들에게도 이용될 수 있으며, 보다 더 큰 프로젝트의 일부로도 사용될 수 있다니 금상첨화이지 않은가.

http://www.ibm.com/developerworks/kr/library/tutorial/wa-google1/index.html


튜토리얼이 너무 자세하므로, 간단히 리뷰하는 것으로 마치고, 각자 실습은 위 URL으로 가서 각자 실습하면 좋을 듯 하다. 좋은 Article이 소개되면 이렇게 한번씩 따라 해 보는 것도 새로운 즐거움이다 -ㅁ-/ ㅋㅋ

'프로그래밍' 카테고리의 다른 글

다음커뮤니케이션 R&D 팀장 IBM developerWorks Interview  (0) 2007.10.04
C# TIP 몇가지  (0) 2007.10.04
Resource Leaking  (6) 2007.08.13
WebPage Redirect (MFC / API)  (0) 2007.05.16
SetTimer()  (0) 2007.05.14

Resource Leaking

프로그래밍2007. 8. 13. 18:33

MFC 에서, 컨트롤의 색상을 변경하고자 할 때, OnCtlColor()을 사용한다. (버튼 컨트롤 제외)

HBRUSH CPppDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

 if( pWnd->GetDlgCtrlID() == IDC_DIC)
 {
  hbr = CreateSolidBrush( RGB(0,0,255) );
  pDC->SetBkMode( TRANSPARENT );
  pDC->SetBkColor( RGB(0,0,255) );
  pDC->SetTextColor( RGB(255,255,0) );
    
  return hbr;       
 }
 return hbr;
}


여기서 문제가 있다. 이 메소드는 해당 컨트롤을 다시 그려야 할 이유가 생길 때 마다 자동적으로 호출된다.
따라서, 프로세스의 메모리 점유가 늘어날 수 밖에 없다.
계속해서 CreateSolidBrush()를 통해 계속해서 브러시를 생성하기 때문.

프로그램 시작시, 단 한번만 브러시를 생성하고 프로그램 종료 시, 생성된 브러시를 파괴해 주는 것으로 이 부분은 해결된다. 코드는 다음과 같다.

생성자에 다음과 같은 코드를 삽입한다.
물론 hBkBrush 는 HBRUSH type 이며, 클래스 정의부분에 명시해 둔다.
hBkBrush = CreateSolidBrush(RGB(0,0,255));

그리고 위의 코드 중, 붉은색으로 된 부분을 다음과 같이 변경한다.
hbr = hBkBrush;

마지막으로, 프로그램 종료시 호출되는 파괴자나, 기타 메소드 중에 적당한 곳을 골라 브러시 객체를 파괴한다.
DeleteObject(hBkBrush);

'프로그래밍' 카테고리의 다른 글

C# TIP 몇가지  (0) 2007.10.04
구글 가젯 만들기, Part1  (1) 2007.08.21
WebPage Redirect (MFC / API)  (0) 2007.05.16
SetTimer()  (0) 2007.05.14
ROBOCODE Master의 비밀!!!  (0) 2007.04.23

프로그램을 하다 보면, 웹페이지로 Redirect 해야 할 필요가 있을 때가 있다.
ShellExecute() 라는 API 함수를 사용하면 간단히 해결 가능하다.
Prototype는 다음과 같다.

HINSTANCE ShellExecute(
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
);

2번째 파라미터는 3가지 값을 가질 수 있다.
"open", "print", "explore" 가 그것인데, 웹 페이지로 Redirect 하기 위해서는 "explore" 를 사용해야 한다.
파라미터 이름에서 볼 수 있듯이 파일이나 폴더를 open하거나 print할 수도 있다.

웹 페이지 주소는 4번째 파라미터로 파일일 경우에는 접근할 파일을 의미한다.
(단 파일은 실행 가능한 파일이어야 한다)
웹페이지를 실행해야 하므로, 웹 페이지의 주소를 넣어 준다.
마지막으로, 디폴트 디렉토리와 실행 상수값을 입력하면 된다.
실행 상수는, 여러 개가 있으나 그 중 일부를 보면 다음과 같다.

SW_HIDE : 실행시 숨긴상태로 실행
SW_SHOW : 그냥 실행
SW_SHOWMAXIMIZED : 실행시 화면에 가득 차게 실행

Example Code
// Webpage-Redirect
::ShellExecute(NULL, _T("open"), _T("iexplore"), _T(http://naver.com), NULL, SW_SHOW);

// Excutable-File
::ShellExecute(NULL, _T("open"), _T("notepad.exe"), NULL, NULL, SW_SHOW);

'프로그래밍' 카테고리의 다른 글

구글 가젯 만들기, Part1  (1) 2007.08.21
Resource Leaking  (6) 2007.08.13
SetTimer()  (0) 2007.05.14
ROBOCODE Master의 비밀!!!  (0) 2007.04.23
우연히 보게 된 코드  (2) 2007.04.19