주인이 죽었을 때 작동하는 프로그램

자신이 죽었을 때 컴퓨터 안의 내용을 모두 지워버리는 시스템은 영화나 만화에서 가끔씩 보이는 탐나는 물건이다(데스노트에서 와타리가 죽을 때 키라 수사본부의 모든 데이터를 날리는 것을 생각해보자).
아마 많은 사람들이 자신의 부끄러운 자료(예를 들면 SNS에 올리는 글이라든가)들을 지워버리고 죽고 싶어 할텐데 트리거가 작동되면 뭔가를 작동하게 만들기만 하고 그 트리거는 주인이 죽었을 때 작동되는 게 전부인 의외로 간단한 시스템이다.

문제는 그 트리거가 주인의 죽음을 어떻게 탐지하냐는 것인데 나는 생체신호 탐지기 같은 걸 만들 능력이 없으니까 컴퓨터를 만지는 사람다운 발상을 해봤다.
요즘 사람들은 전자기기를 2개 이상은 가지고 다닌다. 그 기기에서 서버로 일정 시간마다 시그널을 보내고 서버에서는 일정 시간이 지나도록 시그널이 오지 않으면(즉 모든 기기가 일정 시간 이상 꺼져 있으면) 주인이 죽었다고 판단하고 트리거를 작동하면 된다. 그래서 심심풀이로 중2병스러운 프로젝트를 시작해보려고 한다.

이 프로젝트에는 크게 보면 두 가지 요점이 있는데 일단 각 기기에서 시그널을 날릴 때 주인이 살아있다는 게 확실해야 한다.
스마트폰에서 그냥 일정 주기마다 시그널을 날리는데 사용자가 암호를 걸지 않는다면 누군가가 주워서 그냥 사용하다보면 시그널이 계속 발생하게 된다. 하루에 한 번 자체적으로 암호를 묻는다던지 어떤 대책이 필요하다.
또 서버에서는 외부 디바이스가 가짜로 시그널을 날리지 못하도록 대책을 세워야 한다. 각 디바이스를 등록할 때 비밀 토큰을 준다던지 해야 한다.

또 하나는 트리거가 작동을 했을 때 실행할 기능들인데 SNS의 글을 삭제하거나 하는 것은 서버에서 해주면 되지만 하드의 데이터를 날리는 건 결국 서버에서 각각의 기기들에게 특정 신호를 보내주는 방식을 써야 한다. 이것 역시 서버가 시그널을 받는 것과 마찬가지로 클라이언트에서도 서버를 신뢰하게 해줄 무언가가 필요하다.

요악하자면 대충 이렇다.

  • 사용자가 가진 기기(type A)들은 서버에 일정 주기마다 신호를 보낸다.
  • 신호가 일절 오지 않는 상황이 일정 시간 이상 계속되면 서버는 사용자가 죽은 것으로 판단해 트리거를 작동시킨다.
  • 서버는 가짜 시그널을 감지할 수 있도록 클라이언트(Type A)를 신뢰할 수 있는 인증수단이 있어야 한다.
  • 데이터 폭발을 실행하는 클라이언트(Type B)들도 역시 서버에서 사용자가 죽었다는 알림을 받았을 때 서버를 신뢰할 수 있는 인증수단이 필요하다.

추가적으로 한국에선 이런 것도 필요하겠다.

  • 병역임무를 수행하고 있는 2년간은 전자기기를 사용하기 어려우므로 대책이 필요하다.

누군가를 가르칠 때 나는 이렇게 한다

예전에 잠깐 학원에서 일해본 경험으로는 일단 누군가를 가르칠 때는 잘 따라오나 확인하는 게 중요하다.
보통은 “모르는 게 있으면 중간에 언제든 물어봐도 좋아”라고 (주로 선생님들이) 자주 얘기를 하지만 경험상 다들 모르면 가만히 있지 물어보지는 않는다. 나 때문에 수업 끊기는 거 아닌가 하는 생각도 있을테고 인간은 귀찮은 걸 싫어하니까 1:1 과외라고 해도 그냥 모른 채로 넘어가게 된다. 난 그래서 “중간에 언제든지 물어보세요”보다는 가르치는 중간마다 자꾸 “혹시 여기까지 하면서 어려운 부분 있었어?”라고 물어본다. 이렇게 직접 물어보면 상대적으로 잘 대답한다. 중간에 끊고 먼저 질문하는 건 귀찮지만 내가 물어볼 땐 예든 아니오든 귀찮음의 정도가 비슷해서 그런 거 아닌가 싶다.
다만 이 방법은 학생의 수가 5명이 넘어가면 쓸 수가 없다. 그나마 10명 이하라면 쉬는시간을 잠깐 만들어서 “방금 전까지 한 내용이 어렵거나 하지는 않았나요?”하고 몇 명에게 물어볼 수는 있다. 30명이 넘어가는 교실이라면.. 난 모르겠다.

그리고 비유를 많이 한다. 컴퓨터 특성상 추상적인 개념이 많은데 전공자와 대화를 할 때는 그냥 대화를 하면 되지만 나는 주로 비전공자가 이쪽 분야에 대해 궁금해서 물어보는 경우가 많기 때문에 일상적인 일에 비유를 해서 설명하면 꽤나 빠르게 이해한다.

난 교육쪽 전공도 아니고 예전에 학원에서 잠깐 일했던 거랑 학교에서 후배들을 가르치는 정도가 전부라 이 방법이 어떤식으로 영향을 끼치는지는 모른다. 하지만 내 경험으로는 이렇게 하면 효과가 좋았다.

웹에서 입력창에 마법을 부릴 때 접근성이 훼손되면 싫다.

나는 마우스를 쓰는 걸 엄청 싫어해서 브라우저에도 pentadactyl1이라는 플러그인을 설치해서 쓴다. 이 플러그인은 웹 접근성이 떨어질 수록 이상하게 작동하는 문제가 있다. 예를 들어 코드 편집을 할 때 자동으로 인덴트를 해주는 경우 엔터가 두 번 입력된다든가.

하지만 오늘 WordPress의 CSS를 수정하다가 굉장히 짜증나는 걸 발견했다. 코드 하이라이팅을 해주기 위해 textarea에 입력하는 값들을 모두 후킹해서 화면 위에 덮어씌워진 pre태그 안에 쑤셔넣는다. 그래서 textarea는 비어있게 된다.

Pentadactyl은 vim 사용자를 위해 텍스트 입력중에 C-t를 누르면 그 입력창을 vim처럼 쓸 수 있게 해준다. hjkl로 이동도 되고 비주얼 블럭도 잡힌다. 그런데 CSS 편집중에 이 기능을 사용하지 아무런 입력도 되지 않고 이동도 되지 않아 개발자 도구를 꺼내서 이런 마법을 부려놓은 걸 알아냈다.
C-i를 누르면 입력창의 내용을 임시파일로 복사한 후 외부 편집기로 열어주는데 역시나 빈 내용 뿐이었다.
워드프레스는 웹 접근성을 엄청나게 따지고 접근성을 훼손하는 경우에는 접근성모드라는 것을 제공한다. 하지만 플러그인 제작자는 그럴 의무가 없다. 그래서 나는 불편을 겪고 아마 시각장애인들도 불편을 겪을 것이다.

요즘 웹을 한다는 어린 개발자들을 보면 접근성에 대해 말할 때 “그냥 잘 보이기만 하면 되지 그런 걸 왜 고려해요?”라고 말하는 사람들이 있다. 심지어 학교에서 HTML을 가르칠 때도 h1~6 태그의 의미를 가르치지 않고 그냥 글자 크기를 키워주는 태그라고 가르친다. 저렇게 가르칠 거면 차라리 가르치지 말았으면 하는 생각이다.


  1. http://5digits.org/pentadactyl/에서 제공하는 플러그인인데 Vim 사용자라면 꽤나 익숙하게 mouseless 브라우징을 할 수 있다.
    vimparator라는 플러그인이 더 유명하지만 이건 기능이 다양하지 않아서 Geek들은 pentadactyl을 더 좋아한다.