달력

052017  이전 다음

  •  
  • 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

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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 주소의 문서를 참고하세요.



저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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




저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

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

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


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


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


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


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


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


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


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


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

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

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


Version 12.1.6

Version 12.0.4


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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 플러그인은 아직 지원되지 않습니다.




저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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)
    • 태그 라이브러리  


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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!!!!!!!!!");
                        }
                }
        }
}


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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으로 전체화면으로 키워서 편집하면 괜찮습니다.


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


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


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
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 두 번




저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

티스토리 툴바