분류 전체보기 123

HTML Agility Pack 사용시 문제

HTML 을 불러와 xml 또는 xhtml 로 저장하려할때 1) form 태그가 하위 요소를 포함하지 않고 혼자서 태그가 닫히는 문제가 있었다 을 변환하고 나면 이렇게 되었다. 관련 게시글 : http://htmlagilitypack.codeplex.com/discussions/7121 해결책은 링크에 있는것처럼 소스 코드를 받아 리빌드 하는것이다. 소스 파일 중에 HtmlNode.cs 가 있는데 ElementsFlags.Add("form", HtmlElementFlag.CanOverlap | HtmlElementFlag.Empty); 위와 같이 되어 있을것이다. 저 코드의 htmlelementFlag.Empty 를 지워버리면 된다. 2) form 하위 노드가 검색이 안되는 문제 xpath 로 검색하는데..

.NET/Clawler 2013.05.08

.net 에 적합한 html parser

java 용은 충분히 많으나 .net 에서 쓰기에 적합한건 제한적이다 다행히 open source 중 완성도가 높은게 있는데 1) HTML Agility Pack ( http://htmlagilitypack.codeplex.com/ ) 2) HTML Tidy Managed ( https://github.com/markbeaton/TidyManaged ) 추가로 WebKit 을 기반으로 한 HTML Browser Control 로는 WebKit.net ( http://webkitdotnet.sourceforge.net/ ) 이 있다. 참고로 이 컨트롤을 사용할때 빌드된 webkit binary 를 같은 폴더에 복사해서 사용해야 한다 (컨트롤 초기화 시점에 발생하는 문제라면 이게 99%)

.NET/Clawler 2013.05.06

Firefox 빌드!

개발 PC : Win 2008 R2, VS2010 SP1 준비물 : 1) Mozilla Build 툴, Firefox 소스 2) DirectX, Visual Studio 2010 3) Java SDK (+JRE) --------------------------------------- 준비 중 이슈 사항 1) DirectX Jun 2010 버전이 파일 복사 끝나고 S1023 오류 발생 -> VS2010SP1 에 포함된 Visual C++ 2010 Runtime 32/64비트 런타임 버전이 높아서 발생한다 임시로 그 둘을 제거하고 DirectX SDK 설치하고 다시 런타임을 설치하는 식으로 해결했다

Build Note 2013.03.20

Pipe 로 표준 출력 잡기

ffmpeg 등 command line 툴의 콘솔 출력을 잡기 위해선 pipe 를 이용하여 std-in, std-out, std-err 를 redirection 해야한다. redirection 은 fprintf(stdout)..., printf, fgets 등의 표준 I/O 의 목적지를 화면이 아닌 모(母) 프로그램이 받도록 도와준다. Win32 함수로 구현하기 위해선 CreatePipe, Duplicate, ReadFile, WriteFile, CloseHandle 함수를 사용해야 한다. 여러 프로그램을 pipe 로 연결시킨 경우 각각의 프로세스를 만들고 앞 프로세스의 output 을 다음 프로세스의 input 에 수동으로 넣어줘야 한다. 난 당연히 자동으로 되겠지 했으나 왜 그런지 에러만 났을 뿐이다..

Win32 , C++ 2012.08.27

MSSQL , 비밀번호 등 암호화 작업 기본!

1) 텍스트 -> 암호화된 텍스트 HashBytes('SHA1', '원본텍스트') 결과 : SHA1 암호화된 varbinary(20) 출력 유의사항 : 원본 텍스트의 데이터형을 정확히 파악해야한다 (n)char, (n)varchar 등에 따라 다른 값이 나온다. select SubString(master.dbo.fn_varbintohexstr(HashBytes('MD5', '궁시렁궁시렁')), 3, 32) 2) 암호화된 텍스트의 비교 where 문 등에서 그대로 비교하면 된다. 단 데이터형을 일치시켜줘야함을 유의 declare @A_ENC varbinary(20), @B_ENC varbinary(20), @C_ENC varbinary(20); declare @A nchar(10), @B nvarchar(..

기타 2012.08.22

WinHttp 로 Web Client 만들기

WinInet 함수가 윈도 서비스 등에 사용할 수 없음이 확인되면서, Microsoft 에서 권장하는 WinHttp 함수군으로 framework 코드를 만들었다. 요점 사항 WinHttpAddRequestHeaders - 헤더의 유효성(validation)을 체크한다. WinHttpSendRequest 에서 POST 인 경우 TotalLength 파라미터를 기록해줘야한다. TotalLength 가 실제 전송하는 데이터 길이 보다 길게 기록한 경우 WinhttpReceiveResponse 에서 15초 정도의 시간이 걸린다. 이는 서버측에서 timeout 시간동안 데이터를 더 기다리고 있기 때문에 발생한다. 개발 기준 : Visual Studio 2010 SP1, ATL, MSXML6

Win32 , C++ 2012.06.18
반응형