모바일 개발이나 각종 사이트를 처리할 때 HTML 페이지를 가져와서 분석하는 경우가 종종 있습니다. 보통 HTML 파싱할 때 정규식을 이용해서 했었는데요. 단점이 태그와 같은 것이 중첩되어 있을 경우, 첫번째 태그까지만 찾게 되는 것이었습니다. 아무래도 정규식 자체가 문자열 매칭이기 때문에 한계가 있는 것 같구요. 결국 DOM과 같은 구조를 사용하지 않으면 안될 것 같다는 생각이 들었습니다. 예전에 Javascript에서 쓸 수 있는 HTML Parser도 한번 소개한 적이 있기는 한데요. 오늘은 Java에서 활용할 수 있는 HTML Parser인 jsoup에 대해서 이야기 해보려고 합니다. jsoup: Java HTML Parserjsoup은 실제 사용하는 HTML을 처리할 수 있는 자바 라이브러리인데..
Proxy를 이용해서 HTML 소스를 가져와야 하는 경우가 있을 때 유용할 것 같습니다. 개발 세상만사님의 스프링노트에서 가져왔습니다. 나중을 위해 소스를 옮겨 봅니다. 중간에 "아이피", "포트"는 public proxy를 검색하셔서 지정해 주면 될 것 같네요. 단, Proxy는 확실히 속도가 느린 것 같습니다. 또한 Proxy 서버를 통할 경우, HTTP 프로토콜로 주고받은 데이터가 모두 Proxy 서버에 저장되므로 주의하셔야 합니다. package gathering; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.InetSocketAddre..
클라우드 컴퓨팅 환경에서 PaaS(Platform as a Service)의 선두주자인 구글 앱 엔진에 대해서 정리해 보려고 합니다. 아래 글에서 설명한 것처럼 일정 용량을 무료로 제공하기 때문에 처음 시작하는데 부담 없이 테스트할 수 있는 것 같네요. 2012/02/06 - [리뷰/도서] - [도서] GAE로 시작하는 클라우드 컴퓨팅 - 구글 앱 엔진 활용하기 특히 자바 버전의 경우, 이클립스에 플러그인으로 제공해서 설치 및 실행 환경이 기존 자바 프로그래머에게 친숙하다는 것도 하나의 장점입니다. 그럼 구글 앱 엔진의 설치부터 하나씩 살펴보도록 하죠~~ 1. 이클립스용 구글 플러그인 설치하기 이클립스 플러그인을 설치하는 방법은 많은 곳에서 이야기 하고 있으니 간단하게만 이야기 하도록 하죠. 플러그인을 ..
Effective Java란 책을 보면.. 정확한 계산에 float이나 double 타입을 사용하지 말라고 나와 있습니다. java 프로그래밍에서 돈과 같이 중요한 계산에 float이나 double을 사용하면 원하는 값이 나오지 않는다는 것인데요.. 예를 들어 1.03 달러에서 42센트를 사용했다면 61센트가 남아야겠죠.. 그래서 다음과 같이 자바 프로그래밍으로 실행하면.. System.out.println(1.03 - .42); ---------- Execute ---------- 0.6100000000000001 출력 완료 (0초 경과) - 정상 종료 원하지 않는 값이 나오게 된다고 하네요~~ float와 double이 과학과 공학 계산용으로 만들어서 매우 넓은 범위의 수에 대한 정확한 근사값을 빨리..
숫자 체크하는 자바스크립트 전화번호를 입력할 때.. 000-0000-0000 (000)000-0000 이런형태로 입력하자나요.. 요런걸.. 00000000000 형태로 받고 싶어서 만든 간단한 자바 스크립트입니다. 필요한 분들은 참고하세요~~ 예제를 웹브라우저에서 열어보면 00000000000 11111111111 요렇게 나올 겁니다. 이메일 체크하는 자바스크립트회원 가입 같은 것을 할 때 이메일을 체크하는 경우가 종종 있습니다. 이때 사용할 수 있는 예제입니다. http://wizard.ncafe.net/wt/25 를 참고했구요. 이외에도 쓸만한 내용이 있네요. function checkEmail(email) { /** 체크사항 - @가 2개이상일 경우 - .이 붙어서 나오는 경우 - @.나 .@이 존..
HTML 태그를 제거하고 순수하게 텍스트만 가져오는 부분이 필요해서 관련 소스를 정리해봤습니다. 정규식에 대해서는 개념은 들어보셨을 겁니다. 나중에 기회가 되면 정규식에 대해서도 한번 정리해 보도록 하구요.. 오늘은 간단하게 원하는 기능을 구현한 소스를 보여드리도록 하겠습니다. 정규식을 6개 정도 적용하고 있는 간단한 소스입니다. 각각 HTML의 스크립트 태그와 내용, 스타일 및 내용, 태그들, 엔터티, 공백문자들을 제거하는 정규식 표현입니다. private String getText(String content) { Pattern SCRIPTS = Pattern.compile("]*>.*?",Pattern.DOTALL); Pattern STYLE = Pattern.compile("",Pattern.DOT..
RSS 리더를 구현하거나 웹과 관련된 프로그램을 구성할 때, URL을 입력해서 해당 글을 가져오는 루틴이 필요한 경우가 종종 있습니다. 이 경우, 항상 문제가 되는 것이 바로 인코딩 문제인데요. 웹사이트의 경우, 인코딩을 주로 UTF-8과 EUC-KR의 두 가지를 사용해서 처리하고 있습니다. 제가 처음 RSS 리더인 RSSNym을 개발할 때 사용한 방식은 먼저 해당 URL의 텍스트를 한번 읽어온 후 인코딩 정보를 검색했습니다. 그래서 UTF-8인지 EUC-KR인지 확인하고, 인코딩을 설정해서 해당 URL의 글을 가져오는 방식을 사용했습니다. 어떤 인코딩으로 처리하든지 영문으로 된 텍스트는 깨지지 않는다는 점을 활용한 것이죠.. 하지만 이 방식은 같은 URL을 두번씩 읽어오게 되므로 효율성에 문제가 있었습..
이미 log4j는 많이 사용하고 있어서 별 도움은 안될지 모르겠지만, 저와 같은 초보들을 위하여 간단히 정리해 봅니다. Log4j에 대해서는 먼저 관련 사이트를 알려드리지요.. Log4j 설치 및 메인 사이트 http://logging.apache.org/log4j/docs/ 제가 주로 설명하고자 하는 것은 Log4j를 활용한 예제와 의 로그 레벨및 환경설정입니다. 1. 개요 자료모음에 포함된 log4j.zip 파일을 다운로드 하셔서 살펴보시기 바랍니다. LoggerUtil 클래스는 예전에 함께 일한 개발자가 만든것인데요.. 나름대로 유용하게 사용하고 있어.. 정리해봤습니다. log4j를 사용하기 위한 방법은 다음과 같습니다. log4j.zip 파일의 lib 폴더 아래에 있는 log4j-1.2.8.jar..
Template Method Pattern - 디자인 패턴 참고서적 : Head First Design Pattern 소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html 패턴 정의 #9 - 템플릿 메소드 (Template Method) Pattern 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있습니다. 알고리즘의 템플릿 즉, 틀을 만들기 위한 패턴입니다. 추상클래스를 만들어 두고, 여기에 templateMethod를 둡니다. temp..
Effective Java Programming Language Guide 조슈아 블로치 지음, 이해일 옮김/대웅미디어 VC++ 위주의 프로그래밍을 하다가 자바를 시작한지는 몇년 되지 않았기 때문에.. 기본적인 문법을 다루고, 시스템을 구축하기는 어렵지 않았지만 자바 언어 자체에 대한 이해는 부족했던 것이 사실입니다. Effective Java란 책을 읽어 보면서 자바 언어에 대해 좀 더 이해하게 됐다는 느낌이 들었습니다. 솔직히 equals나 hashCode의 재정의 같은 부분은 클래스를 수없이 만들면서도 한번도 생각하지 못한 것이었거든요 -.- 다만, 아쉬웠던 점은 번역서들이 대부분 그렇듯이.. 난해한 번역투의 문장이 많은 것이죠 ^^ 아마도 원서의 내용은 매우 좋았을 것 같은데~~ 영어가 부족하니...