메지지 박스 요넘도 자주 사용 안하는 관계로 매번 사용할 때 마다 검색을 해야 한다능..

Example
JOptionPane.showMessageDialog(메시지박스가 보여질 컴포넌트, "메시지");

JOptionPane <- 요넘은 여러개의 메시지 창을 가지고 있음.. 알아서 잘 찾아 사용하면 됨
Posted by 짱가쟁이

가끔 문서를 제대로 읽지 않아서 삽질하는 경우가 있기는 하지만 이번엔 정말 대박인듯..

swing은 thread 에 안전하지 않다는 문구는 여기 저기 돌아 댕기고.. api 내에 설명까지 하고 있지만.. Swing을 자주 사용하지 않을 뿐더러.. 테스트용 어플만 만들다 보니 이런 실수가 발생되는 듯.

우선은 데이터 추출하는 Thread 에서 아이템을 차례대로 JList에 삽입함과 동시에 마지막 아이템을 select 하고 싶고, 스크롤을 마지막으로 보내고 싶다는 단순한 생각이 이렇게 삽질하게 만들줄은 꿈에도 생각못 함. 쩌ㅃ~

우선은 스크롤을 마지막으로 보내는 ensureIndexIsVisible() 요넘을 Thread 에서 사용하면 exception 이 발생된다. 뭐 이때 사용하라고 있는 넘이 SwingUtilities.invokeLater 요넘인건 기초중에 기초인데.. 왜 자꾸 까먹고 실수 하는 건지.. ㅡㅡ;;

Example
public void run() {
..............................
jList.setListData(v);
jList..setSelectedIndex(v.size()-1); // 마지막 아이템 select 하자

 SwingUtilities.invokeLater(new Runnable() {  // Thread safety 하게 만들자..
        public void run() {
            jList.ensureIndexIsVisible(jList.getSelectedIndex());
        }
});
}

위 샘플 코드를 보면 쓰레드에 안전하지 않은 넘을 쓰레드에 안전하게 만들어.. race condition 을 해결한다.

ps.
다음번에도 같은 실수를 반복할까? 머릿속의 지우개가 결정할 문제일 듯 쩌ㅃ~

'java > swing' 카테고리의 다른 글

[swing] - SwingX  (0) 2010.10.27
[swing] - 메시지 박스  (0) 2010.07.19
[swing] - look and feel  (0) 2010.06.30
[swing] - JFileChooser 사용하자  (0) 2010.06.30
[swing] - JTableHeader 값 중앙에 배치하기  (0) 2010.06.30
Posted by 짱가쟁이

요넘.. 갈수록 땡깡이 심해진다. ㅋ

그나마 잘나온 사진 몇장은 건진듯.. 못생겨가지고 ㅎㅎ

'주아 > 사진' 카테고리의 다른 글

[주아] - 백일사진 추가  (0) 2010.08.03
[주아] - 백일  (3) 2010.07.31
[주아] -  (0) 2010.07.18
[주아] - 성실한 아빠  (0) 2010.07.18
[주아]  (0) 2010.07.18
Posted by 짱가쟁이
2010. 7. 18. 23:17

'주아 > 사진' 카테고리의 다른 글

[주아] - 백일  (3) 2010.07.31
[주아] - 땡깡쟁이  (0) 2010.07.19
[주아] - 성실한 아빠  (0) 2010.07.18
[주아]  (0) 2010.07.18
[주아] - 슬슬 돼지가..  (0) 2010.07.18
Posted by 짱가쟁이

내가 우유를 먹여야 잘먹음 ㅎㅎ

'주아 > 사진' 카테고리의 다른 글

[주아] - 땡깡쟁이  (0) 2010.07.19
[주아] -  (0) 2010.07.18
[주아]  (0) 2010.07.18
[주아] - 슬슬 돼지가..  (0) 2010.07.18
[주아] - 쪽쪽이~  (0) 2010.06.30
Posted by 짱가쟁이
2010. 7. 18. 21:37

슬슬 땡깡쟁이로 변신중~

'주아 > 사진' 카테고리의 다른 글

[주아] -  (0) 2010.07.18
[주아] - 성실한 아빠  (0) 2010.07.18
[주아] - 슬슬 돼지가..  (0) 2010.07.18
[주아] - 쪽쪽이~  (0) 2010.06.30
[주아] - 잘나온 사진만 ㅋㅋ  (0) 2010.06.30
Posted by 짱가쟁이

점점 돼지가 되어 가는 주아씨~~

'주아 > 사진' 카테고리의 다른 글

[주아] -  (0) 2010.07.18
[주아] - 성실한 아빠  (0) 2010.07.18
[주아]  (0) 2010.07.18
[주아] - 쪽쪽이~  (0) 2010.06.30
[주아] - 잘나온 사진만 ㅋㅋ  (0) 2010.06.30
Posted by 짱가쟁이

wipi 2.0 표준 api 를 보면 IODevice 라는 넘이 존재한다. 이넘을 사용해서 smart card(usim) 에 read/write 할 수 있다.

connect
- IODevice 클래스를 사용해서 chip에 connect 하고 ATR 값을 읽어온다.
/**
     * Connect 하면 ATR 값을 Chip에서 읽을 수 있다.
     *
     * @throws IOException
     */
    public static void connect() throws IOException {       
        byte bAtr[] = Util.byteSet(50, (byte)0x20);
       
        if(iod == null) {
            try {
                iod = new IODevice("1ChipCard", 0, bAtr);
            } catch (IOException e) {
                close();
                System.out.println("[OpCard Connect Exception] - " + e);   
                throw e;
            } catch (Exception e) {
                close();
                System.out.println("[OpCard Connect Exception] - " + e);   
                throw new IOException("Conect Error!");
            }
            atr = Util.byteArr2HexaStr(Util.byteTrim(bAtr));   
        }       
       
        System.out.println("[Debug] - OpCard Connect Success!"); 
        System.out.println("[Debug] ATR - " + atr); 
    }       

apdu send
- chip에 apdu 명령을 보낸다.
/**
     *
     * @param cmd (cls, ins, p1, p2, lc , data, le)
     * @return
     * @throws IOException
     */
    public static String send(byte[] cmd) throws IOException {       
        String szBuf = null;
        int ret = 0;
        byte buf[] = new byte[255];
       
        if(iod != null) {
            try {
                iod.write(cmd);
                ret = iod.read(buf);                       
            } catch (IOException e) {
                close();
                System.out.println("[OpCard send Exception] - " + e);   
                throw e;
            } catch (Exception e) {
                close();
                System.out.println("[OpCard send Exception] - " + e);   
                throw new IOException("Send Error!");
            }
        }
       
        szBuf = Util.toString(buf, 0, ret);  // byte -> Hex String 변환
        System.out.println("[Debug] ret - " + ret); 
        System.out.println("[Debug] buf - " + szBuf); 
       
        return szBuf.trim();
    }

close
- connection 종료
public static void close() {       
       
        if (iod != null) {
            try {
                iod.close();
                iod = null;
            } catch (IOException e) {
                iod = null;
                System.out.println("[OpCard Close Exception] - " + e);   
            } catch (Exception e) {
                iod = null;
                System.out.println("[OpCard close Exception] - " + e);   
            }
        }    
        System.out.println("[Debug] - OpCard Close Success!"); 
    }

흠... 위 코드는 SKT wipi 폰에서 테스트 됨.
KT는 뭐.. 공개하면 안될듯 ㅋ


'java > smart card' 카테고리의 다른 글

[smart card] - smartcardio 사용하기(2)  (3) 2010.06.29
[smart card] - smartcardio 사용하기(1)  (0) 2010.06.29
Posted by 짱가쟁이
Data source explorer 에 새로운 connect 을 설정하자.



New 선택하면 Connection Profile이 나오며, 해당 DBMS를 선택하면 된다. 여기서 참고할거는 국산 DBMS나 하위 버전의 DBMS는 목록에 존재하지 않는다. 이때는 걱정하지 말고. Generic JDBC를 선택하면 된다.



해당 DBMS를 선택하고 Name 을 적당히 적고 Next를 누르면, Specify a Driver and Connection Details 화면이 나온다. 뭐 여기에 적당히 DBMS 계정 정보를 작성하고 Test Connection으로 Ping 테스트가 Success 떨어지면 된다.



위 화면을 보면 빨간 동그라미가 보인다. 저곳을 클릭하면 Specify a Driver Template and Definition Name 화면이 나오며, JDBC 드라이버 설정 및 계정 정보를 작성할 수 있다.

상세히 이미지를 떠가면서 글쓰는건 좀 귀찮은 짓이고, 내 한계는 여기까지. 나머지는 알아서 찾아보면서 하면 될 듯.

나 같이 여러개의 DBMS를 사용하느라 고생하는 개발자가 있으면 참고하면 좋을 듯 싶다. 열공합시다.

'eclipse' 카테고리의 다른 글

[helios] - 64bit 에 SVN 설치하기  (0) 2010.12.24
[eclipse] - wsdl 시각화?  (0) 2010.08.31
[eclipse] - Data Source Explorer 사용하자 (1)  (0) 2010.07.16
Posted by 짱가쟁이
이번 프로젝트는 altibase, cubrid, oracle, sql server, my sql 등 다양한 DBMS를 사용하게 되었다. 많은 넘들을 사용하려고 하니.. 매번 클라이언트 프로그램을 설치하는 것도 귀찮고.. 피씨만 더 느려지는 듯 싶어.. 여기저기 찾아보니.. 이클립스에서 재미난 plug-in을 제공하더라..

해당 DBMS에 맞는 jdbc 드라이버만 있으면 클라이언트 프로그램을 설치하지 않고도 테이블 스키마를 쉽게 볼 수 있고 쿼리를 쉽게 테스트 할 수 있어, 많이 유용하다.


위 그림을 보면 여러개의 DBMS를 설정하게 되며, SQL Scrapbook 을 이용해서 쿼리를 테스트 할 수 있다. 기본적으로 이클립스를 사용하고 있고, 사용해봤다면 특별히 어려움을 느끼지 않을듯 싶다.



위 그림은 실제로 쿼리를 실행한 결과를 보여준다.



'eclipse' 카테고리의 다른 글

[helios] - 64bit 에 SVN 설치하기  (0) 2010.12.24
[eclipse] - wsdl 시각화?  (0) 2010.08.31
[eclipse] - Data Source Explorer 사용하자 (2)  (0) 2010.07.16
Posted by 짱가쟁이