'Java'에 해당되는 글 37건

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'

1. 두 함수(show(), show2()를 비교하라.

  1. public class ShowTest {
        public void show(String cmd){
            if ( cmd.equals("Test")){
                System.out.println("cmd is Test");
            }
        }
       
        public void show2(String cmd){
            if( "Test".equals(cmd)) {
                System.out.println("cmd is Test");
            }
        }
    }

  1. // 1번 문제는 equals(String cmd)에 null 값이 들어갔을 경우에 대한 질문... ㅡㅅ-)> 그런 경우는 생각을 안해봤어!!
    //그런 경험은 있지만... equals() 안에 들어가는 파라메터가 null 일 때 생기는 경우는 종종 있지.... ㅡㅅ-)>
    public class Main {
        public static void main(String[] args) {
            //String cmd = null;  //이 경우에는 show()에서 NullPointerException을 발생한다. 요게 질문의 핵심인듯.
            //String cmd = "Test"; //이 경우에는 show(), show2() 모두 정상적으로 실행
            String cmd = "test"; // 이건 당연히 둘다 반응 없음.
           
            ShowTest test = new ShowTest();
            test.show(cmd);
            test.show2(cmd);
        }
    }

 

2.고쳐야 할 부분은 어디!?

  1. public class ShowTest2 {
        public void show(String cmd){
            if ( cmd.equals("Test") && cmd != null ){ // 넘겨받은 cmd가 null일 경우에는 NullPointerException이 발생.
                System.out.println("cmd is Test");
            }
        }
    } //cmd.equals("Test") 이 부분을 "Test".equals(cmd) 수정해주면 정상적인 처리가 되겠지요.... ㅡㅅ-)> 잇힝!!!

  1. public class Main2 {
        public static void main(String[] args) {
            //String cmd = "Test";
            String cmd = null;
            ShowTest2 test = new ShowTest2();
            test.show(cmd);
        }
    }

 

3.이 경우에는 어떻게 나올까?

  1. public class ShowTest3 {
        public static void main(String[] args) {
            boolean a;
            boolean c;
            a = c = true;
           
            if ( ( a = true ) || ( c = false )){ // true or false ==> true 이니까....
                System.out.println("1:" + a + "   " + c); // 요 녀석이 출력된다. 조건문 안에서 대입하는건 안좋아요...ㅡㅅ-)!!
            }
           
            if ( ( a = true ) && ( c = false)){ //true && false ==> false 이니까.... 다시 물으니까... 당황해서 답을 제대로 못했다. ㅠㅅ-)
                System.out.println("2:" + a + "   " + c);
            }
        }
    }

4.String, StringBuffer, StringBuilder의 차이점(셋다 문자열 객체)

참고 : http://hongsgo.egloos.com/2033998 요 글을 보면, String < StringBuffer < StringBuilder 속도 차이가 있다. 흠... String은 적게 쓰는게 좋군요. ㅡㅅ-);;

참고 : http://cacky.tistory.com/36

  • String : 변경되지 않는 Character 문자열 객체
    문자열이 변경되지 않을 경우에는 String 사용
  • StringBuffer : 값이 변경 가능 // 동기화 가능 : 다중 스레드 일 경우에 사용
    문자열이 변경되고 다중 스레드에서 사용될 경우 사용
  • StringBuilder : 값이 변경 가능 // 동기화 되지 않음 : 단일 스레드일 경우에 사용
    문자열이 변경되고, 단일 스레드에서 사용될 경우 사용

 

5.가비지 컬렉션을 줄이기 위한 프로그래밍

Java에서는 기본적으로 가비지 컬렉션에 대해서는 JVM에서 처리를 해주기 때문에 크게 신경을 쓰지 않아도 된다고 배웠다. ㅡㅅ-)>

굳이 줄이는 방법을 떠올려보자면,

 

6.Statement와 PreparedStatement의 차이

java.sql.Statement
public interface Statement
extends Wrapper
 

정적 SQL 문을 실행해, 작성된 결과를 돌려주기 위해서(때문에) 사용되는 객체입니다.  

디폴트에서는,Statement객체 마다 1 개의ResultSet객체만이 동시에 오픈할 수 있습니다. 따라서, 1 개의ResultSet객체의 read가, 다른 read에 의해 끼어들어지면(자), 각각은 다른Statement객체에 의해 생성된 것이 됩니다.Statement인터페이스의 모든 execution 메소드는, 문장의 현재의ResultSet객체로 오픈되고 있는 것이 존재하면, 그것을 암묵에 클로즈 합니다.

관련 항목:
Connection.createStatement(),ResultSet

 

java.sql.PreparedStatement

public interface PreparedStatement
extends Statement
 

프리컴파일 된 SQL 문을 나타내는 객체입니다.  

SQL 문은, 프리컴파일 되어PreparedStatement객체에 포함됩니다. 거기서, 이 객체는, 이 문장을 여러 차례 효율적으로 실행하는 목적으로 사용할 수 있습니다.

주:IN 파라미터치를 설정하는 설정 기능 메소드 (setShort,setString등)는, 입력 파라미터의 정의된 SQL 형과 호환이 있는 형태를 지정하지 않으면 안됩니다. 예를 들어, IN 파라미터에INTEGER라고 하는 SQL 형이 있는 경우,setInt메소드를 사용하지 않으면 안됩니다.

임의의 파라미터형 변환이 필요한 경우는,setObject메소드는, 목적의 SQL 형으로 사용하지 않으면 안됩니다.  파라미터 설정의 예를 다음에 나타냅니다.con는 액티브한 접속을 나타냅니다.

PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ? ");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
관련 항목:
Connection.prepareStatement(java.lang.String),ResultSet

 

PreparedStatement 에 대한 설명 : http://pcguy7.springnote.com/pages/1052420
 

Summary

그래서 우리는 prepared statements를 파라메터와 함께 사용해야한다.
이것은 미리 만들어진 접근 계획을 재 사용하므로서 데이터 베이스에 대한 로드를
줄여 준다.
이 cache는 데이터 베이스가 확장된 것이어서 여러분의 모든 애플리케이션이
유사한 파라메터화된 sql을 사용하면 하나의 애플리케이션이 다른 애플리케이션에
의해 사용된 prepared statements를 이용하므로 캐시 스키마의 효율성을 증대
시킬 수 있다.
이것은 application server 사용의 이점이다. 왜냐하면 데이터 베이스에 접근하는
로직은 데이터 접근 계층에 집중화 되어야하기 때문이다.
두번째로 prepared statements의 올바른 사용은 또한 여러분이 애플리 케이션 내부의
prepared statements cache를 잘 이용할 수 있게 한다. 이것은 애플리케이션이
이전에 사용했던 prepared statements 호출을 재사용해서 JDBC driver에 대한 호출의
수를 감소시켜 성능의 향상을 시킨다. 이것은 현명한 fat clients 사용을 효율적으로
그리고 경쟁력있게 만들고
독점적인 connection을 유지할 수 없는 불이익을 제거한다.
만약 파라메타화된 prepared statements를 사용한다면 여러분은 데이터 베이스와

코드를 가지고 있는 application server의 효율을 높일 수 있다. 이들 개선된 점은

여러분의 애플리케이션의 성능을 향상 시킬수 있게 할것이다.

내 나름의 중요한 결론을 말해보자면, 'PreparedStatement를 잘 활용하면 CPU 사용량을 줄이고 DB에 접근하는 소프트웨어의 속도를 향상시키는 효과가 있다'는 것이다. ㅡ ㅅ-)> 내가 쓰기 불편하다고 Statement 형식으로 많이 썼었는데, 이제 PreparedStatement를 사용해야겠다. 나란 녀석도 참 고집이 쎄다. 그렇게 쓰는 장점이 있는데도, 내가 쓰기 편하다고 그 방식을 외면하고 있으니 말이다.

이 글은 스프링노트에서 작성되었습니다.

허니몬에 관한 보고서/허니몬의 드림성공노트
  오늘은 국내 우량벤처기업인 ㈜잉카인터넷의 자바관련 보안SW 개발 신입 부분에 면접을 볼 수 있는 기회가 저에게 주어졌습니다. ^^; 미천한 저의 이력서를 보고 면접의 기회를 주신거에 대해서 다시한번 감사드립니다.
 
  어제 오후(18:53)에 온 연락을 받고 부랴부랴 ActiveX와 ActiveX 대체 기술들에 대한 검색에 들어갔습니다(결론은 급벼락치기를 한 내용들이지만, 머리에는 제대로 들어오지 않더군요. 벼락치기보다는 다양한 분야에 대한 꾸준하고 깊은 탐구와 사고가 필요하다는 것을 절감하는 날이었습니다. 하나에 관심을 가지게 되면 깊게 파자.).

  ActiveX 대체 기술로는, 공인인증서는 Java 를 이용하면 Platform(운영체제, 브라우저 등)에 독립적인 형태로 구현할 수 있고, UI 부분은 Ajax 기술을 이용하여 구현할 수 있고, 나머지 기능들은 실버라이트와 같은 RIA(Flex, JavaFx)를 이용해서 대체할 수 있다. 그런데!! 난 이걸 말하지 못한 것이다!! 이 얼마나 통탄할 만한 경우가 아니겠는가. OTL... 이런 기분이랄까? 자기소개서 입사지원동기 부분에서는 자랑스럽게 ActiveX를 대체할 수 있는 기술에 대해서 언급을 해놓고는...

  이런 실수를 반복하지 않기위해서라도 이렇게 기록을 남겨줘야 한다. ㅡㅅ-);; 이것도 내 나름의 장점인건데!! 자기소개에서 제대로 하지 못했어. ㅠㅅ-) 으흑... 왜그리 긴장을 했는지 모르겠지만, 이미 활은 날아갔고 총알도 튕겨나갔다.

  우리나라의 실리콘벨리는 이제 테헤란로에서 강서지역(구로디지털단지, 가산디지털단지, 상암쪽)으로 넘어가고 있는 상황이 되고 있는 것은 확실해보인다. 구로디지털단지는 정말 오랜만에 와본다. 2년만이다. KIPA에서 임베디드 인력양성 사업 때문에 가락동에서 이곳까지 매일 오고가던 생각을 하면... ㅡㅅ-)> 후훗, 집에서 여기오는 것도 나름 일이다. 딱 한시간 20분 소요되었다. 면접볼 때는 10분 단축...!! 해서 1시간 10분 걸린다고 이야기했다. >ㅅ<)

  구로디지털단지역도 모습이 많이 바뀌어가고 있었다. 아마도 국내 IT 거점지역으로서의 위상도 크게 높아진 덕분도 있을 것이고 서울자체(지역구청)에서 밀어주는 덕분도 있을 것이다. 뜨거운 열기로 가득한 오후였지만, 많은 사람들이 오고가는 모습을 볼 수가 있었다. 나도 저들 사이에서 직장인이고프다. 백수 생활이 길어지니까 몸이 견뎌내질 못하고 있다.


  높은 건물들(저 건물들 안에는 수많은 IT 관련 업체들(임베디드, 펌웨어, SI 등등)이 상주하고 있으며, 많은 이들이 피땀흘리면서 일하고 있을 것이다(냉방시설은 시원하겠지만). 그리고 곳곳에 보이는 찜질방은 내가 이곳에서 일하게 된다면 좋은 휴식처가 되어줄(술마시고 집에 못갈때?) 든든한 모습을 보여주고 있다. 우훗!!


  임베디드 인력양성 사업 교육이 있던 포륭 건물이다. ㅡㅅ-);; 지하에 먹거리 식당이 있지만, 우리동네보다는 1~3000원 비싸다. 그래도 어쩌겠는가!? 살기위해 먹어야지... 구름한점 없이 쾌청하고 맑은 하늘, 그리고 강렬히 내리쬐는 태양은 나를 땀흘리게 만들었다. 오래 입을 수 있도록 가을 정장을 맞춰입은 탓에(거기다가 블랙!!) 더웠다. 내가 구로디지털단지역에 도착한 시간은 14:10. ㈜잉카인터넷이 있는 에이스하이엔드타워 근처에 있는 편의점에서 음료수 한잔 마시고 쉬면서 무슨 말을 해야할지 고민했다. 고민했지만.. 벼락치기 공부는 역시 성과가 없었다. 췟... ㅡㅅ-)


즐비하게 들어서 있는 신식 건물들. ㅡㅅ-);; 통짜유리로 구성되어 있어서 한여름에는 냉방비좀 나올 것이다. 내가 왜 이런 걱정을 하고 있지? ^^;; ㅎㅎ. 쓸데없는 걱정도 팔자.


자, 시험을 보기 위해 12층으로 이동!!!


  ㈜잉카인터넷의 브랜드네임인 nProtect 다. 다양한 솔루션들을 제공하고 있고, 나에게 젤 익숙한 것은 nProtect netizen과 game guard 가 아닐까 싶다. 국내대표 벤처기업답게 내부는 깔끔했고, 아늑한 느낌을 준다. 오홋... ㅡㅅ-);; 입구에서 면접 실무자와 만난 덕분에 도촬은 못했다. OTL... 좀 더 훔쳐보고(?) 왔어야 했는데.


  내가 면접을 본 곳. 나는 면접시간 보다 10분 먼저 도착(사실 40분 먼저 도착)해서 5분 전에 입구에 도착한 상태였다. 약속시간 보다 10분 정도 먼저 도착해서 기다리는 건 다른 사람들에게도 도움이 된다고 생각한다. 참고바랍니다.


  제가 면접을 본 회의실 풍경입니다. 깔끔하지요? 허브가 탁자 위에 있는 건 조금 안습. ㅠㅅ-) 거기서 30분이 약간 넘는 면접이 진행되었습니다. 자기소개, 학교생활, 취미생활, 사회생활 관련 질문( 상사가 나보다 나이가 어리다면? 상사가 나에게 내가 싫어하는 일을 시킨다면? ) 이 주어졌습니다.


  - 상사가 나보다 나이가 어리다면?
  ㅡㅅ-)> 다른 거 없다. 무조건 충성하고, 상사를 롤모델삼아서 따라하면서 그 사람이 나보다 어린 나이에 나보다 위에 있을 수 있는 이유를 철저하게 분석하여 내게 부족한 점들을 보완해줘야 한다. 솔직히 자기보다 어린 사람이 위에 있으면 기분은 언잖을 수 있잖아? 하지만, 내 상사인 이유가 분명히 있는거다. 그걸 파악해내서 자신을 성장시켜라.
  면접에서는 '상사가 어리다고 해도 상사다. 회사는 상명하복의 사회다. 지시사항을 잘 수행한다. 원만한 인간관계를 유지하도록 노력한다.' 라고 했다.
  - 상사가 나에게 내가 싫어하는 일(내 생각은 '그건 아닌데')을 시킨다면?
  ㅡㅅ-)> 군대나 회사나 크게 다르지 않는다. 까라면 까는거다. 대신 시간적인 여유가 된다면, 내가 생각하는 차선책을 준비를 해두었다가, 일이 잘못되었을 경우, 슬며시 상사에게 건의를 할 수 있는 준비는 갖추어줘야 한다고 나는 생각한다. 그대로 말했다.

  제일 문제였던건 기술면접!! ㅡㅅ-)> 지금까지 5번 정도의 면접을 봤다. 인성적인 면으로 보는 면접들은 나의 '호감형' 얼굴로 먹고 들어가고 약간 더듬거리지만 내 나름의 확신을 담은 답변으로 무사통과를 했기 때문에, 몇번의 입사제의를 받은 사례를 남겼지만 취약한 부분은 기술면접 이었던 것이다. 기술면접의 핵심은 '자신있어하는 프로그래밍 언어에 대한 기본적인 개념을 이해하고 숙지하고 있느냐' 인것 같다.
 
여기서 나의 취약점이 드러난거다. ^ㅡ_-)>
  프로그래밍을 하면서 빠른 습득에 주안점을 두다보니까 내가 사용하는 클래스들에 대한 정확한 이해는 등한시했다는 것이다. 솔직히 인터넷 뒤져보고 API 문서만 잘 보면, 거기에 필요한 개념들이나 설명들이 있는데, 그걸 크지만 작은 용량의 내 머릿 속에 꾸깃꾸깃 밀어넣을 생각을 하지 않았다. 기술면접 시험에서는 그런 암기 후에 그걸 자신의 것으로 뱉어내는 능력을 요구하고 있었다. 어려운 문제들은 아니었다. 내가 교육과정에서 배운 개념, 프로그래밍, 방법 들에 대한 개념을 물어보고 있었다. 하지만 난 그것에 대해서 제대로 설명을 못하는 우를 범하고 말았다. 쩝....  이 점에 대해서 깊게 반성하면서 이제라도 필요한 개념들에 대한 숙지 작업에 들어가야겠다.

  기술면접과 관련된 내용은 스프링노트에 별도의 페이지를 만들어서 기록(http://sunfuture.springnote.com/pages/4131699)을 남겨야겠다. 이렇게 기록을 남기면서 머릿속에 남겨줘야지.


  그렇게 정신없이 기술 시험 면접까지 끝나고 면접관들에게 하고 싶은 말로 '면접할 수 있는 기회를 주셔서 감사합니다.' 라고 이야기 했습니다. 온화하신 모습으로 편안한 분위기에서 면접볼 수 있도록 해주신 것에 대단히 감사하다. ^^ 제 생각에는 '밑져야 본전'이라는 생각으로 응시를 했던 면접이었는데, 좋게 봐주신 거고 면접의 기회를 주신거니까 말이죠.

  면접을 마치고 밖으로 나오면서 다시한번 감사의 인사를 드리고 나와서 건물을 찍었다. 엘리베이터를 타고 내려가면서 지나고나서 후회할 때 하는 인상을 찡그리며 혀를 낼름 내밀 수밖에 없었습니다. 오늘 면접을 통해 제 부족한 부분을 깨닫고 레벨업을 목표로 레벨업노가다(자바 기본 개념 깨우치기)를 들어가야겠습니다.

  면접은 '창과 방패'의 싸움과도 같다고 생각을 합니다. 면접관은 자신의 공격을 잘 받아내는지 창으로 찌르는 공격자, 면접자는 면접관의 공격을 방패로 잘 받아넘기는 수비자의 역할을 가지고 있기도 합니다. 아직까지 면접을 보면서 제 자신의 기분이나 인격을 자극하는 면접관들을 만나지 않은 것은 저에게는 또다른 행운이 아닐까라고 생각합니다.
  이 글을 통해서 나마, 미흡한 저의 이력서를 보시고 면접의 기회를 주신 분들께 감사드립니다.


  저에게는 이렇게 높은 곳이었습니다. 즐거운 경험이었습니다.


  가을은 어느덧 성큼 내 곁에 다가와 있습니다.


그런데!! 왜 낮에는 더운건가요!? 우흡!!!

이렇게 허니몬의 ㈜잉카인터넷 기술면접 후기였습니다. ㅡㅅ-)> 기술면접시에 받은 문제지를 유출해보려 했는데 실패!!

내가 취업하지 못하는 것은 나에게 부족함이 많기 때문이다. 자신의 부족함을 깨달아가면서 나는 또 한단계 앞으로 전진!!

JAVA의 정석
카테고리 컴퓨터/IT
지은이 남궁 성 (도우출판, 2008년)
상세보기

  핸드북을 보면서 깨달은 것인데, Java 관련 기술면접 시험 준비용으로 핸드북이 효과적인 것 같다는 생각을 했다. 오호홋!! 물어봤던 것들이 그 안에 담겨있었다. ㅡㅅ-);;; 시험전 보는 요점정리 축약본이라고나 할까?? 원츄!! ㅎㅎ 핸드북만 팔아도 될듯.
허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
관련 내용 : http://java.sun.com/developer/media/deepdivejdk7.jsp



JDK 7 버전이 릴리즈 된지 얼마 되지 않았다.

Host: Ed Ort, Senior Staff Information Engineer, Sun Microsystems
Guest: Danny Coward, Chief Architect for Client Software at Sun Microsystems

두 사람이 나누는 대담을 통해 JDK 7 에 깊이 빠져들어가보자.


JDK 7 : Top 5 New Features

#1 : Modularity
#2 : Multi-Language
#3 : New Garbage Collectors
#4 : Nio.2 File System APIs
#5 : Swing API Additions

#1 : Modularity
// Declaring that a class belongs to a module:
module M;
package P;

public class Foo {...}

//Defining a module in a module-info.java file

module M @1.0 {
requires N @2.1;
requires L @0.5;
}
Java SE 7 : Project Jigsaw
  • Low Level Modularity System in JDK 7
  • Breaking Up the JDK 7 Code
  • Packaging Format
  • Uses Java Language Modularity(JSR 294) // ㅡㅅ-);; JSR 은 뭐지?
http://openjdk.java.net/projects/jigsaw
http://jcp.org/en/jsr/detail?id=294

아래에 나오는 내용은 "Coin Project"란다.


String animal ="...";
   
    if ( animal.equals("dog")) {
        takeForWalk(animal);
    } else if ( animal.equals("cat")) {
        leaveMilkFor(animal);
    } else if ( animal.equals("mouse")) {
        cleanCageFor(animal);
    } else {
        leaveOutside(animal);
    }
※  JDK 7 에서는 switch 에서 case에 char 타입 이외에 String 타입도 사용이 가능하게 됩니다. 조건문이 쉬워지는군요.
    String animal = "...";
   
    switch(animal) {
    case "dog" : takeForWalk(animal);
    case "cat" : leaveMilkFor(animal);
    case "dog" : cleanCageFor(animal);
    default : leaveOutside(animal);
    }

※ Exception 처리
try {
        doWork(file);
    } catch ( IOException ioe ) {
        logger.log(ioe);
        throws ioe;
    } catch ( SQLException sqle ) {
        logger.log(sqle);
        throws sqle;
    }
  JDK 7 에서는 이렇게 가능하다. Ed Ort 씨 처럼 Ah~~ha~~!!
try {
        doWork(file);
    } catch ( final IOException | SQLException ex ) {
        logger.log(ex);
        throws ex;
    }

※ 다음은 Genericㄴ 사용법 : 아직 본인은 generics 사용법에 대해서 익숙하지 못하다. ㅡㅅ-);;;
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
JDK 7 에서는 이렇게 된다고 한다. ㅡㅅ-)b
Map<String, List<String>> anagrams = new HashMap<>();

※ 다음은 Operator
Object anObject;
    ...
    if (anObject == null ) {
        s = "nothing";
    } else {
        s = anObject.toString();
    }
   
    int i;
    ...
    if ( anInteger == null ) {
        i = -1;
    } else {
        i = anIntegerr;
    }
JDK 7 에서는 이렇게 바뀐다고 한다. " ?:  " 요놈인 건데... ㅡㅅ-)> 요건 뭐가 좋은거지? ?: == null 인건가?
   String s = anObject?.toString() ?: "nothing";
    int i = anInteger ?:-1;


#2 : Multi-Language  : supporting non-Java languages at the VM level
JVM에서의 실행속도를 높인다는 건가? Bytecode를 역동적으로!? 메소드 핸들러를 가볍게!? 최적화를 변동적으로?
Broadening the JVM to Accelerate Runtimes
  • Bytecode for Dynamic Invocation
  • Lightweight Method Handles
  • A Variety Of Other Possible Optimizations
JRuby is the Pioneer
The DaVinci Project
http://openjdk.java.net/projects/mlvm

#3 : New Garbage Collectors - Garbage First,
Predictably Low Pauses + Few Full Garbage Collectors + Good Throughput
Greate for a Wide Variety of Application

#4 : Nio.2 File System APIs
DirectorySearchOperations 라는 클래스가 추가된 듯 하다. 자바로 새로운 파일 시스템을 사용해볼 기회가 있었어야 말이지..ㅡㅅ-);; 흠...
  • New Filesystem API File Notifications Directory Operations
  • Asynchronous I/O

#5 : Swing API Additions
  Java의 Swing API에 대한 불만은 여전히 있었고, ㅡㅅ-);; 추가되었다는 내용을 봐도 불만은 여전히 유지가 될 것 같다. 사용자가 필요에 따라서 자신이 디자인한 부분에 대해서 적용할 수 있도록 해주면 좋지 않을까? ㅡㅅ-)~ 현재 나는 조용히 쓰라는 대로 써야지. ㅎㅎ.
JSR 296 : Swing Application Framework
http://jcp.org/en/jsr/detail?id=296

JDK 7 과 관련된 홈페이지(MileStone)
JDK 7 Milestones Homepage
http://openjdk.java.net/projects/jdk7/milestones/
openJDK Project Homepage
http://openjdk.java.net/project/jdk7/
JDK 7 Project Homepage
https://jdk7.dev.java.net/
The Planetarium Blog
http://blogs.sun.com/theplanetarium/

허니몬의 IT 이야기/프로그래머, '코드 엔지니어'
링크 : http://java.sun.com/docs/books/tutorial/index.html

사용자 삽입 이미지

영문으로 되어있기는 하지만, 자바에 대한 기본적인 개념을 깨우치기에 매우 좋은 사이트인 것 같다. 자바를 배우기 시작한지 5개월이 지난 뒤에서야, 이 사이트의 가치에 조금 눈을 뜨게 된 것 같다.

현재 Java SE 는 SDK 6 버전의  16 번째 업데이트 버전 까지 나와있는 상황이며, 새로운 기술인 JavaFX와 관련된 부분에 대한 개발이 한창인 것으로 보인다. 자바 어플리케이션 스토어인 warehouse 도 곧 오픈한다고 한다.

● 이와 관련한 글들도 올라와 있다.
= 관련페이지 링크 : http://java.sun.com/warehouse/
= warehose 에 대한 동영상 설명 : http://channelsun.sun.com/video/java+warehouse+-+part+1+of+3/30631799001
오늘 12:00~ 12:20 사이에 오픈한다고 한다. Java Store beta 라고 하네.

내가 만든 프로그램을 JAR로 만들어서 배포하는 것에 대한 글도 조만간 올려야겠다.
ㅡㅅ-);; 난 그저 맛만보는 프로그래머...이기 때문에... ㅎㅎ 깊게는 못들어간다.

허니몬의 사진기록
2009년 8월 14일(금) 오후에 발표가 있었습니다.
ㅡㅅ-);; 보시는 것처럼 피곤에 찌들어 초췌한 얼굴이 보이시나요? OTL... 마지막날이 제일 힘들었습니다. 흑흑 전날까지 코드 손보고, 늦게까지 시나리오 수정하고 외우느라 늦게 자고, 늦지 않으려고 일찍 일어나야 했거든요.

여전히 얼굴에는 피곤함이 가득 담겨 있습니다. 5개월의 교육과정 중에서 마무리를 짓는 시간이다 보니 나름 열과 성의를 다해서 했습니다. 다음에는 장인정신으로 코드를 만들어보겠습니다. ㅡㅅ-)b


작은 발표회였지만, 많은 사람들 앞에서 발표를 한다는 것은 살짝 긴장이 되더군요. 시간이 충분치 않아서 시나리오도 제대로 외우지를 못한 상황이라서 중간중간 많이 버벅거림이 있었습니다. ^^; 긴장은 안할래야 안할 수가 없더군요.


그래도 발표는 웃으면서!! +_+)b


오른손에는 컨닝페이퍼를 들고서(발표 하는 중간에도 까먹었다는... ㅡㅅ-);; 잽싸게 데이터를 입력하는 동안에 훑어보면서 다음 순서를 찾았습니닷!!). 화면을 보면서 설명을 드렸습니다. 나름 시나리오를 짜서 움직임이나 손동작을 구상을 했는데, 발표하는 중간에 살며시 머릿 속에서 지워져 나가더군요. 흠냠...


발표를 마치고 다른 사람이 발표하는 내용들이 다이어리에 적어두고 있습니다. 나중에 발표를 할 때 참고해두려고요... ^^; 앞으로 발표를 할 기회가 자주 있을 것 같아서 말이죠.


" 요렇게~? " 발표 중에 할 손동작들을 연습하며 웃어보고 있습니다. ^^;


이런 자세로 발표하면 안되겠죠? ^^;;


컨닝페이퍼를 보면서 연습하고 있습니다.


이렇게 프로젝트가 끝났습니다. 발표가 끝나고 기념촬영을 하러 밖으로 나갔습니다. 때마침 햇살이 좋아서... 멋지게 나왔군(?)요!! 잘 찍어준 덕분도 있겠지요. ^^;; 다른 이들의 사진을 같이 올려서 발표회 풍경을 보여드리려고 했던 애초의 의도에서 제 사진들로만 채우게 되었습니다. 다른 사람들에게 사진을 올려도 좋다는 동의를 얻지 못해서 말이죠. 그 점은 굉장히 죄송하게 생각을 합니다. ^^;; 이상 길다면 길었던 CJ정보기술교육센터에서의 5개월간의 교육이 끝났습니다.
  이제 18명의 수료생이 각자 자신의 길을 찾아서 떠나는 독립의 여정에 들어섰습니다. 모두의 행운을 빕니다. 무운이 함께하길 바랍니다.


1 2 3 4 5 6 7 8
블로그 이미지

Email : ihoneymon@gmail.com 안녕하세요, 꿀괴물 입니다. ^^ 멋진 비행을 준비 하는 블로그 입니다. 만능형 인간이 되어 많은 이들에게 인정받고, 즐겁고 행복하게 살기를 간절히 원합니다!! 달콤살벌한 꿀괴물의 좌충우돌 파란만장한 여정을 지켜봐주세요!! ^^

허니몬