본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

자가동력미션 01. 집에 있는 책들을 데이터 베이스화 하기 3. 새로운 계획, 구현, 배포 그리고 개선

by 청춘만화 2019. 3. 20.

자가동력미션 01. 집에 있는 책들을 데이터 베이스화 하기  


3. 활용계획


1. 목표 

작업 초기에 엑셀 데이터를 담은 html table의 빈 칸들을 검색 API를 활용해 채워넣기


2. 실행 계획 1부 

1) 다시, 코딩하기 전에 생각을 해야할 타이밍인 것 같다......


음... 

그전에 일단) 리뷰 

제일 처음.. 엑셀 작업할때 ... 그 많은 내용을 쓰지않아도..

책 이름만 적으면 됐었다는걸.. 깨우침 ㅜㅜ 비싼 공부.. 실전이닷! 


방법 1 ) 

엑셀로 업로드 하자마자  (= html 테이블이 생성되자 마자 )

자바스크립트로 빈 값을 찾아서 해당 레코드(가로열)의 '책 이름'을 가져와서

네이버 api 로 던져서 값을 가져와야하나?


방법 2)

빈 html 에서 버튼 클릭하면,

엑셀로 업로하고, 이걸 바로 뿌리지 말고 

->  데이터베이스에 일단 저장하고

데이터베이스에서 불러온 값을 

-> html로 불러오고 

조금 채워진 html 에서 다른 버튼 클릭하면,

네이버 API에서 값을 가져와서

-> 조금 채워진 html에 다 채우기

저장 버튼을 누르면 

-> 데이터 베이스에 저장


아무래도.. 방법2로 가야겠지?... 아흐.. 모르는게 약인디... 

2번으로 고고 

(그런데 .. ^^ 오늘은 여기까지 ㅎㅎㅎ)


방법 3)

아침부터 문득 그런 생각이 들었다. 

위 처럼 하면, 첨부 파일을 제외한 다른 경우에 사용하기 힘들다.


일단, 

(1) 개별 도서정보를 CRUD할 수 있는 페이지와 데이터베이스를 만들고 

(2) 그 기본 기능 안에 일괄 추가 기능과 

(3) API를 활용해 빈 값 채워넣는 기능을 넣어야 할 것 같다

이 기능 또한 개별, 일괄 기능이 들어가야할 것 같다.

그리고 테이블은 체크박스를 포함해야할 것 같다.


그래야 두고 두고 쓸 수 있을 거 같다.


2) 리서치 

이번 리서치의 목표는 외부 라이브러리를 활용하는 것 

직접 테이블을 짤 수도 있겠지만.. 그럼 할줄 아는 거로만 하면 계속 그렇게 할 것 같은 느낌적인 느낌과 

PHP로는 외부 라이브러리를 사용해본 적이 없기때문에 이 참에 한번 써보려한다


그래서 찾은 라이브러리는 js-grid 이다. 

선택 이유는 한 페이지 폼 안에서 CRUD를 할 수 있는 구조로 짜여져있었다. 

게다가 백엔드 부분까지 서포트가 되고 있다.


3) 일단 예제를 사용해보자.  http://js-grid.com/samples/ 페이지에 참고 자료들이 제공된다.

(1) 일단 PHP 버전과 

사용방법은 Git으로 제공되는 소스를 그대로 다운 (또는 clone) 받아서

콘솔에 mySQL 테이블 정보 수립하고 관련 

db/config.php 안에서 데이터베이스와 관련된 정보를 array 형태로 작성해주면 끝.

주의사항?은.. 이상하게 127.0.0.1이 안먹힌다..  localhost로 수정하면 된다.. 이상하다.. 같은 의미로 알고 있는데..


(2) nodeJS 버전을 한번씩 사용해보았다.

node는 더 간단하다. 물로 예제 실행이 그렇다는 말이다. 

콘솔에서 프로젝트 디렉토리로 이동한 다음 node를 실행해주면 끝. 


다만, 이 예제에서 node는 express 뿐만아니라 jade가 적용되어 있음으로 

보통때처럼 node index.js 또는 node app.js 등과 같이 사용하지 않고

node bin/www 로 실행해야한다. (물론 경로 설정에 따라 조금씩 차이는 있겠지만..)

그리고 jade의 특성인가? 

node로 실행 했을 때와는 달리, 명령어를 치고 엔터를 누르면 콘솔 창이 조용하다가 

3000포트로 브라우저에 접속하니까 관련 내용이 출력되면서 콘솔에도 응답이 왔다.

(3) 예제를 통해 느낀점

아, JAVA에서 했던 MVC나 IoC를 PHP나 node에서는 이렇게 구현하는 구나.. ! 오예! 



3. 실행 계획 2부 

1) 일단 PHP로 계속 구현하기로 한다. 

2) 예제를 참조하여 프로젝트를 새로 만든다. 

3) 프로젝트 테이블에 버튼을 추가하고 PHPExcel를 활용하여 해당 영역에 엑셀의 값을 넣는다. 

4) 프로젝트 테이블에 버튼을 추가하고 naver API를 연동하여 해당 영역에 엑셀의 값을 넣는다. 



4. 활용 실천


(추가된 내용 1.)

1. 코딩의 과정  

이 부분 포스팅은 좀 길어 질 듯하여~ 다음번 포스팅을 통해.. 언제가 될지 모르겠지만.. 아마도 지금 코드를 리팩토링 한 후가 될 것 같다.. ;D 


1) 참고 라이브러리를 커스텀하기 위한 과정에서 멈췄다. PHP에 대한 학습이 더 필요했다. 
객체에 대한 부분으로 ^^

    기존에는 기본적인 교양 수준만 코딩실습을 했는데.. 라이브러리는 역시, 최신 스팩과 객체지향으로 되어 있었다. 

2) 생활코딩에서 언어>PHP 과정, 특히 PDO 부분과 class, 객체지향에 대한 부분의 실습 더 했다.

3) 그 과정에서 JAVA랑 정말 비슷하게 만들었네~ 하는 생각을 했다.

4) 실습을 마치고 나니 라이브러리가 보이기 시작한다. 

5) 라이브러리를 커스텀 한다. 

6) 커스텀 코드에 엑셀 업로드 기능구현 코드를 덫붙인다.

7) 엑셀/샘플데이터로 업로드한 데이터 중 책 이름 부분을 추출하는 반복문 사이에 네이버 API를 낑겨 넣는다.

8) 엑셀/샘플데이터의 일부 컬럼을 기반으로 네이버를 통해 전체 정보를 긁어온 내용을 임시 테이블에 뿌려온다.

9) 데이터를 확인하고 이상이 없으면 MySQL 데이터 베이스에 INSERT 한다.

10) 기존 테이블의 내용을 리셑하고 다시, 엑셀/전체데이터를 넣어본다. 



2. 첫 결과_ 로컬


(추가된 내용 2)

3. 두번째 결과_ 배포 

1) 무료 호스트 리서치 및 가입

 

* 참고로 처음엔 국내 서비스인 닷홈 https://www.dothome.co.kr (mysql 5.x / php 5.x)을 가입해서 진행했다. 용량, 속도, 버전 인코딩 조정하는데 생각보다 너무 많은 공수가 들었다. 이 과정을 통해서 php.ini 대신 .htaccess 를 설정해야 한다는 새로운 사실을 알게 되었다~ 굳~ 다만 디테일 잡기엔 갈길이 멀다. 일단 돌아가게 만든 후 리팩토링 및 효율화를 취하자. 

예전에 가입하고도 왠지 야매??? 느낌이 나서 안쓰고 있던 땡땡땡호스트 https://kr.000webhost.com(mysql 5.x / php 7.x) 로 이동했다.  땡땡땡 호스트는 php 버전이 최신이다. 으흐흐 게다가 .htaccess 설정에 대한 디폴트가 잘? 되어있어서 한글깨짐 현상이 없다. 로컬과 동일한 결과가 나온다.

참고로 여기 호스팅을 이용하면 .... 파일 질라를 설치하지 않고 브라우저에서 다 진행할 수 있다..


2) 데이터 베이스 설정

* JAVA 할때 익숙하게 상용하던 SQL 디벨로퍼를 대신할 툴을 열심히 찾아서 설치하고 배우려던 찰라에.. 기본으로 제공되는 사이트...phpMyAdmin에 접속.. 헉- 이 정도면 충분하다..으흐흐 더 쉬운듯.. 근데.. 이 사이트에 익숙해지면 너무 게을러 질 것 같다..


3) 배포 https://thinknormalmybook.000webhostapp.com/

 


4. 욕심이 스믈스믈  

1) 1차 구현 완료... 하지만, 불편함이 보인다. 하나 둘 틈틈이 개선할 예정이다.

(1) 정확도 개선 

네이버 검색결과가 정확하지 않는 목록이 좀 있다. 정확도를 높이기 위해 조건을 조정할 필요가 있다.

(2) 개별 도서 등록 인터페이스 개선

어차피 네이버 API를 사용하는데 개별 등록 시 굳이 + 버튼을 누르고 칸칸을 다 채울 필요가 없을 것 같다. 제목을 입력하면 검색 결과들이 출력되고 그 중 하나를 선택하면 데이터 베이스에 등록되도록 해야겠다. 

(3) 회원 등록 및 구분

으흐흐... 참...알면서도 일이 커질까봐 돌아서 돌아서 오다가.. 결국 마주하게됨 ㅋㅋㅋ

(4) 카테고리 추가

데이터 분석을 위해 중요한 키워드... 다만 이 정보는 네이버에서 제공하지 않는다. 국립도서관 API를 추가로 적용해야겠다.

(5) 데이터 분석 및 그래프 처리 

 카테고리 키워드와 description 컬럼에 해당하는 단어의 빈도수, 각 도서들의 가격, 등등의 상관관계를 추출해볼 계획이다.. 사실.. 이거 할라고 시작했으니..근데.. 갈 길이 멀다. ㅋㅋㅋ


2) 그 중에 일단...

위 목록 중 (2)에 해당하는 부분을 조금 코딩해보았다.. 윗 부분에 검색용 인풋박스와 검색 결과를 보여줄 페이지 하나를 추가해서 개별 검색목록을 간단히 출력


오늘은 여기까지...그런데... 코드와 페이지의 양이 점차 많아지면서 고민이 생기고 있다...여기서 잠깐 멈추고 '라라벨'을 먼저 배우고 다시 코딩을 하는게 맞지 않을까? 라는 고민을 하고 있다. 


자가동력을 위해 사용하게된 PHP 덕분에 여기저리 자료를 찾다 알게 되었는데.. PHP의 라라벨은 JAVA의 스프링과 같은 역할을 한다. IoC와 MVC역할을 수행한다. 그리고 이와같은 프레임웍을 사용하면 다른 사람들과의 협업을 하기에도 훨씬 용이하고 덩어리가 처지는 상황에서도 형상관리하기가 수월하다.

이와서 알게되었지만 지금 사용하고 있는 라이브러리도 라라벨로 만든거 같다.. 리서치 자료와 깃허브 자료를 참조해서 각 함수와 객체 등의 구성을 비교해보니 그런거 같다. 


암튼, 오늘은, 이번 포스팅은 요기서 끝~ 

댓글