[Vultr] 워드 프레스, 클라우드 컴퓨팅 서버로 이전기 -1-

이전 글에서 적었듯이 갑작스러운 서버 정리를 위해서 선택한 방법은 기존 서버에서 클라우드 컴퓨팅 서버로 이전하는 것이었다. 그러면서 적용한 방식에 대해서 정리를 해보고자 이전기를 작성한다.

먼저 사용한 클라우드 컴퓨팅 서비스에 대해서 설명하고자 한다.

가장 널리 알려진 클라우드 컴퓨팅 서비스는 바로 아마존 AWS 의 EC2 서비스이다. 이와 유사한 서비스로는 국내에 KT uCloud 같은 것들이 있는데 문제는… 가격이다.

기본적으로 아마존이나 KT에서 하면 기본적으로 제일 작은 인스턴스

인스턴스 : 하나의 컴퓨터로 생각하면 편하다.

로 생성을 하더라도 기본적으로 한달에 2만원에서 3만원 정도의 비용을 지불해야 한다. 그래서 조금 더 저렴한 곳이 없을까 하여 여기저기 뒤져보다가 Vultr 를 찾을 수 있었다.

사실, 나무 위키라는 좋은 곳에서 정보를 얻을 수 있었다.

가격은 최소 한달에 5달러부터, 일단 최소로 신청을 하고 모자랄 경우 업그레이드도 가능하다고 하니 일단은 최소 금액으로 투자를 하려고 하다가… 그래도 웹서버에 메모리 2기가는 되어야지라는 생각에 10달러 짜리를 신청하였다. 신청하는 과정은 아래와 같았다. 먼저 아래 링크로 가서 가입을 진행한다.

일단 위의 링크는 추천인이 포함된 링크임을 이실직고 한다. 만약 추천인을 적기 싫다면, 아래 링크로 들어가면 된다.

이미지는 동일하지만 클릭해보면 주소가 다르다는 것을 바로 알 수 있을 것이다.

아무튼 위의 링크로 접속하게 되면 홈페이지로 접속된다. 이 부분만 살펴보면된다.

위의 그림을 보면 이메일 적는 곳과 패스워드 적는 곳이 있다. 저 곳에 사용을 원하는 이메일 주소와 패스워드를 입력 한다. 만약 패스워드가 약하다고 판단되면 다시 한번 확인하는 창이 나타나고 아니라면 다음 단계로 진행된다. 다음 화면은 결제 정보를 입력하는 곳이다. 적는다고 바로 결제 되는 것은 아니니 입력하고 진행한다.

신용카드로 사용할 경우, 위의 정보를 입력한다. 일단 이름, 주소를 입력하고 아래 ‘Credit Card Details’ 를 입력한다. 그리고 Link Only로 할경우 충전없이 진행된다. ‘Summary’ 쪽은 코드를 검색해서 가져갈 경우 추가 금액을 넣어준다고 하는데 구글에서 찾을 수 있다고 하였으나…

귀차니즘으로 포기하였다.

그 이후 메일 인증을 하라고 할것이다. 메일을 확인하여 인증을 수행하면 된다.

자, 여기까지 하였다면 일단 Vultr 가입은 끝나게 된다.

사실 가입부터 적었지만… 어려운 부분이 없다. 귀찮은 부분은 주소를 적는 부분? 그 외에는 쉽게 진행할 수 있었다. 이후 부터가 조금 어려워 질 수도 있는 부분인데 해당 부분은 후에 따로 정리해서 작성하고자 한다.

일단 가입부터 해보고 이것저것 건드리면서 0.0x 달러를 소비해보는 것도 나쁜 방법은 아니라…. 고 생각한다.

이사, 서버 이전 그리고 정리

어쩌다보니, 그리고 손쓸 틈이 없이 이사가 결정되었다.

100% 나의 의지가 아닌 일부 외부 요인에 의해서 무려 ‘오.피.스.텔’ 로 이사하게 되었다.

아직 이사 날짜도 정해지지 않았지만, 아무래도 6월 15일 전/후로 이사하게 될 것 같다.

문제는 오피스텔로 이사를 하게 되다보니… 공간이 좁아진게 문제가 되었다.

 

기존에는 집에서 서버를 동작시키고, 컴퓨터는 내가 원하는 만큼 쌓아서 신나게 삽질이라는 삽질은 다하고 살았는데…

기본적으로 그럴 공간이 없어지게 된 것이다. 그래서 심각한 결정을 내려야만 하는 상황이 되었다.

 

큰 집에서 작은 집으로 가게 되면서 가장 중요한 것은 바로 짐을 줄이는 것이다.

블로그 제목에도 보이지만, 취미가 많은 나는 많은 짐을 줄여야 했다. 일단 집에 있는 잡동사니는 모조리 박스로 쳐박아서 고향으로 보낼 준비를 하였고 책도 버릴건 다 내다버렸다. 하지만 가장 큰 문제는 바로 서버였다.

 

어떻게든 줄여야 했다. 그래서 내린 결정은… 서버 운영을 중지하기로 결정하였다.

음… 그렇다고 웹 서버까지 내려 놓기에는… 그래도 IT 직종에 있는데 블로그 하나 정도는 직접 운영해야 하지 않을까 하고 고민하다가 ‘가상 머신 호스팅 서비스’를 뒤지게 되었다. 이래저래 후보군을 놓고 고민을 하고 있는데 결론은… 싼거. 싼게 최고!

 

그래서 검색을 거쳐 Vultr를 선택하게 되었다. 싸고 서비스 안정성도 높다고 하니… 뭐… 일단 써보자는 생각에 결제를 하고 서버 세팅을 완료하였다.

 

도메인 서비스는 기존 DDNS를 그대로 유지하기로 결정하였다. 빠른 전환을 위해서라고 하면 약간은 핑계가 될까.

 

 

일단은 Vultr로 옮기고 기본 세팅만 끝낸 상태이다. 앞으로 Vultr 사용기나 올려볼까….

Bitcoin 거래소 폭파 폭파

어제 회사의 선임분 한 분의 이야기를 듣고….

비트코인과 이더리움 클래식을 일부 매입하고 자고 일어났더니…. 수익률이 약 2-30%가 넘어버렸다.

 

 

사실 어제 사두고 까먹고 있었던지라… 그냥 그러려니 했는데…

 

사이트들에 접속해보니 난리도 아니다.

 

 

코빗, 빗썸, 코인원 등등 왠만한 서버들은 다 터져나가고 있다.

 

 

일부 정리해야 하는데 정리가 안되는 이런 상황을 어찌해야 할지 모르겠다. 헛웃음만 나는 상황이다.

코란도C 주행중 느낀 단점들

우짜다보니 코란도C 를 긴 시간 몰 수 있게 되었다. 

그러다보니 자연스럽게 기존에 몰았던 차들과의 단점? 혹은 다른점 들이 보이기 시작했다. 

먼저 몰아봤던 차들은 다음과 같다. 

스포티지R 구형

액티언 스포츠 구형

투스카니 구형 2.7 엘리사

그리고 비교 대상이 되는 코란도C는

60주년 기념 코란도C, 자동 변속 모델, AWD

이다. 

사실 비교하기 딱 좋은 것은 스포티지R 구형이지만 이래저래 하나하나 다 비교하긴 어렵고 전체적으로 살펴보자면

트렁크 사이즈

일단 트렁크 사이즈는 좋다. 아니 뭐 SUV 기본은 한다. 하지만 이게 디자인 때문인지는 모르지만 생각보다 많이 들어가진 않는다. 스포티지R 구형을 살펴보면 일단 후면 글라스가 거의 수직으로 떨어져 큰 짐을 실어도 크게 걸리지 않는 반면 코란도 C는 걸린다. 생각보다 크기가 큰 짐은 넣기 어렵고 테트리스를 해줘야 하는 단점이 있었다. 

변속기 문제

변속기 문제는 크게 두가지 정도로 나눌 수 있다. 일단 스포츠 모드, 이 부분은 인터페이스가 기존에 사용하던 것과 너무 다르다. 기존 인터페이스는 4단일 경우 그냥 4단이다. 1,2,3단이 아닌 4단. 하지만 코란도 C의 경우… 4단 이하다. 그 이하에서 필요한 단수를 다 쓴다고 보면 된다. 어떻게 생각하면 편리하지만… 익숙한 느낌은 아니다. 거기다가 스위치도 이상하다. 이 부분은 기존거에 익숙해진 내가 문제일 수도 있지만 흠… 

또 다른 변속기 문제는 바로 변속 속도이다. 어떤 타이밍에 변경되는지 알기가 너무 어렵다. 엑셀을 깊이 밟아도 킥다운이 안일어나는 건 자주 있는 일이고, 엑셀레이터를 땠을때 상위 단수로 변속이 늦게 이루어져 잡아당기는 느낌도 받는다. 뭔가 알 수 없는 로직이 동작하는 것 같아 불쾌한 느낌이다. 

주행 안정성

이건 진짜 묘하다고 밖에 설명을 할 수 없다. 일단 롤링은 매우 심하게 느껴진다. 심지어 액티언 스포츠보다 다 심하게 느껴져 불안하다. 거기다가 핸들은 무거운데 뭔가 엄청 민감하다. 플러스 알파로 통통 튀는 주행감은 고속 운전에서 엄청 사람을 불안하게 만든다. 타이어 공기압 조절도 해봤지만… 이건 뭐… 내 스타일은 아니다. 
사실 코란도C는 좋은 차이다. 튼튼하고 힘 좋고 다 좋다. 근데 위의 세가지는 정말 답이 없었다. 만약 내 차라면 일단 개조부터 들어갈 것 같았다. 일단 하체 보강 + 일체형 쇼바가 가장 필요할것 같아보였다. 

짐도 적당히 실을 수 있고 타기도 편하다. 하지만 내가 사라고 한가면… 음… 애매하다. 
글을 길게 쓸 자신이 없어서 단점만 적어보는 거지 실제로는 좋은 차라고 생각한다. 단 시승은 해보고 구입하길 강력히 주장한다. 

[python] psutil 라이브러리의 cpu_times()

쓸데없는 고민의 시작은 자원 모니터링을 구현하려고 하다가 갑자기, 문득, 쓸데없이 떠올랐다.

 

python psutil 라이브러리의 cpu_times() 함수의 결과 값은 /proc/stat 의 값과 동일한가?

 

… 참 쓸데 없다… 아무튼 검증을 해보니… 동일하다. 결국 psutil.cpu_times() 는 jiffy 값을 리턴한다.

[SHELL] 내가 쓰는 환경 변수 설정 방법

이래저래 서버 쪽으로 계속해서 일을 하다보니, 쉘 환경이 바뀌는 경우가 잦아졌다.

어떤 개발에서는 이 환경 변수를 써야 하고 어떤 개발에서 다른 환경을 써야하기도 하는 상황에서 환경 변수 관리라는 것이 참으로 짜증나게 되었다.

사실 별건 아니다. 필요하면 수정하면 되고.. 하지만 귀찮은 일을 또 그냥 둘 수는 없어서 이래저래 지금껏 써보던 방법을 정리해보고자 한다.

 

사실 야근하는 중인데 놀고 싶어서 이러는거다.

 

환경 변수 관리는 어떻게?

 

사실 초반에 제일 고민 했던 것으로 환경 변수를 하나로 몰아쓰자니 나중에는 내가 무슨 목적으로 이걸 추가했는지 도저히 알 방법이 없었다. 처음 몇개야 이건 뭐거 저건 뭐고 하면서 기억하지 나중에 자꾸 추가 하다보면… 나중에는 이게 원래 있던건지 내가 추가한 건지 도저히 기억이 나질 않게 된다. 그래서 아래와 같은 방법을 사용하기 시작했다.

 

환경 변수는 디렉토리에, 그리고 로드는 rc 파일에서

 

먼저 나는 내가 생성한 모든 계정아래에 EnvSet이라는 디렉토리를 만들었다. 사실 무슨 이름이든 상관없다. 그냥 쓰기 편한 이름으로 만들면 된다. 그 다음에 rc 파일에 아래와 같은 코드를 추가하였다.

 

for file in `ls ~/EnvSet/*.env` 
do
    source ~/EnvSet/${file}
done

 

해당 쉘 스크립트 부분이 하는 일은 단순하다. 파일 리스트를 읽어서 환경 변수 설정 파일을 반영해주는 것이 전부다.

위와 같이 환경을 만들었다면 다음은 실제 환경변수 파일, 여기서는 env 파일들을 생성할 차례이다. 예제는 tensorflow를 동작시키기 위한 환경 변수를 세팅하는 예제이다.

 

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
source /DATA/tensorenv/bin/activate

 

이렇게 환경 변수 파일을 채워 해당 내용을 tesorflow.env 로 저장하면 끝!

 

이런식으로 여러개의 파일을 나누어서 환경변수를 관리할 수 있다. 하지만 사람은 게으르다. 개발자는 더 게을러야 한다고 배웠다.

 

환경 변수를 필요할 때만 불러오고 싶다.

 

위의 요구 사항을 반영하자. 쉘 스크립트로 구현하면 쉽다. 이전의 tensorflow 환경 변수를 필요할 때만 불러오고 싶다면

 

echo -n "Do you want run tensorflow env? ( y/N ):"

read input

if [ "${input}" = "y" ]
then
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
     source /DATA/tensorenv/bin/activate
fi

 

위와 같이 구현했다. 위의 내용은 단순하다. y를 입력하면 tensorflow 환경 변수를 읽어오고 아무 문자 혹은 그냥 엔터만 치면 읽어오지 않는다.

이런식으로 필요한 환경 변수 세팅을 변경할 수 있게 관리하면 조금 더 깔끔한 환경을 구현할 수 있다.

[Nexus7 2012 3g ( tilapia )] TWRP 설치 리커버리 진입 불가 문제

해당 문제의 경우 대부분의 경우 설명을 자세히 읽지 않아서 발생하는 것 같다.

…. 사실 읽었는지 안 읽었는지 기억은 안나지만 다른데서 발견하고는 적혀 있었다고 믿고 싶다.

아무튼

 

fastboot.exe flash recovery [twrp file name]

fastboot.exe reboot

 

위와 같이 설치를 진행하게 되는데 마지막 명령어 reboot을 내리고 난 직후에 볼륨 다운키 혹은 업키를 눌러서 바로 리커버리 모드로 진입하면 아무 문제 없이 진행된다.

실제 찾은 내용도 참고해보면 reboot시 원래 recovery로 돌려버리는 문제가 있고 이 와중에 문제가 발생할 수 있다는 것이었다.

python 멀티쓰레딩 환경에서 socket, select, makefile

이글을 쓰게 된 이유는 아래와 같다.

  • python 으로 짜여진 코드를 수정해서 사용해야 한다.
  • Multi Threading 환경으로 구성되어 있다.
  • 기존 코드를 최대한 유지하는 방향으로 작성한다.
  • 사용된 라이브러리는 socket, select 이며,
    makefile 로 socket을 file descriptor 로 변경하여 readline을 사용한다.

여기서 문제가 되었던 기능은

  1. [C] 사용자가 socket으로 특정 쓰레드 생성 명령어 수행
  2. [S] 쓰레드 생성 및 실행
  3. [C] 사용자 접속 종료

으로 심플한 기능이다. 단순히 쓰레드를 실행하는 것일 뿐인데 문제가 되는 부분은 3이었다. 분명 서버단에서 close를 호출하여 file descriptor 를 닫아주었고, socket도 따로 close 했음에도 불구하고 클라이언트는 끊어지지 않은 것으로 판단, 계속해서 동작하는 문제였다. ( 사실 동작은 아니다. 그저 끊어지지 않았을 뿐 )

그래서 구글링한 결과를 정리하자면 먼저 소켓을 shutdown 시키면 되다는 것을 알게 되었다.

sock.shutdown(socket.SHUT_WR)

위와 같이 써준 후 socket을 close 하면 정상 동작한다.

오랜만에 블로그 디자인 정리 및 몇가지 기능 추가

간만에 블로그를 만지고 싶어서 건드리다가 최근 모든 SNS를 끊고 유일하게 사용하는 INSTAGRAM 피드를 추가하고 싶어서 이리저리 삽질을 진행했다.

일단 기존의 테마를 버리고 조금 더 어둡고 심플한 테마로 변경하였고, 해당 테마 설정을 건드린 후에 INSTAGRAM 관련 플러그 인을 뒤지는데…

 

생각보다. 관련 플러그인 중에 무료로 사용했을 때 이쁘게 출력되는 것을 찾을 수가 없었다.

대부분의 무료 플러그인의 문제는 다음과 같았다.

 

  • 색상 변경 불가 ( 생상이 변경 안되면… 기존 페이지랑 너무 붕 떠 보인다. )
  • 기타 출력 포맷의 유료화

 

그래서 결국 Instagram Feed WD 라는 것을 1년치 결제해서 사용하기로 결정하였다.

그리고 적용, 위의 상단 메뉴에서 INSTAGRAM을 선택하면 볼 수 있다. 어찌되었든 블로그를 자주 안하니, 차라리 자주 업데이트 되는 INSTAGRAM이라도 업데이트 되게 해놔야겠다는 마음으로 작업을 진행했지만… 마음이 씁쓸하다 스스로 게을러 진거 같기도 하고… 조금 더 자주 글을 쓸 수 있도록 해야하지 않을까?

조혈모 세포 기증 후기

약 10여년전에 어떻게 보면 아무생각 없이 그저 겉으로 드러나는 허세란 허세를 다 부리고 있을 시절에 조혈모 세포 기증을 등록한 적이 있었습니다.

그 뒤로 10여년 별 다른 연락도 없었고 기증을 등록했다는 사실은 1년에 한번씩 배부되어 오는 캘린더를 통해서만 제가 기증을 했었다는 사실을 인지할 수 있었습니다.

그러다가 가톨릭 조혈모 세포 은행에서 걸려온 전화를 회사에서 받고 기증 대상자가 나타났다는 이야기와 절차에 대한 설명을 들을 수 있었습니다. 마지막으로 가족들과 이야기해보고 결정을 내려 달라는 이야기를 받았습니다.

사실 이전에 이미 부모님께 등록 시점에 말씀드렸었고, 15년 동안 혼자 자취 생활을 한지라 온전히 저에게 결정할 권한이 있었기에 그날 결정 전화를 드렸습니다. 그리고 조혈모 세포 기증을 하기 위한 절차를 진행하게 됩니다.

절차는 간단하게 아래와 같이 진행되었습니다.

  1. 건강검진 ( 일반적인 건강 검진과 유사 )
  2. 촉진제 주사 ( 3일간 외진으로 촉진제 주사 )
  3. 입원 ( 2박 3일간 입원 )
  4. 퇴원 후 검진

건강 검진 같은 경우는 평범하게 진행되었습니다. 일반적인 기본 건강 검진과 유사했습니다.

촉진제 주사, 부작용이 나타나는 사람이 있다고는 하나 대부분 견딜만한 수준이라고 이야기를 들었습니다. 저 같은 경우에는 약간의 두통과 요통을 느꼈습니다. 이 또한 타이레놀을 진통제로 처방해주시는데 해당 약을 복용하면 아무 통증을 느낄 수가 없었습니다. 그렇다고 해서 논다거나 밖을 돌아다니기에는 약각 힘든 정도였습니다.

건강 검진과 촉진제 주사를 맞은 후에는 입원을 해야 합니다. 첫날은 하는 것 없이 기본적인 검사와 혈압 측정등을 진행하였습니다. 건강 검진에서는 이상이 없다고 했는데 혈압이 높게 나와 혈압약을 처방 받았고 해당 약을 처방 받은 후 정상으로 돌아왔었습니다.
입원 첫날 깜짝 놀랐던 것은 기증자에 대한 대우입니다. 물론 기존에 이런저런 이야기나 글을 읽었었기 때문에 좋은 대우를 해준다는 것은 알았지만 생각 이상으로 좋은 병실과 좋은 케어일 줄은 상상도 못했습니다. 첫날은 그렇게 지나갑니다. 촉진제는 1회 더 주사하게 됩니다.

입원 둘째날은 실제 기증을 위한 시술이 수행됩니다. 전반적으로는 현장 헌혈과 비슷한 느낌이었지만 저 같은 경우에는 약간의 통증을 동반했습니다. 그리고 시간적으로도 5시간여에 달하는 시간을 제자리에 누워 있어야 했기 때문에 약간은 힘들었다고 생각됩니다. 시술이 끝나고 나면 추출된 조혈모 세포를 가지고 기증 대상자에게 바로 이식이 수행된다고 했습니다. 기증 대상자를 실제로 보거나 만나는 것은 아니고 만약을 위해 대기를 하고 있습니다.

기증 대상자에게 이식 시술 후 결과가 좋지 않을 경우 다음 날 한 번 더 시술을 수행해야 하기 때문입니다. 다행이 저 같은 경우에는 기증 결과가 괜찮다는 이야기를 전해 듣고 남은 시간은 병실에서 쉴 수 있었습니다. 다음날은 아침에 일어나 퇴원 준비를 하는 것으로 기증 절차가 종료 되었습니다.

마지막 과정인 퇴원 후 검진의 경우 아직 진행하지는 않았습니다만 간단히 혈액 검사가 이루어질 것이라고 전해 들었습니다.

 

기증 후 후기를 작성을 바로 하려고 하였으나 굉장히 많은 생각이 들었습니다. 기증 과정에서 여러 이야기를 보고 듣고 그리고 실제로 제가 그 과정을 겪었기 때문입니다.

처음에는 분명 별 생각없이 기증 등록을 하였고 기증을 해야하는 상황이기 때문에 기증에 참여한 것이었습니다. 하지만 주변의 걱정과 응원을 받으면서 많은 고민을 해야했습니다. 그렇게 고민을 하다가 내린 결론은 생각보다 당연한 것이었습니다.

“사람은 혼자서 살아갈 수 없다”

사람은 혼자서 살아갈 수 없기 때문에 서로 돕고 살아야 한다는 것이었습니다. 제가 굉장히 착해서도, 제가 굉장히 건강해서도, 제가 사명감에 불타고 있어서도 아닌 그저 사람이기에 이일을 해야 했었다는 생각이 들었습니다.

어릴 때 수 많은 이야기를 듣습니다. “착하게”, “바르게”, “옳게” 살아야 한다고 배웁니다. 하지만 나이를 들어갈 수록 사회 생활을 할 수록 “나만”, “우리 가족만”, “내 사람만” 이라는 감정들이 하나 둘 들었었습니다. 하지만 이번 기증 과정을 통해 스스로를 다시 돌아보고 어떤게 사람이 살아가는 모습인지 다시 한번 생각하게 되었습니다.

기증자를 찾는 일은 참 어려운 일이라는 이야기를 들었습니다. 그런데 이렇게 기증 대상자를 찾을 수 있고 기증자가 될 수 있었던 것은 저에게 어쩌면 큰 행운이 아니었나 생각합니다.

주변분들과 이야기 하던 부분 중 가장 기증을 꺼려하시는 이유가 바로 두려움이었습니다. 제대로 알 수 없었고, 부풀려진 이야기들에 공포를 느끼고 있었습니다. 하지만 누구나 견딜 수 있는 공포였으며, 누구나 견딜 수 있는 고통이었습니다. 하나의 약속이 하나의 삶을 바꿀 수 있다고 생각하면 감수할만 한 것 아닐까라는 생각이 들었습니다.

 

이 후기를 읽으시는 분들이 알 수 없는 그저 막연한, 그 두려움에서 벗어나 기증에 참여하고 멀리는 모르는 누군가의 건강을, 가까이는 내 가족의 건강을 도울 수 있는 조혈모 세포 기증 등록을 통해 건강한 사회가 되었으면 하는 바램으로 후기를 마치겠습니다.