-상계처리와 반제처리-

 

반제처리란? 반제는 현금의 지급이 이루어지는 처리 입니다. 예를 들면 다음과 같습니다.

발생 시 가지급금 100,000  //  현금 100,000

반제 시 현금 100,000   //  가지급금 100,000

*대표이사님이 현금 10만원을 달라고해서 가져갔다가 얼마뒤 10만원을 가져왔을때 요렇게 처리하시면 됩니다.

 

상계처리란? 상계란 현금의 이동이 없이 이루어지는 처리 입니다. 예를 들면 다음과 같습니다.

외상매출금 중 일부를 떨어야 할때 사장님이 ㅁ회사의 외상매출금을 떨어라고 할때


상계처리 시      잡손실 100,000 // 외상매출채권 100,000


1. 미수금과 미지급금

일반적 상거래 이외의 매매거래에서 발생하는 채권과 채무는 미수금이나 미지급금계정에 기록한다. 즉, 미수금이란 비품, 토지, 건물 등을 외상으로 매각한 경우에 발생한 채권을 말하며, 미지급금이란 비품, 토지, 건물 등을 외상으로 구입한 경우에 발생한 채무를 말한다. 미수금과 미지급금의 만기가 재무상태표일로부터 1년 이내인 경우 유동자산 또는 유동부채로 표시하고, 만기가 1년 이후에 도래하면 장기미수금·장기미지급금의 과목으로 하여 비유동자산 또는 비유동부채로 표시한다.

< 예제 > 다음의 거래사항에 대한 회계처리를 나타내시오.

  1. 컴퓨터 1대를 ₩300,000에 구입하고, 대금은 월말에 지급하기로 하다.
  2. a의 컴퓨터 구입대금을 지급하다.
  3. 취득원가 ₩1,000,000인 토지를 ₩1,200,000에 매각하였는데 매각대금 중 ₩500,000은 현금
    으로 받고, 나머지는 다음 달 10일에 받기로 하다.
  4. c의 미수금 ₩700,000을 현금으로 받다.

2. 선급금과 선수금

선급금·선수금이란 상품을 매매하는 과정에서 인도하기 전 계약금으로 대금의 일부를 미리 수수한 것을 말한다. 선급금·선수금의 만기가 재무상태표일로부터 1년 이내인 경우 유동자산 또는 유동부채로 표시하고, 만기가 1년 이후에 도래하면 장기선급금·장기선수금의 과목으로 하여 비유동자산 또는 비유동부채로 표시한다.

< 예제 > 다음의 거래사항에 대한 회계처리를 나타내시오.

  1. 상품 ₩100,000의 매입계약을 체결하고, 그 중 계약금 ₩20,000을 수표를 발행하여 지급하다.
  2. a의 주문상품이 도착되어 상품을 인수하고, 계약금 ₩20,000을 제외한 잔금 ₩80,000을 보통예금 계좌로 이체하다.
  3. A상사로부터 상품 ₩1,000,000을 주문받고, 계약금 ₩200,000을 현금으로 받다.
  4. 상품을 인도하고 계약금 ₩200,000을 제외한 잔금 ₩800,000을 당좌예금 계좌로 받다.

3. 가지급금과 가수금

가지급금·가수금은 현금을 이미 지급 또는 수령하였으나, 계정과목이나 금액이 확정되지 아니하여 임시로 설정하는 과목이다. 가지급금?가수금은 결산기말까지는 그 내역을 명확히 조사하여 확정된 계정과목으로 대체시켜 주어야 한다.
즉 가지급금이나 가수금은 결산시점의 재무제표에 나타낼 수 없는 과목이며, 재무제표에는 반드시 성격을 명확하게 규명하여 적절한 계정과목으로 표시하여야 한다.

< 예제 > 다음의 거래사항에 대한 회계처리를 나타내시오.

  1. 기획부 이창대 대리에게 제주도 출장을 명령하고 출장비 ₩200,000을 현금으로 지급하다.
  2. 기획부 이창대 대리가 돌아와서 출장비의 사용내역을 다음과 같이 밝히다.
    (교통비 : ₩90,000, 잡비 : ₩80,000, 잔여액 : ₩30,000)
  3. 출장 간 김아영 사원이 내용불명의
    ₩500,000을 당사 당좌예금계좌로 송금해오다.
  4. c의 김아영 사원의 송금액 ₩500,000은 당사 거래처로부터 외상매출금을 회수한 것으로 확인되다.

4. 대여금과 차입금

대여금·차입금이란 타인에게 현금을 빌려주거나 타인으로부터 현금을 빌려오는 경우에 발생하는 채권?채무를 말한다. 대여금의 경우 대여기간에 이자수익이 발생하고, 차입금의 경우 차입기간에 이자비용이 발생한다. 이자수익이나 이자비용은 기타수익이나 비용항목으로 처리하여야 한다. 대여금?차입금의 만기가 재무상태표일로부터 1년 이내인 경우 단기대여금·단기차입금의 과목으로 하여 유동자산 또는 유동부채로 표시하고, 만기가 1년 이후에 도래하면 장기대여금·장기차입금의 과목으로 하여 비유동자산 또는 비유동부채로 표시한다.

< 예제 > 다음의 거래사항에 대한 회계처리를 나타내시오.

  1. B상회에 현금 ₩200,000원 대여하고 차용증서를 받다(또는 B상회 발행의 약속어음을 받다). 대여기한은 6개월이다.
  2. a의 단기대여금에 대한 이자 ₩3,000을 현금으로 받다.
  3. B상회에 대한 대여금의 원금 ₩200,000을 보통예금 계좌로 회수하다. 그러나 마지막 월의 발생이자 ₩3,000은 차후에 별도로 수취하기로 하다.
  4. C은행에서 현금 ₩500,000을 8개월 후에 상환하기로 하고 단기차입하다.
  5. d의 단기차입금이 상환기일이 되어,
    이자 ₩10,000을 포함한 전액을 수표를 발행하여 지급하다.

5. 예수금

예수금이란 일반적 상거래 이외에서 발생한 일시적 제예수액으로 한다. 궁극적으로 제3자에게 지급하여야 할 금액을 임시 보관하는 형태로 하여 계상한 부채를 말한다.

< 예제 > 다음의 거래사항에 대한 회계처리를 나타내시오.
당월분의 종업원급여를 다음과 같이 지급하고, 원천징수세액을 차감한 잔액은 현금으로 지급하다.

사원명총급여액원천징수세액차감지급액
소득세주민세
이선이
김강이
\200,000
150,000
\12,000
9,000
\1,200
900
\186,800
140,100
₩350,000₩21,000₩2,100₩326,900



'재무관리(회계)' 카테고리의 다른 글

지체상금 ( 늦었으니 토해라)  (0) 2012.11.08
재무재표  (0) 2012.10.19
미지급금 이란. ?  (0) 2012.08.14
회계용어 정리 모음  (0) 2012.08.03
Posted by 사라링

동적쿼리

2012. 11. 19. 14:59

<펌글:http://blog.paran.com/devtopia/13828096>

실무에서 SQL문을 작성하다 보면 동적인 쿼리문 작성을 작성해야 할 때가 많이 있다.

이때 지겹게 if~else if 문을 통해 아주 지저분한 소스 코드를 생성할 때가 왕왕 있게 마련이다.

이때 ibatis에서는 아주 깔금하게 구현할 수 있는 방법을 제공해 준다.

 

<statement id="dynamicGetAccountList" resultMap="account-result">

  select * from account

  <dynamic prepend="WHERE">

    <isNotNull prepend="AND" property="firstName">

      (acc_first_name = #firstName#

    <isNotNull prepend="OR" property="lastName">

       acc_last_name = #lastName#

    </isNotNull>

    )

    </isNotNull>

    <isNotNull prepend="AND" property="emailAddress">

      acc_email like #emailAddress#

    </isNotNull>

    <isGreaterThan prepend="AND" property="id" campareValue="0">

      acc_id = #id#

    </isGreaterThan>

  </dynamic>

  order by acc_last_name

</statement>

 

상황에 의존적인 위 동적 statement로 부터 각각 다른 16가지의 SQL문이 생성될 수 있다. if-else구조와 문자열 연결을 코딩하는 경우 수백라인이 필요할 수도 있다.

동적 statement를 사용하는 것은 몇몇 조건적인 태그를 추가하는 것처럼 간단하게 작성할 수 있다.

 

이러한 조건들에 대해 간단히 정리하면 아래와 같다.

 

바이너리 조건 요소-바이너리 조건 요소는 정적값 또는 다른 프로퍼티값을 위한 프로퍼티값과 비교한다. 만약 결과가 true라면 몸체부분의 SQL쿼리가 포함된다.

 

바이너리 조건 속성

prepend

Statement에 붙을 오버라이딩 가능한 SQL부분(옵션)

property

비교되는 property(필수)

compareProperty

비교되는 다른 property (필수 또는 compareValue)

compareValue

비교되는 값(필수 또는 compareProperty)

 

<isEqual>

프로퍼티가 값 또는 다른 프로퍼티가 같은지 체크

<isNotEqual>

프로퍼티가 값 또는 다른 프로퍼티가 같지 않은지 체크

<isGreaterThan>

프로퍼티가 값 또는 다른 프로퍼티 보다 큰지 체크

<isGreaterEqual>

프로퍼티가 값 또는 다른 프로퍼티 보다 크거나 같은지 체크

<isLessThan>

프로퍼티가 값 또는 다른 프로퍼티 보다 작은지 체크

<isLessEqual>

프로퍼티가 값 또는 다른 프로퍼티 보다 작거나 같은지 체크

 

사용법 예제)

<isLessEqual prepend="AND" property="age" compareValue="18">

  ADOLESCENT = 'TRUE'

</isLessEqual>

 

단일 조건 요소-단일 조건 요소는 특수한 조건을 위해 프로퍼티의 상태를 체크한다.

prepend

statement에 붙을 오버라이딩 가능한 SQL부분(옵션)

property

체크하기 위한 프로퍼티(필수)

 

<isPropertyAvailable>

프로퍼티가 유효한지 체크

(이를 테면 파라미터의 프로퍼티이다.)

<isNotPropertyAvailable>

프로퍼티가 유효하지 않은지 체크

(이를 테면 파라미터의 프로퍼티가 아니다.)

<isNull>

프로퍼티가 null인지 체크

<isNotNull>

프로퍼티가 null이 아닌지 체크

<isEmpty>

Collection, 문자열 또는 String.valueOf() 프로퍼티가 null이거나 empty(“” or size() < 1)인지 체크

<isNotEmpty>

Collection, 문자열 또는 String.valueOf() 프로퍼티가 null 이아니거나 empty(“” or size() < 1)가 아닌지 체크

 

사용법 예제)

<isNotEmpty prepend="AND" property="firstName">

  FIRST_NAME = #firstName#

</isNotEmpty>


다른 요소들

Parameter Present : 파라미터 객체가 존재하는지 체크

Parameter Present Attributes : prepend - the statement에 붙을 오버라이딩 가능한 SQL부분

<isParameterPresent>

파라미터 객체가 존재(not null)하는지 체크

<isNotParameterPresent>

파라미터 객체가 존재하지(null) 않는지 체크

 

사용법 예제)

<isNotParameterPresent prepend="AND">

EMPLOYEE_TYPE = 'DEFAULT'

</isNotParameterPresent>


Iterate : 이 태그는 Collection을 반복하거나 리스트내 각각을 위해 몸체 부분을 반복한다.

Iterate Attributes :

  prepend - the statement에 붙을 오버라이딩 가능한 SQL부분 (옵션)

  property - 반복되기 위한 java.util.List타입의 프로퍼티 (필수)

  open - 반복의 전체를 열기 위한 문자열, 괄호를 위해 유용하다. (옵션)

  close - 반복의 전체를 닫기 위한 문자열, 괄호를 위해 유용하다. (옵션)

  conjunction - 각각의 반복 사이에 적용되기 위한 문자열, AND 그리고 OR을 위해 유용하다. (옵션)

<iterate>

java.util.List 타입의 프로퍼티 반복


사용법 예제)

<iterate prepend="AND" property="userNameList" open="(" close=")" conjunction="OR">

username = #userNameList[]#

</iterate>


주의:iterator요소를 사용할 때 리스트 프로퍼티의 끝에 중괄호[]를 포함하는 것은 중요하다. 중괄호는 문자열처럼 리스트를 간단하게 출력함으로부터 파서를 유지하기 위해 리스트처럼 객체를 구별한다.




== Array 를 list 로 


 Integer[] nums = { 1,2,3,4,5,6,7,8,9,10 };

    List<Integer> numList = Arrays.asList(nums);
    for (Integer integer : numList) {
        System.out.println(integer);
    }


Posted by 사라링

jQuery로 웹사이트에서 마우스 스크롤을 했을때 봉봉 같이 따라 뎅기는 배너를 맨들려고 했는데 계산하기 귀찮아서 


어떤 머리좋은 사람이 분명히 훌러그인을 만들어 놨을것이라 확신하고 구글에게 물어보았다.


검색능력이 시원찮아서 그런가 많이 검색될 줄 알았더만 내가 원하는 훌러그인을 겨우 하나 발견했다.




"jquery.scrollfollow.js" 라는 훌러그인이었다.


사이트 주소 : http://kitchen.net-perspective.com/open-source/scroll-follow/



그런데 요 훌러그인을 옛날에 맨들어서 그런지 최신버전 jQuery 에서는 오류가 나서 정상적으로 작동하지 않았다.

(※ 요 훌러그인은 jQuery 1.2.6 에서 테스트 했다고 함. 참 옛날에 맹근것인가 보다)



꼴랑 요 훌러그인 하나 때문에 jQuery 버전을 후진걸로 바꿀수 없지 아니한가. 다른 훌러그인을 검색해 봐도 잘 검색도 안되고 해서 그냥 최신 버전 jQuery 에서 돌아가도록 소스를 살짝 수정하기로 했다.


현재 jQuery 1.7.1 을 쓰고 있는데 잘 작동한다.


수정버전 다운로드 ↓

 jquery.scrollfollow.js




◎ 사용법

사용법은 http://kitchen.net-perspective.com/open-source/scroll-follow/ 요기에 나와있는 대로 하면 된다. 단, container 옵션은 잘 안될것 같다.

아래 코드로 테스트한 결과는 <== 요 옆에 꾸리하게 따라뎅기는 배너창이다.


※ 꿈지럭 거릴 div css 속성에서 position 은 absolute 나 relative 로 해야 한다.

※ 내가 이상하게 수정해서 그런지 몰라도 top 속성도 줘야 쪽바로 잘 움직이는듯 하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="jquery.scrollfollow.js"></script>
     
    <script>
        $(document).ready(function(){
            $("#testbanner").scrollFollow({
                speed : 800,    // 꿈지럭 거리는 속도
                offset : 200     // 웹페이지 상단에서 부터의 거리(바꿔보면 뭔지 안다)
            });
        });
    </script>
     
    <style>
        #testbanner{
            position: absolute;
            border: 3px solid #f00;
 
            left : 100px;
            top : 30px;
            width: 150px;
            height: 300px;
        }
    </style>
</head>
 
<body>
    <div id="testbanner">
        봉봉 배너 테스트<br/>
        <a href="/">홈으로</a>
    </div>
</body>
</html>



기본옵션으로만 쓰고 싶으면 딸랑 요렇게만 해도 된다.

1
$("#testbanner").scrollFollow();



움직일때 easing 효과를 주고 싶으면 jQuery UI 훌러그인(jquery-ui-x.x.x.custom.min.js)을 뽓 추가시켜 easing 옵션을 주면 된다.

※ easing 옵션으로 가능한 문자열은 http://jqueryui.com/demos/effect/easing.html 요기에 있는 문자열 중에 하나로~

1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="jquery-ui-1.8.20.custom.min.js"></script>
<script type="text/javascript" src="jquery.scrollfollow.js"></script>
     
<script>
    $(document).ready(function(){
        $("#testbanner").scrollFollow({
            easing : "easeInOutBack"
        });
    });
</script>


그 밖에 다른 옵션은 http://kitchen.net-perspective.com/open-source/scroll-follow/ 요기 참고~

'J-Query' 카테고리의 다른 글

extjs 공부해 보자.  (0) 2012.11.22
jquey ready? $(function(){});?  (0) 2012.11.22
jQuery 라이브러리 사용 방법  (1) 2012.11.15
sliding  (0) 2012.11.15
컬럼 추가 삭제  (0) 2012.09.10
Posted by 사라링

jquery 를 사용하려면 문서내에 jquery 라이브러리를 정의해줘야 하는데, jQuery 라이브러리를 직접 다운로드 해서 정의해주는 방법과, CDN 서비스를 이용해서 정의하는 방법이 있다.

위의 링크로 접속한뒤, DOWNLOAD JQUERY 라는 타이틀의 섹션에서 최신(현재의) 버전을 다운로드 받은뒤 head 영역에서 <script> 태그로 불러와주면 된다. (당연히 다운로드받은 파일의 위치대로 지정해줘야 한다)
 

<head>

<script type="text/JavaScript" src="jquery-1.4.2.js"></script>

</head> 

 


CDN(content delivery network) 서비스 이용하기 
CDN 서비스는 분산 처리를 통해 빠른 컨텐츠를 제공한다. 구글, 마이크로소프트 에서 CDN 서비스를 무료로 제공하고 있으므로 링크 형식으로 불러와 사용하면 된다.
위와같은 링크로 접속한뒤, CDN HOSTED JQUERY 라는 타이틀의 섹션에서 Google Ajax API CDN, Microsoft CDN,jQuery CDN (via Media Temple) 중 원하는 것을 골라 적용시키면 된다.

google CDN 서비스에 대해서는 아래의 링크를 참고해도 된다.
http://code.google.com/intl/ko-KR/apis/libraries/devguide.html#jqueryUI

아래와 같은 형태로 jquery 라이브러리를 적용할 문서에 적용시킨다.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script> 



 
jquery 'CSS themes' CDN 서비스로 이용하기 
jquery themes CSS 또한 CDN 서비스로 제공되고 있다. 아래링크로 접속한뒤 여러가지 테마를 클릭해보면 즉석에서 적용되며 미리보기가 가능하다. 원하는 테마를 link 태그를 통해 문서내에 링크해주면 된다.
http://the-xavi.com/articles/jquery-ui-css-themes-hosted-on-cdn


하지만 직접 수정이 가능한걸 원한다면 아래링크로 들어가서 우측 'Theme' 에서 원하는 테마를 선택한뒤 다운로드해서 다운로드한 파일을 링크시켜줘야한다. 다운로드 받은 css파일을 직접수정 가능하기 때문에 간편하게 사용자 정의 테마를 만들어볼수도 있다.
http://jqueryui.com/download 

'J-Query' 카테고리의 다른 글

jquey ready? $(function(){});?  (0) 2012.11.22
jquery 움직이는 스크롤 사이드바  (0) 2012.11.15
sliding  (0) 2012.11.15
컬럼 추가 삭제  (0) 2012.09.10
jQuey 1.8 이 정식 릴리즈 되었습니다.  (0) 2012.08.24
Posted by 사라링

sliding

2012. 11. 15. 20:31

How does it work?

링크:  
http://www.smoothdivscroll.com/#quickdemo

The basic principle behind Smooth Div Scroll is simple: let one div (scrollableArea) scroll inside another div (scrollWrapper). Two hotspots are used to trigger the actual scrolling (scrollingHotSpotLeft andscrollingHotSpotRight). You can also let the user scroll using touch, the mouse wheel or just let the scroller auto scroll. The scrollWrapper determines how much of the scrollableArea that should be visible - everything outside the scrollWrapper is hidden from view.

Illustration showing the different elements of Smooth Div Scroll

Quick demo

Here's a quick demo of Smooth Div Scroll in action. I've set the options so the user can scroll using the hotspots or the mouse wheel . I've also told the scroller to start auto scrolling as soon as the page loads and stop auto scrolling as soon as the user interacts with the scoller. Touch scrolling is not enabled for this particular demo - check out the touch demo if you want to try touch scrolling.

RiverTrainLeafDogFieldGnomePencilsGolf

The jQuery code for this particular demo looks like this:


<script type="text/javascript">
	$(document).ready(function () {
		$("#makeMeScrollable").smoothDivScroll({
			mousewheelScrolling: "allDirections",
			manualContinuousScrolling: true,
			autoScrollingMode: "onStart"
		});
	});
</script>

In this particular demo I've set some options that override the default options:

  • mousewheelScrolling: "allDirections" - The user can scroll using the mouse wheel, both horizontally and vertically (not all mice have a vertical scrolling function though)
  • manualContinuousScrolling: true - The scroller becomes endless in both directions when the user scrolls manually (using the hotspots or the mousewheel).
  • autoScrollingMode: "onStart" - The scroller will start auto scrolling as soon as the page has loaded and stop auto scrolling as soon as the user interacts with the scoller.

I've used only a few of all the available options. You'll find all the options described here.) In the demo above the HTML-code looks like this:


	<div id="makeMeScrollable">
		<img src="images/demo/field.jpg" alt="Field" id="field" />
		<img src="images/demo/gnome.jpg" alt="Gnome" id="gnome" />
		<img src="images/demo/pencils.jpg" alt="Pencils" id="pencils" />
		<img src="images/demo/golf.jpg" alt="Golf" id="golf" />
		<img src="images/demo/river.jpg" alt="River" id="river" />
		<img src="images/demo/train.jpg" alt="Train" id="train" />
		<img src="images/demo/leaf.jpg" alt="Leaf" id="leaf" />
		<img src="images/demo/dog.jpg" alt="Dog" id="dog" />
	</div>

As you can see there is a surrounding div with the id makeMeScrollable. This is the element that I turn into a Smooth Div Scroll. Inside this div you can put any content - not just images.

Please note that you may have to give the elements that you put inside the scrollable area some styling to make sure that they are positioned like you want them. Here's a good template to start with:


#makeMeScrollable div.scrollableArea *
{
	position: relative;
	display: block
	float: left;
	margin: 0;
	padding: 0;
	/* If you don't want the images in the scroller to be selectable, try the following
		block of code. It's just a nice feature that prevent the images from
		accidentally becoming selected/inverted when the user interacts with the scroller. */
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-o-user-select: none;
	user-select: none;
}

In this example there's no space between the elements inside the scrollable area. If you want a space between them, use padding and not margin since margin tends to generate errors in Internet Explorer.


'J-Query' 카테고리의 다른 글

jquery 움직이는 스크롤 사이드바  (0) 2012.11.15
jQuery 라이브러리 사용 방법  (1) 2012.11.15
컬럼 추가 삭제  (0) 2012.09.10
jQuey 1.8 이 정식 릴리즈 되었습니다.  (0) 2012.08.24
jQuery.slide()  (0) 2012.07.10
Posted by 사라링

숫자 함수.

2012. 11. 15. 19:23

ABS(n) 

ABS함수는 절대값을 계산하는 함수입니다. 

SQL>SELECT ABS Absolute FROM dual ; 

Absolute
-------- 
       10
(-10)



CEIL(n)
 

CEIL함수는 주어진 값보다는 크지만 가장 근접하는 최소값을 구하는 함수입니다. 

SQL>SELECT CEIL TEST FROM dual ; 

  TEST
------- 
      11 
(10.1)

SQL>SELECT CEIL TEST FROM dual ; 

   TEST 
------- 
     -10
(-10.1)



EXP(n)

EXP함수는 주어진 값의 e의 승수를 나타냅니다. 
e는 2.171828183..입니다. 



FLOOR(n)
FLOOR함수는 주어진 값보다 작거나 같은 최대 정수값을 구하는 함수입니다. 
CEIL 함수와 비교해 보세요. 

SQL>SELECT FLOOR TEST FROM dual ; 

    TEST 
 ------- 
       10 
(10.1)

SQL>SELECT FLOOR TEST FROM dual ; 
   
    TEST 
------- 
      -11
(-10.1)



LN(n)
 

LN함수는 주어진 값의 자연로그 값을 반환합니다. 



MOD(m, n)
 

MOD함수는 m을 n으로 나누어 남은 값을 반환한다. n이 0일 경우 m을 반환합니다. 

SQL>SELECT MOD TEST FROM dual ; 

    TEST 
  ------- 
         1
(9, 4)



POWER(m, n)
 

POWER함수는 m의 n승 값을 계산합니다. 

SQL>SELECT POWER TEST FROM dual ; 
       
      TEST 
   ------- 
         16
(4, 2)



ROUND(n, [m])

ROUND함수는 n값의 반올림을 하는 함수로 m은 소숫점 아래 자릿수를 나타낸다. 

SQL>SELECT ROUND TEST FROM dual ; 

      TEST 
   ------- 
      192.1 
(192.123, 1)

SQL>SELECT ROUND TEST FROM dual ; 

     TEST 
   ------- 
       190
(192.123, -1)



SIGN(n)
 

SIGN함수는 n<0일 경우 -1DFM N=0일 경우 0을 N>0일 경우 1을 반환합니다. 



SQRT(n)

SQRT함수는 n값의 루트값을 계산한다. n은 양수여야 합니다. 



TRUNC(n, m) 


 TRUNC함수는 n값을 m 소숫점 자리로 반내림한 값을 반환합니다. 
 ROUND 함수와 비교해 보세요..

SQL>SELECT TRUNCTEST FROM dual ; 

    TEST 
 ------- 
     7.55 

SQL>SELECT TRUNC TEST FROM dual ; 

    TEST 
 ------- 
     5200
 (5254.26, -2 )
(7.5597, 2)


'오라클' 카테고리의 다른 글

connect by  (0) 2012.12.17
패스워드 암호화 .  (0) 2012.12.07
계층형구조 (CONNECT BY)  (0) 2012.11.05
토드 에서 벌레의 의미..;  (0) 2012.11.02
TOAD 단축키  (0) 2012.10.31
Posted by 사라링

 지체상금
정당한 사유 없이 계약의 이행을 지체한 계약자는 지체상금을 내야 합니다. 

계약기간 내에 계약자의 책임 없는 사유로 계약이행이 지체된 경우에는 계약기간 종료 전에 계약기간 연장신청을 할 수 있습니다.
 지체상금 주소복사 즐겨찾기에추가
 정당한 이유 없이 계약의 이행을 지체한 계약자는 지체상금을 내야 합니다(「국가를 당사자로 하는 계약에 관한 법률」 제26조제1항).
- 계약자(국가기관과 지방자치단체 제외)는 계약서에 정한 준공기한에 공사를 완성하지 않은 때에는 다음에 따라 계산된 지체상금을 현금(체신관서 또는 「은행법」의 적용을 받는 은행이 발행한 자기앞수표 포함)으로 내야 합니다[「국가를 당사자로 하는 계약에 관한 법률 시행령」 제74조제1항 및 「(계약예규)공사계약일반조건」(기획재정부 계약예규 제116호, 2012. 9. 22. 발령·시행) 제25조제1항].
지체상금 = 계약금액 x 지체상금률 x 지체일수
※ 지체상금은 동일한 계약에서 계약자에게 지급될 대가, 대가지급지연에 대한 이자 또는 그 밖의 예치금 등과 상계할 수 있습니다(「국가를 당사자로 하는 계약에 관한 법률」 제15조제3항 및 「(계약예규)공사계약일반조건」 제25조제7항).
 계약금액
- 기성부분에 대해 검사를 거쳐 이를 인수한 경우(인수하지 않고 관리·사용하고 있는 경우를 포함)에는 그 부분에 상당하는 금액을 계약금액에서 공제한 금액을 기준으로 지체상금을 계산해야 합니다. 이 경우 기성부분의 인수는 성질상 분할할 수 있는 공사에 대한 완성부분으로서 인수하는 것에 한합니다(「국가를 당사자로 하는 계약에 관한 법률 시행령」 제74조제2항).
- 장기계속공사계약에서 계약금액은 연차별 계약금액을 말합니다(「국가를 당사자로 하는 계약에 관한 법률 시행령」 제74조제1항).
 지체상금률
- 공사계약의 지체상금률은 1000분의 1입니다(「국가를 당사자로 하는 계약에 관한 법률 시행규칙」 제75조제1호).
 지체일수
- 지체일수는 다음에 따라 산정합니다(「(계약예규)공사계약일반조건」 제25조제6항).
· 준공기한(계약서의 준공신고서 제출기일) 내에 준공신고서를 제출한 경우에는 준공검사에 소요된 기간은 지체일수에 산입하지 않습니다.
√ 다만, 준공기한 이후에 시정조치를 한 경우에는 시정조치를 한 날부터 최종 준공검사에 합격한 날까지의 기간(검사기간이 「(계약예규)공사계약일반조건」 제27조에서 정한 기간을 초과한 경우에는 「(계약예규)공사계약일반조건」 제27조에 정한 기간에 한함. 이하 같음)을 지체일수에 산입합니다.
· 준공기한을 경과하여 준공신고서를 제출한 경우에는 준공기한 익일부터 준공검사(시정조치를 한 때에는 최종 준공검사)에 합격한 날까지의 기간을 지체일수에 산입합니다.
· 준공기한의 말일이 공휴일(관련 법령에 따라 발주기관의 휴무일인 경우 포함)인 경우 지체일수는 공휴일의 익일 다음날부터 기산합니다.
- 다음 중 어느 하나에 해당하는 계약자의 책임 없는 사유로 계약이행이 지체되었다고 인정될 때에는 그 해당 일수를 지체일수에 산입하지 않습니다(「국가를 당사자로 하는 계약에 관한 법률 시행령」 제74조제1항 및 「(계약예규)공사계약일반조건」 제25조제3항).
1. 태풍·홍수·그 밖의 악천후, 전쟁 또는 사변, 지진, 화재, 전염병, 폭동, 그 밖에 계약당사자의 통제범위를 초월하는 사태의 발생 등의 사유로 인하여 계약당사자 누구의 책임에도 속하지 않는 경우
2. 계약자가 대체 사용할 수 없는 중요 관급자재 등의 공급이 지연되어 공사의 진행이 불가능하였을 경우
3. 계약자의 부도 등으로 연대보증인이 보증시공을 할 경우
√ 위에 따라 지체일수에 산입하지 않는 기간은 부도 등이 확정된 날(부도, 파산, 해산 등의 사유로 사실상 공사이행을 할 수 없었던 날)부터 보증시공을 지시한 날까지로 합니다. 다만, 공동계약에 있어 공동이행방식에 의하는 경우는 공동수급체 구성원 중 마지막으로 남은 구성원의 부도 등이 확정된 날을 기준으로 하고, 분담이행방식에 의하는 경우는 분담구성원의 부도 등이 확정된 날을 기준으로 합니다(「(계약예규)공사계약일반조건」 제25조제4항).
4. 계약자의 부도 등으로 보증기관이 보증이행업체를 지정하여 보증시공할 경우
√ 위에 따라 지체일수에 산입하지 않는 기간은 발주기관으로부터 보증채무 이행청구서를 접수한 날부터 보증이행개시일 전일까지(단, 30일 이내에 한함)로 합니다(「(계약예규)공사계약일반조건」 제25조제5항).
5. 설계변경으로 인하여 준공기한에 계약을 이행할 수 없을 경우
6. 원자재의 수급 불균형으로 인하여 해당 관급자재의 조달지연 또는 사급자재(관급자재에서 전환된 사급자재 포함)의 구입곤란 등 계약자의 책임에 속하지 않는 사유로 인하여 지체된 경우
 지체상금의 사용
- 계약의 이행을 위한 예산이 없거나 부족한 경우에는 지체상금을 해당 계약의 이행을 위해 직접 사용할 수 있습니다(「국가를 당사자로 하는 계약에 관한 법률」 제18조제3항 단서 및 제26조제3항).
 계약기간의 연장 주소복사 즐겨찾기에추가
 계약기간의 연장 사유
- 계약자는 다음 중 어느 하나에 해당하는 경우에는 계약기간 연장신청을 할 수 있습니다(「(계약예규)공사계약일반조건」 제26조제1항 본문 및 제6항).
· 위의 1부터 7까지의 사유 중 어느 하나의 사유가 계약기간 내에 발생한 경우
· 계약자의 의무불이행으로 인하여 발생한 지체상금이 계약보증금 상당액에 달한 경우로서 계약목적물이 국가정책사업 대상이거나 계약의 이행이 노사분규 등 불가피한 사유로 인하여 지연된 경우
 계약기간의 연장신청
- 계약자는 위의 1부터 7까지의 사유 중 어느 하나의 사유가 계약기간 내에 발생한 경우에는 계약기간 종료 전에 지체 없이 계약담당공무원과 공사감독관에게 수정공사공정표를 첨부한 서면으로 계약기간의 연장신청을 해야 합니다(「(계약예규)공사계약일반조건」 제26조제1항 본문).
· 다만, 연장사유가 계약기간 내에 발생하여 계약기간 경과 후 종료된 경우에는 사유가 종료된 후 즉시 계약기간의 연장신청을 해야 합니다(「(계약예규)공사계약일반조건」 제26조제1항 단서).
- 연장청구를 승인받을 경우 연장기간에 대하여는 지체상금을 부과하지 않습니다(「(계약예규)공사계약일반조건」 제26조제3항).
 계약금액 조정
- 계약기간을 연장한 경우에는 변경된 내용에 따라 실비를 초과하지 않는 범위에서 계약금액을 조정합니다(「(계약예규)공사계약일반조건」 제26조제4항 본문).
· 다만, 위의 4,5의 경우에는 계약금액을 조정하지 않습니다(「(계약예규)공사계약일반조건」 제26조제4항 단서).
- 계약자는 「공사계약일반조건」 제40조에 따른 준공대가(장기계속계약의 경우에는 각 차수별 준공대가) 수령 전까지 계약금액 조정신청을 해야 합니다(「(계약예규)공사계약일반조건」 제26조제5항).

Posted by 사라링

계층형구조 (CONNECT BY)

2012. 11. 5. 10:34

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

[예]


SELECT

        LEVEL AS LEV

      , MENU.*

FROM

        TBL_MENU  MENU

WHERE               MENU_TYPE_CD = '1'

START WITH          MENU.MENU_ID = 'TOP'

CONNECT BY PRIOR    MENU.MENU_ID = MENU.UP_MENU_ID

ORDER SIBLINGS BY   MENU_SEQ


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

[풀이]


UP_MENU_ID 가 'TOP'인 것부터 순환고리를 시작하며 

동일 레벨일경우(즉, UP_MENU_ID 가 'TOP'으로 하는 여러 ROW)는 MENU_SEQ가 먼저인것 부터 계층구조

그리고 마지막으로 MENU_TYPE_CD가 '1'인것만 최종 추출


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



◈ LEVEL 예약어 : depth


◈ CONNECT BY의 실행순서

    (1) START WITH 절

    (2) CONNECT BY 절

    (3) WHERE 절


◈ 

    START WITH : 시작위치 설정 (서브쿼리를 사용가능)

    CONNECT BY : 순환고리의 조건 (서브쿼리를 사용불가)

    ORDER SIBLINGS BY : 같은 레벨중 순환고리 순서를 정할때 사용


◈ PRIOR 의 위치 

    (1) CONNECT BY PRIOR 자식컬럼 =       부모컬럼  ==> 부모에서 자식으로 트리 구성

    (2) CONNECT BY       자식컬럼 = PRIOR 부모컬럼  ==> 자식에서 부모으로 트리 구성


◈ 데이터가 많아질 경우....


    - START WITH MENU_ID = 'TOP' 

          MENU_ID 컬럼에 index가 생성되어 있지 않는다면 속도를 보장할 수 없습니다.


    - CONNECT BY PRIOR MENU_ID = UP_MENU_ID 

          역시 PRIOR 쪽의 컬럼값이 상수가 되기 때문에 UP_MENU_ID컬럼에 index를 생성하여야 CONNECT BY의 속도를 보장할 수 있습니다.


    - 계층구조를 CONNECT BY, START WITH로 풀면 부분범위 처리가 불가능하고 Desc으로 표현하기가 어렵 습니다.


◈  

    (1) '상품' 메뉴는 모두 출력 안함.

    SELECT

            LEVEL AS LEV

          , MENU.*

    FROM    

            TBL_MENU  MENU

    WHERE               MENU.MENU_NAME  <> '상품'

    START WITH          MENU.MENU_ID = 'TOP'

    CONNECT BY PRIOR    MENU.MENU_ID = MENU.UP_MENU_ID

    ORDER SIBLINGS BY   MENU_SEQ 

    

    (2) '상품'메뉴 밑으로 모든 메뉴는 출력안함.

    SELECT

            LEVEL AS LEV

          , MENU.*

    FROM    

            TBL_MENU  MENU

    START WITH          MENU.MENU_ID    = 'TOP'

    CONNECT BY PRIOR    MENU.MENU_ID    = MENU.UP_MENU_ID

    AND                 MENU.MENU_NAME  <> '상품'

    ORDER SIBLINGS BY   MENU_SEQ 

    

    ** 참고) 메뉴중 2LEVEL까지만 결과 출력

    (WHERE조건으로도 LEVEL <= 2가능함. 그러나 권하지는 않는다. 

     왜? WHERE 조건은 모든 나온결과에 대해서 FILTER하지만 CONNECT BY절의 조건으로 넣으면 순환자체를 안한다. 즉 성능에 좋다)

    SELECT

            LEVEL AS LEV

          , MENU.*

    FROM    

            TBL_MENU  MENU

    START WITH          MENU.MENU_ID    = 'TOP'

    CONNECT BY PRIOR    MENU.MENU_ID    = MENU.UP_MENU_ID

    AND                 LEVEL  <= 2

    ORDER SIBLINGS BY   MENU_SEQ     

   

    

◈ 

    (1) 들여쓰기로 결과출력

    SELECT

            LPAD(’ ’, 4*(LEVEL-1)) || MENU.MENU_NAME

          , MENU.*

    FROM

            TBL_MENU  MENU

    WHERE               MENU_TYPE_CD = '1'

    START WITH          MENU.MENU_ID = 'TOP'

    CONNECT BY PRIOR    MENU.MENU_ID = MENU.UP_MENU_ID

    ORDER SIBLINGS BY   MENU_SEQ

    

    (2) 엑셀과 같이 셀 단위로 들여쓰기

    SELECT 

             DECODE(LEV, '1', MENU_NAME, '') AS LEV1

           , DECODE(LEV, '2', MENU_NAME, '') AS LEV2

           , DECODE(LEV, '3', MENU_NAME, '') AS LEV3

           , DECODE(LEV, '4', MENU_NAME, '') AS LEV4

           , DECODE(LEV, '5', MENU_NAME, '') AS LEV5

    FROM

           (

             SELECT

                     LEVEL AS LEV

                   , MENU.*

             FROM    TBL_MENU  MENU

             WHERE               MENU_TYPE_CD = '1'

             START WITH          MENU.MENU_ID = 'TOP'

             CONNECT BY PRIOR    MENU.MENU_ID = MENU.UP_MENU_ID         

             ORDER SIBLINGS BY   MENU_SEQ 

           )



'오라클' 카테고리의 다른 글

패스워드 암호화 .  (0) 2012.12.07
숫자 함수.  (0) 2012.11.15
토드 에서 벌레의 의미..;  (0) 2012.11.02
TOAD 단축키  (0) 2012.10.31
오라클 과거 데이터를 보는 방법. [SYSTIMESTAMP]  (0) 2012.10.30
Posted by 사라링


[Procedure/Function] 

초록 : 디버그와 함께 컴파일 됨


[Package]
초록 : 스펙과 바디 두가지가 디버그와 함께 컴파일 됨
회색 : 스펙만 디버그와 함께 컴파일 됨
대가리 회색 , 몸 초록색 : 바디 부분만 디버그와 함께 컴파일 됨


/
패키지에 대가리 회색 같은 경우가 많은데 . 이런경우
패키지 리스트에서 마우스 오른쪽을 누룬후에 compile > compile with debug 를 눌러 주면 된다. 
단 스크립트에 오류가 없어야 한다.. 



'오라클' 카테고리의 다른 글

숫자 함수.  (0) 2012.11.15
계층형구조 (CONNECT BY)  (0) 2012.11.05
TOAD 단축키  (0) 2012.10.31
오라클 과거 데이터를 보는 방법. [SYSTIMESTAMP]  (0) 2012.10.30
프로시져.INSERT 또는 UPDATE  (0) 2012.10.15
Posted by 사라링


GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 POST는 숨겨져서(body안에) 보내진다.

GET은 URL에 이어붙기 때문에 길이제한이 있어서 많은양의 데이터는 보내기 어렵고 POST는 많은 양의 보내기에도 적합하다.(역시 용량제한은 있지만)

즉 http://url/bbslist.html?id=5&pagenum=2 같이 하는 것이 GET방식이고 form을 이용해서 submit을 하는 형태가 POST입니다.

처음 배울때 배운건 이정도뿐이었던 것 같습니다. 위 내용은 맞는말이긴 하지만 이로썬 해결안되는 문제가 있습니다. 그건 언제 GET을 쓰고 언제 POST를 써야 하는가에 대한 문제였습니다. 이건 신입일때 꽤 오랫동안 생각하고 있었던 문제이기도 하는데 딱히 가르쳐 주는 곳은 없었습니다. 지금와서 보면 책에 이에 대해 나와있는 책들이 상당히 많이 있습니다만 웹표준에서도 그러하듯이 현업의 개발에서는 "원래의 목적에 맞게 기술을 사용하고 있는가?"에 대해서는 크게 관심이 없고 "어떤 기술이든 기능을 구현할 수 있는가?"에만 관심을 가지는 것이 전반적으로 깔려있기 때문에 이런 부분에 대해서 관심을 가지는 개발자는 빈도수로 봤을때 그리 많지 않은 듯 합니다. 어쨌든 쉽게 말하면 클라이언트에서 서버로 데이터를 전송하려면 GET 아니면 POST밖에 없습니다.(사실 HTTP에는 PUT, DELETE등등 몇가지 더 있지만 그건 이글의 범주에서 벗어나서 언급하지 않습니다. 사실은 잘 몰라서 ㅡ..ㅡ HTTP 1.1 스펙  참조)


id를 넘겨서 게시판의 리스트를 가져온다고 하면 당연히 GET을 쓸 것이고 글을 작성한다고 하면 POST를 작성하는 것이 일반적입니다. 전달해야 될 양이 많을 경우에는 고민없이 POST를 쓰게 되지만 양이 많지 않은 경우에는 GET도 되고 POST도 되기 때문에 고민이 시작됩니다. GET을 써야하나 POST를 써야하나. GET을 쓰면 URL이 깔끔해 지는 효과도 있기 때문에 작은 양을 여러개 전달해야 할 경우에는 POST를 써야하는가 하는 고민을 하게됩니다.(상당히 명백한 차이인듯 하면서 실제로 개발하다보면 고민하게 되는 경우가 좀 있더군요. 저만 그런지 모르겠지만...)



Image by dbking  via Flickr 


여기서 위의 언급한 차이점 외에 GET과 POST의 중요한 개념이 있습니다.


GET은 가져오는 것이고 POST는 수행하는 것입니다.


이 개념만 잘 생각하고 있으면 상황에 따라서 어느정도 선택을 할 수 있습니다.(물론 그래도 좀 고민되는 예외상황들은 있게 마련이죠.) 좀 자세히 설명하면 GET은 Select적인 성향을 가지고 있습니다. GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등을 바꾸지 않습니다. 게시판의 리스트라던지 글보기 기능 같은 것이 이에 해당하죠.(방문자의 로그를 남긴다거나 글읽은 횟수를 올려준다거나 하는건 예외입니다.) 반면에 POST는 서버의 값이나 상태를 바꾸기 위해서 사용합니다. 글쓰기를 하면 글의 내용이 디비에 저장이 되고 수정을 하면 디비값이 수정이 되죠. 이럴 경우에 POST를 사용합니다. 




이 얘기를 하면 어느곳에서곤 반드시 예시로 나오는 것이 Google의 Accelerator 사건입니다.(대표적으로 예를 들게 이거밖에 없나봅니다. 항상 거론되는걸 보면...) Accelerator라는 것은 그이름대로 웹서핑의 속도를 향상시킬 목적으로 구글이 발표한 것이었습니다. 어떤 웹사이트에 갔을때 페이지에 있는 URL등을 Accelerator가 미리 모두 클릭해봐서 사용자가 해당 URL로 이동하기 전에 이미지등의 미리 받아놓을 수 있는 것들을 받아놓는 역할을 해서 웹서핑의 체감속도를 높여주는 것이 목적이었습니다. 캐시때문에 한번 방문한 사이트는 더 빨리 뜨는 것을 이용한 것이죠.


구글러들은 위에서 언급한 GET과 POST의 개념을 확실히 이해하고 이를 당연하다고 생각하는 사람들이었을 테니 이것이 문제가 될꺼라고는 전혀 생각지 못한듯 합니다. 하지만 현실은 그렇지 않죠. 실제 많은 개발자들은 GET과 POST를 용도구분없이 혼용해서 사용했고 Delete같은 곳에도 GET방식을 편의대로 이용한 것입니다. Accelerator는 이것을 구분하지 못하니 URL만 보였다 싶으면 냅다 클릭을 해댄 것이고 사용자가 클립한 것이 아닌 Bot이 직접 URL로 접근해버리자 해당 데이터들은 Delete를 수행해버려서 메일이나 게시글이 마구 지워지는 사태가 발생하였습니다. 좋은 의도였는데 상당히 안좋은 결과가 되었죠. 우리가 모두 이걸 지켰다면 훨씬 좋은 웹 환경이 됐을 텐데요.


그리고 가져오는 곳에 GET을 사용해야 하는 이유가 하나 더 있습니다. 얼마전에도 관련해서 포스팅한 적이 있지만 웹의 핵심이라고 할 수 있는 Link문제입니다. 기본적으로 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야 합니다.(퍼머링크(permalink)1퍼머링크라면 더 좋겠지만 꼭 퍼머링크가 아니라고 하더라도) 그래야 Link를 할 수 있으니까요. 쉽게 말하면 어떤 페이지를 보고 있을때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 한다는 것입니다. POST를 할 결우에는 값이 내부적으로 전달되기 때문에 URL만 전달할 수 없죠. 글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST를 해도 상관이 없는 것이고요.


다른 것들에서도 그렇듯이 GET과 POST도 그냥 만들어진 것이 아니기 때문에 스펙에 정의된 용도대로 사용한다면 위에 언급한대로 부가적으로 얻을 수 있는 이익이 많이 있고 전체 웹을 생각해도 올바르다고 생각합니다.

Footnote.

는 인터넷에서 특정 페이지의 고유한 URL 주소를 뜻한다. 이 주소는 어떤 상황에도 관계없이 항상 동일한 내용을 가지는 페이지로 링크된다는 의미에서, 고유(permanent)한 주소라는 뜻의 permanent link를 줄여 만든 말이다. 한국어로 고유링크, 고유주소 등으로 부르기도 한다. - Wikipedia 발췌 - [Back]


그리고 가져오는 곳에 GET을 사용해야 하는 이유가 하나 더 있습니다. 얼마전에도 관련해서 포스팅한 적이 있지만 웹의 핵심이라고 할 수 있는 Link문제입니다. 기본적으로 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야 합니다.(퍼머링크(permalink)1퍼머링크라면 더 좋겠지만 꼭 퍼머링크가 아니라고 하더라도) 그래야 Link를 할 수 있으니까요. 쉽게 말하면 어떤 페이지를 보고 있을때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 한다는 것입니다. POST를 할 결우에는 값이 내부적으로 전달되기 때문에 URL만 전달할 수 없죠. 글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST를 해도 상관이 없는 것이고요.


다른 것들에서도 그렇듯이 GET과 POST도 그냥 만들어진 것이 아니기 때문에 스펙에 정의된 용도대로 사용한다면 위에 언급한대로 부가적으로 얻을 수 있는 이익이 많이 있고 전체 웹을 생각해도 올바르다고 생각합니다.

Footnote.

는 인터넷에서 특정 페이지의 고유한 URL 주소를 뜻한다. 이 주소는 어떤 상황에도 관계없이 항상 동일한 내용을 가지는 페이지로 링크된다는 의미에서, 고유(permanent)한 주소라는 뜻의 permanent link를 줄여 만든 말이다. 한국어로 고유링크, 고유주소 등으로 부르기도 한다. - Wikipedia 발췌 - [Back]

Posted by 사라링

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%!
public Integer toInt(String x){
int a = 0;
try{
a = Integer.parseInt(x);
}catch(Exception e){}
return a;
}
%>
<%
int pageno = toInt(request.getParameter("pageno"));
if(pageno<1){//현재 페이지
pageno = 1;
}
int total_record = 754;    //총 레코드 수
int page_per_record_cnt = 10;  //페이지 당 레코드 수
int group_per_page_cnt =5;     //페이지 당 보여줄 번호 수[1],[2],[3],[4],[5]
//      [6],[7],[8],[9],[10]

int record_end_no = pageno*page_per_record_cnt;
int record_start_no = record_end_no-(page_per_record_cnt-1);
if(record_end_no>total_record){
record_end_no = total_record;
}
   
   
int total_page = total_record / page_per_record_cnt + (total_record % page_per_record_cnt>0 ? 1 : 0);
if(pageno>total_page){
pageno = total_page;
}


//  현재 페이지(정수) / 한페이지 당 보여줄 페지 번호 수(정수) + (그룹 번호는 현제 페이지(정수) % 한페이지 당 보여줄 페지 번호 수(정수)>0 ? 1 : 0)
int group_no = pageno/group_per_page_cnt+( pageno%group_per_page_cnt>0 ? 1:0);
// 현재 그룹번호 = 현재페이지 / 페이지당 보여줄 번호수 (현재 페이지 % 페이지당 보여줄 번호 수 >0 ? 1:0)
// ex)  14 = 13(몫) =  (66 / 5) 1 (1(나머지) =66 % 5)   
int page_eno = group_no*group_per_page_cnt;
// 현재 그룹 끝 번호 = 현재 그룹번호 * 페이지당 보여줄 번호 
// ex)  70 = 14 * 5
int page_sno = page_eno-(group_per_page_cnt-1);
//  현재 그룹 시작 번호 = 현재 그룹 끝 번호 - (페이지당 보여줄 번호 수 -1)
// ex)  66 = 70 -  4 (5 -1)
if(page_eno>total_page){
//    현재 그룹 끝 번호가 전체페이지 수 보다 클 경우
page_eno=total_page;
//    현재 그룹 끝 번호와 = 전체페이지 수를 같게
}
int prev_pageno = page_sno-group_per_page_cnt;  // <<  *[이전]* [21],[22],[23]... [30] [다음]  >>
// 이전 페이지 번호 = 현재 그룹 시작 번호 - 페이지당 보여줄 번호수
// ex) 46 = 51 - 5
int next_pageno = page_sno+group_per_page_cnt; // <<  [이전] [21],[22],[23]... [30] *[다음]*  >>
// 다음 페이지 번호 = 현재 그룹 시작 번호 + 페이지당 보여줄 번호수
// ex) 56 = 51 - 5
if(prev_pageno<1){
// 이전 페이지 번호가 1보다 작을 경우
prev_pageno=1;
// 이전 페이지를 1로
}
if(next_pageno>total_page){
// 다음 페이지보다 전체페이지 수보가 클경우
next_pageno=total_page/group_per_page_cnt*group_per_page_cnt+1;
// next_pageno=total_page
// 다음 페이지 = 전체페이지수 / 페이지당 보여줄 번호수 * 페이지당 보여줄 번호수 + 1 
// ex)    =  76 / 5 * 5 + 1 ???????? 
}
// [1][2][3].[10]
// [11][12]
%>
현재 페이지   (pageno)   : <%=pageno%><br />
전체 데이터 수   (total_record) : <%=total_record %><br />
한페이지 당 레코드 수   (page_per_record_cnt) : <%=page_per_record_cnt %><br />
한페이지 당 보여줄 페지 번호 수   (group_per_page_cnt) : <%=group_per_page_cnt %><br />

<hr />
레코드 시작 번호  (record_start_no) : <%=record_start_no%><br />
레코드 끝 번호    (record_end_no) : <%=record_end_no %><br />
전체페이지 수     (total_page)  : <%=total_page %><br />
<hr />
현재 그룹번호 [1] (group_no):  <%=group_no %><br />
현재 그룹 시작 번호(page_sno): <%= page_sno%><br />
현재 그룹 끝 번호  (page_eno): <%= page_eno%><br />
이전 페이지 번호   (prev_pageno) <%=prev_pageno%><br />
다음 페이지 번호   (next_pageno) <%=next_pageno%><br />
<hr />


<a href="pase.jsp?pageno=1">[맨앞으로]</a>
<a href="pase.jsp?pageno=<%=prev_pageno%>">[이전]</a> 
<%for(int i =page_sno;i<=page_eno;i++){%>
<a href="pase.jsp?pageno=<%=i %>">
<%if(pageno == i){ %>
[<%=i %>]
<%}else{ %>
<%=i %>
<%} %>
</a> 
<%-- 콤마  --%>
<%if(i<page_eno){ %>
,
<%} %>
<%} %>
 
<a href="pase.jsp?pageno=<%=next_pageno%>" >[다음]</a>
<a href="pase.jsp?pageno=<%=total_page %>">[맨뒤로]</a>

'JSP' 카테고리의 다른 글

Problems warning 를 제거 하자.  (1) 2012.10.23
html excel 추출 하기.& Jquery excel 추출 하기.  (0) 2012.06.16
정규표현식 공식 및 응용 .  (0) 2012.05.08
기본JDBC 만들기  (0) 2012.05.08
Tiles(레이아웃처리)  (0) 2012.05.08
Posted by 사라링

TOAD 단축키

2012. 10. 31. 11:27


TOAD를 사용하면서 편리하게 이용할 수 있는 단축키를 정리한 것입니다.

 

테이블 정보 상세보기

F4 : Table, View, Proc, Funct, Package DESC(테이블명 위에 커서를 두고 F4)

 

자동완성

Ctrl+. : Table Completion (매칭되는 테이블목록 출력)

Ctrl+T : Columns Dropdown (해당테이블의 컬럼목록 표시)

 

SQL문 실행

F5 : SQL Editor내의 모든 SQL문 실행

Ctrl+Enter : 현재 커서의 SQL문 실행

F9 : SQL문 실행 후 Grid에 출력

 

히스토리(과거 수행SQL문 조회)

F8 : 과거에 실행한SQL HISTORY 목록

Alt+Up : History UP

Alt+Down : History DOWN

 

텍스트 대/소문자 변환

CTRL+L : 텍스트를 소문자로

CTRL+U : 텍스트를 대문자로

 

주석처리

Ctrl+B : 주석처리

Ctrl+Shift+B : 주석해제

 

편집 창 전환(이동)

F6 : SQL Editor와 결과창간의 이동

F2 : SQL Editor창 전체화면 전환

Shift+F2 : Grid Output창 전체화면 전환

 

기타 단축키

F7 : 화면을 모두 CLEAR

Ctrl+Shift+F : 쿼리문을 보기좋게 정렬

Ctrl+F9 : SQL Validate (SQL문을 수행하지 않음)

F1
Toad 도움말 파일의 SQL Editor 부분이 표시됩니다.
F2
전체 화면 Editor Editor/Results 패널 표시 장치 사이를 전환합니다.
<SHIFT>F2
전체 화면 그리드를 전환합니다.
F3
다음으로 일치하는 것을 찾습니다.
<SHIFT>F3
이전에 일치하는 것을 찾습니다.
F4
팝업 창의 테이블프로시저함수또는 패키지를 설명합니다.
F5
스크립트로 실행합니다.
F6
커서를 Editor Results 패널 사이로 전환합니다.
F7
모든 텍스트를 지웁니다.
F8
이전 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).
F9
실행문을 실행합니다.
<CTRL>F9
실행(구문 분석없이 실행문을 검사합니다.
<SHIFT>F9
커서 위치에서 현재 실행문을 실행합니다.
F10
오른쪽 클릭 메뉴를 표시합니다.
F11
Script 같은  실행(=F5)
F12
편집기 내용을 지정된 외부 편집기로 전달합니다.
<CTRL>A
모든 텍스트를 선택합니다.
<CTRL>C
복사
<CTRL>D
프로시저 인수를 표시합니다.
<CTRL>E
현재 실행문에서 Explain Plan 실행합니다.
<CTRL>F
텍스트를 찾습니다(Find Text 창을 불러옵니다).
<CTRL>G
라인으로 이동합니다(Goto Line 창을 불러옵니다).
<CTRL>L
텍스트를 소문자로 변환합니다.
<CTRL>M
Make Code Statement
<CTRL>N
이름이 지정된 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).
<CTRL>O
텍스트 파일을 엽니다.
<CTRL>P
Strip Code Statement(쓸데없는 태그들을 정리해 줍니다. 유용함)
<CTRL>R
검색  바꾸기(Find and Replace Text 창을 불러옵니다)
<CTRL>S
파일을 저장합니다.
<SHIFT><CTRL>S
파일을 다른 이름으로 저장합니다.
<CTRL>T
 드롭다운을 표시합니다.
<CTRL>U
텍스트를 대문자로 변환합니다.
<CTRL>V
붙여넣기
<CTRL>X
잘라내기
<SHIFT><CTRL>Z
마지막으로 취소한 작업을 재실행합니다.
<ALT><UP>
이전 실행문을 표시합니다.
<ALT><DOWN>
다음 실행문을 표시합니다(<ALT><UP> 사용한  사용)
<ALT><PgUp>
이전 탭으로 이동
<ALT><PgDn>
다음 탭으로 이동
<CTRL><ALT><PgUp>
이전 결과 패널 탭으로 이동
<CTRL><ALT><PgDn>
다음 결과 패널 탭으로 이동
<CTRL><HOME>
데이터 그리드에서는  위의 레코드셋으로 이동하며결과 그리드에서는 커서가 위치한행의  번째 열로 이동하고편집기에서는 텍스트의  번째 열과  번째 행으로 이동합니다.
<CTRL><END>
데이터 그리드에서는 레코드셋의  끝으로 이동하며편집기에서는 텍스트의 마지막 열과 마지막 행으로 이동합니다 단원의 "주의" 참조하십시오.
<CTRL><SPACE>
코드 완성 템플릿을 활성화합니다.
<CTRL><TAB>
MDI Child 창의 콜렉션을 순환합니다.
<CTRL><ENTER>
커서 이치에서 현재 SQL 문을 실행합니다.
<CTRL>. (마침표)
테이블 이름을 자동으로 완성합니다.

Posted by 사라링

SELECT*

FROM TABLE_NAME AS OF timestamp ( SYSTIMESTAMP - INTERVAL '30' MINUTE)

/


데이터를 수정한 경우 커밋한 경우 과거의 데이터를 볼수 있다. 


'오라클' 카테고리의 다른 글

토드 에서 벌레의 의미..;  (0) 2012.11.02
TOAD 단축키  (0) 2012.10.31
프로시져.INSERT 또는 UPDATE  (0) 2012.10.15
오라클 힌트 모음 (예제)  (0) 2012.08.31
BYPASS_UJVC -> MERGE 문으로 변경 하자.  (0) 2012.08.31
Posted by 사라링

과년도 문제 - 


1. 다음 빈칸에 알맞은 용어를 채우시오

(a) data integrity 무결성 설명

(b) confidentiality 기밀성 설명

(c) secret 공개키와 대칭키의 차이점

(d) non-repudiation 부인방지 설명


2.  DES에서 Decryption 과정에 대해 설명하시오. 

※ 왜 encryption과 같은 과정을 거쳐도 역으로 decryption이 되는지 설명


3. Irreducible polynomial을 이용하여 주어진 다항식의 역원을 구하시오. 

※ 유클리드 알고리즘으로 푸는 문제


4. Primality Testing : Sieve와 Miller-Rabin 알고리즘으로 소수임을 계산할 때 사용되는 Fermat's Little Theorem, Nontrivial Square Roots에 대한 내용을 기술, Miller-Rabin을 사용했을 때 문제점 서술




1. 다음 빈칸에 알맞은 용어를 채우시오

(a) data integrity 무결성 설명

- Ensuring that data has not been altered by unauthorized

- 데이터가 복사, 추가, 수정, 순서변경 또는 재전송되지 않고 수신됐음을 확인하는 것

- 부적절한 변경 방지. 허가받은 사용자가 아니면 내용을 변경할 수 없어야 함


(b) confidentiality 기밀성 설명

- Keeping data secret from all but those authorized to see it

- 소극적 공격으로 부터 전송자료를 보호하는 것

- 부적절한 노출 방지. 허가받은 사용자가 아니면 내용에 접근할 수 없어야 함


(d) non-repudiation 부인방지 설명

- Preventing an entity from denying previous commitments or actions

- 정보를 보낸 사람이 나중에 정보를 보냈다는 것을 부인(발뺌)하지 못하도록 하는 것

- 메시지를 전달하거나 전달받은 사람이 메시지를 전달하거나 전달받았다는 사실을 부인할 수 없어야 함


※ 용어 추가

(e) data origin authentication 출처 인증

- Corroborating the source of data

- 메시지 또는 자료의 출처가 정말 주장하는 출처가 맞는지 확인하는 것이다. 인가된 자에게만 있는 중복되지 않은 정보에 대한 인가목록을 만든 후 인가목록에서 확인된 자에 한해 접근을 허용하는 것을 말한다


(f) Entity authentication 실체 인증

- Corroborating the identity of an entity

- 어떤 실체가 정말 주장하는 실체가 맞는지 확인하는 것이다. 특정방법으로 약속된 정보를 인가된 자와 교환한 후 해당 정보를 제시하는 경우에 한해 접근을 허용하는 것을 말한다


※ 편의상 순서를 바꿈

(c) secret 공개키와 대칭키의 차이점

- 대칭키 : 암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템

- 공개키 : 공개키 암호 시스템에서 각 사용자는 두 개의 키를 부여 받는다. 그 하나는 공개되고(공개키, public key), 다른 하나는 사용자에 의해 비밀리에 관리 되어야 한다.(비밀키, private key)

- 차이점 : 대칭키는 암호문과 복호문이 동일, 공개키는 암호문과 복호문이 다름, 공개키의 암호문과 복호문의 수학적 특성에 기반, 대칭키가 공개키 보다 속도가 빠름, 대칭키 암호 시스템은 알고리즘이 상대적으로 단순한 장점이 있지만 키 관리에 어려움이 많음. 이는 매우 큰 단점으로 키 관리가 상대적으로 용이한 공개키 암호 시스템의 출현의 계기가 됨

- 차이점2 : 두 방식의 장점을 이용하여 현재는 공개키 암호 기술은 A와 B 사이의 통신에서 사용되고 있는 대칭키 암호의 키 설정에 사용됨. 공개키 암호는 효율적 서명과 키 관리가 용이하다는 것. 대칭키 암호는 암호에 대한 효율성과 상당한 자료 보전에 적용되는 것.

- 비교표

 대칭키 암호공개키 암호 

 작업을 위한 요구 사항

 1. 동일한 키를 가진 동일한 알고리즘이 암호/복호에 사용

 2. 수신자와 송신자는 알고리즘과 키를 나누어야 함

 작업을 위한 요구 사항
 1. 키 하나는 암호, 다른 하나는 복호에 사용하는 한 개의 알고리즘 사용
 2. 수신자와 송신자는 두 개의 키 중 일치하는 키가 한 개 있어야 함

 안전성을 위한 요구 사항
 1. 키는 비밀을 유지해야 함
 2. 만일 다른 정보를 이용할 수 없다면 메시지를 해독하는 것이 불가능하거나 적어도 비실용적이어야 함

 3. 암호 알고리즘과 암호문의 표본을 아는 것으로는 키를 결정하는데 불충분해야 함

 안전성을 위한 요구 사항
 1. 두 개의 키 중 하나는 비밀을 유지해야 함

 2. 만일 다른 정보를 이용할 수 없다면 메시지를 해독하는 것이 불가능 하거나 적어도 비실용적이어야 함

 3. 암호 알고리즘, 암호문의 표본 그리고 키 중 한 개의 키를 아는 것으로는 키를 결정하는데 불충분해야 함


2.  DES에서 Decryption 과정에 대해 설명하시오. 

※ 왜 encryption과 같은 과정을 거쳐도 역으로 decryption이 되는지 설명

- DES : 64 bit 블록(평문) / 56 bit 키 / 16 회전 / 각 회전에서 48 bit 보조 키 사용

- 3DES : 112 bit 키 (56 bit 키의 단점을 보완)

- Decryption (복호화) 과정 : 기본적으로 암호화 과정과 동일함. 암호문은 DES 알고리즘의 입력으로 사용되지만 키 

는 역순으로 사용됨. 즉, 을 첫번째 반복 과정에, 을 두번째 반복 과정에, 등으로 을 마지막 16번째 반복 과정에 사용함.

- Encryption (암호화) 과정 : 3단계로 진행됨

-- 1. 64 비트 평문이 치환된 입력을 생성하기 위해 비트열의 순서를 재조정하는 초기순열(IP; initial permutation)단계를 통과함. 

-- 2. 동일 함수의 16회 반복 단계가 수행됨. 순열과 치환 모두가 포함됨. 마지막 (16번째) 반복 처리의 출력은 입력 평문과 키의 함수인 64 비트로 구성됨. 64비트 출력의 좌우 절반은 예비 출력을 생성하기 위해 좌우로 교횐됨. 

-- 3. 예비출력은 64 비트 암호문 생성을 위해 초기 순열의 역인 역초기 순열()을 통과함.


3. Irreducible polynomial을 이용하여 주어진 다항식의 역원을 구하시오. 

※ 유클리드 알고리즘으로 푸는 문제

- 유클리드 알고리즘 (Euclidean algorithm) : 2개의 자연수의 최대공약수(공통되는 약수 중에서 가장 큰 수)를 구하는 알고리즘의 하나임, 로 표현함.

- Example : 

 step

 Q (몫) A1 A2

 A3

 B1 B2

 B3

 s0 -

 1

 0

 1759 [m]

 0 1 550 [b]
 s1 3=1759/550 0 [s0-B1]

 1 [s0-B2]

 550 [s0-B3]

 1=1-3*0

 -3=0-3*1

 109=1759%550
 s2

 5=550/109

 1 [s1-B1]

 -3

 109 -5

 16=1-(-3)*5

 5=550%109

 s3 21=109/5 -5 [s2-B1] 16 5 106 -339 4=109%5
 s4 1=5/4

 106 [s3-B1]

 -339

 4 [s3-B3]

 -111 [355]

 1=5%4


4. Primality Testing : Sieve와 Miller-Rabin 알고리즘으로 소수임을 계산할 때 사용되는 Fermat's Little Theorem, Nontrivial Square Roots에 대한 내용을 기술, Miller-Rabin을 사용했을 때 문제점 서술

- Sieve : 결정론적 알고리즘, 판정하고자 하는 숫자보다 작은 모든 숫자로 나누어 확인하는 방법, 판정하고자 하는 숫자가 작을 때 가능.

- Fermat's Little Theorem : f라면 유사소수라고 판정함. n이 b에 대해 유사소수일 확률은 <= 1/2.

- Miller-Rabin : 확률적 알고리즘, 판정하고자 하는 숫자보다 작은 숫자를 임의로 생성하여 나누어 확인 하는 과정을 k 번 반복하는 방법. 한번 수행시 판정이 틀릴 확률이 1/4보다 작거나 같으며, 100번 정도 수행한 결과로 얻는 소수를 실제 전자상거래에서 이용함.




※ 추가

5. AES

- AES : 128, 192, 256 bit 블록(평문) / 128, 192, 256 bit 키 / 10, 14 회전 / 각 회전은 4개의 함수들을 사용

- 4개의 함수 : ByteSub (비선형계층) / ShiftRow (선형혼합 계층) / MixColumn (비선형 계층) / AddRoundKey (키추가 계층)

- 암호화 : Plaintext → AddRoundKey → Round 1~9 (ByteSub → shiftRows → MixColumn → AddRoundKey) → Round 10 (ByteSub → Shift Rows → AddRoundKey) → Ciphertext

- 복호화 : Ciphertext → AddRoungKey → Round 1~9 (InverseShiftRows → InverseByteSub → AddRoungKey → InverseMixCols) → Round 10 (InverseShiftRows → InverseByteSub → AddRoundKey) → Plaintext


6. 공개키 암호 시스템의 응용

- 암호/복호 : 송신자는 수신자의 공개키로 메시지를 암호화함.

- 디지털 서명 : 송신자는 개인키로 메시지를 "서명"함. 서명은 메시지에 암호 알고리즘을 적용하여 얻거나 메시지의 단위를 이루는 작은 데이터 블럭에 암호 알고리즘을 적용하여 얻음.

- 키 교환 : 양쪽은 세션키를 교환하기 위하여 상호 협력함. 양쪽 혹은 한쪽의 개인키를 포함한 몇 가지의 다른 방법들이 가능함. 

 알고리즘

 암호/복호화

 디지털 서명 키 교환
 RSA 가능(큰 블럭에는 비실용적) 가능 가능
 LUC 가능(큰 블럭에는 비실용적) 가능 가능
 DSS 불가능 가능 불가능
 Diffie-Hellman 불가능 불가능 가능




reference - 

1) Computer System Security 강의자료

2) 통신망 정보 보호(Network and internetwork security principles and practice), 최용락 외 3인 공역, 그린출판사

3) http://en.wikipedia.org/wiki/Outline_of_cryptography

4) http://ko.wikipedia.org/wiki/암호학

5) http://ko.wikipedia.org/wiki/정보_보안

6) http://ko.wikipedia.org/wiki/고급_암호화_표준

7) http://ko.wikipedia.org/wiki/유클리드_호제법

8) http://en.wikipedia.org/wiki/Irreducible_polynomial

9) http://en.wikipedia.org/wiki/Primality_test

10) http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test

11) http://en.wikipedia.org/wiki/Extended_Euclidean_algorithm

12) http://ko.wikipedia.org/wiki/밀러-라빈_소수판별법





Posted by 사라링

레코드를 특정 column의 값을 기준으로 정렬하여 순서를 매길 수 있다. RANK() OVER 또는 ROW_NUMBER() OVER를 사용하면 된다. 간단히 아래와 같은 테이블을 생각하자.

SQL> SELECT * FROM TMP_TABLE;


USERID    |     SCORE

----------|----------

aaa       |        10

aaa       |        30

aaa       |        50

aaa       |        90

bbb       |        80

bbb       |        50

bbb       |        20

bbb       |        40

aaa       |        50


9 rows selected.


score column을 기준으로 순서를 매기고 싶다. 그러면 간단하게 다음과 같이 하면 된다.

SELECT USERID, SCORE, RANK() OVER (ORDER BY SCORE DESC) RANK

FROM TMP_TABLE;


USERID    |     SCORE|      RANK

----------|----------|----------

aaa       |        90|         1

bbb       |        80|         2

aaa       |        50|         3

aaa       |        50|         3

bbb       |        50|         3

bbb       |        40|         6

aaa       |        30|         7

bbb       |        20|         8

aaa       |        10|         9


9 rows selected.


SELECT USERID, SCORE, ROW_NUMBER() OVER (ORDER BY SCORE DESC) RANK

FROM TMP_TABLE;


USERID    |     SCORE|      RANK

----------|----------|----------

aaa       |        90|         1

bbb       |        80|         2

aaa       |        50|         3

aaa       |        50|         4

bbb       |        50|         5

bbb       |        40|         6

aaa       |        30|         7

bbb       |        20|         8

aaa       |        10|         9


9 rows selected.


위의 RANK()와 ROW_NUMBER()의 차이는 결과를 자세히 보면 알 수 있다. RANK()의 결과는 3, 4, 5번째 레코드의 점수가 50점으로 동일하기 때문에 때문에 같은 순서인 3번을 매겼다. 하지만 ROW_NUMBER()의 결과는 점수가 같더라도 레코드가 달라지면 다른 순서를 매긴다.

Posted by 사라링

지불해야할 세금이있다면 그건 나에게 직장이 있다는것이고..

파티를 하고나서 치워야 할게 너무 많다면

그건 친구들과 즐거운 시간을 보냈다는 것이고..

옷이 몸에 조금 낀다면 그건 잘먹고 잘살고 있다는 것이고..

깍아야 할 잔디, 닦아야할 유리창, 고쳐야할 하수구가 있다면

그건 나에게 집이 있다는 것이고..

정부에 대한 불평 불만의 소리가 많이 들리면

그건 언론의 자유가 있다는 것이고..

주차장 맨끝 먼곳에 겨우 자리가 하나 있다면

그건 내가 걸을 수 있는데다 차도 있다는 것이고..

난방비가 너무 많이 나왔다면 그건 내가 따뜻하게 살고 있다는 것이고..

교회에서 뒷자리 아줌마의 엉터리 성가가 영 거슬린다면

그건 내가 들을 수 있다는 것이고..

세탁하고 다림질 해야 할 일이 산더미라면

그건 나에게 입을 옷이 많다는 것이고..

온몸이 뻐근하고 피로하다면 그건 내가 열심히 일했다는 것이고..

이른 새벽 시끄러운 자명종 소리에 깼다면

그건 내가 살아있다는 것이고...

그리고 , 이메일이 너무 많이 쏟아진다면

그건 나를 생각하는 사람들이 그만큼 많다는 것이다.

마음속에 나도 모르게 일궈진 불평, 불만들

바꾸어 생각해보면 또 감사한 일이라는 것을....

 

그런거다.

사람사는 일이 다 그렇고 그런거다.

능력있다고 해서 하루 열 끼 먹는 거 아니고,

많이 배웠다고해서 남들 쓰는 말 과 틀린 말 쓰는 것도 아니고,

그렇게 발버둥거리며 살아봤자 사람 사는 일 다 거기서 거기다.

백원 버는 사람이 천원 버는 사람 모르고,

백원이 최고인 줄 알고 살면 그 사람 이 잘 사는 것이다.

만원 벌자고 남 울리고 자기 속상하게 사는 천원 버는 사람보다

훨 나은 인생이다.

어차피 내 맘대로 안되는 세상,

그 세상 원망하고 세상과 싸워봤자 자기만 상처 받고 사는 것,

이렇게 사나 저렇게 사나

자기 속 편하고 남 안 울리고 살면 그 사람이 잘사는 사람이다.

욕심...

그거 조금 버리고 살면 그 순간부터 행복일 텐데,

뭐 그렇게 부러운게 많고, 왜 그렇게 알고 싶은 게 많은지,

전생에 뭘 그리 잘 처먹고 살았다고 그렇게 버둥대는지...

어릴적 그렇게 예쁘게 웃던 입가에는 어느덧 싼 미소가 자리잡아 있고,

적당히 손해보며 살던 내 손에는 예전보다 만원짜리 몇 장이 더 들어 있다..

그 만원짜리 몇 장에 그렇게도 예쁘던 내 미소를

누가 팔라고 하지도 않았는데 내가 도매로 넘겨버렸다.

그런거다.

세상사는 일 다 그렇고 그런거다.

넓은 침대에서 잔다는 것이 좋은 꿈꾸는 것도 아니다.

좋은 음식 먹고 산다고 머리가 좋아지는 것도 아니다.

사람 살아가는 것이 다 거기서 거기다.

다 남들도 그렇게 살아들 간다

내 인생인데 남 신경 쓰다 보니 내 인생이 없어진다.

아무것도 모르며 살 때 TV에서 이렇다고 하면 이런 줄 알고,

친구가 그렇다고 하면 그런 줄 알고 살 때가 좋은 때였다.

그때가 언제인지 기억도 못하고 살아가고 있다.

술이 많이 올라야 진심이 찾아온다.

어떻게 살면 잘사는 건지?

잘살아가는 사람은 그걸 어디서 배웠는지 안 알려준다.

남의 눈에 눈물 흘리려 하면 내 눈에는 피눈물 난다는 말, 그말 정답이다.

정말로 기쁘고 유쾌해서 웃어본 지가 그런 때가 있기는 했는지 궁금해진다.

알수록 복잡해지는 게 세상이었는데

자기 무덤 자기가 판다고 어련히 알아지는 세상 미리 알려고 버둥거렸지 뭔가...

내가 만든 세상에 내가 질려 버린다.

알아야 할 건 왜 끝이 없는지, 눈에 핏대 세우며 배우고 배워가도

왜... 점점 모르 겠는지,

남의 살 깎아먹고 사는 줄 알았는데 내가 남보다 나은 줄만 알았는데

돌 아보니, 주위에 아무도 없는 것 같아 둘러보니

이제껏 내가 깎아먹고 살아온것이다.

그런거다.

세상사는 일 다 그렇고 그런거다.

망태 할아버지가 뭐하는 사람인지도 모르고

무작정 무서워 하던 그때가 행복하다.

엄마가 밥먹고 어여 가자 하면 어여가 어디인지도 모르면서

물 마른 밥 빨리 삼키던 그때가 그립다.

남들과 좀 다르게 살아보자고 버둥거리다 보니 남들도 나와 같더라.

모두가 남들 따라 버둥거리며 지 살 깎아먹고 살고 있다.

잘사는 사람 가만히 들여다보니 잘난 데 없이도 잘산다.


많이 안 배웠어도 자기 할 말 다하고 산다.

이러고 사는 게 잘사는 거다

Posted by 사라링

<procedure id="crdtorSttlAccNoSync" parameterClass="map">

BEGIN

MERGE INTO (

SELECT STTL_BK_CD,

STTL_ACC_NO

 FROM ACT_RESL_CRDTOR

WHERE RESL_NO = #RESL_NO#

) A

USING (

SELECT COMM_CD,

BK_CD,

BK_ACC_NO

 FROM ACT_STD_MGT

WHERE COMM_CD = '20-50'

) B

  ON (

1=1

)

WHEN MATCHED THEN

UPDATE

  SET A.STTL_BK_CD = B.BK_CD,

A.STTL_ACC_NO = B.BK_ACC_NO;

END;

</procedure>

Posted by 사라링

Problems warning 를 제거 하자.

 | JSP
2012. 10. 23. 13:14






@SuppressWarnings({"rawtypes","unchecked"})


현재 자바에서 노란색으로 뜨는 현상이 나타나는 경우 위의 Warnings Class 및 문법 등등 사용할수 있다..

이 문제는 위에서 같이 16229 개의 문제를 도출 하고 있다. 대부분의 경우

ArrayLisst  의 제너릭 타입을 지정 하지 않아 문제가 있다고 나온다. 이는 자바 1.5 버전 이상에서 도출 된다. 

다른 문제로 전역또는 지역 변수 값이 if 문이나 for 문에서 사용 하여 (실제로 사용 한다는 말) 컴파일시에 다른경로로 인식 하여 사용 안되는 문제라고 나오는 경우 이다. 

 

우선 Class 위에 @SuppressWarnings({"rawtypes","unchecked"})

사용 후 그래도 나타나신다면, 사용안하는 변수나 Map이 있을 경우가 있으실테니 주석 처리를 하거나 삭제 해주시면 됨.

 

또한 for문이나 if문 안에 들어가서 Warnings이 일어나는 경우 그 문법 위에 @SuppressWarnings({"unused"})를 사용하면 됨. 


함께 사용 하는 경우 @SuppressWarnings({"rawtypes","unchecked","unused"})   를 클래스 테임 위에 추가 하면 된다. 

단. 적용(대상이)이 없는경우 unchecked 나 unused 자체가 problems 가 나오게 되니 주의 하자.

'JSP' 카테고리의 다른 글

페이징 처리. JSP 설명까지 포함  (2) 2012.11.01
html excel 추출 하기.& Jquery excel 추출 하기.  (0) 2012.06.16
정규표현식 공식 및 응용 .  (0) 2012.05.08
기본JDBC 만들기  (0) 2012.05.08
Tiles(레이아웃처리)  (0) 2012.05.08
Posted by 사라링

재무재표

2012. 10. 19. 17:48

1. 기본설명 

재무제표란 기업의 가계부와 같은 것입니다.

 

일정한기간(대부분 분기별, 1년단위)동안 회사가 얼마큼의 물건을 팔았고 그 중에 얼마가 물건을 팔기위한

 

재료비로 씌였으며 얼마를 벌었다. 그리고 그 번것 중에서 얼마 빚을 갚고 얼마를 투자 했으며 남은돈

 

얼마를 주주들에게 돌려주고 회사에 얼마가 남았다. 는 일련의 정보를 보고서 형식으로 쓴 것입니다.

 

이 재무제표를 보고 사람들은 이 회사가 튼튼한 회사구나 이 회사가 지속적으로 투자를 하고 있구나

 

등등 재무 적인 현황을 파악 할 수 있습니다. 그리고 그 정보를 통해서 이 기업의 주식을 산다던지

 

채권을 산다던지 재테크 결정 수단으로도 이용 할 수 있고 취업을 앞둔 취업 준비생이라면 이 회사에

 

들어가면 내가 다니는 동안 망하지 않겠구나라는 판단을 내릴 수도 있습니다.

 

물론 우리같은 일반인들이 세세한 회계학적 용어들 하나하나를 다 기억할 필요는 없습니다..

 

그냥 대략적으로 이 단어가 이런 뜻이구나.. 얼마를 벌었고 얼마를 썼구나 파악할 정도로

 

이해 할 수 있으면 된다고 생각 합니다.

 

 

재무제표는 크게 다섯개의 보고서로 이뤄져 있습니다.

 

① 손익 계산서  ② 대차대조표  ③ 현금 흐름표 ④ 연결 손익계산서 ⑤ 연결 대차대조표

 

 

먼저 ① 손익 계산서는 일정기간(분기,1년)동안 매출액, 비용, 이익을 나태내 줍니다.

 

즉 가장 간단하게 "물건을 얼마 팔았는데 그중 얼마를 써서 실제로는 얼마 벌었다."

 

라는 정보를 가지고 있습니다.

 

② 대차대조표는 "회사에 재산이 얼마나 있고 빌린돈이 얼마가 있으며 그돈을 어떻게 쓰고 있다" 라는

 

정보가 들어 있습니다.

 

③ 현금 흐름표는 기업이 영업활동(장사,투자)을 해서 최종적으로 얼만큼의 현금이 들어 왔는지

 

알 수 있습니다. 나중에 다시 설명하겠지만 현금 흐름표에서는 이익,매출,차입금등등 기업 고유의 상태와

 

무관하게 기업이 현재 가지고 있는 현금량에만 관심을 가지고 있는 보고서 입니다.

 

④ 연결 손익계산서와 ⑤ 연결 대차대조표는 기본적으로 들어 있는 의미는 손익계산서, 대차대조표와

 

같은 내용을 담고 있지만 현대 사회에서 주식시장에 상장된 회사들중 회사를 단 한개만 운영하는  

 

기업주는 거의 없습니다. 대부분 몇개의 회사를 동시에 가지고 있습니다.

 

삼성 하면 삼성전자, 삼성증권, 삼성 SDI, 삼성 중공업 등등 LG역시 LG전자 LG텔레콤, LG화학 LG디스플레이

 

등등 여러개의 회사들의 주식 서로 얽혀 있는데 이런 얽힌 관계를 하나로 묶어서 그룹 전체

 

삼성이면 삼성그룹 전체, LG그룹 이면 LG그룹 전체를 연결해서 나타낸 손익계산서와 대차대조표라고

 

할 수 있습니다.

2. 손익계산서 보는 방법

  손익 계산서란 회계기간동안(1분기,1년) 매출액, 비용, 이익을 나타내는 보고서 입니다. 쉽게말해서 1년동안 얼마를 써서 얼마를 벌었는지를 의미 합니다.

 옆에 있는 손익계산서는 포털 사이트 네이버와 한게임을 운영하는 (주)NHN의 손익 계산서 입니다. 앞으로 (주)NHN의 재무제표를 예로 삼아 설명을 해 보겠습니다.

  

일 위에 있는 매출액은 우리가 생각하는 개념 그대로 회사가 서비스나 상품을 팔아서 번돈 입니다.

 

 

  밑에 있는 매출 원가는 상품을 팔때 들어간 재료비를 의미 합니다. 쉽게 생각해서 나무 책상을 팔았다면 나무책상을 만드는데 들어간 나무 가격이고 빵집이라면 빵을 만들때 들어간 밀가루 외 기타 재료가격입니다.(밑에 보면 인건비, 판매비 등이 있는 거 보이시져?? 말그대로 인건비라든지 광고비를 가 아닌 순수하게 제품을 만들때 씌인 원료 가격을 의미 합니다.)

 

((주)NHN의 손익계산서)

 

매출 총이익은  매출 총이익 = 매출액 - 매출 원가으로 구할 수 있습니다. 즉 순수하게 원료비를 제외하고 회사가 얼마를 벌어 들였나 하는 것을 의미 합니다.

  

그 밑에 있는 판매비와 관리비는 물건을 팔때 들어가는 여러 경비 의미 합니다. 예를 들어 직원 급여, 보너스, 복리후생비, 여비교통비, 통신비, 광고 전선비, 접대비, 지급 수수료, 감가상각비, 수선비, 임차료, 세금과 공과, 보험료, 회의비, 도서인쇄비, 기타 등등,,, 상상할 수 있는 모든 판매와 관련된 비용이 포함 된다고 보시면 됩니다.

 

 판매비와 관리비 밑에 3줄은 한칸 띄우고 시작되었는데요. 이건 판매비와 관리비 중 일부 항목을 표시해 놓은 것입니다. 인건비와 감가상각비, 연구개발비용이 판매비와 관리비에 포함 되어 있다는 걸 알 수 있습니다. 더 자세한 사항은 제조원가명세서라는 별도 보고서에 상세히 기록 되어 있습니다.

 

(감가상각비 란?? 회사도 재테크하기 위해서 또는 필요에 의해서 땅이나 다른 회사의 주식을 소유하고 있습니다. 그런데 모두가 알듯이 이 주식이나 땅 값이 일정한 것이 아니고 들쭉나쭉하지 않습니까? 이때 전년도 재무 재표에 썼던 가격 보다 오르거나 내린 가격 만큼을 감가상각비 항목으로 빼는 것입니다.

 ex) 05년 A회사 B공장부지 가격 10억  -> 06년 A회사 B공장부지 가격 8억원 --> 08년 손익 계산서 감가상각비 비용 -2억원 --> 요론 식입니다.)

 

그 밑에 있는 영업 이익은 영업이익 = 매출총이익 - 판매비와 관리비로 계산 되어 집니다.

즉 매출액에서 실질적으로 기업의 본연에 업무 즉 순수하게 장사를 해서 번돈을 의미 한다고 볼 수 있습니다.

 

그 밑에 EBITDA라는 항목이 있는데 이건 끝에 가서 설명 하도록 하겠습니다.

 

그 밑에는 영업외 손익 이라고 있습니다. 이것은 개인으로 치면 재테크를 해서 번돈이라고 생각 할 수 있습니다. 공무원에 다닌사람이라면 공무원일을 해서 받는 급여가 영업이익이라면 그 사람이 가지고 있는 돈으로 주식을 산다던지 집을 사서 남에게 월세를 받는 다던지 해서 얻는 수입이 기업에서는 영업외 수익이라고 할 수 있습니다. 그 외에 돈을 빌렸을 경우의 이자 비용이나 천재지변등으로 일어난 사건을 해결하기 위한 비용 등등 장사와 무관하지만 회사를 유지하는데 필요한 금액역시 포함 되어 있습니다.

 영업외 손익 밑에 역시 한칸 띄고 써놓은 것을 볼 수 있는 데여 이것도 위에 언급한 것처럼 영업외 손익 항목들 중 주요내용을 나열해 놓은 것입니다. 순 금융비용, 유가증권관련손익, 외화관련손익, 지분법손익등이 있는데여 개개인의 항목이 의미 하는 것을 알 필요는 없다고 생각합니다.

(그냥 보는 것과 비슷한 의미가 있습니다. 순 금융비용은 이자에 관한 비용이고, 유가증권관련손익은 주식,채권투자에 관한 손익, 외화관련손익은, 기업이 보유하고 있던 외화의 가치변화나 수출,수입가의 가치변화에 따른 손익, 지분법손익은 자기회사의 자회가의 주식변동 손익을 의미 합니다.)

 

그 밑에 있는 세전 계속사업 손익은 세전 계속사업 손익 = 영업 이익 +영업외 수익 - 영업외 손실

 

로 구할 수 있습니다. 아!!! 예전에는 경상이익이라는 말을 썼었는데 몇년전부터 용어가 바뀌었습니다.

 

그 밑에 있는 법인세 비용은 장사를 하고 번돈에 따른 세금을 낸다고 쉽게 생각하면 될 것 같습니다.

 

그리고 그 밑에 계속 사업 손익과 중단사업 손익이 있는데

먼저 계속 사업 손익은   계속사업 손익은 = 세전 계속사업 손익 - 법인세 비용

 

이 되고 중단사업 손익 회사가 중단한 사업이 있을 경우 이를 처분한 손실을 나타내는 것입니다. A라는 회사가 빵과 과자를 만들었는데 빵이 안팔려서 빵을 안팔기로 결정하고 빵만들던 기계나 재료등을 모두 처분했을때 나온 손익을 의미 합니다.

 

밑에 법인세 효과는 세금과 연관있는 부분으로 일반 재무제표를 볼때는 가볍게 무시해주셔도 되는 부분입니다.(평상시에는 잘 나오지도 않고 그 액수도 대부분 무시할 정도로 미미한 액수 입니다.)

 

그리고 마지막으로 대망에 당기 순이익이 있습니다.

 

당기 순이익 순수하게 회사의 매출액에서 나간돈 다 빼고 남은 이익을 의미 합니다. 진정한 의미에 수입이라고 말 할 수 있습니다.

 

위에 나왔던 EBITDA의 의미를 말씀드리면 영어로(Earnings Before Interest, Taxes, Depreciation and Amortization=법인세 이자 감가상각비 차감 전 영업이익)으로 순수하게 기업활동을 통해 벌어들이는 수익을 알기위해 쓰는 지표입니다. 주로 주식투자 하는 분들이 유용하게 쓰는 지표 입니다..

 

3. 대차대조표 보는 방법

 이번 글에서는 대차대조표 보는 방법에 대해서 알아 보도록 하겠습니다. 대차 대조표는 크게 세 부분으로 나뉘어져 있습니다. 자산부분, 부채부분, 그리고 자본 부분입니다.

 

자산 - 부채 = 자본

자본 + 부체 = 자산

 

으로 쉽게 설명 할 수 있습니다.

자본은 회사 자체가 가지고 있는 돈이라고 할 수있습니다. 그리고 부채는 의미대로 기업의 빚입니다. 그리고 자산은 부채와 자본을 합친 기업에서 총 굴릴 수 있는 자금을 의미 합니다.

 가정으로 예를 들면 집에 2억짜리 집을 샀는데 그중에 1억은 은행 대출을 받은 돈으로 구입한 것입니다. 여기서 은행에서 대출 받은 1억은 부채 집에 원래 보유했던 1억은 자본 그돈으로 산집 2억원은 자산이 되는 것 입니다.

  자산,부채,자본의 의미는 자산은 기업의 자금 운용 내용, 부채와 자본은 자금의 조달 내용을 의미 합니다.

 

  앞으로 계속 접하실 개념이라 먼저 말씀드리면 유동 비유동의 차이점 이해 해야 합니다. 재무제표상 유동과 비유동의 차이는 현금화 또는 채불시기가 1년을 기준으로 보통 1년이 안에 채무이해을 해야 하면 유동부채, 1년안헤 현금화가 가능하다면 유동자산이 되는 것이며 현금화 시기 또는 채무 시기가 1년 이상이라면 비유동 자산, 비유동 부채가 되는 것입니다. 흔히 동산과 부동산 개념과 헷갈리시는 분들도 계신데 부동산이 비유동자산인 것은 맞지만 동산(증권,현금 등)중에서도 비유동자산이 존재하므로 다르게 접근해야 하는 개념입니다.  

 

 그럼 이제 세부적으로 살펴 보도록 하겠습니다.

 

먼저 자산을 살펴보면 자산의 나열은 현금화가 쉬운 순서로 나열하는 것이 기본원칙입니다. 앞서 말씀드린데로 자산에는 유동자산과 비유동 자산으로 나뉠 수 있고 유동자산의 주요 항목은 위에 있는대로 현금 및 단기예금, 유가증권, 매출채권, 재고자산, 임대주택 자산 등이 있습니다. 현금및 단기예금은 말그대로 현금 자체를 가지고 있거나 현금과동등한위치에 있는 현금 등가물을 의미 합니다. 개인으로 치면 지갑안에 들어 있는 돈이나 바로 인출 가능하며 금액 손실이 없는 저축예금이나, CMA, MMF등이라고 할 수 있습니다.

 유가증권은 투자목적으로 산 단기증권을 의미 합니다.

 매출채권은 물건을 팔거나 서비스를 지급한 데에 대해서 받을 돈을 의미합니다. 쉽게 생각해서 외상으로 물건을 팔고 받을 돈을 의미 합니다.

 재고자산은 물건을 팔거나 서비스를 하는데 필요한 원료, 또는 파려고 만들었지만 아직 팔리지 않은 제품을 의미하며 실제 구입한매입가를 기준으로 책정합니다.  

 임대주택 자산은 말 그대로 사무실을 빌렸다든지 할때 들어간 자금을 의미합니다.

 비유동자산으로는 투자자산, 유형자산, 감가상각자산, 무형자산등이 있는데 투자자산은 말그대로 회사 여유자금 운용을 위해서 투자한 금액을 의미 합니다.

 유형자산은 회사가 소유한 건물, 기계, 차, 토지 등을 의미합니다.

 감가상각자산은 회사가 구입해 놓은 토지나 건물, 증권등의 가치가 예전 결산일때보다 높아지거나 낮아질 경우 그 차액을 표시하는 곳입니다.

 무형자산은 실체는 없지만 앞으로 돈이 될 수 있는 자산들을 의미합니다. 영업권, 개발권, 또는 특허, 저작권등이 여기에 포함 됩니다.

 

다음으로 부채에 대해 알아보면 부채 나열은 빨리 갚아야 되는 순서로 나열합니다. 또한 자산과 유사하게 유동부채와 비유동부채로 나뉠 수 있으며 유동부채의 항목은 매입차입금, 단기차입금,유동성 장기부채로 나눠 집니다. 매입차입금은 매출채권과 반대의 의미로 회사가 제품생산을 위해서 외상으로 산 원료들의 채무입니다. 개은으로 치면 외상으로 물건을 사서 갚아야할 돈입니다.

 단기차입금은 회사가 은행에 1년 이내에 쓰기로 하고 빌린 금액입니다.  개인으로 치면 카드 현금 서비스를 받는 거라고 생각하시면 됩니다.

 유동성 장기부채는 원래는 장기부채로 빌린 돈인데 만기가 1년이내가 된 금액입니다. 쉽게생각해서 집을 사려고 은행에 2억을 5년 뒤 일시상환으로 빌렸는데 4년이지나고 금년안에 갚아야 될 돈인 겁니다.

 비유동성 부채에는  사채, 장기차입금과 이연부채가 있습니다. 사채는 우리 일상에서 쓰는 의미의 사채가 아닌 회사채발행액수를 의미 합니다.

 장기차입금은 은행에서 1년이상 상환으로 빌린 금액을 의미 합니다.

 이연부채는 설명하기 조금 애매한 의미인데 이미 수입이 난 것에 대해서 이번 회계기간에 이정될 수 없는 부분을 의미 합니다. 예를 들어서 사무실을6개월간 빌려 주기로 하고 일시불로 6백만원을 받았다고 하면 저번 회계기간과 이번 회계기간 모두에 영향을 미치는 6백만원이지만 저번 회계기간에 모두 수익처리를 해버려서 이번 회계 기간에 그 금액을 빼는 것을 의미 합니다.

 

 자본에는 자본금, 자본잉여금, 자본조정, 자기주식, 기타포괄손익누계액,이익이여금으로 나눠 집니다. 자본금은 회사주식수 * 액면가 입니다.

 자본잉여금은 회사가 시장가로 유상증자를 했을때 들어온 금액에서 '유상증자발행주식수*액면가'를 뺀 금액입니다.

 자본 조정은 자기 회사주식을 사고 파는데 있어 일어난 금액의 차이를 나타내는 곳입니다.

 자기주식은 회사가 스스로 자기회사 주식을 보유하거나 보유한 주식을 처리한 항목입니다.

 기타포괄손익누계액은 회사가 보유한 증권등의 가치가 올라갔을때 나타내는 항목입니다. 하지만 그 증권을 처분하지 않았기 때문에 실질적으로 돈은 들어온 것이 아닙니다.

 

자본 총계 밑에 순운전자본 과 순차입금, 투하자본이라는 말이 있는데 순운전자본은 순유동자산에서 순 유동부채를 뺀 금액, 순차입금은 천체차입금에서, 순 유동성 현금을 뺀 금액, 투하자본은 회사주나 주주들이 실제로 회사에 투입한 금액을 의미 합니다. (이상 항목들 역시 기업분석을 위한 도구로서 큰 의미는 없다고 생각합니다.)

 

4. 현금흐름표 보는 방법

이번에는 현금 흐름표 보는 법을 써 볼까 합니다. 제 친구들이 보더니 너무 설명이 정확하지 않다. 혼란을 줄 수 있다고들 하는데요, 이 재무제표 보는 법은 전문적인 지식없이도 무슨내용이 들어 있는지 확인하는 정도로 이해할 수 있도록 쓰고 있습니다...^^

 

 현금 흐름표는 기업의 영업활동에서 최종적으로 투자한 만큼 현금이 들어 왔는지 확인 할 수 있는 보고서이며 이거서 "현금"이라고 함은현금 자체 및 현금 등가물을 의미 합니다.

 현금 등가물이란 첫째로 현금전환이 용이 해야 하며 둘째 가치변동이 크지 않아야 하고 마지막으로 단기투자목적으로 가입한 금융상품을 말합니다. 그 예로 3개월 만기 정기예금, 양도성예금(CD), 환매조건부 채권(RP)등이 있고 주식같은 경우는 현금화는 쉽게 가능하지만 가치변동이 크기 때문에 현금 등가물에서 제외 됩니다.

 현금 흐름표를 이해 하실때 주의 할 점은 기업의 현금에만 집중한다는 점입니다. 회사가 돈을 빌렸으면 기업 자체 내용으로는 부채니까 "-" 의 의미로 생각 할 수도 있겠지만 현금 흐름표안에서 만큼은 현금이 기업으로 흘러 들어온 내용이므로 "+"의 의미를 갖습니다. 하나 예를 더 들면 "감가상각비"의 경우 기업의 보유 자산의 가치 하락분에 대한 금액이지만 실제로 그 금액이 회사 밖으로 나간것은 아니기 때문에 "+"의 의미 입니다. 또 다른 예로 회사가 새로운 사옥을 구매했다고 가정하면 현금으로 부동산을 취득한 것인 만큼 그 자체로 자산 가치에서는 변동이 없지만 현금흐름표에서는 회사의 현금이 나갔으므로 "-"의 의미를 가지고 있습니다. 그래서 현금흐름표에서는 수입과 수익을 구분해서 사용합니다. 수익은 회사가 이익을 낸 돈을 말하는 것이고 수입은 매출,이익과 상관없이 회사의 현금이 증가하는 것을 의미 합니다.

 현금 흐름표에는 영업활동현금흐름, 투자활동현금흐름, 재무활동현금흐름, 순현금흐름으로 나뉘어 지며 영업활동현금흐름에는회사가 장사한데서 발생한 현금투자활동현금흐름에는 회사가 주식이나 땅등을 투자한 것에 대한 현금 흐름, 재무활동현금 흐름에서는 회사가 빌리거나 투자받거나 배당금 지출과 같은 회사 재정적인 면에서 발생한 현금흐름을 표시합니다. 마지막 순현금흐름은 위에 말한 내용을 다 합친 내용입니다. 각항목의 세부적인 내용들은 앞서 설명한 것과 중복되는 내용이 많으므로 앞서 설명하지 않은 개념만 설명 하도록 하겠습니다.

 웆영업활동현금흐름 항목 밑에 운전 자본이라는 것이 있는데 이것은 현금·예금·받을어음·외상매출금과 같이 거래활동에 즉시 동원될 수 있는 환금성 높은 자산을 말합니다.

   순 현금흐름은 영업활동현금흐름, 투자활동현금흐름과 재무활동현금흐름의 총합이며 그 밑에 기초현금과 기말현금은 회계 결산 시작때 가지고 있었던 현금이 기초 현금, 회개 결산 끝에 가지고 있는 현금을 기말 현금이라고 부릅니다. 물론 이둘의 차이가 순현금흐름에 표시 됩니다. 순수하게 증가된 현금을 의미 합니다.

 

참고로 현금의 증가 요은은

1. (현금이외의) 자산 감소(자산을 팔면 돈이 되져??)

2. 부채증가(빌린돈 역시 현금이니까)

3. 자본 증가(주주들이 투자한 돈입니다)

이며 현금 감소 요인은

1. (현금이외의) 자산 증가(돈 쓴단 소리져)

2. 부채의 감소(빚 갚았단 소리는 은행에 돈을 줬단 소리져)

3. 자본의 감소(회사 손해등을 매꾸기 위해서 회사 자본을 쓰는 경우니까 돈이 줄겠져?)

5. 연결재무제표 보는 방법(연결손익계산서+연결대차대조표)

 

 연결 재무제표는 요즘 회사 대부분이 단일 회사로 존재하지 않고 지분 구조가 복잡하게 얽혀있는 여러개의 회사들 단위의 기업입니다. 삼성이라는 기업군에 삼성전자, 삼성전기, 삼성생명, 삼성 증권 등등등 LG그룹안에는 LG전자, LG화학 LG텔레콤, LG파워콤 등등등 이런식으로 기업단위로 운영되고 있는 것이 대부분입니다. 이런 회사 구조들을 통째로 묶어서 표시 하는 손익 계산서라고 할 수 있습니다. 연결 재무제표는 왜 보느냐?? 여러 기업들이 서로 보완적인 회사들을 가지고 있는 경우가 많습니다. 현대차의 경우 현대차의 부품을 조달하는 현대 모비스, 차의 차체 부품인 철강을 조달할 수 있는 현대 철강 
등등 이런 식으로 회사 내부끼리 거래를 해서 사실 기업이 원래 가지고 있는 매출이나 순익에 비해 부풀려지는 경우가 많이 있을 수 있습니다. 예를 들면 이런 식입니다. A그룹에 B회사와 C회사가 있습니다. 여기서 B회사는 손실이 나고 C회사는 이익이 났습니다. 여기서 B회사가 C회사에게 기업 차원에서 건물을 매각합니다. 그럼 사실 두회사의 매출액이나 이익에는 변화가 없지만 건물 매각차익으로 B회사는 손식이 만회되어 이익 전화될 수 있고 C회사 역시 이익은 변함이 없고 잉여금으로 건물을 구입한것이 되어 이익이 그대로 유지가 될 수있습니다. 이런 식의 부정회계를 방지하기 위해서 도입된 것으로 연결 재무제표(연결손익계산서+연결대차대조표)에서는 그룹내 거래는 매출로 인정되지 않고 그룹외 에서 영업활동한 부분만 매출로 인정을 합니다.

  그럼 연결은 어디까지 되는냐?? 기업주의 경영권이 미치는 모든 회사가 대상이 됩니다. 직접경영권을 획득할 정도의 지분을 가지고 있는 회사(자회사), 경영에 직,간접적으로 참여 할 수 있는 회사(관련회사)로 나뉠 수 있으며 자회사와 관련회사를 합쳐 관계회사라고 부릅니다.

 여기서 이런 문제가 생깁니다. A회사가 B회사 지분의 30%를 가지고 있다고 가정하면 연결 손익계산서에 A회사의 재무상태는 100%반영 되는 것이 당연하지만 B회사 를 경영에 관련하는 것은 맞지만 그렇다고 완전 소유하는 것도 아닌데 B회사 재무상태를 어느정도 표시해야 될까?? 이경우는 A회사와 B회사의 숫자를 연결해 세전 계속사업비용을 계산하고 여기에서 법인세 비용을 뺀뒤 나온 이익에서 자신의 지분 퍼센트 만큼만 순이익으로 계산하게 됩니다.

 같은 방법으로 대차대조표 역시 구성하게 되고 자신의 회사 경영 범위가 넘어간 지분에 대해서는 밑에 소수주주지분이라는 부분을 만들어 표시를 합니다.

 그외의 내용은 손익계산서와 대차대조표 보는 방법과 똑 같이 보면 됩니다....^^

 

 요즘 시대의 회사들은 너무 얽히고 묶여서 개인 스스로 이회사의 관계회사의 손익을 계산하는 건 거의 불가능 하다고 봐야 하기때문에 그냥 참고로만 알아 놓는 것이 좋을 것 같습니다.


출처 : http://blog.naver.com/ralla2000

Posted by 사라링

SSL on ISC, Part 1: SSL은 무엇이며, 왜 이것을 사용해야 하는가? (한글)

Integrated Solutions Console을 사용하여 오픈 통신 채널을 통한 데이터 보안 이룩하기

Bimal Shah, Advisory Software Engineer, IBM
Aya Zaghloul, Software Engineer, IBM

요약:  암호화, 인증서 기반 인증, 보안 협상을 제공하는 Secure Sockets Layer (SSL)를 사용하여 오픈 통신 채널에서 데이터 보안을 이룩해 봅시다. 본 시리즈 Part 1에서는 SSL을 설명하고, Integrated Solutions Console에 이를 구현해야 하는 이유를 설명합니다. 나머지 Part 2와 Part 3에서는, Integrated Solutions Console Versions 5.1과 Versions 6.0.1에 각각 SSL을 구현하는 방법을 설명합니다.

이 연재 자세히 보기

원문 게재일:  2008 년 1 월 08 일 
난이도:  초급 영어로:  보기 
페이지뷰:  15256 회

인터넷 같은 오픈 통신 네트워크를 통한 데이터 보안은 개발자와 사용자들에게는 큰 걱정거리이다. 따라서, 여러분이 사용하고 있는 제품에 보안 환경을 설정하는 것이 매우 중요하다.

Netscape Communications와 RSA Data Security가 합동으로 개발한 Secure Sockets Layer (SSL)는 효율적인 방식으로 이러한 보안을 이룩할 수 있다. SSL은 암호화, 인증서 기반 인증, 구축된 네트워크 연결을 통한 보안 협상을 제공하고, 많은 기업들과 제품들은 자신들의 통신 프로토콜에 SSL을 채택하고 있다.

본 시리즈에서는, 다음 두 가지 주제를 집중 조명하기로 한다:

  1. 상세한 SSL 작동 방법
  2. Integrated Solutions Console Versions 5.1과 Versions 6.0.1 환경에서 SSL이 실행되는 방법

이 글에서는 SSL을 연구하고, 이것이 왜 Integrated Solutions Console 환경에 구현되어야 하는지 그 이유를 설명한다. 본 시리즈 Part 2와 Part 3에서는, Integrated Solutions Console Versions 5.1과 Versions 6.0.1에서 SSL을 구현하여 실행하는 단계별 가이드를 제공한다.

먼저, SSL이란 무엇인가?

SSL이란 무엇인가?

SSL은 TCP/IP를 사용하는 두 개의 통신 애플리케이션 간 프라이버시와 무결성을 제공하는 프로토콜이다. 클라이언트와 서버를 오고 가는 데이터는 시메트릭 알고리즘을 사용하여 암호화 된다.

퍼블릭 키 알고리즘(RSA)는 암호 키들의 교환과 디지털 서명에 사용된다. 퍼블릭 키 암호는 메시지를 암호화 하는데 사용되는 두 개의 키들을 사용하는 알고리즘을 정의한다. 하나의 키가 메시지를 암호화 하는데 사용되면, 다른 키는 암호 해제에 사용된다. 하나의 키(퍼블릭 키)를 공개하고 다른 키(개인 키)는 숨겨서 안전한 메시지를 받을 수 있다.

디지털 인증서

SSL에서 중요한 역할을 하는 디지털 인증서에 대해 알아보자. 디지털 인증서는 두 가지 목적을 갖고 있다:

  • 소유자의 신원 확인
  • 소유자가 퍼블릭 키를 사용할 수 있도록 함

디지털 인증서는 신용 기구 -- 인증서 기구 (CA) -- 에서 발행하며, 제한된 시간 동안에만 발행된다. 만료일이 지나면, 디지털 인증서는 교체되어야 한다. SSL은 키 교환, 서버 인증, 클라이언트 인증에 디지털 인증서를 사용한다.

디지털 인증서에는 인증서 소유자의 신분과 인증서 기구에 대한 정보가 포함되어 있다:

  • 소유자의 이름.
  • 소유자의 퍼블릭 키.
  • 디지털 인증서가 발행되었던 날짜.
  • 디지털 인증서가 종료하는 날짜.
  • 발행 기구의 이름이다. CA의 기구명이다.
  • 발행 기구의 디지털 서명.

SSL 연결은 http:// 대신 https://로 시작하는 URL을 사용하여 클라이언트에 의해 시작된다.

SSL 인증서 유형

SSL은 인증서를 사용하여 연결을 확인한다. 이러한 SSL 인증서는 보안 서버에 놓이고, 데이터를 암호화 하고 웹 사이트를 확인하는데 사용된다. SSL 인증서는 그 사람이 속해 있는 사이트를 확인하고, 인증서 보유자에 대한 정보, 인증서가 발행되었던 도메인, 인증서를 발행했던 Certificate Authority의 이름을 포함하고 있다.

다음은 SSL 인증서를 얻을 수 있는 세 가지 방법이다:

  1. Certificate Authority(CA) 인증서를 사용한다.
  2. 자가 서명 인증서를 사용한다.
  3. 더미 인증서를 사용한다.

Certificate Authority(CA) 인증서 사용하기

Certificate Authority는 업계의 신임을 받는 기구이며, 인터넷 인증서를 발행하고 있다. 대표적인 예로 VeriSign을 들 수 있다. CA 서명 인증서를 획득하려면, 충분한 정보를 CA에 제공하여 CA가 여러분의 신원을 확인할 수 있도록 해야 한다. CA는 새로운 인증서를 만들고, 이것을 디지털 서명을 한 다음, 여러분에게 제공한다. 대중적인 웹 브라우저들은 특정 CA에 의해 서명된 인증서를 신임하도록 미리 설정되어 있다. 클라이언트가 SSL을 통해 인증서가 발행된 서버로 연결하기 위해 추가적인 클라이언트 설정이 필요 없다.

자체 서명 인증서 사용하기

자가 서명 인증서는 사용자가 생성한 인증서이다. 자가 서명 인증서를 사용할 때, 인증서 발행자는 주제와 같다. 이 솔루션의 강점은 CA 서명 서버 인증서를 획득하는 것보다 자가 서명 서버 인증서를 만드는 시간이 덜 걸린다는 점이다. 하지만, 자가 서명 인증서는 SSL 연결을 통해 인증서를 설치하는 서버로 연결된 클라이언트가 인증서의 서명자를 신임하도록 설정되어야 한다. 인증서는 자가 서명되었기 때문에, 서명은 클라이언트의 트러스트 파일에 있지 않으므로, 추가되어야 한다. 모든 클라이언트의 트러스트 파일에 액세스 하는 것이 비현실적이라면, 이러한 설정을 사용하지 않는다. 대신 CA 서명 인증서를 얻어야 한다. 자가 서명 인증서는 서버와 인터랙팅 하는 클라이언트가 인증서를 신임하도록 설정될 수 있을 때에만 유용하다.

더미(dummy) 인증서 사용하기

멍청이(dummy) 인증서를 뜻하는 것이 아니다. 일반적으로 더미 인증서에는 지정된 환경에 SSL을 설정하고 그 기능을 테스트하는데 임시적으로 사용될 수 있는 플레이스홀더로서 작동하는 "가상의" 정보를 포함하고 있다. Integrated Solutions Console은 더미 인증서와 서버 및 클라이언트 트러스트와 키 파일을 제공한다.

그러면 이제, 인증서를 얻은 후에는 어떻게 할까?

클라이언트/서버 인증

인증서를 획득한 후에는 인증을 받아야 한다. 두 가지 유형의 SSL 인증이 있다:

  • 서버 측 인증
  • 클라이언트 측 인증

SSL 서버 인증은 서버의 신원을 확인할 수 있도록 한다. SSL을 실행하는 클라이언트 소프트웨어는 퍼블릭 키 암호라는 표준 기술을 사용하여 서버의 인증서와 퍼블릭 ID가 유효하고, 신임을 받는 CA의 클라이언트 리스트에 있는 인증서 기구에서 발행된 것인지를 검사한다. 만약 사용자가 네트워크를 통해서 신용 카드 번호를 보내고, 서버가 이를 받았는지 검사하고 싶을 경우 이와 같은 확인은 중요하다.

SSL 클라이언트 인증은 사용자의 신원을 서버가 확인할 수 있도록 한다. 서버 인증에 사용되었던 것과 같은 기술을 사용하여, SSL을 실행하는 서버 소프트웨어는 클라이언트의 인증서와 퍼블릭 ID가 유효하고, 신임을 받는 CA의 클라이언트 리스트에 있는 인증서 기구에서 발행된 것인지를 확인한다. 만약 서버가 기밀 금융 정보를 고객에게 보내고 있는 은행이고, 수신자 신원을 확인해야 하는 경우 이러한 확인은 중요하다.

그림 1은 이러한 프로세스를 시각적으로 묘사한 다이어그램이다:


그림 1. 클라이언트/서버 인증 
The client/server authentication dance 

키 파일(Key file) 대 트러스트 파일(Trust file)

WebSphere® Application Server에 의해 사용되는 SSL은 SSL 키 파일에는 개인 인증서를, 트러스트 파일에는 서명자의 인증서를 저장한다. 키 파일에는 인증서 모음이 포함되어 있는데, 각각 신원을 확인하기 위해 SSL 연결 초기화 동안 제공된다. 트러스트 파일에는 믿을 수 있는 것으로 간주된 인증서 컬렉션이 포함되어 있고, 제공된 인증서는 SSL 연결 초기화 동안 매치되어 신원을 확인한다.

SSL과 WebSphere Application Server

SSL 구현의 좋은 예는 IBM® WebSphere Application Server에 있다. 층을 이룬(layered) 보안 아키텍처에 보안이 구축된다. (그림 2)


그림 2. WebSphere Application Server의 보안 레이어 
WebSphere Application Server의 보안 레이어  

Network Security 레이어는 전송 레벨 인증과 메시지 무결성과 암호를 제공한다. 분리된 WebSphere Application Server 서버들간 통신은 SSL과 HTTPS를 사용하도록 설정될 수 있다. 또한, IP Security와 Virtual Private Network (VPN)는 메시지 보호에 사용될 수 있다.

SSL 프로토콜은 전송-레이어 보안-인증, 무결성, 기밀성-을 WebSphere Application Server의 클라이언트와 서버 간 보안 연결에 제공한다. 이 프로토콜은 TCP/IP 위, HTTP, LDAP, IIOP 같은 애플리케이션 프로토콜 밑에서 실행되며, 전송 데이터에 트러스트와 프라이버시를 제공한다. 클라이언트와 서버의 보안 설정에 따라서, 다양한 레벨의 트러스트, 데이터 무결성, 프라이버시가 확립된다. SSL의 기본 연산을 이해하는 것이 올바른 설정에 매우 중요하며, 클라이언트와 애플리케이션 데이터에 바람직한 보호 레벨을 확립할 수 있다.

다음은 SSL에서 제공하는 일부 보안 기능들이다:

  • 데이터 암호는 데이터가 와이어를 통해 흘러가는 동안 민감한 정보가 노출되는 것을 방지한다.
  • 데이터 서명은 데이터가 와이어를 통해 흘러가는 동안 수정되는 것을 방지한다
  • 클라이언트와 서버 인증은 올바른 사람 또는 머신과 통신하고 있다는 것을 확인해 준다.

SSL은 엔터프라이즈 환경에서 효과적인 보안이 될 수 있다.

SSL은 WebSphere Application Server 내에서 다중 컴포넌트에 의해 사용되어 트러스트와 프라이버시를 제공한다. 이러한 컴포넌트들은 HTTP 전송, ORB, 보안 LDAP 클라이언트다.

WebSphere Application Server에서 사용되는 SSL 구현은 IBM Java™ Secure Sockets Extension (IBM JSSE) 또는 IBM System SSL이다. IBM JSSE 프로바이더에는 SSL과 Transport Layer Security (TLS) 프로토콜을 지원하는 레퍼런스 구현과 애플리케이션 프로그래밍 인터페이스(IP) 프레임웍이 포함되어 있다. IBM JSSE 프로바이더에는 Java 2 플랫폼의 서명 관련 Java Cryptography Architecture (JCA) 기능을 위한 RSA 지원, 일반 SSL과 TLS cipher 수트, X.509 기반 키와 트러스트 매니저, JCA 키스토어 인증서용 PKCS12 구현을 제공하는 표준 프로바이더가 포함되어 있다.

JSSE 프로바이더 설정은 대부분의 다른 SSL 구현(예를 들어, GSKit) 설정과 비슷하다. 두 가지 차이점을 주목하라:

  • JSSE 프로바이더는 SSL 키 파일의 서명자와 개인 인증서 스토리지를 지원하지만, 트러스트 파일이라고 하는 개별 파일도 지원한다. 트러스트 파일에는 서명자 인증서만 포함될 수도 있다. SSL 키 파일에 모든 개인 인증서를 두고, 서명자 인증서는 트러스트 파일에 둔다. 개인 인증서만 보유할 수 있을 정도의 메모리를 가진 저렴한 하드웨어 암호 장치가 있을 경우에 이 같은 방식이 적당하다. 이 경우, 키 파일은 하드웨어 장치를 의미하고, 트러스트 파일은 서명자 인증서의 모든 것을 포함하고 있는 디스크 상의 파일을 의미한다.
  • JSSE 프로바이더는 플러그인에 의해 사용되는 상용 SSL 키 파일 포맷((.kdb 파일)을 인식하지 않는다. 대신, JSSE 프로바이더는 Java Key Store (JKS) 같은 표준 파일 포맷을 인식한다. SSL 키 파일은 플러그인과 애플리케이션 서버 간 공유되지 않는다. 더욱이, 키 관리 유틸리티의 다른 구현은 애플리케이션 서버 키와 트러스트 파일을 관리하는데 사용되어야 한다.

SSL과 Integrated Solutions Console

Integrated Solutions Console은 콘솔 모듈을 호스팅 및 통합할 수 있는 일반적인 웹 기반 관리 콘솔 프레임웍을 제공하여, 사용자들은 특정 IBM 제품들 보다는 솔루션을 관리한다. 이 프레임웍에는 포틀릿 컨테이너, 자바 관리 애플리케이션, Eclipse Help 모듈이 포함되어 있다.

SSL은 기밀성과 암호를 제공하도록 설정될 수 있다. 클라이언트 브라우저와 Integrated Solutions Console 서버 간 통신은 SSL을 사용하여 보호된다. Integrated Solutions Console이 폼 기반 인증을 사용하고, 이것은 로그인 동안 전송되는 사용자 ID와 패스워드를 암호화 하지 않기 때문에 암호화는 중요하다. 콘솔 모듈이 보안 연결을 통해 백엔드 리소스에 액세스 해야 한다면, 포틀릿은 SSL을 사용할 수 있다.

SSL이 중요한 이유?

왜 이것이 문제가 되는가? 오픈 통신 채널을 통해 안전하게(효과적으로) 데이터를 전송하는 것은 현대적인 IT 시스템을 관리하는데 있어 필수적인 요소이기 때문에, SSL은 이러한 보안을 확립하는데 도움이 되는 강력한 프로토콜이고, Integrated Solutions Console 환경에서 SSL을 실행하는 것은 복잡하고 도전이 되는 태스크가 될 수 있다. 왜 도전이 되는가? Integrated Solutions Console 같은 웹 기반 애플리케이션 환경에서의 데이터 보안은 초보자에게는 약간 모호해 보인다. IT 보안 자체가 광범위한 주제이고, 오픈 통신 네트워크에서 다양한 측면들을 다루고 있기 때문이다.

나머지 기술자료에서는 Integrated Solutions Console 기반 환경에서 SSL 중심의 데이터 보안을 설명하도록 하겠다. Integrated Solutions Condole 5.1 (더미, 자가 서명, CA 인증서 포함)용 SSL의 설정과 실행을 설명한 다음, Integrated Solutions Console 6.0.1에 똑 같은 것을 설정하는 방법을 설명하겠다.


참고자료

'문제점 해결' 카테고리의 다른 글

MB16AC 휴대용 모니터 드라이버 설치기.  (0) 2018.12.07
JAVA Could not generate DH keypair  (1) 2016.05.04
Posted by 사라링
<< PREV : [1] : [2] : [3] : [4] : [5] : [6] : [7] : [8] : [···] : [16] : NEXT >>

BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
디자인패턴 (1)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
웹스퀘어_ (0)
Total :
Today : Yesterday :