FreeBSD 6.0 코드 프리즈 임박

FreeBSD 6.0 릴리스를 위한 오랫동안의 열띤 토론 끝에, 이제 다음 주에 코드 프리즈가 시작됩니다. 구체적인 일정은 다음과 같이 잡혀 있는데, 물론 실제로 진행되다가 복병을 만나면 좀 늦어지겠죠. 🙂

  • 2005년 6월 10일: 피쳐 프리즈, 코드 슬러시 (약한 프리즈)
  • 2005년 7월 10일: RELENG_6 브랜치 (여기부터는 releng팀 승인이 있어야 커밋 가능)
  • 2005년 8월 1일: RELENG_6_0 브랜치 (6.0 릴리스 브랜치)
  • 2005년 8월 15일: FreeBSD 6.0 릴리스

광복절 기념 릴리스인가 보군요. 🙂

우울증의 인지치료


우울증에 대해서 좀 더 깊숙히 알아보고자, 우울증 치료에 관한 책을 샀습니다. 우울증에 대한 책은 서점에 정말 많이 있긴 했는데, 수필집쪽에 꽂혀있는 것들은 너무 피상적이고 다 극복한 사람들이 올챙이적 시절 모르듯 긍정적으로만 접근하고 있어서 이해가 된다기보다는 그냥 그런것도 있구나 정도 밖에는 볼 수가 없었습니다. 그래서 심리학쪽에 꽂혀있는 책들을 봤는데, 대체로 한 주제에 너무 집중해서 깊숙히 파고 있거나, 이상심리학 전체를 다루는 바람에 우울증 부분이 적거나 그런 편이라서, 적당한 것이 마땅히 없었는데 이 책은 적당히 원인과 현상, 치료 기법 등에 대하여 설명하고 있는 점이 괜찮았습니다. 🙂 저자의 성이 Kent Beck과 같다는 점도.. ^_^

소프트웨어를 주로 하는 프로그래머들은 직업 특성상 늘상 별 이유없이 낙천적인 경우가 많기 때문에, 우울증이 뭔지 잘 모르고 그냥 에러가 많이 났는데 잡을 시간이 없어서 우울한 것이나 비슷한 것으로 생각하기가 십상입니다. (물론 저도~) 그렇지만, 이 책에서 설명하는 것을 읽어보니 우울증은 그냥 에러 잡기 귀찮은 그런 것과는 좀 다른, 사고 과정 상의 연쇄작용으로 일어나는 복잡한 현상인 것이었습니다. 즉, 우울증이란 그냥 기분이 나쁜 상태라기보다는, 한가지 또는 여러가지의 자기에게 일어난 문제를 지나치게 확대하거나 다른 것을 잊어버린 채로 그런 문제점에 집중하거나, 부정적인 사고를 연속적으로 해서 결국은 왜곡된 심리에 휘말리는 사고 과정 같은 것이 계속 반복되어 객관적인 시각에서 자신을 보지 못하는 상태를 얘기하는 듯 합니다.

처음 시작은 아주 사소하게 자기가 빨래를 했는데 실수로 돈을 안 꺼내고 빨아서 1000원을 못 쓰게 됐다는 점을 자책하는 것으로 시작해서 그 문제를 확대해서 이 문제 저 문제 다 붙어서 결국은 “난 안돼” “살 가치가 없어” “난 주변사람들에게 해가 될 뿐이야” 정도까지도 발전이 돼서 자살소망단계까지도 갈 수 있다고 합니다. 물론 이런 일들을 객관적인 시각에서 보면 말이 안 되지만, 사고 단계마다 비약이나 왜곡을 약간씩만 더한다면 여러 단계가 거치면 그렇게 생각이 진행될 수도 있구나 하고 책의 예제를 보고 감정이입을 해 보니까 저도 그렇게 생각할 수도 있을 것 같네요.

여러가지 사고적인 것 뿐만 아니라, 우울증은 생리적인 문제로 인해 발생되기도 하는데, 시냅스간의 신경전달 물질이 부족한 경우, 논리 왜곡이 일어날 확률이 높다고 합니다. 그래서, 감정이 부족한 생활을 하던 사람들이 신경전달 물질의 부족으로 결국은 우울증의 악순환에 들어서는 경우가 많다고 합니다. 이런 경우 신경전달물질을 보충해 주는 리튬제가 상당한 빠른 효과가 있다고 하는데, 약물치료만으로 극복하는 경우에는 다시 비슷한 상황이 온다면 재발할 확률이 높기 때문에 가급적이면 인지적인 치료도 동반되어야 한다고 하는군요.

그래서, 인지적인 치료가 과연 어떤 것인가에 대한 내용이 이 책의 대부분의 내용을 차지하고 있습니다. 인지 치료는 다른 의학들처럼 물리적인 메카니즘을 분석하는 것이 아니라, 환자의 정신적인 사고 과정을 분석해서 악순환을 끊어서 객관적인 사고를 복구할 수 있도록 도와주는 소프트웨어적인 과정입니다.

따라서, 인지 치료에서는 먼저 환자가 왜 그런 사고 과정에 들어가게 되었는지를 주변 사람의 정보와 본인의 정보를 토대로 밝혀낸 다음에, 그 사고 고리를 스스로 반박할 수 있도록 유도하고, 결국은 원래의 생활에 복귀하여서도 그런 사고로 돌아가지 않도록 스스로 대처할 수 있는 여러가지 논리 기법을 숙련시켜 주는 것이 주가 되는 것 같네요. (책 안에서는 많은 우울증 환자들의 경우를 예시로 치료기법들을 설명해 놓았습니다.)

그런데, 우울증 치료에 있어서 주변 사람들이나 치료자의 대응이 기존의 상식과는 다른 점이 꽤 많이 있었는데, 예를 들면 환자에게 주변 사람들이 이유없이 게속 잘 해주려고 하는 것 또한 자책감으로 인한 우울증 환자에게는 “난 주변사람들에게 짐이 될 뿐이야”같은 심리를 자극해서 더 악화되게 만들 수도 있다고 하고, 환자의 상황을 파악하기 위해서 이런 저런 질문을 너무 많이 하다보면 자기 상황에 대한 수치심으로 또 악화되고.. 이런 상황이 여러가지 있다고 합니다. 즉, 우울증 환자를 접할 때에는 항상 자신의 행동이 오해를 불러일으킬 소지가 있는지 여러모로 생각해 보고 불명확한 해석이 있을 수 있는 부분에 대해서는 오해하지 않도록 부연 행동이나 설명을 해 주도록 명시적 행동이 필요하다고 합니다. 또 그런 행동이 너무 티가 나면 안 되겠죠~

현대 사회에서는 점점 사람과 사람 사이가 어떤 면에서는 고립되어 가고, 개인적인 시간이 늘어나면서 우울증이 뚜렷하게 증가하고 있다고 합니다. 우울증도 다른 것들과 마찬가지로 초기에 잡으면, 주변의 도움으로 어려운 경험없이 쉽게 잡을 수 있다고 합니다. 미리미리 공부해서 명랑 사회 만들어 나갑시다. -O-

조엘이 말하는 C를 배워야 하는 이유

최근에 화장실에서 힘쓰면서 읽을 책으로 조엘 온 소프트웨어 한국어판을 사서 읽다가, 조엘이 프로그래머는 C를 배워야한다고 주장에 대한 근거를 읽었습니다. (상당히 앞쪽에 있는데, 웹에서는 못 읽어봤었네용 므흐흐;)

전산과 신입생은 CPU부터 시작해서 C를 활용하는 데까지 차곡차곡 기초를 닦아야 합니다. 저는 솔직히 너무나도 많은 컴퓨터 관련 교육과정들이 자바가 가장 좋은 초보자용 언어라고 선전하는 현실에 질려 버렸습니다. 흔히 자바는 쉽고, 따분한 문자열이나 malloc과 같은 골칫덩어리를 다루는 과정에서 혼란을 겪지 않으며, 아주 큰 프로그램을 모듈로 나눠서 만들 수 있는 근사한 객체지향 프로그래밍 기법을 배울 수 있다는 화려한 이유들이 따라 나옵니다. 하지만 여기에는 교육적인 재앙이 있습니다. 졸업생들은 하향 평준화돼 러시아 페인트공 알고리즘을 여기저기에 만들어내며, 심지어 자신의 잘못을 인식조차 못할 겁니다. 펄 스크립트에서 이런 사실을 결코 볼 수 없을지라도, (물론 어렵지만) 기본적으로 문자열이 무엇인지 아주 깊은 단계에서 이해하지 못하기 때문입니다. 다른 이들이 뭔가를 잘하도록 가르치길 원한다면, 기초부터 시작해야 합니다. 이는 마치 태권소년과 비슷합니다. 마루바닥을 쓸고 닦고 쓸고 닦고, 이렇게 3주만 하면, 자연스럽게 목표물을 향해 발이 쭉쭉 뻗어나갑니다.

— 조엘 온 소프트웨어 (조엘 스폴스키)

참고: 여기서 “러시아 페인트공”이란 이 문단 앞에서 설명하던 O(N²) 알고리즘을 뜻합니다.

그동안 C를 모르고 하이레벨의 언어들만 다루는 프로그래머들이 흔히 오해하는 것들을 보면서, 기초를 위해서는 C가 아무래도 필요하지 않겠는가 생각은 해 왔지만, 뭔가 보수적이라는 생각에 아냐아냐 하고 부정도 해 봤었습니다. 그렇지만, 파이썬만 생각해 보더라도, 파이썬만을 아는 프로그래머라면 list.append, list.insert, str.__add__ 같은 것들이 사실 상 atomic operation처럼 느껴지기 때문에, 하부에서 일어나는 일을 일일이 달달 외우지 않고서는 쉽게 추측하기가 힘듭니다. 그 때문에, 결국은 비슷한 노력으로 코드를 짜더라도, C도 같이 하는 개발자들에 비해 훨씬 비효율적인 코드를 짜기가 일쑤입니다.

그런 면에서, 아무래도 입문은 자바나 파이썬 같은 언어로 하더라도, 결국은 바다 위에서 동동 떠다니지 않고 어딘가에 닻을 단단히 매서 흔들리지 않는 코드를 위해서는 C 같은 저수준의 언어를 배워야 한다는 것이 피할 수 없다고 생각됩니다. 같은 맥락에서 예전부터 매우 좋아했던 Larry Wall의 명언이 하나 생각납니다. 🙂

Real programmers can write assembly code in any language.
— Larry Wall

그래서 젊은 나이에 벌써 저수준과 고수준을 종횡무진하는 토끼군이나 디토군같은 분들을 보면 참 우리나라의 미래가 밝다고 느껴집니다. 🙂

젠투에서도 py-freebsd를 사용합니다

엊그제 Gentoo/FreeBSD 프로젝트 개발자 중의 한 명이 제게 메일을 보내 왔습니다. 그 내용은 Gentoo의 패키지 관리 툴이 아무래도 파이썬으로 되어 있다보니 파이썬으로 대체로 다 만들어야 하는데, 리눅스에는 없고 FreeBSD에만 있는 파일의 chflags 속성 관리를 위해서 원래는 자기들이 직접 패치한 것을 쓰고 있었는데, py-freebsd가 좋아서 바꿔보려고 한다는 말이었습니다. 🙂

뭐 다른 것은 다 괜찮은데, os.stat()에서 st_flags를 읽어오고 싶은데, 파이썬에서 제공을 하지 않는 속성이다보니 참 애매한 상황이라 이를 py-freebsd에서 제공해 달라는 것인데, 가만 생각해보니 py-freebsd에서 지원해 줄 수도 있겠지만 지원하게 되면 소스가 상당히 지저분해질 것 같아서 그냥 파이썬을 고쳐서 커밋해 주고, 그것 백포트 해서 쓰라고 답장을 보내버렸습니다. ;;

이제 Gentoo 소스에 import freebsd 없나 잘 봐 보세용. 이히히 =3=33

우울증의 인지치료


우울증에 대해서 좀 더 깊숙히 알아보고자, 우울증 치료에 관한 책을 샀습니다. 우울증에 대한 책은 서점에 정말 많이 있긴 했는데, 수필집쪽에 꽂혀있는 것들은 너무 피상적이고 다 극복한 사람들이 올챙이적 시절 모르듯 긍정적으로만 접근하고 있어서 이해가 된다기보다는 그냥 그런것도 있구나 정도 밖에는 볼 수가 없었습니다. 그래서 심리학쪽에 꽂혀있는 책들을 봤는데, 대체로 한 주제에 너무 집중해서 깊숙히 파고 있거나, 이상심리학 전체를 다루는 바람에 우울증 부분이 적거나 그런 편이라서, 적당한 것이 마땅히 없었는데 이 책은 적당히 원인과 현상, 치료 기법 등에 대하여 설명하고 있는 점이 괜찮았습니다. 🙂 저자의 성이 Kent Beck과 같다는 점도.. ^_^

소프트웨어를 주로 하는 프로그래머들은 직업 특성상 늘상 별 이유없이 낙천적인 경우가 많기 때문에, 우울증이 뭔지 잘 모르고 그냥 에러가 많이 났는데 잡을 시간이 없어서 우울한 것이나 비슷한 것으로 생각하기가 십상입니다. (물론 저도~) 그렇지만, 이 책에서 설명하는 것을 읽어보니 우울증은 그냥 에러 잡기 귀찮은 그런 것과는 좀 다른, 사고 과정 상의 연쇄작용으로 일어나는 복잡한 현상인 것이었습니다. 즉, 우울증이란 그냥 기분이 나쁜 상태라기보다는, 한가지 또는 여러가지의 자기에게 일어난 문제를 지나치게 확대하거나 다른 것을 잊어버린 채로 그런 문제점에 집중하거나, 부정적인 사고를 연속적으로 해서 결국은 왜곡된 심리에 휘말리는 사고 과정 같은 것이 계속 반복되어 객관적인 시각에서 자신을 보지 못하는 상태를 얘기하는 듯 합니다. 즉, 처음 시작은 아주 사소하게 자기가 빨래를 했는데 실수로 돈을 안 꺼내고 빨아서 1000원을 못 쓰게 됐다는 점을 자책하는 것으로 시작해서 그 문제를 확대해서 이 문제 저 문제 다 붙어서 결국은 “난 안돼” “살 가치가 없어” “난 주변사람들에게 해가 될 뿐이야” 정도까지도 발전이 돼서 자살소망단계까지도 갈 수 있다고 합니다. 물론 이런 일들을 객관적인 시각에서 보면 말이 안 되지만, 사고 단계마다 비약이나 왜곡을 약간씩만 더한다면 여러 단계가 거치면 그렇게 생각이 진행될 수도 있구나 하고 책의 예제를 보고 이해를 하게 되었네요..

여러가지 사고적인 것 뿐만 아니라, 우울증은 생리적인 문제로 인해 발생되기도 하는데, 시냅스간의 신경전달 물질이 부족한 경우, 논리 왜곡이 일어날 확률이 높다고 합니다. 그래서, 감정이 부족한 생활을 하던 사람들이 신경전달 물질의 부족으로 결국은 우울증의 악순환에 들어서는 경우가 많다고 합니다. 이런 경우 신경전달물질을 보충해 주는 리튬제가 상당한 빠른 효과가 있다고 하는데, 약물치료만으로 극복하는 경우에는 다시 비슷한 상황이 온다면 재발할 확률이 높기 때문에 가급적이면 인지적인 치료도 동반되어야 한다고 하는군요.

그래서, 인지적인 치료가 과연 어떤 것인가에 대한 내용이 이 책의 대부분의 내용을 차지하고 있습니다. 인지 치료는 다른 의학들처럼 물리적인 메카니즘을 분석하는 것이 아니라, 환자의 정신적인 사고 과정을 분석해서 악순환을 끊어서 객관적인 사고를 복구할 수 있도록 도와주는 소프트웨어적인 과정입니다. 따라서, 인지 치료에서는 먼저 환자가 왜 그런 사고 과정에 들어가게 되었는지를 주변 사람의 정보와 본인의 정보를 토대로 밝혀낸 다음에, 그 사고 고리를 스스로 반박할 수 있도록 유도하고, 결국은 원래의 생활에 복귀하여서도 그런 사고로 돌아가지 않도록 스스로 대처할 수 있는 여러가지 논리 기법을 숙련시켜 주는 것이 주가 되는 것 같네요. (책 안에서는 많은 우울증 환자들의 경우를 예시로 치료기법들을 설명해 놓았습니다.)

그런데, 우울증 치료에 있어서 주변 사람들이나 치료자의 대응이 기존의 상식과는 다른 점이 꽤 많이 있었는데, 예를 들면 환자에게 주변 사람들이 이유없이 게속 잘 해주려고 하는 것 또한 자책감으로 인한 우울증 환자에게는 “난 주변사람들에게 짐이 될 뿐이야”같은 심리를 자극해서 더 악화되게 만들 수도 있다고 하고, 환자의 상황을 파악하기 위해서 이런 저런 질문을 너무 많이 하다보면 자기 상황에 대한 수치심으로 또 악화되고.. 이런 상황이 여러가지 있다고 합니다. 즉, 우울증 환자를 접할 때에는 항상 자신의 행동이 오해를 불러일으킬 소지가 있는지 여러 모로 생각해 보고 불명확한 해석이 있을 수 있는 부분에 대해서는 오해하지 않도록 부연 행동이나 설명을 해 주도록 명시적 행동이 필요하다고 합니다. 또 그런 행동이 너무 티가 나면 안 되겠죠~

현대 사회에서는 점점 사람과 사람 사이가 어떤 면에서는 고립되어 가고, 개인적인 시간이 늘어나면서 우울증이 뚜렷하게 증가하고 있다고 합니다. 우울증도 다른 것들과 마찬가지로 초기에 잡으면, 주변의 도움으로 어려운 경험없이 쉽게 잡을 수 있다고 합니다. 미리미리 공부해서 명랑 사회 만들어 나갑시다. -O-

구글 한여름의 코드!

구글이 Summer of Code의 개최를 공식 발표하였습니다. PSF에서 내부적으로 얘기는 지난 주부터 있었는데, 대체로 다들 반기는 분위기 속에 잘 되어서, PSF가 지원 기관의 제일 첫번째로 올라갔군요. ^_^ (1주일동안 다른 데 소문 안 내느라 입이 어찌나 근질근질했는지 =3)

Summer of Code에서는 여름 동안에 학생들이 오픈소스에 기여도 하고 자기 능력도 계발하고 하는 의미에서 구글에서 오픈소스 기여를 지원해 주는 행사입니다. 그동안 다른 데서 있었던 Grants와는 달리 Python, Perl, Mono, Apache, Ubuntu, GNOME 등 기존의 대형 오픈소스 프로젝트 기관들이 심사와 멘터링을 맡고, 각 학생 프로젝트당 $4500, 기관에 $500를 지원하게 됩니다. 이렇게 총 200개 정도의 프로젝트를 지원하는데, 이번 기회에 학생들은 괜히 소모적인 알바로 힘만 빼고 뻘짓하는 것을 피할 수 있고, 오픈소스 프로젝트들은 열의 있는 참가자들이 할 수 있는 여러 노력형 작업들을 성취해 낼 수 있을 것 같아서 아주 결과가 기대 됩니다.

한국에서도 많은 학생들이 참가해서, 한몫도 잡고 이름도 날리고 하면 좋겠군요. (450만원!) 크크 🙂