'My major/JAVA'에 해당되는 글 5건

  1. 2009/11/18 JAVA (redirection of standard output and error streams)
  2. 2009/11/13 JAVA Vector sorting
  3. 2009/07/08 C# 유용한 예제 모음
  4. 2009/06/23 자바 유용한 예제 모음
  5. 2009/04/30 자바 역컴파일 (6)
2009/11/18 04:49 My major/JAVA
 Redirection of the standard output and error streams to log files.

FileOutputStream fos = new FileOutputStream("out.stdout", true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
System.setOut(new PrintStream(bos, true));
fos = new FileOutputStream("error.stderr", true);
bos = new BufferedOutputStream(fos);
System.setErr(new PrintStream(bos, true));

posted by joyoungtae
2009/11/13 04:03 My major/JAVA
1. Create target class for sorting and define compareTo() function

class TargetClass implements Comparable{
  int id;
  String name;
  public TargetClass(int id, String name){
    id = id;
    name = name;
  }
  public int compareTo(Object o){
    TargetClass tc = (TargetClass)o;
    if(this.id > tc.id)
      return 1;
    else if(this.id == tc.id)
      return 0;
    else
      return -1;
  }
}

2. sort
public class mainClass{
  public static void main(String argv[]){
    Vector<TargetClass> vec = new Vector<TargetClass> ();
    for(int i=10; i>0; i--){
      TargetClass item = new TargetClass(i, "jo"+i);
      vec.add(item);
    }
    Collections.sort(vec);
  }
}
posted by joyoungtae
2009/07/08 03:51 My major/JAVA
1. 소켓 통신

 [ SERVER ]
 private int PORT = 4000;

IPAddress ip = IPAddress.Parse("210.000.000.000");
TcpListener listener = new TcpListener(ip, 4000);
listener.Start();
while(true){
            TcpClient client = listener.AcceptTcpClient();
            NetworkStream ns = client.GetStream();
            Console.WriteLine("accept the TCP connection request  ");
            Console.WriteLine("(" + DateTime.Now + ":" + ")");
            Runner rn = new Runner(ns);
            ThreadStart ts = new ThreadStart(rn.run);
            Thread th = new Thread(ts);
            th.Start();
}


2. JAVA의 StringTokenizer와 같은 역할을 할만한 루틴..

 String[] stringToken = SharedData.name.Split(new char[1]{'.'});
  String outputName = stringToken[0] + ".xls";


3. 엑셀파일 저장 및 열기

 object missingType = Type.Missing;
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = excelApp.Workbooks.Add(missingType);
Microsoft.Office.Interop.Excel.Worksheet flowWorksheet =                (Microsoft.Office.Interop.Excel.Worksheet)
excelBook.Worksheets.Add(missingType, missingType, missingType, missingType);
excelApp.Visible = false;
                for (int i = 0; i < flow.Length; i++)
                {
                    flowWorksheet.Cells[0, i] = det_id[i];
                    for (int k = 0; k < flow[i].Length; k++)
                    {
                        flowWorksheet.Cells[k + 2, i] = flow[i][k];
                    }
                }
excelBook.SaveAs(@outputName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, missingType, missingType , missingType, missingType, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missingType,
 missingType, missingType, missingType, missingType);


3. File dialog

 OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Filter = "VISSIM File(*.inp)|*.inp";
openDialog.Title = "Open Vissim file";

                if (openDialog.ShowDialog() == DialogResult.OK)
                {
                    //MessageBox.Show(openDialog.FileName);
                    vis = new Vissim();                        //create simulation
                    vis.LoadNet(openDialog.FileName, 0);
                }
                else
                {
                    mainForm.PrintMessage("File is not correct");
                    return;
                }





추가중..
posted by joyoungtae
2009/06/23 03:43 My major/JAVA

1. Textarea automatic scrolling
 JTextArea ta = new JTextArea;
 JScrollPane jSPane;

  ta.setEditable(false);
  ta.setLineWrap(true);
  jSPane = new JScrollPane(ta);
  jSPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
  jSPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
  jSPane.setViewportView(ta);
  jSPane.setWheelScrollingEnabled(true);

 public static void print(String str){
        ta.append(str + "\n");
        jSPane.getVerticalScrollBar().setValue(jSPane.getVerticalScrollBar().getMaximum());
    }


2. StringTokenizer
 StringTokenizer token = new StringTokenizer(strTmp, ":");
 while(token.hasMoreTokens){ 
   String strTmp = token.nextToken();
}


3. 자바에서 외부 도스용 프로그램 실행
밑의 예제는 도스용 프로그램인 qod-m.exe를 실행하되 파라미터로 QNET 디렉토리의 QNETA.QOD를 넘겨준것임.
 String[] command = {"cmd.exe", "/C", "qod-m.exe QNET\\QNETA.QOD"};
 Process p = Runtime.getRuntime().exec(command);
 p.waitFor();

4. 파일에서 줄단위로 읽어들이기
 BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("15-0.out")));
 while(true){
 String str = in.readLine();
 if(str == null)break;
 System.out.println(str);
}


추가중...
posted by joyoungtae
2009/04/30 06:50 My major/JAVA
가끔씩 jar로 묶어서 공개하고 실질 소스는 비공개로 해놓는 그런 프로그램들이있다.
JFreeChart 가 그러하다. 이 녀석은 자바를 이용해서 각종 그래프를 그려주는 라이브러리다. 내가 찾아본 바로는 가장 이쁘고 라이브러리도 다양하다. 그리고 프리다.
하지만 이녀석은 라이브러리 소스는 공개하는데 어떻게 사용하는지 Document를 돈받고 판다...ㅡㅡ;; 그리고 라이브러리 소스는 있는데 데모용 소스는 또 공개를 해놓지 않았다. 솔직히 Document 없고 데모 소스 없으면 저 라이브러리 어떻게 사용하는지 파악하는데 세월아 네월아다....
하지만 언제나 돌파구는 있는법, JFreeChart 에서 데모용 소스를 컴파일한 후 jar로 묶어서 실행할 수 있게 만들어놓은 파일을 제공한다. 자바가 무었인가?? 이진수로 컴파일 되서 돌아가는게 아니지 않는가. 당연히 역컴파일 해서 java 소스 뽑아내면된다..ㅋㅋ
위 jad.exe 녀석이 class 파일로부터 java 소스 뽑아내주는 녀석이다.
사용법은 간단하다.
커멘드 창에서 jad test.class 이렇게 jad 다음에 클래스 이름 넣어주면 test.jad 파일로 나온다. 확장자가 java가 아닌 jad로 나오니깐 주의

역컴파일 하면 완벽하게 복원이 되는것이 아니다. 복원된 소스를 보고 완벽하게 다시 제구성하는 것은 본인 몫이다. 아직 완벽히 복원해 주는 프로그램은 없다고 한다.
하지만 90%이상 소스를 복원해 놓은 상태기 때문에 에러도 그렇게 많이 나지 않는다.
대부분 다른 파일에 있는 참조 클래스 같은 녀석들 때문에 에러가 난다.
그리고 가끔 깨지는 부분도 생기는데 이런 부분은 진짜 소스 보고 자기가 알아서 고처야 한다..이건 운이다..ㅋㅋ

jfreechart 소스 및 데모 소스랑 사용자 가이드(돈받고 파는걸) 누가 웹에다 올려논걸 찾아냈다.
http://www.cs.bgu.ac.il/~piavka/freespace/Gui/jfree/
위 사이트로 가면 된다..ㅋㅋ

위 사이트에 데모용 소스가 있는것도 있고 없는 것도 있다. 없는건 위에서 한 방법으로 역컴파일을 통해 소스를 뽑아내는 수 밖에 없다.데모용 소스에 보면 CrossSectionDemo1 데모에 대한 데모용 소스가 없다. CrossSectionDemo1은 jfreechart를 이용해 contour 그래프를 보기 좋게 그려주는 녀석이다.
위 파일은 역컴파일해서 에러 수정한 소스이다. 역컴파일한 CrossSectionDemo1.java는 돌려본 결과 약간의 버그가 있다.
개발자의 실수인지 아니면 역컴파일 과정에서 난 버그인진 모르겠지만 단순하면서도 심각한 버그가 있다.  밑의 소스는 버그 수정 및 해당 데모에 자신의 데이터를 집어 넣어야 하는 부분에 표시를 해둔 소스이다.
필요한 분은 쓰세요..
posted by joyoungtae