2008. 12. 20. 01:17

CString , int 형변환

CString -> int
CString str = _T("100);
int num;
num = _ttoi(str);

int -> CString
CString str;
int num = 100;
str.Format("%d,num);

_ttoi 함수는 유니코드일 경우 _wtoi 안시코드일경우 atoi를 호출한다고 인터넷에서 그러더만 확인은 안해봤다.
2008. 12. 20. 01:04

pdh.h 를 이용한 CPU,메모리 사용량 확인 라이브러리 데모



프로젝트에 pdh.lib 를 링크하거나
소스에
#pragma comment(lib,"pdh.lib")
를 추가해서 사용하면 됩니다.

예제파일의 소스를 보면 어렵지 않지만 간단히 설명하면.
CPU,메모리 사용량을 확인할려고 하면.

초기화 - OnCreate() 같은곳에 넣으면 되겠죠.
------------------------------------------------------------------------
//cpu,mem 사용량 처리용/////////////////////////////////
 // TODO: Add extra initialization here
 if (!m_PerfMon.Initialize())
 {
  AfxMessageBox("Could not initialize CPerfMon!");
  return true;
 }
 // add counters
 m_nCPU = m_PerfMon.AddCounter(CNTR_CPU);
 m_nMEM = m_PerfMon.AddCounter(CNTR_MEMINUSE_PERCENT);

 // init timer
 SetTimer(1, 5000, NULL); // every half second refresh the counters
---------------------------------------------------------------------------


타이머 - OnTimer() 에서 필요한 작업을 하면 되겠네요.
---------------------------------------------------------------------------
if (!m_PerfMon.CollectQueryData())
 {
  AfxMessageBox("Failed Query!");
  return;
 }

 // update counters
 long lcpu = m_PerfMon.GetCounterValue(m_nCPU);
 long lmem = m_PerfMon.GetCounterValue(m_nMEM);

 // update dialog
 if (lcpu != -999)
 {
  m_strCpu.Format("%d%%", lcpu);
 }

 if (lmem != -999)
 {
  m_strMem.Format("%d%%", lmem);
 }

 CString str;
 str.Format("%d%% %d%%",lcpu,lmem);
 AfxMessageBox(str);

2008. 12. 19. 16:33

자신의 IP 얻기

자신의 IP 얻기



#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")

CString getMyIp() {
 WORD wVersionRequested;
 WSADATA wsaData;
 char name[255];
 CString ip;
 PHOSTENT hostinfo;
 wVersionRequested = MAKEWORD(2,0);

 if(WSAStartup(wVersionRequested, &wsaData) == 0) {
  if(gethostname(name,sizeof(name)) == 0) {
   if((hostinfo = gethostbyname(name)) != NULL) {
    ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
   }
  }
 }

 return ip;
}



참고

자신의 IP가 여러개일때는 다음의 방법을 사용하도록 합니다.

----------------

CString getMyIp() {
 WORD wVersionRequested;
 WSADATA wsaData;
 char name[255];
 CString ip;
 PHOSTENT hostinfo;
 wVersionRequested = MAKEWORD(2,0);

 if(WSAStartup(wVersionRequested, &wsaData) == 0) {
   if(gethostname(name,sizeof(name)) == 0) {
for(int i=0; pHostInfo->h_addr_list[i] != NULL ;i++) {// 반복해서 IP얻기
memcpy(&(addr.sin_addr), pHostInfo->h_addr_list[i], pHostInfo->h_length);
ip.Format("My address:%s\n", inet_ntoa(dest.sin_addr));
AfxMessageBox(ip);
}
}
}

 return ip;
}


2008. 12. 16. 14:38

레일스 파일(이미지) 업로드 방법들

웹 상에서 파일을 업로드하는 것 자체는 RFC1867만 구현하면 되는 간단한 문제이지만, 최근에는 다양한 방식으로 이미지를 업로드할 일들이 많이 생겨남에 따라 레일스에도 제법 많은 플러그인들이 생겨났다. 물론 가장 고전적이고 대중적인 것은 attachment_fu 겠지만(그보다 더 이전의 것들도 몇 있긴하다), 만약 용도가 이미지 처리에 맞춰져 있다면 다른 대안을 사용하는 것도 좋은 방법이다.

플러그인명
특징
주요 유스케이스
이미지 처리 방식
파일 저장소
attatchment_fu

가장 잘 알려지고, 비교적 오래된 업로드 플러그인의 고전

파일, 이미지
(범용)
RMagick
ImageScience
mini_magic
파일시스템
Database
Amazon S3
UploadColumn 또 하나의 멋진 업로드 플러그인
파일, 이미지
(주로 이미지)
RMagick, ImageScience
파일시스템
PaperClip
+ 아주 간단한 이미지 전용 플러그인
- (디폴트) 파일시스템이 너무 선형으로 늘어나는 경향이 있음
이미지
(Avatar, thumbnail 등 간단한 이미지 업로드에 적합)
ImageMagick
(RMagick 불필요)
파일시스템
Amazon S3
FlexImage
+ *.flexi 라는 템플릿을 사용하는 독특한 이미지 렌더링 방식을 갖추고 있어서 제목 그대로 아주 유연한 이미지 조작이 가능
+ MagicColumn 기능도 멋짐!
이미지
(특히 이미지에 워터마크를 넣는다거나 기타 ImageMagick을 사용한 여러가지 조작이 필요한 경우에 적당함)
RMagick
파일시스템 권장
Database도 가능

[출처] http://thinkr.egloos.com/1990365