Iterator, Enumeration은 둘다 모두 자바에서 제공하는 컬렉션에 대해 각 컬렉션의 항목들을 순차적으로 접근하는데 사용한다.


차이점은 Enumeration의 경우 자바의 초기버젼에서 개발되었습니다. 자바는 jdk1.2, 즉 자바2에서 많은 변화가 생겼는데, 그중에 하나가 컬렉션 클래스(Vector, List, Map, Set...)들을 컬렉션프레임웍 이라는것으로 관리하는것이다.


이때, 컬렉션프레임웍에서는 Iterator라고 해서, Enumeration의 기능을 확장해서, Collection인터페이스를 상속받은 모든 컬렉션(List, Set, Vector.)에서 Enumeration을 사용가능하게 하였다.


정리하면, Enumeration는 자바초기버젼에서 제공되는것으로 Hashtable, Vector 에서 사용가능하다. Iterator는 jdk1.2에서 제공되는 것으로 Collection인터페이스를 구현상속한 모든 컬렉션 클래스에서 사용가능하다.


덧붙여서, Iterator는 remove()라는 메소드가 존재하여서, 원본 컬렉션의 항목을 삭제할수 있습니다.


예를 들면,


//Enumeration 사용법


Vector v = new Vector();

...


Enumeration e = v.elements();

while(e.hasMoreElements())

{

//항목들을 모두 콘솔창에 출력합니다.

System.out.println((String)e.nextElement());



//Iterator 사용법


HashSet set = new HashSet();

...


Iterator iter = set.iterator();

while (iter.hasNext()) {

i++;

//항목들을 모두 콘솔창에 출력합니다.

System.out.println(i + ":" + iter.next());

}

블로그 이미지

낭만가을

,

어떻게 하면 나의 티스토리 블로그 가독성을 높일 수 있을까요?

블로그를 운영하면서 드는 고민 중 하나가 내 블로그의 글들을 모든 사람들이 편하게 읽을 수 있을지 의문이 듭니다. 

사람들이 편안하게 긁을 읽는 조건은 어떤 것들이 있을까요?

무조건 폰트크기를 크게 한다고 해서 잘보이는 것은 아니겠죠.
블로그의 디자인 컨셉에 맞는 폰트선택 줄간격, 글자간격, 폰트색상등 많은 요소들이 맞아 들어가야지 긁을 읽는데

피로감 없이 편안하게 읽을 수 있는 것 같습니다.

티스토리에서 기본적으로 제공하는 글의 줄간격, 글자간격은 조금 가깝에 붙어 있기 때문에 글을 보는데 조금 
불편합니다. 기본값을 왜 이렇게 설정해 놨는지 모르겠군요.

 

그럼 티스토리 본문 글속성 변경방법을 알려 드리겠습니다.
*제 블로그는 폰트는 맑은고딕,  줄간격 210% , 폰트사이즈 10px, 글자색 #353535, 글자간격은 기본값을 사용하였습니다.

티스토리 관리자 모드에서 HTML/CSS 편집에 들어갑니다.

 

 

Ctrl + F 누르신 후 찾는 문자열에 .article 입력 후 찾기 버튼을 누릅니다.

Style.css  .article a:link  위에 .article 이동되는지 확인 합니다.

 

 

 

 

.article 안의 내용들을 수정해 주면 됩니다.
*정하시기 전에 꼭 스킨->보관함에 저장을 한번 하신 후 적용하시기 바랍니다. 혹시 문제가 생기면 
저장해 놓은 스킨을 다시 적용시키면 원상복구 됩니다.

 

 

 

 

*@post-body-font-family=*/Malgun Gothic 맑은 고딕 폰트로 변경하시고 싶으시면 Malgun Gothic 입력합니다. 
아마 기본폰트는 다른것을 지정 되어있을 것입니다.

 

color:/*@post-body-color=*/#353535  #353535으로 변경하시면 제 블로그의 글자 색과 똑같아 집니다.
RGB 색상표를 이용해서 바꿔주시면 다른색상으로도 변경 가능합니다.

2013/12/08 - [컴퓨터/소프트웨어] - RGB코드 추출 프로그램

 

hidden; 뒤에 line-height:210%; 추가 해주시면 줄간격이 조정됩니다. 210% 바꾸시면 줄간격을 늘릴수도

있고 줄일 수도 있습니다.

 

저는 기본 글자간격이지만 간격을 바꾸시고 싶으시면 line-height:210%; 뒤에 letter-spacing:1px; 추가

해주시면 됩니다.
1px값을 바꾸시면 글자간격을 마음대로 조정가능합니다.

 

모두 수정 후 저장버튼 누르시면 블로그에 적용됩니다.


블로그 이미지

낭만가을

,

Listener refused the connection with the following error : 

ORA-12505, TNS: listener does not currently know of SID given in connect descriptor



뭐 딱봐도 리스너 접근이 거부되어 에러가 뜨는건 알겠습니다.

SID가 서로 안 맞는것도 알거 같고...

처음 경험하는거라 어쩔줄 몰라 헤맸습니다.



그래도 역시 검색을 하면 정답은 나오네요.

일단 아래 방법대로 해도 안된다면 설치에오류가 생겼다고 생각하시고

재설치 하시는게 좋을 것 같아요.




  CMD에 명령어 " Lsnrctl services "입력



시작 → 실행 → CMD 를 실행시킨 후 Lsnrctl services 를 입력합니다.

리스너를 제대로 잡아주는 역활을 하는것 같습니다.

만약에 초록색 상자처럼 화면이 안 뜬다면 설치하는 과정에서 문제가 생긴거라고 하네요.





그리고  [ " ~~~ " 서비스는 인스턴스를 가집니다. ]

이 부분이 SID에 해당하는 부분입니다. 

orcl 을 확인하고 개발툴로 가보겠습니다.





  SQL Developer 에서 접속정보 확인


음..  역시 SID가 다르네요.

왜 설치할때는 orcl로 설치하라 해놓고 실행시키니 xe로 접속시도하다니..

아무튼 1시간동안 헤맨 이유는 요것 때문이였습니다.




얼른 바꿔줘야겠죠??

CMD에서 확인했던 SID인 orcl을 입력하고 비밀번호를 입력한뒤 테스트를 해보았더니

기분좋게 성공이라고 떴습니다!!

역시 오류를 해결하는 기분은 최고에요.




접속을 눌렀더니 이제 아무런 오류도 뜨지않고 

정상적으로 동작이 잘됩니다.



출처: http://hunit.tistory.com/211 [Hun IT Blog]

블로그 이미지

낭만가을

,

<25가지 SQL작성법> 


1.데이터와 비즈니스 어플리케이션을 잘 알아야 한다. 


동일한 정보는 다른 비즈니스 데이터 원천으로부터 검색될 수 있다. 이러한 원천 

에 익숙해야 한다. 당신은 당신의 데이터베이스 안의 데이터의 크기와 분포를 반 

드시 알아야 한다. 또한 SQL을 작성하기 전에 비즈니스 개체 안의 관계와 같은 

데이터 모델을 전체적으로 이해해야 한다. 이러한 이해는 당신이 여러 테이블에 

서 정보를 검색하는데 있어서 보다 좋은 쿼리를 작성할 수 있다. DESIGNER/2000 

과 같은 CASE TOOLS은 다른 비즈니스와 데이터베이스 객체사이의 관계를 문서화 

하는데 좋은 역할을 한다. 


2.실제 데이터를 가지고 당신의 쿼리를 검사하라. 


대부분의 조직은 개발, 검사, 제품의 3가지 데이터베이스 환경을 가진다. 프로그 

래머는 어플리케이션을 만들고 검사하는데 개발 데이터베이스 환경을 사용하는 

데, 이 어플리케이션이 제품 환경으로 전환되기 전에 프로그래머와 사용자에 의 

해 검사 환경하에서 보다 엄격하게 검토되어야 한다. 

SQL이 검사 환경하에서 테스트될 때, 검사 데이터베이스가 가지고 있는 데이터 

는 제품 데이터베이스를 반영해야 한다. 비실제적인 데이터를 가지고 테스트된 

SQL문은 제품 안에서는 다르게 작동할 수 있다. 엄격한 테스트를 보장하기 위해 

서는, 검사 환경하에서의 데이터 분포는 반드시 제품 환경에서의 분포와 밀접하 

게 닮아야 한다. 


3.동일한 SQL을 사용하라. 


가능한한 BIND VARIABLE, STORED PROCEDURE, PACKAGE의 이점을 활용하라. IDENTICAL 

SQL문의 이점은 PARSING이 불필요하기에 데이터베이스 서버안에서 메모리 사용 

의 축소와 빠른 수행을 포함한다. 예로서 아래의 SQL 문은 IDENTICAL하지 않다. 


SELECT * FROM EMPLOYEE WHERE EMPID = 10; 

SELECT * FROM EMPLOYEE WHERE EMPID = 10; 

SELECT * FROM EMPLOYEE WHERE EMPID = 20; 


그러나 I_EMPID라고 이름 주어진 BIND VARIABLE을 사용하면 SQL 문은 이렇게 된 

다. 

SELECT * FROM EMPLOYEE WHERE EMPID = :I_EMPID; 


4.주의 깊게 인덱스를 사용하라. 


테이블상에 모든 필요한 인덱스는 생성되어야 한다. 하지만 너무 많은 인덱스는 

성능을 떨어뜨릴 수 있다. 그러면 어떻게 인덱스를 만들 칼럼을 선택해야 하는 

가? 


*최종 사용자에 의해 사용되는 어플리케이션 SQL과 쿼리의 WHERE 절에서 빈번 

하게 사용되는 칼럼에 인덱스를 만들어야 한다. 


*SQL 문에서 자주 테이블을 JOIN하는데 사용되는 칼럼은 인덱스되어야 한다. 


*같은 값을 가지는 ROW가 적은 비율을 가지는 칼럼에 인덱스를 사용하라. 


*쿼리의 WHERE 절에서 오직 함수와 OPERATOR로 사용되는 칼럼에는 인덱스를 만들 

면 안된다. 


*자주 변경되거나 인덱스를 만들때 얻는 효율성보다 삽입, 갱신, 삭제로 인해 잃는 

효율성이 더 큰 칼럼에는 인덱스를 만들면 안된다. 이러한 OPERATION은 인덱스를 

유지하기 위한 필요 때문에 느려진다. 


*UNIQUE 인덱스는 더 나은 선택성 때문에 NONUNIQUE 인덱스보다 좋다. PRIMARY 

KEY 칼럼에 UNIQUE 인덱스를 사용한다. 그리고 FOREIGN KEY 칼럼과 WHERE 절 

에서 자주 사용되는 칼럼에는 NONUNIQUE 인덱스를 사용한다. 


5.가용한 인덱스 PATH를 만들어라 


인덱스를 사용하기 위해서는 기술한 SQL문을 이용할 수 있는 식으로 SQL을 작 

성하라. OPTIMIZER는 인덱스가 존재하기 때문에 인덱스를 사용하는 ACESS PATH 

를 사용할 수 없다. 따라서 ACCESS PATH는 반드시 SQL이 사용할 수 있게 만들 

어 져야 한다. SQL HINT를 사용하는 것은 인덱스 사용을 보증해주는 방법중 하 

나이다. 특정 ACCESS PATH를 선택하기 위한 다음의 힌트를 참고 하라 


6.가능하면 EXPLAIN과 TKPROF를 사용하라 


만약 SQL문이 잘 다듬어지지 않았다면 비록 오라클 데이터베이스가 잘 짜여져 

있어도 효율성이 떨어질 것이다. 이럴 경우 EXPLAIN TKPROF에 능숙해져야 한 

다. EXPALIN PLAN은 SQL이 사용하는 ACCESS PATH를 발견할 수 있게 해주고 

TKPROF는 실제 PERFORMANEC의 통계치를 보여준다. 이 TOOL은 오라클 서버 소 

프트웨어에 포함되어 있고 SQL의 성능을 향상시켜 준다. 


7.OPTIMIZER를 이해하라. 


SQL은 RULE-BASED나 COST-BASED중 하나를 이용해서 기동된다.기존의 소 

프트웨어는 RULE BASED 방식을 채택하고 있다. 그리고 많은 오라클 소프트웨 

어가 이러한 방식을 오랫동안 사용해 왔다. 그러나 새로 출시된 소프트웨어에 대 

해서는 COST BASED 방식의 OPTIMIZER를 고려해야 한다. 오라클은 새로 출 

시되는 프로그램을 COST BASED방식으로 업그레이드 시켜왔으며 이러한 방식 

은 시스템을 훨씬 더 안정적으로 만들었다. 만약 COST BASED방식의 

OPTIMIZER를 사용한다면 반드시 ANALYZE 스키마를 정기적으로 사용해야 한 

다. ANALYZE스키마는 데이터베이스 통계를 데이터 사전 테이블에 기록하는 역 

할을 수행하며 그렇게 되면 COST BASED OPTIMIZER가 그것을 사용하게 된 

다. SQL은 COST BASED OPTIMIZER를 사용할 때만 잘 조정될 수 있다. 만약 

RULE BASED에서 COST BASED로 바꾸고 싶다면 데이터베이스를 사용하는 모 

든 소프트웨어의 모든 SQL문의 성능을 평가해 보아야 한다. 


8.지엽적으로 동작하더라도 전역적으로 생각하라 


항상 주의할 것은 하나의 SQL문을 조정하기 위해 생긴 데이터베이스안의 변화 

는 다른 응용프로그램이나 다른 사용자가 이용하는 다른 명령문에 영향을 미친다 

는 사실이다. 


9.WHERE절은 매우 중요하다. 


비록 인덱스가 가용하다고 해도 다음의 WHERE 절은 그 인덱스 ACCESS PATH 

를 사용하지 않는다.(즉 COL1 과 COL2는 같은 테이블에 있으며 인덱스는 

COL1에 만들어진다.) 


COL1 > COL2 

COL1 < COL2 

COL1 > = COL2 

COL1 <= COL2 

COL1 IS NULL 

COL1 IS NOT NULL. 


인덱스는 NULL값을 갖는 칼럼에는 ROWID를 저장하지 않는다. 따라서 NULL값 

을 갖는 ROW를 검색할 때는 인덱스를 사용하지 못한다. 


COL1 NOT IN (VALUE1, VALUE2 ) 

COL1 != EXPRESSION 

COL1 LIKE ''%PATTERN''. 


이럴 경우 THE LEADING EDGE OF THE INDEX(?) 는 작동되지 않고 인덱스가 사 

용되지 못하게 한다. 한편 COL1 LIKE ''PATTERN %''이나 COL1 LIKE ''PATTERN % 

PATTERN%'' 는 한정된 인덱스 스캔을 수행하기 때문에 인덱스를 사용할 수 있다. 


NOT EXISTS SUBQUERY 

EXPRESSION1 = EXPRESSION2. 


인덱스된 컬럼을 포함하는 표현(EXPRESSION), 함수, 계산(CALCULATIONS)은 인덱스 

를 사용하지 못한다. 다음의 예에서 보면 UPPER SQL 함수를 사용하면 인덱스 

스캔을 사용할 수 없고 FULL TABLE SCAN으로 끝나고 만다. 


SELECT DEPT_NAME 

FROM DEPARTMENT 

WHERE UPPER(DEPT_NAME) LIKE ''SALES%''; 


10.레코드 필터링을 위해서는 HAVING보다는 WHERE를 사용하라 


인덱스가 걸려있는 칼럼에는 GROUP BY와 같이 HAVING절을 사용하지 마라. 이 경 

우 인덱스는 사용되지 않는다. 또한 WHERE절로 된 ROW를 사용하지 마라. 만약 

EMP테이블이 DEPTID컬럼에 인덱스를 가지고 있다면 다음 질의는 HAVING 절을 

이용하지 못한다. 


SELECT DEPTID, 

SUM(SALARY) 

FROM EMP 

GROUP BY DEPTID 

HAVING DEPTID = 100; 


그러나 같은 질의가 인덱스를 사용하기 위해 다시 씌여질 수 있다. 


SELECT DEPTID, 

SUM(SALARY) 

FROM EMP 

WHERE DEPTID = 100 

GROUP BY DEPTID; 


11. WHERE 절에 선행 INDEX 칼럼을 명시하라. 


복합 인덱스의 경우, 선행 인덱스가 WHERE절에 명시되어 있다면 쿼리는 

그 인덱스 를 사용할 것이다. 다음의 질의는 PART_NUM과 PRODUCT_ID 칼럼 

에 있는 PRIMARY KEY CONSTRAINT에 기초한 복합 인덱스를 이용할 것이다. 


SELECT * 

FROM PARTS 

WHERE PART_NUM = 100; 


반면, 다음의 쿼리는 복합인덱스를 사용하지 않는다. 


SELECT * 

FROM PARTS 

WHERE PRODUCT_ID = 5555; 


같은 요청(REQUEST)이 인덱스를 이용하기 위해 다시 씌어 질 수 있다. 다음 질의 

의 경우, PART_NUM컬럼은 항상 0 보다 큰 값을 가질것이다. 


SELECT * 

FROM PARTS 

WHERE PART_NUM > 0 

AND PRODUCT_ID = 5555; 


12.인덱스 SCAN과 FULL TABLE SCAN을 평가하라. 


한 행(ROW)의 15% 이상을 검색하는 경우에는 FULL TABLE SCAN이 INDEX 

ACESS PATH보다 빠르다. 이런 경우, SQL이 FULL TABLE SCAN을 이용할 수 있도록 

여러분 스스로 SQL을 작성하라. 다음의 명령문은 비록 인덱스가 SALARY 

COLUMN에 만들어져 있어도 인덱스 SCAN을 사용하지 않을 것이다. 첫 번째 SQL 

에서, FULL HINT를 사용한다면 오라클은 FULL TABLE SCAN을 수행할 것이다. 인덱 

스의 사용이 나쁜 점이 더 많다면 아래의 기술을 이용해서 인덱스 수행을 막을 

수 있다. 


SELECT * --+FULL 

FROM EMP 

WHERE SALARY = 50000; 


SELECT * 

FROM EMP 

WHERE SALARY+0 = 50000; 


다음의 명령문은 비록 인덱스가 SS# COLUMN에 있어도 인덱스 SCAN을 사용하 

지 않을 것이다. 


SELECT * 

FROM EMP 

WHERE SS# || '' '' = ''111-22-333''; 


오라클이 불분명한 데이터 변환을 수행해야 하는 경우 인덱스가 항상 사용되지 

않는 것은 아니다. 다음의 예를 보면, EMP 칼럼에 있는 SALARY는 숫자형 칼 

럼이고 문자형이 숫자값으로 변환된다. 


SELECT * 

FROM EMP 

WHERE SALARY = ''50000''; 


테이블의 행이 15%이거나 그보다 작을 경우 인덱스 스캔은 보다 잘 수행 될 것 

이다. 왜냐 하면 인덱스 스캔은 검색된 행(ROW)하나 하나 마다 다중의 논리적인 

읽기 검색(READ)을 할 것이기 때문이다. 그러나 FULL TABLE SCAN은 하나의 논리적 

인 읽기 검색 영역 안의 BLOCK에 있는 모든 행들을 읽을 수 있다. 그래서 테이 

블의 많은 행들에 접근해야 하는 경우에는 FULL TABLE SCAN이 낫다. 예로 다음의 

경우를 보자. 만약 EMP TABLE과 그 테이블의 모든 인덱스에 대해 ANALYZE라 

는 명령어가 수행된다면, 오라클은 데이터 사전인 USER_TABLES와 

USER_INDEXES에 다음과 같은 통계치를 산출해 낸다. 


TABLE STATISTICS: 

NUM_ROWS = 1000 

BLOCKS = 100 


INDEX STATISTICS: 


BLEVEL = 2 

AVG_LEAF_BLOCKS_PER_KEY = 1 

AVG_DATA_BLOCKS_PER_KEY = 1 


이러한 통계치 에 근거해서, 아래에 보이는 것이 각각의 다른 SCAN에 대한 논리 

적인 읽기(READ)-즉 ACESS된 BLOCK이 될 것이다. 


USE OF INDEX TO RETURN ONE ROW = 3 


(BLEVEL+(AVG_LEAF_BLOCKS_PER_KEY - 1) + 

AVG_DATA_PER_KEY 


FULL TABLE SCAN = 100 

(BLOCKS) 


USE OF INDEX TO RETURN ALL ROWS = 3000 

(NUM_ROWS * BLOCKS ACCESSED TO RETURN ONE ROW USING INDEX) 


13. 인덱스 스캔에 ORDER BY를 사용하라 


오라클의 OPTIMIZER는 , 만약 ORDER BY라는 절이 인덱스된 칼럼에 있다면 인 

덱스 스캔을 사용할 것이다. 아래의 질의는 이러한 점을 보여 주는 것인데 이 질 

의는 비록 그 칼럼이 WHERE 절에 명시되어 있지 않다고 해도 EMPID컬럼에 있 

는 가용한 인덱스를 사용할 것이다. 이 질의는 인덱스로부터 각각의 ROWID를 

검색하고 그 ROWID를 사용하는 테이블에 접근한다. 


SELECT SALARY 

FROM EMP 

ORDER BY EMPID; 


만약 이 질의가 제대로 작동하지 않는다면, 당신은 위에서 명시되었던 FULL HINT 

를 사용하는 같은 질의를 다시 작성함으로써 다른 대안들을 이용해 볼 수 있다. 


14. 자신의 데이터를 알아라 


내가 이미 설명한 것처럼, 당신은 당신의 데이터를 상세하게 알고 있어야 한다. 

예를 들어 당신이 BOXER라는 테이블을 가지고 있고 그 테이블이 유일하지 않은 

인덱스를 가진 SEX라는 컬럼과 BOXER_NAME이라는 두 개의 테이블을 가지고 있 

다고 가정해 보자. 만약 그 테이블에 같은 수의 남자, 여자 복서가 있다면 오라 

클이 FULL TABLE SCAN을 수행하는 경우 다음의 질의가 훨씬 빠를 것이다. 


SELECT BOXER_NAME 

FROM BOXER 

WHERE SEX = ''F''; 


당신은 다음과 같이 기술함으로써 질의가 FULL TABLE SCAN을 수행하는지를 확실 

하게 해 둘 수 있다. 


SELECT BOXER_NAME --+ FULL 

FROM BOXER 

WHERE SEX = ''F''; 


만약 테이블에 980 명의 남성 복서 데이터가 있다면, 질의는 인덱스 SCAN으로 

끝나기 때문에 아래형식의 질의가 더 빠를 것이다. 


SELECT BOXER_NAME --+ INDEX (BOXER BOXER_SEX) 

FROM BOXER 

WHERE SEX = ''F''; 


이 예는 데이터의 분포에 대해 잘 알고 있는 것이 얼마나 중요한 가를 예시해 준 

다. 데이터가 많아지고(GROW) 데이터 분포가 변화하는 것처럼 SQL 도 매우 다 

양할 것이다. 오라클은 OPTIMIZER 가 테이블에 있는 데이터의 분포를 잘 인식하 

고 적절한 실행 계획을 선택하도록 하기 위해 오라클 7.3 에 HISTOGRAMS라는 

기능을 추가했다. 


15. KNOW WHEN TO USE LARGE-TABLE SCANS. 


작거나 큰 테이블에서 행들을 추출할 때, 전체 테이블의 검색은 인텍스를 사용한 

검색보다 성능이 더 좋을 수도 있다. 매우 큰 테이블의 인덱스 검색은 수많은 

인덱스와 테이블 블록의 검색이 필요할수도 있다. 이러한 블록들이 데이터베이 

스 버퍼 캐쉬에 이동되면 가능한한 오래도록 그곳에 머무른다. 그래서 이러한 

블록들이 다른 질의등에 필요하지 않을 수도 있기 때문에, 데이터베이스 버퍼 히 

트 비율이 감소하며 다중 사용자 시스템의 성능도 저하되기도 한다. 그러나 전 

체 테이블 검색에 의해서 읽혀진 블록들은 데이터베이스 버퍼 캐쉬에서 일찍 제 

거가 되므로 데이터베이스 버퍼 캐쉬 히트 비율은 영향을 받지 않게 된다. 


16. MINIMIZE TABLE PASSES. 


보통, SQL질의시 참조하는 테이블의 숫자를 줄임으로 성능을 향상시킨다. 참조 

되는 테이블의 숫자가 적을수록 질의는 빨라진다. 예를 들면 NAME, STATUS, 

PARENT_INCOME, SELF_INCOME의 네개의 컬럼으로 이루어진 학생 테이블 

에서 부모님에 의존하는 학생과 독립한 학생의 이름과 수입에 대해서 질의시, 이 

학생 테이블을 두번 참조하여 질의하게 된다.. 

SELECT NAME, PARENT_INCOME 

FROM STUDENT 

WHERE STATUS = 1 

UNION 

SELECT NAME, SELF_INCOME 

FROM STUDENT 

WHERE STATUS = 0; 

( NAME이 프라이머리 키이며, STATUS는 독립한 학생의 경우는 1, 부모님에 

의존적인 학생은 0으로 표시한다) 

위의 같은 결과를 테이블을 두번 참조하지 않고도 질의 할 수 있다. 


SELECT NAME,PARENT_INCOME*STATUS + SELF_INCOME(1-STATUS) 

FROM STUDENT; 


17. JOIN TABLES IN THE PROPER ORDER. 


다수의 테이블 조인시 테이블들의 조인되는 순서는 매우 중요하다. 전반적으로, 

올바른 순서로 테이블이 조인되었다면 적은 수의 행들이 질의시 참조된다. 언제 

나 다수의 조인된 테이블들을 질의시 우선 엄격하게 조사하여 행들의 숫자를 최 

대한으로 줄인다. 이러한 방법으로 옵티마이저는 조인의 차후 단계에서 적은 행 

들을 조사하게 된다. 뿐만 아니라, 여러 조인을 포함하는 LOOP JOIN에서는 가 

장 먼저 참조되는 테이블(DRIVING TABLE)이 행들을 최소한으로 리턴하도록 해야 

한다. 그리고, 마스터와 상세 테이블 조인시에는(예를 들면 ORDER & ORDER 

LINE ITEM TABLES) 마스터 테이블을 먼저 연결 시켜야 한다. 

규칙에 근거한 옵티마이저의 경우에는 FROM CLAUSE의 마지막 테이블이 NESTED 

LOOP JOIN의 DRIVING TABLE이 된다. NESTED LOOP JOIN이 필요한 경우에는 

LOOP의 안쪽의 테이블에는 인텍스를 이용하는 것을 고려할 만하다. EXPLAIN 

PLAN과 TKPROF는 조인 타입, 조인 테이블 순서, 조인의 단계별 처리된 행들 

의 숫자들을 나타낸다. 

비용에 근거한 옵티마이저의 경우에는 WHERE CLAUSE에 보여지는 테이블의 순 

서는 옵티마이저가 가장 최적의 실행 계획을 찾으려고 하는 것과 상관 없다. 조 

인되는 테이블의 순서를 통제하기 위해서 ORDERED HINT를 사용하는 것이 낫다. 


SELECT ORDERS.CUSTID, ORDERS.ORDERNO, 

ORDER_LINE_ITEMS.PRODUCTNO --+ORDERED 

FROM ORDERS, ORDER_LINE_ITEMS 

WHERE ORDERS.ORDERNO = ORDER_LINE_ITEMS.ORDERNO; 


18. USE INDEX-ONLY SEARCHES WHEN POSSIBLE. 


가능하다면, 인덱스만을 이용하여 질의를 사용하라. 옵티마이저는 오직 인덱스만 

을 찾을 것이다. 옵티마이저는 SQL을 만족시키는 모든 정보를 인덱스에서 찾을 

수 있을 때, 인덱스만을 이용할 것이다. 예를들면, EMP테이블이 LANME과 

FNAME의 열에 복합 인덱스를 가지고 있다면 다음의 질의는 인덱스만은 이용할 

것이다. 


SELECT FNAME 

FROM EMP 

WHERE LNAME = ''SMITH''; 


반면에 다음의 질의는 인덱스와 테이블을 모두 참조한다. 


SELECT FNAME , SALARY 

FROM EMP 

WHERE LNAME = ''SMITH''; 


19. REDUNDANCY IS GOOD. 


WHERE CLAUSE에 가능한한 많은 정보를 제공하라. 예를 들면 WHERE COL1 = 

COL2 AND COL1 = 10이라면 옵티마이저는 COL2=10이라고 추론하지만, 

WHERE COL1 = COL2 AND COL2 = COL3이면 COL1=COL3이라고 초론하지는 

않는다. 


20. KEEP IT SIMPLE, STUPID. 


가능하면 SQL문을 간단하게 만들라. 매우 복잡한 SQL문은 옵티마이저를 무력 

화시킬 수도 있다. 때로는 다수의 간단한 SQL문이 단일의 복잡한 SQL문보다 

성능이 좋을 수도 있다. 오라클의 비용에 근거한 옵티마이저는 아직은 완벽하지 

않다. 그래서 EXPLAIN PLAN에 주의를 기울여야 한다. 여기서 비용이란 상대적인 

개념이기에 정확히 그것이 무엇을 의미하는지 알지 목한다. 하지만 분명한 것은 

적은 비용이 보다 좋은 성능을 의미한다는 것이다. 

종종 임시 테이블을 사용하여 많은 테이블들을 포함하는 복잡한 SQL 조인을 쪼 

개는 것이 효율적일 수도 있다. 예를 들면, 조인이 대량의 데이터가 있는 8개의 

테이블을 포함할 때, 복잡한 SQL을 두 세개의 SQL로 쪼개는 것이 낫을 수 있 

다. 각각의 질의는 많아야 네개정도의 테이블들을 포함하며 그 중간 값을 저장 

하는 것이 낫을 수 있다. 


21. YOU CAN REACH THE SAME DESTINATION IN DIFFERENT WAYS. 


많은 경우에, 하나 이상의 SQL문은 의도한 같은 결과를 줄 수 있다. 각각의 

SQL은 다른 접근 경로를 사용하며 다르게 수행한다. 예를들면, MINUS(-) 산술 

자는 WHERE NOT IN (SELECT ) OR WHERE NOT EXISTS 보다 더 빠르다. 

예를들면, STATE와 AREA_CODE에 각각 다른 인덱스가 걸려 있다. 인덱스에 

도 불구하고 다음의 질의는 NOT IN의 사용으로 인해 테이블 전체를 조사하게 

된다. 

SELECT CUSTOMER_ID 

FROM CUSTOMERS 

WHERE STATE IN (''VA'', ''DC'', ''MD'') 

AND AREA_CODE NOT IN (804, 410); 


그러나 같은 질의가 다음 처럼 쓰여진다면 인덱스를 사용하게 된다 

SELECT CUSTOMER_ID 

FROM CUSTOMERS 

WHERE STATE IN (''VA'', ''DC'', ''MD'') 

MINUS 

SELECT CUSTOMER_ID 

FROM CUSTOMERS 

WHERE AREA_CODE IN (804, 410); 


WHERE절에 OR을 포함한다면 OR대신에 UNION을 사용할 수 있다. 그래서, 

SQL 질의를 수행하기 전에 먼저 실행계획을 조심스럽게 평가해야 한다. 이러한 

평가는 EXPLAIN PLAN AND TKPROF를 이용하여 할 수 있다. 


22. USE THE SPECIAL COLUMNS. 


ROWID AND ROWNUM 열을 이용하라. ROWID를 이용하는 것이 가장 빠르다. 

예를들면, ROWID를 이용한 UPDATE는 다음과 같다. 


SELECT ROWID, SALARY 

INTO TEMP_ROWID, TEMP_SALARY 

FROM EMPLOYEE; 


UPDATE EMPLOYEE 

SET SALARY = TEMP_SALARY * 1.5 

WHERE ROWID = TEMP_ROWID; 


ROWID값은 데이터베이스에서 언제나 같지는 않다. 그래서, SQL이나 응용 프 

로그램이용시 ROWID값을 절대화 시키지 말라. 리턴되는 행들의 숫자를 제한 

시키기위해 ROWNUM을 이용하라. 만약에 리턴되는 행들을 정확히 모른다면 

리턴되는 행들의 숫자를 제한하기위해 ROWNUM을 사용하라 

다음의 질의는 100개 이상의 행들을 리턴하지는 않는다. 

SELECT EMPLOYE.SS#, DEPARTMENT.DEPT_NAME 

FROM EMPLOYEE, DEPENDENT 

WHERE EMPLOYEE.DEPT_ID = DEPARTMENT.DEPT_ID 

AND ROWNUM < 100; 


23.함축적인 커서대신 명시적인 커서를 사용하라. 


함축적 커서는 여분의 FETCH를 발생시킨다. 명시적 커서는 DECLARE, OPEN, 

FETCH와 CLOSE CURSOR문을 사용하여 개발자에 의해서 생성된다. 함축 커서는 

DELETE, UPDATE, INSERT와 SELECT문을 사용하면 오라클에 의해서 생성 

된다. 


24.오라클 병렬 쿼리 옵션을 찾아서 이용하라. 


병렬 쿼리 옵션을 사용하면, 보다 빠른 성능으로 SQL을 병렬로 실행할 수 있다. 

오라클 7에서는, 오직 FULL TABLE SCAN에 기반한 쿼리만이 병렬로 수행될 수 있다. 

오라클 8에서는, 인덱스가 분할되어있다면 INDEXED RANGE SCANS에 기반한 쿼리도 

병렬로 처리될 수 있다. 병렬 쿼리 옵션은 다수의 디스크 드라이버를 포함하는 

SMP와 MPP SYSTEM에서만 사용될 수 있다. 


오라클 서버는 많은 우수한 특성을 가지고 있지만, 이러한 특성의 존재만으로는 

빠른 성능을 보장하지 않는다. 이러한 특성을 위해서 데이터베이스를 조정해야하 

며 특성을 이용하기 위해 특별하게 SQL을 작성해야 한다. 예를 들면, 다음의 

SQL은 병렬로 수행될 수 있다. 


SELECT * --+PARALLEL(ORDERS,6) 

FROM ORDERS; 


25.네트웍 소통량을 줄이고 한번에 처리되는 작업량을 늘려라. 


ARRAY PROCESSING과 PL/SQL BLOCK을 사용하면 보다 나은 성능을 얻을 수 있고 

네트웍 소통량을 줄인다. ARRAY PROCESSING은 하나의 SQL문으로 많은 ROW를 처 

리할 수 있게 한다. 예를 들면, INSERT문에서 배열을 사용하면 테이블내의 

1,000 ROW를 삽입할 수 있다. 이러한 기술을 사용하면 주요한 성능 향상을 클라 

이언트/서버와 배치시스템에서 얻어질 수 있다. 


복합 SQL문은 과도한 네트웍 소통을 유발할 수 있다. 그러나 만일 SQL문이 단 

일 PL/SQL 블록안에 있다면, 전체 블록은 오라클 서버에 보내져서 그곳에서 수 

행되고, 결과는 클라이언트의 APPLICATION에게 돌아온다. 


개발자와 사용자는 종종 SQL을 데이터베이스에서 데이터를 검색하고 전송하는 

간단한 방법으로 사용한다. 때때로 직접적으로 SQL을 작성하지 않고 코드 발생 

기를 사용하여 작성한 APPLICATION은 심각한 성능 문제를 일으킨다. 이러한 성능 

감퇴는 데이터베이스가 커지면서 증가한다. 


SQL은 유연하기 때문에, 다양한 SQL문으로 같은 결과를 얻을 수 있다. 그러나 

어떤 문은 다른 것보다 더 효율적이다. 여기에 기술된 팁과 기법을 사용하면 빠 

르게 사용자에게 정보를 제공할 수 있는 APPLICATION과 리포트를 얻을 수 있다

블로그 이미지

낭만가을

,

티스토리폰트 나눔고딕으로 바꾸기

폰트를 변경하는 이유는 미관상 보기에도 좋지만 가독성을 높이기 위한 이유가 가장크다.

가독성이란 글이 얼마나 쉽게 읽히는가 하는 능률의 정도로 블로그를 방문한 사람에게 조금 더 쉽게 이해시키고 읽기 편하게 하기 위한 블로그의 중요한 요소중 하나이다. 요즘은 모바일로 블로그를 많이 보기 때문에 글의 가운데 정렬보다는 양쪽정렬이나 왼쪽정렬로 읽기 쉽게 하는것도 가독성을 높이는 좋은 방법이다.

 

 

 

 

 

나눔고딕 폰트 다운로드 파일

 NanumGothic.eot

 

 

HTML/CSS의 파일업로드 창으로 들어간 후 다운받은 위 파일을 추가해준다.

 

 

 

그리고 다시 HTML/CSS 수정창으로 들어와 아래쪽의 style.css창의 맨 윗부분에 아래소스를 추가해주면 된다.

미리보기 확인은 필수

 

 

@font-face {font-family:Nanum Gothic; src:url(images/Nanum Gothic.eot)};
body{font-family:나눔고딕; font-size: 11px;}
div{font-family:나눔고딕; font-size: 13px;}

 

일단 여기까지가 내가 적용한 방법(블로그 전체 폰트 변경)인데, 스킨마다 블로그마다 적용이 되는게 있고 안되는게 있는듯하다. 나도 처음 빨간색 나눔고딕부분을 한글로 적었을 때는 폰트가 적용이 안되어서 혹시하고 영문으로 바꾸어 주니 변경이 되었고 어떤분은 Nanum과 Gothic사이를 붙였을 땐 안되다가 띄어쓰기를 하니 적용이 되었다고 한다. 혹시라도 변경이 안된다면 아래 방법으로 해보는것도 좋을듯하다.

 

 


 

나눔고딕 폰트로 변경하는 두번째 방법은 구글 웹폰트 적용하기. 이전블로그에서 사용했던 방법이다.

 

구글 웹폰트:: http://www.google.com/fonts/earlyaccess 

 

1. 위 사이트로 들어가 찾기(Ctr+F)로 'Nanum' 혹은 'Korean'으로 검색한다.

 

 

 

 

 

2. 먼저 ①소스를 그대로 복사한 다음 내 블로그 관리자로 돌아온다.

 

 

 

3. 관리자 - HTML/CSS 편집 - Style.css 맨 윗부분 @charset "utf-8"; 와 body 사이에 복사한 ① 을 붙인다.

 

 

 

4. Ctr+F(찾기) -  모든 font-family를 찾아서 뒤에 ② Nanum Gothic을 붙여넣기 해준다.

(구글 웹폰트에 나온 예시를 보고 그대로 따라 붙이기 하면 된다.)

 

그냥 복사해서 붙이기하면 나눔고딕 폰트로 변경 끝.

*변경된 폰트를 적용했을 때, 기존 포스팅에 다른 폰트설정을 했었다면 폰트가 바뀌지 않는다.

 

*블로그 메인화면 폰트는 티에디션으로 메인 설정을 다시 해주면 나눔고딕으로 적용된다

블로그 이미지

낭만가을

,

티스토리 카테고리 목록과 검색 목록에 애드센스를 넣어야 하는가?


보통 블로그는 검색을 통해서 방문객이 유입됩니다. 방문객이 유입된 후 컨텐츠가 별로라면 곧바로 블로그를 떠나가겠지만, 컨텐츠가 괜찮다면 관련된 글을 찾을겁니다. 관련된 글을 찾는 방법에는 카테고리 분류를 선택하는 수가 있고 블로그 내부 검색을 통해 원하는 정보를 직접 찾을 수도 있습니다.


그런데 티스토리에 애드센스를 달아서 운영하고 있는 블로그를 보면 의외로 카테고리 목록과 검색결과에는 애드센스가 없는 블로그가 많습니다. 하지만 조금이라도 더 많은 수익을 내기 위해서는 조금이라더 더 많은 광고를 노출시켜야겠죠.


그래서 본문글이 아닌 카테고리 목록에도 애드센스 광고가 나올 수 있도록 넣어보도록 하겠습니다. 만약 카테고리 분류가 잘 되어 있어, 방문자가 카테고리를 활용하는 빈도가 높은 블로그라면 이 방법은 더욱 활용가치가 높아질 수 있을겁니다. 


특히나 카테고리 목록과 검색결과를 함께 사용하고 있는 스킨은 검색을 하더라도 애드센스를 노출 시킬 수 있다는 장점이 있습니다. 즉 카테고리 목록 + 검색결과 모두에 애드센스를 노출시킬 수가 있어서 2마리 토끼를 한번에 잡을 수가 있습니다!


티스토리 카테고리 목록 상단에 애드센스 넣기


자 우선 카테고리 목록과 검색결과 상단에 애드센스를 넣어보겠습니다.


티스토리 관리자에서 HTML/CSS 편집을 보면 skin.html을 수정할 수 있습니다. 여기에서 CTRL+F 를 눌러서 ##_list_conform_## 을 검색합니다. 아래 그림에서 보면 주황색으로 표시된 글자부분이 보이실겁니다. 

그 바로 윗부분, 그림에서 노란색으로 박스를 만들어둔 부분에 애드센스 광고를 넣으면, 카테고리 목록 상단에 애드센스가 표시됩니다. 




티스토리 카테고리 목록 하단에 애드센스 넣기


하단에 애드센스를 넣을때에는 상단보다는 조금 주의를 하셔야 합니다. 

카테고리 목록 상단에 애드센스를 넣을때와 마찬가지로 CTRL+F 를 눌러서 ##_list_conform_## 을 검색합니다. 아래 그림에서 노란색으로 표시된 부분이 카테고리 목록 하단에 애드센스를 넣을 수 있는 곳입니다.




결과보기


아래 그림은 티스토리 카테고리 목록에 애드센스를 넣은 것입니다. 사실 제 블로그에서 카테고리를 클릭해 보시거나, 검색을 해보시면 예제를 볼 수 있습니다. 

블로그 이미지

낭만가을

,


조작법 W 전진,A 왼쪽,D 앉기,D 전진 J 총, k 점프, L 수류탄 아래 메뉴중 3번째꺼를 선택해 플레이 하세요.




  





'플래시 게임 > 액션' 카테고리의 다른 글

디펜스게임 ㅡ트리니타스-  (0) 2018.06.13
스트리트 파이터2  (0) 2017.01.21
닌자 VS 좀비 2  (0) 2017.01.13
블로그 이미지

낭만가을

,


1. 구글 애드센스란 무엇인가?


현재 구글의 50% 이상의 수익은 구글 애드센스에서 나옵니다. 즉, 구글 애드센스는 현재 구글을 먹여살리고 있는 핵심 머니 창고 입니다.

애드센스란 블로그를 포함한 웹사이트에 수익을 창출하는 구글의 광고서비스 입니다. 수익은 구글과 사이트 운영자가 Sharing하는 방식입니다.

광고는 사용자 웹방문을 통한 성향을 분석해, 사용자 관심사와 연관된 광고가 표출되며, 사람들이 광고를 클릭할 때마다 수익이 발생한다. 

참고로 2017.1월 현재 현재 수익금액은 100달러가 넘어야 사용자에게 입금되는 방식을 채택하고 있습니다.


2. 왜 애드센스를 달아야 하는가?


애드센스는 즉 광고를 보여주고 돈을 받는 구조인데 내 블로그에 쓸데없이 광고를 붙히지는 않겠죠?

애드센스를 다는 이유는 돈을 받고 광고를 보여주기 위함입니다. 단 클릭을 할때만 광고비가 들어옵니다.


수익형 블로거에게 애드센스는 말 그대로 돈버는 수단 중 하나이고, 블로깅을 하다보면 한달에 몇백만원씩 벌었다는 분들을 심심치 않게 찾아볼 수 있습니다. 이런 관점에서 네이버 블로그는 티스토리 블로그에 비해 유입자수는 훨씬 많지만, 애드센스 광고를 달 수 없기 때문에 티스토리나 타사이트 블로그를 많이 운영하고 있습니다. 즉, 블로거 수익 모델이 광고를 통한 수익창출이라면, 네이버 블로그를 시작해 네이버 애드포스트를 다는 것보다는 티스토리 블로그를 만들어 애드센스를 다는 것이 더 수익이 좋다는 것을 말합니다.

애드센스 수익은 블로그 광고들 중 TOP 1입니다.

3. 구글 애드센스 블로그에 다는 법

아래와 같이 따라 해봅시다.


Step1. 애드센스 가입하고 블로그 맵핑하기


애드센스 가입 사이트에 접속한다.

 www.google.com/adsense

애드센스 사이트에 들어가면 아래의 화면이 표출되는데, 우측하단의 "지금가입하기" 를 클릭하세요.

만약, 애드센스 아이디가 있으시면 "로그인"을 을 눌러 다음페이지로 가시면 됩니다.



가입 절차는 간단합니다.

만약 지금 가입을 누르시면 아래의 화면이 표출되는데, 구글 아이디가 있으시면 구글 아이디를 이용할 수 있습니다.

로그인 후, 혹은 계정을 만든 후 2번 단계 웹사이트 입력단계가 있는데, 여기서 사용하실 티스토리 블로그 주소를 입력(타블로그도 입력이 가능)하시면 됩니다.

# 네이버 블로그에서는 현재 애드센스 광고 등록이 불가(네이버 블로그에서는 광고 스크립트를 변형하여 넣을 수 없는 구조)

3번 정보를 입력하시면 애드센스 계정을 만들고, 블로그를 맵핑하는 과정이 끝입니다.


Step2. 애드센스에서 광고만들기


예전같은 경우는 애드센스 계정을 만들고 블로그를 연결해주면, 블로그에 광고 등록없이 애드센스 신청 승인, 미승인이 결정되었습니다.

그러나 현재 최종승인을 하기위해서는 애드센스에서 광고를 만들고, 실제 블로그에 스크립트를 올리는 작업을 해야 최종 승인이 결정됩니다.
광고 만들기 절차는 아래와 같습니다.

1) 아래 애드센스 홈 페이지(애드센스 로그인 후 나오는 페이지)에서 상단 탭-내광고 클릭

2) 상단탭 바로 밑에 있는 +새광고 단위 클릭



3) 만들 광고 단위 이름 을 입력하고, 광고크기(개인 블로그에서 보여질 광고 크기)를 결정함.


4) 같은 화면에서 광고크기 밑에서 광고유형을 결정하고 저장 및 코드 생성 을 클릭
# 광고 유형은 텍스트 광고만 표출할지, 그림이나 움직이는 디스플레이 광고만 표출할지, 두개 다 표출할 지 결정하는 것임) 


5) 티스토리 블로그 혹은 사용할 블로그에 코드를 넣기 위해 광고코드 스크립트를 복사함



Step3. 티스토리 블로그에 애드센스 광고달기


CSS나 Javascript에 익숙하신 웹개발 경험이 있으신 분은 위의 광고 코드를 쉽게 삽입하실 수 있을 겁니다.
티스토리 플러그인을 이용하면 애드센스광고를 쉽게 달 수 있습니다.

1) 개인 티스토리 블로그 관리자 페이지에 들어감
2) 플러그인 - 플러그인 설정 클릭


3) 플러그인 중, 데스크탑 PC 광고를 위해서 Google AdSense (데스크탑 웹용) 를 클릭
    필요하면 모바일폰 광고를 위해 Google AdSense(모바일용) 을 클릭






4) 위의 Google AdSense 를 클릭하면 아래페이지가 나오는데 여기서
글에서 광고의 위치를 설정하고, 구글 애드센스에서 복사했던 스크립트를 붙여넣음 -> 실제 티스토리 블로그에 광고를 다는 과정
# 위의 Step2 - 5) 에 있었던 내용임


과정은 처음이신 분들을 위해 디테일하게 나열했지만,
요약하면 애드센스 계정만들고, 애드센스에서 광고단위를 만든 후, 티스토리의 플러그인을 통해 광고를 넣으면 됩니다~
참고로 말씀드리면, 구글 애드센스 포럼 2015에서 
336 *280크기의 직사각형 광고가 수익률이 가장 좋다고 하니, 광고를 넣으실 때 참고하시기 바랍니다.


4. 맺음말


애드센스 처음에는 힘들지만 몇번 도전해보면 어렵지 않게 하실수 있습니다.


블로그 이미지

낭만가을

,



Play game 누르시고 기다리시면 됩니다.

인트로 끝나면 게임 할수 있습니다.






'플래시 게임 > 액션' 카테고리의 다른 글

디펜스게임 ㅡ트리니타스-  (0) 2018.06.13
스트리트 파이터2  (0) 2017.01.21
메탈 슬러그  (0) 2017.01.13
블로그 이미지

낭만가을

,

양도세 계산은 양도차익 즉 '양도가액 - 취득가액 - 필요경비'를 계산해 나온 이익에 대해 과세합니다.


이 경우 양도세 절세를 위해 필요경비를 어디까지 인정받느냐가 매우 중요한데요



오늘은 그 중에서 집수리비에 대해 알아보겠습니다.



세법과 회계에서는 수리 또는 수선을 다음과 같은 기준을 통해 전혀 다른 판단을 합니다.



1. 수리 또는 수선을 해서 건물등의 내용연수가 연장했는가? (즉, 건물등이 사용될 수 있는 기간을 연장시킬만한 수리였는가?)


2. 또는 그 건물등의 가치를 증가시켰는가? (즉, 그 공사로 인해 건물등의 시가가 올라갔는가?)


이 두 기준중 하나라도 부합된다면 이를 '자본적 지출'이라 하여 회계에선 건물가액에 포함하며, 이 기준에 부합되지 않는 경우에는 '수익적 지출'이라 하여 당해 비용으로 처리합니다.



양도세법에서는 위에서 본 자본적지출 즉, 공사로 인해 건물등의 사용기간이 늘거나 가격이 인상되었을 때와 추가로 그 건물등의 용도변경 · 개량 또는 이용편의를 위해 지출한 비용에 대해 증빙서류로 실제 지출한 사실이 확인되는 경우 필요경비로 공제가능합니다.




그럼 실제 사례를 통해 살펴 보겠습니다.



1. 베란다 샤시, 방 확장등 내부시설 및 거실 인테리어 공사 : 내부시설 개량을 위한 것으로서 공제가능(심판청구 2001서1140,20011018)



2. 싱크대교체 및 수도꼭지 교체 와 화장실 변기교체 : 자본적 지출도 아니며, 개량등을 위한 것도 아니므로 공제불가(심사청구 양도 2008-0086,20080630)



3. 주방가구비용 및 도배공사 그리고 화장실 공사 : 수선비 성경의 수익적 지출에 해당되므로 공제불가(심판청구 2006서0062,20060509)



4. 지역난방에서 중앙난방으로 보일러시설 교체공사 : 자본적지출로 공제가능



사례를 보니 더 어렵다고요?



위 사례들은 판례의 일부일 뿐이며, 100% 그대로 적용된다고 할 수는 없습니다만, 그래도 가이드라인은 설정해 줄 수 있습니다.


예를 들어 화장실공사를 하는데 안방을 줄이고 그 안에 화장실과 간이 샤워실을 놓았다면, 자본적지출이라 할 수도 있고 이용편의 또는 개량을 위한 지출이므로 공제가능하겠죠


하지만 단지 변기교체 및 욕조 교체라면 공제받기는 힘들거구요



이상 공제가능한 수선과 불가한 수선에 대한 설명을 드렸습니다만, 가장 중요한 것은 지급내역 즉, 영수증 또는 계약서 등의 지급증빙을 잘 보관하는 것이겠죠


공사관련 증빙은 계약서, 견적서, 세금계산서등이 있을 수 있겠고, 대금지급증빙으로서는 입금증, 신용카드영수증, 현금영수증등이 있겠네요


공사관련 증빙과 대금지급증빙 다 있어야 하냐구요?


움~~~~ 왠만하면 다 있는게 좋겠죠




여기서 자주 묻는 질문과 답



1.  공사업체에서 세금계산서 받으려면 10% 더 주라는데요? 


☞ 10% 부가세 주고받는 건 정상적인것인데... ㅎㅎ 움... 아끼실 수는 있겠네요 간이영수증이라도 받으세요 대신 계좌이체등을 통해 지급사실은 명확히 해 두시구요 움... 간이영수증도 안 주면... 계약서나 견적서라도 받으시구요 그리고 중요한것!! 그 업체의 사업자등록번호는 꼭 알아야 합니다.



2. 세금계산서의 품목에인테리어라고만 되어 있습니다. 공제가능한가요?


☞ 위에서 설명한 기준에 해당된다면요... 제 아시는 분이 한 10여년전에 그러시더군요 그냥 인테리어라고 되어 있다면 세무서에서 어떤 공사인지 어떻게 알겠냐고 그래서 이것저것 귀찮아 자신은 인테리어라고 품목을 적어 받는다고... ㅎㅎ



3. 간이영수증을 받았어요 그런데 사업자등록번호가 없네요 공제가능한가요?


☞ 공사한 업체의 주민등록번호라도 아시나요? 모르시다면 공제불가능할 것 같습니다.



4. 실제 공사는 베란다공사와 함께 화장실공사을 했습니다. 헌데 세금계산서의 품목란에 화장실 공사 및 마루공사외 이렇게만 나와있습니다. 공제가능한가요?


☞ 움... 어려울 수도 있겠는데요


공제대상 공사와 불공제대상 공사가 섞여있는 듯 한데요


견적서라도 다시 받으시는게 좋을 듯 합니다.




마지막으로 양도관련 상담은 실제 증빙과 자료를 보고 할 때 가장 정확한 답이 나옵니다.



여러분께 가장 좋은 세무상담자는 바로 가까운 곳에 있는 세무사라고 전에도 말씀드렸구요



인터넷이나 전화상담만 하시지 마시고 돈 몇 푼 아낄려다 나중에 낭패를 볼 수도 있는바, 꼭 가까운 곳에 있는 세무사사무실을 방문해 자세한 상담을 받아보시기 바랍니다.

'생활상식 > 매매,전세,월세 정보' 카테고리의 다른 글

부동산 전세 계약시 주의사항  (0) 2018.06.13
블로그 이미지

낭만가을

,