[작성자:] snowall

  • 고생을 사서 해야 하나

    옛날 어른들로부터 전해져 내려오는 말씀. 젊었을 땐 사서 고생해야 한다.

    누구나 힘든거 싫어한다. 누구나 편하게 살고 싶어한다. 이건 애나 어른이나 마찬가지다. 나 역시 굉장히 게으르고 나태가 근본인 인간이다.

    온실속의 화초라는 말이 있다. 너무나 좋은 환경인 온실 안에서만 자란 식물은, 온실 밖으로 나왔을 때 적응하지 못하고 금방 시들어 버린다. 그렇기에 온실속의 화초란 말은 세상 물정 모르는 사람에게 하는 말이기도 하다.

    왜?

    고생을 뭐하러 하지? 가장 근본적인 질문이라고 할 수 있다. 인간의 본성은 편한것을 추구하는 것인데, 어째서 일부러 고생해야 하는가? 나는 편하게 살고 싶고, 그래서 지금 편하게 살겠다는 것인데 왜 그걸 하지 말라고 하는 건가?

    스스로 고생을 했다고 생각하고 있다. 어쩌면 그건 자만일 수 있다. 하지만 내가 남의 인생을 살 수 없는데 어떻게 나보다 힘들게 산 사람들을 생각할 수 있을까?

    온실에서 안나가면 되는 거잖아. 안나갈 수 없다고? 온실 문을 열어제끼고 가혹한 환경에 내놓은, 그런 타인들이 나쁜거 아닐까? 난 곱게 온실 속에서만 살고 싶었는데, 조용히 살고 싶은 나를 가만히 놔두지 않은 건 남들 잘못이잖아. 그럼 내가 지금 힘든게 내 잘못이 아니잖아? 내가 살고싶은 대로 살지 못하는게 왜 내 잘못이지?

    편하게 살고 싶고, 놀면서 먹고 싶다. 약육강식의 세계에서, 약한자는 도태되게 마련이지만 나는 강해지지 않고 나약하게 남아있고 싶다. 순진한 건가?

    겁주지 마. 당신도 그렇게 강하지는 않잖아. 남들보다 강한척 하고 있거나, 남들보다 조금 강하거나, 그정도 아닌가? 계획대로 되는 삶도, 계획대로 되지 않는 삶도 온전히 내 것이다. 때로는 누가 나를 도와줘서 편하게 성공할 수도 있고, 죽어라 고생했는데 그냥 고생만 하다 죽을수도 있다. 편차가 너무 커서, 잘못되는 경우가 너무 두려우니까 가장 안정적인 길을 찾는 것이다. 하지만 안정적이라는 거, 사실은 바닥이라는 거 아닌가? 더이상 내려갈 곳이 없는 바닥 상태가 가장 안정적인 상태인 법이다.

    오르지 못할 나무는 쳐다보지도 말라는 옛말은 아마 잘못 전해졌던 것이다. 올라갔다가 내려올 자신이 없으면 쳐다보지도 말았어야 한다.

    고생하는 것을 두려워하지 말라는 뜻이 아니다. 충분히 두려워 하고, 두려움에 덜덜 떨면서 살아갈 수밖에 없다. 언젠가 빛이 비추리라는 희망도 무작정 가질 필요는 없다. 하지만 길을 찾는 건 멈추지 말아야 한다. 언제까지 힘들게 살아야 하냐면, 음, 그건 내가 고요한 마음을 되찾을 때 까지.

  • 중간고사 끝

    중간고사가 끝났다. 아니 근데, 강의실 들어가서 공부하는데 누가 뭐 물어보길래 가르쳐줬더니 고맙다는 말도 없이 그냥 가네…

    그런거 따지는 사람도 아니고 굳이 듣고 싶었던 것도 아니지만 그사람 참 대충사는 듯. 더군다나 남자 주제에 -_-

    그리고 나 빼고 거의 모든 사람이 책상에 뭔가를 열심히 적었다. 뭔가를 지우는 사람들은 자기가 뭔가를 적기 위해서 지우는 사람들이다. 물론 교수는 그런 그들의 노력을 비웃기라도 하듯 매우 쉬운 단답형 문제를 출제했다. 덕분에 한문제 틀렸다. 쩝.

    매번 느끼는 거지만, 왜 답안지 제출할 때가 되면 나 혼자 남아있는걸까.

  • 소프트웨어 개발 방법론

    소프트웨어를 개발하는데에는 여러가지 방법이 있다. (그리고 이건 예상 시험문제다.)

    그래서, 소개해 보자.

    우선, 폭포식 방법이 있다. 이건 밥을 짓는데

    1. 몇인분을 지을 것이고, 쌀은 얼마나 넣어야 하고, 물은 얼마나 넣어야 할지 정한다. 쌀과 물의 양을 정확히 알기 위해서는 많은 경험이 필요하지만 실제로 그건 곤란하다.

    2. 밥을 짓기 위한 요구사항을 정확히 분석한다. 밥에 어떤 성분들이 들어가야 하는지 고객의 요구에 맞춰서 분석해야 한다. 보리밥을 원하는지 현미밥을 원하는지 흰밥을 원하는지.

    3. 밥을 어떻게 할 것인지를 생각한다. 우선, 전기밥솥으로 할건지 가스밥솥으로 할건지 가마솥으로 할건지 파악한다. 물은 생수를 쓸건지 수돗물을 쓸건지 정하자. 쌀을 얼마나 불릴 것인지도 정해야 하고, 밥솥에 사용할 메소드로 압력솥을 쓸건지 그냥 끓일건지 아니면 쪄낼건지 정해야 한다.

    4. 밥을 한다.

    5. 밥맛을 본다.

    6. 준다.

    이 방법은, 한번에 많이 할 때 써먹을만하다. 그리고 일단 해놓은걸 물리기 없이 그냥 내놓을 수 있을때 가능하다. 단점은, 밥맛에 대한 피드백이 불가능하기 때문에 맛 없어도 복불복.

    이 방법을 조금 개선해서 V자형 방법이 있다. 이것은 폭포식 방법을 그대로 따라가는데, 여기에 추가적으로 밥맛을 보고 맛없으면 다시 하는 과정을 포함한다. 물의 양이 적절한지 계속해서 검증하고, 불린 시간이 적절한지 계속 검증하고, 밥짓는 방법이 적절했는지 계속 검증한다. 각 단계별로 검증해서 최종적으로는 맛있는 밥이 완성된다. 이것은 다른 조건보다 “맛있는 밥”이라는 절대적인 목표를 달성하기 위한 경우에 적절하다.

    일정 중심의 모형도 있다. 이건 폭포식 방법을 따라서 밥을 짓는데 중간에 그냥 내놓는다. 밥을 하기 위해서 필요한 요소들 중에 우선순위가 높은 것들을 일단 만족하다가 밥때 되면 그냥 내놓는 것이다. 가령, 현미에 생수를 쓴 압력밥솥에 한 밥을 하고 싶다고 하자. 그리고 우선순위를 현미, 생수, 압력솥 순서대로 정해져 있다고 하자. 근데 현미랑 생수가 있는데 압력솥이 제작중이다. 당장 밥은 먹어야 하는데 압력솥이 올 때까지 기다리려면 그 전에 굶어죽을수도 있다. 따라서 일단 있는 걸 갖고 밥을 해서 내놓는다. 이것은 “밥때는 절대로 놓치면 안된다”는 목표를 달성할 때 적절하다. 우선순위가 높은것부터 해결하는 방법이다. 다만, 나중에 압력솥이 오더라도 이미 밥을 먹은 상태기 때문에 압력솥을 괜히 주문했다는 아쉬움은 남을 것이다.

    프로토타이핑 모형을 쓸 수도 있다. 쌀을 적당히 불려서 하얗게 만들어 놓고 밥그릇에 담은 후 “이정도의 밥이면 됩니까?” 물어보는 것이다. 폭포수 방법과 다른 점은, 밥이 별로 맛이 없어 보이면 이것저것 바꿔볼 수 있다는 것이 장점이다. 다만, 밥먹을 사람이 “오오, 이정도면 이제 밥은 금방 나오는거지?”라고 착각하게 될 수 있다는 점이 문제다. 그리고 때깔만 좋은 밥을 보고 맛도 좋을 거라는 착각에 빠질 수 있다는 점이다. 밥이 맛있을지 없을지 불안할 때 사용한다.

    점증적 모형은 밥을 조금씩 하는 방법이다. 일단 밥을 해서 내놓고, 점점 더 많은걸 추가한다. 쌀밥을 내놓고, 현미밥을 내놓고, 잡곡밥을 내놓는 방식이다. 일단은 밥을 먹일수 있다는 점에서 애자일하다고 할 수도 있다. 교재에서 나중에 나온다고 하는 익스트림 밥짓기 방법과 유사하다고 한다. 배고프다.

    나선형 모형은 밥짓는 과정에 숨어있는 위험요소를 찾아내서 미연에 방지한다. 가령 압력솥이 밥짓다가 터질 수도 있는데, 그걸 방지하기 위해서 그냥 냄비에 밥을 할 수 있다. 이것은 밥짓기가 실패할 수 있는 위험을 사전에 막는 방법이다. 그리고 일단 밥을 해서 성공한 후, 압력솥을 써서 다시 성공시킨다.

    진화적 밥짓기 모형은 일단 밥을 내놓은 후 밥먹는 사람의 반응에 따라 빠르게 밥을 새로 지어서 바꿔주는 것이다. 프로토타이핑이랑 비슷할 수 있는데, 프로토타이핑은 먹기 전에 일단 대충 겉보기에만 좋게 만들어 놓고 나중에 밥을 해주는 것이고, 진화적 밥짓기는 일단 먹여보고 반응을 살펴서 그 다음의 밥짓기에 반영한다는 점이 다르다.

    자, 이제 당신도 맛있게 밥짓기를 할 수 있다.

  • 청주의 추억

    청주에 갔었을 때 찍은 사진 한장.

    나는 달리기를 싫어하는 주제에 “달리는 느낌”은 좋아한다. 하지만 과속을 즐기지도 않는다. 실제로 달리는 것을 그다지 좋아하지 않으며, 단지 “달리는 느낌”만을 좋아할 뿐이다.

  • 뿌리깊은 하청관계

    우리나라에서 “하청”이라든가 “하도급”이라는 걸 빼면 사회 구조를 이해할 수 없을 것이다.

    집앞에 있는 횟집인데…

    이젠 횟집에서도 갑-을-병 관계가 존재한다. 을은 어디간거야…(도망?)

  • 카메라 마운트하기

    리눅스에서 후지필름 J10이 마운트가 안되는 바람에 검색신공을 펼쳤다.



    Requisites:


    gphotofs

    Usage
    (mounting):


    mkdir mount_point

    sudo gphotofs -o allow_other
    /path/to/mount_point

    Usage (unmounting):


    sudo
    umount /path/to/mount_point

    이랬더니 잘 된다.

  • 어려운 수학문제 : 임의의 n분 만들기


    수학자들은 습관적을 일반화시키기를 좋아한다. (거의 직업병임.)


    http://snowall.tistory.com/1852

    일단 이 글을 읽고나서, 다음과 같은 문제를 풀어보자.

    정확히 1시간동안 타는 도화선이 여러개 있다. (얼마든지 쓸 수 있다.)

    이 도화선을 이용해서 1분부터 59분까지, 각 1분 간격으로 모든 시간을 잴 수 있을까?

    잴 수 있다면 어떻게 가능한가?

    모든 경우에 대해서 불가능하다면, 가능한 경우가 있고 불가능한 경우가 있을 것인데, 어떻게 구별할 수 있을것인가?

    일단, 앞에 이미 썼던 쉬운 경우의 문제에 대해서, 15분, 30분, 45분이 가능함은 쉽게 증명할 수 있다. 또한, 만약 n분을 잴 수 있다면 n+15분, n+30분, n+45분을 잴 수 있다. (이것은 쉽게 증명된다.) 따라서 1분부터 14분까지 잴 수 있다는 것만 증명하면 된다.

    또한, 만약 n분을 잴 수 있다면 15-n분도 잴 수 있다. (이것 또한 쉽게 증명된다. 15분과 n분을 동시에 재기 시작한 후, n분이 다 끝난 시간부터 15분이 끝날 시간까지 재면 15-n분이 된다.) 따라서 1분부터 7분까지 잴 수 있다는 것만 증명하면 된다.

    n분을 잴 수 있고 m분을 잴 수 있다고 하자. 여기서 m과 n은 둘 다 임의의 자연수이고 m>n이라고 하자. 그럼 m-n분도 잴 수 있다. (앞에서 15-n분을 잰 것과 같다.)

    만약 n분을 잴 수 있다면 임의의 자연수 m에 대해서 m*n분도 잴 수 있다.(n분을 재는 것을 m번 반복하면 됨.) 따라서 1분을 잴 수 있다면 이 문제는 모두 해결된다.

    7분을 잴 수 있다고 하자. 그럼 앞에서 말한 방법을 통해 15-7=8분을 잴 수 있다. 그럼, 따라서, 8-7=1분도 잴 수 있다.

    따라서 7분을 잴 수 있다는 것만 증명해도 이 문제는 모두 해결된다.

    만약 4분을 잴 수 있으면 8분을 잴 수 있다. 그럼 7분도 잴 수 있고, 따라서 이 문제는 모두 해결된다.

    만약 2분을 잴 수 있으면 4분을 잴 수 있으므로 문제가 해결된다.

    즉, 1분, 2분, 4분, 7분 중의 하나만 잴 수 있어도 이 문제가 해결된다.

    (좀 더 정확히 말하면, 3과 5의 배수가 아닌 분 중의 하나라도 잴 수만 있으면 이 문제는 해결된다.)

    이후로는…아직 생각이 안난다.

    그럼, 이제 좀 더 어려운 문제에 도전해 볼 수 있다.

    정확히 1시간동안 타는 도화선이 여러개 있다. 이 도화선을 이용해서 주어진 유리수 k에 대해서 k분의 시간을 잴 수 있을까?

    그리고 좀 더 자극적인 것을 원하는 사람을 위하여 다음과 같은 문제를 준비해볼 수 있다.

    정확히 1시간동안 타는 도화선이 여러개 있다. 이 도화선을 이용해서 주어진 실수 k에 대해서 k분의 시간을 잴 수 있을까?

    추가하자면, 이 문제는 대수학 문제다. 군의 정의와 확장이 필요하다.

  • 간단한 수학 문제 : 45분 만들기

    어느 회사의 면접 문제였다고 한다.

    도화선 두 가닥이 있습니다. 둘다 한 시간만에 완전히 타서 없어집니다.

    하지만, 도화선의 두께가 일정치 않아서, 타는 속도는 제멋대로입니다.

    10분동안 절반이 타버릴수도, 1/20만 타서 사라질 수도 있습니다. 어쨌든 불을 붙이면 정확히 한 시간 후에는 모두 탑니다.

    이 두 가닥의 도화선을 이용해서, 45분을 측정해 보세요.


    http://kldp.org/node/113998

    KLDP의 회원들은 이것저것 따지고 있는데, 어쨌든 이 문제를 잘 풀기 위해서는 제시된 것 이외에는 그냥 이상적인 상황을 가정하는 것이 좋다. 문제에 제시된 것 이외의 내용을 임의로 가정할 필요는 없다.

    풀이는 나중에.

    풀이

    *이 풀이는 KLDP의 해당 글타래에 이미 제시된 풀이이다. 그닥 snowall만의 독창적인 풀이는 아님.




    도화선 1개를 양쪽에서 동시에 불을 붙인다. 그럼, 이 도화선이 다 타는데에는 정확히 30분이 걸린다. (고정점 정리)




    도화선 1개를 양쪽에서 동시에 불을 붙일 때, 동시에 남은 하나의 도화선에 불을 붙인다. 그럼 이 도화선은, 양쪽에 불을 붙인 도화선이 다 탔던 순간, 남은 부분은 30동안 타게 된다. 이제, 양쪽에 불을 붙인 도화선이 다 타는 순간에 한쪽에서만 불을 붙인 도화선의 반대쪽 끝에 불을 붙인다.

    위 부분을 마우스로 긁어보면 풀이가 보임. 너무 쉬운 문제이기 때문에, 최소한 2시간 이상 고민 해보고 풀이를 볼 것을 권장함.




  • 엑셀은 쓰레기다

    그냥, 이놈은 쓰레기다.

  • 질러보자




    http://shop.ddanzi.com/goods/content_n.asp?guid=881


    요즘 짧은 글이 좀 늘어나는 것 같지만…

    머리가 바쁘니 과학에 관련된 글을 쓸 시간이 부족한듯 싶다.

    5월 1일에 출시된다는데, 지를까 말까 고민중. -_-;