: [1] : [2] : [3] : [4] : [5] : [6] : [7] : [8] :

ArrayList 연습

개발/Java 2006/09/05 11:20

ArrayList라는걸 한번 써봤다
eclipse 3.2 , jdk 5.0 이어서 그런지
자동완성으로 class<Element>가 자동으로 붙었다!!

[CODE type="java"]
import java.util.ArrayList;
import java.util.ListIterator;

class Buddy{
[tab]protected String loginName = null;
[tab]protected String nickName = null;
[tab]public Buddy() {
[tab][tab]
[tab]}
[tab]public Buddy(String loginName, String nickName) {
[tab][tab]this.loginName = loginName;
[tab][tab]this.nickName = nickName;
[tab]}
[tab]public String toString(){
[tab][tab]return "LName:" + loginName + "/NName:" + nickName;
[tab]}
}

public class DStest {
[tab]
[tab]private ArrayList<Buddy> list = null;
[tab]
[tab]public DStest() {
[tab][tab]list = new ArrayList<Buddy>();
[tab][tab]
[tab]}
[tab]public void add(Buddy e)
[tab]{
[tab][tab]list.add(e);
[tab]}
[tab]public Buddy getBuddy(int idx){
[tab][tab]return list.get(idx);[tab][tab]
[tab]}
[tab]
[tab]
[tab]
[tab]public void sortList(){
[tab][tab]Buddy tmp;
[tab][tab]for(int i=0;i<list.size();i++){
[tab][tab][tab]for(int j=i;j<list.size();j++)
[tab][tab][tab][tab]if(list.get(i).nickName.compareTo(list.get(j).nickName)>0){
[tab][tab][tab][tab][tab]tmp = list.get(i);
[tab][tab][tab][tab][tab]list.set(i, list.get(j));
[tab][tab][tab][tab][tab]list.set(j, tmp);
[tab][tab][tab][tab]}
[tab][tab]}
[tab]}
[tab]
[tab]public void printList(){
[tab][tab]ListIterator<Buddy> li = list.listIterator();
[tab][tab]Buddy cur;
[tab][tab]while(li.hasNext()){
[tab][tab][tab]cur = li.next();
[tab][tab][tab]System.out.println(cur);[tab][tab][tab]
[tab][tab]}
[tab][tab]
[tab]}
[tab]
[tab]public static void main(String args[]){
[tab][tab]DStest test = new DStest();
[tab][tab]test.add(new Buddy("foobar","asdfefef"));
[tab][tab]test.add(new Buddy("thisff","dsfasdfasdf"));
[tab][tab]test.add(new Buddy("asdfaf","asdfae54ewf"));
[tab][tab]test.add(new Buddy("vzxvsd","zxvcxcerqer"));
[tab][tab]test.add(new Buddy("zxcvwe","asdfer2wera"));
[tab][tab]test.add(new Buddy("saerer","zvczxcadfwe"));
[tab][tab]test.add(new Buddy("xvas43","zxvcvawer3r"));
[tab][tab]test.add(new Buddy("cxvaer","cxvaerqwer2"));
[tab][tab]
[tab][tab]test.printList();
[tab][tab]System.out.println("========SORT=============");
[tab][tab]test.sortList();
[tab][tab]
[tab][tab]test.printList();
[tab][tab][tab]
[tab]}

}

[/HTML][/CODE]

실행결과

LName:foobar/NName:asdfefef
LName:thisff/NName:dsfasdfasdf
LName:asdfaf/NName:asdfae54ewf
LName:vzxvsd/NName:zxvcxcerqer
LName:zxcvwe/NName:asdfer2wera
LName:saerer/NName:zvczxcadfwe
LName:xvas43/NName:zxvcvawer3r
LName:cxvaer/NName:cxvaerqwer2
========SORT=============
LName:asdfaf/NName:asdfae54ewf
LName:foobar/NName:asdfefef
LName:zxcvwe/NName:asdfer2wera
LName:cxvaer/NName:cxvaerqwer2
LName:thisff/NName:dsfasdfasdf
LName:saerer/NName:zvczxcadfwe
LName:xvas43/NName:zxvcvawer3r
LName:vzxvsd/NName:zxvcxcerqer
2006/09/05 11:20 2006/09/05 11:20

[##_1C|cfile6.uf.1753A5544DC50E8C2EB28B.png|width="400" height="174" alt=""|_##]

디카나 메모리카드 등에 있는 사진파일(JPG)들을,
특정위치로 복사하는 프로그램이다.

캐논 포토브라우저인가 뭔가에 내장되있는
사진 복사하기 기능을 썼었는데
다 좋은데(?)
정작 포토브라우저 로딩시간이 엄청나게 느리다
(사진 모아둔 곳에서 시작하다보니 그 내용들을 다 표시하는데 시간이 걸린다··)

-_-a
반나절 삽질끝에 이 프로그램을 만들었다.

처음 실행시후에 Dc2Hdd.conf파일이 생성되는데
마지막 설정이 저장되므로,

프로그램 인자로 -f 를 주면 따로 묻지 않고,
바로 copy 해버리는 기능이 있다.
exe다운받기↓↓
[##_1L|2280692376.xxx||_##]

jar다운받기 ↓↓ [##_1L|cfile8.uf.174D17474DC50E8C27EC2A.jar||_##]

2006/08/21 20:42 2006/08/21 20:42

public UserManager getUserManager(String LoginName){
    try{
        ListIterator li = table.listIterator();
         UserTableElement ute;
         while(li.hasNext()){
             ute = (UserTableElement)li.next();
             if(ute.LoginName.equalsIgnoreCase(LoginName)); 
             return ute.userManager;
         }
    }catch (Exception e) {
        // TODO: handle exception
        return null;
    }
    return null;
}



덜덜덜
if문 뒤에 세미콜론(;)붙이는 실수를 해버렸다니..

이런 초보적인 실수를-┎

2006/08/04 19:52 2006/08/04 19:52

javadoc

개발/Java 2006/08/03 15:42
javadoc -d /java/doc *.java -subpackages <package1:package2>
2006/08/03 15:42 2006/08/03 15:42

수퍼클래스, 상속클래스 동시에 사용해보기

일종의 꼼수인건가 -ㅁ-

[CODE type="java"]

class superfoo{
[tab]protected String bar() {
[tab][tab]return "덜덜덜";
[tab]}
}

public class foo extends superfoo{
[tab]public String superbar(){
[tab][tab]return super.bar();[tab][tab]
[tab]}
[tab]public String bar(){
[tab][tab]return "후덜덜";
[tab]}
[tab]
[tab]public static void  print(String msg){
[tab][tab]System.out.println(msg);
[tab]}
[tab]
[tab]public static void main(String[] args){
[tab][tab]foo ppp = new foo();

[tab][tab]print(ppp.superbar());
[tab][tab]print(ppp.bar());
[tab]}
}

[/HTML][/CODE]

2006/08/03 13:39 2006/08/03 13:39

Genealogy of Common Languages
출처 : Robert W. Sebasta, Concept of Programming Language, 7th Ed., Addision Wesley, 2006.
2006/08/02 02:39 2006/08/02 02:39

CyChat.java

개발/삽질 2006/08/01 17:06

사이월드 채팅프로그램 분석
스샷입니당.

대화내용을 복사해서 위와같이 붙여넣으신후 실행버튼클릭
하면 다음과 같이 나옵니다.

아래는 소스코드입니다.

[CODE type="java"] import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import java.util.*;

public class CyChat extends JFrame implements ActionListener{
[tab]
[tab]JTextArea txt_input;
[tab]
[tab]JPanel jp = new JPanel();
[tab]
[tab]
[tab]
[tab]public void init(){

  [tab]
  [tab]txt_input = new JTextArea(30,50);
  [tab]jp.add(new JScrollPane(txt_input), BorderLayout.CENTER);
  [tab]setSize(800,600);
  [tab]
[tab]
  [tab]    [tab]
  [tab]//jp.add(txt_input);
  [tab]
  [tab]
  [tab]JButton cmd_ok = new JButton("실행");
  [tab]jp.add(cmd_ok,BorderLayout.EAST);
  [tab]
  [tab]cmd_ok.addActionListener(this);
  [tab]add(jp);
  [tab]
 
  [tab]
  [tab]
[tab]}
[tab]public void paint(Graphics g){
[tab][tab]super.paint(g);
[tab][tab]
[tab]}
[tab]

[tab]public void actionPerformed(ActionEvent e) {

[tab][tab]String res;
[tab][tab]res = txt_input.getText();
[tab][tab]
[tab][tab]txt_input.setText( parse(res));
[tab][tab]repaint();
[tab][tab]
[tab][tab]
[tab]}

[tab]public CyChat(){

[tab][tab]super("hi");
[tab][tab]init();
[tab][tab]setSize(640,640);
[tab][tab]setVisible(true);
[tab][tab]
[tab]}
[tab]

[tab]public String parse(String text){
[tab][tab]StringBuffer buf = new StringBuffer();

[tab][tab]//text = text.replaceAll("%u","0x%");
[tab][tab]text = text.replaceAll("%20"," ");
[tab][tab]String arText[] = text.split("\n");
[tab][tab]String tmp;
[tab][tab]
[tab][tab]
[tab]
[tab][tab]StringTokenizer token = new StringTokenizer(text,"%");
[tab][tab]tmp ="";
[tab][tab]while(token.hasMoreTokens()){
[tab][tab][tab]try{
[tab][tab][tab][tab]tmp = token.nextToken();
[tab][tab][tab][tab]
[tab][tab][tab][tab][tab]
[tab][tab][tab][tab][tab]int intval = 0;
[tab][tab][tab][tab][tab]char charval;
[tab][tab][tab][tab][tab]
[tab][tab][tab][tab][tab]intval = Integer.parseInt(tmp.substring(1).trim(),16);
[tab][tab][tab][tab][tab]charval = (char)intval;
[tab][tab][tab][tab][tab]buf.append(charval );

[tab][tab][tab]}
[tab][tab][tab]catch (NumberFormatException e) {
[tab][tab][tab][tab]buf.append(tmp);

[tab][tab][tab]}
[tab][tab]}
[tab][tab]buf.append("\n");
[tab][tab]
[tab]
[tab][tab]
[tab][tab]return buf.toString();
[tab]}
[tab]
  public static void main(String args[]){
[tab][tab]CyChat  cy = new CyChat();
  [tab]
[tab]
[tab][tab]
[tab][tab]cy.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
[tab][tab]
[tab]}

}
[/HTML][/CODE]
밑에 포스트에서 삽질한 결과물입니다-_-a
악용하지마세요
이 프로그램을 사용해서 일어나는 일에 대해서는 책임지지 않습니다.

2006/08/01 17:06 2006/08/01 17:06

싸이월드 클럽채팅중 IE Sataus Bar에 표시되는 내용이
'애플릿 irc started'라고 나오는것을 보고
'혹시 싸이채팅도 IRC를 사용하는건가???'라는 의문을 가지고 있었는데,
IRC Client로 접속을 해보기로 하고 삽질을 시작했다

-_-;;
일단 패킷을 캡쳐해보았다(Ethereal)

NICK 'm011가현
USER 15000981176 15000981176 15000981176 15000981176
:?? Y   Y    ?? ?? E  Ki? t?? )?芷X?a ??튡?  :cychat 800 * 0 0 NTLM,ANON 512 *
:?0? 6   6    ?? ??? E  (t? €??芷? )?X뱫@튏a ?鼈]  :?#2
?  ?   ?? ?? E 홬? t珥? )?芷X?a ??튡쬸   :cychat 800 * 1 0 NTLM,ANON 512 *
:cychat 001 'm011가현 :Welcome to the Microsoft Exchange Chat Service server 'm011가현
:cychat 002 'm011가현 :Your host is cychat, running version 5.5.2650
:cychat 003 'm011가현 :This server was created Jul 20 1999 at 07:26:59 PDT
:cychat 004 'm011가현 cychat 5.5.2650 aioxz abcdefhiklmnoprstuvxyz
:cychat 251 'm011가현 :There are 33 users and 0 invisible on 1 servers
:cychat 254 'm011가현 6 :channels formed
:cychat 255 'm011가현 :I have 33 clients and 0 servers
:cychat 265 'm011가현 :Current local users: 33 Max: 103
:cychat 266 'm011가현 :Current global users: 33 Max: 103
:cychat 422 'm011가현 :MOTD File is missing

irc 서버인것을 확인했다
더 분석을 해서 서버ip와 포트번호를 찾아냈다
접속한모습

대화방에 입장까지는 성공을 하였으나
보내지는건 잘 보내지는듯하나,
위와같이 대화내용이 깨져나오므로 -_-;;정상적인 대화가 불가능했다
------------------------------------------
몇시간동안 삽질끝에 저 대화내용을 분석하는 프로그램을 만들어서
다른 채널 사람들과 대화를 몇마디 나눠 본결과
그쪽 채널 사람들도 그닥 달가워하는것 같지 않더군요

뭐 암튼-_-
뭐든지 과하면 좋을게 없으니
악용하지 맙시다
2006/08/01 06:12 2006/08/01 06:12

[CODE type="java"]

public static void main(String args[]){

[tab]for(int i='ㄱ';i<='ㅎ';i++)
[tab]{
[tab][tab]System.out.print( (char)i);
[tab]}
}

[/HTML][/CODE]
위 코드의 실행 결과는?

무척이나 황당스러운 코드이겠지만
실행이 되는걸 목격했다-_-;

ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ

어쩌면 이와 비슷한 코드를 이따금씩 사용했을런지도 모른다
[CODE type="c"]
int i;
for(i='A';i<='Z';i++)
[tab]printf("%c",i);
}
[/HTML][/CODE]

자바에서 저렇게 한글로 써도 에러없이 실행이 되다니 ····
아마도 내부적으로 유니코드를 사용하기 때문이 아닐까 생각해본다.

2006/07/19 22:15 2006/07/19 22:15

conf reader

개발/Java 2006/07/19 13:54
[CODE type="java"]
if(data.canRead()){
[tab]try {
[tab][tab]
[tab][tab]String line;
[tab][tab]String item, value;
[tab][tab]Scanner sc = new Scanner(data);
[tab][tab]
[tab][tab]int idx;
[tab][tab]
[tab][tab]while(sc.hasNextLine()){
[tab][tab][tab]line = sc.nextLine();
[tab][tab][tab]if(line.trim().startsWith("#"))
[tab][tab][tab][tab]continue;
[tab][tab][tab]idx = line.indexOf('=');
[tab][tab][tab][tab][tab][tab][tab][tab][tab]
[tab][tab][tab]item = line.substring(0,idx).trim();
[tab][tab][tab]value = line.substring(idx+1).trim();
[tab][tab][tab]
[tab][tab]}
[tab][tab]
[tab][tab]
[tab]} catch (FileNotFoundException e) {
[tab][tab]
[tab][tab]e.printStackTrace();
[tab]}
[tab]
}
}[/HTML][/CODE]
2006/07/19 13:54 2006/07/19 13:54

: [1] : [2] : [3] : [4] : [5] : [6] : [7] : [8] :