C나 C++에서는 "warning C4702: unreachable code" 라는 경고가 나오는 경우가 있습니다. "unreachable code"라는 것은 "도달할 수 없는 코드"라는 뜻입니다. 소스 중에서 어떤 경우에도 절대 실행되지 않는 "왕따 구문"이 있을 때 나옵니다.

예를 들어 다음 소스의 경우, "return 1" 에서 항상 프로그램이 종료되기에 그 뒤에 있는 "return 0"문은 절대 결코 실행되지 않습니다.

이때는 뒤에 있는 불필요한 "return 0"문을 삭제하거나 또는 소스를 깔끔하게 다듬어야 합니다.

warning C4702: unreachable code 경고문 발생시키기
예제 C소스 파일명: example.cpp
#include <stdio.h>

int main(void) {

  return 1; // 항상 여기서 끝남

  return 0; // 이 코드는 영원히 실행되지 않음 (warning C4702: unreachable code)
}


출처 -  http://mwultong.blogspot.com/2007/10/c-c4702-unreachable-code.html

'Development > Common' 카테고리의 다른 글

문자 바이트 수 계산기  (0) 2012.04.12
Base64 원리 2  (0) 2012.04.11
main 함수  (0) 2012.03.07
프로그램 소스코드를 공개하는 사이트  (0) 2012.03.07
Font(글꼴)  (0) 2012.03.06
Posted by linuxism
,


출처 -  http://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/index.html 

테스트(Test Constructs)

if/then 은 명령어 목록의 종료 상태가 0 (유닉스 관례상 0은 "성공"을 나타내므로)인지 테스트를 해보고 맞다면 다음 명령어들을 실행시킵니다.

테스트 전용 명령어로 [ (왼쪽 대괄호 특수 문자)란 것이 있습니다. test 명령어와 동의어이고, 효율적인 이유로 내장 명령입니다. 이 명령어는 자신의 인자를 비교식이나 파일 테스트로 인식해 해당 연산의 결과에 따른 종료 상태(참은 0, 거짓은 1)를 리턴합니다.  

if test condition-true와 if [ condition-true ] 은 완전히 똑같은 표현입니다. [ 는 test 명령어를 부르는 토큰이기 때문에 ] 가 꼭 필요하진 않지만 새 버전의 bash 에서는 그래도 있어야 됩니다.  

test 명령어는 파일 타입을 테스트하거나 문자열을 비교해 주는 bash 내장 명령이기 때문에, Bash 스크립트안에서 test는 sh-utils 패키지의 일부분인 
/usr/bin/test 외부 명령어를 부르지 않습니다. 비슷하게, [도 /usr/bin/test로 링크되어 있는 /usr/bin/[를 부르지 않습니다.  

[[ ]] 는 쉘 상에서 [ ]과 동일합니다.
  [ ... ] 말고 [[ ... ]] 를 쓰면 많은 논리적 에러들을 막을 수 있습니다. 예를 들어 &&, ||, <, > 연산자들은 [ ] 에서 에러를 내지만 [[ ]] 에서는 잘 동작합니다. 


파일 테스트 연산자

다음 조건이 맞다면 참을 리턴

-e

존재하는 파일

-f

보통 파일(디렉토리나 디바이스 파일이 아님)

-s

파일 크기가 0 이 아님

-d

파일이 디렉토리

 

 

비교 연산자(이진)

정수 비교

-eq

같음

if [ "$a" -eq "$b" ]

-ne

같지 않음

if [ "$a" -ne "$b" ]

 

문자열 비교

=

같음

if [ "$a" = "$b" ]

==

같음

if [ "$a" == "$b" ]

= 와 동의어입니다.

-z

문자열이 "null"임. 즉, 길이가 0

-n

문자열이 "null"이 아님.

 

 

함수

function function_name { 
command... 

혹은

function_name () { 
command... 

두 번째 형태는 C 프로그래머들에게 아주 반가울 것입니다(또한 이 형태가 더 이식성 있습니다).

C 함수 문법과 더욱 비슷하게 왼쪽 중괄호를 다음 줄에 놓아도 됩니다.

function_name () 

command... 

함수는 간단하게 함수 이름을 불러서 실행시킬 수 있습니다.

if [ "$USER" = bozo ]

then

bozo_greet () # if/then 문 중간에 들어간 함수 정의.

{

echo "Hello, Bozo."

}

fi

 

bozo_greet # bozo 사용자일 때만 동작하고 다른 사용자는 에러가 납니다.

 

 

 

Shift

shift 명령어는 위치 매개변수를 왼쪽으로 한 단계씩 이동시킵니다.

$1 <--- $2$2 <--- $3$3 <--- $4, 등등.

원래의 $1 은 없어지지만 $0 은 바뀌지 않습니다. 위치 매개변수가 많이 필요하다면 {중괄호} 표기법으로 가능하지만(예 5-5 참고), shift 를 써서 예전 10개를 쓸 수 있습니다.

예 5-7. shift 쓰기

#!/bin/bash

# 'shift' 로 모든 위치 매개변수를 처리하기.

 

# 이 스크립트의 이름을 shft 등의 이름으로 바꾸고

#+ ./shft a b c def 23 skidoo

#+ 같은 식으로 몇 개의 인자를 넘겨서 불러 보세요.

 

until [ -z "$1" ] # 모든 매개변수를 다 쓸 때까지...

do

echo -n "$1 "

shift

done

 

echo # 여분의 한 줄.

 

exit 0

'Development > ShellScript' 카테고리의 다른 글

Shift 명령어  (1) 2012.03.13
bash 내부 명령어  (0) 2011.01.09
bash 쉘 스크립트 - 위치 매개변수, 조건문  (0) 2011.01.06
bash 쉘 스크립트 - 위치 매개변수  (0) 2011.01.06
Posted by linuxism
,

Clinton Begin이라는 사람에 의해 2001년에 시작된 프로젝트. 원래는 암호 관련 소프트웨어 개발에 초점을 맞춘 프로젝트였다. iBATIS에 의한 첫 산출물은 Secrets라는 이름의 툴이다.
그러다가 2002년 초반에 마이크로소프트가 .NET이 J2EE에 비해 10배 빠르고 4배 생산성이 좋다는 논문을 발표했는데, 이에 iBATIS 팀은 (역자주: 열받아서..) 같은해 7월 1일 JPetStore 1.0을 릴리스했다. 그럼으로해서 자바가 .NET보다 생산성뿐 아니라 아키텍처면에서도 이점이 있음을 보여줬다.
그런데, JPetStore가 아주 재밌는 persistene layer를 사용했는데, 이것이 오픈소스 진영의 관심을 끈 것이다. 그후 관련된 질문과 요구가 Data Mapper(SQL Maps)와 DAO라는 두개의 프레임워크로 구성된 새로운 관점에 집중한 iBATIS 프로젝트의 전이를 가져온 것이다.
ibatis는 원래 암호 관련 프로젝트로 시작되었음을 알려주는 이름이다. 즉 "internet"과 "abatis"의 합성어인데,, abatis는 적의 공격을 방어하기 위한 장애물이라는 뜻이니,,, 인터넷를 지키는데 쓰는 암호를 의미하는 것이다. 

출처 -  http://www.javajigi.net/pages/viewpage.action?pageId=5570 

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

Apache iBATIS
개발원Apache 소프트웨어 재단
초판2001 년 (11 년전)
최신 버전3.0 (Java) 1.6.2/1.9.2 (. Net)
플랫폼크로스 플랫폼
언어Java , . NET , Ruby
지원 상태활동 정지 ( MyBatis 로 이동)
종류지속성 프레임 워크
라이센스Apache License 2.0
공식 사이트http://ibatis.apache.org


iBATIS 는 SQL 쿼리 를 POJO ( Plain Old Java Object )에 매핑하는 지속성 프레임 워크이다. SQL 쿼리는 XML 파일에 두는 것으로 일단 응용 프로그램과 분리된다. 결과 객체 매핑은 자동 또는 반자동으로한다.

iBATIS의 기본 개념은 SQL 쿼리를 XML 파일에 배치함으로써 관계 데이터베이스 에 액세스하는 데 필요한 많은 Java 코드를 크게 줄일 것이다.

예를 들어 데이터베이스에 PRODUCT (PRD_ID : INTEGER , PRD_DESCRIPTION : VARCHAR )라는 테이블이 있다고하여 Java 객체 com.example.Product (id : int , description : String )이 있다고한다.product POJO의 특정 PRD_ID 의 PRODUCT 내용을 저장하려면 다음을 XML SQL 맵에 삽입한다.

 <SELECT  ID = "getProduct" 
        parameterClass = "java.lang.Long" 
        resultClass = "com.example.Product" >
                select
                        PRD_ID as id,
                        PRD_DESCRIPTION as description
                from 
                        PRODUCT
                where 
                        PRD_ID = # value #
 </ select >

매개 변수 개체를 설정하고 결과 객체에 저장하는 Java 코드는 다음과 같다.

Product resultProduct = sqlMapClient. queryForObject ( "getProduct" , 123 ) ;

# value # 는 쿼리에서 전송되는 Long 가리킨다. 매개 변수를 Java 객체에 대해서, 해당 개체의 속성에서 얻은 값을 유사한 # 기법을 사용하여 쿼리에 삽입할 수있다. 예를 들어 파라미터 클래스가 com.example.Product하고 그것 id라는 속성이있는 경우 # value #는 # id #로 치환있다. sqlMapClient는 com.ibatis.sqlmap.client.SqlMapClient 인스턴스이다.

iBATIS의 창시자는 Java 5에 실망 을 표명하고있어, 2006 년 12 월 2.3.0을 릴리스하고 나서 2.3.1과 2.3.2 2008 년 4 월에 출시 하기까지 오랜 시간이 걸렸다 것은 무관하지 않다.

2010 년 6 월 16 일, 공식 사이트에서 Apache 소프트웨어 재단의 활동 중지 및 프로젝트 포크 , 및 개발자의 이적이 발표되었다. 새로운 프로젝트는MyBatis 라고있다.

관련 항목 편집 ]

외부 링크 편집 ]


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

MyBatis
개발원The MyBatis team
최신 버전3.0.5 (2011 년 6 월 1 일 (8 개월 전) )
프로그래밍 언어Java , . NET
지원 OS크로스 플랫폼
종류지속성 프레임 워크
라이센스Apache License 2.0
공식 사이트http://www.mybatis.org/
 

MyBatis 는 Java 및 . NET Framework 에서 사용 가능한 XML 또는 주석 을 사용하여 저장 프로 시저 및SQL 문을 객체 와 붙이면 지속성 프레임 워크 이다. Apache License 2.0을 사용하여 오픈 소스 소프트웨어로 제공되고있다.

이전 iBATIS 로 알려져 있었다.

목차

  [ 숨기기 ] 

특징 편집 ]

MyBatis 다른 O / R 매핑 프레임 워크와는 달리 데이터베이스 와 객체를 매핑하는 것이 아니라, SQL 문장과 객체의 매핑을한다. 따라서 MyBatis은 기존 환경과 비정규 데이터베이스 또는 SQL 문장의 실행을 완전히 제어하고 싶은 경우에 좋은 선택이된다.

MyBatis하여 데이터베이스 액세스 코드는 JDBC 에 의한 것보다 훨씬 간단하다. 보통의 경우, SQL 문장의 실행은 한 줄의 코드로 완료한다. 흔히 볼 수있는 연결을 닫는 누설이나 검색 결과 1 건 기대하고 있음에도 불구하고 초과 버리는 문제를 억제있다.

MyBatis의 가장 큰 특징은 XML 작성하는 SQL 문장을 일반 개체 와 함께하는 것이다.

또한 MyBatis는 개체 및 데이터베이스를 매핑뿐만 아니라, SQL 문장의 인터페이스 방법 (매퍼)를 만들 수있다. 이 경우는 DI 프레임 워크와 결합하여 MyBatis API에 대한 종속성을 제거할 수있다. 이 때문에 Spring Framework , Google Guice 와 협력을 지원하고있다.

MyBatis에서는 데이터 캐시 를 지원하고있다. XML 매핑 파일에 약간의 구문을 추가하면 캐시를 사용하는 것이 가능하다. MyBatis 캐시는 OSCache ,Ehcache 그것 Hazelcast 과의 연계를 지원하고있다.

사용 방법 편집 ]

SQL 문장은 XML 파일 또는 주석 에 작성할 수있다. 다음 예제는 XML을 사용하여 "Blog"를 반환 SELECT 문의 정의이다.

<? XML  version = "1.0"  encoding = "UTF-8"  ?>
 <! DOCTYPE mapper PUBLIC "- / / mybatis.org / / DTD Mapper 3.0 / / EN" "http://mybatis.org/dtd/mybatis -3-mapper.dtd "> 
<mapper  namespace = "org.mybatis.example.BlogMapper" > 
    <SELECT  ID = "selectBlog"  parameterType = "int"  resultType = "Blog" >
        select * from Blog where id = # {id}
    </ select >
 </ mapper >

이 SELECT 문은 다음과 같이 실행한다.

Blog blog =  ( Blog ) session. selectOne ( "org.mybatis.example.BlogMapper.selectBlog" , 101 ) ;

매퍼 인터페이스는 새로운 MyBatis의 특징 문자열의 사용을 피하고 IDE 코드 지원 기능을 활용할 수있다.

매퍼 DAO (Data Access Objects)에 비슷하지만 그것과는 달리 인터페이스 에서 하나 이상의 각 SQL 문장에 대응하는 메소드로부터 구성된다. 인터페이스의 구현은 런타임에 MyBatis 동적 프록시가 생성하는 데 필요하지 않습니다.

BlogMapper mapper = session. getMapper ( BlogMapper. class ) ; 
Blog blog = mapper. selectBlog ( 101 ) ;

역사 편집 ]

이 절은 쓰기 도중에 이 절은 집필 합니다. 가필 정정 해 주시 협력자를 찾고 있습니다 .

관련 항목 편집 ]

외부 링크 편집 ]



 

'Framework & Platform > mybatis' 카테고리의 다른 글

mybatis password 암호화/복호화  (0) 2012.04.28
Mybatis selectList 예제  (0) 2012.03.28
mybatis 설치 예제  (0) 2012.03.18
ibatis vs MyBatis  (0) 2012.03.15
ibatis 문법 정리  (0) 2012.03.14
Posted by linuxism
,