본문 바로가기
휴지통/휴지통1

피파온라인3 Project1. 데이터베이스 구축. DB읽기 (MVC2)

by Shuming 2016. 3. 18.
반응형
오랜만의 포스팅이다.

그 동안 실력이 늘진 않았지만 열심히 공부는 했다

우선 포스팅을 그 동안 못했던 건, 이전 Oracle이나 Java 같은 경우 

포스팅을 하면서 해도될만큼 공부가 여유가 있었기 때문이다. 


지금은?

주말빼곤 어휴.. 하루가 빡세다 저녁엔 게임 해야되니까 그리고 물론 주말엔 놀아야하니까








Part 1. 개요



아무쪼록

요 몇일 전부터 Adorid를 시작했는데 이미 조금 기초가 있던 터라 

또 없는 여유를 부리게 되었는데, 사람은 역시 여유를 가져야한다고, 아이디어 번뜩 떠올랐다.

아이디어인 즉

요즘 내가 푹 빠져있는 피파온라인3 라는 게임은 강화장사 (=강장) 을 하면 돈을 벌 수있다.

물론 운도 따라줘야 하지만 그 이전에 강화장사에 사용될 선수들이 필요하다.

이 선수의 기준은

3강이 1강의 10배 이상이어야 한다.! 그리고 좀 팔릴만한 친구들이어야 겠지

뒤의 전제는 일단 제껴두고 앞에 내용을 살펴보면

1강 x 10 을 했을 때 >= 3강 인 선수들을 추려내면 

빠르게 선수를 검색할 수 있고, 강화장사를 쉽게 할수 있고 피파게임머니를 벌 수 있고! 

인자기를 살 수 있다!!!!


예아! 인..직..!! 예아!! 





아주 다행이도 피파온라인3 는 선수의 데이터들을 제공한다.


스탯이라던지, 가격이라던지 뭐 시세변동 추이 등등등


http://fifaonline3.nexon.com/datacenter/player/list.aspx 여기가 리스트이다.


이런식의 데이터가 제공된다.


그리고 


선수를 클릭해서 들어가면, 



크..인..직.. 멋지다


이런 데이터가 있다.


여기서 필요한건?


선수명과 그 선수의 강화 별 기준가겠지!  ( 실시간 매물은 아몰랑 안보이니깐 아몰랑 - 언젠가 꼭 따온다 내가) 







선수명은 어떻게 알 수 있을까? 



바로 저 부분이다.

우리 인..직.. 성님은 93001198 이라는 고유 번호를 갖고 계신거다.




그래서 모든 선수의 저 고유번호를 가져왔다.
(이틀동안 찾아다녔는데.. 등잔 밑이 어둡다고.. 매일들어가는 인벤에 있었다 ㅠㅠ)

갓벤에 갔더니 미니페이스온 제작을 위해 쓰이고 있었다..
(갓벤 뿐아니라 여기저기서 이 고유번호가 보이는걸 보면 넥슨측에서 데이터베이스를 넘겨주지않았을까?)

(갓벤.. 감사합니다) http://www.inven.co.kr/board/powerbbs.php?come_idx=3502



저 데이터는 말그대로 이미지 데이터이다.

데이터를 보면 모든 데이터에 앞에 p가 붙는데, 엑셀에서 간단히 제거해줄 수 있다. (데이터 나누기)










Part 2. 데이터 베이스 구축




가공된 저 자료들을 나는 엑셀파일로 만들었다.


시트를 보면 알겠지만


선수가 대략 2만명쯤 된다. 아니네 지금 첨 세어 봤는데 9~10만명쯤 된다. 미친;


15시즌만 8만명의 데이터가 등록되어있다.... 도랏...;;;



이 엑셀 데이터를 내가 가진 DB에 넣어야한다...  참고로 나는 Oracle 11g DB를 사용하고 있다.


선수명은 06시즌은 제일 긴 이름이 56 바이트인데 넉넉하게 70 바이트 줬다. 컬럼이 저렇게 세개가 있다.

insert into value('필리포 인자기','F. 인자기','93001198');
이 짓을 10만명 미친;도랏맨;

사실 여기서 포기하려 했는데 엑셀 파일이 아까워서 검색 열심히 했다.

지금 내가 쓰는 DB Tool은 Toad 10.6 버전을 쓰고있다 어지간하면 다른 툴도 아마 제공되는 기능일 텐데

내가 지금 설명하기는 귀찮고 http://h5bak.tistory.com/206 여기 정리 정말 잘해주셨다. 감사감사!


이렇게 해서 DB를 구축했다........................................................ DB가 겁내많다

솔직히 좀... 무섭 ㅠㅠㅠㅠ ㅇ이거 어떻게 구현하지...








Part 3. MVC2 모델로 DB만 뽑아오기.




사실 이거 MVC2 모델 정리하려고 블로깅 하다가 쓰는 글이다. 

내가 아는 얉은 지식을 다해서 써봐야지...

MVC 란 Model, View, Controller 의 약자이고 

jsp 페이지 내 에서 로직이 처리 되는가 아닌가로 되면 MVC1 안되면 2

이게 내가 가진 개략적인 MVC2 패턴의 정의다.

나머지는 구글에게 토스



우선 Spring Project를 생성하고, build path에서 JRE Library를 현재버전으로 맞춰구고 Tomcat 을 추가해준다.

 - > 


그리고 pom.xml 에서.


1. java version을 수정해주고,


2. Maven에 dependency 할 내용들을 추가 해준다.


나는 막 암꺼나 우겨넣는다.ㅋㅋㅋㅋㅋ


디펜던시[각주:1]. 필요할때마다 추가한다.



그리고 web.xml에서 url-pattern을 내가 원하는 텍스트로 바꾸고~

한글인코딩 추가해주고, root context servlet context 의 폴더 위치가 바뀐다던지 하면 바꿔주고




servlet-context 에서 컴포넌트 패키지 정해주고

헥헥

root-context에서 mybatis에 DB연결로직 sqlSesstion 빈즈로 만들어주고 안므암ㄴ음나음 니우ㅏ누이

헥헥

마지막으로 패키지 추가!

controller , dao vo ... 등등 + mybatis-config.xml도 추가!

에구구 많다 많아..


피곤해서 쭈루루룩 걍 생각나는 대로 적었으니 빠진내용이 있을 수 있음.....

캡쳐하다보니 힘듬 .. 위에서 힘 다 뺏네..

아무튼!

controller에서는 view.htm이 post 방식으로 호출되면 

@RequestMapping(value={"view.htm"},method=RequestMethod.POST)
public ModelAndView view() throws ClassNotFoundException, SQLException{
mv = new ModelAndView();
FIFAdao dao = sqlSession.getMapper(FIFAdao.class);
List<FIFAvo> ALLlist = dao.select06();

mv.setViewName("view");
mv.addObject("list", ALLlist);
return mv;
}


FIFAdao 에서 쿼리문을 가져와서 돌리고 가져온 값을 자동 매핑해서 vo에 넣어줌다. 대..단..

List 형식으로 dao의 값을 받아와서 vo에 매핑해주고 


view를 뿌려줄 때 list란 이름으로 ALLlist 를 넘겨주게 된다.




ALLlist 를 반복해서 테이블로 뽑아내면..





이게 무슨 개똥같은 모양인가 싶겠지만


어쨋든 여기까지가 DB에서 읽어온 거다.. 나중에 8만개 짜리 읽으려면 서버가 뻗지않을까 싶지만


모르겠다


암튼 여까지 !





이제부터 할일은 저기에 있는 번호 컬럼 즉 PlayerNum 값을 따로 가져온다.


그리고 그 값을 저장해두고 (나는 Vector에 담았다 웬지 이름이 이쁘다 벡터..)


vector에 들어간 pNum 만큼 url + pNum 해준다면


결과 : http://fifaonline3.nexon.com/datacenter/player/view.aspx?id=93001198


이런 모냥이 될 것이다. 









다음 시간엔 jericho parser 를 이용하여 저 결과에 있는 url에 접속해서 


1강 가격과 3강 가격을 가져와 봐야겠다..



그나저나 아직도 고민인게 


저 선수 번호가 한 페이지인데 페이지 10만개를 왔다 갔다 하면서 정보를 빼와야함 ....


지금 내가 생각한건 정말 저럼... 10만번.. 왔다갔다... 이게 뭔...........................


진짜 이건 좀 아닌거 같아서 은혜로운 생활코딩에 여쭤봤는데 


답은 "멀티 스레드"를 이용해보라고 하셨다..


지금 스레드도 가물가물해서 책펼쳐놨는데 멀티 스레드라.....





















  1. javax.servlet jstl 1.2 com.oracle ojdbc6 11.2.0 org.springframework spring-jdbc 3.2.5.RELEASE commons-dbcp commons-dbcp 1.4 org.mybatis mybatis 3.3.1 org.mybatis mybatis-spring 1.2.4 net.htmlparser.jericho jericho-html 3.3 [본문으로]
반응형

'휴지통 > 휴지통1' 카테고리의 다른 글

Excel to SQL 엑셀에서 SQL 쿼리 만들기.  (0) 2016.04.06
Spring Scheduling 참조.  (0) 2016.04.01
oracle 과 excel 연동! (TOAD이용)  (0) 2016.03.18
android studio setting~  (0) 2016.03.14
SQL 6일차 서브 쿼리와 DDL  (0) 2015.12.29

댓글