예전에 만들었던 블랙리스트 추출기에 대한 업데이트 요청이 있어서 간단하게 업데이트 해봤다...

요청 내용은 추출할 게시판의 주소가 변경되서 자동모드가 작동이 안되는거랑 블랙리스트의 닉네임에 공백이 있는 경우에 인식을 못하는 문제였다...

게시판 주소 문제는 이전 버전에서 단순히 코드상에 주소를 입력했었기에 언젠가는(?) 문제가 될줄 알았기에 바로 수정을 했다.

그리고 추후 게시판 주소가 바뀔때를 대비해서 게시판 주소를 입력해서 추출하는 기능을 추가했다.

닉네임에 공백이 있는 경우 인식 못하는 문제는 입력을 문자열 단위로 받아서 생기는 문제였기에 라인 단위로 입력을 받게하는 것으로 간단히 해결~

블랙리스트 추출기 (업데이트-2)

(사용언어 및 제작툴 : MFC / VS2005)

기존 버전
2007/03/19 - [프로그래밍.../Source] - 블랙리스트 추출기 (업데이트-1)
2007/02/15 - [프로그래밍.../Source] - 블랙리스트 추출기(?)

Posted by Gungume
,

Html 파싱...

MFC/TIP 2007. 3. 31. 13:59




내용에 비해서 제목이 거창하다;;;

Html 파싱이라고 해서 특별한 방법을 설명하는것은 아니고 그냥 특정 게시판에서 자신의 원하는 데이터를 얻는 정도를 설명하려고 한다.

Html 파싱은 완전히 노가다이다...그래서 그런지 샘플소스 또한 완전 하드코딩이다 -_-;

샘플소스의 작동원리를 간단히 설명하면 아래와 같다.

1. 파싱할 웹페이지의 소스를 얻어온다.
2. 얻어온 소스를 CString 변수에 넣는다.
3. CString의 Find(), Mid(), Format() 함수 등을 이용해서 원하는 데이터를 얻는다.

간단하게 소스로 표현하면 아래와 같다.
// CString m_strSource; -> 파싱할 웹페이지 소스
CString strTmp;
int nStart=0, nEnd=0

nStart = m_strSource.Find("검색어 1", nEnd);
nStart += (int)strlen("검색어 1");
nEnd = m_strSource.Find("검색어2", nStart);
strTmp = m_strSource.Mid(nStart, nEnd-nStart);

위의 "검색어 1"과 "검색어 2" 사이에 파싱할 데이터가 위치하면 된다.

Font 태그를 이용해서 아래와 같은 예제를 작성할 수 있다.
// "<Font color=red>얻을 데이터</Font>"

nStart = m_strSource.Find("<Font color=red>", nEnd);
nStart += (int)strlen("<Font color=red>");
nEnd = m_strSource.Find("</Font>", nStart);
strTmp = m_strSource.Mid(nStart, nEnd-nStart);

위와 같이 하면 strTmp에 최종값은 "얻을 데이터"가 된다.

위의 샘플 소스를 기준으로 약간의 응용을 통해서 while()문을 이용해서 게시판 글 목록수 만큼 데이터를 얻어올 수 있다.

위 코드의 문제점은 아무래도 하드코딩이다 보니 특정게시판에 대해서만 사용이 가능하고 "검색어" 부분을 잘 설정해야 한다...

위의 샘플코드에 썼던 Font 태크 같은 경우는 얻으려는 데이터 이외의 곳에서도 많이 사용되는 태그니 엉뚱한곳의 데이터를 얻어올 가능성이 있다.

그러므로 검색어 부분은 얻으려는 데이터와 관련되면서 유일하게 쓰인 명령어를 삽입해야 한다.

아래는 샘플소스의 파싱부분을 처리하는 소스이다.


검색어 부분을 보면 하드코딩이라는게 적나라하게 들어난다...실력이 부족하니 어쩔수 없을듯 하다...좀더 괜찮은 방법을 공부해봐야겠다...


아래는 샘플소스 스샷 & 원래 게시판 스샷
샘플소스

원래 게시판

(사용언어 및 제작툴 : MFC / VS2005)
Posted by Gungume
,

Porsche Boxster...

2007. 3. 31. 13:00

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.




메신져 등의 프로그램에서는 등록한 사용자가 로그인을 하거나 메시지 등을 수신하게 되면 작업표시줄 위에 조그맣게 메시지가 출력된다.

첨부파일은 이런 기능을 간단하게 구현한것으로 단순하게 작업표시줄의 위치를 얻은 후에 타이머를 이용해서 윈도우를 출력시켜준다.

예전에 올렸던 TV알리미 를 만들 때 생각나서 후딱 만들었던 건데 샘플소스를 날려서 다시 만들어봤다.

만들다가 맘에 안드는 부분을 바꾸다보니 기본원리는 같지만 소스가 좀 수정되었다.
(기존 소스에서는 Sleep() 함수를 사용했었는데 이 함수를 쓰면 마우스 이벤트가 안먹히는 문제로 첨부파일에 있는 소스에서는 타이머를 3개 쓰는 방법으로 변경함...)

우선 사용한 변수 및 상수값은 아래와 같다.
#define SHOW_WND 0
#define SLEEP_WND 1
#define HIDE_WND 2

CRect rect;
int m_nWindowWidth;
int m_nWindowHeight;
int m_nWindowBottom;
int m_nWindowTop;

그리고 OnInitDialog() 함수를 통해서 출력할 다이얼로그의 크기와 출력 위치 등을 설정후에 바로 타이머를 작동 시킨다.



타이머는 nIDEvent 값에 따라 3가지 상태로 작동을 하는데 순서데로 메시지출력(아래->위), 정지, 메시지닫기(위->아래)이다...

단순하게 처음에 출력할 윈도우를 작업표시줄에 두었다가 메시지출력시에 MoveWindows() 함수를 이용해서 타이머시간 및 rect 값에 따라서 윈도우가 위로 올라온다.

그 이후에 역시 타이머를 이용해서 5초 동안 윈도우를 정지 시켜놓고 이후에 출력의 반대과정을 거쳐서 윈도우를 아래로 내린다.



제작시에 프로젝트를 다이얼로그 기반으로 만든 후에, 리소스에서 다이얼로그를 하나 추가시켜서 클래스와 연결해서 사용했다.
사용하는측에서는 해당 다이얼로그 변수를 하나 만들고 그냥 DoModal()로 다이얼로그를 띄워줬다.
따로 클래스로 하나 빼서 쓰기 쉽게 만들고 싶지만 실력이 안된다;;;
참고자료 2번의 자료를 받으면 프로젝트에 가져다 쓰기 쉽게 잘 만들어졌다...
공부할 때는 몰라도 쓸때는 이미 검증된것 가져다 쓰는게 최고인것 같다 -_-


참고자료
1. 작업표시줄 영역얻기( jiniya.net )
2. 코드프로젝트( Taskbar Notification dialog )

(사용언어 및 제작툴 : MFC / VS2005)
Posted by Gungume
,



VS 2005로 만든 프로그램을 실행할 때 필요한 파일들이다...

콘솔프로그램은 "Microsoft.VC80.CRT.zip" 파일을 받아서 압축파일내 파일을 실행파일과 같이 두면 되고 MFC 프로그램인 경우는 "Microsoft.VC80.MFC.zip" 파일을 추가로 받아서 파일을 사용하면 된다.

간단히 실행해볼꺼면 위의 방식데로 하면 되겠지만 추후 다른 프로그램 사용시 편리성을 위해 가능하면 vcredist_x86.exe 파일을 받아서 설치하는게 좋을듯하다.

자세한 사항은 이전에 썼던 포스팅 참고...
(링크 : VS 2005로 만든 프로그램 배포 방법...)
Posted by Gungume
,

SULinux...

리눅스 2007. 3. 26. 14:45

SULinux는 슈퍼유저코리아에서 제작 배포하는 서버 전용 리눅스이다.

1.0 버전을 설치 후 한동안 방치해뒀다가 한달전쯤 1.5버전으로 업데이트 되었길래 재설치를 해봤다.

설치는 리눅스 설치 경험이 있으면 별다른 어려움 없이 바로 설치가 가능할듯 하고 경험이 없는 사용자도 메뉴얼을 보면서 하면 크게 어려움이 없을것 같다.

대부분의 설정이 자동이기 때문에 사용자는 파티션과 네트워크 설정 정도만 해주면 설치는 끝난다.

설치시간은 현재 리눅스 서버로 쓰는 컴퓨터 사양이 펜3 1기가에 512램인데 대략 10분정도 걸린다.

부팅시간의 경우도 매번 X윈도우가 설치된 리눅스만 쓰다가 콘솔로 바로 부팅되는 서버 전용을 사용해보니 부팅시간도 빠르다고 느껴졌다.

설치 & 부팅이 끝나면 기본적으로 FTP서버(VSFtp)와 메일서버가(Sendmail) 작동이 된다.

APM 설치는 물론 직접 설치도 가능하지만 APM_Install-tools 를 이용하면 설치하고 싶은 APM 버전 선택만으로 설치가 간단히 완료된다.

또한 SSU(서버관리 유틸리티)를 통해서 서버에 사용할 유저관리나 모니터링 등을 쉽게 사용할 수 있다.

설치 후에 기본적인것만 사용을 해봤지만 서버전용이기 때문에 가볍고 기본적인 보안설정 등도 되있기 때문에 사용이 편리한듯하다.

학습목적으로 사용해도 괜찮은듯하지만 세부적인 공부를 하려면 제공해주는 기능을 사용하지 않고 직접 해봐야할듯 하다...

Posted by Gungume
,
개발자라며...


RSS 구독중에 포스팅되있길래 퍼왔다...

모 카드회사의 광고 패러디로 오랜만에 심히 공감되는 자료다 -_-;

아직 늦지 않았는데 발 들여놓지말까보다;;;

출처 : emptydream.net
Posted by Gungume
,

VS2005로 툴을 바꾸고나니 생각보다 불편한게 많다...이번에 거슬렸던것은 배포문제...

2003까지는 "Dependency walker"로 대충 의존성 따져서 DLL 파일 넣어주면 됐는뎅 2005는 안되는듯...

이곳저곳 뒤져본 결과 대충 아래와 같이 처리하면 아쉬운데로 실행은 되는듯함;;;

VS2005를 기본폴더에 설치했다는 가정하에 아래에 적힌 경로에 있는 파일들을 실행파일과 같이 넣어주면 된다.(폴더채로 같이 놔도 되는듯하다...)

경로 : "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86"

릴리즈모드로 컴파일했을때를 기준으로 Console 프로젝트의 경우는 위의 경로에서 "Microsoft.VC80.CRT" 폴더에 있는 파일을 실행파일과 같이 넣어주면 되고, MFC 프로젝트의 경우는 "Microsoft.VC80.MFC" 폴더를 추가로 넣어주면 실행이된다...(이외의 프로젝트는 안해봐서 모름;;;)


위의 방법으로 배포하면 상대방 컴에서 실행은 된다 ㅡㅡ;

좀더 간편하고 제대로된(?) 방법은 MS사에서 제공하는 "Microsoft Visual C++ 2005 재배포 가능 패키지"를 받아서 설치하는 것이다...
(다운받기...)


좀더 자세한 내용은 참고했던 사이트를 스크랩 및 링크해두니 참고바람...(첫번째 스크랩 자료는 그대로 복사해오니 길은 내용이 있어서 좀 짤린다;;;)

출처1 : RedistributingVisualCppRunTimeLibrary



출처2 : VS2005 실행모듈 배포하기
Posted by Gungume
,



예전에 만들었던 블랙리스트 추출기의 업데이트 버전이다...(이전 자료 링크...)

게시판 소스를 붙이는 부분을 나름데로 자동으로도 할 수 있도록 변경을 해봤다...

딱히 새로운것 없이 "웹페이지 소스저장..." -> 이넘을 이용해서 기존에 해당게시판의 소스를 수동으로 복사했던것을 자동으로 처리할뿐이다...

현재 문제점은 해당게시판의 서버가 느릴 경우이다...이럴 때를 대비해서 우선 기존의 수동복사 기능은 남겨둔 상태이다.

그리고 대충 머리를 굴려서 소스에서 꼭 들어가는 내용이 있는지 확인을 하는것으로 에러처리를 했었는데 결과는 실패다;;;

서버에 아예 연결이 안되면 에러가 리턴되지만 연결은 되지만 그냥 느린상태면 죽어라 데이터를 가져오느라 뻗기 직전까지 간다...(가끔 뻗는다 ㅡㅡ;)

서버가 느릴때만 테스트가 가능해서 결국 딱히 해결 못했다...

아래는 스샷~~~

블랙리스트 추출기 (업데이트-1)


(사용언어 및 제작툴 : MFC / VS2005)

기본 버전 : 2007/02/15 - [프로그래밍.../Source] - 블랙리스트 추출기(?)
Posted by Gungume
,
http://www.npteam.net/rss
http://feeds.feedburner.com/fribirdz
http://aura502.egloos.com/index.xml
http://broid.egloos.com/index.xml
http://soyokaze.egloos.com/index.xml
http://blog.izyou.net/rss
http://www.freecoder.pe.kr/rss.aspx?c=0
http://gogamza.cafe24.com/index.xml
http://kicom95.egloos.com/index.xml
http://feeds.feedburner.com/gratia
http://hochan.net/index.rdf
http://hiya.byus.net/prog/index.rdf
http://kaistizen.net/EE/index.php/weblog/rss_2.0/
http://www.naggingmachine.com/rss
http://feeds.feedburner.com/hyeshik
http://www.fortytwo.co.kr/tt/rss
http://www.progh2.net/cgi-bin/tt/rss
http://readdie.woweb.net/rss
http://sirocco.pe.kr/blog/index.php/feed/
http://snaiper.tistory.com/rss
http://somma.egloos.com/index.xml
http://www.codedream.net/blog//rss.php
http://feeds.feedburner.com/TalkAboutSoftwareWithHani
http://www.theeye.pe.kr/rss
http://feeds.feedburner.com/TheHumbleProgrammer
http://www.conv2.com/blog/index.xml
http://wiziple.net/tt/index.xml
http://zextor.tistory.com/rss
http://zoops.egloos.com/index.xml
http://krispy.onblog.com/rss/rss2.jsp?blog_uid=17844
http://www.hoyanet.pe.kr/diary/rss
http://feeds.feedburner.com/goodhyun
http://himskim.egloos.com/index.xml
http://www.dal.co.kr/blog/atom.xml
http://cjhnim.egloos.com/index.xml
http://saint12.nafly.net/tts/rss
http://blog.rss.naver.com/drvoss.xml
http://tomowind.egloos.com/index.xml
http://antihack.pe.kr/blog/rss
http://www.jeeyou.com/tt/rss
http://basher.pe.kr/tt/lumi/rss
http://feeds.feedburner.com/bobbyryu
http://madchick.egloos.com/index.xml
http://skyul.tistory.com/rss
http://www.pragmatic.co.kr/blog/rss
http://www.trendons.com/?feed=rss2
http://feeds.feedburner.com/archmond
http://agile.egloos.com/index.xml
http://anyflow.egloos.com/index.xml
http://www.mirzin.com/blog/rss
http://blog.daum.net/xml/rss/baekjun
http://feeds.feedburner.com/tokigun/blog
http://feeds.feedburner.com/crowmaniac
http://feeds.feedburner.com/smartplace
http://feeds.feedburner.com/BlogNara
http://seanlab.net/tt/rss
http://blogrss.paran.com/RssView2.do?pmcid=sedere
http://wangmul.egloos.com/index.xml

신영진님 블로그에 있길래 퍼왔다...

예전부터 누가 올려주길 바랬던 자료인데 덕분에 잘 정리된것을 받았다...

출처 : jiniya.net
Posted by Gungume
,