ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 홈페이지에 스프링 적용
    홈페이지 2009. 9. 28. 23:53

    홈페이지의 구조를 스프링 프레임워크를 이용해 바꿨습니다.

    외형적인 스킨은 그대로라 무엇이 바뀌었는지 표가나지는 않지만, 무언가 가슴이 뿌듯하네요.


    스프링을 적용시키면서 느낀 것은 '오~ 이거 괜찮은데?' 였습니다.

    무언가 구조가 바뀌더라도 기존의 코드 수정없이 간단하게 xml 만 수정하면 모든 것이 변경된다는 것이 상당히 마음에 들더군요.


    그리고 이 참에 ant 도 사용해봤습니다.

    ant 는 듣기만 하고 실제 사용해본적이 없었는데 정말 편리하더군요.

    IDE 에서 작업하던 것을 실서버에 옮겨놓고 다시 컴파일을 하는데 기존의 방식은 많이 불편했습니다.

    클래스패스를 모두 잡아주고, 패키지화 되어 있는 소스코드 위치 잡아주고, 각각의 라이브러리도 위치도 손쉽게 잡아잘 수 있었습니다.

     

    아직 홈페이지가 완전하기 않습니다. 링크가 연결되어 있지 않은 부분들이 있고, 겉모양만 그대로 유지했지만, 실제는 글쓰기만 겨우 할 수 있을 정도입니다.

    조금더 정리한 후에 댓글과 트랙백, rss 를 마저 구현해야겠습니다.


    java.io.File renameTo
    [개발] 2009/09/01 13:29

    File 클래스에는 파일의 이름을 변경해주는 renameTo() 메소드가 존재한다.
    파일을 이동시킬 경우에도 쓰이는 유용한 메소드인데 가끔씩 문제를 유발한다.

    윈도우의 경우 별 문제가 없었지만, 리눅스의 경우에는 파일이 변경되지 않는 경우가 발생했다.
    왜 그럴까? 우분투를 사용하고 있었는데 버전업을 하기 전까지만해도 잘 되던 것이었다.
    문제는 새버전의 우분투로 업데이트하면서 파티션 정보가 변경되서 그런 것이었다.

    java.io.File.renameTo 의 API를 보면


    Renames the file denoted by this abstract pathname.
    Whether or not this method can move a file from one filesystem to another is platform-dependent. The return value should always be checked to make sure that the rename operation was successful.


    이동대상 파일이 원래와 다른 파티션의 경우에는 실패를 반환할 수도 있다는 것이다.
    하지만 문제는 실패시 false 를 반환할 뿐 어떤 Exception 를 던져주지 않는다는 것이다.
    그래서 임시방편이지만 파일이동에 실패할 경우, 파일을 이동해주는 메소드를 만들었다.
    파일이 클 경우 이동에 시간이 좀 걸려 흠이지만 당분간은 방법이 없어보인다.
     

    if(!file.renameTo(newfile)){
        filecopy(file, newfile);
    }

    if(file.exists()){
        file.delete();
    }
     

    /** 임시디렉토리에 저장한 파일을 본래 위치에 이동한다. */
        private void filecopy(File src, File target){
            FileInputStream fis = null;
            FileOutputStream fos = null;
            byte[] bytes = new byte[4096];
           
            try {
                fis = new FileInputStream(src);
                fos = new FileOutputStream(target);
                int red = -1;
                while(true){
                    red = fis.read(bytes, 0, bytes.length);
                    if(red < 0) break;
                    fos.write(bytes, 0, red);
                }
                fos.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e){
                e.printStackTrace();
            } finally{
                if(fos != null) try{fos.close();}catch(IOException e){}
                if(fis != null) try{fis.close();}catch(IOException e){}
            }
        }

    반응형

    '홈페이지' 카테고리의 다른 글

    트랙백 기능 상실  (0) 2009.10.15
    댓글 및 RSS 기능 추가  (0) 2009.10.11
    홈페이지 디자인 개편  (0) 2009.07.12
    rss 와 captcha 복구  (0) 2009.03.31
    홈페이지 서버이전  (1) 2009.03.30

    댓글

Designed by Tistory.