1. 개발 시 고려 사항 및 문제 점 

 날씨 정보 API 하루 REQUEST 횟수가 500으로 제한 되어있어

 최소 한의 비용을 들이기 위해 날씨 정보와 API 키값을 서버에서 관리 하여 처리 하도록 하고

 날씨 OPEN API 쪽으로 최소한으로 요청하여  처리비용을 최소하 한다. 

 빠른 속도를 위하여 날씨 정보는 한번 요청한뒤 DB와 케쉬 시스템을 이용하여 빠른 처리를 할수 있도록 한다. 

 각 지역마다 시간대가 서버와 틀리기 때문에  서버 시간과 지역 시간을 비교하여  시간때를 마쳐 보내야한다.

# 관리 요소

1. OPEN API 키 사용현황 관리

2. 날씨 정보를 주기적으로 체크하여 케쉬 저장 하여 사용자에게 제공한다.

3. 서버 시간과 사용자시간을 일치 시킨다.

4. 비가 오는지 안오는지 판단 하여 PUSH를 보낸다.

5. 날씨 정보를 WEB SERVICE로 제공한다 ( JSON  )

5. GIS 위치로 날씨 해당 지역의 날씨 정보를 알아 낸다.

 

 

 

1. DB 설계 

 

 

 

 

2. CLASS 다이어 그램

 

 

 

 

 

 

 

 

 

 어렸을때 동화책도 없고  뛰어 놀거 박에 없던시절

과학에 꿈을 꾸게했던.. 미미 ...

인터넷 서핑중에 찾았다..

 기억이 떠오르면서 그 시절 많이 생각하게 했던...

이 애니메이션때문에 내가 개발자가 된지도 모르겟다.

 

 미미의 컴퓨터 여행 1983

   
ミームいろいろ夢の旅
Mimu, the Traveller of Many Dreams(미)
The Many Dream Journeys of Meme
Ordy et les Grandes Découvertes(프)

 

 

선행 작업

http://maven.apache.org/download.html

설치한다 .

JDK - JAVA_HOME  설정 PATH 설정한뒤 한다.

 

1. MSSQL JDBC 다운받는다.

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displaylang=en

 

2. 마븐 인스톨

mvn install:install-file -DgroupId=com.microsoft.sqlserver.jdbc -DartifactId=sqljdbc -Dversion=3.0 -Dpackaging=jar -Dfile=파일있는위치.jar

 

3. pom.xml 등록

 <dependency>
     < groupId>com.microsoft.sqlserver.jdbc</groupId>
     < artifactId>sqljdbc</artifactId>
     < version>3.0</version>
< /dependency>

 

 

 

 

 

이클립스 + propedit

기능 : 이클립스에서 확장자 .properties 한글 인식 되게 변경 유니코드로 변경해준다

일본개발자가 만든듯.

http://propedit.sourceforge.jp/eclipse/updates

정리 위해 URL 입력해놈

Jquery 

 엔터키

 $('#searchKeyword').keydown(function(e){
   if(e.keyCode == 13){
     if($("#boardId").val()=='b001')
       $('#searchImg').click();
     else
       $('#searchImg2').click();
   }
});

   
    

1. 컬럼 추가 

 alter table 테이블 add(필드 number(10));

2. 컬럼명 변경 
alter table 테이블 rename column   현재이름  to 변경이름;


3.데이터 타입 변경 
alter table 테이블 modify(필드명 varchar(10));


4.컬럼삭제

alter table 테이블 drop(필드);


 오라클에서 랜덤으로 데이터를 가져올때 사용한다. 

 
SELECT ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N1,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N2,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N3,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N4,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N5,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N6
FROM DUAL

 

쿼리보기하여 릴레이션 이름을 찾은후  constrain_name에서 찾아본다. 

select CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME

from user_constraints
where CONSTRAINT_NAME = 'R_101' /* 에러 코드에 나와있는 릴레이션  이름 */

1. 이클립스  실행

2. http://eclipse.org/m2e/ 가서 이클립스 다운로드 링크를 찾는다.

3. http://download.eclipse.org/technology/m2e/releases 주소 추가

4. http://mvnrepository.com/artifact/taglibs/string/1.1.0 Lib 찾아보기

인스톨 한다.

 

 

 

 

 

<!-- fileViewResolver(download) -->
 <bean id="fileDownloadView" class="egovframework.synervelly.file.web.FileDownloadView" />
 <bean id="fileViewResolver"
  class="org.springframework.web.servlet.view.BeanNameViewResolver">
  <property name="order" value="0" />
 </bean> 

 

 

 

 

@RequestMapping(value="/admin/templet/insertTempletRegit.do") 
 public ModelAndView  insertTempletAdmin(@ModelAttribute("templetVO") TempletVO templetVO,
   @ModelAttribute("SessionVO") SessionVO sessionVO,
      HttpServletRequest request, ModelMap model)
            throws Exception { 
  File file = new File("C:/Users/SeungGyun/Downloads","SDFormatterv3.1.zip");
 
  
  return  new ModelAndView("fileDownloadView", "downloadFile", file);
 } 

 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Map;

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

import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.view.AbstractView;

public class FileDownloadView extends AbstractView {
 public FileDownloadView() {
  setContentType("application/download; charset=utf-8");
 }

 @Override
 protected void renderMergedOutputModel(Map<String, Object> model,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  File file = (File) model.get("downloadFile");
  response.setContentType(getContentType());
  response.setContentLength((int) file.length());
  String userAgent = request.getHeader("User-Agent");
  boolean ie = userAgent.indexOf("MSIE") > -1;
  String fileName = null;
  if (ie) {
   fileName = URLEncoder.encode(file.getName(), "utf-8");
  } else {
   fileName = new String(file.getName().getBytes("utf-8"),
     "iso-8859-1");
  }
  response.setHeader("Content-Disposition", "attachment; filename=\""
    + fileName + "\";");
  response.setHeader("Content-Transfer-Encoding", "binary");
  OutputStream out = response.getOutputStream();
  FileInputStream fis = null;
  try {
   fis = new FileInputStream(file);
   FileCopyUtils.copy(fis, out);
  } finally {
   if (fis != null)
    try {
     fis.close();
    } catch (IOException ex) {
    }
  }
  out.flush();
 }

작동 방식 리턴값이을 파일 다운로드 클레스로 넘기면 리턴 리졸버에서

파일 다운로드 방식으로 사용자에게 전송함 .