2012. 5. 15. 11:26

웹 브라우저에서 ftp 접속 할 때 사용되는 URL 작성 방식


URL : ftp://[ID]:[password]@[FTP URL]:[PORT]/[File path]

ex> ftp://bbaeggar:0000@192.168.0.1:21/D


Posted by 짱가쟁이

블러킹 우선순위 큐를 만들어야 하는 상황이 발생. 직접 구현해야 하나 고민 하다 java concurrent 부분을 뒤적이니 좋은 놈이 있더라.

 PriorityBlockingQueue <- 임마를 기본으로 제공해주니.. 좋더란 말이쥐..

 간단한 사용 샘플을 올린다. 

PriorityBlockingJobQueue.java
- 별거 없이  PriorityBlockingQueue  임마를 싱글톤 패턴으로 래핑한 클래스

package queue;


import java.util.concurrent.PriorityBlockingQueue;


public class PriorityBlockingJobQueue {

final static PriorityBlockingJobQueue instance = new PriorityBlockingJobQueue();

PriorityBlockingQueue<PriorityJob> queue = new PriorityBlockingQueue<PriorityJob>(10, new CompareDescending());

public static PriorityBlockingJobQueue getInstance() {

return instance;

}

public void put(PriorityJob job){

queue.put(job);

}

public PriorityJob take() {

try {

return (PriorityJob) queue.take();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

}

 

CompareDescending.java
- 내림차순으로 정렬 클래스

package queue;


import java.util.Comparator;


public class CompareDescending implements Comparator<PriorityJob>{


@Override

public int compare(PriorityJob o1, PriorityJob o2) {

return o2.getPriority().compareTo(o1.getPriority());

}


}

 

PriorityJob.java
- 우선순위 Job 클래스

package queue;


public class PriorityJob {


String priority; // 우선순위

Object job; // Job

public String getPriority() {

return priority;

}

public void setPriority(String priority) {

this.priority = priority;

}

public Object getJob() {

return job;

}

public void setJob(Object job) {

this.job = job;

}

}


 

PriorityBlockingQueueTest.java
- 테스트 클래스

package queue;


public class PriorityBlockingQueueTest {


public void excute() {

PriorityJob job1 = new PriorityJob();

job1.setPriority("1");

job1.setJob("1");

PriorityBlockingJobQueue.getInstance().put(job1);

PriorityJob job2 = new PriorityJob();

job2.setPriority("0");

job2.setJob("0");

PriorityBlockingJobQueue.getInstance().put(job2);

PriorityJob job3 = new PriorityJob();

job3.setPriority("3");

job3.setJob("3");

PriorityBlockingJobQueue.getInstance().put(job3);

PriorityJob job4 = new PriorityJob();

job4.setPriority("1");

job4.setJob("1");

PriorityBlockingJobQueue.getInstance().put(job4);

PriorityJob job5 = new PriorityJob();

job5.setPriority("5");

job5.setJob("5");

PriorityBlockingJobQueue.getInstance().put(job5);

PriorityJob job6 = new PriorityJob();

job6.setPriority("0");

job6.setJob("0");

PriorityBlockingJobQueue.getInstance().put(job6);

while(true) {

System.out.println(PriorityBlockingJobQueue.getInstance().take().getJob());

}

}

public static void main(String[] args) {

new PriorityBlockingQueueTest().excute();

}

}

 

결과 출력

5

3

1

1

0

0

 

Posted by 짱가쟁이

오류
 - java.security.InvalidKeyException: Illegal key size



AES 에서 256비트 키를 사용할 시 키 사이즈가 맞지 않다는 오류가 발생하면 아래와 같이 해결하면 된다.

http://www.oracle.com/technetwork/java/javase/downloads/index.html

위 경로에서 JDK 버전에 맞는 파일을 다운로드 받아 압축을 풀면 2개의 파일이 있다.

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7
 

Local_policy.jar 

US_export_policy.jar


2개의 파일을 

경로 : %JAVA_HOME%\jre\lib\security 폴더에 복사

 위와 같이 파일을 해당 폴더에 복사하면 256비트 키를 사용할 수 있다.


 

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

Domain name to ip address  (0) 2012.05.15
[URL] - FTP 접속 URL  (0) 2012.05.15
[etc] - 테스트 유형  (0) 2010.12.21
[JavaService] - 자바 데몬 서비스 등록하자  (0) 2010.09.29
[jar] - JAR에 대해 모르고 있던 5가지 사항(??)  (0) 2010.08.31
Posted by 짱가쟁이

문자열 압축

public static byte[] compress(String src) throws IOException {

byte[] dataByte = src.getBytes();

Deflater deflater = new Deflater();

deflater.setLevel(Deflater.BEST_COMPRESSION);

deflater.setInput(dataByte);

deflater.finish();

ByteArrayOutputStream bao = new ByteArrayOutputStream(dataByte.length);

byte[] buf = new byte[1024];

while(!deflater.finished()) {

int compByte = deflater.deflate(buf);

bao.write(buf, 0, compByte);

}

bao.close();

deflater.end();

return bao.toByteArray();

}



문자열 압축 풀기

public static byte[] decompress(byte[] data) throws IOException, DataFormatException {

Inflater inflater = new Inflater();

inflater.setInput(data);

ByteArrayOutputStream bao = new ByteArrayOutputStream();

byte[] buf = new byte[1024];

while(!inflater.finished()) {

int compByte = inflater.inflate(buf);

bao.write(buf, 0, compByte);

}

bao.close();

inflater.end();


return bao.toByteArray();

}





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

[정규식] - 핸드폰 번호 포맷 변경  (0) 2013.01.02
[util] - 특정 디렉토리 파일 목록 출력하자.  (0) 2011.06.17
[InputStream] - String to InputStream  (1) 2010.10.13
[util] - byte to hex string  (0) 2010.09.07
[java] - replaceNull  (0) 2010.07.05
Posted by 짱가쟁이
산출물 작업 시 파일 정의서를 작성할 때 유용하게 사용할 수 있다. ㅋ

import java.io.File;

public class Test {

    public static void main(String[] args) {
        File dir = new File("D:\\test");
       
        File[] fileList = dir.listFiles();
       
        new Test().printFiles(fileList);
    } 

   public String getFileExtension(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
    }
   
    public void printFiles(File[] fileList){
       
        for(int i = 0;i<fileList.length;i++) {
            if(fileList[i].isDirectory()) {
                printFiles(fileList[i].listFiles());
            } else {
                if(getFileExtension(fileList[i].getName()).equals("java")
                        || getFileExtension(fileList[i].getName()).equals("xml")
                        || getFileExtension(fileList[i].getName()).equals("properties") ) {
                    System.out.println(fileList[i].getPath());
                }
            }       
        }
    }
}

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

[정규식] - 핸드폰 번호 포맷 변경  (0) 2013.01.02
[util] - 자바 문자열 압축/압축풀기  (0) 2011.11.14
[InputStream] - String to InputStream  (1) 2010.10.13
[util] - byte to hex string  (0) 2010.09.07
[java] - replaceNull  (0) 2010.07.05
Posted by 짱가쟁이

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jQuery.dPassword.js"></script>
<script type="text/javascript">
  $(document).ready( function() {
    $('input:password').dPassword();
  });
</script>


<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/jQuery.dPassword.js"></script>
<script type="text/javascript">
  $(document).ready( function() {
    $('input:password').dPassword({
      duration: 2000,
      prefix: 'my_'
    });
  });
</script>






Posted by 짱가쟁이

몇년만에 웹을 만지는 느낌은.. 너 누구니??

우선 서비스 서버 작업 후 API 테스트 페이지가 필요하더라.. 콘솔에서 테스트를 하면 편하고 좋기는 하지만.. 가끔 외부에서 모바일 기기로 테스트 하려니.. 좀 난감한 경우가 생기더라.. 어쩔수 없이 웹으로 작업하던중.. 예전에 들었던 jquery라는 넘을 사용하고 싶다라는 욕구 때문에 .. 쩌ㅃ~

우선 결론은 사용해보니.. "편하다"

Example.
Script
   function comboChange() {
        var options = {
                   success     : showInitResponse,
                   url              : "/path/test.action",
                   contentType : "application/x-www-form-urlencoded;charset=UTF-8",
                   type           : "post", /* get, post */
                   dataType    : "html" /* xml, html, script, json */
               };
         $('#INIT').ajaxSubmit(options);
    }

    // post-submit callback
    function showInitResponse(responseText, statusText)  {
           //submit후 작업부분
         document.getElementById('result').innerHTML = responseText;
    }

result 에 삽입하고 싶은 페이지 url을 설정하고 ajaxSubmit() 을 사용하면 땡.

Html
<s:form name="INIT" action="INIT" theme="simple" method="post">
        <s:select id="apiId" name="apiId" list="#{'INBO01':'INBO01', 'INTC02':'INTC02'}" onchange="javascript:comboChange();"></s:select>           
</s:form>

<div id="result"/>

콤보박스가 API명을 선택하면 해당 API 테스트 페이지를 삽입한다. 뭐.. 테스트 페이지는 Reflect를 사용해서 한방에 끝내기는 했지만... Reflect 단점상.. 가독성이 떨어진다. ㅡㅡ;;

우선.. 하도 많은 사이트를 참조해서 출처를 올리려니.. 기억이 가물가물..

Posted by 짱가쟁이
2010. 12. 21. 16:37

# 소프트웨어 테스트 유형
1. 단위 테스트
- 논리적인 작업 단위(클래스나 메서드 등)를 격리시켜 테스트
2. 통합 테스트
- 둘 이상의 애플리케이션 구성 단위를 묶어서 같이 테스트
3. 기능 테스트
- 애플리케이션의 특정 기능을 끝에서 끝까지 테스트하며, 보통 둘 이상의 애플리케이션 구성 단위가 관련된다.
4. 시스템 통합 테스트
- 둘 이상의 애플리케이션 간의 상호작용을 테스트
5. 성능 테스트
- 애플리케이션 혹은 시스템의 성능을 처리량, 부하, 메모리 사용량 등의 관점에서 테스트

위에 나열된 목록은 대표적인 것들만 간추린 것이며, 훨씬 만은 유형의 테스트가 존재한다고 한다. 쩌ㅃ~
Posted by 짱가쟁이
2010. 10. 27. 16:49

Swing framework 는 여러가지 컨트롤들을 가지고 있지만, 아쉽게도 Tree table 같이 개발에 필요한 컨트로를 가지고 있지 않다.

SwingX Project는 아래의 몇몇개의 유용한 컴포넌트를 제공한다.

  • Sorting, filtering, and highlighting for tables, trees, and lists
  • Find/search
  • Auto-completion
  • Login/authentication framework
  • TreeTable component
  • Collapsible panel component
  • Date picker component
  • Tip-of-the-Day component

SwingX Download

Swing은 멋없는 UI와 필요한 컴포넌트가 없다라는 편견으로 SWT를 주로 사용했지만.. 자바 진영에서 Swing에 투자를 좀 하는 듯 싶다. look and feel과 SwingX 등.. 재미난 것들이 많은 듯..


Posted by 짱가쟁이

String tmp = "<Coolbar><aa>한글</aa><bb>bb</bb></Coolbar>";
InputStream bai = new ByteArrayInputStream(tmp.toString().getBytes("UTF-8"));

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

[util] - 자바 문자열 압축/압축풀기  (0) 2011.11.14
[util] - 특정 디렉토리 파일 목록 출력하자.  (0) 2011.06.17
[util] - byte to hex string  (0) 2010.09.07
[java] - replaceNull  (0) 2010.07.05
[java] - File readLine  (2) 2010.07.01
Posted by 짱가쟁이