반응형

대학원생, 특히 이공계 대학원생에게 연구노트는 정말 중요하다. 연구노트를 그 목적대로 작성을 했을 경우, 연구의 진행 상황에 대한 기록이 모두 되어 있기 때문에 이를 기반으로 매일매일 연구를 올바른 방향으로 진전시켜 나갈 수 있다. 그리고, 실험 같은 것이 실패를 하더라도 그 기록이 모두 남으니까 어떤 형태로든 자산이 될 수 있다.


거의 대부분은 종이로 된 연구노트 책자를 쓰겠지만, 하고 있는 모든 일을 오직 PC 화면만 쳐다보면서 하는 입장에서 전자연구노트도 쓸만하다. 하지만 학교에서 제공하는 전자연구노트는 파일을 직접 업로드하는 방식이라서 내가 다른 프로그램 (워드, 엑셀, 파워포인트, 아니면 그냥 메모장, 또는 이미지 등)을 사용해서 일단 만들어야 한다.


연구를 진행하는 과정에서 실험 통계는 엑셀 파일, 랩세미나 발표를 하거나 교수님과의 의견 교환을 위해서 만든 슬라이드는 파워포인트 파일, 문서는 워드를 쓰는 것이 일반적이긴 하다.


그런데 요즘 들어서는 내가 점점 MS 오피스 프로그램을 써서 직접 파일을 만드는 경우는 줄어들고, 그냥 웹 브라우저에서 구글 드라이브에 접속해서 문서/스프레드시트/프레젠테이션을 바로 만드는 경우가 많아졌다. 워드/엑셀/파워포인트만 가지고 논문 한 편을 만드는 것이 일반적이던 시절이 있었지만, 최근에는 이게 옛날처럼 느껴질 정도로 많은 작업을 웹 기반으로 하게 되었다.

무엇보다도, 평소에 각종 개발이나 실험을 리눅스 환경에서만 하다 보니 그냥 아예 main PC를 리눅스로 쓰다 보니, 윈도우에 대한 접근성이 조금 떨어져서 더더욱 MS 오피스를 쓰지 않게 된 측면도 있다.


논문 작성은 Overleaf를 써서 tex를 웹 상에서 직접 고치고, 공동저자들에게 링크를 줘서 바로 확인하거나 서로 동시에 고치면 된다. 예전에는 tex를 쓰려면 프로그램을 별도로 써야 했지만, 웹 기반으로 하면서 훨씬 편해졌다. 게다가 MS 워드를 가지고 논문을 작성하면 예기치 않게 문서 레이아웃이 망가지거나 그림이 서로 겹치는 등 온갖 불편한 일이 생기는 데 비해, tex는 문법만 잘 알고 있으면 문서 레이아웃 망가질 걱정은 전혀 할 필요가 없으니 훨씬 좋다.

기본 아이디어에 대한 brainstorming 같은 일도 구글 문서나 구글 프레젠테이션에서 간단하게 만들어서 이것을 또한 링크로 공유해서 수정하면 된다. 이 단계에서는 MS 오피스가 제공하는 강력한 기능들까지 굳이 필요하지도 않고, 흰 바탕에 꾸밀 필요가 없는 검정색 텍스트와 간단한 도형 그림 정도로 일을 할 수 있기 때문이다. 다만 구글 스프레드시트는 아직까지는 MS 엑셀에 비해 기능과 편의성이 많이 부족해서 이 부분은 아쉽다.


그리고 기존에 PC에서 MS 오피스를 써서 작업할 때에는 항상 예상치 못한 PC의 다운이나 하드디스크 고장으로 인해 파일이 망가지고 사라지는 등의 위험 요소를 안고 가야 했는데, 요즘은 웹 기반으로 하다 보니 그런 걱정이 거의 사라졌다.

물론 순수하게 개인 PC에서만 모든 작업을 다 하던 시절과 지금의 완전한 웹 기반 환경 사이에 드롭박스(dropbox)를 활용해서 과거 저장 내역을 기억하고 만약의 사태에 파일을 복구하던 시절도 있었다. 그리고 dropbox는 여러 학생들이 참여하는 연구과제에서 만들어지는 수많은 문서들을 관리하는 측면에서는 지금도 도움이 많이 되고 있다. 특히나 우리나라에서 결코 없어지지 않을 hwp 파일들을 관리하려면 뭐.. 다른 방법이 없으니까. hwp 파일만큼은 아직도 구글문서처럼 웹 기반으로 협업이 불가능하니 어쩔 수 없다.


하지만 적어도 나 혼자 또는 나와 지도교수, 공동저자 학생 한두 명이 같이 연구를 진행하면서 논문을 쓰는 상황에서는 굳이 dropbox도 별 필요가 없다. 그리고 실험이나 시뮬레이션을 하다 보면 결국 윈도우보다는 리눅스/맥이 더 편할 수밖에 없고, 윈도우 PC보다 리눅스/맥을 더 자주 활용하는 입장에서 구글 드라이브의 접근성이 MS 오피스에 비하면 훨씬 좋기도 하다.


------------------------------------


아무튼 위와 같은 여러 가지 이유를 종합해서, 서면연구노트는 거의 쓰지 않고, 전자연구노트는 연구과제를 진행하는 과정에서 정기적으로 만들어지는 회의록, 발표자료, 보고서 파일들을 업로드하는 요도로만 사용하게 되었다.

그런데 이렇게 전자연구노트를 개인연구에 잘 쓰지 않다 보니까 내 개인연구의 모든 과정을 자세하게 기록하고, 이를 기반으로 연구를 차분하게 진행시켜 나가기 위한 기록 매체가 마땅치 않게 되었다.


순수하게 내 개인연구 진행 상황을 매일매일 잘 기록하고, 이를 기반으로 중간에 다른 일을 하다가 돌아오거나, 그 다음날에 다시 시작하더라도 기억을 더듬는 시간을 최소화시킬 만한 환경이 필요했다. 사실 이런 목적을 충족해 주는 도구는 이미 널리고 널렸지만, 왠지 모르게 내 손에 잘 잡히지 않는 것이 문제였다.

이 분야에서 단연 에버노트가 막강하겠지만 이상하게 손이 잘 가지 않았다. 논문들을 잘 관리하는 측면에서는 멘델레이(Mendeley)가 좋은 도구가 되겠지만 논문 이외의 문서들 관리하기는 힘들다. 트렐로(tello)는 내가 무엇을 해야 하는지 task를 분류하고 todo list를 관리하기에 좋아 보였지만, 여기에 코딩하면서 발생한 버그, 해결 방법, 논문 아이디어, 시뮬레이션 환경 등등 이것저것 다 기록하다 보니 오히려 너무 기록할 수 있는 영역이 많아서(카드의 제목, 카드의 description, 카드 내부의 댓글, 카드에 추가할 수 있는 checklist, 거기에 카드 종류를 구분할 수 있는 custom label 등등...) 나만의 기준을 일일이 만들지 않으면 너무 중구난방으로 기록되는 바람에 나중에 오히려 찾아보기가 불편한 지경이 되었다. 게다가 일처리를 끝내면 보관(archive) 처리를 해서 사라지게 되는데, 그렇게 화면에서 완전히 사라져야 할 때도 있지만 어떨 때는 남아 있기도 해야 하고, 그렇게 카드 수와 카테고리가 점점 늘어나기 시작하자 오히려 관리하기 어려웠다. 트렐로가 이 모양이니 이와 유사한 Todo 관련 앱들 모두가 마찬가지였다.

슬랙(slack)은 공동저자들과 협업을 하면서 발생한 대화 내용과 모든 파일이 다 시간순으로 기록으로 남아 있고 검색해서 찾아보기도 편했지만, 메신저의 대화창 자체를 기록을 저장하는 수단으로 쓰는 것은 너무 무리였다. (게다가 대화 개수가 10,000개를 넘어가면 그보다 과거의 내용은 돈을 내지 않으면 볼 수도 없다.)


위의 여러 가지 서비스들을 다 시도해 보는 과정에서, 모두 어느 정도 써 보다가 다 중단되었지만, 그러한 시도를 하는 동안에 병행해서 계속 기록을 남기던 가장 원초적인 수단은 결국 메모장(...)이었다.

그 어떤 서식도 넣을 수 없었지만, 그 안에서 내가 나만의 indent를 가지고 위에서 아래로 순서대로 기록을 남기고, 파일 이름은 날짜와 가장 중요한 내용으로 하고 (예: 180117_routing_table_update_issue.txt), 그 파일들을 dropbox 폴더에 모아 놓는 이 원시적인 작업만을 내가 멈추지 않고 해 오고 있었다. 어쩌면 나는 강력한 도구보다는 불필요한 것이나 군더더기가 없으면서 접근성이 좋은, 미니멀리즘 비슷한 것을 원했던 것일까?


결국 위와 같은 고민을 거쳐서 지금은 구글 드라이브에 폴더 하나를 통째로 모든 공동연구자들과 공유하고, 그 아래에 워드 문서를 큼지막한 이슈 별로 만들고, 그 문서 안에서 매일매일의 날짜마다 새 페이지를 만들어서 그날 겪은 문제와 그 전날의 문제를 해결한 내역, 앞으로 할 일 등을 그저 텍스트로 작성하고, 해결이 안된 부분은 빨간 글씨, 해결 완료한 부분은 파란 글씨로 표시하는 최소한의 서식만 남겨 둔 채 사용을 해 보았더니, 현재로써는 이게 가장 생산성이 좋다.


사실 '서투른 목수가 연장 탓'을 한다는 속담도 떠오르고, 연구가 정말 절실하거나 교수님께서 나를 더 많이 쪼시거나(...) 하시면 도구 따위가 문제가 될 수 없겠지만... 그래도 기왕이면 내가 쓰기 편하고, 내 손에 잘 익으면 그만큼 마음의 거리낌이 줄어드는 만큼 연구에 집중할 수도 있는 것이 아닐까? 게다가 최근 5일 동안은 위와 같은 시도의 끝에 정착한 구글 드라이브와 최소한의 서식이 꽤 좋은 생산성을 실제로 보여주고 있기도 하니까.


좀더 일찍 이런 손에 잘 익는 도구에 대한 고민을 했었으면 어땠을까 싶지만... 뭐 지금이라도 늦지 않았다고 생각한다. 남은 시간 동안 열심히 달려 보자.



반응형
블로그 이미지

Bryan_

,
반응형

2018년 1월 중순 들어서 암호화폐 시장에 꽤 큰 하락장이 왔다.

비트코인을 기준으로 12월 중순과 1월 초에 찍었던 고점에 비하면 절반 가량이 빠졌으니, 과거에 여러 차례 있었던 (다만 직접 겪은 적은 없었던) 하락장들에 비견될 만 하다. 작년에도 몇 차례 이렇게 폭락한 적이 있었는데, 지금은 전국민이 다 '가상화폐'라는 단어를 알고 있을 정도로 널리 알려져 있고 시가총액도 800조원에 육박하던 상태에서 폭락하다 보니 더 정신없는 것 같다.

암호화폐를 모르고 있다가 뒤늦게 들어왔는데 폭락을 경험하는 사람들은 아비규환이고, 투자(또는 투기)하지 않고 구경하고 있다가 '거 봐라 조심했어야지'부터 '모두 망해라'라고 하는 사람들도 많고, '탈중앙화'를 적극적으로 반길 리가 없는 정부의 입장에서도 좋게 봐줄 리가 없고 (그 와중에 코스닥 시장의 좋은 소식은 시기적절하게 열심히 띄워주고 있다), 뉴스에서는 암호화폐 폭락으로 인해 발생한 사회문제 (화가 나서 TV를 부쉈다는 등의 인터넷 게시글 관련 보도)를 비롯해서 자극적인 소식을 내보내는 데 여념이 없다.


나도 암호화폐 시장에 발을 들여놓은 지 이제 한달을 조금 넘겼기에 이런 큰 폭락은 처음 겪는 중이다. 물론 12월 8일에 소액으로 비트코인을 조금 사 뒀다가, 금새 고점인 2500만원으로 오르다가 곧바로 1400~1500만원대로 폭락한 뒤에, 오래 걸리지 않아서 다시 2100만원대가 되는 경험은 했지만, 그 때는 워낙 짧았기에 뭐라 감정을 느낄 새도 없었던 것 같다. 그 이후로 이더리움을 비롯한 소수의 코인을 좀더 매수를 하면서 투입한 KRW가 커진 상태에서, 며칠에 걸쳐서 계속 하락세를 면치 못하는 진정한 하락장의 무서움은 이번에 제대로 느끼고 있다. ㄷㄷ 멘탈이 멀쩡하다고 하면 거짓말이고, 신경이 쓰이지만 뭐 이제 와서 어떻게 할 수는 없고, 걱정과 경각심이 반반씩 있다.


작년 12월에 한국 정부에서 거래소를 폐쇄하겠다느니 하는 강경한 발언을 쏟아낼 때에도 시장이 흔들리긴 했지만, 역시 중국이나 미국에서 시작되는 매도세에 비할 바가 아닌 듯 하다. 그러면서 cryptowat.ch 사이트에서 내가 매수했던 코인들의 차트 기록을 하나씩 보고 있으면, '이번에는 정말 망하는 거 아니야?'라는 의구심도 쉽게 들게 되는 것 같다.


차트를 쳐다보기만 한다고 해서 그만큼 시세가 오르는 것도 아니기에 과거의 하락장이 어땠는지 그 당시의 상황을 다시 설명해 주는 인터넷 게시물들을 살펴 보았는데, 커뮤니티 규모나 알고 있던 사람들의 수는 작았지만 지금과 같은 패닉 상황에 대한 묘사는 똑같았고, 나쁜 소식이 더 극단적인 기제가 되어서 난리가 나는 등 지금과 별 차이가 없어 보였다. 그 때에도 '이번에는 망한다'는 사람과 '존버'를 외치는 사람 모두 있었고, 서로 자기 논리를 가지고 지금과 다를 바 없이 싸우고 있었고, 과거의 대하락장 당시의 코인 시장에 대한 악재들도 정말 무시무시한 것들이었다.

작년에 중국 암호화폐 거래소가 모두 폐쇄되는 일이 있었고 (우리나라도 똑같이 시도를 하다가 지금 보류 상태지만...), 그 때 비트코인이 크게 하락했었다. 비트코인은 세그윗(SegWit) 이슈 때문에 가격이 폭락했다가 결국 비트코인 캐시가 떨어져 나오는 등의 어려움을 겪었다. 이더리움은 DAO 해킹 사태 때문에 문제가 되는 블록을 치우고 하드포크를 해서 새로운 이더리움(ETH)이 시작하는데 갑자기 기존의 블록체인을 유지한 채 신규상장해 버린 이더리움 클래식(ETC)이 나오면서 이더리움이 거의 망하는 것 아니냐는 얘기가 나올 정도로 난리가 나기도 했었다. 아직은 초기라서 정보의 부족과 허술함을 악용하는 사기성(스캠) 코인이 나오고 그로 인해 시장이 충격을 받는 경우도 있었다. 최근에는 우리나라 법무부가 암호화폐 전체 시가총액 중에서 100조원을 날려버릴 정도의 영향력(...)을 행사하기도 했고, 중국에서는 암호화폐 거래소에 이어서 비트코인 채굴하는 회사 일부를 폐쇄시키는 과정에서, 중국 내의 모든 채굴장이 폐쇄될 것이라는 생각이 퍼져서 악재가 된 것 같다.


위에 말한 것들도 내가 작년부터 들어 왔던 일부분의 악재라서 실제로는 더 예전부터 더 많은 어려움에 시달려 오면서 지금까지 왔다고 볼 수 있다. 그리고 거품이라고 하기에는 아직은 1998~2001년의 닷컴버블 때의 IT기업들의 시가총액의 1/8보다 작은 수준이다 (닷컴버블 당시의 달러 가치를 지금의 달러 가치로 환산하면 더 차이가 클 수도 있음). 결과적으로는 닷컴버블 또한 거품이 꺼진 이후로 지금은 그 당시의 시가총액을 회복하였고, 구글이나 아마존 같은 회사는 잘 살아남아서 과거의 버블 때의 주가를 훨씬 뛰어넘었다.

그리고 매년 1월마다 변함없이 하락장이 있었고, 그 하락장이 아시아의 구정(음력 설날)을 앞둔 몇 주(24일 정도로 보는 시각이 있다) 사이에 발생했으며, 그러한 하락장이 지나고 나서는 결국 시세를 회복했다.


작년 내내 나는 '비트코인 가격이 벌써 N이라니 너무 비싸다'라는 생각을 했었고, 그 N은 300만원, 800만원, 1000만원, 1300만원, 2000만원으로 계속 달라졌던 기억이 있다. 물론 내가 들어오고 나서 2000만원 전후를 계속 왔다갔다 하고 있어서 2000만원은 실제로 비싼 것이 맞는가 하는 생각은 드는데, 이것도 최근 한 달 동안 보면서 드는 생각이라서 몇 개월이 더 지났을 때 어떻게 되어 있을지는 전혀 알 수 없다.


쉽게 답을 내리지 못하는 가장 중요한 세 가지 질문이 있다.

 - 본격적인 버블이 이미 형성된 것일까, 아니면 아직 버블의 초반일 뿐일까?

 - 암호화폐는 세계적으로 인정받지 못하고 망하게 될까, 아니면 드라마틱하게 세계의 경제에 한 획을 그으며 영향력을 키우게 될까?

 - 이번 하락장은 정말로 심각해서 암호화폐를 망하게 만들까?


이것들의 답을 알았으면 마음이 편하겠지만, 뭐 알다시피 이 세상은 엔트로피가 너무 크고, 물리법칙에 의해 예상가능하게 움직일 것 같지만 나비효과에 의해 뭐가 어떻게 될 지 모르는 카오스의 세계다. 이쪽의 기술적 개념을 조금 살펴본 입장에서 코인을 '돌덩어리' 취급하는 사람들보다는 더 파급력이 크고 암호화폐 자체가 사장될 수는 없을 것이라는 긍정적인 전망을 할 뿐이다.


반응형
블로그 이미지

Bryan_

,
반응형

C++에서 map<key, value>를 쓰다 보면, value를 포인터로 관리해야 하는 경우가 있다. 예를 들어, 아래와 같은 형태의 코드이다.


#define <map>

using namespace std;


class Foo {

public:

    int a;

    double b;

    Foo(int a, double b){

        this->a = a;

        this->b = b;

    }

}


int main() {

    std::map<int, Foo*> fooMap;

    fooMap[101] = new Foo(10, 505.26);

    fooMap[104] = new Foo(8, 1233.61);

    // ...



    fooMap.erase(101);

    fooMap[105] = new Foo(17, 564.98);

    // ...


    fooMap.clear();

    return 0;

}


위와 같이 실행하면 메모리 누수가 발생한다. map.erase(key)를 이용해서 특정한 pair를 삭제하더라도 포인터를 통해 할당되어 있는 메모리 영역은 자동으로 해제(delete)되지 않는다. 즉, 명시적으로 코드 어디선가 new를 통해 오브젝트를 할당했으면, map의 value로 쓰이는지 여부에 관계 없이 명시적으로 delete를 해 주어야 한다.


실제로 C++의 erase와 clear 함수의 소스코드 위에 달려 있는 주석에도 같은 내용이 명시적으로 쓰여져 있다.


map erase 함수 주석:

  /**
   *  @brief Erases elements according to the provided key.
   *  @param  __x  Key of element to be erased.
   *  @return  The number of elements erased.
   *
   *  This function erases all the elements located by the given key from
   *  a %map.
   *  Note that this function only erases the element, and that if
   *  the element is itself a pointer, the pointed-to memory is not touched
   *  in any way.  Managing the pointer is the user's responsibility.
   */

...


map clear 함수 주석:

  /**
   *  Erases all elements in a %map.  Note that this function only
   *  erases the elements, and that if the elements themselves are
   *  pointers, the pointed-to memory is not touched in any way.
   *  Managing the pointer is the user's responsibility.
   */

...



포인터를 명시적으로 delete하는 것이 번거롭다면 C++11 이후의 버전들이 smart pointer를 제공하는데, (또는 이전 버전의 경우 boost::shared_ptr) 이것을 사용하면 자동으로 메모리 할당을 해제해 주므로 명시적인 delete를 할 필요가 없다.


포인터에 대해서 더이상 참조당하고 있지 않을 경우에 자동으로 메모리를 해제하는 작업은 ns-3에도 Ptr<T>로 구현되어 있는데, std::shared_ptr, boost::shared_ptr은 아직 써본 적이 없어서 자세히 모르겠지만 아마 개념과 목적은 유사할 것으로 예상된다.

(나중에 사용한 뒤에 포스트를 수정할 예정)




반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 16.04

ns-3 version: 3.26


ns-3에서 기존의 리눅스에서 돌아가던 코드를 포팅하는 과정에서, UDP (또는 TCP) 소켓을 열고 패킷을 보내는 코드를 그대로 옮겨 오면서 ns-3 클래스 중 하나인 Ptr<Socket>을 직접 만들어서 패킷을 보내도록 만들어 두었다.


그런데, 이상하게 1초마다 보내는 패킷의 개수를 대폭 늘리기만 하면 (일부러 링크가 saturated 되도록 만들고 경로 변경을 유도하게 만들어야 했다), 시뮬레이션 타임이 끝나기 전에 이유 없이 시뮬레이션이 아주 느려지면서 몇 시간씩 걸리는 것이었다. 에러 메세지는 하나도 없었고, 메모리 문제라도 있었으면 Segmentation fault라도 떠서 디버그를 했을 텐데 그런 문제도 없었고, 실제로 몇 시간씩 걸리더라도 메모리 사용량이 그에 비례해서 늘어나지도 않고 오로지 CPU 사용량만 100%를 찍고 있었다.



결론부터 얘기하자면, 원인은 Socket 오브젝트의 잘못된 사용이었는데, 소켓을 열고 나서 하나도 닫지 않아서 발생한 문제였다. 나는 ns3::Socket 오브젝트를 생성하는 함수를 따로 만들고, 그걸 원하는 조건에서 보내면서 나에게 필요한 통계 처리를 하기 위해서 아래와 같은 간단한 함수를 정의해서 코드 이곳저곳에서 사용하였다.


void sendPacket (Ptr<Socket> socket, Ptr<Packet> packet) {

        socket->Send(packet);

        // 특정 통계 내는 작업

}



이미 언급했듯이 위의 함수에서 결정적인 실수를 하나 했는데, sendPacket 함수를 call 하기 전에 매번 socket을 새로 생성하도록 해 놓고는 잊고 socket을 한 번도 닫지 않은 것이었다. 소켓을 하나만 열고 재활용을 한다면 위의 함수가 문제가 없지만, 매번 소켓을 새로 생성한다면 위의 함수에서 socket->Close(); 를 반드시 추가해야 하는데 그러지 못했었다.


즉, 시뮬레이션 타임이 끝날 때까지 내가 직접 열어 놓은 모든 소켓이 하나도 안 닫히고 끝까지 열려 있었고 시뮬레이션 규모가 작을 때에는 그게 문제가 되지 않다가, 보내는 패킷 개수를 대폭 늘렸더니 에러는 없지만 시뮬레이션을 마치는 데 걸리는 실제 시간이 너무 오래 걸리는 것이었다. 내 컴퓨터에서 40초짜리 point-to-point 네트워크 환경에 대한 시뮬레이션을 돌리는 데 6-7시간이 걸렸다.


처음에 원인을 모를 때에는 내가 file I/O를 너무 많이 열어 놔서 그런가 하는 생각에 특정 로그를 기록하기 위해 열어 놓은 모든 파일 포인터를 다 주석처리해 보기도 했고, 콘솔 화면에 찍히는 메세지를 다 없애 보기도 했고, 랜덤 숫자 생성을 너무 자주 하는 건가 해서 그 부분까지 랜덤을 쓰지 않도록 했는데도 여전히 특정 시간대에서 거의 진행을 하지 못하고 한참을 멈춰 있는 것이었다.


그리고 그 때의 CPU 사용량은 코어 1개를 100% 사용하고 있었는데, 내가 parallel processor (mpi)를 쓰지 않았기 때문에 ns-3가 내부적으로 엄청나게 많은 정체불명의 연산을 하고 있다는 추측밖에 들지 않았다. 그 때에 메모리 사용량이 같이 늘어났다면 내가 뭔가 데이터 구조를 잘못 관리했다거나, 버그가 있어서 데이터가 무한정 늘어난다거나 하는 추측이라도 했을 텐데 메모리 사용량도 늘어나지 않았다.


시뮬레이션 전체 시간 40초 중에서 유독 33초 전까지는 1분도 안돼서 진행을 하다가, 그 뒤부터 갑자기 원인 불명으로 느려지면서 6시간을 소비하는 것이 이상해서, 보내는 패킷의 개수를 줄였더니 전체 시뮬레이션이 1분 만에 잘 끝나는 것이었다.


생각해 보니, 약 15~20초 사이에 4개의 트래픽을 생성하고, 매 초마다 250~300개 정도의 패킷을 보내도록 했더니 33~34초 정도에서 항상 멈추는 것이 확인되었고, 그 중에서 똑같은 링크를 통해서 3개의 트래픽이 동시에 지나가는 영역이 있는데, 시뮬레이션 시간으로 약 33초 정도면 그 링크를 지나가는 패킷이 약 15000~20000개쯤 되는 것 같았다.


그러면 ns-3가 실제 TCP/IP 프로토콜과 transport 작동을 그대로 구현했기 때문에 소켓을 하나 열면 보내는 쪽에서는 50001~65535 중에서 아직 다른 소켓에 bind되지 않은 하나의 랜덤 숫자를 찾아서 소켓을 열고, 패킷을 보내는 방식으로 작동할 것이므로, 15535개 이상의 소켓을 열기 시작하면 bind할 포트 번호를 찾지 못할 것이다.


아...

이런 상황에서 실제 컴퓨터는 소켓이 bind를 못한다던지 하는 오류를 냈을 텐데 ns-3는 아무 오류도 없이 bind될 소켓을 찾느라 계속 기다리기만 했던 것이었다. 그런데 bind할 소켓이 하나도 없었을 텐데 실제 시간으로 6시간쯤 걸려서 결국 패킷을 다 보내기는 했다는 것도 신기하네. Timeout 같은 게 설정되어 있어서 그랬을까?


앞으로는 socket->Send를 쓸 때에는 꼭 socket->Close를 잊지 말아야겠다.



반응형
블로그 이미지

Bryan_

,
반응형

1월 5일 저녁에 웬일로 퀀텀 또는 큐텀(QTUM) 기사가 꽤 멀리까지(...) 갔다. 빗썸 기준으로 단가 68000원~72000원 사이를 지겹게 횡보하더니, 오늘 드디어 80000원을 뚫고, 84500원까지 치솟더니, 1월 6일 0:39 기준에서 78000원대를 잘(...) 유지하고 있다.


물론 며칠 전에도 매일 달리는 듯 하면서 78000원 근처를 잠깐씩 찍는 경우가 있었지만, 그러고 나서 금새 가격이 줄줄 빠져서 다시 71000~72000원대로 돌아왔기 때문에 의미가 없었다. 그만큼 단타하는 사람들의 먹잇감이 되었던 것이 아닐까 예상된다. 반면에 리플(XRP)은 며칠 연속으로 파죽지세로 상승하고 나서는 가격이 빠지지 않고 4천원 대를 유지했던 것과 비교할 때 '퀀또속'이라는 말과 함께 허탈함이 나오기도 했었다. (사실 리플이 몇 개월 전에 똑같은 지지부진한 횡보 때문에 '리또속' 소리를 한참 들었다.)


나는 퀀텀을 PoS 채굴을 돌리기 위해서 저점이라고 생각될 때마다 조금씩 모아서 모두 개인지갑으로 보냈기 때문에 사실 지지부진한 횡보가 큰 스트레스는 아니었다. 그리고 다행히 고점에는 물리지 않았었기 때문에 적게나마 이익구간에 속해 있는 상태였다. 다만 퀀텀의 채굴 보상을 너무 오래 걸리지 않고 받으려면 적당히 많은 양의 코인 수를 확보해야 하기 때문에, 조금씩 모으다 보니 어느새 코인에 투자한 금액 중에서 퀀텀이 가장 높은 비중을 차지한 상태가 되었다. 그래서 사실 비트코인이든 알트코인이든 상승장에서 나의 원화환산 투자수익은 큰 변화를 보여주지 못했다.

그러다가 1월 5일에 드디어 의미 있는 수준으로 상승을 하였고, 게다가 평균 70000원으로 다시 회귀하지 않고 그보다 높은 가격대를 유지하고 있어서 다행스럽다. (다만 1월 6일 새벽인 지금 대장인 비트코인이 달리면서 알트코인들이 나가떨어지고 있다 보니, 퀀텀의 상승세가 한풀 꺾인 점은 아쉽다.)


사실 퀀텀이 횡보하던 지난 2주 동안 다른 동전 코인들은 퀀텀의 20~30% 상승 정도는 우스울 정도로 엄청난 상승을 보여주었기에 그쪽에 투자하지 못한 기회비용으로 따져 보면 손해일 수는 있다. (하지만 KRW를 은행 예금으로 그냥 두는 기회비용과 비교한다면? 코인 종류가 뭔들 연이율 2% 따위를 못 이길까?)

하지만, 나는 아쉽게도 빗썸 이외의 거래소에 미리 계좌를 만들어 두지 못하는 바람에 현재 정부 규제로 인해 업비트에서 아무 것도 매수할 수 없었다. ㅜㅜ 게다가 퀀텀은 매수하자마자 모두 개인지갑으로 보내는 바람에 내가 원하는 팔고 싶은 타이밍에 재빨리 팔 수도 없었기에 '강제 존버'를 할 수밖에 없었다.


인터넷에 퀀텀을 바라보는 두 가지 상반된 시각이 있다.

하나는 긍정적으로 바라보는 시각인데,

  • CEO를 비롯하여 회사가 무지 열일하고 있는 데다
  • DApp 플랫폼도 모양을 갖춰가고 있고, 그 플랫폼이 이더리움과 기술적으로 독립된 독자적인 플랫폼으로 발전하고 있으며, 개발되는 DApp의 수도 상당히 많다는 점,
  • 중국의 매우 큰 기업들과의 협력이 기대되는 점 등이 있다.


또 다른 하나는 부정적으로 보는 시각인데,

  • 지나친 마케팅 코인의 이미지 때문에 기대감이 자꾸 코인 가격에 선반영되었다가 다시 가격이 빠지는 것처럼 느껴지는 현상 (최근 2주의 행보가 그랬다),
  • 거래량의 대부분이 빗썸에 집중되어 있(었)고, 실제로 한국인이 가장 많이 보유하고 있다 보니 그로 인해 단타질 하기가 쉽고 유통이나 거래에도 한계를 보이는 점,
  • CEO가 퀀텀 관련 카카오톡 및 텔레그램 대화방에 직접 참여해서 수시로 진행 상황을 공유하는 모양이 공식 공지가 아닌 사적인 '입 털기'처럼 느껴지는 점,
  • 퀀텀에 투자하는 사람들이 보여주는 '특정 코인을 너무 사랑하는 듯한' 모습

이 정도가 있겠다.


나도 처음 퀀텀을 소량 매수했을 때에는 반신반의했지만, 지금은 장투용으로 매력적인 코인이라고 생각하고 긍정적인 입장을 갖게 되었다.

사람들이 퀀텀을 부정적으로 바라보는 이유 중에서 너무 '마케팅 코인'같아 보이는 측면이 실제로는 CEO가 언급하는 대로 하나씩 실현되고 있기 때문에 적어도 말만 많은 코인은 아닌 게 확실하다. 오히려 상당히 열심히 DApp 개발이나 다른 회사들과의 협력을 진행해 가고 있어서 제 2의 이더리움이 될 잠재력도 있다.

다른 코인들을 폄하할 생각은 없지만, 오히려 퀀텀은 그 열심에 비해서 가격이 저평가를 받는 상태일 수도 있다. (물론 반대로 비트코인이나 이더리움이 지나친 거품이라고 말할 수도 있지만, 일단은 코인시장 전체가 더 커질 가능성이 높으므로 퀀텀도 그만큼 오를 여지가 있다.)


다만 CEO의 공지 중에서 의도치 않게 거짓말처럼 된 것이 UBTC 에어드랍과 관련된 것인데, UBTC 에어드랍을 일시에 받을 것으로 기대했다가 실제로는 48개월에 걸쳐 할부로 지급받게 되는 것으로 판단되면서 사람들이 실망한 경우이다. 1월 3일쯤에 UBTC와 관련된 좋은 소식을 기대했다가 결국 별 것이 아니게 되면서 7만원 대 횡보가 더 길어졌다. (고작 이틀 횡보가 더 늘어난 것처럼 보이지만, 코인판에서 몇 시간만에 엄청난 롤러코스터를 타는 다른 코인들에 비하면 거의 움직이지 않는 수준이긴 했다.)


그리고 1월 5일에 드디어 횡보를 벗어나 크게 오른 이유는 협력하기로 공지할 예정인 중국 거대 인터넷 기업의 존재감 때문인 것 같다. CEO가 저녁 시간에 카톡 방에 남긴 공지에 의해 '10억 명의 사용자를 가진 인터넷 기업, 중국에서 페이스북/구글과 비슷한 입지를 가진 기업'과의 협력이 예상되면서 '이번에는 진짜다'라는 기대심리가 매수세를 크게 끌어올렸을 것이다.


또 일부러 타이밍을 맞춘 것은 아니겠지만, 업비트에서 퀀텀 지갑이 생성이 되면서 사람들이 빗썸에서 퀀텀을 출금해서 업비트로 옮기는 상황도 발생했다. 게다가 같은 국내 거래소인데도 업비트에서의 퀀텀 가격이 빗썸보다 거의 만원 가까이 높았기 때문에 빗썸에서 업비트로 꽤 많이 빠져나갔을 것이다.

빗썸에서만 대부분의 퀀텀이 거래될 때, 급격한 상승장에서 빗썸 서버가 터지면서 매수/매도자들이 원하는 가격대에 매수/매도를 걸지 못하고 이전의 건이 남겨지면서 본의 아니게 상승장을 억제하는 나쁜 영향도 은근히 있었던 것 같다. 그 와중에 단타도 많았고... 게다가 '시체'라고 불리는, 12월에 퀀텀이 88000원을 찍던 때에 매우 고층에 물려 있던 사람들의 매도까지 합쳐져서 시체를 많이 치워야 했을 수도 있다.


아마 다음주 초에 사용자 수 10억 명의 중국 인터넷 기업이 직접 퀀텀과의 협업을 공지하게 되면, 그 때 한번 더 상승장을 기대할 수 있을 것 같다.

반대로 주말 동안에 조심해야 할 점이 있다면 (꼭 퀀텀에 국한된 것은 아니고), 토요일 밤에 '그것이 알고 싶다' 방송이 비트코인을 (분명히 안좋은 방향으로) 다루기 때문에 내용에 따라서 일시적으로 모든 암호화폐들의 가격이 요동칠 수는 있겠다.


결론적으로 퀀텀은 드디어 상승을 했지만 장기적으로 더 오를 것이 기대되므로 (이더리움이 그랬고 리플이 그랬듯이), 이대로 묻어 두고 PoS 채굴의 보상도 기다릴 겸 좀더 지켜봐야 하겠다.


반응형
블로그 이미지

Bryan_

,