2013/10/31

문제 해결 전략


경험상 프로젝트 진행 중에 맞닥뜨리는 문제들은 보통 divide and conquer로 접근하면 해결의 실마리를 찾을 수 있다.

하지만 애초에 부딪힌 문제의 domain을 잘못 잡거나 생각을 가둬버리고 그 안에서 문제를 풀어나가려고 하면 무한 삽질을 경험하게 될 가능성이 높다.

사실 개인적으로는 그러한 삽질 조차도 차후 문제를 해결해나가는데 꼭 필요한 경험이라고 생각하지만, 그만한 시간과 집중력은 결국 자신의 코스트로 계산이 될테니 한정된 자원을 보다 전략적으로 잘 사용하는게 상책이다.

그렇다고 초반부터 확실한 domain을 찾는것은 너무 어렵거나 범위 자체가 러프해질 수 있다.

그러므로

  1. 일단 자신의 현재 역량에 맞게 해결 가능 범위를 잡고
  2. 그 안에서 문제를 잘 쪼개서 열심히 삽질하되
  3. 스스로 마감에 대한 짧은 데드라인을 잡고 중간 중간 처음 잡은 domain이 맞는지 체크해 볼 필요가 있다.

이런 전략이 경험이 쌓이면 쌓일수록 오히려 활용도가 높아질테니, 지금부터 습관을 길러놓아야겠다.


* 사실 위에 문제 푸는데 처음부터 수식으로 접근해서 한참 머리 굴리다가, 문득 pre-school 덕분에 전혀 다른 접근으로 답을 찾은 허무함을 달래기 위한 기록입니다.


2013/09/22

비상하라! 투혼의 한화이글스


영상 톤이 참 좋다.

독수리들, 내년엔 더 분발합시다

2013/05/08

봉사의 대가

봉사를 하다보면 일에 대해 남의 인정을 받거나 칭찬 받고 싶어질 때가 있습니다.
이런 마음이 생기는 것은 대가를 받고 일하는 임금노동의 습관이 남아있기 때문이죠.

그래서 봉사를 한다고 하면서도 물질 대신 명예 같은 것으로 대가를 받고 싶어집니다.

하지만 자원봉사는 세상을 위해 나를 희생하는 것이 아닙니다.

내가 나의 몸을 씻고 나서 나 자신에게 돈을 주지 않듯 자신의 행복을 위해 내가 가진 기술이나 재능을 그냥 나눠보는 것입니다.

그렇게 그냥 봉사를 하다보면 어느새 점차 행복해져 가는 나를 보게 됩니다.

- 법률스님의 희망편지 중 -

요즘들어 참으로 언행일치가 되지 않는 말이지만,
나는 어떤 형태로든 누군가에게 도움이 되는걸 좋아한다.

그래서 나에게 있어 봉사활동은 남을 위해 시간을 투자한다기 보다는
그 과정과 그 후 일어날 가치들을 얻을 수 있는 나 자신을 위한 투자에 가깝다.

그나저나 꼭 봉사활동이 거창할 필요는 없지 않나,
봉사라는 타이틀에 의미를 두거나 의식하지 않고 일상에서 자연스레 묻어나오는 삶을 살아가고 싶다.

2013/04/10

지금 걸려 넘어진 그 자리가 당신의 전환점이다


인생이란 누구에게나 처음이기 때문에 한 번도 안 가본 길을 가는 것과 같아.
그럼 어떻게 해야 원하는 목적지까지 갈 수 있을까?
다행히 세상은 구석구석에 전환점이라는 의미 있는 지표들을 숨겨놨어.
다만 사람들이 그걸 못 보고 지나쳐서 문제지.

전환점은 '기회의 덩어리'이긴 하지만 오래 기다려 주진 않아.
폭주기관차처럼 돌진해 왔다가 번개처럼 멀어지지.
기관차를 놓치지 않으려면 그것이 전환점이라는 사실을 직시하고 재빨리 올라타야 해.

전환점을 인식할 수만 있다면 앞으로 변화의 파도가 어느 방향에서 부서질지도 추측할 수 있게 될 거야.
그러니 과감하게 뛰어들어. 벌떡 일어나 행동하라고 말이야.
행동하지 않으면 무조건 지는 거야.
기회라는 소중한 선물을 덥석 끌어안아야 해.

'하워드의 선물' (위즈덤하우스) 中

2013/03/20

신발 한 짝

인도의 어느 기차역에서 기차가 막 출발하고 있었습니다.
한 청년이 움직이는 열차를 허겁지겁 올라타다가,
그만 신발 한 짝을 기차 밖으로 떨어뜨리고 말았습니다.

그 당시 인도에는 맨발로 다니는 가난한 사람이 많았기에, 신발은 아주 귀한 물건이었지요.
그래서 그 광경을 본 사람들은 발을 동동 구르며 청년보다 더 안타까워했습니다.
그런데 그때 청년은 신고 있던 나머지 신발 한 짝을 마저 벗더니, 기차 밖으로 힘차게 던지는 겁니다.
사람들이 깜짝 놀라 왜 그랬는지 묻자, 청년은 답했습니다.
"어차피 제게 남은 신발 한 짝은 소용없는 것이고, 다른 한 짝을 주운 사람도 마찬가지지요.
하지만 나머지 신발 한 짝도 마저 버렸으니,
이제 누군가는 제대로 된 신발 한 켤레를 주울 수 있을 겁니다."
그 청년은 바로 마하트마 간디입니다.

가진 것이 없어 나눌 수가 없다는 말은 어쩌면 핑계에 불과할 겁니다.
당신이 가진 마음과 노동력, 시간, 능력, 이 모든 것이 나눌 거리지요.

훌륭하게 성공한 사람은 대체로 욕심이 많습니다.
돈과 권력에 욕심이 많아 악착같이 일하고, 집요하게 성공을 좇습니다.
하지만 진짜 성공한 사람들은 욕심이 많은데도 나눌 줄 압니다.
이들은 돈뿐만 아니라, 무형의 자산인 자신만의 능력과 시간을 주위 사람에게 아낌없이 나눕니다.
사실 나누며 살아왔기에 성공할 수 있었다고 그들은 늘 이야기합니다.

잊지 마십시오. 성공한 뒤에 나누는 것이 아니라, 나눔에서 성공이 찾아오는 것이랍니다.

정진호(IGM 가치관경영연구소 부소장) '왜 그렇게 살았을까' 中

2013/01/24

(98)Address already in use: make_sock: could not bind to address [::]:80


서버 운영중에 아파치가 이상동작을 하며 프로세스 실행 시 아래와 같은 에러를 뱉을 경우

httpd (을)를 시작 중: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           [실패]

이미 어떤 프로세스가 80포트를 점유하고 있으니 같은 포트로 아파치 소켓을 열 수 없다는 말인데, 원인은 좀 더 찾아봐야겠지만 해결방안은 비교적 간단하다.

일단 실행중인 httpd 프로세스를 모두 강제 종료 시킨 후

$ ps ax | grep httpd | awk '{print $1}' | xargs kill

지금 80포트로 바인딩되어있는 프로세스를 확인하고 이 또한 종료시킨다.

$ netstat -nlp | grep :80

$ kill -9 {해당 프로세스 아이디}

이제 다시 아파치를 시작해보면

$ sudo /etc/init.d/httpd start
httpd (을)를 시작 중:                                      [  OK  ]

이상입니다.

2013/01/15

아파치 튜닝


Apache에서 서버 request를 효율적으로 처리하기 위해 MPM(Multi-Processing Module)을 쓰는데 두가지 방식이 있음

prefork / worker

자세한 설명은 레퍼런스를 보면 알수 있지만, 대략 정리해보면

prefork


  • 하나의 자식 프로세스가 하나의 쓰레드를 갖는 구조로, 자식 프로세스는 1024까지 늘일 수 있다.
  • 한개의 자식 프로세스는 한 개의 연결을 담당한다. 
  • 프로세스가 생성되는 구조이므로 당연히 worker보다는 많은 메모리를 사용함.
  • 프로세스간 메모리를 직접 공유하지 않으므로, 메모리 공간이 독립적이어서 안정적임


worker



  • 자식 프로세스들이 여러개의 쓰레드를 갖을 수 있으며, 각 쓰레드는 한번에 한 연결을 담당함. 
  • Prefork보다 메모리 사용량이 적음. 통신량이 많은 서버에 적절함. 
  • 쓰레드 간에 메모리 공간을 공유함. 리소스 경합이 발생하지 않도록 주의 필요. 특히 PHP를 쓰는 경우 유의하여야 함.

즉,
prefork 방식은 프로세스:쓰레드 = 1:1 방식
worker 방식은 프로세스:쓰레드 = 1:n 방식
이다.

대부분 prefork 방식이 기본적으로 사용되며, 사용자가 많은 경우에는 worker방식을 사용하는데 실제 기준은 좀 애매한것 같고, 서버 스펙이랑 평균 동접량에 따라 계산해봤을때 prefork로 버티느냐 못버티느냐에 따라 선택하는것 같다. (근 몇시간 동안 구글링해본 느낌일뿐 정확한 정보는 아니다)

이 글 정독하면 대략 감 잡는데 도움이 된다

그럼 서버 스펙은 어떻게 확인할까.

현재 설정된 아파치 정보를 확인하려면,


httpd -V

Server version: Apache/2.2.3
Server built:   Nov 12 2012 08:48:42
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

httpd -l

Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c




그렇담 메모리 확인은 top, meminfo 정도로 확인할 수 있지만,

free -m

명령어가 제일 깔끔하고 필요한 정보를 얻을 수 있다. 옵션에 따라 k, m, g byte로 출력이 가능하다. 더 많은 정보는 물론 -h 치면 나온다.

이제 실제 테스트를 해보며 삽질을 할 시간인듯. 굿럭.



2013/01/13

새해맞이 첫 정리


새해 맞이 사이트 개편을 하자마자
근 2주 동안 참 탈이 많았다.

제대로 준비하지 못하고,
항상 한발 늦게 대처할 수 밖에 없었다.

아직 모르는게 너무 많아 어렵고 두렵다.
조금 다르게 표현하면,
앞으로 배우고 알아야 할 것이 많아 기분이 좋다.

잊지 않기 위해 메모를 해두자면,
브라우저 캐싱에서 .htaccess파일에 ExpiresActive On 설정시 Indexes를 꼭 Override 해줘야 한다. (http://httpd.apache.org/docs/1.3/mod/mod_expires.html#expiresactive)
보안은 신경쓸수록 도움이 된다. 서버 내 파일 권한 관리는 그 기본.
스마트폰, 태블릿이 필수 아이템이 되면서 반응형(responsive) 레이아웃이 주목받는데, 자칫 잘못하면 크로스브라우징의 늪에서 해어나올 수 없다. 경험이 해결해 줄 것 같다. (http://www.leemunroe.com/adaptive-responsive/
2013년은 출발부터 다이나믹한게 파이팅 넘치는 한 해가 될 수 있기를 바란다.


2013/01/08

아파치 레퍼런스 문서



레퍼런스는 기본인데,
여지껏 이정도도 못찾아본 지난날을 반성하며.

2013년도 파이트

2013/01/07

다가올 일을 임하는 자세

우리가 인생을 살면
습관적으로 살기 쉽습니다.
어떤 일을 하거나
사람을 만나거나 할 때도
처음 대하듯이 하기가 어렵지요.

우리가 안 가 본 곳을
처음 구경해보면 신기합니다.
그래서 자세히 봅니다.
인생도 그렇게 해 보세요.

신기한 마음으로 인생에 임해보세요.
어떤 일이든 새로운 마음을 내서
정성을 다해서 처음 하듯히 말이에요.

-법률스님의 희망편지 -
2013. 01. 07


도전하는건 이제 두렵지 않다.
이제는 도전 중에 정성을 다하는것에 집중해야할 때이다.