[출처] 송중기 송혜교 커플 예언 적중? 사주논리여행 블로그 주소|작성자 민블리




사주논리여행 우려했던 '세기의 이혼'…"누군가에겐 영업수단"

'사주논리여행'이란 이름의 블로거가 때아닌 스포트라이트를 받고 있다. 송중기 송혜교 커플의 이혼 가능성을 이미 2년 전 언급한 바 있어서다.

지난 27일 갑작스런 이혼 소식이 전해진 톱스타 부부 송중기와 송혜교가 종일 세간의 도마에 올랐다. 이 가운데 역학 블로거 '사주논리여행'이 지난 2017년 9월 두 사람의 궁합을 분석해 게시한 글이 새삼 큰 반향을 일으키고 있다. 이혼 가능성과 그 시기를 예견한 게 이제 와서 맞아떨어졌기 때문이다.

사주논리여행은 당시 글에서 "송중기의 사주는 두 번 결혼할 수 있다"면서 "과거 있는 여자를 아내로 맞게 된다"라고 썼다. 여기에 "송혜교와 송중기 모두 2019년 이별수가 있다"라고 덧붙이기도 했다. 이번 이혼 소식과 관련해 결과적으로 사주논리여행의 사주풀이가 적중한 셈이다.


사주논리여행 블로그 주소

https://m.blog.naver.com/PostView.nhn?blogId=nowonlsh&logNo=221093229041&referrerCode=0&searchKeyword=%EC%86%A1%EC%A4%91%EA%B8%B0


출처: https://evidencebased.tistory.com/12 [Evidence Based Blog]


본인이 네이버 블로그를 운영 중이라면 네이버 블로그에 이미 올려놓은 본인의 포스팅을 그대로 티스토리로 이전 또는 복사를 원하는 사람들이 많을 것이다. 그러나 이게 그렇게 순탄하지 않은 일이다. 이에 대해서 수 시간동안의 시행 착오를 통해서 나름 최적의 방법이라고 판단되는 것을 이 포스팅을 통해 남겨 놓고자한다. Evernote Web Clipper (에버노트웹클리퍼)를 이용하여 Evernote로 가져온다음에 티스토리(Tistory)의 에버노트(Evernote) plug-in을 이용하여 글로 가져오면 된다고 알려주는 포스팅은 기존에도 많이 있었으나, 실제로 해본사람은 알 것이다. 그냥 단순히 그렇게 한다고 제대로 되는게 아니라는 것을. 결론부터 적자면 다음과 같은 방법을 따라야한다. 내가 생각하기에는 이방법이 가장 최적의 방법이다. 제대로 작동하면서 더 좋은 방법이 있다면 피드백을 부탁한다. 



요약정리


준비과정


  1. Evernote 계정이 없다면 Evernote 계정 만들기.
  2. 크롬 (chrome) 웹 브라우저에 "에버노트 웹클리퍼(Evernote Web Clipper)" 확장 플러그인 설치.
  3. 티스토리 (Tistory) plug-in에 "에버노트(Evernote) 글 불러오기”확장 플러그인 설치.
  4. PC 또는 MAC에 에버노트(Evernote) application 설치


실행과정

  1. 티스토리로 복사를 원하는 네이버 블로그의 해당 포스트 URL을 획득
  2. 크롬 웹브라우저 주소 입력 창에 위의 URL 앞에 m.을 덧붙여 해당 포스트의 모바일 페이지로 접속
  3. 본문의 내용만 글과 이미지를 포함하여 전부 드래그하여 빠짐 없이 선택되도록 함 (글을 수정에 들어가서 하는 것이 아니라 읽는 화면에서 한다.)
  4. 선택된 상황에서 마우스 우클릭 —> Evernote Web Clipper —> 선택 영역 스크랩
  5. 에버노트 PC또는 MAC용 application 실행하여 스크랩된 Evernote 노트를 선택
  6. 해당 노트에 “Tistory" 또는 “티스토리” 태그를 추가하고 노트의 제목을 포스팅 제목으로 바르게 수정
  7. 에버노트 메뉴바에서 “서식” —> “서식 간단히” 
  8. 노트내 복사되어 있는 모든 이미지를 하나하나씩 우클릭하여 “링크” —> “제거”


마무리 과정

  1. 티스토리 글쓰기로 와서 우상단 EVERNOTE 버튼 클릭
  2. 에버노트 노트 목록에서 해당 노트를 불러오기 (해당 포스트가 보이지 않는다면 태그를 제대로 입력했는지 확인한다.)
  3. 티스토리 글쓰기 편집창 내에서 글꼴, 줄간격, 이미지 배열 등의 서식을 원하는 모습대로 올바르게 수정하여 발행

 



부가설명


위처럼 복잡한 과정이 필요한데도 굳이 에버노트를 이용하는 것을 추천하는 이유
  • 티스토리가 에버노트를 불러오는 plug-in을 기본적으로 제공
  • 이미지 파일을 네이버 블로그에 업로드했던 원본 그대로 손실 없이 다시 티스토리로 가져올 수 있음
  • 이미지를 하나하나 저장해서 다시 업로드한 다음 재배열할 필요 없이 글과 이미지의 배열이 유지됨

에버노트에서 “서식 간단히”를 해야하는 이유
  • 네이버 블로그 Smart editor로 작성한 경우 문단 하나하나, 이미지 하나하나가 독립된 카드로 되어 있어 글 사이와 이미지 사이마다 여백이 뒤죽박죽으로 생성되어 하나하나 편집하려면 중노동임(에버노트에서 제대로 보이더라도 서식 간단히를 거치지 않고 티스토리로 불러와보면 알게될 것임)

네이버 블로그 모바일 페이지에서 clipping 하는 이유

  • 일반 페이지에서 하는 경우 블로그 본문 내용이 Table의 셀로서 에버노트 내에 들어와서 올바르게 편집하기 굉장히 까다로움



Step by Step



티스토리 관리메뉴에서 플러그인 설정으로 들어간다. 글쓰기 플러그인 중에서 Evernote 글 불러오기 플러그인을 설치한다.



위와 같이 들어가면 되며 저기서 에버노트 계정을 반드시 연결해야만 동작이 된다 (에버노트 계정이 없다면 만들 것)



크롬 (chrome) 웹 브라우저에 "에버노트 웹클리퍼(Evernote Web Clipper)" 확장 플러그인 설치한다.
(크롬 웹브라우저를 실행해서 이포스팅에 들어와서 여기 를 클릭한다.)

복사하고자 하는 네이버 블로그 포스팅으로 들어가서 해당 포스팅의 blog.naver.com/블로그아이디/번호  로 이루어진 URL을 얻는다.

위에 URL 앞에 m.을 추가하여 크롬에서 URL 입력란에 m.blog.naver.com으로 시작하도록 변환하면 같은 포스트의 모바일 페이지로 이동 가능하다. 

모바일 페이지에 들어왔으면 포스트 본문을 전부다 드래그한다.
이 때 주의할 것은 글을 수정하는 화면에서 드래그하는 것이 아니라 그냥 일반적으로 보는 화면(읽기 상태)에서 드래그해야 한다. Smart editor로 작성한 경우 수정으로 들어가면 전부다 제대로 선택하는 것이 매우 어렵고 제대로 되지도 않는다.



위와 같이 이미지와 글이 전부 드래그가 된 상황에서 마우스 우클릭 —> Evernote Web Clipper —> 선택영역 스크랩




위와 같이 크롬내부에서 "Tistory에 스크랩 완료"라는 팝업이 떳다면 제대로 스크랩 된 것이다.


이제 크롬 브라우저를 벗어나서 에버노트(Evernote) 앱(프로그램)을 실행한다.


스크랩된 노트로 들어와서 제목을 올바르게 수정한다.


태그를 반드시 추가한다. 태그는 “티스토리” 또는 “tistory” 중 하나로 추가한다.





위와 같이 제목위에 태그를 추가하는 란이 있으며, 둘 중 하나만 하면된다. 


다음은 에버노트 어플(프로그램) 메뉴내에 서식 —> 서식 간단히를 실행한다.





다음은 노트내 포함되어 있는 모든 이미지마다 마우스 우클릭 후에 링크를 제거해준다.



이렇게하지 않으면 모든 이미지 파일이 네이버 포스트 링크를 가지게되어 티스토리에 포스팅을 올린 뒤에도 티스토리에서 이미지를 클릭하면 네이버 블로그로 이동하는 낭패가 발생하게된다. 



이제 티스토리 글쓰기로 이동하여 



Evernote 버튼을 눌러준다.


참고로 분류와 주제는 자동으로 지정되지 않으므로 직접 선택한다. 제목은 에버노트에서 똑바로 써놨다면 제대로 들어올 것이다.


Evernote 버튼을 누르면 아래와 같은 팝업창이 발생하며 포스팅할 노트를 선택하면 LOADING 메시지가 뜨면서 티스토리가 에버노트의 노트를 불러오게된다.





여기까지 모든 복사가 완료된 것이고 이제 티스토리 내에서 글자 크기, 줄간격 등을 포함하여 세밀하게 수정하도록 하자. 

그리고 네이버 Smart editor를 이용하여 네이버 블로그를 작성한 경우 그 서식을 그대로 가져와서 편하게 딱 티스토리로 복사할 수 있는 방법은 사실상 없다. 이방법은 Smart editor 3.0을 이용하여 작성하였더라도 정상적으로 작동한다. 



출처: https://evidencebased.tistory.com/12 [Evidence Based Blog]

출처:https://jwkcp.github.io/2017/10/19/social-login-facebook-strictmode/


페이스북 소셜 로그인 앱을 생성 후 소셜 로그인을 시도하면 아래와 같은 메시지가 나오며 오류가 발생할 때가 있다.

증상

URL을 읽어들일 수 없음: 앱 도메인에 포함되어 있지 않은 URL입니다. 이 URL을 읽어들이려면 앱 설정에서 앱 도메인 필드에 앱의 모든 도메인과 서브 도메인을 추가하세요.

원인

분명 예전에 문제없이 동작했었는데 뭔가 이상하다 싶다면 페이스북 소셜 로그인에 새로 생긴 설정 ‘Strict 모드’를 살펴봐야 한다. 좌측 메뉴 중 ‘제품 > Facebook 로그인 > 설정’에 들어가면 리디렉션 URI에 Strict 모드 사용 이란 옵션이 있다. 이 설정 활성화 여부에 따라 유효한 OAuth 리디렉션 URI 에 넣는 주소가 변하지 않더라도 오류가 발생했다가 안했다가 하기 때문이다.

해결 방법

예를 들어, 로그인 주소가 http://localhost:8000/accounts/login 라고 가정했을 때, ‘Strict 모드’사용 여부에 따른 ‘유효한 OAuth 리디렉션 URI 값’을 설정은 아래와 같다.

1.리디렉션 URI에 Strict 모드 사용: 활성화

(오류) http://localhost:8000 
(성공) http://localhost:8000/accounts/login

2.리디렉션 URI에 Strict 모드 사용: 비활성화

(성공) http://localhost:8000 
(성공) http://localhost:8000/accounts/login

결론

‘Strict 모드’를 비활성화하고 2번 방법을 사용하거나 ‘Strict 모드’를 활성화하고 1번 방법을 사용한다. 
페이스북에서는 1번 방법을 권장하고 있다.

‘Strict 모드’에 관한 페이스북 문서는 여기 참고

  1. Favicon of https://hhlbbcnofn.tistory.com 나의 걸음 2018.03.04 17:35 신고

    사진을 검토한다 뜹니다.회원가입도 안 되고요.사진에 제 얼굴 사진을 올리지 않아서 그런 것 같습니다.

지진

지면이 흔들리는 자연 현상으로, 예고 없이 찾아오기 때문에 많은 피해를 줄 수 있습니다.
지진 피해를 최소화하기 위해서는 지진 발생 시 행동요령을 평소에 익히고, 실제 발생 시 침착하게 대처하는 게 중요합니다.

지진 발생시 국민행동요령

지진 발생 순간에는 적절한 판단이 어려우므로, 평소에 행동요령을 숙지하여 대응합니다.

지진 발생시 상황별 행동요령
지진 발생시 상황별 행동요령


ansible 글 내용을 작성하면서 멱등성(idempotent)이란 용어를 쉽게 표현한 곳이 없어서 서술해보았다.



* 멱등성(idempotence) 이란?


연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성(idempotence) 이라 한다. puppet, chef, ansible 등은 모두 이런 특성을 가지고 있다. 

쉽게 말하면, rest api의 경우 get, head,put, delete 메소드는 멱등성을 가지고 있다. 그러나 post는 상태를 변화시키기 때문에 멱등성이 없다. (status 변화를 준다.)




* ansible 툴에서의 멱등성이란?


여러번 ansible 툴을 사용하더라도 동일한 결과값을 나올 수 있도록 제공되는 형태여야 한다. 즉 매번 다른 결과가 나오거나 에러가 나온다면 비멱등성(non-idempotent) 하다고 할 수 있다. ansible 툴의 거의 대부분의 모듈은 멱등성을 제공한다. 또한 멱등성을 제공하기 위해서는 조건절을 제공하고 있다. 


예를 들자면, 더 깊이 들어가면, 파일/디렉토리를 생성또는 삭제하는 ‘create:’, ‘remove:’ 같은 ansible 모듈을 실행할 때 ‘when:’ 조건절을 이용할 수 있다. 상태가 변경되면 ‘changed_when:’ 또는 ‘failed_when:’을 사용할 수 있다. 대부분의 ansible 모듈이 멱등성(idempotence)를 보장한다라는 의미는 상태(status)를 파악할 수 있다는 의미를 가진다. 


원래 제공한 ansible 모듈은 대부분 멱등성를 제공하나 개발자/시스템 운영자가 만든 ansible 스크립트는 멱등성를 제공하지 못할 수 있다. 따라서 멱등성이 깨지지 않도록 주의해야 한다. 



출처: http://knight76.tistory.com/1989 [김용환 블로그(2004-2017)]

출처: https://github.com/guiclla/JSBatchobfuscator



JSBatchobfuscator-master.zip



웹 서버에 띄워서 사용하면 되며, 윈도우의 경우 APMSETUP을 이용하여 간단하게 웹서버 구동 가능


apmsetup을 Default로 설치할 경우 c://APM_setup 에 설치 되며 htdocs에 해당 파일을 넣어 주면 실행 가능하다




bat 난독화 변환 모습이며, 해당 내용으로 bat 실행하면됨

출처: http://effectiveprogramming.tistory.com/entry/Eclipse-%EB%8B%A8%EC%B6%95%ED%82%A4


 Eclipse 단축키.xlsx


Java 프로그래밍 툴로 Eclipse를 많이 사용한다. Eclipse가 제공하는 단축키도 많고 단축키를 새로 바인딩 할 수도 있는데, 그 중에서도 매우 유용하게 사용할 수 있는 것들을 골라서 소개해 보도록 하겠다. 특히 단축키는 외우고 있을 때 더욱 위력일 발휘하기 때문에 나 같은 경우도 모니터 앞에 단축키 목록을 출력해서 복사해서 붙여 놓고 있다. 그럴때 사용하기 좋도록 엑셀파일로 만들어 첨부해 두었다.



글자  단축키

글자 크기를 축소 및 확대 할 수 있는 단축키들이다.

Ctrl+Shift + '+'   글자 크기 확대

Ctrl+Shift + '-'   글자 크기 축소



이동 단축키

원하는 곳으로 이동을 쉽게 할 수 있는 단축키들이다.

Ctrl+객체클릭 변수나 클래스 등을 정의한 곳으로 이동

대부분 알만한 단축키인데 컨트롤을 누르고 객체명 또는 타입명을 클릭하면 해당 객체나 타입의 선언부로 이동한다.


Ctrl+Shift+G 변수나 함수 등을 레퍼런스 하는 곳으로 이동

    변수나 함수명을 드래그 또는 더블 클릭 해서 선택한 후 이 단축키를 누르면 아래와 같이 해당 변수나 함수를 레퍼런스 하고 있는 곳이 열거 된다. 클릭하면 해당 코드로 이동할 수 있다.


Alt+LEFT 이전 커서 위치로 이동

    매우 유용한 단축키인데, 한 곳에서 편집을 하고 있다 다른 곳으로 이동한 후, 다시 이전 위치로 이동하고 싶을 때 이 단축키를 누르면 된다. 여러번 반복해서 이전 위치로 이동하는 것도 가능하다.


Alt+RIGHT 다음 커서 위치로 이동

    위의 키와 함께 쓰이는 키로써, 편집을 하던 이전 위치로 이동했다가(Alt + LEFT) 다시 다음 위치로 이동하고 싶을 때 이 단축키를 누르면 다시 돌아간다. 역시 반복적으로 복귀하는 것이 가능하다.


찾기 단축키

Ctrl+Alt+G 전체 workspace에서 문자열 찾기

    문자열을 선택한 후 이 단축키를 누르면 아래쪽 Search 창에 해당 문자열이 들어 있는 모든 프로젝트의 모든 파일을 찾아서 보여 준다.


Ctrl+K 선택한 문자열을 파일 내에서 찾기

    문자열을 선택한 후 이 단축키를 누르면 파일 내에 있는 동일한 문자열을 "위에서 아래" 순서로 찾아서 커서를 이동시켜준다.


Ctrl+Shift+K 선택한 문자열을 파일 내에서 역순으로 찾기

    문자열을 선택한 후 이 단축키를 누르면 파일 내에 있는 동일한 문자열을 "아래에서 위" 순서로 찾아서 커서를 이동시켜준다.



주석 단축키

Ctrl+Shift+/ 블록을 블록 주석으로 처리

    화면에서 일부 블럭을 드래그 하여 선택한 후 이 단축키를 누르면 /*로 시작하여 */로 끝나는 블럭 주석으로 만들어준다.


Ctrl+Shift+\ 블록 주석 제거

    이미 블럭 주석이 되어 있는 부분을 선택한 후 이 단축키를 누르면 블럭 주석이 해제된다.


Ctrl+/ 한줄 주석 처리 또는 제거

    화면에서 일부 블럭을 드래그 하여 선택한 후 이 단축키를 누르면 각 줄이 "//"로 시작하는 한줄 주석들로 만들어준다.


자동화 단축키

Alt+Shift+R 변수나 클래스 등의 리팩토링

    변수나 클래스명 등 모든 명칭에 마우스를 올리거나 드래그 해서 선택 한 후 이 단축키를 누르면 아래와 같이 명칭에 박스가 생긴다. 그 후 명칭을 편집하여 변경하면 그 명칭을 사용하는 곳 전체에서 명칭이 한꺼번에 변경된다. 종종 변경된 명칭이 기존의 명칭과 충돌되면 에러가 발생한다.


Ctrl+Shift+O 자동으로 import

    외부 패키지나 라이브러리에 있는 클래스를 사용하게 되면 참조 오류가 발생한다. 만약 패키지나 라이브러리가 이미 프로젝트에 등록이 되어 있다면 이 단축키를 눌렀을 때 자동으로 import 코드를 생성해 준다.


Ctrl+I     들여쓰기 자동 수정

    일부 블럭을 드래그 하여 선택한 후 이 단축키를 누르면 들여쓰기를 설정된 포맷에 맞게 수정해 준다. 외부 소스를 복사해 왔을 때 종종 들여쓰기 단 수나 스페이스바 들여쓰기가 안맞는 경우가 있는데 이때 사용하면 알아서 사용하는 포맷에 맞게 들여쓰기를 해준다.


구조 보기 단축키

Ctrl+T(또는 F4) 클래스 Hierarchy 보기

    클래스의 계층이 복잡할 경우, 또는 인터페이스가 정의되어 있는데 인터페이스를 구현한 구체 클래스를 찾기 힘든 경우에 클래스 명 또는 인터페이스 명 위에 커서를 놓고 이 단축키를 누르면 그 클래스의 계층도를 보여 준다. 아래는 IDestination이라는 인터페이스에 이 단축키를 눌렀을 때 보여지는 화면이다. 인터페이스는 I 모양의 아이콘, 클래스는 C 모양의 아이콘으로 나온다.


Ctrl+O 클래스 멤버 함수 보기

    이 단축키는 파일 내에 선언되어 있는 모든 클래스와 모든 인터페이스들에 내부에 선언된 모든 멤버 함수들을 보여준다. 아래는 그 예시이다.



편집 단축키

Alt+Shift+A 상하 편집 모드로 전환

   종종 한 줄이 아니라 여러줄에 걸쳐 선언되어 있는 클래스 명이나 변수명만을 선택적으로 복사하고 싶을 때가 있다. 이럴때 이 단축키를 누르고 블럭을 선택한 후 Ctrl+C를 하고, 다시 이 단축키를 눌러서 상하 편집 모드에서 나온 후에 붙여 넣기를 하면 블럭 내에 선택되었는 부분만 복사가 된다.



Ctrl+Shift+X 선택된 문자열을 대문자로 전환

    선택한 문자열을 대문자로 전환해 주는 단축키이다. 보통은 일반 변수로 선언했다가 enum 타입 또는 상수로 선언을 바꾸고자 할 경우에 유용하다.


Ctrl+Shift+Y 선택된 문자열을 소문자로 전환

    선택한 문자열을 소문자로 전환해 주는 단축키이다. Java의 일반적인 명명법으로는 클래스는 대문자로, 인스턴스명은 소문자로 시작된다. 그런데 보통은 클래스명의 첫머리를 소문자로 한 명칭을 인스턴스명으로 사용하는 경우가 많다. 가령 TcpCommunication 클래스의 인스턴스명은 보통 tcpCommunication이라는 식이다. 이런 경우 클래스명을 복사하여 붙여 넣은 후, T를 선택하고 이 단축키를 누르는 식으로 사용한다. 이 단축키는 위에서 소개한 상하 편집 모드로 변환 단축키(Alt+Shift+A)와 함께 사용했을 때 더 강력하다. 즉 상하 모드에서 여러줄에 걸쳐 선언된 클래스명을 복사해서 붙인 후 이 단축키로 첫머리를 소문자로 변환하면 금새 인스턴스명으로 변환된다.



리팩토링 단축키

Alt+Shift+S R Getter/Setter 자동 생성 창 열기

    Getter / Setter를 자동 생성해주는 창을 여는 단축키이다. Getter와 Setter를 여럿 만들어야 하는 경우에 유용하게 사용할 수 있다.

Alt+Shift+M Method로 추출

    소스 코드를 블럭 선택 한 후 이 단축키를 누르면 메소드 생성 창이 뜬다. 메소드 명과 변수명을 적절히 입력하고 나면 입력한 메소드 명의 메소드가 생성되고, 선택한 소스는 그 메소드 내로 이동하며, 기존 소스가 있던 자리는 메소드 콜로 대체된다.


Alt+Shift+I Method를 인라인 하기

    Method로 추출 단축키의 반대이다. 메소드에 커서를 놓고 이 단축키를 누르면 이 메소드를 사용하고 있는 모든 곳에 메소드 내의 소스 코드가 삽입되고, 메소드는 삭제된다.


기타 단축키

Ctrl+W 현재 파일 닫기

    편집하고 있는 파일을 닫는다.

Ctrl+Shift+W 열린 파일 모두 닫기

    종종 편집하기 위해 열어 둔 파일이 너무 많은 경우가 있다. 이 때 이 단축키를 누르면 모든 창이 닫힌다. 닫히기 전에 저장이 안된 파일에 대해서는 저장하라고 경고 창을 띄워 주기 때문에 안전하게 사용할 수 있다.

Ctrl+F11 최근 실행 파일 실행

    최근에 실행했던 프로그램 실행 파일을 실행해 준다. 만약 현재 편집 중인 파일에 main() 메소드가 있을 경우 현재 파일을 실행한다.(최근 실행 파일과 현재 파일 중 어떤 것을 실행할지를 선택할 수 있는 옵션이 있다.)

Alt+Shift+ X T Unit Test 실행

    유닛 테스트를 작성하여 사용하는 경우에 유용한 단축키이다. 이 단축키는 여러모로 유용한데, 테스트 파일 전체를 실행하고 싶으면 그냥 이 단축키를 누르면 된다. 만약 특정한 한 개의 유닛 테스트 함수만을 실행하고 싶다면 함수를 드래그 해서 선택하고 이 단축키를 누르면 그 테스트 함수만 실행된다. 만일 특정 패키지를 실행하고 싶다면 Package Explorer 창에서 패키지를 선택하고 이 단축키를 누르면 된다. 또 전체 프로젝트에 대한 테스트를 하고 싶다면 프로젝트를 선택한 후 단축키를 누르면 된다.


Ctrl+ + / - 텍스트 에디터 폰트 크기 조절

    이 단축키는 내 경험상 Eclipse 최신 버전인 Neon에서만 동작한다. 종종 텍스트 폰트 크기를 손쉽게 변경하고 싶을 때가 있다.(세미나나 강의를 위해서 프로젝터를 사용하게 될 경우 특히 그렇다) 이 때 이 단축키를 사용하면 폰트 크기가 조절된다. 텍스트 에디트 창에서만 실행 가능하다.


사용자 지정 단축키

Eclipse에서는 다양한 커맨드에 대해서 사용자가 직접 단축키를 지정할 수 있다. 아래는 단축키로 지정해 두면 도움이 되는 것 들이다.

Ctrl+Shift+P 새로운 패키지 생성( New (Package)에 대해서 )

    새로운 패키지를 생성하는 단축키이다. 기본적으로는 지정이 안되어 있다. 따라서 Preferences / General / Keys 에 들어가서 검색창에 package를 입력한다. 그러면 그 중에 창 모양 아이콘과 함께 "New (Package)" 라는 것이 있을 것이다. 그것을 선택한 후 Binding 입력란에 이 단축키를 입력한다. 그리고 When 란에는 In Windows를 선택한다. 그러면 이후 새로운 패키지를 추가할 때 이 단축키만 누르면 패키지 생성창이 뜬다.


Ctrl+Shift+M 새로운 클래스 생성

    위와 비슷하게 새로운 클래스를 생성하기 위한 단축키이다. Preferences / General / Keys에 들어가서 검색창에 class를 입력한다. 그 중에서 "New (Class)"를 선택한다. 만약 Java와 C/C++을 동시에 사용하는 경우라면 Java 클래스를 생성하고 싶다면 "New (Class (org.eclipse.jdt.ui.....)"로 되어 있는 것을 선택하고, C++ 클래스를 생성하고 싶다면 "New (Class)"를 선택하면 된다. 그리고 위와 비슷한 방법으로 단축키를 입력하고 When란에 Java는 Editing Java Source를, C++은 In C/C++ Views를 선택한다. 이후에 클래스를 생성할 때 이 단축키를 입력하면 클래스 생성창이 뜰 것이다.


출처: 안상욱님 페이스북


이 글은 '비트코인 코어' 개발자 Mike Hearn이 2016년 1월14일 미디움에 올린 The resolution of the Bitcoin experiment를 번역한 겁니다. 읽기 쉽게 의역한 부분 많습니다. 문맥을 고려해도 틀린 부분이 있으면 댓글 달아주세요. 
나는 5년 넘게 비트코인 개발자로 일했다. 내가 작성한 비트코인이라는 소프트웨어는 수백 만 명에 달하는 사용자와 수백 명의 개발자가 사용했다. 내 말 한마디가 몇몇 스타트업의 탄생으로 직결되기도 했다. 나는 Sky TV와 BBC 뉴스에서 비트코인을 주제로 이야기했다. 나는 <이코노미스트>지에 종종 비트코인 전문가이자 주요 개발자로 인용됐다. 나는 SEC(미국 증권거래위원회)와 은행가, 카페에서 만난 일반인에게 비트코인을 설명했다.
처음부터 나는 언제나 같은 말을 했다. 비트코인은 일개 실험이고, 다른 모든 실험이 그렇듯, 비트코인 역시 실패할 수 있다. 그러니 손실을 입어선 안 되는 자산을 함부로 투자하지 말라고 말이다. 인터뷰에서도, 콘퍼런스 발표에서도, 이메일에서도 이 말을 반복했다. Gavin Andresen과 Jeff Garzik 같은 다른 유명 개발자도 같았다.
그러나 비트코인이 실패할 수 있다는 가능성을 알고 있었다고 할지라도, 지금 당장 비트코인이 망해가고 있다는 불가피한 결론이 나를 큰 슬픔으로 몰아넣는다. 비트코인의 기초가 무너졌다. 단기적으로 가격이 어떻게 변할지 몰라도, 장기적으로는 내리막길을 걸을 거다. 내가 가진 비트코인을 모두 처분하고 나는 비트코인 개발에서 손 떼려 한다.
왜 비트코인이 실패했는가? 비트코인 커뮤니티가 실패했기 때문이다. 비트코인이라는 새로운 분산된 화폐가 지닌 두 가지 특성, 구조적으로 몇몇 주요 기관에 의존하지 않고 ‘대마불사’ 논리에서 벗어났다는 점이 오히려 더 심각한 문제를 낳았다. 비트코인 시스템은 한 손에 꼽을 만큼 적은 사람에게 장악 당했다. 더 나쁜 점은 비트코인 네트워크가 기술적으로 붕괴하기 일보 직전이라는 점이다. 이런 결과를 예방해야 할 매커니즘은 망가져버렸다. 그 결과, 비트코인이 기존 금융 시스템보다 낫다고 여길 이유가 사라졌다.
생각해보자. 비트코인을 전혀 들어본 적 없다면, 아래와 같은 결제 네트워크를 생각해보라. 이런 결제 시스템을 믿을 수 있겠는가?
  • 지금 가진 돈을 옮길 수 없다
  • 높은 수수료를 물어야하는데, 수수료율을 예측할 수 없으며 심지어 빠르게 증가한다
  • 구매자가 물건을 들고 가게 문을 나선 뒤에 단추 한 번만 누르면 결제를 취소할 수 있다(당신이 이 ‘기능'을 모른다고 해도 상관 없다. 비트코인이 이를 허용하도록 바꾸기만 하면 그만이다)
  • 거대한 백로그(backlogs)와 신뢰할 수 없는 결제에 시달린다
  • 중국이 통제한다
  • 이를 개발 중인 회사와 사람들이 내전을 벌인다
내가 감히 예측컨데 답은 ‘아니오'다.

교착상태가 코 앞에 닥쳤다

비트코인 생태계가 어떻게 변해왔는지 잘 모르는 분들을 위해 2016년 1월 비트코인 네트워크가 어떤 모습인지 잠깐 살펴보자.
비트코인 블록체인은 가득찼다. 여러 파일의 묶음인 블록체인이 어떻게 ‘가득 차'는지 궁금하겠지. 답은 간단하다. 순전히 임의로 만든 블록당 1MB라는 저장공간이 가득찼다는 얘기다. 먼 옛날에 거칠게 만들어둔 용량 제한이 지금껏 제거되지 않았다. 그 결과 지금 비트코인 블록체인 네트워크의 용량은 거의 고갈됐다.
여기 블록 크기 그래프를 살펴봐라.
지난 6월 누군가 비트코인 네트워크를 공격하기 위해 거래를 폭증시켰던 분산서비스거부(DDoS) 공격 와중에 비트코인 블록체인은 한계점을 찍었다. 이런 걸 ‘스트레스 테스트'라고 부른다. 당시 약 700KB 정도의 거래 (또는 초당 3회 이하 결제)가 이뤄졌다. 이를 비트코인이 실제로 처리할 수 있는 거래량의 한계라고 봐도 무방하겠다.
주의: 어디선가 초당 7회 거래가 비트코인의 한계라고 읽었을지도 모르겠다. 초당 7회라는 숫자는 2011년께 나온 오래된 수치다. 비트코인 거래는 그때보다 훨씬 더 복잡해졌다. 그래서 실제 수치는 훨씬 낮다.
실제 한계가 이론적 한계인 1000KB가 아니라 700KB인 까닭은 승인 대기 중인 거래가 쌓여 있음에도 불구하고 채굴자가 종종 허용된 것보다 작은, 심지어 빈 블록을 만들어내기 때문이다. 이런 문제는 중국의 ‘만리장성' 방화벽의 검열 시스템이 데이터 전송을 방해하기 때문으로 보인다. 게다가 1초 안에 처리해야 하지 않나
자세히 들여다보면 트래픽이 2015년 여름 끝자락부터 계속 증가하는 모습이 보일 거다. 이건 예견된 바다. 지난해 3월에 나는 비트코인의 계절적 성장 패턴에 관한 글을 썼다.
주간 평균 블록 사이즈를 보자:
평균 블록 크기가 거의 한계에 다달았다. 당연히도 블록 크기가 한계에 달했기 때문에 비트코인이 거래 요청을 처리하지 못하는 구간이 빈번하게 나타났다. 심지어 승인을 기다리는 거래 내역이 줄지어 설 때도 있었다. 이런 상황은 아래 블록 크기 표에서 잘 드러난다. (채굴자가 제시한 750KB 크기 블록들은 그들의 소프트웨어에서 제대로 조정되지 않은 것이다):
처리 용량이 바닥난 네트워크는 신뢰할 수 없게 된다. 수많은 온라인 공격이 그저 대상 컴퓨터에 트래픽을 쏟아붇는 단순한 수법을 택하는 이유다. 비트코인 네트워크는 크리스마스부터 거래량이 늘어나 불안해지기 시작했다. 피크 타임에 거래 승인이 밀리는 일은 이제 일상이 됐다.
비트코인 기반 사업을 벌이는 ProHashing의 뉴스 한 건을 인용한다:
몇몇 고객이 오늘 아침 Chris에게 비트코인 결제가 실행되지 않는 이유를 물었다...
이 문제는 이런 뜻이다. 이제 공식적으로 비트코인 네트워크를 신뢰하는 게 불가능해졌다. 통해 거래가 제대로 처리될지, 언제쯤 처리될지 알 수 없기 때문이다. 네트워크가 너무 혼잡하기 때문에 거래량이 조금만 치솟아도 네트워크 상태에 지대한 영향을 미칠 지경이다. 60분에서 14시간 사이 무작위로 거래가 승인될테니 기다리라는 말을 받아들일 수 있는 사람이 있을까?
레딧에 사람들이 ‘위기는 없다’는 게시물을 올리는 사실이 우스꽝스럽다. 사람들은 내가 어떤 연유에서든 사태의 심각성을 과장했다며 내가 어제 올린 포스트를 비판한다. 그런 사람들이 과연 매일 같이 돈을 보내려고 비트코인 네트워크를 쓰기는 할까?
ProHashing은 크리스마스와 새해 사이에 거래 내역을 잃어버릴 뻔했다. 이번에는 비트코인 거래소에서 자사 전자지갑으로 송금이 지연됐다.
비트코인은 이런 상황이 생길 경우 자동으로 우선 순위를 조정하도록 설계돼 있다. 송금 수수료를 올려 수수료를 안 내는 사용자보다 우선해 거래를 처리하도록 하는 거다.하지만 이런 문제가 계속 발생하는 사실을 보면 이런 매커니즘이 효과가 없는 것으로 보인다. 그러면 비트코인 네트워크의 거래 비용만 급속도로 증가할 거다. 한 때 비트코인은 낮은 수수료, 심지어 수수료를 물지 않는 거래를 큰 장점으로 여겼다. 하지만 채굴자에게 내는 수수료가 신용카드 수수료를 초과하는 일이 점점 빈번해진다.
왜 블록 용량을 키우지 않았을까? 중국 채굴자가비트코인 블록체인을 장악했기 때문이다. 이들 중 두 명이 50%가 넘는 해시 파워를 좌지우지한다. 최근 한 콘퍼런스에서 동시에 무대 위에 오른 몇몇 사람이 전체의 95%가 넘는 해시 파워를 갖고 있었다. 이들이 블록체인의 성장을 허용하지 않는다.
왜 이들은 블록 용량을 키우는 데 반대하는가? 몇 가지 이유가 있다. 첫 번째는 ‘비트코인 코어' 소프트웨어를 만드는 개발자들이 필수적인 변화를 도입하기를 거부해왔기 때문이다. 또 다른 이유는 채굴자가 변화를 거부하기 때문이다. 그들의 관점에서는 기존과 다른 블록체인을 도입하는 일이 ‘반역'이다. 이들은 새로운 블록체인이 형성돼 ‘쪼개져' 나가면 투자자가 겁에 질릴까 두려워 한다. 이들은 현재 문제를 무시하고 지금 이대로 현상을 유지하는 쪽을 택했다.
마지막 이유는 중국 인터넷이다. 중국 인터넷은 정부의 검열망 때문에 사실상 인터넷에서 분리돼 있다. 따라서 국제 인터넷망과 데이터를 교환하는 일이 제대로 실행되지 않는다. 인터넷 속도가 모바일 인터넷보다 느려지는 일이 다반사다. 전국의 인터넷망이 싸구려 호텔 와이파이보다 느려진 와중에 사진을 전송받는다고 상상해보라. 바로 지금, 중국 채굴자가 매 블록을 만들때 마다 보상으로 주어지는 1만1000달러어치 비트코인 25개를 차지하려고 자기 네트워크를 국제 인터넷망과 맞물려 놓으려 안간힘을 쓰고 있다. 이들은 비트코인 네트워크가 더 인기를 얻을 경우 채굴 난이도가 높아져 소득원을 잃어버릴까봐 두려워 한다. 이런 경제적 인센티브가 중국 채굴자가 비트코인이 더 대중적으로 되는 것을 가로막는 이유다.
많은 비트코인 사용자와 구경꾼이 이 지경에 이르기 직전까지도 이런 문제가 어떻게든 해결되리라 짐작했다. 블록체인 용량 제한도 당연히 증가됐으리라 여겼다. 결국, 한때 블록체인을 금융의 미래상으로 부각시켰던 비트코인 커뮤니티가 블록체인을 유아기에 옭아매려 의도적으로 자살하는 길을 택한 걸까? 믿기 어렵겠지만 바로 이것이 지금 벌어지는 일이다.
내전이 벌어진 결과, 미국에서 가장 크고 잘 알려진 비트코인 스타트업 코인베이스는 비트코인 공식 웹사이트에서 삭제됐다. 줄을 잘못 섰기 때문이다. 비트코인 커뮤니티 포럼에서도 추방당했다. 커뮤니티의 일부가 수백 만 명에게 비트코인이라는 화폐를 소개했던 사람들을 무자비하게 기습할 때 무슨 일이 일어날 지는 불 보듯 뻔하다. 만사가 미쳐 돌아가겠지.

무슨 일이 일어나는지 아무도 모른다

당신이 어린 일을 들어보지 못했다고 자책하지는 마라. 당신 만이 아니다. 2015년부터 지금껏 벌어진 일 가운데 가장 신경쓰이는 일은 투자자와 사용자에게 전달되던 정보가 매말랐다는 것이다.
8개월도 안 되는 기간에 비트코인은 투명하고 개방적인 커뮤니티에서 검열이 난무하고 비트코이너끼리 서로 공격하는 무간지옥으로 전락했다. 이런 변화는 내가 지금껏 경험한 어떤 일보다도 끔찍하다. 그래서 나는 비트코인 커뮤니티와 연관된 일을 하는 것이 불편해졌다.
비트코인은 투자수단으로 만들어지지 않았다. 손실을 감내할 수 없을 정도로 투자해선 안 될 실험적인 화폐였다. 이 점은 언제나 명확하게 설명돼 왔다. 나는 비트코인의 복잡성을 걱정하지는 않았다. 투자자에게 필요한 정보가 충분하기 때문이다. 가내 수공업으로 만든 책을 비롯해 콘퍼런스, 동영상, 웹사이트가 사람들이 비트코인을 깊이 이해할 만큼 충분하다.
하지만 이제 상황이 달라졌다.
비트코인 소지자 대다수는 주류 미디어에서 정보를 얻는다. 비트코인 가격이 치솟을 때마다 언론은 가격 상승 소식을 전했다. 그러면 거품이 생겼다.
비트코인 뉴스가 신문과 잡지까지 도달하는 과정은 단순하다: 커뮤니티 포럼에서 뉴스가 태어난다. 그럼 이 뉴스가 더 전문화된 커뮤니티나 기술 뉴스 웹사이트로 전파된다. 이때 종합지 기자가 이 뉴스를 포착하고 자기 버전으로 가공한다. 나는 이런 일이 계속 일어나는 걸 목격했다. 종종 기자와 뉴스를 두고 토론을 벌임으로써 내가 뉴스의 일부가 되기도 했다.
2015년 8월 심각한 경영상 문제 때문에 비트코인 P2P 네트워크를 작동시키는 프로그램을 유지보수하는 ‘Bitcoin Core' 프로젝트가 블록 크기를 늘리는 버전을 배포하지 않으리라는 사실이 확실해졌다. 그 이유는 복잡하니 아래 따로 논의하자. 하지만 분명한 점은 커뮤니티가 새로운 사용자를 계속 확보할 능력이 필요했다는 점이다. 그래서 (나를 포함해) 오랫동안 비트코인을 만져온 개발자는 한데 모여 블록 크기를 키우는데 필요한 코드를 작성했다. BIP101다. 우리는 이 수정안을 비트코인 기본 지갑(Bitcoin XT)에 반영해 배포했다. 우리가 판올림한 비트코인 기본 지갑을 채택함으로써 채굴자는 블록 크기를 늘리는데 동의할 수 있었다. 채굴자 가운데 75%가 블록 크기를 늘리는 데 동의하면 이것이 정론으로 채택될 수 있었다.
어떤 이유에서인지 Bitcoin XT 배포는 몇몇 사람의 심기를 매우 불편하게 만들었다. 그 중 한 사람은 bitcoin.org와 가장 큰 비트코인 포럼의 관리자였다. 그는 표현의 자유라는 미명하에 종종 그가 관리하는 포럼에서 불법 활동을 논의하도록 묵인하곤 했다. 그러나 XT가 나왔을 때, 그는 놀라운 결정을 내렸다. 그는 XT가 ‘개발자의 합의'를 대표하지 않는다며 진짜 비트코인이 아니라고 주장했다. 그는 투표가 기형적인 일이라고 말했다. 아래 같은 이유를 들면서 말이다.
“민주주의의 부재야말로 비트코인의 가장 위대한 속성 중 하나다”
그래서 그는 XT를 완전히 죽이기 위해 어떤 일이든 불사하겠다고 마음 먹었다. 비트코인 주요 커뮤니케이션 채널을 검열하는데서 시작했다. 그가 관리하는 토론 포럼에서 ‘Bitcoin XT’를 거론하는 글은 모두 삭제됐다. XT는 공식 bitcoin.org 웹사이트 어디에도 언급되거나 링크될 수 없었다. 이런 검열이 일어나지 않는 다른 포럼을 일러주려던 사용자는 당연히도 차단당했다. 수많은 사용자가 포럼에서 추방당해 자신의 견해를 표현할 권리를 빼앗겼다.
결국 몇몇 사용자는 검열당하지 않는 새 포럼을 찾아 나섰다. 이 포럼을 읽어 내려가면 서글퍼진다. 지난 몇 달 동안 나는 매일 같이 이들이 물리쳤을 검열과 복종에 분개하는 게시물을 봤다.
하지만 XT나 검열에 관한 소식을 접할 수 없다는 사실 자체가 사용자에게 문제를 야기했다.
사상 처음으로 투자자는 지금 무슨 일이 일어나는지 확실히 알아낼 길을 잃어버렸다. 다른 의견은 체계적으로 묵살당했다. Bitcoin Core가 무슨 역할을 하는지 기술적으로 논의하는 일마저 금지당했다. 그 자리는 괴상한 논리가 차지했다. 그리고 비트코인 붐에 휩쓸려 가볍게 뛰어든 많은 사람들은 비트코인 시스템이 한계에 치닫는다는 사실을 모름이 분명했다.
이 때문에 나는 상당히 걱정했다. 수 년 동안 정부는 채권과 투자 시장 주변에 수많은 법을 만들었다. 비트코인은 채권이 아니다. 나는 비트코인이 그런 법에 구애받으리라 믿지 않는다. 정부 당국의 정신은 간단 명료하다: 반드시 투자자에게 충분한 정보를 전달하라는 것이다. 만일 제대로 설명받지 못한 투자자가 투자액을 잃으면, 곧바로 정부의 눈총이 뒤따른다.

왜 비트코인 코어에 한계를 만드는가

(주: 박태민 (TaeMin Park)님이 이 부분 번역에 도움 주셨습니다)
사람이 문제다.
Satoshi가 비트코인에서 손을 뗄 때, 그는 지금 Bitcoin Core라 불리는 프로그램의 관리 권한을 초기 기여자인 Gavin Andresen한테 넘겼다. Gavin은 큰 그림을 볼 줄 아는 단호하고, 경험 많은 리더다. 그의 기술적 판단력을 믿었기에 나는 거의 8년 동안 일했던 구글에서 나올 용기를 얻었다. 단 하나의 문제가 있었다. 그리 큰 문제는 아니었다. Satoshi는 Gavin한테 그 일을 하고 싶냐고 묻지 않았다. 사실 Gavin은 원치 않았다. 그래서 Gavin은 첫 번째 개발자 4명에게 코드 접근 권한을 나눠줬다. 이 개발자 명단은 순식간에 추려졌다. Gavin에게 어떤 일들이 생기더라도 비트코인 개발 프로젝트가 무난히 계속 진행될 수 있도록 하기 위한 조치였다. 근본적으로 이들이 선택된 이유는 당시 주변에 있던 쓸모 있는 사람이었기 때문이다.
그들 중 한 명인 Gregory Maxwell은 별난 시각을 지녔다. 그는 비트코인이 수학적으로 불가능하다고 주장했다. 더 문제는 따로 있다. 그는 Satoshi가 제시한 이상을 믿지 않았다.
비트코인 프로젝트를 처음 발표했을 때 Satoshi는 블록체인이 어떻게 대량 결제를 버티도록 확장될 수 있는지 질문 받았다. 당연히 비트코인이라는 아이디어가 먹혀들기 시작하면 내려받아야 하는 데이터 양이 넘칠 수도 있잖나. 이건 비트코인 초창기의 유명한 비판이었다. Satoshi는 이 질문에 완전히 준비된 답을 내놓았다. 그는 이렇게 말했다:
대역폭이 당신이 생각하는것 만큼 제한되어 있지 않을 수도 있다. 만약 네트워크가 [VISA만큼 커진다면] 몇 년 걸릴지도 모른다. 그리고 그 때 인터넷으로 HD 영화 두 편을 전송하는 것과 맞먹는 일은 별로 큰 일이 아닐 것으로 보인다.
이건 간단한 논쟁이다. 현존하는 결제 네트워크가 거래를 어떻게 처리하는지 보고 비트코인이 이런 일을 따라하려면 무엇이 필요한지 보라는 거다. 그리고 네트워크의 성장은 하룻밤 사이에 일어나지 않는다는 사실을 꼬집는 지적이다. 미래의 네트워크와 컴퓨터는 지금보다 발전돼 있겠지. 사실 봉투의 뒷면 계산법(back-of-envelope calculation)이 이런 점을 암시했다. 그는 대역폭 뿐 아니라 다른 많은 요소를 종합해 봐도 “절대 한계점에 부딪히지 않을 거야”라고 나에게 말했다.
Maxwell은 이런 생각에 동의하지 않았다. 2014년 12월 한 인터뷰에서 발췌했다:
Maxsell은 비트코인이 성장해도 분산에 관한 문제는 줄어들지 않을 것이라고 지적했다. “네트워크의 거래량을 논할 때 확장성과 분산성은 내재적으로 상충합니다.”
그는 "문제는 비트코인의 거래량이 증가할수록, 고유 비용 때문에 더 큰 회사들이 비트코인 노드를 운영하는 유일한 업체들이 될 것이다”라고 지적했다.
이런 생각에 따르면, 비트코인이라는 아이디어는 망할 운명을 타고 태어났다. 사용자가 많아진다는 것은 곧 분산도가 떨어진다는 의미다. 이건 네트워크에 위험한 일이다. 이 문제는 실용적 사용의 비율이 낮고 성장이 느리지만 기술이 시간이 지남에 따라 발전한다는 사실을 무시한다. 이 주장을 반박하는데 나와 Gavin은 시간을 많이 쏟아부었다. 이로서 당연하지만 미친 결론이 나온다: 만약 분산이 비트코인을 이롭게 만드는 요소이고 성장이 분산을 위협한다면, 비트코인은 성장하면 안 된다.
대신 Maxwell이 결론지었듯 비트코인은 지금 같이 블록체인 기반 시스템이 아니라 모호하게 정의된 정산 레이어 같은 것이 돼야 한다.

개미지옥에 빠져들다

일개 회사라면 조직의 목표에 동의하지 않는 사람은 간단히 처리된다. 해고하면 그만이다.
하지만 비트코인 코어는 회사가 아니라 오픈 소스 프로젝트다. Gavin이 개발자 5명에게 코드를 수정할 권한을 내주고 리더가 되지 않겠다고 결심한 뒤로 이들 중 누구를 내치려는 조치가 발현된 적은 없었다. 비트코인 코어 개발진을 꾸릴 때 이들이 프로젝트의 목표에 동의하는지 확인하는 면접 같은 조치도 없었다.
비트코인이 인기를 얻어 트래픽이 1MB 한계에 육박함에 따라 개발자 사이에선 블록 크기 제한을 키워야 한다는 논의가 종종 벌어졌다. 하지만 이런 논쟁은 금방 감정적으로 변질됐다. 블록 크기를 늘리면 분산화라는 가치를 거스르기 때문에 위험하다는 지적이 잇따랐다. 다른 조그마한 집단과 마찬가지로 사람들은 충돌을 피하는 쪽을 택했다. 깡통을 길 밖으로 내던졌다.
Maxwell이 다른 개발자 몇 명을 고용해 자기 회사를 세우자 복잡한 일은 날이 한층 더 꼬였다. 당연히도 이들의 견해는 새 사장과 궤를 같이 했다.
공동으로 관리하는 소프트웨어를 판올림하는 일은 시간이 걸린다. 그래서 Gavin은 아직 8개월이 남은 시점인 지난 2015년 5월, 이 문제를 단박에 정면돌파해야 한다고 결심했다. 그는 블록 용량 확대에 반대하는 의견에 일일히 반박하는 글을 작성하기 시작했다.
하지만 이 문제가 불거짐에 따라 Bitcoin Core 개발진은 속절 없이 구설수에 올랐다. Maxwell과 휘하 개발자는 블록 용량 확대를 생각하는 일조차 무차별적으로 반대했다. 이 주제를 애초에 입 밖으로 낼 생각도 없었다. 이들은 ‘합의' 없이는 어떤 일도 결정해선 안 된다고 고집을 피웠다. 블록 용량을 키운 비트코인 코인 새 버전을 만들어야 할 개발자들은 승자와 패자가 갈릴 수 밖에 없는 갈등에 연관되기를 두려워했다.
이런 연유로, 거래소와 사용자와 지갑 개발자와 채굴자 등 모든 업계 관계자가 블록 용량이 늘어나리라 짐작하는 와중에도 코어 개발자 5명 가운데 3명은 블록 용량에 손대길 거부했다.
교착상태다.
이런 상황에도 시간은 성실하게 흘러갔다.

XT 사용자를 노린 대규모 DDoS 공격

정보망이 차단됐지만 Bitcoin XT는 발표된 뒤 며칠새 전체 네트워크 노드 가운데 15%에게 채택됐다. 마이닝풀 가운데 최소한 한 곳은 BIP101에 동의하는지 채굴자 사이에 투표를 부쳤다.
바로 이 때 분산서비스거부(DDoS) 공격이 시작됐다. 이 공격은 일대 인터넷을 마비시킬 정도로 강력했다.
“나는 DDoS 공격을 당했어요. 이 대규모 DDoS 공격은 내가 속한 (지역) ISP 전체를 무너뜨렸습니다. 이 범죄자들 때문에 지난 여름 다섯 마을 주민들이 몇 시간 동안 인터넷을 쓰지 못했어요. 이것이 내가 비트코인 노드 호스팅을 중단한 결정적인 이유입니다.”
데이터센터가 통째로 차단당한 사례도 있다. 그 데이터센터 안에서 작동하던 XT 노드 한 곳이 작동을 중단하기 전까지 공격이 계속됐다. 대략 3분의 1 정도 되는 노드가 이런 방식으로 공격당해 인터넷에서 제거 당했다.
심하게는 BIP101 수정안을 채택한 한 마이닝풀이 공격당해 운영을 멈추기도 했다. 메시지는 분명하다. 블록 용량 확대안을 지지하거나, 사용자에게 동의 여부를 묻기만 해도 공격당하리라는 것이다.
가해자들은 여전히 바깥을 활보한다. XT가 발표된 뒤 몇 달 뒤 코인베이스가 비트코인 코어 개발진을 기다리다 지쳤다며 XT를 가동할 것이라고 발표했다. 코인베이스 역시 한동안 DDoS 공격에 시달려 인터넷에서 격리당했다.

짝퉁 콘퍼런스

DDoS 공격과 검열이 공공연하게 벌어지고 있는데도 XT는 추진력을 얻어갔다. 이런 움직임은 Bitcoin Core에 위협을 가할 지도 모를 일이었다. 그래서 몇몇 개발자는 ‘비트코인 확대(Scaling Bitcoin)’라는 이름으로 콘퍼런스를 잇따라 개최하기로 결정했다. 8월과 12월이었다. 이들은 필수불가결한 ‘합의'에 도달하는 것이 콘퍼런스의 목표라고 주장했다. 전문가 사이에서 나온 합의를 싫어할 사람은 없을 거다. 안 그런가?
나는 이들을 보자마자 방해공작에 불과하다고 확신했다. 지금껏 블록 용량 확대를 언급하기조차 꺼리던 사람들이 콘퍼런스에 참가한다고 마음을 바꿀 리는 없기 때문이다. 더군다나 이 콘퍼런스는 네트워크 업그레이드에 쓸 시간도 몇 달도 안 남은 겨울 초입에 시작됐다. 마냥 콘퍼런스가 열리길 기다리며 소중한 몇 개월을 흘려버리는 일은 전체 비트코인 네트워크의 안정성을 위협하는 짓이었다. 사실 첫 번째 콘퍼런스는 쓸데없었다. 구체적인 제안을 논의하는 게 금지당했기 때문이다.
그래서 나는 안 갔다.
불행히도 이 전술은 굉장한 효과를 거뒀다. 비트코인 커뮤니티가 완전히 이들 손아귀에 놀아났다. 채굴자나 스타트업과 얘기하면 XT를 가동하지 않는 이유로 보통 “Core 개발진이 12월에 용량을 확대하기를 기다리기 때문"이라고 답했다. 이들은 커뮤니티가 분열됐다는 뉴스를 접할 때마다 비트코인 시세가 떨어질까봐 전전긍긍했다. 비트코인 가격이 결국 이들의 밥줄이잖나.
마지막 콘퍼런스가 용량 제한을 확대할 어떤 계획도 제시하지 않고 왔다 갔다. 코인베이스나 BTCC 같은 몇몇 회사가 자신들이 놀아났다는 사실을 깨달았다. 그러나 너무 늦은 뒤였다. 커뮤니티가 기다리는 동안 일일 거래량은 자연스레 25만 건이 늘어났다.

무계획

블록 크기 증가에 찬성하는 두 Bitcoin Core 개발자 Jeff Garzik과 Gavin Andresen은 커뮤니티 안에서 대단한 영향력을 행사했다. 이들은 가장 오랫동안 Bitcoin Core 개발에 기여해온 사람이기도 하다. 두 사람은 얼마 전 함께 “비트코인은 합의를 향한 급행열차에 올랐다(Bitcoin is Being Hot-Wired for Settlement)"라는 게시물을 작성했다.
Jeff와 Gavin은 보통 나보다 부드럽게 의견을 개진한다. 나는 내가 본 대로 말하는 성격이지만 Gavin은 섬세하고 우직한 편이다. 그래서 이들이 함께 쓴 게시물에서 보이는 강한 어조는 이례적이다. 두 사람은 누구를 향해 주먹을 내지르지는 않았다.
지금 비트코인 커뮤니티에서 갑론을박하는 로드맵에도 일리는 있다. 더 많은 거래량을 처리할 계획도 들어 있다. 하지만 이건 중대한 단점을 충분히 설명하고 인정하지 못한다.
Bitcoin Core 블록 크기는 변하지 않는다; 이 지점에는 전혀 논란의 여지가 없다.
이상적이고 투명한 오픈 소스 환경이라면 BIP가 세상에 나왔겠지만, 이런 일은 일어나지 않았다.
Scaling Bitcoin 워크숍의 대외명분 중 하나는 혼란스러운 코어 블록 크기 논란을 질서정연한 의사 결정 과정으로 정리해내는 것이다. 이런 일은 벌어지지 않았다. 뒤돌아보니 ‘Scaling Bitcoin은 블록 크기 결정을 지연시키기만 했다. 그 와중에 거래 수수료는 계속 치솟고, 블록 용량은 고갈됐다.
이들이 지적한 대로 논점을 흐리는 일은 점점 더 보편화됐다. 예를 들어 Gavin과 Jeff가 언급한 계획은 Scaling Bitcoin 콘퍼런스에서 발표됐다. 하지만 더 효율성을 끌어올리지는 못했다. 겨우 (각 거래에서 몇 바이트를 세지 않는 식으로) 회계적 꼼수를 동원해 60% 용량을 확보하는 게 다였다. 이것도 한참 모자라지만. 게다가 이 제안을 따르려면 엄청난 변화가 뒤따라야 한다. 비트코인 관련 소프트웨어를 한올한올 뜯어 고쳐야만 하기 때문이다. 용량 한계를 끌어올리는 단순한 작업 대신 대규모 협력이 뒤따라야 하는 엄청나게 복잡한 일을 하는 쪽을 택한 거다. 기껏해야 몇 달밖에 버티지 못할 미봉책인데도 말이지.

수수료를 대체하다

수수료로 트래픽을 통제하는 방식의 한 가지 문제가 있다. 거래 당시 수수료와 결제가 끝나는 시점에 수수료가 달라질 수 있다는 점이다. Bitcoin Core에는 이 문제를 풀어낼 기막힌 해법이 있다. 블록체인에 각인되기 전까지는 사용자가 결제건을 수정할 수 있도록 하는 것이다. 대외적 의도는 사용자가 이미 지불한 수수료를 조정할 수 있도록 하는 것이지만, 이런 기능은 사용자가 결제 자체를 무를 수 있도록 한다.
한눈에 봐도 이러면 비트코인은 물건을 사는데 쓸 수가 없어진다. 결제 내역이 블록체인에 나타나기 전까지 기다려야만 한다. 지금 과다한 트래픽 때문에 몇 분이 아니라 몇 시간도 걸리는 바로 이 일을 말이다.
Bitcoin Core 개발팀은 이 기능을 이렇게 정당화한다. 이건 큰 문제가 아니야. 여지껏 블록 한 개가 형성되기 전까지 기다릴 수 없었다면, 이미 이론적으로 결제 사기 위험을 감수했다는 얘기고, 이는 곧 네가 비트코인을 제대로 활용하지 않았다는 얘기거든. 따라서 이런 위험성을 100% 확실한 위험으로 만드는 일도 그리 큰 변화는 아니지.
달리 말하면 그들은 리스크 관리가 존재한다는 사실을 무시하기 때문에 이런 변화를 수수료 ‘0’라고 인식하는 것이다.
이런 프로토콜 수정안은 Bitcoin Core 다음 버전인 0.12에 포함될 거다. 채굴자가 Bitcoin Core를 판올림하면 이 기능이 활성화된다. 전체 비트코인 커뮤니티가 이를 전격적으로 비판했지만 남은 Bitcoin Core 개발자는 다른 이가 어찌 생각하는지는 아랑곳 않는 듯하다. 그러니 이런 변화는 곳 실현될 거다.
이 정도로 설명했는데도 비트코인이 심각한 문제를 품고 있다는 사실을 확신할 수 없다면, 당신은 영영 깨닫지 못할 거다. 비트코인을 실제 상점에서 사용할 수 없게 됐을 때 얼마나 많은 사람이 비트코인이 수백 달러짜리라고 생각할까?

결론

비트코인은 이례적으로 위험한 상황에 빠졌다. 마운트곡스 파산 같은 지난 위기는 생태계 주변에 싹튼 일개 서비스나 회사의 잘못이었다. 이번에는 다르다. 이건 핵심 시스템, 블록체인 자체의 위기다.
더 근본적으로 이번 위기는 서로 다른 세계관을 지닌 집단 사이에 철학적 견해가 깊다는 사실을 보여준다. 한쪽은 세계가 ‘전문가의 합의'에 따라 다스려져야 한다고 생각하는 반면 다른 쪽은 평범한 사람들이 스스로 납득할 수 있는 정책을 채택해야 한다고 여긴다.
Bitcore Core를 대체할 새로운 팀이 꾸려진다 할지라도, 마이닝 파워가 만리장성 건너편에 집중돼 있다는 문제는 사라지지 않는다. 10명도 안 되는 사람 손아귀에 놀아나는 이상 비트코인에는 미래가 없다. 그리고 이 문제는 해결할 방법도 없다. 어느 누구 제안조차 제시하지 않는다. 커뮤니티는 늘 블록체인이 억압적인 정부에 의해 전복될까 우려했다. 이 얼마나 모순적인 일인가.
아직 모든 것을 잃은 건 아니다. 지금껏 일어난 모든 일에도 불구하고, 지난 몇 주 동안 점점 더 많은 커뮤니티 회원이 내가 버려두고 온 것을 주워들기 시작했다. Bitcoin Core의 대체제를 만드는 일이 언뜻 배신으로 보일지 몰라도, 이미 세간의 관심을 두고 싸우는 두 무리가 있다. Bitcoin Classic과 Bitcoin Unlimited다. 지금까지는 두 부류도 XT가 겪었던 똑같은 문제를 겪고 있다. 그러나 새 사람이 모인다면 탈출구를 찾을 수도 있을 테다.
비트코인계에는 유능하고 정력 넘치는 사람이 많다. 지난 5년 동안 이런 사람을 많이 알게 돼 기뻤다. 이들의 창업가 정신과 돈과 경제와 정치를 보는 새로운 관점을 배우는 것은 황홀한 경험이었다. 내가 매진했던 프로젝트가 이렇게 수포로 돌아간다고 해도 나는 비트코인계에서 보낸 시간이 아깝지 않다. 나는 오늘 아침 검열당하지 않는 포럼에서 인사 나눌 사람을 찾으려고 일어났다. 이들은 내게 떠나지 말라고 부탁했지만 나는 다른 일로 옮겨 가야 한다. 이들에게 이 자리를 빌어 인사를 전한다. 행운을 빈다. 잘 지내라. 늘 좋은 일만 가득하길 바란다.
<끝>


+ Recent posts