비밀번호 관리

나를 비롯한 수많은 사용자들은 두세가지의 비밀번호를 가지고 여러 웹사이트를 관리한다. 이는 순전히 편의성을 위해서이며 만약 어떤 웹사이트가 특수문자와 같이 좀 특별한 것을 요구할 경우 첫 글자를 대문자로 시작하거나 마지막에 느낌표를 붙히는 간단한 방법으로 넘어간다. 사실 이 방법은 비밀번호 보안에는 매우 해롭고 꼭 고쳐야 되는 습관이다.

비밀번호의 보안에는 두가지가 중요한데 첫번째는 복잡성이다 (엔트로피). 가장 단순하게 비밀번호를 푸는 방법으로는 무차별 대입 (Brute-Force) 방법이 있는데, 만약 비밀번호가 4자리 숫자라면 0000부터 9999까지 전부 대입하는 것을 의미한다. 웹사이트들은 주로 캡챠나 대기시간을 두어 무차별 대입법에 시간이 엄청나게 소요되게 만듦으로써 막는다. 이는 매우 효과적이지만 너무 이것을 믿으면 안된다. 몇년전 크게 이슈화 됐던 할리우드 아이클라우드 사진 유출 사건도 해커가 유명인의 이메일을 입수한 뒤 무차별 대입방법으로 비밀번호를 찾아내어 일어난 일이라고 알려져있다.

비밀번호를 복잡하게 만드는 방법은 두가지가 있는데 첫번째는 길이고 두번째는 문자의 종류이다. 다만 특수문자, 숫자등을 포함시켜서 문자의 종류를 늘린다면 사람으로서는 햇갈리기 때문에 단순한 단어들의 조합으로 간단하지만 길게 만드는 방법을 전문가들은 추천한다. 이 경우 쉽게 기억이 되기 때문에 여러 웹사이트에서 까먹지 않고 쓰일 수 있다.

Password Strength

비밀번호 보안의 두번째는 중복성이다. 비밀번호 중복의 문제점은 하나가 해킹되면 다른 하나 역시 뚫린다는 문제이다. 하지만 비밀번호가 중복은 원칙적으로는 문제가 없다. 사이트는 비밀번호를 그대로 저장하지 않고 salt와 hash라는 방법을 이용한다. Hash를 간단히 설명하자면 문자열로 부터 랜덤한 문자열를 얻어내는 방법이라고 생각하면 된다. 입력값이 같다면 결과는 언제나 동일하지만, 다른 입력값으로 같은 결과를 얻어내기는 불가능하며, 결과를 보고 입력값을 추측하는 것도 불가능하다. 회원이 웹사이트를 가입할 때 서버는 랜덤한 문자열(salt)를 만들어내고 salt와 비밀번호를 둘 다 hash함수에 집어 넣고 결과값을 구한다. 이 salt와 hash 결과값을 비밀번호 대신 서버에 저장한다. 나중에 회원이 로그인 할 경우 입력된 비밀번호와 salt를 hash 함수에 집어넣어 저장된 hash와 값이 다른지 같은지 비교를 통해 비밀번호가 맞은지 틀렸는 지를 확인한다.  hash함수는 입력값이 다르면 출력값이 다르기 때문에 (collision이 거의 불가능 하다) 맞는 비밀번호가 아니면 hash값이 같을 수 없다. 이런 방법으로 비밀번화 관리를 할 경우 서버에는 비밀번호 평문(plain text)은 저장되지 않기 때문에 나중에 데이터베이스 유출이 되더라도 비밀번호 유출의 문제는 없다. 즉  password123이 유출이 되는 것이 아니라  p!dfE3[dE와 같은 의미없는 hash값이 유출이 된다.

하지만 이 방법은 웹사이트 내부의 방법이기 때문에 개인 유저의 경우 웹사이트가 hash를 사용해 비밀번호를 저장하는지 평문 그대로를 저장하는지 아는 것은 불가능하고 설마 그대로 저장하겠어 라는 믿음 하나로 살아야 된다. 만약 평문으로 저장되고 이것이 유출 된다면 거의 모든 웹사이트들이 해킹당하는 위험이 있다. 비밀번호가 아무리 복잡하도 평문이 유출된다면 다른 웹사이트의 해킹은 식은 죽 먹기이다.

작년에 일어난 Cloudbleed 사건은 서버가 비밀번호를 hash를 통해 저장했음에도 불구하고 cloudflare의 문제 떄문에 평문이 유출되는 사건이 일어났다. 뿐만 아니라 만약 인터넷 통신이 암호화 되어있지 않다면(http) 비밀번호는 그대로 패킷에 담겨 보내지게 되고 이 역시 위험하다.

결국 비밀번호를 가장 안전하게 쓰는 방법은 적당히 길고 복잡한 비밀번호를 사이트들 마다 다르게 사용하는 것이다. 물론 사이트마다 비밀번호를 다르게 사용하는 것은 실질적으로 매우 힘들며 따라서 비밀번호 관리자를 사용하여 해결한다. 크롬을 쓸 때 비밀번호를 저장하는 것도 비밀번호 관리자로 볼 수 있다. 이 경우 비밀번호는 아무거나 막쳐도 기억은 관리자가 해주기 때문에 문제가 없다. 하지만 비밀번호 관리자의 가장 큰 문제는 관리자가 해킹당할 경우 모든 비밀번호가 유출이 될 수 있다는 것이고 실제로 1Password라는 비밀번호 관리자 사이트는 Cloudbleed 사건에 영향을 받았다.

어떤 사람들은 비밀번호 끝에 로그인 사이트 이름을 붙혀서 관리하라고 한다. 예를들어 구글에 로그인 할경우 pass123google, 페이스북에 로그인 할 경우 pass123facebook. 이 방법의 문제점은 비밀번호가 사이트마다 다르긴 해도 사람이 보기만 하면 바로 다른 웹사이트의 비밀번호를 알아낼 수 있다는 점이다.

해결 방법은 간단하다 pass123google을 hash 함수에 집어넣고 이를 비밀번호 평문으로 사용하면 된다. 이 결과물은 pass123facebook의 결과와 무척 다르기 때문에 해커가 비밀번호 평문을 얻어 내었다고 해도 이것 자체가 hash기 때문에 다른 비밀번호를 추측해내기는 불가능하다.

아래는 내가 만든 hash 비밀번호 생성기이다. 마스터 비밀번호와 웹사이트 url을 집어넣으면 두 문자열을 합친뒤 SHA3 512 함수에 집어넣어 얻은 결과를 약간의 refining을 통해 출력하고 이 비밀번호를 로그인시 사용하면 된다. hash 함수는 클라이언트에서 계산이 되기 때문에 어떤 정보도 밖으로 새지 않아 안전하다. 입력값이 같으면 결과는 언제나 동일하기 때문에 마스터 비밀번호를 까먹지 않는한 잊어버릴 수 없다.

https://jjhoon713.github.io/hashedpassword/

가재수프

홍콩 맥도날드에서는 가재수프를 판다 영어로는 crayfish soup.

솔직히 맥도날드에서 수프를 파는 것도 이상하고 걸죽한 갈색의 수프를 파는데 이상하잖아, 그래서 한번 꼭 먹어보고 싶었는데, 이게 먹어보니까 맛이 있더라고, 냠냠. 아무튼 먹을만 하다. 이제 다시 안파는거 같음 근데

타자 습관

한번도 눈치를 못채다가 얼마전에 알게 된 사실이 있는데 바로 내 타자 습관에서 오른 손이 독수리 타인걸 알게 되었다. 사실 키보드를 안보고 치기 때문에 별로 생각을 안했는데 보니 오른쪽은 거의 전부 검지로 해결을 한다. 이 정도만 해도 사실 400타는 나오지만 문제는 버튼의 위치를 손목의 감으로 찾기 때문에 키보드가 바뀌면 오타량이 엄청나게 늘어난다. 영타도 어깨에 힘주고 집중해야지 겨우 300타가 되는 수준이다. 그나마 한글은 자음 모음이 따로 배열되어 있어서 자음을 치는 동안 오른손 검지 손가람이 모음을 찾아갈 시간이 있지만, 영어의 경우 오른손을 연속으로 쓰는 경우도 많기 때문에 약간 속도가 더딘다.

많이 늦었지만 습관을 다시 고쳐 잡아서 영한 둘다 500타를 넘겨보도록 하자.

pebble-instaApp

원래 나는 페블에 아무런 어플을 깔지 않았다. 아무래도 시계 배터리가 그리 크지 않기 때문에 이것저것 넣다보면 배터리가 빨리 달기 때문에 하지 않았는데, 페블로 인스타그램을 볼 수 있는 어플이 나와서 받아 보았다.

어플 스크린샷1       어플 스크린샷2

다만 인스타그램은 third-party application을 지원하지 않기 때문에 사진을 받아오는 것은 전부 외부 서버를 통해 받아와야 되며, 그 경우 사실상 비밀번호와 아이디가 외부 서버로 보내지기 때문에 보안의 문제가 있어서 개발자는 어플과 서버 둘다 오픈소스로 올려놓았다. 대충 보았을 때 비밀번호와 아이디는 저장하지 않고, 한번 로그인 한뒤 생긴 쿠키를 저장하는 것 같다.

못 믿는건 아니지만 그래도 서버가 있는 겸 해서 내가 직접 돌리는게 마음 편하니까 직접 돌려보기로 마음먹었다.

하루종일 이걸 뭘로 돌린건가 고민하다가 나중에 보니까, 클라이언트와 서버를 둘다 하나에 통째로 넣어서 햇갈린 것이었고, server폴더와 server_bottle둘다 같은 기능을 하는 것이여서 몰랐던 것이였다. 가장 최근에 변경된 server_bottle을 다운 받은 뒤, 약간의 수정으로 ssl를 추가하게 만들었다.

https://github.com/jjhoon713/instapp 사실 내 실제 코드는 이거랑 약간 다르다, 디렉토리 추가하는 코드가 server_bottle/insta.py에 두줄 더 들어가 있다.

참고한곳:

https://www.digitalocean.com/community/tutorials/how-to-deploy-python-web-applications-with-the-bottle-micro-framework-on-ubuntu-14-04

http://www.socouldanyone.com/2014/01/bottle-with-ssl.html

HTTPS로 업데이트

아니 뭐 개인 일기장을 암호화해서 뭐해라고 물어본다면 딱히 할말은 없지만,

Let’s Encrypt 덕분에 무료로 인증서를 받을 수 있으면서 10분이 아깝다고 암호화를 하지 않는다는 건 말이 안되지 않을까?

아무튼 모든 홈페이지는 암호화 해야된다.

MOOC 강좌 후기

예전부터 마음만 있다면 학원 다닐 필요 없이 책으로 모든걸 배울 수 있게 되었다. 사실 서점에 수많은 책들은 깊이가 있어서 컴퓨터공학이라던지 유기화학이라던지 전부 강의 없이 책으로도 충분한 지식을 얻을 수 있다. 요즘에는 책도 필요없이 이런 지식을 인터넷으로 공짜로 뿌리는 시대가 되었는데 이 MOOC(대규모 온라인 공개 강의)를 통해서 집에서도 쉽게 수업을 들을 수있게 되었다. 근데 영어 못하면 안댐

대학교를 자퇴하고 새로 들어오면서 많은 MOOC 강좌를 듣기 시작했다. 신입생때 첫 학점을 높게 받아 장학금을 타겠다는 마음가짐을 가지고 있어서 쉬운 수업으로 13~14학점만 듣다보니 학기 내내 시간이 많이 남았는데, 학점을 높게 받아야 돼서 놀지는 못하고, 쉬워서 공부는 하기 싫고 하다보니 MOOC 강좌를 찾아서 듣게 되었다. 주변 여러 사람들이 MOOC에 대해 관심을 갖는 걸 보고 내가 여태까지 들었던 강좌를 정리해야할 필요성을 느껴서 후기를 적어보도록 하겠다.

A. KHAN ACADEMY

가장 처음듣기 시작했는데, 칸은 정말 정말 친절하게 가르치고 이해가 정말 잘된다. 하지만 수업의 깊이가 너무 얕고 수준은 고등학교에서 아무리 높게 잡아도 대학교 1학년 약간 아래이다. 딱 하나 추천할게 있다면 computer science 부분에서 algorithm과 journey to cryptography 부분인데 관련 배경지식이 단 하나도 없다면 보는게 좋다. 정말 재미있고 다큐맨터리 식으로 영상이 있어서 진짜 편하게 듣기만 해도 좋다. 딱 지식채널e 정도 느낌으로 들으면 좋음. 배경지식이 있으면 넘기자.

B. COURSERA

코세라는 무크 사이트중에서 가장 많은 학생수를 보유하고 있는데 은근 뒤져보면 수업 들을 만한걸 찾기가 힘들다. 마치 넷플릭스에서 무슨 영화 볼지 10분 동안 고민하는 느낌. 돈을 내면 인증서 발급이 가능하지만 나는 순수하게 학문을 추구하기 때문에 돈을 내지 않았다.

1. Machine Learning

코세라를 만든 앤드류 응이 가르치며, 코세라의 가장 첫 강의라고 들었다. 참고로 앤드류 응은 바이두(중국의 구글)에서 과학연구 최고 책임자를 맡고있다. 11주차의 혜자스로운 과목이고 개인적으로 코세라에서 꼭 들어야하는 강의라고 생각한다. 이 강의는 머신러닝의 기초를 훑어주며 심지어 매트랩 라이센스를 주면서까지 과제를 하라고 주는데 어렵지는 않고, 컴공이 아닌 수학과라면 코딩 없이 강의만 열심히 들어도 도움이 될 것 같다. 근데 수학과도 맽랲쓰지 않나. 전체적으로 천천하게 자세히 설명하기 때문에 기초를 제대로 쌓기에 도움이 된다. 코딩보다는 수학능력이 더 중요하지만 어려운건 없음. 우리학교 어떤 학부연구 중에서는 이 수업을 지목하면서 이 정도 백그라운드는 있어야 연구가 진행된다고 말을 함. 이 수업을 들으면 왠지 지구의 모든 문제를 머ㅡ신러닝으로 해결할 수 있을 것같은 자신감이 듬.

2. Cryptography I

II는 이번년도 7월달 예정. 응신러닝 다음으로 꼭 들어야하는 강의, 나는 칸 아카데미에서 쉽게 한번 듣고 와서 약간 이해하는데 어렵지 않았다. 수업은 전체적으로 레벨이 높고, 역시 수학이 훨신 더 중요한 강의이다. 사실상 하나도 거르지 않고 암호학의 기본을 수학적 기초부터 가르치는데 필기를 같이하면 정말정말 도움이 됐겠지만, 난 하지 않았다. 중간 중간 코딩 선택과제가 있긴했는데 하지는 않아서 어떤진 모르겠다. 학교 교수님과 잠깐 대화할때 이 강의에 대해 말을 꺼냈는데 정말 좋은 교수라고 말씀해 주셨다. 이 수업을 들으면 왠지 지구의 모든 문제를 암호화로 해결할 수 있을 것 같음.

3. Full Stack Web Development

프론트엔드부터 백엔드까지 전부 자바스크립트로 끝내는 강의 묶음이다. 링크에 들어가면 강의 제목이 있는데 강의 제목을 다시 검색해야 각 강의를 무료로 들을 수 있다. 각 강의는 4주로 짧아서 개발하는 걸 깊게 배우기는 힘들지만 얇고 넓게 배우기에는 좋다. 뭔가 만들고 싶고 앵귤러js라든지 몽고db라든지 노드js라든지 뭔가 들어는 봤는데 진짜 뭘 어떻게 해야하는지 단 하나도 모를때 들으면 좋다. 다만 수업이 정말 재미없고 억지로 듣는 기분이 강하게 든다. 수업은 이론 부분과 연습부분으로 나뉘는데 이론부분은 정말 재미가 없고, 연습부분은 동영상에 코드 따라쓰기를 하는데 쓸데없이 시간이 정말 오래 걸린다. 왠만하면 추천을 하지 않겠지만 이 수업 덕분에 DB쪽 프로그래밍을 배워서 어플 서버 개발에 너무 잘썻기 때문에 도움이 안되었다고는 말하기 힘들다. 이 강의 묶음을 마치면 그냥 간단한 웹사이트가 아니라 dynamic한 웹사이트를 만들 수 있다!! 로그인 로그아웃, 글쓰기 기능 등등등. 근데 재미없어서 중도 포기율 95프로는 될듯.
참고로 우리학교 내가 수업 들은 교수님이 진행함.

4. Introduction to Game Development

MSU에서 진행하고 유니티로 게임 만드는 법을 배운다. 쓸데없이 자세한것 같지만 유니티를 처음 만져보는 입장에서는 되게 좋은 강의이다. 딱 유니티의 기본 까지 익힐 수 있고, 강의가 끝나면 간단한 게임을 만들고 끝나지만, 다른 모든 컴퓨터언어와 비슷하게, 제대로 익히려면 직접 게임을 만들어보는게 좋다. 많이 도움이 됨. 과제 제출은 귀찮으니까 안하고 동영상만 따라하는 걸 추천. 방학동안 1주일만에 쑥쑥 들으면서 끝냈는데 딱 그정도 하면 이제 구글에 검색하면서 게임을 만들 수 있을 것같다.

그외 코세라에서 사진관련, 게임이론, 이미지 프로세싱쪽을 듣었/듣고 있는데 게임이론, 이미지 프로세싱은 아직 끝나지 않아서 할말이 없고, 교양 부분은 사진 빼고 들은게 없어서 어떤지 모르겠다. 연세대에서 한국어 가르치는 수업이 있는데 한번 들어보면 재밌을 듯

C. UDACITY

어제 처음 가입해서 뭐가 뭔지 잘 모르겠음. 유다시티는 컴퓨터 공학 관련 강의만 가르치며 특히 개발쪽으로 깊게 가르친다. 실무에 도움되는 걸 많이 가르치고 취업보장 프로그램이 잘팔리는 거 같음. 여기는 오히려 무료 강의 보다 유료 강의가 더 호기심이 든다. 특히 머신 러닝쪽으로 제대로 가르치는 거같아서 흥미로움.

1. Deep Learning

구글의 어떤 개발자가 올린 강의, 파이썬과 텐서플로우를 이용해서 가르쳐준댄다. 오늘 처음해서 어떤진 모르겠는데, 이번 학기 학부과제로 딮러닝 관련 연구를 해야하는데 파이썬도 모르고 텐서플로우도 뭔지 몰라서 듣기 시작함. 20학점(프로젝트2수업)+1학점(학부연구)에다가 과외 일주일 5시간에 무크까지 들으려니 이번학기는 힘들듯. 부대찌개 먹고싶다.

D. edX

하나도 안들어봐서 모름. 왠지 당장 꼴리는게 없음. 뭔가 다 어느정도 아는 내용이고 특히 개발쪽은 잘 알아서 딱히 선택할게 없다. 아직은 안듣고 응신러닝 끝나면 관련 분야 좀 깊게 들어간거 여기랑 코세라랑 뒤져봐서 하나 찾아서 들을듯.

 

디자인쪽 insight좀 기르게 그쪽이나 아니면 아두이노나 라즈베리파이 관련해서 iot쪽도 하고싶은데 NLP도 하고싶은데 적당한 강의 찾기도 힘들고 시간도 촉박하다.

워드프레스 업데이트 오류

문제:

워드프레스를 4.7로 업데이트 하려니

[su_quote]Another update is currently in progress.[/su_quote]

라면서 진행이 되지 않는다.  중요 업데이트가 자동으로 되는 것을 막기 위해 있다는 것인데, 알아낸 유일한 해결 방법은 mysql에 접속해서 해당 옵션을 제거하는 것이다.

해결 방법:

(우분투 16.04에서 한 방법임)

워드프레스가 있는 서버를 SSH로 접속하자.

mysql -u root -p

를 입력한 뒤 mysql 비밀번호를 입력해주자.

[su_note note_color=”#f5f5b5″] 아래에 wordpress는 자기에 맞는 데이터베이스를 적어 넣어주자[/su_note]

use wordpress;

를 적어 db를 옮기고

select * from wp_options where option_name = 'core_updater.lock';

을 통해서 해당 옵션이 존재하는 지 확인한 뒤,

delete from wp_options where option_name = 'core_updater.lock';

을 넣어 해당 옵션을 제거해 주자.

exit

으로 mysql을 나간 뒤, 아무런 재시작 없이 워드프레스 업데이트를 누르면 진행이 된다.

다음과 비슷한 에러가 뜬 다면 아래 방법으로 해결하자. 

[su_quote]The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.: wp-admin/includes/update-core.php[/su_quote]

내 경우에는 에러가 더 생겼는 데, 이는 워드프레스 디렉토리 권한 때문에 생긴 것이다.

[su_note note_color=”#f5f5b5″] 아래에  /var/www/html에는 자기에 맞는 디렉토리를 적어 넣어주자[/su_note]

cd /var/www/html

을 통해 워드프레스가 설치된 디렉토리로 가자. 이 디렉토리는 wp-config.php가 있는 디렉토리이다.

sudo chown -R www-data:www-data .

을 통해서 권한을 새로 준 뒤 다시 업데이트를 해보자. 이번에도 재시작은 할 필요 없다.

[출처]: http://wordpress.stackexchange.com/questions/224989/get-rid-of-another-update-is-currently-in-progress

배점에 대한 고찰

  1.  초등학교 때 부터 대학교 때 까지 우리의 성적을 평가 받는다. 이 성적은 다양한 활동을 가지고 평가받는데 주로 필기 시험이 60~80퍼센트를 차지하고 나머지는 출석, 과제(수행 평가)등으로 채워진다. 각각의 weight은 교수(선생)가 판단한 중요도나 난이도를 가지고 매겨진다. 예를 들어 중간고사는 30퍼를 차지하고, 전체 범위인 기말고사는 40%를 차지하며, 큰 프로젝트는 20%, 작은 과제는 10%를 주는 등으로 이루어진다.
    Grading Scheme
    COMP2711의 Grading Scheme

    거의 모든 수업은 시험이 다음과 같이 매겨진다. 예를 들어 중간고사를 100점 만점에 70점을 맞았고, 기말을 80%, In-class Participation 만점, 퀴즈 만점의 경우
    [latex]\frac{30}{100}*(70)+\frac{40}{100}*(80)+\frac{10}{100}*(100)+\frac{20}{100}*(100)[/latex]
    으로 평가된다. 이는 절대평가의 경우 아무런 문제가 되지 않지만, 만약 상대평가일 경우 문제가 된다.

  2. 작년에 LIFS1901 수업을 들은적이 있다. 이 수업은 일반 생물학 수업이였고 난이도는 그렇게 어렵지 않았다. 중간고사가 50%, 기말고사가 45%, 퀴즈가 5%의 특이하다고 하면 특이하고 평범하다고 하면 평범한 그저 그런 강의였다.
    문제는 두 시험의 난이도가 확연하게 차이에서 나타났다. 중간고사는 책에 나온 문제들이 그대로 나온 바람에 50점 만점에 평균 40점이 나왔으며 표준 편차는 주어지지 않았지만 꽤나 작았을 것이라고 예상 된다. 그 반면에 기말고사는 45점 만점에 평균 17.7, 표준 편차 8.7로 나왔다.
    이 강의는 상대평가제도이기 때문에 내 절대적인 점수보다는 다른 학생에 비해 얼마나 잘했는 지, 못했는지에 따라 성적이 나오는데 모두가 중간고사를 만점에 가깝게 받았고, 기말고사는 엄청난 편차를 보이며 낮은 평균을 보여주었다면, 거의 기말고사 하나로 모든 성적이 결정된 것이다.

    LIFS1901 Grade
    LIFS1901 Grade

    물론 45% 비중의 기말고사의 만점이 45점이고 50% 비중의 중간고사의 만점이 50점이기 때문에 각 시험의 1점은 동일한 비중을 가지고 있지만, 시험 전체로 보았을 때 당연히 성적에 대한 영향력은 기말고사가 더 크게 가지게 되었다.

     

  3. 이러한 문제점은 시험 비중 시스템 그 자체에 문제가 있다. 당연히 이 방법이 교수(선생)에게는 성적을 주기에 쉬운 방법인 것은 부정할 수 없으나, 어떤 면에서는 공정하지 못하다고 볼 수 있다.
    몇년전에 친 국제 생물 올림피아드 대회에서는 특이한 방법으로 성적을 계산했다. 통계를 배우지 않았고, 친구가 한 설명이 정확히 기억이 나지는 않지만 다음과 같은 방법으로 계산했지 싶다. 실험 시험의 경우 4개의 실험이 있다. 전체 학생의 각 실험의 점수를 가지고 표준편차와 평균을 구한 뒤 모든 시험을 같은 분포로 만들어 모든 시험이 같은 영향을 가지게 만들었다.

    예를 들어 각 시험 1,2,3,4와 학생 A,B,C를 다음과 같이 나타내 보자.

    시험 1: {10,20,30}
    시험 2: {40,60,20}
    시험 3: {7,6,5}
    시험 4: {1,2,3}

    물론 실제로는 제대로된 통계적인 방법을 쓰지만 대충 아래와 같은 방식이다.

    시험 1의 경우 평균 20을 빼고 분포 10으로 나누어서 {-1,0,1}로 만든다. 나머지 경우도 동일하게 진행하게 평균과 분포를 구해서 원점수를 변환점수로 바꾸어 준다.

    시험 1: {-1,0,1}
    시험 2: {0,1,-1}
    시험 3: {1,0,-1}
    시험 4: {-1,0,1}
    이렇게 만든 뒤 총점을 계산하면
    A는 -1
    B는 1
    C는 0이 나온다.

    이런 방법을 쓸 경우 모든 시험이 동일하게 평가가 될 수가 있다. 즉 Grade를 내는 것 뿐만 아니라 성적 그 자체까지도 상대적으로 계산이 되어 더욱더 공정한 결과가 나오게 된다. 만약 평가자가 생각하기에 어느 시험을 더 큰 비중을 두고 싶다고 생각하면 그 시험에 좀 더 많은 퍼센트를 두면 된다. 예를 들어 위 예시를 들면, (시험 1 변환된 점수)x1.5 + (시험 2 변환된 점수)x0.5 + … 이런식으로 두면 된다.

  4. 물론 이런 방법으로 채점되는 것들은 많고, 그 예시중 하나가 위에서 말했던 IBO이다. 다른 올림피아드의 경우는 잘 모르겠지만 아무래도 학생의 실력을 변별력있게 봐야된다는 점에서 IBO는 이러한 방법으로 채점을 두는 것 같다.
    위 방법은 단순한 Feature Scaling과 Mean normalization을 통해 이루어 진 것이지만 당연히 더 제대로 된 통계적인 방법은 있을 것이다. 중요한건 이런 공정한 방법이 있지만 학교 시스템에서는 그 어느 곳에서도 이러한 방법으로 성적을 주지 않는다는 것에서 문제가 있다고 생각한다.

새로 시작함

여태까지 digitalocean으로 블로그를 호스팅하다가 매달 5달러가 아까워서 노트북으로 서버를 새로 만들었는 데 보니 학교 회선으로는 외부에서 접속이 되지 않더라

가을학기 끝나갈 쯤에 linode에서 새로 만들었다.