http://bugs.sun.com/bugdatabase/

Posted by 빨강토끼
,

http://bangganji.tistory.com/77


http://planmaster.tistory.com/161

Posted by 빨강토끼
,

http://www.readysystem.co.kr/ready/bbs/board.php?bo_table=tech_solaris&wr_id=94&sfl=&stx=&sst=wr_datetime&sod=desc&sop=and&page=8

Posted by 빨강토끼
,

http://blog.naver.com/PostView.nhn?blogId=tyboss&logNo=70033321734&redirect=Dlog&widgetTypeCall=true


http://sangu12.egloos.com/2784067


http://blog.naver.com/PostView.nhn?blogId=sneri&logNo=110018379120&redirect=Dlog&widgetTypeCall=true


http://suyou.tistory.com/16

Posted by 빨강토끼
,

http://hckim.tistory.com/108


http://tinywolf.tistory.com/103


http://omen666.tistory.com/40


http://fly32.tistory.com/438


http://ssiso.net/cafe/club/club1/board1/content.php?board_code=javaStudy|javaTuning&idx=7401&club=javaStudy&cp=1&cb=1&search=&search_word=


http://donzbox.tistory.com/150



Posted by 빨강토끼
,

SELECT A.SEGMENT_NAME,
              ROUND(SUM(A.BYTES)/1024/1024) "SIZE_MB",
              A.SEGMENT_TYPE
FROM DBA_SEGMENTS A,
            DBA_TABLES B
WHERE A.SEGMENT_NAME = B.TABLE_NAME
      AND A.SEGMENT_TYPE IN ('TABLE','TABLE PARTITION')
      AND A.OWNER = '유저아이디'
GROUP BY A.SEGMENT_NAME, A.SEGMENT_TYPE
ORDER BY 2 DESC;

Posted by 빨강토끼
,

http://blog.kangwoo.kr/58


http://javacan.tistory.com/124


http://namoda.springnote.com/pages/568469


http://xrath.com/javase/ko/6/docs/ko/api/java/util/concurrent/Executors.html


http://blog.naver.com/PostView.nhn?blogId=minis24&logNo=80152375114


http://blog.naver.com/PostView.nhn?blogId=seban21&logNo=70111658316&categoryNo=12&viewDate=&currentPage=1&listtype=0


http://ismydream.tistory.com/46 (어렵다, 책을 사서 봐야겠다)


JVM은 모든 스레드가 종료되기 전에는 종료되지 않고 대기하기 때문에 Executor를 제대로 종료시키지 않으면 JVM 자체가 종료되지 않고 대기하기도 합니다.

Posted by 빨강토끼
,

RSA 암호화를 사용하게 되었습니다.

앞글에서 언급했드시 seed, des , 등 이것저것 다 사용하는군요.ㅎㅎㅎ


지금까지 그랬드시

"이론, 배경지식, 그런거 벌써 검색을 통해 다 이해했으니

(혹은 개발시간도 별로 없고 바쁘니깐 그냥 소스를 알려달라!)"


하시는 분을위해 기본 소스를 먼저 공개하겠습니다.


import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;
import javax.crypto.Cipher;
public class TestRsa
{
 public static void main( String [] args )
 {
  try
  {
   // RSA 공개키/개인키를 생성한다.
   KeyPairGenerator clsKeyPairGenerator = KeyPairGenerator.getInstance("RSA");
   clsKeyPairGenerator.initialize(2048);
  
   KeyPair clsKeyPair = clsKeyPairGenerator.genKeyPair();
   Key clsPublicKey = clsKeyPair.getPublic();
   Key clsPrivateKey = clsKeyPair.getPrivate();
   KeyFactory fact = KeyFactory.getInstance("RSA");
   RSAPublicKeySpec clsPublicKeySpec = fact.getKeySpec( clsPublicKey, RSAPublicKeySpec.class);
   RSAPrivateKeySpec clsPrivateKeySpec = fact.getKeySpec( clsPrivateKey, RSAPrivateKeySpec.class);
   System.out.println( "public key modulus(" + clsPublicKeySpec.getModulus( ) + ") exponent(" + clsPublicKeySpec.getPublicExponent( ) + ")" );
   System.out.println( "private key modulus(" + clsPrivateKeySpec.getModulus( ) + ") exponent(" + clsPrivateKeySpec.getPrivateExponent( ) + ")" );
  
   // 암호화 한다.
   String strPinNumber = "1234567890";
  
   Cipher clsCipher = Cipher.getInstance("RSA");
   clsCipher.init( Cipher.ENCRYPT_MODE, clsPublicKey );
    byte[] arrCipherData = clsCipher.doFinal( strPinNumber.getBytes( ) );
    String strCipher = new String( arrCipherData );
    System.out.println( "cipher(" + strCipher + ")" );
   
    // 복호화 한다.
    clsCipher.init( Cipher.DECRYPT_MODE, clsPrivateKey );
    byte[] arrData = clsCipher.doFinal( arrCipherData );
   
    String strResult = new String( arrData );
    System.out.println( "result(" + strResult + ")" );
  }
  catch( Exception e )
  {
  
  }
 }
}


위와 같습니다.

그런데 문제는 실제 필드에서는 이렇게 사용하지 않죠.ㅎㅎㅎ

이유는 서버와 클라이언트간에 통신을 하는데

위의 소스는 그냥 로컬에서 스스로 인코딩하고 디코딩하는 로직입니다.

당연히 서버와 클라이언트간에 키공유 이슈는 빠져있습니다.


"그래 그래 당연하지 . 그러니깐 긴말하지 말고 당장 소스를 내놔라! 바빠죽겠다."


머 패킷통신으로 주거니 받거니 하는건 설명하지 않겠습니다.

결국 cipher 로 암호화하기 위해서는 publicKey 가 필요한데 파일에 저정되어있던 디비에 저장되어있던 하던 아니면 통신으로 받던 바이트배열형식으로 암호화기가 되어있다면 이것을 publiKey로 바꿔야합니다.

그래야 init을 하니깐요. private 도 마찮가기겠지요.


publicKey를 만드는 방법은


KeyFactory fac = KeyFactory.getInstance("RSA");
X509EncodedKeySpec x509Spec = new X509EncodedKeySpec(key); // key 가 바로 byte 배열
PublicKey publicKey = fac.generatePublic(x509Spec);


privateKey를 만드는 방법은


KeyFactory fac = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(key);
PrivateKey privateKey = fac.generatePrivate(keySpec);


이상입니다. 끝!

Posted by 빨강토끼
,

DES 암호화나 Base64 에 대한 설명은 하지않겠습니다.(구글이나 네이버 검색하세요. ^^ )

CBC 와 PKCS7 에 대한 설명은 http://blog.cjred.net/141 를 참고하세요.



Posted by 빨강토끼
,

어제 저에게 제목과 같은 일이 벌어졌습니다.

하나의 SVN에 여러개의 프로젝트를 등록해서 사용하고 있고

PC에서는 GIT를 사용하고 있었습니다.

여러 프로젝트를 작업하다가

그중 하나의 프로젝트를 commit 후 SVN 에 DCOMMIT을 했는데

중간에 간간히 뜨던 팝업을 그동안 그냥 무심코 Yes 를 클릭했었는데

무심코 마지막으로 뜨던 팝업에 No를 클릭했더니

commit 하지 않았던 프로젝트의 소스가 원래대로(commit 했던 상태) 돌아와버린것입니다.

우째 이런일이....ㅜㅜ;


그래서 정리해봤습니다.

작업한 사본이 명확하지 않습니다. 변경된 사항을 숨길까요?


No를 클릭하면 DCOMMIT 은 진행되지 않습니다.

Yes 를 누르면 DCOMMIT이 이루어지는데 그중간에 보면 commit 하지 않은 다른 소스들이 원래대로 돌아와있는 것을

확인할수있습니다. (후덜덜한 상태입니다....)





DCOMMIT 을 마치고 Close 버튼을 누르면



DCOMMIT 전에 숨겨놓은 변경사항을 다시 돌릴까요?

여기서 반드시 Yes 를 클릭해야됩니다.

No 를 선택하는 순간...

지옥의 문이 열릴겁니다. (아~ 디아블로 3 하고 싶다.)


(추가) 숨겨놓은 변경사항들을 다시 살리는 법이 있습니다.

마우스오른쪽버튼을 누르면 Stash save, Stash Pop, Stash List 라고 있습니다.

이곳에서 Stash List 를 확인후에 Stash Pop 을 이용하여 복구할 수 있습니다.^^


그리고 만일 DCOMMIT 하지 않고 commit 만 한 상태로

다른 프로젝트를 commit 하고 DCOMMIT 하면 기존에 commit 했던 부분도 같이 DCOMMIT 됩니다.

어떻게 생각하면 당연한 일이지만,

혹시 DCOMMIT 을 원하지 않았던 부분도 같이 DCOMMIT 되는 결과가 나오는 것이므로 주의 하세요.



Posted by 빨강토끼
,