달력

102017  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

이클립스에서 sysout 입력하고 ctrl+space를 치면 System.out.println(""); 코드가 자동으로 완성됩니다.

날짜 시간을 기록하는 dtlog 라는 것을 만들어 보겠습니다.


Quick Access(ctrl+3)에서 templates로 검색해서 Templates - Java/Editor를 선택합니다. 


sysout도 이곳에 설정되어 있습니다. New... 버튼을 클릭합니다.



dtlog를 입력하고 Pattern:에 ${date} ${time} 을 입력합니다.


이제 코드에서 dtlog라고 입력하고 ctrl+space를 입력하면 현재 날짜와 시간이 기록됩니다.



더 많은 옵션들이 스택오버플로우에서 공유되고 있습니다.

http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates

저작자 표시
신고
Posted by 케누 kenu허광남

아직은 JDK8의 정식 버전이 나오지 않아서 이 화면을 보기 쉽지 않습니다.



eclipse 개발중인 다른 버전을 다운로드 받아서 JDK8을 테스트할 수 있습니다.

efxclipse는 e(fx)clipse 즉, JavaFX 개발용 패키지들이 포함된 이클립스입니다. 그래서 용량이 350MB 이상입니다.

http://downloads.efxclipse.org/eclipse-java8/


http://docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest.java
http://docs.oracle.com/javase/tutorial/java/javaOO/examples/Person.java
두 소스는 JDK8 샘플입니다.
설명은 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html 주소의 문서를 참고하세요.



저작자 표시
신고
Posted by 케누 kenu허광남

Java의 람다 표현식

java 2014.01.14 18:18

Lambda Expression 이라고 얘기합니다. jdk8에 포함된 기능입니다.

인터페이스의 메소드가 하나일 때, 이것에 대한 인터페이스를 만들고, 익명 클래스로 만들어서 처리하는 것을 단순화 시켰습니다.

http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

예제가 잘 되어 있습니다.


최종 결과는 다음과 같은 코드입니다. C++에서 보던 -> 기호 때문에 당황스럽군요.

printPersons( roster, (Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25 

    );


람다 표현식을 사용하기 전의 코드는 다음과 같이 익명 클래스로 되어 있습니다.

printPersons(
    roster,
    new CheckPerson() {
        public boolean test(Person p) {
            return p.getGender() == Person.Sex.MALE
                && p.getAge() >= 18
                && p.getAge() <= 25;
        }
    } 

    );


interface CheckPerson {
    boolean test(Person p);
}


확실히 interface 파일 하나 줄이고, 코드를 1/3로 줄이는 효과가 있습니다.

람다 표현식을 사용하려면 아직 개발자 미리보기 버전을 설치해야 합니다.

http://jdk8.java.net



갑자기 이 노래가 생각납니다.

Lambada




저작자 표시
신고
Posted by 케누 kenu허광남

워니퍼님의 글이 확실히 도움이 되었습니다.

이클립스가 workspace 중심이라면 인텔리J는 프로젝트 중심입니다. 이클립스의 워크스페이스는 프로젝트 그룹입니다.


습관이란 게 무서운 것이더군요. 이클립스에서 JUnit 테스트 케이스는 자동으로 프로젝트에 라이브러리를 추가해줍니다. IntelliJ 매뉴얼을 보니, "우리는 자동으로 테스트케이스 라이브러리를 추가하지 않습니다."라고 되어 있네요.


JAR, 즉 junit.jar를 추가하는 방법입니다.


hellojunit이라는 새로운 프로젝트를 만들었습니다.


Preferences...에서 찾을 수 없습니다.


File > Project Preferences... 메뉴가 따로 있습니다.


Project Settings 섹션에 Modules를 선택하고, Dependencies 탭을 선택합니다.


Jars or directories를 통해서 연결하면 됩니다.


저작자 표시
신고
Posted by 케누 kenu허광남

13버전은 업그레이드 비용 $99를 지불해야 사용할 수 있습니다. 이전 버전 12.*는 아래 링크에서 다운로드 받을 수 있습니다.

http://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases


Version 12.1.6

Version 12.0.4


저작자 표시
신고
Posted by 케누 kenu허광남

지난 연말 12/30 표준프레임워크 2.7.0이 출시되었습니다.

개발도구 64bit full버전이 추가되었고, 버그들이 수정되었습니다.

실행환경의 스프링버전 3.0.5는 변화가 없습니다. 

개인적인 생각으로는 2.6.1 정도의 업그레이드라고 생각됩니다만, 아마 스프링 버전이 올라간다면 eGovFrame 3.x로 될 것 같습니다.


개발환경 변화는 다음과 같습니다.

2013.12.30 : 개발환경 2.7.0 릴리즈

  • 기존 버전 패치 및 업그레이드 
    - eGovFrame Template -> CRUD Program 오류 수정(등록용 jsp 화면, reset 버튼 오류수정)
    - Batch Template Project 실행환경 2.7 반영
    - android-maven compile 오류 수정
    * pom.xml에 properties(android.sdk.path) 추가
    * android-maven-plugin 버전 변경(3.1.1 -> 3.6.1)
    - 모바일 디바이스 API pom.xml에 mysql 주석해제
    - 모바일 디바이스 API Wizard 설정오류 수정
    - 템플릿 프로젝트 context-idgen.xml수정(blockSize 10으로 일괄수정)
    - 템플릿 프로젝트(portalsite) 오류 수정
    * 관리자 회원 등록폼에서 회원 등록시 폼 name과 컨트롤러의 ModelAttribute가 상이하여 발생하는 오류 수정
      (EgovMberManageController.java)
    * 관리자 회원 등록폼의 집지역번호 validation rule 속성 누락 수정(EgovMberManage.xml)
    - 템플릿 프로젝트(Enterprise,Portalsite) 오류 수정
    * 회원정보 수정시 오류 수정
    - Template-Web-Simple_Homepage hsql DB로 변경
    - 프로젝트 템플릿 프로젝트 2종 변경
    * 공통컴포넌트 / 모바일 공통컴포넌트 all-in-one 추가
    * 모바일 공통컴포넌트 2종 템플릿 삭제(Collaboration, User Support)
    - 템플릿 엔터프라이즈 시스템 로그 정보 jsp 파일 추가
    - 실행환경 2.7.0 업데이트
    * ID Generation 서비스 버그개선(오류 현상 : 일부 DBMS 상에서 ID 중복 발생)
    * Data Access 서비스 버그개선(오류 현상 : EgovAbstractDAO 클래스의 listWithPaging() 메소드 pageSize 처리 오류 발생)
    - 이클립스 최적화 eclipse.ini 반영
    - splash 이미지 변경(2.6 -> 2.7)
    - 개발환경 64bit full 버전 추가

from: http://www.egovframe.go.kr/EgovDevEnvReleaseNote.jsp?menu=3&submenu=2


STS에 설치된 플그인도 업데이트됩니다.



Kepler 버전에서 CodeGen 플러그인은 아직 지원되지 않습니다.




저작자 표시
신고
Posted by 케누 kenu허광남

JSP 시작하기

java/jsp 2014.01.04 21:27

아프리카 방송에서 사용했던 내용입니다.

http://afreeca.com/kenuheo






JSP 시작하기

  • 시작 전 확인
    • 필요지식
      • HTML
      • Java
        • Java Server Pages
    • + - 배우는 것
      • 동적인 HTML
      • 서버 기술
      • JSP와 서블릿
        • JavaEE의 일부
    • + - JSP 트렌드
      • + - 국내 기업용 시장 장악
        • 전자정부 표준프레임워크
        • http://www.egovframe.go.kr
        • Spring + Eclipse + maven + template wizard
      • + - JavaEE 7 기능 점차 지원
        • http://www.eclipse.org/jetty/documentation/current/jetty-javaee.html
      • + - 서블릿 컨테이너 임베디드
        • Maven
        • 스프링 부트
      • + - 웹서버와 연동 없이 단독 웹 처리
        • + - 아주 초창기
          • + - 톰캣3이 느려서
            • 아파치랑 연결해서 사용
            • AJP
            • mod_jk
        • + - 톰캣4 부터
          • + - 카탈리나 엔진
            • LTE 빠름
            • 커넥터가 병목이 될 수 있다
            • 혼자써라
          • 예) OKJSP 하루 12만PV 2.2만UV 톰캣 혼자
    • + - Browser와 서버의 런타임 환경
      • request ->
      • <- response
      • JS vs JSP
        • JS와 JSP 사이에 변수 공유 
          • JSP는 서버에서 실행
          • JS는 브라우저에 실행
    • + - polyglot 다언어
      • JSP 파일 하나에
        • 6가지 문법
        • JSP
          • JSTL
            • SQL
        • Expression Language
        • Java
        • HTML
        • JavaScript
        • CSS
    • + - HTTP
      • GET
      • POST
      • 쿠키
    • + - HTML
      • + - html 기본 구조
        • DOCTYPE과 html
        • <head>
        • <body>
      • <h1> ~ <h6>
      • <p>
      • <img>
      • <form>
      • + - <input>
        • text
        • button
        • textarea
        • checkbox, radio
    • JavaScript
    • + - CSS
      • selector
      • box model
      • position
  • JSP개발환경
    • JDK
      • http://java.sun.com
      • + - 환경변수
        • JAVA_HOME
        • PATH
          • %JAVA_HOME%\bin; 추가
        • 글로벌 CLASSPATH 환경변수는 이제 안 씀
    • IDE
      • 이클립스
        • JavaEE 패키지
        • Japan Advanced ... 미러에서 다운로드
      • NetBeans
      • IntelliJ(JavaEE 기능 유료)
  • 시작하기
    • 동적으로 HTML을 만드는 법
      • Servlet
      • JSP
    • 표현식(expressions)
    • 스크립틀릿(scriptlets)
    • 지시자(directives)
    • 선언(declarations)
    • 태그
    • 세션
    • 빈(beans)
    • 태그 라이브러리  


저작자 표시
신고
Posted by 케누 kenu허광남

commons-fileup 샘플

java/jsp 2014.01.03 20:25

요즘은 정말 스택오버플로우의 코드조각을 많이 참고합니다.

2000년에 만들어진 cos.jar를 보내드리고, 아파치 커먼스의 업로드 컴포넌트를 사용해 봤습니다.


https://github.com/kenu/oksample/tree/master/commons-fileup


/**
* code from: http://stackoverflow.com/questions/15432024/how-to-upload-a-file-using-commons-file-upload-streaming-api
*/
@WebServlet("/upload4")
public class UploadServlet4 extends HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doPost(HttpServletRequest request,
                        HttpServletResponse response) throws ServletException, IOException {
                PrintWriter out = response.getWriter();
                response.setHeader("Content-Type", "text/html");
                out.print("Request content length is " + request.getContentLength()
                                + "<br/>");
                out.print("Request content type is "
                                + request.getHeader("Content-Type") + "<br/>");
                boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                if (isMultipart) {
                        ServletFileUpload upload = new ServletFileUpload();
                        try {
                                FileItemIterator iter = upload.getItemIterator(request);
                                FileItemStream item = null;
                                String name = "";
                                InputStream stream = null;
                                while (iter.hasNext()) {
                                        item = iter.next();
                                        name = item.getFieldName();
                                        stream = item.openStream();
                                        if (item.isFormField()) {
                                                out.write("Form field " + name + ": "
                                                                + Streams.asString(stream) + "<br/>");
                                        } else {
                                                name = item.getName();
                                                System.out.println("name==" + name);
                                                if (name != null && !"".equals(name)) {
                                                        String fileName = new File(item.getName())
                                                                        .getName();
                                                        out.write("Client file: " + item.getName()
                                                                        + " <br/>with file name " + fileName
                                                                        + " was uploaded.<br/>");
                                                        File file = new File(getServletContext()
                                                                        .getRealPath("/" + fileName));
                                                        FileOutputStream fos = new FileOutputStream(file);
                                                        long fileSize = Streams.copy(stream, fos, true);
                                                        out.write("Size was " + fileSize + " bytes <br/>");
                                                        out.write("File Path is " + file.getPath()
                                                                        + "<br/>");
                                                }
                                        }
                                }
                        } catch (FileUploadException fue) {
                                out.write("fue!!!!!!!!!");
                        }
                }
        }
}


저작자 표시
신고
Posted by 케누 kenu허광남

이클립스 컬러 테마

java 2013.12.27 12:38

http://eclipsecolorthemes.org/


딱 마음에 들지는 않지만 분위기 전환용으로는 괜찮습니다.

Color Theme 플러그인과 EPF(Eclipse Preference File)로 변경가능합니다.

EPF로 다운로드 받은 경우 File > Import 를 통해서 General > Preferences를 통해서 가져올 수 있습니다.


플러그인을 통해서 변경하면 편합니다.

http://eclipse-color-theme.github.com/update 주소를 Help > Install New Software... 메뉴를 통해서 추가하면 됩니다.


컬러 테마가 설치되면 Preferences에서 color 검색으로 쉽게 볼 수 있습니다. 다양한 세팅이 있습니다. Aptana, Notepad++, Sublime Text 2 등 유명한 편집기 테마가 목록에 있습니다.


이점이 아쉬운데, 이크립스 전체는 아니고, 편집기 영역만 변경됩니다. Ctrl+M으로 전체화면으로 키워서 편집하면 괜찮습니다.


문제는 파일 비교할 때인데, 참 난감할 수 있습니다.


가끔 분위기 전환용으로 추천합니다.


저작자 표시
신고
Posted by 케누 kenu허광남
이클립스 코드 네비게이션 단축키

* 새로 만들기 Ctrl+N
* Quick Access Ctrl+3
* 코드 자동완성 Ctrl+Space
* import 정리 Ctrl+Shift+O
* 빨리 수정 Ctrl+1
* 한 줄 삭제 Ctrl+D
* 코드 정렬 Ctrl+Shift+F

* 선언한 곳으로 F3 또는 Ctrl+클릭
* 이전 위치로 Alt+←
* 파일 아웃라인 Ctrl+O
* 상속 구조 Ctrl+T
* 선택 문자 찾기 Ctrl+K
* 행번호로 이동 Ctrl+L
* 파일명으로 찾기 Ctrl+Shift+R
* 프로젝트 텍스트 검색 Ctrl+H

* 실행 Ctrl+F11
* 단축키 목록 Ctrl+Shift+L
* 단축키 설정 Ctrl+Shift+L 두 번




저작자 표시
신고
Posted by 케누 kenu허광남