CAP Theorem My Work

1. 고확장성(High Scalable) 분산데이터베이스 시스템, CAP Theorem
    가. CAP 정의
         - 분산 시스템이 갖추면 좋을 세 가지 특성 즉 Consistency, Availability, Partition Tolerance
         1) C (Consistency) : 모든 노드가 같은 시간에 같은 데이터를 보여줘야 한다.
         2) A (Availability) : 몇몇 노드가 다운되어도 다른 노드들에게 영향을 주지 않아야 한다.
         3) P (Partition Tolerance) : 일부 메시지를 손실하더라도 시스템은 정상 동작을 해야 한다.
         - CAP 이론에 따르면 위 3가지 중에 동시에 2가지만 보장할 수 있고 3개를 모두 보장하는 것이 불가능하다고 나와 있다. 그래서 데이터를 관리할 때 이 3가지 중에 어느 2가지에 중점을 두느냐가 아주 중요한 부분이다.


2. CAP 분류 및 특성
    가. CAP 분류
         - C= 동일성, A= 독립성, P=생존성 이라고 비유해보자
         1) CA 분류 (동일성 + 독립성  =  시스템이 죽을지언정 메시지 손실은 방지하는 강한 신뢰형)
             - 전통적인 RDBMS가 여기에 해당한다. 트랜잭션이 필요한 경우 필수적.
         2) CP 분류 (동일성 + 생존성 = 모든 노드가 함께 퍼포먼스를 내야하는 성능형)
             - 구글의 BigTable과 그 아류작들(HyperTable, HBase 등)
         3) AP 분류 (독립성 + 생존성 = 비동기화된 서비스 스토어에 적합)
             - Dynamo, Tokyo Cabinet, Apache Cassandra, CouchDB, Oracle Coherence 등 
    나. CAP 구성 방안
         - 위의 3가지가 각각의 목적이 다르기 때문에 적절한 사용 목적에 배치되어야만 한다.
         - 특히 C를 선택 하냐(동기식), 선택 안하냐(비동기식)를 아키텍처에 감안하여 선택해야 한다.
         - 보통 대용량으로 분산하는 케이스가 거의 P에 포함된다. 기존에 사용하던 RDB가 아닌 대안을 찾는다면 CP나 AP 분류를 선택해야 한다.
         - 보통 대용량으로 분산하는 케이스가 거의 P에 포함된다. 그러므로 기존에 사용하던 RDB가 아닌 대안을 찾는다면 CP나 AP 부류를 선택해야 한다.
         - CP는 대용량의 백데이터 저장이나 분산 파일 시스템용으로 사용한다. 주로 데이터의 덩치가 큰 편에 적합하며, 클러스터의 다중화도 고려되어야 한다.(C의 특성상 노드의 사망이 미치는 영향 때문에 Fail-Over 할 수 있는 다중화가 기본이다.)
         - AP는 요즘 인기를 얻고 있는 SNS들이 많이 채용하는 분류다. 메시지 처리가 안되면 그저 당장 처리못한다고 배를 째고 (에러 발생으로 리턴) 받을 수 있을 때 족족 받아 넣는 구조에 적합하다. 제대로 비동기식 플랫폼에 어울리는 놈이다. 이 분류는 동기식 실시간성과 동일성을 보장하지는 못하지만 Fail-Over에 강하다.
         - Oracle Coherence 같은 경우에는 하나의 서비스 노드가 다른 노드의 데이터를 백업본으로 들고 있을 수 있어서 다른 노드가 죽으면 해당 노드가 가지고 있던 데이터를 일정시간(몇 초) 이후에 자신의 서비스 데이터로 올려 놓는다. 그래서 시간적인 딜레이를 감안해 준다면 P의 약점인 데이터 유실을 일부 커버할 수 있고, 데이터의 유효성은 유지될 수 있다.(물론 백업본이 서비스로 올라오는 시간동안 다른 노드가 죽으면 유실될 수 있다.)
3. 활용 방안
    - 기존에 많이 사용하던 RDBMS는 3가지 중 CA에 집중하고 있다. 웹이 발전하면서 다양한 요구사항이 생겨나고 엄청난 양의 데이터를 처리해야 하게 되면서, RDBMS가 갖지 못한 P의 특성이 필요해졌고 그러면서 등장한 것이 NoSQL이다. 좀 더 풀어쓰면 데이터베이스에 대한 수평적 확장(Horizontal Scalability: 즉, 옆에 서버 한대 더 배치해서 데이터베이스를 늘리고 싶다는 의미이다.)에 대한 이슈가 발생했고 확장성 이슈를 해결하기 위해서 P를 선택하다보니 기존에 가지고 있던 C나 A의 특성 중 하나를 포기해야 했다. 그래서 NoSQL에는 다양한 시도들이 있지만 가장 중요한 이슈는 확장성을 해결하려는 것이다.
    - 관계형 데이터베이스는 기본적으로 분산형을 고려해서 디자인 되지 않았다. 그래서 ACID(원자성, 일관성, 독립성, 지속성) 트랜잭션 같은 추상화와 고레벨 쿼리모델을 풍부하게 제공할 수 있지만 확장성이 좋지 못하기 때문에 모든 NoSQL 데이터베이스는 다양한 방법으로 확장성 이슈를 해결하기 위해 초점을 맞추고 있다. 각 NoSQL에는 여러가지 차이점이 있지만 CAP의 범주에서만 보면 CP를 선택하거나 AP를 선택하게 된다.


JDBC - Connection resource관리 My Work

1. Don't share any connection with other thread(Never! 절대! 스레드끼리 connection을 공유해서는 안된다.)

Bad Case 1:
        public class ShoppingController{
                public static Connection con = null; //connection은 절대 static이어서는 안된다.
                static{
                        con = ....;
                }
                .........
        }

Bad Case 2:
        public ControlServlet extends Servlet{
                private Connection con;//connection은 맴버변수로도 선언해서는 안된다.(Servlet)
                .....
        }

Bad Case 3:
        <%@page contentType="text/html;charset=euc-kr"%>
        <%!Connection con? = ..//connection은 맴버변수로도 선언해서는 안된다.(JSP)%>

Bad Case 4:
        Connection con;
        .....
        new ControlThread(con).start(); //connection은 절대 공유해서는 안된다.
        new ControlThread(con).start(); //connection은 절대 공유해서는 안된다.
        .....

Bad Case 5:
        public class ABean{
                Connection con = ...; //Bean내에서도 맴버변수로는 선언해서는 안된다.        
        }

        In JSP:
        //jsp에서도 마찬가지이다. 두개의 브라우저가 같은 session으로 접근할 수 있다.

Better Case:?
        Connection con = null;        // local variable로 선언하는 것이 정답이다.
        ...
        ... ?
        con.close();  //사용이 끝난 connection은 close로 필히 풀로 반환시킨다.



2. 가능하다면 Statement는 미리 준비토록 한다.

Bad Case :
        Statement stmt = null;
        ....
        String allItemSql = "SELECT * FROM s_item, s_cat WHERE s_item.cat_no = s_cat.cat_no and s_cat.cat_no = "+ cat_no;
        stmt = con.createStatement(); // 이렇게하면 오라클이 cat_no가 틀릴때마다 다른 질의로 판단하여 효율이 떨어진다.
        resultset = stmt.executeQuery(allItemSql);

Better Case :
        PreparedStatement pstmt = null;
        ....
        String allItemSql = "SELECT * FROM s_item i, s_cat s WHERE i.cat_no = s.cat_no and s.cat_no = ?";
        pstmt = con.prepareStatement(allItemSql); // prepareStatement메서드를 사용하여 Statement를 미리 준비해 놓는다.
        pstmt.setInt(1,cat_no);
        resultset = pstmt.executeQuery();






3. 더이상 사용하지 않는 자원은 반드시 시스템에 반환하도록 한다.

Bad Case :
        con = ...
        String allItemSql = "SELECT * FROM s_item i, s_cat s WHERE i.cat_no = s.cat_no and s.cat_no = ?";
        pstmt = con.prepareStatement(allItemSql);
        resultset = pstmt.executeQuery();
        ...
        con.close(); //connection만 닫는다고 해결되는 것이 아니다.

Better Case :
        con = ...
        String allItemSql = "SELECT * FROM s_item i, s_cat s WHERE i.cat_no = s.cat_no and s.cat_no = ?";
        pstmt = con.prepareStatement(allItemSql);
        resultset = pstmt.executeQuery();
        ...
        resultset.close(); //순서대로 리소스를 반환하고
        pstmt.close(); //모든 리소스를 닫아야 한다.
        con.close(); //하지만 이것도 완벽하지 않다. 에러상황시 리소스를 조금씩 잃게된다.

Better Case :
        try{
                con = ...
                String allItemSql = "SELECT * FROM s_item i, s_cat s WHERE i.cat_no = s.cat_no and? s.cat_no = ?";
                pstmt = con.prepareStatement(allItemSql);
                resultset = pstmt.executeQuery();
                ...
        }catch(SQLException e){}
        finally{//finally를 이용해서 무조건 모든 리소스를 반환토록 한다.
                try{
                        rset.close(); // 이 부분에서 예외가 발생하면 나머지 close는 실행안되게 된다.
                        pstmt.close();// 이것도 완벽하지 않다.
                        con.close();
                }catch(SQLException e){}
        }

Better Case :
        try {
                con = ...
                String allItemSql = "SELECT * FROM s_item i, s_cat s WHERE i.cat_no = s.cat_no and? s.cat_no = ?";
                .....
        }catch(SQLException e){}
        finally {//finally를 이용해서 무조건 모든 리소스를 반환토록 한다.
                if(rset != null){
                        try { //close시에도 exception이 발생할 수 있기 때문에 각각도 예외처리를 한다.
                                rset.close();
                        }catch(SQLException e){}
                }
                if(pstmt != null){
                        try {
                                pstmt.close();
                        }catch(SQLException e){}
                }
                if(con != null){
                        try{
                                con.close();
                        }catch(SQLException e){}
                }
        }




4. Connection은 직접 생성하지 않고 Factory패턴을 이용한 Connection pool을 이용한다.

Bad Case :
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        con = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:SID","student","student"); //실전에서는 이런방식으로는 절대 사용하지 않는다.

Better Case :
        con = ConnectionBroker.getConnection("jdbc/pool/Oracle");         // 위의 두 라인이 이 한 라인으로 처리된다. 실전에서는 이런식으로 사용한다.
                                                                        //ConnectionBroker는 Connection Pool에서 Connection을 얻어오는 클래스이다.

To Know The Truth And Free Myself My Routine


=====================================================
My schedule : www.google.com/calendar
My thought : sjlee.egloos.com
My picture : www.cyworld.com/lipsynch
My relation : through facebook
My e-mail : black*******@gmail.com

[탁현민의 사색동화]외모 지상주의 ‘아픈 곳’ 건드린 루저 논란 My Misc.

뭐, 틀린 말은 아니네~ㅎㅎㅎ
그런데,
실제 이런 사태와 여성들의 사고 방식이 만연한다고 해도,
입으로 공공연하게 대중방송에서 내뱉는 거랑,
단지 암묵적으로 생각만 하고 있는 거랑은 엄연히 다르잖아..

범죄자들도 생각만 하고 있으면, 별 문제가 되지 않는데..
그걸 행동으로 옮기니까, 문제가 되는거 아니겠어?
누구든, 지나가거나 주위에 있는 여자 보고 야한 생각 한번씩 다 해보잖아..
그걸 실제로 행동으로 옮기면 범죄가 되는 거고..
그걸 이성으로 컨트롤 해야 하는게 인간 아니,,
사람 아니겠어?

생각의 자유를 마음껏 누리는 건 아무도 뭐라하지 않지..
다만, 표현의 자유 측면에서는 좀 더 신중하고,
사회 윤리를 범하지 않는 범위에서 행동해야 하지 않겠어?



===================================================================
[탁현민의 사색동화]외모 지상주의 ‘아픈 곳’ 건드린 루저 논란

2009 12/01   위클리경향 852호

'180㎝ 이하 남성들이여, 루저 맞잖아?’
<미녀들의 수다>로 무척이나 시끄러운 한 주였다. 내용은 단순했다. 방송 프로그램에 출연한 어느 여대생이 “키 180㎝가 안 되는 남자들은 루저(looser)”라고 말한 것 때문이었다. 매번 그렇듯이 어떻게 공중파 방송에서 저따위 말도 안 되는 이야기를 대놓고 할 수 있느냐는 분노에서부터 그런 내용을 편집도 없이 버젓이 방송에 내보내는 제작자들이 한심하다고 질타하고, 자의였든 시켜서 했든 그러한 말을 거리낌 없이 쏟아내는 그 여대생의 몰지각을 탓하는 내용들이었다. 물론 이러한 내용들은 연이어 수백 개의 기사로 쏟아졌고, 언론은 그러한 내용을 확대 재생산하는 데 크게 기여했다.

한국 여성 69% “배우자 키 중요”
이 비상한 관심과 분노는 처음에는 출연한 여대생에게 맞춰졌다. 그의 신상기록과 개인정보가 파괴적으로 공유되기 시작했다. 그리고 곧이어 방송에 출연한 여대생의 눈물 나는 반성과 후회의 글이 올라왔다. 물론 이때까지 프로그램의 제작진은 뒷짐 지고 사태를 관망하는 여유를 잃지 않았다. 사건이 사태로 될 때쯤 이번에도 역시 ‘이거 마녀사냥이 아닌가’ 하는 몇몇의 자기반성에 이어 여대생의 인권에 대한 우려가 쏟아지기 시작했다. 이어 ‘루저’라는 발언이 강요된 발언이었는지 아닌지에 대한 공박이 있었고, 또 그러한 발언으로 실제 정신적 충격을 받았다는 몇몇은 KBS를 상대로 언론중재위원회를 통해 손해배상을 청구하기도 했다. 논란은 여대생에게서 제작진과 프로그램으로 확대됐다. 이 사태는 이제 방송사의 도덕성, 출연자의 인권, 피해자들의 권리주장으로 번져 또 하나의 아수라장이 됐다.

뭔가 하나 터지면 말을 보태는 것이 업이 된 처지이지만 사실 아수라장 한 편에 서는 일은 고역이다. 할 말과 안 할 말, 보탤 말과 빼도 될 말이 다 쏟아진 판에서 짐짓 모른 체하며 사건을 재구성하고 맥락과 함의를 찾는 모습은 마치 이미 훼손될 대로 훼손된 사건현장을 혼자서만 진지하고 조심스럽게 확인하는 덜 떨어진 수사관 같다는 생각이 들기 때문이다. 그러니 이 아수라장에서 발을 빼는 편이 가장 현명한 판단일 것이다. 애초부터 이건 그저 웃기는 데 환장한 예능프로그램이었고, 수다였고, 실수였다 치면 끝날 일이다. 그런데 그러고 말면 될 일인데 왜 이렇게 찜찜한 기분이 드는 것일까. 예능프로그램에서 상식 이하의 발언이 한두 번도 아니고, 출연진과 제작진의 실수라는 점도 명백한 마당에(그들이 정말 키 180㎝ 이하 남자들을 자극하기 위해 이 발언을 의도적으로 삽입하진 않았을 거라는 전제 아래) 그냥 넘기려는데 무언가 목구멍에 콱 걸린 듯한 이 기분. 이 기분의 정체는 무엇일까?

드러내지는 않지만 ‘보편적 인식’

 

 

유혜승
175㎝인 나로서는 원통 분통한 일이지만 이 사회에서 성공하는 남자가 되려면, 아니 적어도 패배자가 되지 않으려면 키가 180㎝ 정도는 되어 줘야 하는 것이 사실 아닐까. 지난 2007년 결혼정보업체 듀오에서 조사한 바에 따르면 ‘배우자의 키가 중요하다’고 대답한 일본 여성이 28.1%에 불과한 것에 반해 한국 여성의 경우 68.7%가 ‘중요하다’고 답했다고 한다.(한국일보 2009년 11월 13일) 어디 이뿐이랴. 한국사회의 외모지상주의는 논란의 여지없이 공감되는 현상이 아닐까? 오죽하면 수백 개의 병원이 있지만 압구정·청담에서는 모두 성형외과나 피부과밖에 없으니 다치지 않도록 조심하라는 말이 다 있겠는가. 매일처럼 TV에 나오는 연예인들은 자신들의 성형무용담을 자랑하고 그것이 버젓이 방송에 나오면 TV 앞 시청자들은 어디가 어떤 성형을 잘한다는 정보 찾기에 매진하는 모습, 이것이 오늘날 우리 사회의 현실이라는 것을 누가 부정할 수 있을까.

그러니 그 여대생의 발언은 하등 잘못된 것이 없다. ‘루저’라는 말의 의미가 사회적 패배자 또는 성공하기 어려운 사람이라는 함의를 지니고 있다면 더욱 그러하다. 이미 한국사회에서는 외모가 성공과 출세의 중요한 변수이고, 대중은 키 180㎝뿐만 아니라 코와 눈과 이 밖에 여러 미적 기준을 매스미디어를 통해 확인하는 이 세태가 어찌 그의 발언 때문이며 또 그 프로그램 때문이겠는가? 짐작컨대 이 프로그램의 제작진은 ‘루저’ 운운한 대목을 방송할 경우 문제가 있을지 없을지 고민했을 것이다. 그리고 편집 없이 방송했다는 것은 그게 그리 문제 있는 발언이 아니라고 생각했던 것으로 보인다.

문제가 이렇게까지 커질지 몰랐다고 한다면 제작진이 미숙한 탓일 테고, 이러한 국면이 제작진의 의도라면 차라리 위대한 방송이라 말하고 싶다. 그것은 ‘루저’ 대목을 그대로 방송한 것은 곧 우리 사회 구성원들이 지니고 있는 보편적 인식이나 드러내지는 않지만 잠재돼 있는 의식에 대한 문제 제기일 수도 있기 때문이다. 방송을 본 대중에게 ‘너희 모두 키 큰 남자가 키 작은 남자보다 좋잖아?’ ‘외모가 출세와 성공에 중요한 조건이라고 생각하잖아’ ‘외모도 분명히 능력이라고 믿고 있잖아’라는 도발적인 질문을 던지고 있는 것이다.

‘루저’ 소리에 발끈한 180㎝ 이하 남성들이여, 어쩌면 우리는 정말 ‘루저’이고 이러한 사실이 공중파를 통해 명백히 확인됐기 때문에 더욱 ‘지랄’하는 것은 아닌가?



<공연연출가·한양대 겸임교수>

Day by Day.. My Routine

Day by Day..

뭘하는 지도 모르게..
지나가는 구나~

아~~~~~
내 인생아~

2년 째.. My Work


2년째 나를 괴롭히고 있는..
똑같은 버그의 똑같은 에러~

잊을만하면 나오고, 잊을만하면 나오고..

no error in my head....

웹 이후의 세계 My Book



 
회사에서 점심시간에,
문득,,
내가 공부한 내용을 체계적으로 구체화 시키는게 필요하다는 생각이 들었다.
그래서,
즉시 교보 문고로 향했고,
전에 몇번을 망설이며, 책을 살지 고민했지만,
90% 정도의 신뢰감으로 '웹 이후의 세계' 책을 집어 들게 되었다.

지금 매우 흥미롭게 읽고 있다.

웹 이후의 세계란...

보다 거시적으로 꿈을 찾아 헤맬 수 있는,
무한의 공간이다..

내 커리어를 생각하고,
현재 나를 살 찌울 수 있는 유일한 공간이기도 하다..

이 책을 20번 이상 읽을 생각인데, 가능할까?..

 

들어가며

1장. 웹 2.0 그후, 해체와 생성의 미래

[미래를 위해 꼭 알아두어야 할 개념의 총론]
디지털 라이프, 삶을 프로그래밍하는 사람들
- 공평한 실현자
- 디지털 라이프, 세 가지 세계로의 되돌릴 수 없는 행진
- 삶의 운영 체제
서비스의 시대
- 서비스 경제 시대
- SaaS, 소프트웨어의 종언?
- 서비스 유행의 배경
- 서비스의 불안과 불만
- 소프트웨어와 서비스의 중용에서
- SaaS와 추억의 ASP
구름 저 너머의 신세계, 클라우드(Cloud Computing)가 뒤덮는 현실
- 새로운 사업의 새로운 시작
- 클라우드란?
- 클라우드와 데이터 센터와의 차이
- SaaS와 PaaS 그리고 플랫폼으로서의 클라우드
- 클라우드는 닷컴의 전유물일까? 클라우드와 엔터프라이즈
- 구름은 믿을 만큼 탄탄한가?
가상화(Virtualization), 컴퓨터가 꾸는 꿈
- 가상화의 등장 배경
- 서버는 하드웨어가 아닌 소프트웨어? 가상 머신 VM의 역사
- 가상화와의 첫 만남 그리고 이사 가기
- 리소스 독립 만세, 가상화의 또 다른 혜택들
- 가상화를 가능하게 하는 핵심 기술, 하이퍼바이저
- 가상화의 본질 : 추상화, 일반화, 모듈화
- 가상화의 최종 목표는 거버넌스
- 무엇이든 가상화해 버릴 테다!
구름의 미래
- 그들은 왜 구름 위로 올라갔나?
- 구름은 어떻게 흘러가나?
- 클라우드가 꿈꾸는 세계

2장. 회오리 속의 경제와 사회, 그리고 임박한 변화들

[삶과 비즈니스를 흔드는 변화들]
그린 IT의 본질
- IT에도 그린이 _ 그린 IT의 등장 배경
- 저탄소 IT의 길
- 그린 IT의 사회적 책임
(Special) 여러분의 기업은 얼마나 그린한가요? 그린 IT(Green IT) 셀프 측정
계의 경계에서 - 위치와 공간을 의식할 때
- 지역 정보와 매시업
- 소셜의 시대, 위치와 공간 정보의 역할
- 네트워크가 나를 감시할 때
(Special) u-시티
UX 시대의 RIA 전쟁사, 우리의 눈동자와 손끝을 지배하는 일
- 컴퓨터와 사람 사이, UX의 시대
- RIA, 웹 시대의 애플리케이션 탄생
- 웹의 레짐과 RIA의 플랫폼화
- 'X-인터넷'이란 이름의 솔루션
- 업무용 RIA, 기업도 RIA가 필요한 이유
- AJAX로 읽는 현실계와 이상계의 차이
- RIA의 쌍두마차, 어도비와 마이크로소프트
- RIA는 웹을 넘어서
- 장인과 플랫폼
(Special) RIA 플랫폼 선정 시 고려해야 할 일 5개조
미디어 신세계의 진실, UCC에서 IPTV까지
- 포맷 전쟁의 전리품, 코덱
- 웹 미디어의 두 가지 원가
- 원가 극복과 수익 창출의 노력들
- 스트리밍의 시대
- IPTV는 방송과 통신 융합의 완성인가?
- 미디어를 즐기는 세 가지 형태
- 디지털 TV의 진짜 얼굴
모바일, 무선, 폰 - 움직이는 제3의 창
- 범용성과 개방성, 폰의 진보 방향
- 위피 의무화의 촌극과 정부의 역할
- 폰, 클라우드와의 혼연일체
- 되돌아갈 수 없는 길, 스마트폰의 대중화
(Special) 스마트폰 대중화를 위한 3-O의 완성
- 새로운 판의 충격
- 폰과 온라인 플랫폼의 삼각 구도
- 웹을 정복하고, 웹을 넘어서
- 소통, 판단, 행동, 체험 그리고 효과
SOA? BPM? 엔터프라이즈 컴퓨팅의 한계와 과제
- 필연적 계약
- BPM, 업무를 짜는 서비스
- SOA의 우울
- 서비스의 적응과 생존
- 매시업, 이상계로부터 배우는 현실계
3장. 웹 주의 선언
[모든 이를 위한 웹과 인터넷의 철학]
웹, 인터넷 그리고 자생적 질서
- 웹, 자유의 시뮬레이터
- 자유주의 이상계의 숙제
- 대안으로서의 웹 자유주의
열린 사회와 그 적들
- 액티브X를 둘러싼 소동, 공인 인증 체제의 부조리
- 닫힌 망과 열린 기술
- 유심(USIM)과 IMEI
- 규제의 시대착오와 잃어버린 시간들
오픈의 경제학
- 오픈소스를 보는 시점
- '오픈'이라는 경제적 숙명

마치며 

링크 : http://www.yes24.com/24/goods/3433088 


Let me get this straight.. My English

Let me get this straight  이것을 확실히 해보자

Let me level with you 솔직히 말하자면

Let me put it this way 내 생각은 이래

Let me shop around 다른 가게에도 들러보겠어요

Let me show you a trick 쉽게 하는 법이 있지

Specify, point.

Specify ur dream.

Point ur tharrt evy day..

Finally, you'll achieve it..

Adobe Flex 3 with AIR ACE My Work

Adobe Flex 3 with AIR ACE

This is something I have been waiting for some time. Adobe Flex 3 with AIR ACE (Adobe Certified Expert) will be out for me.

Go Go Go Go ahead and get certified !!!


Are you Ken??


snulife  게시판에서 글 보다가, 재미있는 이미지 발견..ㅎㅎㅎ

중학교때 즐겨 하던 게임인데,
이런식으로 패러디가 가능하다니..ㅎㅎㅎ

흠.. My Routine

도대체 그 동안 뭘하고 살았는지..

블로그가 다 죽어 가잖니~ㅎㅎㅎㅎ

Flex 3 with AIR My Work

Exam Structure

1. Creating a User Interface (UI)

2. Flex System architecture and design

3. Programming Flex applications wit ActionScript

4. Interacting with data sources and servers

5. Using Flex in the Adobe Intergrated Runtime(AIR)

<!--[if !supportEmptyParas]--> <!--[endif]-->

1. Creating a User Interface (UI)

ㆍ Flex Application에서 사용되는 기본적인 UI Controls의 개념

ㆍ 각 UI Containers 들이 사용되는 시점과 목적

ㆍ API style, style sheets, filters and blends를 사용하여 디자인 바꾸기

ㆍ view states, transitions, effects를 사용하여 동적으로 변하는 디자인

ㆍ constraint-based layout에서 UI elements의 위치

ㆍ enhanced constraints에서 UI elements의 위치

ㆍ navigation container의 사용 (implements)

ㆍ list-based controls의 customize

2. Flex System architecture and design

ㆍ custom components의 사용과 생성

ㆍ data bindings를 사용하여 components 사이의 데이터 전송

ㆍ custome events를 작성하고, 제어하고, 적용하기

ㆍ Framework events 다루기

ㆍ Flex application에서 M(odel).V(iew).C(ontrol) 사이의 차이점

3. Programming Flex applications with ActionScript

ㆍ ActionScript class의 생성과 상속

ㆍ ActionScript interface의 조작.

ㆍ class / class members의 modifier의 접근 사용

ㆍ Under the purpose of and implement data transfer objects

ㆍ ActionScript의 accessor motheds 사용

ㆍ sort, filter, provide data를 위한 ArrayCollection의 사용

ㆍ data validation 사용

ㆍ E4X를 사용하여 XML data 다루기

4. Interacting with data sources and servers

ㆍ 간단한 LCDS(Live Cycle Data Service) 메시지의 조작과 data management

ㆍ 로컬 데이터 베이스에 접근 / 생성

ㆍ 로컬 데이터 베이스에서 Add, update, remove Records

ㆍ RPC 서비스의 사용으로 원격 데이터와 서비스 사호작용

ㆍ 서버에 파일 업로드

5. Using Flex in the Adobe Intergrated Runtime(AIR)

ㆍ 시나리오가 주어지면, AIR application 만들기

ㆍ 로컬 시스템에 파일과 폴더를 만들고 생성

ㆍ native window와 menu를 생성 / customize

ㆍ 데스크 탑에서 드래그 앤 드랍으로 데이터 추가

ㆍ 설치 / 삭제 / 업데이트

ㆍ Air security contexts의 개념

 

-----------------------------------------------------------------------------------------

 

---------------[펌 from extends Me ]-----------------------------------------------------

Adobe사에서는 플렉스 개발자들을 위한 일종의 자격시험을 마련하고 있습니다. 사실 플렉스에만 있는 시험은 아니고 포토샵, 플래시 등 거의 모든 Adobe 제품군에 있는 시험이지요. 이 자격증은 Adobe Certified Expert, 줄여서 ACE라고 불립니다. 플렉스 플랫폼 역시 이 자격증이 예전부터 있었고, Flex 3가 발표된 이후에는 시험 내용이 Flex 3와 AIR를 포괄하는 범위로 바뀌어서 Flex 3 with AIR라는 이름으로 시험을 치루고 있습니다.

이 자격증은 국내에서도 취득이 가능한 시험입니다. 물론 시험 문제나 취득기준등은 국제기준과 동일합니다. 실제로 Flex 2 ACE의 경우 국내에서도 취득하신 분들의 후기를 종종 볼 수 있었습니다. 아직 Flex 3 버전의 자격증을 취득하신 분의 후기는 보지 못했지만 곧 많은 분들이 취득하시겠지요. 그래서 이 포스팅에서는 Adobe 홈페이지에 공시된 자격시험에 관한 내용들을 정리해보도록 하겠습니다.

1. 자격증 개요
* 시험은 온라인으로 치뤄집니다. 집에서도 볼 수 있다는 말은 아니고, 지정된 시험장에서 인터넷을 통해 문제를 풀어서 제출하는 형태로 이루어집니다.
* 총 50문제가 출제되며 34문제 이상 맞추었을 경우 자격이 부여됩니다.
* 시험비용은 150달러 이며, 현재 80달러에 접수할 수 있습니다. (이 부분은 뒤에 다시)
* 시험장에 따라 다르지만 시험은 정기적이라기 보다는 거의 상설 시험에 가깝습니다. 편한 날짜에 맞춰서 시험을 볼 수 있습니다.
* 시험은 한글화 되지 않았으며, 영어로 봐야 합니다. Flex 2의 경우 한글화된 시험을 볼 수 있었지만 Flex 3의 경우 어도브 코리아에 문의해본 결과 별다른 한글화 계획은 없는 것으로 보입니다. Flex 2의 경우를 생각하면 언젠가는 한글화 될 수도 있겠지만요.
* 어도브 코리아에 문의해본 결과 자격증의 응시자, 합격률, 취득자수 등에 대한 정보는 공개할 수 없는 정보라고 하는군요. 아마 본사 방침이었던 것 같습니다. 확실한 건 아직 많지는 않다는 것이겠지요...?
* 공개된 문제를 살펴보면 시험의 전반적인 난이도는 어렵지 않습니다. 문제은행 형태이기 때문에 만약 덤프등이 공개된다면 SCJP 수준의 쉬운 시험이 될 가능성도 충분합니다. 하지만 다행히도 아직 덤프등은 공개되지 않았습니다. 인기있거나 유명한 자격증이 아닌 이상 근시일내에 덤프가 퍼져서 '플렉스가 뭔지는 모르겠지만 일단 나도 Flex 3 ACE' 이런 자격증 소지자가 늘어날 위험은 없어 보입니다. 덤프가 없다면 SCJP도 아주 만만한 시험이 아닌 만큼 Flex 3 자격증 역시 어느정도 Flex에 대한 기본지식이 있다는 것을, 지금은 증명해줄 수 있는 상태라고 생각됩니다. 자격증의 가치가 조금 올라가는 느낌이지요?

2. 시험 과목
(1) 유저 인터페이스 제작
* 유저 인터페이스 제작 파트는 총 11문제가 출제되며, 전체 파트 중 2번째로 비중이 높습니다.
- Flex 어플리케이션에서 사용되는 기본적인 UI 컨트롤의 구분
- UI 컨테이너들의 용도 및 사용시기
- syles, style sheets, filters, blends API를 사용한 L&F(Look & Feel)의 변경
- view states, transitions, effects를 사용한 어플리케이션의 동적 제어
- 제약 기반(constraint-based) 레이아웃을 사용한 UI 엘레멘트의 위치선정
- enhanced constraints를 이용한 UI 엘레멘트의 위치 선정
- 네비게이터 컨테이너를 사용한 어플리케이션 탐색 구조의 구현
- 리스트 기반 컨트롤의 커스터마이즈

(2) Flex 시스템 구조 및 디자인
* Flex 시스템 구조 및 디자인 파트는 총 9문제가 출제되며, 비중은 4번째입니다.
- 커스텀 컴포넌트의 제작과 사용
- 데이터 바인딩을 사용한 컴포넌트들간의 자료 교환
- 커스텀 이벤트의 제작, 핸들링, 디스패치
- 프레임워크 이벤트의 핸들링
- 플렉스 어플리케이션과 MVC(model, view, controller)

(3) 액션스크립트 프로그래밍
* 액션스크립트 프로그래밍은 총 12문제가 출제되며, 가장 비중이 높은 파트입니다.
- 액션스크립트 클래스의 정의와 확장(상속)
- 액션스크립트 인터페이스(Interface)의 구현
- 클래스와 클래스 멤버에 대한 접근제한자(access modifier)의 사용
- data transfer object의 구현과 사용목적
- 접근 메소드(accessor method)의 액션스크립트 구현
- ArrayCollection의 정렬, 필터링, 데이터 프로바이딩
- data validation의 구현
- E4X를 사용한 XML 데이터의 조작

(4) 데이터 소스 및 서버 사용
* 데이터 소스 및 서버 사용(네트워크 파트라고 생각하시면 편합니다.)는 8문제가 출제되며 가장 비중이 낮은 파트입니다.
- LCDS 메세징 및 데이터 관리의 구현
- 로컬 데이터베이스의 제작, 연결 및 정의
- 로컬 데이터베이스 레코드의 추가, 업데이트, 삭제
- RPC 서비스를 사용한 원격 데이터(remote data)와 서비스의 사용
- 서버로 파일 업로드

(5) AIR 어플리케이션의 작성
* AIR 어플리케이션 파트는 자격증의 버전이 올라가면서 새롭게 추가된 파트로, 10문제가 출제되며 비중은 3번째입니다.
- AIR 어플리케이션의 컴파일 및 릴리즈 빌드(release build)의 생성
- 로컬 파일시스템상에 파일 및 디렉토리의 생성과 삭제
- 네이티브 윈도우와 네이트브 메뉴의 생성과 사용
- 데스크탑 드래그&드랍 (어플리케이션 -> 데스크탑, 데스크탑 -> 어플리케이션)의 구현
- AIR 어플리케이션의 설치, 업데이트 ,삭제
- AIR 보안항목(security context)의 설명

3. 접수 및 시험
* 시험은 http://www.pearsonvue.com/adobe 에서 접수할 수 있습니다. 국내에서 보는 시험도 접수 가능합니다.
* 응시료는 원래 150달러 였지만 현재는 80달러에 접수가 가능합니다. 일종의 행사 같은 것이라서 언제 원래 가격으로 복귀할 지는 모르겠지만 꽤 오랫동안 80달러에 접수를 받고 있네요. 하지만 환율을 생각해보면 가슴이 아프군요. 탈락이라도 하면 무척 허무하겠어요.
* 시험장은 전국 각지의 인증된 시험기관에 있기 때문에 집에서 가까운 곳을 선택하셔서 시험을 보시면 될 것 같습니다. 아래는 서울에 존재하는 시험장의 목록입니다. 괄호는 시험을 볼 수 있는 요일입니다.
- 중앙정보처리학원 (월~토) : 강남역 2번출구, 561-1911
- 넷모어 정모통신학원 (월~금) : 홍대입구역 4번출구, 3141-4265
- 삼성SDS 멀티캠퍼스 (월~일) : 역삼역 1번출구, 5429-5160
- 소소리 IT캠퍼스 (월~금) 양재역 5번출구, 577-4111
- 바쉬텍 에듀케이션 (월~금) : 역삼역 1번출구, 2052-1347
- 월드피씨정비전문학원 (월,수,금) : 합정역 6번출구, 3141-1212
- 에프레인 (월~금) 양재역 1번출구, 525,6191

4. 시험의 준비
* 시험문제는 위에서 말했듯이 정확히 공개된 것은 거의 없습니다. 유형정도만 파악할 수 있을 뿐이지요. 때문에 비싼 환율로 인해 급격히 상승한 응시료를 낭비하지 않기 위해서는 최대한 많은 범위를 철저히 공부해서 한번에 따는 것이 좋겠지요.
* 전반적으로 공개된 문제들을 보면 약간 지엽적인 문제가 꽤 있기 때문에 플렉스 프로그래밍 경험이 없다면 쉽지 않을 수도 있을 것 같네요.
* 일반적으로 해외 포럼을 찾아봐도 추천서적은 어드보의 공식교재인 Training from Source - Adobe FLEX 3 (국내명 ADOBE FLEX 3 실전 트레이닝 북)이 많이 추천되는 것을 확인할 수 있습니다. 플렉스의 전반적인 모든 기능에 대해서 설명되어 있고 강의형태로 써져 있기 때문에 처음 시작하기에 좋은 책인 것 같습니다.
* 다른 책으로는 Flex/AIR Bible과 AIR in Action이 유용하게 참고될 수 있을 것 같습니다. Flex/AIR Bible은 예제중심이라기 보다는 개념 중심으로 쓰여져 있고, AIR in Action은 AIR 프로그래밍 파트의 시험범위를 모두 커버하고 있지요.
* 어도브 홈페이지에 공개된 예제문제를 한 번 풀어보겠습니다.

- Which HTTPService method call will invoke a service request?
A. load()
B. send()
C. initialized()
D. addEventListener()

HTTPService 클래스의 인스턴스에서 서비스 리퀘스트를 날리려면 어떤 메소드를 쓸까요? 물론 답은 B. send() 이지요. HTTPService를 써보신 분이라면 쉽게 대답할 수 있는 문제이지요. 물론 API 보고 쓰면 되지 뭐 이런걸 외우냐..라는 분에게는 좀 귀찮은 문제이겠지만요. 공개된 예제문제들은 이렇게 메소드나 속성, 혹은 문법을 물어보는 질문이 꽤 많았습니다.

- Which statement is true about installing AIR applications?
A. They can only be installed from the desktop.
B. They can only be installed from a web browser.
C. They must be installed using an SWF (Flash) file.
D. They can be installed from a web browser or the desktop

AIR 어플리케이션을 인스톨할 때 옳은 말은 어떤 것일까요? A. 데스크탑에서만 설치할 수 있다. B. 웹 브라우저 상에서만 설치할 수 있다.  C. SWF 파일을 통해서만 설치할 수 있다. D. 웹 브라우저와 데스크탑 양쪽에서 모두 설치할 수 있다. Badge라는 SWF 컴포넌트로 웹 브라우저상에서 AIR 어플리케이션을 설치할 수 있다는 것을 상기하면, A는 틀린 문장이 되겠지요. 하지만 AIR 런타임이 설치되어 있는 경우에는 .air 파일을 실행하는 것만으로도 설치가 가능하다는 것을 생각하면 B,C도 틀린 문장이 되고 답은 D가 되겠지요. 사실 영어만 읽어보더라도 D와 A,B는 서로 반대되는 문장이기 때문에 C는 답이 아니라고 제외할 수 있겠지요.

5. 결론
저도 아직 자격증 시험을 보지는 못했습니다. 위에서 말했듯이 응시료가 만만치 않기 때문에 (현재 환율로 11~12만원 정도 되는 군요.) 좀 더 확실히 공부하고 시험을 봐야겠다는 생각이거든요. 지금 따면 비교적 일찍 취득하는 것이 아닐까 싶기 때문에, 되도록(덤프가 퍼지기 전에) 빨리 취득해야 될 텐데 맘처럼 쉽지는 않군요. 언젠가는 다시 블로그에 합격했어요! 라고 글을 올릴 수 있었으면 좋겠습니다. 다른 분들도, 자격증 취득을 준비하시는 분이 있다면 좋은 결과 있기를 바라겠습니다


Choice

If over 900 points in this exam, then FSS.
Or not, BOK.


지금?? My Routine

지금??

난 잘 하고 있다..

누구 보다 열심히 살고 있다..

누구보다 준비된 미래가 있다...

누구 보다 의욕적인 삶을 살고 있다..

1 2 3 4 5 6 7 8 9 10 다음


메모장