Programming/JAVA2014. 4. 15. 15:18

1. 기존 parameterType="String" 파라미터 한개로 처리


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(String userId);
}


UserInfoMapper.xml

<select id="getUserInfo" parametertype="String" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
</select>

UserInfoService.java

String userId = "user_id_value";
userInfo = userInfoMapper.getUserInfo(userId);

※ 단일 parameterType 로 String userId값 넣음


2.  parameterType HashMap을 이용해서 여러개 넣기


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(HashMap<String, Object> map);
}

UserInfoMapper.xml

<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
AND
    state = #{state}
</select>

UserInfoService.java

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("userId", "user_id_value");
map.put("state", "state_value");
userInfo = userInfoMapper.getUserInfo(map);


3. 2번과 비슷하지만 기존 userInfo 도메인 이용


UserInfoMapper.java

public interface UserInfoMapper {
    public UserInfo getUserInfo(HashMap<String, Object> map);
}

UserInfoMapper.xml

<select id="getUserInfo" parametertype="hashmap" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{user.userId}
AND
    state = #{user.state}
</select>

UserInfoService.java

UserInfo userInfo = new UserInfo();
userInfo.setUserId("user_id_value");
userInfo.setState("state_value");

HashMap<String, Object> map = new HashMap<String, Object>();
map.put("user", userInfo);

userInfo = userInfoMapper.getUserInfo(map);

4. Param 이용


UserInfoMapper.java
public interface UserInfoMapper {
    public UserInfo getUserInfo(@Param("userId") String userId, @Param("state") int state);
}
UserInfoMapper.xml
<select id="getUserInfo" resultmap="UserInfoResultMap">
SELECT
    id,
    user_id,
    state
FROM
    UserInfo
WHERE
    user_id = #{userId}
AND
    state = #{state}
</select>
UserInfoService.java
String userid ="user_id_value";
int state = 0;
userInfo = userInfoMapper.getUserInfo(String userid,int state);


Posted by 시니^^
Programming/Etc2014. 4. 11. 18:58

1. 알고리즘 특징과 설명(PHP기준)

DES 

전통적인 DES 알고리즘으로 키의 길이가 작아 비교적 보안에 취약하다. 상수 MCRYPT_DES를 사용한다. 

3DES/Triple DES 

DES의 변형 판이다. 유효 키 길이는 112비트이다. 상수 MCRYPT_3DES를 사용한다. 

CAST-128 

캐나다에서 설계된 알고리즘으로 128비트 키와 64비트 블럭을 가진다. 상수 MCRYPT_CAST_128을 사용한다. 

CAST-256 

CAST-128의 확장 판으로 알고리즘으로 256비트 키와 128비트 블럭을 가진다. 상수 MCRYPT_CAST_256을 사용한다. 

XTEA 

128비트 키와 64비트 브럭을 가진다. 상수 MCRYPT_XTEA를 사용한다. 

3-WAY 

96비트 키와 블럭을 가진다. 상수 MCRYPT_THREEWAY를 사용한다. 

SKIPJACK 

미국 NSA에서 조건부 암호화 표준으로 설계한 알고리즘이지만 표준화되지 못했다. mcryp에서 추가 라이브러리를 이용해 접근할 수 있으며 80비트 키를 가진다. 상수 MCRYPT_SKIPJACK를 사용한다. 

BLOWFISH 

DES를 개선한 알고리즘으로 최대 448비트 길이의 키를 사용할 수 있다. 상수 MCRYPT_BLOWFISH를 사용한다. 

TWOFISH 

보안성이 높고 융통성이 있다. 128, 192, 256비트 키를 지원한다. 상수 MCRYPT_TWOFISH를 사용한다. 

LOKI97 

128, 192, 256비트 길이의 키를 이용한다. 상수 MCRYPT_LOKI97를 사용한다. 

RC2 

블럭 크기를 64비트이며 키는 8에서 1024비트이다. 오래된 알고리즘으로 16비트 컴퓨터에 적당하다. 상수 MCRYPT_RC2를 사용한다. 

ARCFOUR/RC4 

RC4는 RSADSL의 상표이므로 mcrypt는 RC4 알고리즘을 지원하지 않지만 ARCFOUR와 호환된다. 스트림 기반의 암호문과 최대 2048 비트 키를 지원한다. 상수 MCRYPT_ARCFOUR를 사용한다. 

RIJNDAEL 

가변적인 길의 블럭 암호문과 키를 가진다. 상수 MCRYPT_RIJNDAEL_128, MCRYPT_RIJNDAEL_192, MCRYPT_RIJNDAEL_256을 사용한다. 

SERPENT 

128비트 블럭 암호문으로 DES보다 빠르다. 상수 MCRYPT_SERPENT를 사용한다. 

IDEA 

64비트 블럭과 128비트 키를 사용한다. 상수 MCRYPT_IDEA를 사용한다. 

ENIGMA/CRYPT 

하나의 원통을 가진 암호화 기계를 기반으로 해서 보안성이 낮다. 상수 MCRYPT_CRYPT를 사용한다. 

GOST 

256비트 키와 64비트 블럭을 가진다. 상수 MCRYPT_GOST를 사용한다. 

SAFER 

64비트, 128비트 키를 지원하는 빠르고 안전한 알고리즘이다. 상수 MCRYPT_SAFER64, MCRYPT_SAFER128을 사용한다. 

SAFER+ 

SAFER 알고리즘의 확장판으로 128, 196, 256비트 키를 지원한다. 상수 MCRYPT_SAFERPLUS를 사용한다


2. PHP 모듈정보

MCRYPT_3DES

MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x only)

MCRYPT_ARCFOUR (libmcrypt > 2.4.x only)

MCRYPT_BLOWFISH

MCRYPT_CAST_128

MCRYPT_CAST_256

MCRYPT_CRYPT

MCRYPT_DES

MCRYPT_DES_COMPAT (libmcrypt 2.2.x only)

MCRYPT_ENIGMA (libmcrypt > 2.4.x only, alias for MCRYPT_CRYPT)

MCRYPT_GOST

MCRYPT_IDEA (non-free)

MCRYPT_LOKI97 (libmcrypt > 2.4.x only)

MCRYPT_MARS (libmcrypt > 2.4.x only, non-free)

MCRYPT_PANAMA (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x only)

MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x only)

MCRYPT_RC2

MCRYPT_RC4 (libmcrypt 2.2.x only)

MCRYPT_RC6 (libmcrypt > 2.4.x only)

MCRYPT_RC6_128 (libmcrypt 2.2.x only)

MCRYPT_RC6_192 (libmcrypt 2.2.x only)

MCRYPT_RC6_256 (libmcrypt 2.2.x only)

MCRYPT_SAFER64

MCRYPT_SAFER128

MCRYPT_SAFERPLUS (libmcrypt > 2.4.x only)

MCRYPT_SERPENT (libmcrypt > 2.4.x only)

MCRYPT_SERPENT_128 (libmcrypt 2.2.x only)

MCRYPT_SERPENT_192 (libmcrypt 2.2.x only)

MCRYPT_SERPENT_256 (libmcrypt 2.2.x only)

MCRYPT_SKIPJACK (libmcrypt > 2.4.x only)

MCRYPT_TEAN (libmcrypt 2.2.x only)

MCRYPT_THREEWAY

MCRYPT_TRIPLEDES (libmcrypt > 2.4.x only)

MCRYPT_TWOFISH (for older mcrypt 2.x versions, or mcrypt > 2.4.x )

MCRYPT_TWOFISH128 (TWOFISHxxx are available in newer 2.x versions, but not in the 2.4.x versions)

MCRYPT_TWOFISH192

MCRYPT_TWOFISH256

MCRYPT_WAKE (libmcrypt > 2.4.x only)

MCRYPT_XTEA (libmcrypt > 2.4.x only) 


3. 성능(자바기준)

출처 : http://www.javamex.com/tutorials/cryptography/ciphers.shtml

자세한 내용은 위에 링크~!!( 영어다 ㅠㅠ )



Posted by 시니^^
DB/NoSQL/Etc2014. 4. 11. 18:02



공식 홈페이지 : http://webscalesql.org/

GithubUrl : https://github.com/webscalesql/webscalesql-5.6


뉴스기사 : 페이스북·구글·트위터·링크드인, 오픈소스 MySQL 프로젝트 참여

LinkUrl : http://www.ciokorea.com/news/20410

그린은 웹스케일SQL에 기여하는 사람들이 이미 다음과 같은 몇 가지 결과를 만들어 냈다고 밝혔다.
•각각 제안된 변경을 위해 MySQL에 장착된 테스트 시스템(mtr)을 배포하고 실행할 자동화 프레임워크
•스트레스 테스트와 성능 테스트 시스템을 자동화한 프로토타입의 새로운 전체 제품군
•불필요한 충돌이나 테스트 실패를 야기하는 문제를 방지하기 위한 기존 테스트와 일부 기존 코드 구조 변경 또는 안전한 코드 변경
•버퍼 풀 넘침 현상 개선, 특정 유형의 쿼리에 대한 최적화, NUMA 인터리브 정책에 대한 지원 등을 포함한 성능 향상


=> 버퍼 풀 넘침 현상개선이라 흠흠.... 

=> mysql VS mariaDB VS  webscalesql 되는 구조가 될지...아니면 webscalesql은 그냥 mysql에 종속되는 구조인지....... 음흠.......

Posted by 시니^^
Programming/JAVA2014. 4. 11. 16:59

1. Help => Install new software 

   또는 아래 Help => Eclipse Marketplace 에서 svn 검색 후 설치




2. 설치하고 나니까... 아래 SVN Connector.에러 나옴

---------------------------------------------------------------------------------------------------

Share project was failed.

Selected SVN connector library is not available or cannot be loaded.

If you selected native JavaHL connector, please check if binaries are available or install and select pure Java Subversion connector from the plug-in connectors update site.

If connectors already installed then you can change the selected one at: Window->Preferences->Team->SVN->SVN Connector.

----------------------------------------------------------------------------------------------------

※ Connection에 필요한 SVN Kit, JavaHL라이브러리 경우 EPL(Eclipse Public License) 적용될 때 법적 문제의 소지로 인해 별도로 설치할 수 있도록 배포되고 있다고함.



4. SVN Kit, JavaHL라이브러리 추가 Install 로 진행(Help => Install new software)

 => 추가 저장소 등록(Add Repository)

     http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site/



Posted by 시니^^
Programming/JAVA2014. 4. 9. 22:16

1. Microsoft에서Microsoft SQL Server JDBC 다운로드

1) SQL Server JDBC 드라이버 4.0 (SQL Server 2000 버전 지원 안한다고함) 

URL : http://www.microsoft.com/ko-kr/download/details.aspx?id=11774


2) SQL Server JDBC 드라이버 3.0

URL : http://www.microsoft.com/ko-kr/download/details.aspx?id=21599



2. sqljdbc.jar와 sqljdbc4.jar 차이점

http://msdn.microsoft.com/ko-kr/library/ms378422.aspx

 sqljdbc.jar

 라이브러리는 JDBC 3.0을 지원합니다. 

 라이브러리에는 JRE(Java Runtime Environment) 버전 5.0이 필요합니다.

 JRE 6.0에서 sqljdbc.jar을 사용하면 데이터베이스에 연결할 때 예외가 발생합니다.

 JDBC 드라이버는 JRE 1.4를 지원하지 않습니다.

 JDBC 드라이버를 사용하려면 JRE 1.4를 JRE 5.0 또는 JRE 6.0으로 업그레이드해야 합니다. 

 응용 프로그램이 JDK 5.0 이상과 호환되지 않아 다시 컴파일해야 하는 경우도 있습니다. 

 자세한 내용은 Sun Microsystems 웹 사이트의 설명서를 참조하십시오.

 sqljdbc4.jar

 라이브러리는 JDBC 4.0을 지원합니다. 

 이 라이브러리에는 sqljdbc.jar의 모든 기능과 함께 새로운 JDBC 4.0 메서드가 포함되어 있습니다.

 클래스 라이브러리를 사용하려면 JRE(Java Runtime Environment) 버전 6.0이 필요합니다.

 JRE 1.4 또는 5.0에서 sqljdbc4.jar을 사용하면 예외가 발생합니다.

 응용 프로그램을 JRE 6.0에서 실행해야 하는 경우에는 JDBC 4.0 기능을 사용하지 않더라도  sqljdbc4.jar을 사용하십시오.

JDBC 드라이버는 모든 주요 Sun 호환 Java 가상 컴퓨터에서 작동하고 지원되도록 설계되어 있지만 테스트는 Sun JRE 5.0 이상에서 수행됩니다


3. cmd에서 mvn install

C:\>mvn install:install-file -Dfile=sqljdbc.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar

C:\>mvn install:install-file -Dfile=sqljdbc4.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar


4. pom.xml에 등록

        <!-- MSSQL -->

        <dependency>

            <groupId>com.microsoft.sqlserver</groupId>

            <artifactId>sqljdbc4</artifactId>

            <version>4.0</version>

        </dependency>

Posted by 시니^^
Programming/JAVA2014. 4. 9. 22:15

1. Maven 다운로드 사이트

http://maven.apache.org/download.cgi

Maven 3.2.1 (Binary zip) apache-maven-3.2.1-bin.zip 다운로드


2. 환경변수 설정

※ 시스템=> 고급=>환경변수 설정에 MAVEN_HOME/PATH 설정 또는 아래와 같이 cmd에서 SET실행


SET MAVEN_HOME=D:\apache-maven-3.2.1

SET PATH=%PATH%;%MAVEN_HOME%\bin


D:\>mvn --version

Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-15T02:37:52+09:00)

Maven home: D:\apache-maven-3.2.1\bin\..

Java version: 1.8.0, vendor: Oracle Corporation

Java home: C:\Program Files\Java\jdk1.8.0\jre

Default locale: ko_KR, platform encoding: MS949


※ java_home not found in your environment 에러 발생시 JAVA HOME 추가
SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04
SET PATH=%PATH%;%JAVA_HOME%\bin

3. 해당 workspace 에 프로젝트가서 mvn 콘솔 실행하면됨
mvn clean
mvn compile war:inplace

4. 이클립스에 해당 버전 적용시 설정에서 아래와 같이 add 버튼 눌러서 추가하면됨



※ 아래 slf4j 실패시 적용
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.


Posted by 시니^^
SERVER/Etc2014. 4. 2. 12:03

※ Linux에 Subversion(svn) SERVER YUM으로 빠르고 간단하게 설치하기


1. yum install 설치

$ yum install subversion


2. SVN 저장소 생성

$ mkdir /data/svn


3. 프로젝트 폴더생성

$ svnadmin create --fs-type fsfs /data/svn/project

※ --fs-type 저장소타입 fsfs(기본값) 또는 bdb | CREATE 옵션에 자세한 것은 생략!


4. 권한설정

$ vi /data/svn/project/conf/svnserve.conf

※ 기본적으로 다 주석처리되어있으니 아래 내용 추가

======================================================

[general]

anon-access=none #read:미인증자 읽기가능, none:미인증자 접근불가

auth-access=write  #인증사용자 쓰기권한 부여

password-db=passwd #id/pw등록된 파일 

#realm=project_name #저장소 인증시 나오는 타이틀명

======================================================


5. 인증계정 등록

$ vi /data/svn/project/conf/passwd 

======================================================

[users]

userid=password

======================================================


6. svnserver config파일 확인

$ view /etc/init.d/svnserve <==참고 

======================================================

# processname: svnserve

# config: /etc/sysconfig/svnserve

# pidfile: /var/run/svnserve.pid

======================================================


7. conifg에 저장소 threads 등록

======================================================

OPTIONS="--threads --root /data/svn"

======================================================


8. 데몬실행

$ /etc/init.d/svnserve start

Starting svnserve: [  OK  ]


9. 프로세스확인

$ ps aux | grep svn

root      4876  0.0  0.1 174848  1040 ?        Ss   12:10   0:00 /usr/bin/svnserve --daemon --pid-file=/var/run/svnserve.pid --threads --root /data/svn


10. 포트확인

$ netstat -atnp | grep svn

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      4876/svnserve


11. 윈도우에서 TortoiseSVN 접속 확인

URL : svn://ipadders/project


끝~!!!

Posted by 시니^^