이용자 역할 자동으로 바꾸기

이용자 역할을 등록된 이메일 기준으로 변경하는 코드이다. PHP로 작성되었고, crontab에 등록해서 5분마다 실행하도록 설정하고 로그를 남기는 방식으로 작동된다.

이용자 역할

최근 워드프레스로 작업하고 있는 사이트가 특정 학생을 대상으로 서비스되고 있다. 워드프레스의 로그인 정보를 인식하고, 등록된 이용자가 특정 역할을 가지고 있어야 페이지의 내용이 표시되게 하는 방식으로 처리하고 있다.

이용자 역할 편집기로 ‘학생’ 역할을 만들고, 학생 역할에 특정 기능을 이용가능하게 해 놨다. 특정 기능을 이용할 수 있게 되어 있는 역할이라면 이용할 수 있게 해 놨다는게 더 정확하겠다. 학생이 학습 페이지의 내용을 보려면 워드프레스 계정에 등록한 뒤 ‘학생’ 역할을 부여 받아야 한다.

처음에는 이런 기능을 제공해주는 플러그인이 없나 찾아보다가 없어서 일일히 수작업으로 진행하였다. 차피 사이트의 존재를 알고 있는 학생이 제한되어 있고, 우리나라에서 이용될 수 없는 이메일 주소를 가지고 있지 않는 이용자만 걸러내면 되니까 크게 문제될 것이 없었다.

그런데 이 사이트를 이용하는 학교가 늘어나면서 이용자 역할을 조정해 주어야 할 대상이 늘어나게 되었다. 그래서 다시 플러그인을 찾아봤지만 찾을 수가 없어서 만들게 됐다.

역할 자동 전환 코드

급조한 티가 팍팍나는 조잡한 코드지만 이용하는데는 문제 없다.

<?php
$hdr = "wp"; // 일반적으로 wp_something 형식으로 되어 있는데, 아래막대 앞쪽의 wp만 입력하면 된다. 다르면 변경해주어야 한다.
$dbn = "wordpress"; // 일반적으로 wordpress로 되어 있지만 다르면 변경해주어야 한다.
$em = array("처리할 이메일 주소1","처리할 이메일 주소2"); // 처리할 이메일 목록을 따옴표에 담아 콤마로 구분해 입력하면 된다.
$link = mysqli_connect('localhost', 'ID', 'password'); // 데이터 베이스 접속 정보이다.
if (!$link) { die('연결에 실패했습니다: ' . mysqli_error());}
mysqli_select_db($link, $dbn); // 접속 정보로 자료집 선택하기

for($i = 0; $i < sizeof($em); $i++) {
$q = "SELECT * FROM ".$hdr."_users WHERE user_email LIKE '".$em[$i]."' ORDER BY ID ASC"; $qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
$uid = $r[0];
$q = "SELECT meta_value FROM ".$hdr."_usermeta WHERE user_id = ".$uid." AND meta_key = '".$hdr."_capabilities'";
$qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
if($r[0] == "a:1:{s:10:\"subscriber\";b:1;}") { // 역할이 ‘구독자’인지 확인해서 맞으면 실행
echo(date("Y-m-d H:i:s", time())."[ ".$em[$i]." ] 처리됨 "."\n");
$q = "UPDATE ".$hdr."_usermeta SET meta_value = 'a:1:{s:7:\"student\";b:1;}' WHERE ".$hdr."_usermeta.user_id = ".$uid." and ".$hdr."_usermeta.meta_key = '".$hdr."_capabilities';"; // 역할을 학생으로 변경
}
}
}
}

?>

오류나면 shortcode가 허용되었는지 확인하고 수정해주면 된다.

사이트에 가입하면 구독자 역할이 배정되도록 되어있기에, 이메일이 구독자로 등록되어 있다면 학생 역할로 변경하라는 것이다. 학생 역할은 이용자 역할 편집기로 추가해 준 역할이고, 기본 등록 역할이다.

자동 실행 설정

자동 실행은 crontab에 등록하면 되는데, 이메일 목록에 있는 학생이 가입하면 5분 이내에 처리될 수 있도록 5분 간격으로 처리되도록 해 놨다.

명령행에서 crontab -e 를 입력하여 편집기에 들어가서 다음의 내용을 추가해주면 된다.

*/5 * * * * /usr/bin/php /경로/파일명.php >> /var/log/파일명.log

분 단위 자리에 ‘ /5 ’를 붙여서 추가해주면 5분 단위로 처리되고, 기록파일에는 다음과 같이 남는다.

2020-03-17 08:15:01[ 이메일 주소1 ] 처리됨
2020-03-17 08:20:01[ 이메일 주소2 ] 처리됨
:

너무 짧다 싶으면 원하는 간격으로 조정하여 이용하면 된다. 다른 간격으로 변경하고 싶으면 크론탭 구루 사이트를 이용하여 값을 얻어 앞의 별표 부분에 넣어주면 된다.

20년 전에 배운 지식을 가지고 프로그래밍을 할 때

20년 전

20년 전에 고등학교 3학년이 되면서, 웹디자인 회사에 취업했다.

다행인진 불행인지 작은 회사였고, 먼저 있던 직원이 이직을 위해 사람을 구하는 것이어서 크게 뛰어난 실력이 아니었음에도 채용이 되었다. 가능성을 보고 뽑은 것이라고 생각하고는 기쁜 마음으로 출근했더랬다.

그 당시에는 웹 디자인과 웹 프로그래밍이 지금처럼 확실하게 구분이 되었던 분위기는 아니었던 것인지 그저 작은 회사였기에 그런 것이었는지 혼자서 디자인과 개발 업무를 다 했다. 그래봤자 웹 디자인이 전문인 회사가 아니었고 중소기업 소개 홈페이지 만드는 정도였으니 프로그래밍이라고까지 할 것이 없었다. 그저 기본적인 메뉴 동작에 필요한 자바스크립트만 작성하면 되는 정도였다.

졸업한 고등학교는 정보산업고등학교였는데, 당시로서는 시범학교로 개발에 대한 기본적인 지식을 얻고, 실습을 할 수 있는 환경이 뒷받침되었다. 게다가 개인적으로 프로그래밍에 관심이 있어서 이것 저것 언어들을 공부하고 실습해볼 수 있는 시간들을 보내었기에 채용된 회사에서 필요한 정도의 프로그래밍을 할 수 있었다.

취업된 회사에서 같이 근무하던 과장님이 창업하신다고 하셔서 그 회사에서 일을 시작했다가 1년 정도 뒤에 그만두게 되었다. 진로가 완전히 바뀌어서 전혀 다른 분야로 대학을 하고 공부를 하고 그렇게 20년 가까운 시간이 흘렀다.

작은 프로젝트

작년 말부터 프로젝트 하나를 맡게 됐다. 개인적 필요에 의해 어떤 언어를 배우려고 하는데, 강의하시는 선생님과 얘기를 하다가 해당 언어를 학습할 수 있는 사이트를 만들었으면 좋겠다는 얘기를 듣게 되었다. 사실은 그 선생님과 연결해 준 사람이 전에 웹 디자인 경력이 있다는 사실을 말한 것이었는데, 사전에 개인 업무에 크게 지장이 없는 선에서 해 드릴 수 있다고 했다.

개발하려는 웹사이트는 이미 그 선생님이 소속된 기관 서버에서 돌아가고 있었는데, HTML과 JS로 구성된 사이트였다. 하지만 기관 서버에 문제가 생기고 사이트가 정상적으로 돌아가지 않게 되어서 사실상 페이지를 새로 만들어야 하는 상황이 되었다. 그런 상황이 되니 공부를 다시 시작해야 하나 싶은 생각이 들어 검색을 해 보았는데, 생각보다 어렵지 않을 것이라는 생각이 들었다.

부트스트랩1을 이용하면 이전 사이트 수준 정도로는 금새 만들 수 있을 것이라는 생각이 들었고, 선생님께 제안하고 시간이 나는대로 필요한만큼 만들고 있다.

20년의 세월이 아무것도 아닌 것처럼 생각보다 많은 것들이 기억났다. 설명이 잘 되어 있는 페이지가 구성되어 있고, 또 필요한 기능이 그렇게 복잡하지 않기에 가능한 것일지도 모른다.

의지

사이트 제작을 의뢰하신 선생님께서 일을 조금 더 크게 확장하고 싶어하셔서 프로젝트 팀을 구성하였다. 선생님과 같이 가르치시는 선생님 몇 분과 선생님께 배운 학생 몇이 팀에 합류하였다.

각자의 영역을 나누고 일을 분배하는데 개발팀에 포함된 사람이 나 말고 하나 더 배정되었다. 이 사람은 대학에서 컴퓨터 공학을 전공했다고 한다. 그래서 개발팀에 소속되게 되었다.

처음 이 사람이 컴공과2를 나왔다고 했을 때, 궁금증은 이것이었다.

이 사람은 불가능한가?

그 당시의 컴공과에서는 고등학교에서 배우는 것보다 더 체계적인 교육을 받지 않았을까? 그래서 물어보았다.

“컴공과였으면 프로그래밍 가능하지 않아요?”라는 질문에 그는 “오랫 동안 하지 않아서”와 “그 때에도 그렇게 열심히 공부하지 않았다”였다. 이 사람도 해당 분야에서 계속 공부하지 않고, 지금은 전혀 다른 분야에서 공부하고 있었기에 그러려니 하고 넘겼으나, 지금 이 글을 쓰면서 드는 생각은 ‘정말일까?’

가끔 조카들과 놀아주는데, 둘째 녀석이 아직 어려서인지 들고 흔들고 데롱 데롱 매달려 흔들리는 것을 좋아한다. 여러 가지 일로 몸이 곤하면 피곤하다고는 하지만 놀아달라는 녀석의 눈길을 무시할 수 없어 앉아서라도 다리에 올려두고 흔들흔들해주고는 한다.

어제인가 조카에게 ‘아빠는 이런거 안 해주니?’라고 물었더니 ‘아빠는 허리가 아플까봐 안 된데요’란다. 그래서 나보다 10살 많으니 그런가보다 해서 ‘아빠는 나보다 10살 많아서 그래’라고 답변했더니 동생은 피식 웃으면서 ‘그 사람은 오빠 나이 때도 똑같은 소리 했어’였다.

체격이 좋지 않은 것도 아닌데, 왜 그럴까 생각해보면 간단하다. 원래 허리 병이 있는 것도 아니고3 아프다고 한 것도 본 적이 없다. 그런데도 허리가 아플까봐라고 아이와 놀아주지 않는 것은 그저 아이와 놀아줄 의지가 없는 것이 아닐까?

정말로 허리에 지병이 있거나 문제가 있어서라면 미안할 일이 겠지만 지금까지 상황으로 봐서는 그리 미안할 일이 아니다.

적지 않은 시간의 경력 단절이 있다면 두려움이 있을 것이고 도전한다고 해도 그만큼의 노력이 필요할 것이기에 힘이 드는 건 이해한다. 하지만 그럴 의지조차 가지지 않는다면 할 수 있는 일도 못하는게 아닐까? 피곤하고 힘이 들어도 아이와 놀아줄 의지가 있다면 그 나름대로의 방법을 찾지 않을까?

이 글을 읽고 있는 당신은 어떤가?

  1. 다른 프레임워크도 많지만 개인적으로 개념이 가장 와 닿는 것이 부트스트랩이었다[]
  2. 컴퓨터공학과의 줄임말[]
  3. 내가 알기로도 그렇고 동생이 결혼하기 전에도 후에도 그런 적이 있었다는 얘기를 들은적도 없었다[]

작은 프로젝트

졸업한 고등학교는 정보산업고등학교였고, 당시 나는 학교에서 배운 것 이상의 것들을 공부하고 싶어했다. 그렇게 공부했던 분야는 웹디자인이었다. 디자인적인 감각은 없었지만 조금의 가능성을 본 것인지 당장 인력이 급해서인지 크지 않은 회사에 들어가 약간의 경력을 쌓을 기회를 얻었다. 그것이 그 이후로 지금까지 회사에서의 경력 전부이다.

당시의 웹디자인은 개발과 디자인을 모두 아우르는 영역이었다. 따로 세분화되지 않은 영역이었다. 물론 당시에도 프로그래머와 웹디자이너는 다른 직군이었다. 그럼에도 불구하고 당시 속해 있던 회사는 지금의 스타트업에서와 같이 그닥 구분되어 있지 않았다. 아니 조금더 상세하게 말하면 영역의 구분이 없다고 하기보다 더 많은 부분까지 개인이 맡아야 했다는 것이 정확할 것이다. 실제로 스타트업에서는 어떤 지 알 수 없으니 상상에 의한 평가라도 해도 무방하다.

하지만 개인적으로는 그 때와 지금은 다소 차이를 가지는데, 그 당시에는 디자인에 더 치우쳐저 있어서 프로그래밍 영역은 사실 크게 기술적이라고 할 수 없었다. 학교에서 배운 지식을 가지고는 크게 응용할 수 없었다. 개인적으로 프로그램에 대한 이해도가 높지 않았던 탓으로 여겨진다.

지금은 그 때에 비해 디자인적인 부분보다는 프로그래밍에 치우쳐져 있는 것이 확실해 보인다. 그 때나 지금이나 크게 차이가 없는 것으로 보일 만큼 그 정도가 미미하다. 하지만 지금은 기술적으로 적지 않은 발전이 있어서 어떤 기능을 구현하는데 드는 노력이 조금 덜하다. 다시 말해 조금의 노력을 기울이면 15년 전에는 생각할 수도 없었던 부분에까지 구현이 된다는 점이다.

실제로 개인적으로 맡은 프로젝트가 있어서 검색을 하고, 구현하기 위한 문법을 배우는데는 많은 시간이 필요하지 않았다. 그렇게 시작한 프로젝트는 지금도 지속하고 있다. 언젠가 끝날 일이지만, 본업에 영향이 가지 않을 정도의 일이기에 가능한 것이다.

말 그대로 작은 프로젝트를 맡고 관심을 가지고 있던 부분을 실제로 진행하고 있다는 것은 뭐랄까 꿈의 실현 영역이라기 보다 기회를 얻은 소소한 기쁨의 영역이다. 작은 프로젝트를 통해 얻는 작은 기쁨! 정도가 이 글의 결론이 아닐까 싶다.

웹표준 지키기

고등학교를 졸업하고 진학을 생각하지 않고 웹디자이너로 한 회사에 취직하게 되었다. 그 이전에 학교에서 이런 저런 경로들을 통하여 독학하였던 실력을 바탕으로 나름의 자신감을 가지고 취업을 하였다.

정보산업고등학교에 진학한 이유가 관련 분야에서 일찍 일을 시작해야겠다는 생각이 있었기 때문이었다. 프로그래밍에도 관심이 있고, 그래픽 분야에도 관심이 있었기 때문에 그 두 분야를 통해 일을 할 수 있는 분야가 당시의 웹디자이너였다.

웹디자이너로 활동하기 전에도 홈페이지 제작 관련해서 나우누리 웹디동의 활동이 있었고, 그들과의 교류를 통해 다양한 정보를 얻기도 하였다. 그러는 가운데 웹표준이라는 용어를 알지는 못했지만 익스플로러와 넷스케이프, 이 두 브라우져에서 똑같이 보일 수 있도록 코딩을 하는 것이 웹디자이너로서의 당연한 의무라고 생각했다.

그 외의 브라우져는 그다지 많이 쓰이지 않을 것이라는 생각을 가지기도 했었고, 개인적으로 사용하고 있는 브라우져인 넷스케이프와 일반적으로 많이 사용하는 브라우져가 익스플로러였기 때문이었다.

그렇게 일년여를 관련 직종에서 실무를 했지만, 일을 그만두고 군에 입대하고 나서는 웹디자인을 그만두고 군에서 맡겨진 임무에 충실하기 위해서 별도의 활동을 하지 않았다. 군에 입대하면서 웹디자이너로서의 앞길을 회의적인 생각으로 바라보게 되었기 때문에 관심이 자연스럽게 줄어들었다.

그와 함께 웹표준에 대한 관심도 함께 적어졌다. 그저 주로 쓰는 브라우져이든지 잘 보이게만 하면 되는거지라는 생각으로 변해갔다. 그렇게 군에서의 생활이 마무리 되어가던 시점에서 Firefox에 대한 소식을 접하게 되었다. 직접 관련 소식을 접해서 알았던 것이 아니라 네트워킹 분야에서 일하는 친구가 컴퓨터에서 사용하는 브라우져가 파이어폭스였기 때문에 관심을 가지게 되었다. 그리고 모질라 커뮤니티에서 웹표준에 대한 정보를 접하면서 다시 생각이 바뀌어지게 되었다.

표준을 지킨다는 것은 결코 자원의 낭비가 아니다. 그것은 효율의 문제이고 미래의 우리를 위한 예방 활동이다.

표준을 지키는 것은 우리가 법규를 지키는 것과 같이 생각해야 할 문제가 아닌가 싶다. 아무도 보지 않는다고 지키지 않아도 된다며 무시하고 마음대로 했을 때 당장은 문제가 생기지 않지만, 그런 불법에 익숙한 습관으로 인해 법으로부터 보호받지 못할 때에 원망조차 할 수 없는 문제가 되는 것과 마찬가지가 아닐까?

우리의 몸에 규칙적인 운동이나 식사를 하지 않았을 때 당장은 별로 문제가 되지 않은 것처럼 보이지만 지속적이고 반복되었을 때 건강상에 문제가 생기고 몸에 이상이 생기는 문제와 같다.

지금 당장 공부하지 않고 게임이나 유흥을 하고 관심있는 부분만 공부하는 학생이 가지게 될 좋지 않은 성적은 우리가 지금 당장 웹표준을 지키지 않았을 때 가지게 될 결과가 같지 않을까?

웹표준은 지금 당장은 힘들지만 꼭 지켜야 할 필수요소라고 생각한다.

프루나 같은 인간

아~ 정말 적절한 비유라고 생각되는데, 이게 왜냐면 정말 푸르나1의 특징을 그대로 가지고 있기 때문이다.

참고로 이 글의 부제는 믿어주는 사람의 발등찍는 법이다. 이게 또 오해를 살 수가 있는데, 그렇게 의도적인 것은 아니라는 사실을 말해둬야겠다.

프루나로 자료를 전송받다보면 한 자료를 기준했을 때 꽤나 짜증나는 부분이 있다. 바로 자료의 95%이상의 완료상태에서 점차 속도가 줄어들기 시작하는것인데, 이것은 전송방식의 문제이면서 프루나의 특징처럼 되어버렸다.

일단 프루나는 개인끼리 서버 또는 클라이언트를 삼아 자료를 공유할 수 있도록 만들어진 프로그램인데, 이 서버와 클라이언트인 자들은 대부분 그 하는 일이 정해져있다. 무슨말인고하니 자료 찾아서 가지고 있으면서 나눠주는 사람은 죽어라 나눠주기만하고 받는 사람은 죽어라 받기만 한다는 말이다. 물론 그렇지 않은 경우도 간혹 있지만 대부분은 받으려고만하지 자기가 가진것을 나누려고 하지 않는다.

필자는 어느쪽이냐하면 나눠주는 쪽에 속한다. 물론 공유 가능한 자료에 한해서라는 기준이 있지만 말이다. 스스로 가지고 있는 능력이라고는 PC 전반2에 대한 이해와 두루 사용해 본 경험을 들 수 있겠다. 그리고 어느정도의 기능을 가지고 있다는 사실은 필자의 작업 이력에 굉장히 중요한 사항인데, 그렇기 때문에 의뢰 들어오는 작업은 어떤 한 분야에 치중되어있지 않다. 하지만 그렇다고해도 자주 들어오는 것은 디자인 분야이다. 뭐 디자인이라고해서 엄청난 디자인이 아니고 기껏해야 포스터정도나 축제때 사용하는 안내인쇄물 정도이다.

어쨌든 매번 작업이 많아서 힘들어하면서도 어떤 사람이 어떤 문제로 고민하고 있으면 가서 간섭하고 도움을 줄 수 있는 분야를 묻고, 도움을 주겠다고 약속한다. 아~ 이거 무슨 자랑질이냐 싶으시겠지만 과연 자랑일지 끝까지 읽어보시라.

이렇게 시작한 작업들은 한 때 한번에 5~6개 이상이 된 적도 있었는데, 이런 정도가 되면 개인의 취미생활 따위는 가질 수가 없었다. 아니 가질 필요가 없었는지도 모른다 그런 작업이 취미라고 생각되어지고 실제로도 취미생활하는 것처럼 즐거웠으니까.  게임을 좋아하지 않게 된 것도 스스로 공부하기 위한 시간이 필요했고, 그렇기 때문에 그런 것에 대한 시간 투자가 더 많았던데다가 게임보다 그런 분야를 스스로 터득해 나가면서 느껴지는 즐거움이 더 좋았기 때문이라고 생각된다.

자! 여기서 공유정신 – 필자의 경우는 능력의 공유(?) – 이 십분 발휘된다는 것에 있어서는 굉장히 좋은 것으로 생각될 수도 있다. 그렇지만 저렇게 작업이 많아지게 되면 약속한 날에 완료해 줄 수 있는 가능성은 낮아진다. 하지만 어떻게 해서든지 약속한 것을 지키기 위해서는 잠을 줄일 필요가 있었고, 그렇게 했다. 잠도 줄이고 이래 저래 다 완성해서 준다.

하지만 문제는 최근에 와서 발생한다. 그렇게 몇 년을 보내면서 좀 지친다는 생각이 들기 시작한게 작년이었다. 작년이 작업량의 최고조를 이루었다고 할 수 있다. 그래서 슬럼프에 빠졌었는지도 모른다. 뭔가 기능의 한계같은것을 느꼈기 때문이라기 보다는 그런 생활에 대한 회의가 급발생했기 때문이다. 점차 그런 기간은 길어졌고 작년 후반기를 그렇게 아무것에도 열정을 쏟을 수가 없었다. 심지어는 잘 하고 있던 공부마저도 손을 놓기에 이른다. 물론 그와 동시에 체중도 증가했다.

새해를 시작하면서 다시 이전처럼 열정을 가지자는 마음 가짐으로 시작했지만, 슬럼프 기간동안 많은 이들의 의뢰를 거절하고 회피했다. 그러면서 그들이 필자에게 가지고 있던 기대를 모두 무너뜨려주었다. 물론 의도적인 것은 아니었다. 그런 상태에서 작업을 해 봤자 좋은 결과가 나올리가 없을 것이라는 생각에서였고, 실제로도 작업을 해 보면 좋은 결과를 보기 힘들었기 때문이었다. 그렇게 자신을 잊혀지도록 만들었다.

그런 슬럼프의 시작은 아마도 이런 작업들이 인생에 얼마나 도움이 되는거지라는 의문이라고 생각된다. 글쎄… 여전히 작업을해 주고 있지만 자신의 인생에 어떤 도움이 되어질 거라는 생각은 떨쳐버렸다. 다만 도움을 줄 수 있다는 사실에 가치를 두기로했다.

하지만 작년에 그런 기간을 거친후에 작업이 마무리 단계에 접어들면 좀 지체하는 습관(?)같은 것이 생겨버렸다. 전 같았으면 다 마무리하기전에는 잠도 안 자고 있을텐데, 지금은 그렇지 않고 있다.

하아~ 좀 길어졌는데, 어쨌뜬 이 글을 간단히 요약하자면,
1. 오지랖 완전 넓어서 고생은 하지만 인생에 도움은 안된다.
2. 슬럼프 이후로 작업 완료 시점이 지연된다.
정도이다.

  1. P2P프로그램으로 국내에서 꽤나 이름 날렸던 프로그램[]
  2. 전반은 완전히와 다른 의미로 사용한다. 완벽하게 아는 것이 아니라 전체적으로 대강 정도로 이해해주시기를[]

시험 끝~ 방학 시작~

와~ 드디어 길고 길었던 한 학기가 끝나버렸습니다.

이번학기는 학교 입학하고 최고학점(많은 과목)을 수강했었는데요, 우워.. 참 정신이 없었습니다.

영어회화를 수강하면서 영어에 대해 제 스스로 잘난척 했던 모습이 사그라 들어버리고, 새로운 의지를 가지게 되었습니다.

쨌든 오늘부터가 진짜 방학인겁니다. 어제까지 마지막 수업을 듣고, 정리하고 학교에 제출할 서류들 다 제출하고 하니까 진짜 방학이 된 기분입니다.
어차피 오늘은 토요일이라서 학기 중에도 학교를 안 가는 날이었지만, 그래도 꽤나 좋습니다. 이번 방학에는 할 일이 많아졌어요. 개인적으로 한계를 느꼈던 영어 기본 문법부터 다시 파야겠습니다. 능력은 스스로 키워야죠. 그리고 학기중에 학과공부를 하느라 소홀했던 프로그래밍 공부도 다시 시작할 겁니다. 가장 기분 좋은 부분이기도 합니다.

개발자 그들은…

20살, 갓 20대가 되었을 때 고등학교를 졸업하고 대학교라는 곳에 발을 들였지만, 역시나 고등학교 때 입사해 놓은 회사를 그만두기는 힘들었다.
그 때는 실력이 형편 없는 – 지금도 별반 차이는 없지만 – 웹디자이너였다. 프로그래머가 따로 없으니 당연히 프로그래밍도 혼자 다 처리해야 했다. 회사는 규모가 작았지만, 사장이라는 사람은 꽤나 개방적이었다. 미국에서 적잖이 살다 나온 사람이었다. 미국에서는 안 사람되시는 분이 대표로 되어있는 세탁소를 여럿 운영하고 있다고 했다.

그런 사장님과는 서울로 사무실이 옮겨지게 될 때까지 함께 일했는데, 당시 회사에서는 PDF와 관련된 기술을 삼성에 납품(?)하고 있었다. 당시 개발중이던 훈민정음에 해당 기능이 들어갔었다. 그 분야를 개발하던 분이 계셨는데, 머리가 희끗한데다가 꽤나 나이를 먹은 듯한 외모를 가지고 있었고, 구부정한 형태의 몸을 가졌다. 그 분을 보면서 느꼈던 것은 전형적인 프로그래머 상이라는 것이었다.

반평생을 – 최소한 본인이 생각하기에는 – 프로그래밍에 젊은 시절을 다 바쳐서 지금의 나이에까지 이르렀다는 것에 감탄이 들었지만, 한편으로는 참 불쌍해 보이는 것이다. 당연히 자신의 젊은 날을 한가지 일에 열정을 다해 일한 사람에 대해서는 가져서는 안 될 생각인지도 모른다. 하지만 당시의 그의 모습에서는 경력을 입증할만한 어떤 태도도 발견할 수가 없었기 때문에 더욱 그렇게 생각했다.

얼마전에 어떤 블로그에선가 프로그래머에 대한 글을 접했는데, 외국의 경우에는 머리가 희끗 희끗한 장기 경력의 프로그래머들이 많이 보였다는 사실에 놀라움을 감추지 못했다. 사실상 주변(명확히는 한국)에서 그런 사람을 보지 못했기 때문이다. 프로그래머로서는 나이 들어 할 만한 여건이 확보되지 않았기 때문에 30대 전후로 개발 관리자로 승진하거나 다른 분야로 전향하게 된다는 내용으로 이어졌다.

지인 중에 현재 성악을 전공하시는 분이 계시는데 그 분을 예로 들자면, 그분도 젊은 시절 대학에서 프로그래머로써 열정을 다하셨다고 한다. 그런데 20대 후반의 나이에 결혼을 하려는데 생계에 대한 부담이 압박하더란다. 과연 이 걸로 이 여자(형수님)를 밥 벌어 먹여 살릴 수 있을까? 라는 생각을 하게 됐고, 고민 끝에 일반의 다른 직종으로 전향했다는 것이었다. 예나 지금이나 개발자는 헝그리한 직업이라는 사실이 마음에 되새김질 되었다.

안그래도 배고픈 직업인데, 최근에는 여러 가지 문제들이 더욱 그들을 괴롭힌다. 경쟁을 위한 촉박한 납기일, 무개념의 경영자들로 인해 더 힘들다는 것이다. 그렇게 재촉해서 좋을일이 없다는 것은 프로그래밍을 해 본 사람이라면 다 알 것이다. 아니, 비단 개발에 대해서만 적용되는 것은 아니다. 물론 빠르게 처리하면 시간을 그만큼 절약할 수 있는 장점이 있지만, 개발에 있어서 그것은 매우 많은 위험성을 안게 되는 결과를 초래한다. 불안정한 프로그램이 만들어지기 때문이다.

주변에 개발자(프로그래머)가 있다면 그들의 고뇌를 들어보시라!
주변에 경영자가 있다면 그들에게 말씀하시라!
그들의 개발에 대한 가출한 개념을 찾아와 정비할 수 있도록..!

씨 언어 수업시간..

학교 복수전공을 위해 C언어를 다시 듣게 되었는데, 저번 주에는 예의상 한번 빠져줬고, 이번주에 처음 들어갔는데 참 감회가 새롭다. 지금은 인터프리터 언어로 주로 프로그래밍하기 때문에 약간은 버벅거리기도 하였다. 비쥬얼 C++로 학습하는데, 참… 기분이 묘하다.

이전에 basic으로부터 시작된 프로그래밍에의 흥미는 스스로 감탄할 만한 수준의 작품(!)을 만들어내기에 충분한 실력에까지 이르르게 된다. 물론 전문 개발자가 아니기 때문에 전문 개발자들의 프로그램에 비하면 진정 아무것도 아니라고 생각되지만 스스로 만들어냈다는 그 성취감이란 이루 말로 표현하기가 벅차다.

처음 공부하면서 만들었던 자료들은 이미 여러번의 폭탄세례로 인해서 다 없어지고말았지만, 지금까지도 기억되는 것은 역시나 주민등록번호 제조기가 아닐까 싶다.
한간에 불법 프로그램으로, V3에서는 악성 프로그램으로 진단하는 프로그램으로서 지금은 그 가치를 잃었지만 이전에 지금과 같은 복잡한 단계들이 없었을 때는 꽤나 악용되어 여러 사람들을 괴롭혔던 프로그램이었다.

쨌든 지금은 소용도 없지만 이전에 18세 미만인 학생들에게는 꽤나 유용한 프로그램이었다.

지금도 자잘한 프로그래밍들을 하고 있지만, 처음에 만들어냈던 프로그램들의 완성 단계에서 느껴졌던만큼의 보람은 꽤나 오래전부터 느껴보지를 못했다.

그러나, 그 때의 그 기억을 추억하노라면 지금도 프로그래밍을 하고 있다는 것이 자랑스럽게까지 느껴진다.
  

개강하고 나서 첫 수업

뭐… 이번 주 월요일에 개강하고 나서 수업은 여럿 있었지만, 수강 신청을 제때 안 했고 목요일이 되서야 들을 과목들을 정하고 신청서를 완료 지었기 때문에 오늘에서야 첫 수업을 들었다.
사실 전산상으로는 그제 신청을 다 했기 때문에 목요일에도 시간표를 확인하고 수강할 수 있었으나, 전날의 무리한 작업으로 인해서 오후 늦게서야 일어나게 되었고, 때문에 수업을 못 들었다.

이번학기에는 참 기대되는 과목들이 많다. 먼저 오늘 처음으로 들어갔던 일반 서신 수업인데, 교수님께서 꽤나 개방적인 사고방식을 지니신듯이 보였고, 신학생이면서도 성경을 제대로 연구해 보지 못하는 실정을 여실하게 알고 계셨기때문에 강의 계획표 상에 있는 주교재 및 부교재를 다 제끼고 성경을 교재 삼자고 하셨다. 물론 앞으로 더 겪어 봐야 어떤 사람이다라고 명확하게 정의내릴 수 있겠지만 오늘 수업을 듣고 나서 느낀점을 일단 추측형으로 적어보았다.

그리고 신학과에서는 별 다른 기대되는 과목이 없고, 부전공인 국제경영정보학과 과목 중에서는 DB관리론이 참 기대된다. 봉사하고 있는 선교단에서 이래저래 프로그램들을 요구하는데, 데이터베이스를 체계적으로 계획하지 않으면 앞으로 다른 더 큰 작업을 하게 될 때 처음부터 다시 프로그래밍해야하는 사태가 벌어질 수도 있을 것이라는 생각이 들었고, 때문에 이번에 DB관리론과 함께 C언어를 배운다. 이미 프로그래밍은 할 줄 알지만, 알고리즘 관련해서 배울 게 있을 것이라고 판단되었기 때문이다. 좀 더 체계적이어지지 않으면 안되겠다는 압박을 받은건 이번에 프로그래밍 했을 때이다.

이래 저래 무대포식으로 앞뒤 계획없이 간단한 테이블 구조 계획부터 시작했는데, 프로그래밍하다 몇 개의 테이블이 더 추가되어야 했고, 몇개의 필드가 더 추가되고, 삭제되고, 수정되었어야 했기 때문이다. 물론 전문 프로그래머들도 이런 작업은 어느정도씩은 할 수 밖에 없다고 할 지 모르겠지만, 본인에게 있어서는 그 정도가 좀 심하다고 생각되었기 때문에 부전공 수업을 듣고 싶어하는 것이다.

뭔가… 좀 더 발전한 상태로 프로그래밍한다는 것은 더 발전되고 정리되어 짜임새 있는 프로그램이 탄생될 것이라는게 지금의 생각이다.

첫 수업이 일단 기분좋게 시작되었기 때문에 나머지 수업들도 기분좋게 진행될 것이라는 희망을 안고!!
빠이팅! 

벌써 3일째다.

최초 컴퓨터가 사망하신지(실질적으로는 하드디스크) 3일째인거다.
게다가, 새로운 컴퓨터에 모든 프로그램과 자료들을 정리하고, 동생방에 사용할 컴퓨터까지 설정하기까지 걸린 시간 정도이다.

가끔씩 운영체제를 새로 깔고 프로그램들을 설치할 때마다 느끼는 거지만 이 상태로 어딘가 저장해버렸으면 좋겠다는 생각이 가장 먼저 든다. 프로그램 설치 된 상태로 말이다. 물론 그렇게 하려면 그 정도의 용량이 있는 하드디스크가 필요하겠지만, 그래도 뭔가 확! 날려버렸을 때 간편하게 Diskcopy 해 버리면 끝난다는 그 편리함에 꽤나 기분이 좋을 것이라고 생각된다.

휴우.. 이제 사진 편집해서 올리는 일이랑 선교단 홈피 작업만 남은건가!

ㅡㅡ;;
새로이 계획하고 있는 프로그램의 구조를 고민해 봐야하는데, 이게 점차 규모가 커져버려서 혼자 이걸 감당할 수 있을까라는 생각이 든다.
송이(cluster) 제도에 따른 일일 점검 파트, 송이 그룹관리, 송이장(cluster master)의 송이 구성원 면담 기록 관리 프로그램을 만들어야한다.
물론 이건 요 전번 홈페이지 개편시 요청받은 것이지만, 그 당시의 나로서는 도무지 감당할 수 없을 없다고 생각되었기 때문에 살짝 거절의 의사를 표했고, 실제로 작업은 거의 안 했다.
액세스를 이용해서 만들어본다고 돌려말하기는 했지만, 사실상 액세스에 대해 가지고 있는 지식은 꽤나 적기에 그렇게 구조화시키는 데는 무리가 따른다.

지금도 별반 달라진건 없지만, 일단 PHP를 이용해서 기초적인 프로그램을 작성해 봄으로써 그다지 어렵지 않을 것이라는 생각을 가지고 시작했건만….
진정… 털썩…

벌써부터 머리가 지끈거리기 시작한다. 완성되기까지 몇 날을 새야할는지 까마득하다.