'분류 전체보기'에 해당되는 글 223건

  1. 2012.05.24 Java Servlet과 jQuery를 이용한 환율정보(from 네이버) 가져오기 6
  2. 2012.05.18 USB 무선랜 카드 : 애니게이트 XM-300UA 속도 테스트 2
  3. 2012.05.16 Sonatype Nexus #3 : 관리자 비밀번호를 까묵었을때 -_- 리셋하기
  4. 2012.05.10 이클립에서 FTP 접속하면서 Operation failed. File system input or output error 가 날때
  5. 2012.02.21 T-GATE 주문확인 페이지가 안뜰때(IE9) 8

Java Servlet과 jQuery를 이용한 환율정보(from 네이버) 가져오기



요런걸 해도 되는진 모르긋지만 재미삼아서 한번 만들어 보았다.


환율정보를 가져오는 OpenAPI 를 한번 디벼 보았지만 별로 신통한게 없어서 네이버 메인 훌래쉬에서 땡겨다 쓰는 환율정보 XML 을 써보기로 했다.



네이버 메인화면 오른쪽에 보면 여러가지 정보를 제공하는 위젯 훌래쉬가 보인다.




위젯 훌래쉬 메뉴 중에 고맙게도 "환율" 이라는 메뉴가 있어서 한번 클릭해 보았다. 우리나라 통화를 기준으로 다른 여러나라들의 환율정보를 보여준다.


대부분의 훌래쉬는 데이터를 외부 url 에 있는 xml 파일같은걸로 땡겨오는데


네이버 메인 훌래쉬를 한번 분석해 보니깐 환율정보는 http://www.naver.com/include/timesquare/widget/exchange.xml 요기에서 땡겨오고 있었다.


넘어오는 xml 구조를 보기 위해서 죠 주소를 브라우져 주소창에 입력해 보았다. 하지만 찾을 수 없는 페이지라고만 딸랑 뜬다.



왜 그럴까 하고 고민하다 그냥 구글에게 물어보기로 하고 뽓 물어보니 HTTP 요청할때 헤더값중 이전에 머물렀던 URL 을 뜻하는 Referer 의 값이 naver.com 도메인에 속한 URL 이어야 한다는 것이였다.


역시 분명히 될것 같은데 안될때는 뻘짖하지 말고 구글에 물어보는게 제일 빠른것 같다.


그렇다면 요런식으로 Referer 헤더를 살 바꿔서 호출해야 한다. 인터넷에 있는 예제는 PHP 용 밖에 없는것 같다.

Java 로 할려면 요런 코드를 쓰면 된다.

URLConnection conn = new URL("http://www.naver.com/include/timesquare/widget/exchange.xml").openConnection();
conn.addRequestProperty("Referer", "http://www.naver.com");



Java 어플리케이션에서만 쓸려면 그냥 저렇게 xml 을 가져와서 xml 파싱후 원하는 데이터만 뽑아내서 쓰면 된다.


하지만 여기서 한걸음 더 나가 웹어플리케이션에서 데이터를 가져와서 html 로 보여주고 싶다. 


xml 가져와서 xml 문서를 리턴해주는 부분은 Java Servlet 으로 맹글고, jQuery ajax 요청으로 고 서블릿을 호출해서 데이터를 가져온 후 화면에 살 뿌려보자.



먼저 서블릿 소스

자기의 스타일에 맞게 바꿔 쓰면 된다. 말리진 않음.

package com.tistory.stove99;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CurrencyXmlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public CurrencyXmlServlet() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		generateXML(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		generateXML(request, response);
	}
	
	private void generateXML(HttpServletRequest request, HttpServletResponse response){
		response.setContentType("text/xml");
		
		URLConnection conn = null;
		BufferedWriter bw = null;
		BufferedReader br = null;
		
		try{
			conn = new URL("http://www.naver.com/include/timesquare/widget/exchange.xml").openConnection();
			conn.addRequestProperty("Referer", "http://www.naver.com");
			
			br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
			bw = new BufferedWriter(response.getWriter());
			
			String line = null;
			while( (line=br.readLine())!=null ){
				bw.write(line);
			}
		}catch(Exception ex){
			
		}finally{
			try {bw.close();} catch (IOException e) {e.printStackTrace();}
		}
	}
}

web.xml 에 서블릿 맵핑

<servlet>
	<servlet-name>currencyServlet</servlet-name>
	<servlet-class>com.tistory.stove99.CurrencyXmlServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>currencyServlet</servlet-name>
	<url-pattern>/currency/xml</url-pattern>
</servlet-mapping>


만약 스프링 @MVC 로 하는 후로젝트라면 구찮게 저렇게 할 필요없이 딸랑 요런 메소드 하나면 위와 완전 똑같다.

@RequestMapping("/currency/xml")
@ResponseBody
public void currency(HttpServletResponse response) throws Exception{
	response.setContentType("text/xml");
	
	URLConnection conn;
	BufferedWriter bw;
	BufferedReader br;
	
	conn = new URL("http://www.naver.com/include/timesquare/widget/exchange.xml").openConnection();
	conn.addRequestProperty("Referer", "http://www.naver.com");
	
	br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
	bw = new BufferedWriter(response.getWriter());
	
	String line = null;
	while( (line=br.readLine())!=null ){
		bw.write(line);
	}
	
	bw.close();
}



이제 Servlet 을 다 했으니 쪽바로 땡겨오나 테스트를 해보자. 서버를 띄우고 주소창에 http://127.0.0.1:8080/currency/xml 을 뿍 입력해 보면


정상적으로 xml이 잘 뜬다. xml 태그들이 뜻하는거는 네이버 환율정보 화면을 비교해 보며 대충 때려 맞추길 바란다.






jQuery 를 이용한 데이터 파싱및 화면에 뿌리기 소스

<html>
<head>
	<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
	
	<script>
		$(document).ready(function(){
			$.ajax({
				url : "/currency/xml",
				success : function(xml){
					xml = $(xml);
					
					xml.find("currency").each(function(){
						var tr = $("<tr><td/><td/><td/><td/></tr>");
						tr.find("td:eq(0)").text($(this).find("hname").text());
						tr.find("td:eq(1)").text($(this).find("standard").text());
						tr.find("td:eq(2)").text($(this).find("buy").text());
						tr.find("td:eq(3)").text($(this).find("sell").text());
						
						$("#currencyResult tbody").append(tr);
					});
				}
			});
		});
	</script>
</head>

<body>
	<table id="currencyResult" border="1">
		<colgroup>
			<col width="25%"/>
			<col width="25%"/>
			<col width="25%"/>
			<col width="25%"/>
		</colgroup>
		<thead>
			<tr>
				<th></th>
				<th>매매기준</th>
				<th>현찰살때</th>
				<th>현찰팔때</th>
			</tr>
		</thead>
		<tbody></tbody>
	</table>
</body>
</html>



출력 결과


USB 무선랜 카드 : 애니게이트 XM-300UA 속도 테스트



오만 잡다구리한 선들이 난무하는게 싫어서 USB에 꼽아 쓰는 무선 랜카드를 하나 장만했다.


이것저것 알아봤는데 쥐똥만하게 생긴 미니 랜카드도 있고 내가 산것 처럼 안테나가 달려있는 것들도 있었다.


미니 랜카드는 왠지 수신률이 후질것 같아서 패스하고 안테나가 달려있는 걸 사기로 했다.


안테나 달려 있는 랜카드도 이것저것 많았는데 가격이 젤 저렴한 애니게이트껄 사기로 했다. 약 만원정도 한다.

 

아이피타임께 좋다고는 하지만 가격은 요것의 두배정도 하는것 같다 -.-

 

윈도우 7 에서는 대충 USB에 꼽기만 꼽으면 지가 알아서 드라이버를 설치해준다(인터넷이 연결되 있으면)



※ 살짝 봤는데 윈도우7에서 자동으로 잡히는 드라이버는 11g 모드로 연결이 되는것 같다. 11n 모드로 연결할려면 드라이버를 살짝 설치해 줘야 되는것 같다. 드라이버는 바로 아래 클릭해서 다운로드.


 

 

본격적으로 속도 테스트를 해보자. 참고로 집에서 쓰는 공유기는 한때 배송비 2500원만 받고 팔았던 네트인 이라는 회사의 C110A 라는 공유기다.!!

 

사용한지 몇달정도 됬는데 아직까진 딱히 후지다는 느낌을 받아본적이 없다.

 

 

아무튼 다시 속도 테스트로 넘어가서

 

연결된 후 무선랜 속성창에 보이는 속도는 135 Mbps. 대충 80~135 사이를 왔다리 갔다리 하는것 같았다.

 

 

 

 

 

토렌트 다운로드 속도

 

 

쭉 지켜봤는데 최대로 많이 나올때는 7메가 정도도 나왔었다. 요정도면 다운받는데 답답할정도로 느리진 않은것 같다.

※ 참고로 유선으로 연결했을때는 10메가 정도 나온다.

 

 

 

토렌트 업로드 속도

 

 

2.9 메가 정도 나오는걸 보니 업로드 속도 또한 그리 후진것 같진 않다.

 

 

 

 

다음으로 내부 네트웍에 있는 파일서버로 파일을 복사하는 속도.

 

 

 

 

 

 

내부 네트웍에 있는 파일서버에서 내 컴퓨터로 파일을 복사해 오는 속도.

 

 

 

 

 

결론 : 유선으로 연결하는 것 보단 속도가 쫌 후져지지만 웹서핑이나 다운로드 받는데 답답할 정도는 아니다. 컴퓨터에 연결된 선을 하나 줄이고 싶다면 하나 사서 달면 좋을것 같다.

Sonatype Nexus #3 : 관리자 비밀번호를 까묵었을때 -_- 리셋하기



한번 설치한 이후론 잘 쓸일이 없어서 방치해 두면서 쓰고 있었는데.



오늘 문득 사무실에 있는 어떤 사람이 야리꾸리한 jar 파일 하나를 maven 에서 쓸 수 있도록 추가해 달라고 요청했다.


그래서 가벼운 마음으로 3rd party Repository 에 jar 파일을 추가할려고 관리자로 로그인 할려고 하는데


하도 오랜만에 접속하는 거라 그런지 도저히 비밀번호가 생각나지 않았다.



살짝 구글 검색을 해보니 비밀번호를 리셋하는 방법이 있었다.




nexus 를 그냥 디폴트로 설치 했다면 C 드라이브 ROOT 에 sonatype-work 라는 디렉토리가 있을것이다.



C:\sonatype-work\nexus\conf\security.xml 파일을 폿 열어보면 사용자 목록이 쪽 나올것인데


요중에서 <id>admin</id> 요걸 찾아서 아래쪽에 <password>에 설정되 있는 값을 f865b53623b121fd34ee5426c792e5c33af8c227  으로 바꿔주고 톰캣을 리스탓트 하면 된다.



f865b53623b121fd34ee5426c792e5c33af8c227  는 nexus 관리자 최초 비밀번호는 admin123 이 암호화 된 값이다.



리스탓트후 admin / admin123 으로 로그인 하고 다시 비밀번호를 바꿔주셈~~~

이클립에서 FTP 접속하면서 Operation failed. File system input or output error 가 날때



이클립으로 작업하면서 FTP 로 접속해서 파일을 변경할 일이 살짝 생겨서


이클립에 있는 Remote System 요걸로 접속을 해보았다.


그런데 접속 정보를 쪽바로 입력했음에도 불구하고 


Operation failed. File system input or output error 가 발생했다.





원인을 찾아보니 이클립스를 실행시킬때 쓰는 jvm 이 1.7 버전일때 나는 에러라고 한다. -_-


이런 에러가 나는 사람들은 대부분 jdk 가 1.7 버전만 설치되 있을 것이다.




아무튼 요걸 해결할려면 jdk 또는 jre 1.6 버전이 설치되 있는지 확인해 보고 설치 안되 있으면 http://java.oracle.com 에 가서 jdk 1.6 버전을 받아서 설치한 다음


이클립 설치 디렉토리에 보면 eclipse.ini 파일이 있는데 요걸 살짝 수정해 주면 된다.


eclipse.ini 파일에 추가 또는 수정해줘야 하는 설정은 다음과 같다.


-vm
C:/jdk 1.6 이 설치경로/jre/bin/server/jvm.dll


ex)

-vm

C:/Program Files/Java/jdk1.6/jre/bin/server/jvm.dll


※ jdk 가 아니고 jre 만 설치한 경우 C:/jre 1.6 이 설치경로/bin/server/jvm.dll 요 경로를 써주면 된다.



요렇게 이클립스 실행시 1.6 버전에 있는 jvm 으로 실행하게 설정해 주면 해결된다.



※ 나의 eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:/Program Files/Java/jdk1.6/jre/bin/server/jvm.dll
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m

T-GATE 주문확인 페이지가 안뜰때(IE9)


얼마전에 티게이트를 통해 뭔가를 신청했는데 진행이 우째되고 있는지 조회하기 위해서 주문확인하는 페이지에 접속을 해보았다.

그런데 이름이랑 주민번호 입력해서 본인확인 하는 페이지에서 그 입력하는 부분에 아무것도 안 튀어나오고 빈페이지만 뽕 뜨는 것이었다.





IE7, 8 까지는 왠지 잘 뜰것 같은데 본인이 IE9를 사용하는 관계로 직접 확인해 볼수는 없다. (※ 크롬에서도 페이지가 쪽바로 안뜬다.)


아무튼 페이지가 쪽바로 뜨게 할려면 브라우져에서 F12 를 뽓 눌러 개발자도구를 띄운다음에

브라우져모드를 IE7이나 IE8 로 바꾸면 정상적으로 뽓 뜬다.






플렉스로 맹근것 같은데 왜 안될까 -_-??

swf 파일을 출력하는 자바스크립 부분이 왠지 쪽바로 안된것 같기도 한듯한데.~ 뭐 언젠가는 고치긋지. 


※ T-GATE 신청 조회 및 확인 페이지 :  https://tgate.sktelecom.com/tgate/front/MblPhoneReqLst.jsp
prev 1 ··· 18 19 20 21 22 23 24 ··· 45 next