반응형

안녕하세요 가야태자 @talkit 입니다.

JDBC 드라이버 다운로드

순수 자바

MySQL :: Download Connector/J

위 URL로 이동 합니다.

Platform independent 를 선택 합니다.

그리고 지금 저는 윈도우즈에서 작업 중이라 두번째 Download를 클릭 합니다. zip파일 형식을 내려 받습니다.

젤 밑에 보이시나요 No thanks, just start my download. 를 클릭 하십시오.

그러면 잘 다운로드가 될겁니다.

다운로드 받은 JDBC 드라이버 이클립스에 설정

우선 열어서 압축을 푸십시오.

압축 해제한 폴더로 이동해서,

mysql-connector-j-8.0.31.jar

위 파일을 복사합니다.

이클립스에 lib 폴더를 만들고 붙여넣기를 하십시오.

프로젝트명을 클릭하고 오른쪽을 눌러서 프로퍼티를 선택 하십시오.

그리고, Java 빌드 패스를 선택하십시오.

Libraries 탭으로 이동합니다.

오른쪽 Add JARs 를 클릭하십시오.

지금 현재 pom 파일이 있는 Maven 프로젝트기는 하지만, 이번에는 이런 방법도 있다고 알고 넘어 가는 차원에서 이렇게 하고 있습니다.

Maven을 이용한 MySQL 드라이버 다운로드

다른글을 적고 링크 하겠습니다. 

Java MySQL 접속하기

JAVA 는 JDBC라는 프레임워크를 통해서 데이터베이스에 접속합니다.
데이터베이스 드라이버와 서버 소프트 웨어 개발 버전이 있으면 얼마든지 집에서 해볼 수 있습니다.

JDBC Connection


Class.forName("com.mysql.jdbc.Driver");

MySQL 드라이버 로드

Connection con = DriverManager.getConnection("jdbc:mysql://주소:3306/데이터베이스", "아이디", "비밀번호");

MySQL 접속정보 셋팅

쿼리 해보기

쿼리 해보기는 쿼리 관련 설명하는 파일을 따로 적고 여기에 링크 예정입니다. ^^

전체소스코드

package com.tistory.talkit;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySQLExam {

    public static void main(String args[]) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://주소:3306/데이터베이스", "아이디", "비밀번호");
            
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("원하는 쿼리");
            while (rs.next())
                System.out.println(rs.getInt(1) + "  " + rs.getString(2) + "  " + rs.getString(3));
            con.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

#java #mysql #source

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

지난 번에 Hello World를 찍고 ^^ 당황 스럽긴 하겠지만 ㅋㅋㅋ 지금 하고 있는 프로젝트에서 암호화/복호화 관련 업무가 있어서 ^^ 적어 보도록 하겠습니다.

개요

우선, 암호화는 사람들이 모르도록 이상한 문자열 등으로 바꾸는 것을 이야기 합니다. 그런데 이게 보통은 해독할 수 있는 규칙이 있습니다. 그래야 공통으로 약속되어서 풀어 볼 수 있으니까요.

암호화는 또 단방향 암호화와 양 방향 암호화가 있습니다.

단방향 암호화는 그야말로 복호화가 없는 단방향의 암호화 입니다. 단, 암호화 할때마다 동일한 결과가 나옵니다.

양방향 암호화는 암호화와 복호화가 존재하는 암호화 기법입니다.

일반적으로 단방향 암호화는 비밀번호를 만드는데 쓰입니다. 비밀번호도 양방향 암호화를 해야 할 경우도 있지만, 일반적으로는 단방향 암호화를 진행 합니다.

양방향 암호화는 주로 문서교환을 위해서 사용 합니다. 또는 DB에 바로 저장 되면 안되는 개인 정보 등의 저장을 위해서 사용 합니다.

이번에 제가 만들어 본 암호화는 양방향 암호화 입니다. ^^

개인키, 공개키 생성 프로그램

--

양방향 암호화를 하려면, 개인키와 공개키가 필요 합니다. 이번에 암호화 려는 기법은 RSA 기법입니다. RSA는 다음에 알아보도록 하고 오늘은 JAVA 어떻게 코드를 작성하는지만 보겠습니다. ^^

package com.tistory.talkit;

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.util.Base64;

public class MakeKeyData {

    public static void main(String[] args) throws NoSuchAlgorithmException {
        // RSA로 암호화 하겠다. 
        KeyPairGenerator keyPairGenerator =
                KeyPairGenerator.getInstance("RSA");
        SecureRandom secureRandom = new SecureRandom();
         // Random 키를 이용해서 키페어 생성 준비
        keyPairGenerator.initialize(2048,secureRandom);

         // 키페어에 암호화된 내용을 담기 
        KeyPair pair = keyPairGenerator.generateKeyPair();

        // 공개키 획득
        PublicKey publicKey = pair.getPublic();

        // 공개키를 문자열로 출력
        String publicKeyString =
        Base64.getEncoder().encodeToString(publicKey.getEncoded());

        System.out.println("public key = "+ publicKeyString);

        // 개인키 획득
        PrivateKey privateKey = pair.getPrivate();
        // 개인키를 문자열로 출력
        String privateKeyString =
        Base64.getEncoder().encodeToString(privateKey.getEncoded());

        System.out.println("private key = "+ privateKeyString);

    }

}

위 코드를 만들어서 수행하면 아래와 같이 나옵니다.

public key = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAppicAq5Xn8+KZFQyP825E4aDPjFpyxhK5WATI4k3HllMxGo8FBOwoDl+lgVEIPEGgfD+t1cmBOpPkT7Mx54UQ+bSSU2T1wDR7QwyGV2iuxe6DCtQfVLuzYd6uxZO3pWoN93q9DkhzbLLOW1bLOieodnhMRq293uoKRWCP+Sp586SVPxwW/hWZjy57NIta1ew+JnRtHsg7reWOjyiCXORXdQvRoGfAz9ZC0aZBqopy84ZtMCK42y0Wprm0Oi4u3bwk2h2EkvGUOIRBHEly//M0Ma4RGlHWU7jpg0CiXcJAdq1DRMd6hzFVxUV4n23575NOKLwEirvqbgZXoaLJSo/1QIDAQAB
private key = MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCmmJwCrlefz4pkVDI/zbkThoM+MWnLGErlYBMjiTceWUzEajwUE7CgOX6WBUQg8QaB8P63VyYE6k+RPszHnhRD5tJJTZPXANHtDDIZXaK7F7oMK1B9Uu7Nh3q7Fk7elag33er0OSHNsss5bVss6J6h2eExGrb3e6gpFYI/5KnnzpJU/HBb+FZmPLns0i1rV7D4mdG0eyDut5Y6PKIJc5Fd1C9GgZ8DP1kLRpkGqinLzhm0wIrjbLRamubQ6Li7dvCTaHYSS8ZQ4hEEcSXL/8zQxrhEaUdZTuOmDQKJdwkB2rUNEx3qHMVXFRXifbfnvk04ovASKu+puBlehoslKj/VAgMBAAECggEAXoMdnvfBhkx7usd5anEPmmApfNMTrcCuXMrQkMx7lKAcySFrzAgPoBZ+FiYOrJGQm49ZMjIiw48abNAv5N9tp8f/bM6yHLu+XLkagwF4HKQtTFIWa8Ls73T4z8KsI+LLeEZR0RPIdaYFXSMJIsUlmbS96Nm7C1P/5q7pIc5cBcFg8uyFA13yHUUd5oJaal7RPVIfRQAUZZNj3crSVdQYCfdB42nokQ0z5kv3Qm3eu04Wqli/GyWIKRbxaffTlYvEjzjN4cxptJOPSn6zQlLXIStmwohQLjmx1UQ1cWJWqwF0910QleIJyR1iBKEtbvUORxEc0hv+a/2trwQP973gAQKBgQD55jq7ofNXSsnhyC9IJEyGDfvSRTtMEDwEk4pXQy6RKFrUN3/5AD40EBb2V0txhIwQxPD2YBCkSVXW/swMMA/QSM1lLLMkSqRkQhBucAO2RimgDNVXbzakFAmDgWSUjNz0HrSXJuGmKnErb42I+0yc+hd+Sl+WqRgWZ7SkUPLN1QKBgQCqqcS1XGKLoVyRnIYGivsA2/83RIJVx8Mjzofgg6Ekd5Q1uKMZFowAy3wbqMCRRW8+qufVmElzCMP79Pijh2nrv7QfEBrTbWdDgiMJz+Sq6JGHDyAiGv7v5j/nbl0JlgNKKmx2fiNpITBNQTQWPs3cqxArKz3j0Apy3HphlWiqAQKBgQC8Qbe/QDrMaPf7Ek6kP0wytPgfKK6KF7TPEcLnCCJdkhQSyRisIYW6vOA/hfW8t8i4nVSVljsTOHflNh/Lkq1nEGFDNdBip6R+LtKoD9SMDQEwpFpXut1j8ABWxDRcQF33veX39H+LKXAF88yhBAdsPm9SYX7vRcVyo3+PRbgUXQKBgACIqWnb0R8YsR5ve+fXVXOqPIEiwLmd91lMUxZ7suxXR2pnmnMApA14lXnMrFWH/xIWHMWJRWmLtHk8Se7RBJ7NKbYTKdJRfEo0xQFJ2jBCq/ndLT+OEBAWC0shCD94bag0u8QfHuM8TFdhhdUv+xremh1YdEgbJX04fVWCzyIBAoGBAM4g8t3KCd+fcwn2tQOENr6G4pztm5qvFw1rsXK46K2P0Bggf54f+nrVBHUh1lSVk1uLyzx8QF7Btl++GD64w7MOWPC40osCNaL7uHqwFx1rrZdsuF0EM9lBtvzxBUbQkOh5T8U1cBCHupdETXsKmgAbdoBXyp22Z3En/zpSz8kJ

저 두개의 키가 암호화와 복호화를 위한 키 입니다.

암호화 함수 만들기


공개키와 개인키를 이제 만들었으면 우선 코드를 개별적으로 설명 드리겠습니다.

우선, encode 함수를 만듭니다.

    public static String encode(String decodeText) throws GeneralSecurityException, IOException {

        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        SecureRandom secureRandom = new SecureRandom();

        keyPairGenerator.initialize(2048, secureRandom);

        PrivateKey privateKey = (PrivateKey) loadPrivateKey(privateKeyString1);

        Cipher encryptionCipher = Cipher.getInstance("RSA");
        encryptionCipher.init(Cipher.ENCRYPT_MODE, privateKey);
        String message = decodeText;
        byte[] encryptedMessage = encryptionCipher.doFinal(message.getBytes());
        String encryption = Base64.getEncoder().encodeToString(encryptedMessage);

        return encryption;

    }

암호화 함수는 내용은 복잡하지만, 사용은 편하도록 encode(복호화된 텍스트) 형식의 함수를 만들었습니다.

나머지는 루틴이라고 생각하시면 되고 ^^ 앞에서 만든키를 키로 변환해 주는 과정이 필요합니다.

위 코드 중에

        PrivateKey privateKey = (PrivateKey) loadPrivateKey(privateKeyString1);

이 부분입니다. 이부분은 함수로 다시 작성해서 사용했씁니다.

    // 문자열 공개키를 Key 로 변환
    public static Key loadPublicKey(String stored)
            throws GeneralSecurityException, IOException {
        byte[] data = Base64.getDecoder().decode((stored.getBytes()));
        X509EncodedKeySpec spec = new X509EncodedKeySpec(data);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        return fact.generatePublic(spec);
    }

    // 문자열 개인키를 Private Key로 변환
    public static PrivateKey loadPrivateKey(String key64)
            throws GeneralSecurityException {
        byte[] clear = Base64.getDecoder().decode((key64.getBytes()));
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(clear);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        PrivateKey priv = fact.generatePrivate(keySpec);
        Arrays.fill(clear, (byte) 0);
        return priv;
    }

개인키 공개키를 모두다 할 수 있도록 만들었습니다.

복호화 함수 만들기


다음으로 decode함수의 소스 코드 입니다.

     public static String decode(String encodeText) throws GeneralSecurityException, IOException {

        KeyPairGenerator keyPairGenerator =
                KeyPairGenerator.getInstance("RSA");
        SecureRandom secureRandom = new SecureRandom();

        keyPairGenerator.initialize(2048,secureRandom);

        PublicKey publicKey = (PublicKey) loadPublicKey(publicKeyString1);

        //Decrypt Hello world message
        Cipher decryptionCipher = Cipher.getInstance("RSA");
        decryptionCipher.init(Cipher.DECRYPT_MODE,publicKey);
        byte[] decryptedMessage =
        decryptionCipher.doFinal(Base64.getDecoder().decode(encodeText));
        String decryption = new String(decryptedMessage);
        //System.out.println("decrypted message = "+decryption);

        return decryption;

    }

위 코드는 암호화된 텍스트를 넣으면, 복호화된 텍스트를 리턴하도록 만들었습니다.

암호화와 마찬가지로 중간에 아래 코드가 중요하고 그 내용은 복호화에 넣어둔 코드를 확인 하십시오.


         PublicKey publicKey = (PublicKey) loadPublicKey(publicKeyString1);

메인 함수에서 불러서 암복호화 해보기



      public static void main(String[] args) throws GeneralSecurityException, IOException {
        String encodeText = encode("Hello World. Welcome to Korea.  * ");

        System.out.println(encodeText);

        System.out.println("encoded Text : " + encodeText);

        String decodeText = decode(encodeText);

        System.out.println("decoded Text : " + decodeText);


    }

Hello World. 으로 시작하는 문자열을 암호화 했다가 복후화 하는 코드 입니다.

실행하면

encoded Text : c8AcbCp4bIARJA3EOW9cf41pRIefVhCvCWyxwcgwifWaDK8AX9RJoe8dOgPzuvauCZZG5ibbOMtvEPh06DUwojFzMngCtT3T6VOyzWDA/CBFN52jXZzqw9M1K1v3vZJ+0uft86TomxZvbWdxv5XPo5keh0HyWyexv3U5c5cXypMwBTDECUiQkUPjZN1aUf7dHGQG0uC+KuyNEKK4NDMddPWoo0gzlWxsxIBkm7oLpuKEcXP9ThM16JQD8rhskJbXwbhUL39xfmDSti8Om9DcrU6KCDakKeT7i72yRjAD5B60Da28jT1DlzwS9p7IlfPXdlybjLKUMUcQsF1rJ1Xvww==
decoded Text : Hello World. Welcome to Korea.  *

위와 같이 잘 복호화 되어서 나옵니다.

전체소스코드



package com.tistory.talkit;

import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
import java.util.Base64;

import javax.crypto.Cipher;

public class RSAEncode {

    public static String publicKeyString1 = "만들어진 public key";

    public static String privateKeyString1 = "만들어진 private key";

    public static void main(String[] args) throws GeneralSecurityException, IOException {
        String encodeText = encode("Hello World. Welcome to Korea.  * ");

        System.out.println(encodeText);

        System.out.println("encoded Text : " + encodeText);

        String decodeText = decode(encodeText);

        System.out.println("decoded Text : " + decodeText);


    }

    public static String decode(String encodeText) throws GeneralSecurityException, IOException {

        KeyPairGenerator keyPairGenerator =
                KeyPairGenerator.getInstance("RSA");
        SecureRandom secureRandom = new SecureRandom();

        keyPairGenerator.initialize(2048,secureRandom);

        PublicKey publicKey = (PublicKey) loadPublicKey(publicKeyString1);

        //Decrypt Hello world message
        Cipher decryptionCipher = Cipher.getInstance("RSA");
        decryptionCipher.init(Cipher.DECRYPT_MODE,publicKey);
        byte[] decryptedMessage =
        decryptionCipher.doFinal(Base64.getDecoder().decode(encodeText));
        String decryption = new String(decryptedMessage);
        //System.out.println("decrypted message = "+decryption);

        return decryption;

    }

    public static String encode(String decodeText) throws GeneralSecurityException, IOException {

        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        SecureRandom secureRandom = new SecureRandom();

        keyPairGenerator.initialize(2048, secureRandom);

        PrivateKey privateKey = (PrivateKey) loadPrivateKey(privateKeyString1);

        Cipher encryptionCipher = Cipher.getInstance("RSA");
        encryptionCipher.init(Cipher.ENCRYPT_MODE, privateKey);
        String message = decodeText;
        byte[] encryptedMessage = encryptionCipher.doFinal(message.getBytes());
        String encryption = Base64.getEncoder().encodeToString(encryptedMessage);

        return encryption;

    }


    // 문자열 공개키를 Key 로 변환
    public static Key loadPublicKey(String stored)
            throws GeneralSecurityException, IOException {
        byte[] data = Base64.getDecoder().decode((stored.getBytes()));
        X509EncodedKeySpec spec = new X509EncodedKeySpec(data);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        return fact.generatePublic(spec);
    }

    // 문자열 개인키를 Private Key로 변환
    public static PrivateKey loadPrivateKey(String key64)
            throws GeneralSecurityException {
        byte[] clear = Base64.getDecoder().decode((key64.getBytes()));
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(clear);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        PrivateKey priv = fact.generatePrivate(keySpec);
        Arrays.fill(clear, (byte) 0);
        return priv;
    }

}

개인키와 공개키는  제가 만든 저위에 있는 것을 복사하셔도 되고, MakeKeyData를 이용해서 만드셔도 됩니다. 

그러나, 되도록이면 만들어서 사용하십시오. 공개된 개인키와 공개키를 사용하면 다음에 해킹 당했을 때 위험할 수 있습니다.

그리고, 주의할 점은 저 공개키와 개인키는 무조건 보관해두고 잃어버리시면 안됩니다. ^^

다음에 복호화가 안될꺼니까요.

감사합니다. 

 

반응형
반응형

제가 Java를 처음 시작할때는 eclipse가 아닌 EditPlus라는 편집기를 이용해서 Java개발을 한적도 있습니다. 

그런데, 요즘은 eclipse가 없으면 작업을 못합니다. 

저는 순수 eclipse도 사용하지만, 지난 글에서 이야기한 전자정부 프레임워크 개발 툴을 주로 사용 합니다. 

자바/Java 전자정부 표준프레임워크 개발환경 설치 및 실행하기 https://talkit.tistory.com/685

그래서 저 위에 있는 화면도 전자정부 프레임워크를 실행한 화면입니다.  ^^

오늘은 maven 프로젝트만 만들고 Hello World 만 찍어 보고 끝낼 생각 입니다. ^^

File >> New >> Maven Project 를 실행 하십시오

여기서는 Create a simple project(skip archetype selection)을 선택하고 Next를 누릅니다. 

위와 같이 Gropup 아이디는 가지고 있는 도메인이 있으시면 꺼꾸로 적으시고 ^^ 아니면 임의로 만드시면 됩니다. 

저는 일단 블로그 주소를 꺼꾸로 만들었습니다. ^^

Finish 를 클릭하시면 프로젝트가 생성 됩니다. 

위와 같이 나오면 잘 생성이 된 것입니다. 

JDK가 무쟈게 낮은 버전으로 제가 설정 했네요 ^^ 저건 다시 다음에 설정하고 일단 지금은 간단하게 Hello World만 찍을 꺼여서 실제 Maven 프로젝트의 중요 파일인 pom.xml 만 한번 살펴 보겠습니다. 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tistory.talkit</groupId>
  <artifactId>HelloWorld</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

위와 비슷하게 나와 있으면 잘 된 것입니다. ^^

왼쪽에 src/main/java를 클릭하시고 오른쪽 마우스 클릭하셔서 New 선택하시고, Package를 선택하심시오.

그리고 위와 같이 화면이 뜨면 저처럼 저렇게 입력하셔도 되고 본인의 고유 패키지를 입력하십시오.

이렇게 변경 되었을 꺼구요. 저기다가 Java 프로그램을 하나 만들겠습니다. 

여기서는 프로그램이 아니고 Class 입니다. 

패키지를 클릭하고 오른쪽 마우스 누르고, New 누르고, Class를 선택하십시오.

Class 명령은 HelloWorld로 했구요. 나머지는 그대로 두시고, public static void main(String[] args)를 체크하고, Finsih를 누릅니다. 

그러면 위와 같이 나올껍니다. 

저기 중간에 있는 코드 창에다가 우리가 작업하려고 하는 코드를 넣으면 됩니다. 

// TODO Auto-generated method stub

위 코드를 지우시고, 아래 코드로 변경해 보십시오.

		System.out.println("Hello World!!");

위 코드만 넣으시면 됩니다. 

패키지가 다를 수도 있지만, Full Code는 아래와 같습니다. 

package com.tistory.talkit;

public class HelloWorld {

	public static void main(String[] args) {
		
		System.out.println("Hello World!!");

	}

}

저걸 복사하시고 package 부분만 변경해주셔도 됩니다. ^^

그럼 이제 실행해보겠습니다. 

HelloWorld.java를 클릭하시고 오른쪽 마우스를 누른다음에 Run As >> Java Application 순으로 실행하시면 됩니다. 

하단의 콘솔창에 저희가 출력한 Hello World!! 가 출력 되었습니다. ^^

일단 이번에는 여기까지 하고, 다음에는 pom.xml에 필요한 라이버러리를 추가하고 패포를 위한 설정을 하는 등의 과정을 보여 드리겠습니다. 

감사합니다. 

 

반응형
반응형

안녕하세요 가야태자 @talkit 입니다.

개발환경 - 3.x 다운로드 | 표준프레임워크 포털 eGovFrame

처리중입니다. 잠시만 기다려주십시오.

www.egovframe.go.kr](https://www.egovframe.go.kr/home/sub.do?menuNo=41)

위 그림 처럼 보이게 하려면 위 링크에 접속하시면 됩니다.

4.대가 나오긴 했지만, 3.대로 설치 하겠습니다.

4.대는 좀 더 안정적이 되면, 진행하고 하겠습니다.

준비물


PC에 Java/JDK가 설치 되어 있다고 전제 합니다.

Java/JDK 설치는 Java 설치 글을 하나 적겠씁니다. ^^

다운로드


다운로드 URL은 개발환경 - 3.x 다운로드 | 표준프레임워크 포털 eGovFrame

위에서 말씀 드린대로 위와 같습니다.

윈도우즈 리눅스 맥OS 용도 있으니까 필요한 개발환경을 다운로드 하시면 됩니다.

저는 일단 오늘은 윈도우즈에 설치하고, 다음에 우분투에 한번 설치 해보겠습니다.

위와 같이 나오면 첨부파일을 클릭 합니다. OS 표시가 아무것도 안된 것이 윈도우즈용 입니다. ^^

오 정말 간편해 졌네요 ^^ .exe로 되어 있는 텍스트를 클릭하시고, 다운로드 버튼 한번 더 눌러 주시면 됩니다.

예전에는 T.T 로그인을 하고 했는데 요즘은 그냥 다운로드가 가능 하네요 ^^

저는 지금 다운로드 하고 있습니다.

설치하기


오 다운로드가 다 되었습니다. ^^

저는 c:\dev 폴더에 다운로드를 했기 때문에 폴더 안에 저 파일이 들어 있습니다.

실행 하시면 됩니다.

저는 V3가 파일에 대해서 주의로 판단을 했습니다. 하지만, 저기 그대로 두기를 선택하고 확인 하시면 됩니다. ^^

저는 보통 C 드라이브의 dev 폴더에 개발 환경을 구성 하기 때문에 저렇게 했고, 원하는 폴더로 서택하시면 됩니다.

저기서 압축 풀기를 선택하십시오.

저는 c:\dev에 설치 했기 때문에 잘 설치 되었습니다.

일단 설치는 여기까지 끝입니다.

전자정부 표준프레임워크 개발환경 실행


실행을 해보겠습니다. 저기 eclipse 폴더에 들어가셔서 eclipse.exe를 더블 클릭 하시면 됩니다. ^^

Java가 설치 되어 있지 않으면 위와 같이 실행이 안될껍니다. ^^

Java가 설치 되어 있고, 패스가 잘 걸려 있으면 그냥 실행 됩니다. 

처음 실행하면 아마 비슷하게 물을 것입니다. 

그런데 저는 c:\dev\ 개발환경 폴더 밑에다가 설치 하겠습니다. 

아까 압축을 푼 폴더를 선택하시고 Launch를 클릭하시면 됩니다. 

이제 실제로 전자정부 개발 환경이 설치 되고 잘 실행 되었습니다. 

저화면은 Welcome 옆에 X 버튼으로 닫아 주시면 됩니다. 

다음 부터 전자정부 프레임워크를 이용해서 제가 해보고 싶은걸 좀 해보겠습니다. 

감사합니다. 

 

반응형
반응형

8월의 마지막날 넉두에서 썼던 내용중에서 빅데이타와 인공 지능에 대한 글을 적어 봅니다. 


우선 트위터의 데이타를 수집하고 있습니다.


Java로 트위트 개발 사의 Stream API를 이용해서 수집하고 있습니다.


관심있는 주제가 포함되어 있을 때만 수집하도록 하고 있습니다.


9월 4일 부터 시작 했습니다.


구글에서 저렴한 VPS로 검색을 했을 때 나온 글들을 이용하여. VPS 구매했습니다.


저는 이 글을 http://dicer.tistory.com/235 을 참조했습니다. ^^;


지금은 1달라가 아니고 조금 더 됩니다. 1년에 15달라 입니다. 하지만, 10%할인 쿠폰을 이용해서 13.5 달라에 구매 하였습니다. 거의 1달라입니다. ^^;; 영어를 모르시면,  위글을 참조하시고, 영어가 조금 되시면, ^^;;


 

high performance ssd vps

위 배너를 누르셔서 RamNode에 가입 하시면 됩니다. 현재는 SSD10 이라는 코드를 넣으시면 10%가 할인이 됩니다.

저는 두대를 사용하고 있고, 다음달에 또한대를 더 구매할 생각입니다. ^^;;

한대는 15달라짜리 서비스를 사용하고 있구요.

한대는 월 5달라짜리를 사용하고 있습니다. 

데이타 베이스 서버로 사용하려고, 50GB 짜리를 구매했습니다.


그리고, yum을 이용해서 mysql과 apache php를 설치 했습니다.


마찬가지로 yum을 이용해서 jdk를 설치 했습니다.


5달라 자리 서버에 설치한 내용입니다.


1달라 짜리 서버에는 jdk만 yum으로 설치하고, 


기존에 만들어 둔 트위터 수집기를 업로드 했습니다 ^^;


그리고, 5달라짜리 서버에 mysql 스키마를 만들고,


수집을 시작 했습니다.


이게 첫날에 작업한 내용입니다. ^^;;


둘째 날에는 15달라 짜리 서버에다가 제가 만들어 둔 트위터 분석기를 깔았습니다.


데이터베이스에 있는 특정 글자를 읽어서 카운터를 구하는 프로그램 입니다. ^^;;


지금 현재까지 트위터 분석기와 수집기가 작업한 내용은 


트위터 분석 : 582,322/613,782


약 60만 여건의 트윗을 수집했고, 약 58만건을 제가 원하는 내용으로 분석을 했습니다.


분석 내용은 다음에 기회가 있으면 말씀 드리겠습니다.


다음 글에서는 인공지능을 위한 글을 포스팅 하겠습니다.



넉두리 ^^;;


뭔가 시작하니깐 다시 글이 써지는군요.


슬럼프를 국복하려면, 뭔가를 질러야 하나 봅니다. ^^;;




반응형
반응형




거의 매일 JSTL을 사용하다가 오랫만에 jsp에서 Spring에서 넘긴 값을 받아야 될 일이 생겼습니다.


그래서 찾아 봤는데 자료가 잘 안보이더라구요.


드디어 찾았습니다. ^^;;


http://okky.kr/article/176030


URL에서 발견 했습니다.


model.addAttribute("strYear", strYear1);


콘트롤러에서 위와 같이 넘겼습니다.


JSTL은 아래와 같이 받으시면 됩니다.


${strYear}



그런데 JSP에서는 위 URL에도 나와 있지만,


String strYear = (String) request.Attribute("strYear");


와 같이 받으시면 됩니다.


잊어 버리지 말자고 일단 적어 둡니다. ^^;;


그리고 로그인을 해야 되서 답변에 감사 인사를 못 드렸는데 ^^;;


gruaband 님 감사합니다.



반응형
반응형

다른 블로그를 매일 매일 뒤지는 것이 귀찮아서 ^^;;


일단, 여기에 기록해 둡니다.


Java의 풀소스를 제공하니 바로 써먹으시면 될 겁니다.


Eclipse에서 프로젝트 하나 만드시고 클래스 하나 만드셔서 붙여 넣기 하시면 되륻 합니다.


소스는 아래와 같습니다.


import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.Locale;



public class GetWeekOfDay {

public static void main(String args[] ) {

SimpleDateFormat formatter = new SimpleDateFormat ( "yyyy-MM-dd", Locale.KOREA );

Date currentTime = new Date ( );

Calendar c = Calendar.getInstance();

c.setTime(currentTime);

int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

System.out.println("해당 일자는? " + formatter.format(c.getTime()));

System.out.println("해당일자의 요일은? " + dayOfWeek);

}


}


위의 글상자에서 볼드로 되어 있는 부분이 해당 일자의 요일을 구하는 곳입니다.


요일은 1부터 7까지 나옵니다.


1 : 일요일

2 : 월요일

3 : 화요일

4 : 수요일

5 : 목요일

6 : 금요일

7 : 토요일


위와 같이응답이 나옵니다.


저 결과를 구해서 필요하게 사용하시는 것은 여러분의 몫입니다. ^^;;


감사하니다.

반응형
반응형
가능한 JDK / JRE  1.4.x 이상

TIP. GNU에서 제공하는 gcj는 이 기능을 제공하지 않는 듯 합니다.

WAS를 실행 하거나 java로 실행 할때

java -Djava.awt.headless=true

위 옵션을 주면

java에서 X윈도우즈 접속 없이 이미지 처리가 가능합니다.

다시는 삽질 금지 T.T
반응형

'JAVA' 카테고리의 다른 글

날짜의 요일 구하는 소스  (0) 2015.11.14
[JSP] 한글 문제 해결 하기  (0) 2010.01.19
[JAVA] jar 파일로 묶기  (0) 2009.10.21
JSP에서 Referer  (0) 2009.07.26
JSP 클라이언트 아이피 구하기  (0) 2009.07.26
반응형

request.getHeader("referer")

이 글은 스프링노트에서 작성되었습니다.

반응형
반응형

request.getRemoteAddr();

이 글은 스프링노트에서 작성되었습니다.

반응형

'JAVA' 카테고리의 다른 글

[JAVA] jar 파일로 묶기  (0) 2009.10.21
JSP에서 Referer  (0) 2009.07.26
jsp 에서 sessionid 구하기  (0) 2009.07.26
[JAVA] cos.jar로 파일 업로드 하기  (0) 2009.04.03
자바 프로젝트 필수 유틸리티  (0) 2009.03.28
반응형

String sessionID = (String)session.getId();

이 글은 스프링노트에서 작성되었습니다.

반응형
반응형
eclipse 로 자바 프로젝트를 하시는 분들은 다 시리라고 생각하시면

가금 자바 작업을 하는 저로서는 맨날 까먹어서 ^^;;

적어 둡니다.

우선 이클립스를 열구요

프로젝트를 선택하고

오른쪽 마우스를 클릭합니다.

그리고, 프로퍼티(properties)를 선택한 다음에

Java Compiler 을 선택 하십시오

그리고 다음 그림의 부분을 원하는 버젼으로 선택하시면 됩니다.


JDK는 아무버젼이나 까시구요

단, 상위버전은 불가능하고 현재 버전의 하위 버전만 가능합니다. ^^;;

반응형
반응형
우리집에는 방하나의 벽면에 가득히 IT  서적이 놓여 있습니다.

조금씩 제 글들에서 이야기를 했지만,

저는 SI 업체에서 PHP를 주 업무로 밥을 벌어 먹고는 사는 사람입니다.

그런데, 옛날에는 몇권의 PHP 책이 서가에 꽂혀 있었습니다.

그런데 그책 2권이 없어지고 난 뒤부터 

누군가를 빌려 드렸는데 돌려 봤지 못했습니다. T.T

제 서가에는 PHP 책이 늘어 나지를 않습니다. ^^;;

그런데, JAVA, C/C++, .net 책들은 쌓여 가고 있습니다.

그리고, 방법론에 관한 책

지속적인 통합과 관련된 책

GUN로 하는 프로그래밍 책들은 쌓여 가고 있습니다.

그리고 보니 제 블로그도 마찬가지 입니다.

제 블로그의 분류에 PHP와 관련된 카테고리는 없습니다.

단, 1호점에는 PHP와 관련된 카테고리도 있고 글들도 있습니다.

2호점과 talkit에서는 저 글들이 없네용 ^^;;

요즘 java, .net, c/c++ 등의 언어를 닥치는 대로 하고 있고,

회사에서는 지속적인 통합에 관심이 있어서

밑에 직원들을 괴롭히고 있구요.

아마도 java .net c/c++은 가끔 합니다 제가 하고 싶을때

참 요즘 java는 주 업무가 될 분위기를 띠고 있지만용 ^^;;

정신 없이 글을 썼네용..

참고로 제가 잘 안쓰는 언어는 잘 까먹더라구요.

그래서 java에 대한 지식을 차곡 차곡 쌓아 두면 다음에 많이 써먹을 수 있습니다.

php는 생각보다 먼저 코드를 치고 있습니다.

치고 있는 그 코드가 정확하구용 ^^;;

하지만, 자바는 아직도 설레입니다.

걱정도 되구용.

그래서 책도 많이 사게 되고 인터넷에서 답을 발견하면 그걸

블로그에 옮겨 적습니다.

그러면 다음에 그을을 들어와서 참고 하면 되니깐요 ^^;;

앞으로도 비슷하지 않을까 생갃합니다만

조만간 좀 정신을 차리면

PHP에 관한 글들도 작성해 볼 생각입니다. ^^;;

그럼 모두들 즐거운 하루 되세용.


반응형
반응형


아래글을 참고해주세용.

http://blog.outsider.ne.kr/214


반응형
반응형

자바 프로젝트 필수 유틸리티

 

자바 프로젝트 필수 유틸리티 - 10점
박재성 지음/한빛미디어

  원래 이책을 산 이유는 Maven이라는 툴에 대해서 알고 싶어서였습니다. 하지만, 사고 나서 보니 Maven 보다는 이책에서 지향하는 목표가 참 마음에 들었습니다.

  이책의 저자인 박재성님은 자바지기(http://www.javajigi.net)라는 웹사이트를 운영하고 계시는 분이니다. 저는 박재성님의 책을 몇권더 읽었습니다. Spring 과 스트럿츠에 관한 책입니다. 그 책들도 프로젝트 하는데 실질적으로 도움이 많이 되었습니다.

  아직 이책을 다 읽진 못했지만 이책에서 필요한 점들은 도입하고 있습니다. ^^;; 우선 이책을 읽기전에 제가 하는 프로젝트에 여러명의 개발자가 참여 하기 때문에 Subversion을 버전 관리툴로 사용하고 있었습니다. 프로젝트를 진행하다가 이 책을 사게 되었습니다. 우선 애자일(기민한) 방법론에 대한 이야기가 참 마음에 들었습니다. 그리고, 저자가 이야기 하는 이야기 중에 애자일 방법론을 완벽하게 국내에 도입하기는 어렵다 하지만, 필요한 부분만 잘 적용하면 좋은 프로젝트 방법론이 될 것이라는 이야기는 실감이 나는 이야기 입니다. 저도 프로젝트를 많이 해봤지만, 애자일 방법론을 적용하기는 무리가 좀 있다고 생각합니다. 하지만, 방법론에서 사용하는 여러가지는 참고하고 사용해볼만하다고 생각합니다.
 
  그리고 프로젝트 관리툴을 도입하는 이야기가 적혀 있습니다. 이책에서는 Trac에 대해서 이야기 하고 있지만 저는 이번 프로젝트를 하면서 Trac을 도입하고 싶었습니다. ^^;; 하지만, Trac까지는 설치를 했는데 Subversion 연동이 잘 되질 않아서 ^^;; Mantis라는 이슈관리툴로 만족하고 있습니다. 이 책에 보면 Trac과 eclipse의 연동 방법이 나옵니다. 그 부분은 Trac을 Mantis로만 바꿔서 사용하면 그대로 적용할 수 있습니다.

  아직 다 읽지 못했기 때문에 뒤쪽에 소스코드 관리라던지, 정작 필요한 Maven에 관한 내용은 건너 띄고 읽고 있습니다. ^^;;

  Java 프로젝트를 진행하는데 정말 도움이 되는 책입니다. ^^;; 이 책에서 읽은 내용과 인터넷에서 찾은 내용들은 다음 포스트에서 차근 차근 이야기를 풀어 볼까힙니다. ^^;;

http://talkit.tistory.com2009-03-28T01:00:020.31010
반응형
반응형
요즘 지속적인 통합 이란 주제에 대해 관심이 많아서

여러가지 글들을 읽고 있습니다.

우선, 최재훈님이 작년 내두룩 마소에 연재 하신

"실전 지속적인 통합"

이라는 글

위 글을 통해서 지속적인 통합이라는 주제를 알았습니다. ^^;;

우선 개발자들끼리 통합버전관리인 SVN은 옛날 부터 관심이 많아서

글도 쓰고 실제로 프로젝트에서 몇번 사용도 해봤습니다.

그런데, 다른 분들은 어떤지 모르겠지만, 저글에서 이야기 한 부분중에

소스코드만을 저는 저장소(Repositories)에 저장하고 공유할 목적으로 사용했습니다.

그런데, 이 글에서는

IDE(너무 클것은 말고 ^^), 통합 컴파일 툴, 개발자들끼리의 설정들을 함께 저장소에 저장하라고 되어 있었습니다.

읽고 나니 상당히 공감이 가는 이야기였습니다.

그리고, 지속적인 컴파일에 대해서 이야기하고 있습니다.

그런데 저 글에서 이야기는 윈도우즈 어플리케이션이어서 ^^;;

저는 주로 웹 프로젝트를 하고, PHP로 주로 밥을 먹고 살기 때문에 컴파일이란 개념이 없습니다. ^^;;

그런데 문제가, 요즘 자바로 프로젝트를 진행하고 있습니다. 개발자는 아니고  PM 역할인데 가끔 개발도 합니다. ^^;;

거기서 지금 밑에 개발자가 매일 밤에 돌아가면서 컴파일한것을 tomcat  서버에 디플로이 하고 있습니다.

그래서 이번에  maven이라는 툴을 도입할 계획입니다. ^^;;

그리고, 지속적통합의 다음 주제로 TDD(테스트 주도 개발방법, test driven development)를 이야기 하고 있습니다.

거기서는 UnitTest ++ 라는 라이버러리에 대해서 이야기 하고 있습니다..

지금까지 읽은 부분은 여기 까지 입니다. ^^;;

그래서, 저도 다음 사업이나 프로젝트를 할때 테스트 주도 개발방법을 도입하려고

phpunit이라는 것을 구해놓았고 여러 문서를 참고 하고 있습니다. ^^;;

열심히 공부한번 해봐야겠습니다.

이번 프로젝트에서 JAVA에 JUnit를 도입하고 싶지만 ^^;;

개발자와 함께 차근 차근 ^^;; 해볼 생각입니다. ^^;;

지금까지 지속적인 통합에 관한 두서 없는 글이었습니다. ^^;;




반응형
반응형

일반적인 에디터에서 Ctrl + G 키를 누르면

원하는 라인으로 이동합니다.

그런데 이클립스에서는 저키가 다른 역할을 합니다.

이클립스에서 원하는 라인(줄)로 이동하기는

Ctrl + L 입니다.

잊어버리지 말자 ^^; Ctrl + L


반응형

'JAVA' 카테고리의 다른 글

JSP에서 Referer  (0) 2009.07.26
JSP 클라이언트 아이피 구하기  (0) 2009.07.26
jsp 에서 sessionid 구하기  (0) 2009.07.26
[JAVA] cos.jar로 파일 업로드 하기  (0) 2009.04.03
자바 프로젝트 필수 유틸리티  (0) 2009.03.28
반응형
http://blog.naver.com/lbiryu?Redirect=Log&logNo=30036180630

서브 이클립스를 구해서 설치하는 문서는 위 문서를 참조 하시면 될것 같습니다.

오늘 이야기 하고자 하는 것은 서브 이클립스를 이용해서 실제로 Subversion 서버에 접속해서 다운 받는 이야기를 하고자 합니다.

그리고, 또한가지 리눅스에 서버버전을 설치하는 문서는 제가 작성한

[Linux] 버전관리(형상관리)툴 Subversion 설치 문서를 참조 하십시오 ^^;;

우선, subclipse를 설치 하셨으면

1. eclipse를 실행 하십시오

2. Window >> Show View >> Other >> SVN >> SVN Repositories 를 클릭하십시오

3. Window >> Preferences >> Team >> SVN 항목에 SVN Interface 의 Client를 Pure Java 로 시작하는 놈으로 변경하고 OK 를 누르십시오


3번은 SVN 인증 때문에 매우 중요합니다. ^^;;

4. 2번에서 리포지토리 화면을 여신 부분에서 오른쪽 마우스를 누르시고
New >> Respository Location... 을 선택 하십시오


5. Add SVN Respository 화면에서 Subversion 서버 주소를 적으십시오
Subversion 서버를 일반적으로 까신 경우는
svn://아이디@subversionserveraddress/저장소위치

예를들면)svn://kjh0523@yourdomain.com/dulihanacom

위와 같이 입력 하시면 됩니다.


그리고, ssh를 사용할 경우는
svn+ssh:// 와 같이 입력하시면 됩니다.

입력을 진행하고 나면 아래와 같이 아이디 패스워드를 묻는 사장가 나옵니다. 여기에 자신의 아이디/패스워드를 입력 하십시오. 그리고 밑에 Save Information을 클릭하십시오 ^^;;


위 정보를 입력하시고 나면

SVN에서 사용할 이름을 정하는 옵션이 나옵니다. 거기도 적당히 작성하십시오.


그러면 다시 레포지토리 화면으로 이동합니다.



펼쳐진 프로젝트 중에서 원하는 프로젝트를 클릭하고 오른쪽 마우스 누르셔서


CheckOut을 하시면 서버와 동일한 환경의 프로젝트를 사용하실 수 있습니다.


여기서 Finish 를 누르면 새로운 프로젝트가 생깁니다.

반응형

+ Recent posts