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

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


Version 12.1.6

Version 12.0.4


처음 시작하는 분들에게 Git이 참 어렵죠.

저도 git-scm.com에서 배포하는 git bash 콘솔 사용하라고 권하고 있는데, BitBucket을 서비스하는 아틀라시안에서 소스트리(http://www.sourcetreeapp.com)라는 도구를 제공합니다. 많은 분들이 추천하셔서 한 번 설치해봤습니다.


맥, 윈도우, 리눅스를 물론 지원합니다.


제 ~/git/ 폴더를 지정하니 한 눈에 상황을 볼 수 있어서 좋습니다. 아마 소스트리의 가장 큰 장점이 아닌가 생각됩니다. 로컬 저장소들의 현황을 알 수 있으니까요.

프로젝트별로 보이는 화면도 좋습니다.

앞으로 git은 소스트리를 자주 써 볼 생각이 듭니다. 이클립스의 EGit은 뭔가 아직 많이 아쉽습니다.




하루패드(http://pad.haroopress.com/user.html)는 마크다운 편집기입니다. @rhiokim 님이 만드신 도구입니다. 2012년 H3컨퍼런스에서 보았었는데, 계속 잘 키우고 계시네요.

3가지 OS를 지원합니다. 윈도우, 맥, 리눅스



마크다운은 마크업보다 아주 단순한 문법으로 문서를 만듭니다. 맥의 Mou처럼 하루패드도 우측 미리보기를 지원합니다. 우측 하단의 설정에서 "마크다운 구문 도움말" 메뉴로 참고할 수 있습니다.

마크다운으로 책 쓰는 분들이 아주 많습니다. GitHub은 이미 마크다운으로 문서를 다루고요. *.md 확장자를 갖는 문서들입니다.







일간워스트가 오늘 핫이슈입니다. 일워( http://ilwar.com ) 사이트는 일베처럼 놀지 말자고 만든 일종의 패러디 사이트입니다. 제로보드로 뚝딱 만들어서 올렸다가 레이니걸님은 트위터를 주로 이용하는 것으로 알고 있는데, 15분만에 호스팅의 트래픽을 넘어섰다고 합니다.

우여곡절을 일간워스트 개장기(http://blog.rainygirl.com/?p=1266)라는 블로그 글로 올리셨는데, 여기에서 기술적으로 배울 점이 아주 많이 있다고 생각합니다.


블로그의 기술적인 내용을 요약해 봅니다.

1. "어짜피 XE 로 사이트 만드는거 10분이면 끝나는데 간단히 해볼까"

2. "15분만에 접속자가 몰리며 호스팅업체의 CPU제한이 초과되어 호스팅이 정지"

3. "유료호스팅으로 일단 옮겨보았습니다. 민영화버튼도 넣고, 일베로고를 그대로 본딴 로고도 적용"

4. "30일 아침, 파이낸셜뉴스에 첫 기사가 나갔습니다.

그리고 네이버 실시간급상승검색어에 이틀 가까이 올라가 있었습니다."

5. "순방문자 백만명은 진작에 돌파했고, 앞자리까지 계속 바뀌며 동시접속자까지도 폭발하고 있었으니 저로서는 황당할 수 밖에 없었습니다."


6. "유료호스팅에서도 결국 트래픽 초과로 사이트가 내려갔습니다. 결국 고민끝에, 자체서버로 돌리기로 결심했죠."

7. "둘쨋날인 12월 30일, 그 트래픽에서 정확히 3배가 늘어났습니다"

8. ...


이하 기술적인 이야기들은, 오늘 저녁 방송에서 특집으로 꾸며집니다.

http://afreeca.com/kenuheo



레이니걸님 새해 복 많이 받으시기 바랍니다.

존경합니다.

지난 연말 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 플러그인은 아직 지원되지 않습니다.




에버노트 프리미엄을 결제해서 써야겠다고 마음 먹게 만든 앱이 있습니다. 맥을 즐겨쓰다가 아프리카 방송 때문에 윈도우를 사용하게 되는데, 맥 사파리의 Reader(읽기도구) 기능이 매우 아쉬운 것입니다.

이런 화면을 방송에서 보여주려면 폰트 크기도 그렇고, 변두리의 군더더기도 거슬립니다.


에버노트에서 만든 Clearly 앱을 이용하면 웹페이지 화면이 콘텐츠만 나오게 됩니다.

 크롬 웹앱 주소: https://chrome.google.com/webstore/detail/clearly/iooicodkiihhpojmmeghjclgihfjdjhj


이렇게 말이죠. 여기까지는 결제를 하지 않아도 됩니다. 


Clearly에서 TTS기능을 사용하려면 프리미엄 사용자가 되어야한다고 합니다.


아까 우측 화면에 아이콘 중 제일 하단의 녀석입니다.


제 계정을 보니 2011년 에버노트 관계자와 미팅을 한 후로 스폰서 형태로 무료로 3년간 써오고 있었는데, 이거 좋은 거 잘 모르다가 연장 결제를 하고 말았습니다.


매월 결제보다 그냥 그동안 써 온 것도 있고 해서 연간 결제를 해 버렸습니다.


좋겠습니다. 에버노트! 이제 저는 에버노트로 매년 50만원 벌어야겠습니다.




이제 Clearly의 TTS 기능은 제 방송에서 자주 뵙게 될 것입니다.

http://afreeca.com/kenuheo



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

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)
    • 태그 라이브러리  


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

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!!!!!!!!!");
                        }
                }
        }
}


프로그래밍 교육 처음에 가장 넘기 힘든 것이 개발환경을 구축하는 것입니다. 자바의 경우 JDK 설치하고, CLASSPATH 설정하고, 등등등

그래서 저는 자바스크립트가 브라우저로 쉽게 시작할 수 있는 것이라 생각하고 있었습니다.


그런데 진짜가 나타났습니다.


http://www.processing.org


개발환경을 자동 지원해줍니다. 자바스크립트의 경우, 크롬브라우저가 바로 실행되고, 자바는 애플릿으로 바로 뜹니다. 안드로이드는 이클립스가 없이도 SDK만 설치해서 연결하면 됩니다. 현재는 3가지 언어를 지원합니다. 

자체적으로 Processing.js 라는 언어를 사용하고 있는데, 몇 권의 서적도 나와있습니다.


"Processing is a programming language, development environment, and online community. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. Initially created to serve as a software sketchbook and to teach computer programming fundamentals within a visual context, Processing evolved into a development tool for professionals. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production."

프로세싱은 프로그래밍 언어, 개발 환경, 온라인 커뮤니티입니다. 2001년부터, 프로세싱은 기술을 이용한 시각 예술과 시각화 분야에서 소프트웨어 역량을 진흥시켜 왔습니다. 초기에 소프트웨어 스케치북으로 사용되거나, 시각화 영역에서 컴퓨터 프로그래밍 기초를 가르치기 위해 만들어졌지만, 프로세싱은 전문가들을 위한 개발 도구로 진화했습니다. 오늘날에는, 프로세싱을 사용해서 배우고, 프로토타이핑하고, 제품을 만드는 수많은 학생, 예술가, 디자이너, 연구원, 동호회원이 있습니다.




다음과 같은 특징이 있습니다.

  • » Free to download and open source
  • » Interactive programs with 2D, 3D or PDF output
  • » OpenGL integration for accelerated 3D
  • » For GNU/Linux, Mac OS X, and Windows
  • » Over 100 libraries extend the core software
  • » Well documented, with many books available


윈도우, 맥, 리눅스 OS를 지원합니다.


jdk가 설치되어 있지 않아도, java applet이 실행됩니다. 배포 패키지에 java가 들어가 있기 때문이죠.

processing.exe를 실행하면 다음과 같은 스플래시 화면이 뜹니다. 만든 분 이름이 보이네요. Ben Fry, Casey Reas. 오픈 프로젝트이고요.


이클립스보다 메뉴가 아주 단순합니다. 툴바의 아이콘이 실행, 정지, 새파일, Open, Save, Export Application 입니다. 우측에 작업중인 언어가 Java로 표시되어 있습니다.  


하지만 줘도 못먹는 화면입니다. 실행 버튼 클릭하고 아래 콘솔을 보면 null (멍~~~)해집니다. 당.황.하셨어요~~ 모드죠.

그리고, 어디서 많이 봤다 싶었는데, 아두이노의 개발환경과 똑같습니다.


팁을 하나 알려드리자면, 메뉴에서 File > Examples... 가 있습니다.


여기에 있는 코드를 보고 학습을 하면 될 것입니다.



개발 도구의 우측에 Java 라고 쓰여진 버튼을 확장 시켜서 다른 언어 모드를 추가할 수 있습니다.


안드로이드, 커피스크립트, 자바스크립트, PDE X, Tweak Mode 를 추가할 수 있습니다.



새로운 개발 플랫폼, 흥미롭습니다.



하나 더,

프로세싱을 통해서 만들어진 것들의 전람회입니다.

http://www.processing.org/exhibition/


2000년까지 만들어지고, 현재도 쓰이고 있는 언어들입니다. 연도는 위키피디어에 기록된 것입니다.




프로그래밍 언어의 역사

  • 기계식 컴퓨터
    • Piano Player
    • 차분 기관
  • 기계어
    • Machine Language
    • Machine Code
  • 어셈블리어
    • 1950s
    • Assembly Language
  • Fortran
    • 1957
    • The IBM Mathematical Formula Translating System
  • Lisp
    • 1958
    • LISt Processing
  • COBOL
    • 1959
    • COmmon Business Oriented Language
  • BASIC
    • 1964
    • Beginner's All-purpose Symbolic Instruction Code
  • Pascal
    • 1970
  • C
    • 1972
  • C++
    • 1983
  • Python
    • 1991
  • Java
    • 1995
  • JavaScript
    • 1995
  • C#
    • 2000  


+ Recent posts