예금의 이자 계산 방식에 대한 얘기다.

 

토스의 "지금 이자 받기" 기능을 사용하고 있다. 일종의 일단위 복리 개념이라 하루의 몇 백 원이라도 이자를 일단위로 계속 받는다는 것은 즐거운 일이다.

 

지난주의 일이었다. 예금이 조금씩 증가 하고 있었는데, 어느 날 이자가 줄었다?!

하루에 500원씩 꼬박꼬박 들어오던 이자가 496원이 들어왔다.

뭔가 이상하다.

다음날도 496원이다.

 

고객센터에 문의했다.

이자 계산 방식을 알려줬다.

하루이자 = (전날 최종 잔액 * 연이율 / 365)

이렇게 하면 세전 이자가 나온다.

세금에는 2가지 종류가 있다. 이자소득세, 지방소득세

이자소득세 = 하루이자 * 14%

지방소득세 = 이자소득세 * 10%

즉, 세후 하루 이자 = 하루이자 - 이자소득세 - 지방소득세

여기까지는 문제가 없다.

 

문제는 여기서 부터다.

이자소득세와 지방소득세는 10원 이하 절사 한 금액을 반영한다. 즉 이자의 세금은 10원 단위로만 납부하는 것이다.

19원이 나와도 10원, 11원이 나와도 10원의 세금을 내게 된다.

이자가 줄어든 것이 아니라 절사 금액이 아주(!) 많다가 절사 금액이 줄어든 것이다.

즉, 절사 금액이 9원이다가 점점 일정 비율로 증가하다가 절사 금액이 0원이 되는 시점에 이자가 줄어들게 되는 것이다.

그렇다면, 항상 일정한 비율로 예금 잔액이 증가하면 항상 이자가 줄어드는 현상이 발생하는가?

그렇지는 않다.

이자의 원금 자체가 증가하므로 절사 금액은 거기에 묻힌다.

 

그럼 언제 예금 잔액이 늘었는데 이자가 줄어드는 경우가 발생하는가?

이건 역산을 해 봐야 하는데, 내가 할 일이 아니다. (이런 거 하라고 범용 컴퓨터가 있는 것이라는 게 항상 내 지론 ^^)

(간단한 python 코드는 여기 )

 

결론적으로 다음과 같다

1,304,000 61 71
2,608,000 122 132
3,911,000 184 194
5,215,000 245 255
6,518,000 307 317
7,822,000 368 378
9,125,000 430 439
10,429,000 491 501
...

즉, 어제 1,303,000원이었을 때는 예금이자가 71원이었는데

오늘 1,304,000원이 되면 예금이자가 61원으로 줄어든다.

 

나는 현재 저 10,429,000 구간에 있다.

 

결론적으로는 예금을 카뱅으로 9만 원 빼서 옮겼다. 즉, 읽어버린 10원을 찾았다.

예금이 증가하면 세전 이자 자체가 올라갈 것이고, 절사 금액은 여기에 묻힌다.

하지만 예금 잔액이 저 구간 내에 있다면....

돈을 빼서 다른 곳으로...

문제 번역 : https://steemit.com/topcoder/@skshin/topcoder-ab


기본적인 내용은 원문참고(B급프로그래머님 블로그)내용을 확인하면 되고, 추가적으로 발견된 내용들도 계속 보고되고 있다.

http://en.wikipedia.org/wiki/Shellshock_(software_bug)

위 위키피디아의 내용에 따르면 보고된 취약점은 다음과 같은 내용이 포함되어 있다.


1. 최초보고 (CVE-2014-6271)

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

뒤에 ehco vulnerable 이 실행되면 문제가 된다.

2. 추가보고(CVE-2014-7169)

X='() { (a)=>\' bash -c "echo date"; cat echo

이는 추가적인 문제다. 위의 CVE-2014-6271이 패치됐다고 해도, 문제가 된다.

정상적인 경우라면 bash -c "echo date"가 정상적으로 실행돼야 하지만, 위 결과로 date가 실행된 echo라는 파일이 만들어진다.

즉, date를 충분히 다른 실행명령으로 대체할 수 있게 되고, 그 결과가 echo 라는 파일로 남는 것이다.

3. 추가보고(CVE-2014-7186)

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

이 문제는 bash의 redirection stack의 오류를 활용한 것으로 보인다.

<<EOF가 하나일 때에는 문제가 되지 않지만 계속 쌓이면 문제가 된다.

덧붙여서 "||"연산자는 논리 OR연산자이다. 즉, A || B에서 A가 true이면 B와 상관없이(수행없이) true이므로 B가 비교(수행)되지 않아야 한다. 하지만 위 결과로 수행되는 것이다.


4. 추가보고(CVE-2014-7187)

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"

위의 문제가 redirection stack의 오류를 활용한 것이라면, 이번 문제는 shell 환경 영역의 stack의 한계를 넘어가도록 임의 수행한 결과를 활용한 것이다. 이는 취약점이라고 보기에는 좀 무리가 있어 보인다. 어차피 shell의 run-time의 stack 메모리는 한계가 있기 마련이고, 그에 대한 명령은 실패할 수 있는 경우가 항상 있기 때문이다.

** 문제점을 다시 보니, 다르게 파악한 부분이 있나 보다. 문제점은 다음과 같다.

Off-by-one error in the read_token_word function in parse.y in GNU Bash through 4.3 bash43-026 allows remote attackers to cause a denial of service (out-of-bounds array access and application crash) or possibly have unspecified other impact via deeply nested for loops, aka the "word_lineno" issue.

정확하게 parser에 문제가 있고, 경계를 넘어가는 오류로 인해 crash된다는 것이다.

github에서는 자주 fork라는 단어를 접하게 된다.

하지만, git에는 fork라는 명령어가 없다. (이에 대해서는 그냥 고민만 있었다.)


문제의 발단은 github 외부의 repository(sourceforge.net)에서 github로 fork가 하고 싶어 졌다.

그래서, 그냥 local에서 clone하고, github에 새로운 repository만들고, push 했다.


이제, 궁금해 졌다.

1. fork와 clone의 차이

2. 외부 repository에서 github로 fork하는 방법


1. fork와 clone의 차이

결론부터 얘기하자면, fork는 clone과 동일한 작업이다.

stackoverflow의 두 개의 문서( Git-ForkingWithoutGithub, GitForkIsGitClone? )에서도, fork는 clone이다라고 설명한다. 또한 github의 내부 문서에서도, fork라는 작업은 clone을 포함한 일련의 작업이라고 설명되어 있다. (정확하게는 fork라는 것은 clone을 해서 기존의 프로젝트에 기여하기 위해 upstream등의 remote를 설정하고 fetch 등의 작업을 하기 위한 일련의 행위들로 설명한다.)

즉, fork라는 버튼만 놓고 보면 clone이라는 것이다.


2. 외부 repository에서 github로 fork하는 방법

github의 내부 문서(ImportingAnExternalGitRepository )에 설명이 나와 있다.

기본 작업내용만 옮겨보면 다음과 같다.

# In this example, we use an external account named extuser and
# a GitHub account named ghuser to transfer repo.git

git clone --bare https://githost.org/extuser/repo.git
# Make a bare clone of the external repository to a local directory

cd repo.git
git push --mirror https://github.com/ghuser/repo.git
# Push mirror to new GitHub repository

cd ..
rm -rf repo.git
# Remove temporary local repository

여기서 clone --bare옵션이나, push --mirror 옵션에 대해서는 좀 더 알아볼 필요가 있다.

또한, 처음에 내가 했던 방법과 어떤 차이가 있는 지도 나중에 확인해 볼 일이다.


* clone --bare

* push --mirror


HTML/CSS parser중에서 쓸만한 것으로 찾던 중에 htmlcxx라는 것을 찾았다.

우선은 가져와서 컴파일 하는 것부터 기록해 둔다.

홈페이지 : http://htmlcxx.sourceforge.net/

가져오기

$ git clone git://git.code.sf.net/p/htmlcxx/code htmlcxx-code   

컴파일하기

aclocal

autoconf

autoheader

libtoolize

automake --add-missing

./configure



 

원본

브랜드별 소유관계를 확실히 알겠군.

예상하고 있던 것도 있는었는데, 의외였던 것도 있네.


출처 : http://blog.naver.com/kickthebaby/20151456147


피카추가 보이면 난시라는데,
처음엔 잘 안보이다가(귀 부분이 살짝 보였다..)
안경 벗고 보니 확실히 보인다.
나는 난시가 맞다. :)

출발은 KLDP의 한 스레드 : http://kldp.org/node/122100

전자화폐? 궁금증 증폭...

나름 자세한 설명은 여기 : http://bittalk.org/archive/index.php/t-127038.html

채굴(mine)은 대충 이해(?)했고,
클라이언트를 깔아 봤다.
http://bitcoin.org/

휑하다.
계정이라도 입력하는 곳이 있을 줄 알았는데, 그것마저도 없다.
조금 그대로 두고나니, 화면 아랫쪽에 Synchronizing with network... 이라는 게이지가 올라가기 시작했다. (그림상으로는 56%)
이것도 뭔지 정확하게는 모르겠다.

mining client를 깔아봐야 하나?

좀 더 고민해 보자...

출처 : http://bannew.com/community_2/14594


글자유머, 이와 비슷한 게 김화백 관련으로 하나 더 있던데,
그것도 찾아 볼까?

+ Recent posts