왜 무조건 영어로 먼저 입력하게 하는가. 의 댓글을 보다가 떠오른 생각.
draft로 뒀는데 MS,애플은 한글입력시 커서모양을 다르게 해달라!고 역시나 똑같은 생각을 한 사람이 있네.

먼 옜날 어떤 프로그램들은 커서 모양만으로도 한글 입력 상태라던지 덮어쓰기 상태를 알 수 있었다. 예를들면 납작한 커서는 영문이고 높이가 높은 커서는 한글이고 커서 속이 텅 비어 있으면 삽입모드고 커서 속이 꽉 채워져 있으면 덮어쓰기 상태였던가... 밋밋한 커서에 몇가지 변화를 줘서 이런저런 정보를 주려 노력했었다. 알면 유용하고 몰라도 사용하는데 지장없는 그런 것들이었다.

윈도우로 넘어가면서 캐럿은 획일화 되었다. (윈도우 내부에서 커서는 마우스 포인터를 지칭하는 단어로 바뀌었다. 잘 보이지도 않는 깜빡이는 이 막대기는 캐럿이라 부른다.) 캐럿이 주는 정보는 '여기에 글자가 입력될 것이다'라는 단 한가지 뿐이다. 물론 이전에 쓰던 DOS라는 녀석의 커서란 놈도 밋밋한 놈이었고 응용프로그램에서 임의로 재정의해서 사용했었던 것이긴 하다. 허나 DOS란 녀석은 응용프로그램에서 커서까지 직접 그릴 정도로 OS로써 하는 일이 별로 없었지만, 윈도우 OS는 거의 모든 것을 OS가 관리하다보니 DOS와는 반대로 응용프로그램에서 캐럿을 재정의하는 것은 매우 번거롭거니와 이질적으로 보이기도 해서 대부분 구현하지 않는다. (일부 텔넷 프로그램들은 DOS 시절과 비슷한 모양의 캐럿으로 재정의해서 사용한다.)

영어권 개발자가 비영어권 사용자들을 배려하기 시작한 역사가 짧다보니 한글 윈도우 역시 영문 윈도우를 기반으로 각종 메시지를 번역하고 비영어권 문자를 입력할 수 있도록 IME라는 것을 끼워 넣은 정도 뿐인데, 영어권 사용자들은 다른 언어는 어차피 자기 모국어도 아니니 이런 시스템이 얼마나 불편한 것인지 모를 것임이 틀림없다. 비영어권 사용자는 먼저 입력영역의 캐럿을 찾은 후, 화면 아래 혹은 어딘가에 떠있는 IME 표시창을 찾아보거나 혹은 잘못 입력한 후 무의식적으로 삭제키를 입력하고 재입력한다. IME가 손글씨 입력도 지원하고 도움말(대체 왜 있는지 모르겠다)도 나오는 등 아무리 좋아졌다고 하더라도 영어만 입력하는 것보다 훨씬 불편하게 PC를 이용하는 것이다.

오피스 같은 프로그램은 한글을 영문 모드에서 입력하면 자동으로 한글로 바꿔주는데(요즘에는 포탈 검색창의 자동완성기능에서도 지원된다) 물론 이것도 나름대로 유용한 기능이지만, 애초 입력실수를 줄이도록 커서 모양 자체를 바꾸는것이 더 나은 방법이었을지 않을까... IME에서 현재 상태에 따라 커서모양을 바꿔주는 기능을 해줄 수는 없는 것일까? (다국어 윈도우 판매량도 적잖을텐데 꼭 영문윈도우 방식을 고집해야 하는걸까?) 만약 OS가 사용자를 충분히 배려해 줬다면 웹페이지 입력의 기본값이 한글(혹은 자국어)이어야 하는가 영문이어야 하는가에 대한 논쟁 자체가 의미 없었을지 않을까.

통신방식

컴퓨터 관련 2008/10/06 18:42

어플리케이션 프레임워크 레벨에서 통신은 방법의 차이는 있지만 기본적인 내용은 그리 어렵지 않다.

1. 연결방식에 관한 분류:

  • 트랜잭션 후 연결이 끊어져야 하는가 혹은 다음 트랜잭션을 위해 계속 열려 있어야 하는가? (keep-alive)
  • 데이터를 보내고 받는 연결이 하나인가 2개 혹은 그 이상으로 분리되어 있는가?(단일/멀티소켓)
  • 연결이 2개 이상일 경우 요구/응답에 동일한 연결을 사용하는 트랜잭션 위주인가 혹은 요구와 응답이 완전히 분리된 async인가?
  • 누가 서버역할을 할 것인가?

2. 데이터 전송에 관한 분류:

  • 전송이 끝을 어떻게 표시할 것인가? (길이 방식/구분자 방식)
    ※ HTTP는 구분자(2개의 연속된 \r\n)와 Content-length 헤더 혹은 크기+데이터의 길이 방식을 모두 사용
  • 데이터의 포맷을 미리 정의하고 값(value)만 보낼 것인가, 데이터에 라벨을 붙여 보낼 것인가? (고정형/가변형)
    ※ 고정형은 빈 값일 경우에도 해당 위치에 공백을 채워야 하므로 데이터 양이 일정하고 가변형은 필요한 부분만 발췌하여 전송함으로 통신자원을 절약할 수 있지만 데이터 분석에 추가적인 프로세싱이 필요
    ※ 가변형의 경우 '이름:내용[개행]' 방식 등을 사용할 수 있지만 최근에는 XML이 대세

프레임워크 단계에서는 이정도만 구현해도 될 듯.

태터앤컴퍼니가 구글과 합병한다고 한다.

한가지 우려스러운 점은 구글이 인수한 회사 중 개인미디어나 커뮤니케이션 관련 서비스들은 모두 말아먹었다는 것이다. (구글이 말아먹은 웹사이트들) 그냥 둬도 알아서 클 회사 하나 수장시키는 결과가 나오지 않기만을 바란다.

그나저나 직원들이 자사주 갖고 있다면 부자가 될 흔치않은 기회가 아닐까 싶은데...

을일 때는 툭하면 요구사항을 바꾸는 갑이 싫었다. 얘네들은 지들이 오전에 한 말도 까먹고 밥먹고 나면, 혹은 자고 나면 말을 바꾼다고 투덜댔다. 새 업무를 도입하면 새로운 규칙에 따라야지 자꾸 옜날 규칙을 들먹이면서 이대로 안하면 안된다고 우긴다. 어렵게 타협을 했는데도 조금 지나면 다 까먹고 또다시 옜날 식으로 하게 해달라고 우겨댄다. 옜날 방법이 작업량도 몇배 많고 척 보기에도 불편한데도, 심지어 자기들 스스로도 'X같은 시스템'이라 투덜대면서도 그대로 해달란다. 너넨 눈뜬 장님이냐? 대책이 없다.

갑이 되니 을이 영 못미덥다. 레거시 시스템의 규칙을 이해하고 맞춰갈 생각을 않고 자기들 고집대로 진행한다. 시스템 오픈하면 당장 현업에서 전화받아야 할 사람이 누군데... 자기들이 직접 전화받는게 아니니 속편한 소리 한다. 안그래도 일도 많은데 되도록이면 평소 하던대로 하고 싶은데 얘네는 자꾸 새로운 것을 요구한다. 너네들도 쓰던거 버리고 새로 배워 일하라 하면 싫어할 거면서... 불편해 보여도 우린 몇년동안 이걸로 일해왔으니 (다 뜯어고쳐줄 것 아니면) 하던대로 할 수 있도록 만들어 달라고 하는데도 얘네들이 영 말을 안들어먹는다.

그런거지 머... 서로 설득과 협상을 잘해야 윈윈하는거다.

먼저 내 경험부터.

모 대기업에 개발하러 들어갔을때 일이다. 전산시스템이 메인프레임이었는데 사용자는 죄다 메인프레임에 직접 연결된 멍텅구리 터미널(=더미터미널, 지금은 서비스가 종료된 하이텔, 나우누리, 천리안이라 보면 된다.)을 사용하고 있었다. 멍텅구리 터미널의 80컬럼x25줄의 한계 덕분에 전산에 입력하기도 힘들고 어렵게 입력을 해놔도 입맛대로 출력하기가 매우 어렵다 보니 적잖은 사람들이 전산이용을 포기하고 담당자가 엑셀로 관리하면서 가끔 전산에 입력해 주고 있었다. 물론 기본 업무는 잘 돌아갔지만 응용성 정보업무는 전산처리가 불가능했었다.

그러다보니 담당자가 해당 업무에 대해 신에 가까운 권한을 행사하게 되고 담당자들이 술먹고 다음날 출근 안해도 아무도 뭐라 할 수 없을 정도. 하지만 그런 것보다 진짜 문제는 실수를 걸러주는 시스템이 없다보니 누락되거나 잘못 정리되는 자료가 많았다는 것이다. 담당자가 관리하던 여러개의 엑셀파일과 전산자료를 대조해 보면 맞는게 없었으니...

전산 입력이야 필드를 만들어서 어떻게든 할수는 있지만, 현실적으로 담당자가 원하는 모든 형식의 레포트를 만들어 주기는 불가능하다. 그렇다고 비전산 직원에게 DB 오픈하고 SQL을 가르쳐 줄 수는 없고, 원하는 대로 뽑아보는 솔루션이 있기는 하지만 이것도 나름대로 전산에 대한 학습이 필요하다보니 도입이 어렵다. 그러다보니 내 직장의 경우 전산부서 업무의 1/3은 전산으로 조회가 안되는 레포트를 작성하여 엑셀로 내려주는 일이 차지하고 있다. 전산 메뉴의 대부분이 레포트인데도 열이면 열가지 요청이 다 다르니 별도 작성해야 할 레포트도 꽤 된다. 여기는 규모가 작아서 전산부서에서 이런 일도 해주지만, 대형회사라면 전산부서의 도움을 받기가 거의 불가능하므로 어쩔 수 없이 전산에 미등록된 담당자만의 별도의 업무파일이 생기게 된다.

업무자료가 분산되는 것은 담당자가 바뀔경우 인수인계에서 누락되거나, 유출의 위험 등 여러 문제를 야기하므로 회사는 정기적으로 차세대를 도입하는데, 차세대란 단순히 낙후된 전산 환경을 현대적 방법으로 재개발하는 것 뿐만 아니라, 업무를 리모델링하여 업무 담당자가 별도의 업무파일로 관리하지 않게끔 정규화 하는 의미도 있다.

얼마 전 회사에서 전산컨설팅을 받았었는데 컨설턴트가 작업자들 PC를 뒤지면서 개인정보와 관련된 파일이 있는지 꼼꼼히 살펴보았다. 앞서 이야기했지만 업무를 100% 전산으로 커버하기가 불가능하다 보니 PC에 담당자의 별도파일이 쌓이게 마련인데, 역시나 결과보고서에 이런 파일들의 유출에 유의하라는 내용이 있었다.

이제 개인정보 유출되면 X되는 세상이다. 대기업이야 잠시동안 몇몇 부서만 타격 입고 끝나겠지만 작은 회사는 문닫을 위험까지도 있다. 여기는 다행히 얼마 전 CDRW나 USB, 메신저/메일을 통한 파일 전송을 차단하는 솔루션을 도입하여 일부 PC에서 기능 시험중이었는데 금번 유출사건을 계기로 사내 모든 PC에 적용할 명분이 생겼다. 그러나 이것만으로는 부족하고 파일이 유출되더라도 회사 밖에서는 열 수 없도록 암호화하는 솔루션까지도 필요할 듯 하다.

RSS에까지 애드센스 집어넣는, 돈에 환장한 사람들부터 시작해서... (이런덴 결국 끊게 되더라... 나도 돈은 좋아하지만, 환장할만큼 좋아하진 않는다. 아마 그래서 난 돈을 못버는 거겠지만...)

심지어 블로그뉴스, 믹시 이런것까지 꼭 RSS에 포함해야 하나 싶다. 솔직한 심정은 개인신변잡기, 잡상 따위에 얼마나 공감해 달라고 추천까지 달고있냐 묻고 싶을 정도.

누군가에게 상처가 될수도 있는 사항은 혼자 참고 말지 굳이 공개하지 않는데, 오늘따라 짜증이 폭발한 계기가 있다.

어느날부터 한RSS가 버벅거리면서 IE를 응답없음 상태로 몰고 가는데도 참고 있었는데(메모리도 많고 CPU도 듀얼코어다) 오늘따라 그 현상이 너무 심하길래 무엇이 원인일까 찾아봤더니 범인은 믹시였다. 믹시서버 다녀오느라 IE가 먹통이었더라능... 여기저기서 참조되는 서비스가 느리거나 새벽시간 이외의 시간에 장애거는 것은 죄악이라능...

개발자 입장에서 본 진짜 문제는, 플래시 같은 activex 루틴에 진입해서 얼른 브라우저로 리턴하지 않고 시간끌고 있으면 브라우저가 통째로 얼어버릴수도 있다능... 나도 activex 다뤄봐서 안다능... 비동기식으로 구현할 능력이 안되면 제발 이딴거 만들지 말아주길 부탁한다능...

image
ActiveX 컨트롤이 실행되면서 브라우저가 얼어버린 예
왼쪽 위의 조그만 창이 ActiveX에서 띄운 표시창인데, 이 창을 이리저리 움직이면 브라우져가 화면을 다시 그려주지 못하고 이렇게 된다. 물론 브라우저의 메뉴도 뭐도 아무것도 안되며 ActiveX가 할일 끝내고 리턴할때까지 기다리거나 작업관리자에서 강제 종료하는 방법 외에는 할 수 있는게 없다.
(옜날에 다녔던 회사가 개발한 프로그램이라능... 참고로 내가 만든건 아니라능... 난 윈도우 개발은 모른다능...)

 

짜증은 많이 났지만 내 블로그에 똥싸듯 싸지르는 것 이외에는 불만을 말할수 없는 소심한 나는, hosts 파일을 꺼내서 127.0.0.1 api.bloggernews.media.daum.net 와 www.mixsh.com 을 넣었다. 이제 당분간은 내 PC를 괴롭힐 일은 없겠지... (다시 팍팍 뜨니까 기분이 나아졌다.)

한RSS는 script와 object 태그 필터링을 제공하라~ 애드센스, 블로그뉴스, 믹시 등 원치 않는 정보를 필터링하는 기능을 제공하라~ (운영게시판에 쓰면 될 것을 소심하게 혼자 중얼거려본다.)

뚝딱뚝딱

컴퓨터 관련 2008/08/17 17:17

시스템 개선작업 한고비 넘겼다. 두개의 레거시 유물을 들어내서 관에 처박았다. 난 이 유물을 굉장히 싫어하는데, 왜냐하면 일단 개발당시 소스코드가 숨겨져 있었고(개발업체의 비밀이라나), 이후 개발업체가 무너지면서 소스확보는 했지만 개발업체 자신들조차도 소스관리가 전혀 안되어서 뭐가 어떻게 동작하는지 알 수 없게 되어버렸기 때문이다.

어딘가 변경해야 할 일이 생겼는데 파일을 검색해 보니 똑같은 이름으로 내용이 다른 소스가 수십개 나오고, 한숨쉬며 모두 컴파일 해봤는데 지금 돌아가는 것과 동일한 파일이 나오지 않으면... 대부분 기존 루틴을 그냥 두고 함수(메소드)명 뒤에 2,3,4씩 붙인 복제품을 만들어서 땜질로 넘어갔는데, 이런 땜질도 계속 하다보면 어느순간 스파게티 괴물이 되어 버린다.

스파게티 괴물에 몇번 당한 이후 이제는 아예 새로 작성해서 올리고 있다. 적어도 남이 만든 괴물보다는 내가 만든 괴물이 통제하기 쉬우니까. 다만, 기존의 여러 노하우를 100% 흡수하기는 어렵기에 매번 예외가 튀어나온다. 그로인해 혼란이 생기더라도 관에 처박은 유물을 다시 살리고 싶지는 않다. 이번 개선사항도 프로덕션 적용은 끝났고 이번주만 잘 버티면 관뚜껑을 덮고 파묻어 버릴 작정이다. (영구보관 백업만 남기고 삭제해버릴꺼라는...)

그리고 또다른 레거시 유물을 찾아 다니는거다. 결국엔 다 뜯어고칠 것 같은데 이러다 차세대 안해도 될 정도까지 가는게 아닐까 모르겠다.

소스코드가 있더라도 작성자의 개성 때문에 동작을 모두 파악하기는 무척 어려운데 소스코드마저 없는 모듈이 있다면?

소스코드도 없고 디컴파일도 불가능하여 유지보수도 불가능한 완벽한 블랙박스가 된 모듈이 있다. 이 모듈은 몇달 전 구형 시스템을 새 시스템으로 교체할때부터 뭔가 이상하게 동작하는듯 했지만, 서버를 몇번 재시작하면 그럭저럭 동작해서 조금 찜찜했지만 무시하고 있었다. (다른 일도 많은데 그럭저럭 돌아가고 있는 모듈 손댈 여력은 없다.)

하지만 소프트웨어는 끊임없이 변화하는 법이다. 업무환경 변화로 인해 기존 규격으로는 처리할 수 없는 일이 생겨서 업그레이드가 필요해졌고 이참에 조금씩 블랙박스를 제거하고 유지보수가 가능한 모듈로 대체하기로 마음먹었다. 그래서 이 블랙박스를 사용하는 A, B, C, D 업무 중 먼저 의존도가 낮은 A 업무의 모듈을 제거했다.

A업무가 이상없이 동작하는 것을 확인하고 뿌듯한 마음으로 B 업무를 테스트 하는데 어딘가 이상했다. 데이터 전체가 쓰레기 값으로 채워져 있어서 프로그램을 다운시키는 것이다. 한참을 씨름하다가 A 업무에서 제거했던 블랙박스를 다시 원상복귀하니 정상으로 돌아가는 B 업무... 몇달 전 시스템 교체 이후 B 업무가 운영중 종종 이상하게 동작하는 것을 눈치채고 있었지만 그리 많이 사용하는 것도 아니었고 그럭저럭 돌아가기는 해서 애써 무시하고 있었는데 이번 작업 덕분에 심각한 결함이 있다는 것을 알게 되었다.

블랙박스 내부에서 무슨짓을 하는지는 모르겠지만(고의적인 프로텍트는 아닌듯 하고 아마도 데이터 초기화 중의 버그로 생각된다) 한번에 완전히 제거를 해야 할 상황이다.  문제는 C, D 업무의 의존도가 너무 높아서 한번에 제거하기가 쉽지는 않을 듯 하다. 이런 일은 장기적으로는 도움이 되지만(어차피 언젠가는 해야 한다) 당장 효과를 보는것은 아니다보니 유지보수 업체에 맡겨버리고 싶은데 유지보수 업체도 여러 우여곡절이 있어서 아무래도 직접 해야 할 듯 하다. 하지만 매일매일 일과도 힘들고 피곤한데 야근까지 하기는 싫으니 일할 시간은 휴일뿐...

따지고 보면 당장 티나는 일이건 그렇지 않은 일이건 모두 조직을 위한 것들이고 월급값은 충분히 한다고는 생각하지만, 경영진에게 그들이 이해할수도 없고 업무량 측정도 불가능한데다가 얼마나 급한 건지 와닿지도 않는 것들(비록 약간의 애로사항이 있을지는 몰라도 일단 돌아가기는 하니까 경영진은 굳이 손댈 필요가 없는걸 불필요한 일을 만든다고 생각하게 된다)을 평가해 달라고 들이밀 수는 없는 노릇이다. 간혹 나처럼 개발 반 운영 반인 위치의 사람들이 자발적으로 야근해가며 업무 개발했다는 이야기가 이제는 왜 그랬는지 이해가 된다.

지난주까지 힘들고 바쁘게 했었던 원격 프로젝트 관련 일은 며칠 딜레이가 되었는데 내가 원인을 제공한 면도 없잖아 있다. 뒷말 많겠네... 돈도 안받고 남의 것 일해주는건데(물론 회사의 동의를 얻고) 계획이 지연됐으니 아마 신나게 내 욕했을 건데, 해주고도 기분이 좀 불편하다.

지금 사용하는 PC는 2006년 9월에 맞췄었다.

371629

문제는 아직 2년도 안지났는데 "느려터져서 못쓰겠다"는 말이 나온다. 게임이나 동영상 등은 대충 참아가며 쓸 수 있겠는데 내가 집에서 하는 것의 대부분인 '인터넷 서핑'이 심하게 느려졌다. 이전부터 플래시는 버벅대길래 포기했고 IE7 업데이트 이후로는 보통의 서핑에도 버벅임을 느꼈는데, 설상가상으로 요새 (안그래도 플래시나 이미기 따위가 엄청나게 많은) 지마켓 둘러보는 재미에 빠져 있다보니 더 심하게 느낀다. 지마켓에 들어가면 첫화면부터 버벅대기 시작하고 관심상품 보느라 탭을 세개쯤 열면 최소 10여분간은 IE가 꼼짝도 하지 않을 정도.

이전에도 PC는 2~3년 정도마다 한번씩 업그레이드 해서 써오긴 했는지라, 먼저 CPU부터 찾아봤는데 인텔 이 나쁜놈들, 뭐가 이렇게 복잡한거야? (실은 관심가질 이유가 없다보니 모른다. 네이버에 물어보니 나처럼 헷갈리는 사람들 많네...)

대략 속도는 http://www.brainbox.co.kr/table/chart_new.asp?target=6 이렇다고... AMD 불쌍타.

어쨌거나 메인보드 매뉴얼을 보니 펜티엄4/펜티엄D까지 지원한다고 써있다. 메인보드가 구형(1.0)이라 펜티엄D 듀얼코어까지만 지원하고 비슷해 보이는 Core2 Duo쪽은 지원 안하는듯. 그 계열을 찾아보니 대충 끼워서 잘 돌아갈 것 같아 보이는 CPU는 7만원이면 살 수 있겠는데 문제는 OS가 DSP 버전이라 CPU가 바뀌면 OS도 바꿔야 한다. 이건 배보다 배꼽이 더 큰...

다른 선택으로 새 PC를 사는것도 알아봤는데, 위 사양처럼 저렴하고 어중간한 사양으로 뽑았다가는 이번에는 1년도 못가서 느려서 못쓰겠다는 말이 나올 것 같아서 나름 고사양(대략 3년쯤 후엔 어중간할 사양)으로 뽑아보니 OS 빼고 부품값만 50만원이 나왔다. 난감해서 사이트를 뚫어져라 보다보니 이참에 아예 미친척하고 쿼드코어로 가볼까 하는 생각까지 드는 바람에 얼른 창을 닫아버렸다.

지금 빠르고 비싼걸 사더라도 무어의 법칙에 의해 2~3년만 있으면 빠르다는 말은 안나올거라는 생각이 드니 아깝고, 그렇다고 지마켓 페이지 하나에 10분씩 버벅이는걸 그냥 두고 쓰기도 좀 그렇고... 옜날이야 PC 한대가 한달치 월급 했었지만 인터넷 서핑이나 하려고 그만큼 쓰기에는 조금 애매... 어쨌거나 고민중.

nProtect 류를 싫어하는 분께는 안된 이야기지만... (물론 나도 좋아하는 건 아니다.)

지난 2월 말경에 방영된 취재파일4321의 인터넷 뱅킹 문제 제기에 대한 대책으로 차후 키보드 보안 등의 보안 프로그램이 무력화 된 경우 인터넷뱅킹 업무 자체를 사용할 수 없도록 강화될 예정이다. 그러니까 보안프로그램을 무력화하고 우회할 수 없도록 개선하여 더 강화하겠다는 이야기.

방송 내용은 조금 억지스러운 면이 있었지만 아주 황당한 건 아니었는데 해커가 특정 PC를 완전히 장악하고 비밀번호 등을 실시간으로 가로채면서 사용자가 입력한 값을 변조하고 해커 자신이 거래를 일으키는 내용었다. 이런 경우는 보안프로그램 보다는 PC 이용을 즉시 중단하고 OS를 재설치하는게 가장 최선의 답이지만 대부분의 사용자는 PC가 크래킹 당했다는 사실조차 인지하지도 못한다. 그렇기 때문에 더더욱 보안 프로그램이 필요하다. 보안 프로그램이 무력화 되었기 때문에 고스란히 해킹을 당한게 아니냐 라는게 감독기관의 이야기.

기계고장여파

장비도입은 제안 받고 사양을 결정한 후 견적 받아서 비교하는 등 나름대로 절차가 있는데 워낙 시급하여(며칠째 미러링도 안되는 임시장비로 돌렸으니) 시간 걸리는 절차는 건너뛰고 기안올렸는데도 즉시 결제됐다. 윗분도 꽤 까다로운 편인데 이것저것 따질 때가 아니라는걸 알았던 듯. 그리고 결제 당일 저녁부터 장비들이 도착했다. 이렇게 도입된 장비는...

  1. EMC 어레이
    전원 및 UPS모듈, 컨트롤러 모듈, 디스크 모듈이 한 세트.
  2. SAN
    EMC 어레이와 기존의 HP 어레이를 SAN으로 묶어 스토리지 전체를 이중화. 물론 SAN 장비도 2대를 가져다 놓고 이중화.
  3. LTO3 테이프 라이브러리
    이건 일주일쯤 늦게 납품. 400GB짜리 테이프가 열개쯤 들어가는데 두달이 지난 지금도 여전히 1번 테이프를 쓰고 있다.

그리고 신정도 지나고 설날도 지났는데도 여전히 할일이 많다. 일을 주도해 나가야 여유있게 할 수 있는데 아직도 일에 쫓기고 있다보니 여유가 별로 없다.

레몬펜 왜 이리 인기가 없을까?

레몬펜은 매우 흥미로운 아이디어임에도 불구하고 주석을 남기는 일에 동참하거나 내 블로그에 달지 않는건 세가지 이유가 있다.

  1. 한두 문장 혹은 단어에 대한 의견은 댓글로도 충분히 기능을 할 수 있다.
    특히 관리자의 댓댓글(피드백)이 있을 경우 블로그에 통합된 댓글시스템이 관리자 및 손님들에게 더 편리하다. (레몬펜에도 댓댓글 및 알림기능이 있는것으로 보인다. 사용하는 사람의 스타일에 따라 편리성이 갈릴듯 하다. 그러나 블로그 시스템과 분리된 피드백 시스템은 후에 문제를 만들 가능성이 있다.)
  2. 내 컨텐츠에 타인이 줄긋고 낙서해서 지저분하게 만드는 것이 싫다.
    이것은 내 블로그에 달지 않는 근본적 이유이다. 싸이월드의 다이어리에도 유사한 기능(도장)이 있는데 한두개라면 예쁘지만 유명인의 경우 글을 완전히 가리고도 모자라 2중 3중으로 찍힐때가 있다. 도장은 조잡하고 지저분하고 산만하여 컨텐츠를 방해한다.
    레몬펜에 대한 부정적인 느낌은 싸이에서 받았던 지저분함이 연상되기 때문인듯 하다.
  3. 레몬펜의 아이디어는 책에 줄긋고 메모남기는 것에서 따왔다고 하는데, 이런 행위는 보통 책을 내가 사서 소유했을 경우에 행한다. 도서관처럼 남들도 함께 보는 책에 줄긋고 메모남기면 아마도 무수한 욕을 먹을 것이다. (레몬펜에는 비공개 메모기능도 있는것 같다. 한두 문장 스크랩이 얼마나 유용한지는 모르겠지만. 물론 내 경험은 공개된 메모 뿐이다.)
    블로그는 혼자만 보는것이 아니다. 나는 블로그 하나하나가 여럿이 빌려볼 수 있는 책으로 여긴다. 그렇기 때문에 손님이 컨텐츠에 직접 이런저런 낙서를 남기는 것은 썩 내키지 않는다. (컨텐츠 주인이 직접 레몬펜을 사용하여 주석을 남기는 사용 예도 있을 수 있지만 그럴땐 그냥 컨텐츠를 수정하는게 더 낫다. 수정할 수 있는게 전자문서의 장점이 아닌가.)
    개발자분들께 미안한 이야기지만 솔직히 말하자면 레몬펜으로 덕지덕지 낙서된 페이지는 지저분해 보인다.

사용하지도 않고 사용해 본적도 없으니 다른 세부적인 것들은 모르겠지만, 레몬펜 서비스의 목적부터 나와는 맞지 않다. 아마 앞으로 많은 개선사항이 이루어질 것이라 기대하지만 안타깝게도 나에게 필요한 서비스는 아닌것 같다.

“무료 백신, 세계적으로 유례 없다” 안硏 비판

나는 2000년대 이후로 V3를 써본적이 한번도 없는데 이직후 회사에서 구매한 라이센스가 V3라서 어쩔 수 없이 V3를 사용하고 있다.

잡소리 3번에도 언급했지만, 회사의 어느 기계에 바이러스가 침투했는데 다른 백신은 다 잡는데 유독 V3만 3주간 못잡아서 날도 추운데 밖에서 생고생시키더니 (결국 내가 그 샘플 찾아서 짜증내며 보내줬더니 바이러스로 등록되었다) 며칠 후 엔진 업데이트 했다고 메일이 오긴 왔는데, 지금도 여전히 검출도 안되고 기계는 죽는다. 이거 치료 못한거 맞지?

외국의 VB100인지 뭔지 하는 유명한 백신 평가가 있다. 안랩도 종종 참여하는데 거의 순위에 못드니까 '그 테스트는 지금은 거의 죽은 옜날 바이러스도 있고 국내 실정에 맞지도 않는다'면서 애써 변명하고 무시했다.

어떤 테스트던간에 1등할 생각보다는 온갖 변명으로 일관하며 무시한 결과, 남들은 다 잡는 바이러스를 3주간 그런게 있는지조차 몰랐을 정도로 둔해져 버렸다.

그게 V3다.

기업고객이다보니 종종 광고물이 오는데 말로만 우수하다 하지 말고 평가 자료를 좀 보여달란 말이야... 좀 잘하고나 나서 비판을 해야 소비자들이 납득하지 그저 한심할 따름이다.

두 모델의 방법이 다른데 이건 좋고 이건 나쁘다고 할 수 있을까.

성당을 이용하는데는 많은게 필요하지 않지만(성당식 모델에서는 대부분 돈만 있으면 OK), 시장을 이용하려면 어느 상품이 좋은지 보는 안목부터 가격 협상능력과 여러 상품을 직접 조립해서 원하는 것을 만들어내는 능력까지 필요하다. 잘못하면 있는대로 바가지를 쓰고 결과를 얻지 못할 수도 있다. 마치 매운탕을 먹기 위해 마트에서 매운탕거리 모듬팩을 사서 끓여먹는거랑 생선과 양념과 야채를 모두 따로 흥정한후 직접 손질해서 끓여먹는 것의 차이랄까. 후자가 때론 돈도 적게 들고 까다로운 입맛에도 맞출수 있지만 요리에 익숙하지 않다면 전자가 실패확률이 적은게 당연.

요새는 동네 시장이 전세계 시장으로 업그레이드 되면서 웬만해서는 도저히 둘러볼 수 없게 규모가 커졌다. 그러다보니 그중 몇몇 유명한 상점만 단골로 놓고 다니게 되는데 어느 상점이든 고객이 많아지면 상품이 늘어나거나 분점을 내서 둘러보기 힘들게 된다는... 시장이란 원래 사람도 많고 시끄럽고 번잡한 곳이라 정신차리고 있지 않으면 인파에 휩쓸려 떠돌게 될 뿐이다. 시장형 모델은 특성이 그럴 수 밖에 없으니 따라잡기 힘들다고 불평할 필요는 없을듯.

시장에서 뭘 파는지 아는 것이 삶을 윤택하게 하는데 도움이 되지만, 모른다고 엉망인 삶은 아니다.

만약 제목과 같은 생각을 한다면 말리고 싶다.

USB 디스크는 사용했지만 USB 메모리를 사용해 본 적이 없어 USB 메모리도 USB 디스크와 별 차이 없을거라 생각하고 며칠 전 8G 메모리를 질렀다. (그래봐야 3만원 초반이라 질렀다고 하기도 쑥스럽지만..) 듀얼 채널이 어쩌고 비스타의 레디부스트도 지원하고 읽기 속도가 33MB/s, 쓰기 속도가 19Mb/s라길래 (숫자 들이대 봐야 잘 모르겠고) 쓸만 할 것 같다고 생각했었다.

그러나 실제 속도는 많이 느리다.

USB 메모리에 이클립스를 설치하고 사용해 봤다. JVM 설치 및 Java docs 압축해제, 이클립스 압축해제 등 개발환경 잡는데만 3시간이 걸렸고, 이클립스 구동하는데 세월아 네월아, 옵션을 조정하기 위해 Preferences 창을 여는 데도 역시 세월아 네월아, 컴파일 하는데도 세월아 네월아, 테스트 하는데도 세월아 네월아... 이러다가 신선되겠다.

usb-bench
Zyrus SwingCap Dual 8G HDTune 결과
image
ATTO Disk Benchmark 결과
큰 파일은 그럭저럭 쓸만한데 작은 파일일수록 속도가 엉망이구나

이론상이나 벤치결과로는 로컬 하드디스크보다 두배 정도 느려야 하지만 실제 체감속도는 4배쯤 더 느린것 같다. USB 메모리가 디스크에 비해 Access time도 일정하고 Transfer Rate도 매우 안정한데도 불구하고, 쓰기 작업(치명적임)과 더불어 특히 크기가 작은 파일을 대량으로 읽는 작업이 오래 걸리는듯. USB 디스크는 벤치결과는 좋지 않았지만 그래도 꽤 쓸만 했는데 그것보다 안좋으니 난감.

이클립스 폴더에는 파일이 2,543개 있고 폴더가 694개가 있는데 용량은 230M 밖에 하지 않는다. 대충 평균내면 파일 하나당 100KB밖에 하지 않는다는 소리. 자잘하긴 자잘하구나. 이 파일들을 모두 읽는건 아니지만 역시 작은 파일을 대량으로 다루기는 무리인듯. (읽는거야 몇분 기다리면 되지만 쓰는 속도는 그야말로 좌절. 한시간이 우습게 가버린다.)

그럼에도 불구하고 그간 삽질한 시간이 아깝고 딱히 다른 용도로 쓸 것도 없고 휴대폰에 달고 다니기에도 편하다는 이유로 USB 메모리를 계속 쓰기로 결정한 바보(=나). 어차피 회사 업무와는 관계 없고 책 예제를 돌려 보기 위해 구축한거라 느려도 상관없다고 자기암시를 걸고 있는 중이다. 이러다 책 다 볼쯤이면 어쩌면 신선이 되어 있을지도 모르겠다. 도끼자루 따위 썩던지 말던지 알게 뭐냐~

어째튼 USB 메모리에 무모한짓은 하지 말아야 할듯. 그런데 비스타는 이걸 어떻게 활용하길래 더 빨리 돌아간다고 광고하는 걸까?

간혹 이클립스를 실행하려는데 아래와 같은 내용의 메시지 박스를 띄우면서 실행이 안될 경우가 있다.

JVM terminated. Exit code=-1
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256M
-Djava.class.path=I:\eclipse-j2ee\plugins\org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-os win32
-ws win32
-arch x86
-showsplash I:\eclipse-j2ee\\plugins\org.eclipse.platform_3.3.2.R33x_v20071022\splash.bmp
-launcher I:\eclipse-j2ee\eclipsei.exe
-name Eclipsei
--launcher.library I:\eclipse-j2ee\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.2.R331_v20071019\eclipse_1021.dll
-startup I:\eclipse-j2ee\plugins\org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256M
-Djava.class.path=I:\eclipse-j2ee\plugins\org.eclipse.equinox.launcher_1.0.1.R33x_v20070828.jar

우선 JVM으로 java 1.5 이상을 사용하는지부터 확인 후, eclipse.ini 를 열고 --launcher.XXMaxPermSize 다음 줄의 256M 을 128M 으로 줄인다. JVM에서 메모리 할당 관련 오류로 보이는데 값을 낮춰도 사용하는데 큰 지장은 없는듯 하다. 다만 사용중 버벅대거나 어디선가 알 수 없는 오류가 발생할 가능성이 있는데 실제 겪어본적은 없다.

기억해두는게 좋을 것 같아서 따로 남김.

  1. 오라클이 BEA를 인수하다.
    BEA는 웹로직으로 유명한데 J2EE 환경을 접할 기회가 없어서 잘 모르겠다. DB 회사가 어플리케이션 서버 시장도 가져간다는 느낌 정도. 오라클에도 어플리케이션 서버가 있고 옜날 한국 오라클 홈페이지가 그걸 이용한걸로 아는데(지금은 모름), 한국 오라클 홈페이지 너무 느려서 오라클 어플리케이션 서버는 신경 껐다는...;;
  2. 썬이 MySQL AB를 인수하다. (AB는 유럽에서 "회사(Co. Ltd.)"라는 의미라고...)
    MySQL은 애초 오픈소스기 때문에 (GPL과 듀얼라이센스) 썬이 MySQL에 대해 특별히 더 오픈소스할 건 별로 없겠지만, 언제부터인가 썬은 오픈소스에 사운을 걸다시피 한 기업으로 변해서 그런지 조금 재밌다. (잘 나가다가 닷컴이 몰락하면서 한때 비싸게 팔아먹었던 것들이 모두 싸구려 중고가 되니까 아예 비즈니스 전략을 오픈소스로 변경한 듯...) 재밌긴 재밌는데 뭐가 재밌는지는 나도 잘 모르겠다.

기존 업무 분석하면서 코드를 보다가 PreparedStatement와 ResultSet을 사용하고 close를 하지 않는걸 또 발견했다. 오픈당시 서버 며칠 띄워놓으면 커서를 오픈할 수 없다면서 죽더니만(그래서 오픈커서를 3,000개로 잡고 서버를 매일 재시작하도록 해놨다), 이제 보일때마다 한숨을 쉬며 고치고 있다.

이래서 초보개발자에게 강력한 API를 쥐어주면 안된다. 특히 그것이 Low-level API라면 더더욱 위험하다. copy&paste하다가 실수로 놓칠 수도 있겠지만, 그런걸 놓친다는것 자체가 이미 기초가 부족하다는 거다. 조엘도 말했지만, 간단한 프로그램을 짜더라도 그 배경을 알아야만 삽질을 덜하거나 버그가 적은 프로그램을 짤 수 있다. 몇개월~몇학기 공부해서는 알기 어렵다.

아래 코드는 무엇이 문제일까?
무엇이 문제일까? (현재창으로 열립니다)

코드를 보자마자 떠올릴 수 있어야 하는 것들:

  1. throws Throwable 및 catch(Throwable) - Throwable은 Exception과 Error를 함께 잡는다. 그러나 Error는 비즈니스에서 처리할 수 없는게 대부분이므로 프레임워크에서 처리하도록 그냥 두는게 옳다.
  2. 불필요한 try ~ catch 문 - 특정 동작 혹은 finally 등 꼭 필요한 경우가 아니면 굳이 모든 예외를 잡을 필요가 없다.
  3. catch 안의 throw new Throwable() - 이렇게 새로 객체를 생성하면 디버깅에 중요한 스택 정보가 날아가서 오류가 발생할 경우 catch 문마다 스택 정보를 찍어가며 확인해야 한다. (잡았지만 처리할게 없으면 잡은 객체를 그대로 throw하면 된다.) 실제로 로그를 보면 '여기까지 실행했나1','2','3','4' 따위가 넘쳐난다. 이건 진짜진짜 명백한 잘못이다. 보는 순간 잘못됐다고 알아챌 수 있어야 한다.
  4. 전역변수 같은건 태클걸기가 미안할 정도니 생략. 다행히 클래스가 매번 new로 생성되서 꼬일 일은 없다. 그러나 싱글턴 클래스에서 전역 변수를 사용하는 코드도 있다. 싱글턴에서 전역변수라니, 대체 어떤 골빈바보인거야? (변하지 않는 값이라면 싱글턴에서의 전역변수도 괜찮다. 하지만 그걸 얘기하는게 아니다.)

보기만 해도 암담하겠지만, 이게 프로젝트 표준이라 모든 프로그램이 이렇게 작성되어 있다. 그렇다. 표준을 설계하는  사람도 경험이 부족했던거다. PreparedStatement를 사용하는데 정작 Parameter는 하나도 없고 String 안에 변화하는 값이 if문으로 박혀 있다. 이런것들을 리팩토링하려니 한숨이 나오고 의욕이 팍팍 떨어진다.

(어플리케이션을 올리는 서버도 대책없기는 마찬가지. 서버를 직접 제작해서 납품한건데 서버소스가 20여개 밖에 안된다. 서버의 기능이라고는 thread pool과 connection pool, class reloading뿐...)

SI로 개발하다보면 업무만 알고 기초가 부족한 사람들이 있다. (신입이 경력 2년으로 뻥튀기는 기본이요, 신입생활 6개월 하고 프리 뛰겠다는 자격미달도 있는데 그 수가 적지많은 않을것이다.) 그래서 강력한 프레임웍보다는 SQL과 페이징만 던지면 알아서 결과가 나오는 간단한 쿼리모듈 같은게 더 유용하다. iBatis, Hibernate처럼 강력한 프레임웍을 주면 close 실수같은건 없을지 몰라도 다른데서 또다른 삽질이 벌어진다. 예를들면 API 찾아 응용하기는 커녕 예제 이해도 제대로 못한것으로밖에 안보이는 보이는 코드 등등. 경험상 강력한 기능은 프레임웍 속에 묻어버리고 simple wrapper만 제공하는게 훗날 유지보수하기도 편했다.

물론 나도 말단 초보 개발자 시절에 작성한 코드는 다시보면 한심한 로직이 한두군데가 아니다. 잘못 작성해서 새로 작성한 적도 여러번 있다. 그래도 괜찮다. 그 업무만 망가지면 되니까. 하지만 서버나 코딩표준을 설계하는 사람은 충분한 경험이 있는 사람이 맡았어야 하지 않았을까?

결론. 강력하고 복잡한 API를 초보에게 던져주면 나중에 어처구니없는 코딩에 당한다. 그렇다고 프로젝트에서 초보를 안쓸수는 없으니 되도록 단순한 wrapper를 제공하고 그것만 쓰도록 유도하는게 좋겠다. 그리고 초보에게 서버나 코딩표준처럼 중요한 임무는 맡기지 말자.

리팩토링

컴퓨터 관련 2008/01/14 22:45

업무요건이 바뀌면서 프로그램에 버그가 생겼다. 아니 애초 일정의 압박 속에서 업무 확장성 따위는 생각 않고 만들어진 프로그램이었기에 업무가 변경되면 필연적으로 버그가 나올 수 밖에 없었다.

불행의 첫번째는 테이블 설계자가 아마추어여서 테이블이 충분한 검토 없이 만들어져 데이터의 특성이 완전하게 반영되지 않았다. 두번째 불행은 개발당시부터 드러났는데, 완전하지 않은 테이블에 억지로 데이터를 구겨넣었다 보니 도저히 추출조건을 간단하게 만들 수 없었다. 테이블 구조를 바꿨거나 데이터를 단순하게 했다면 보다 쉽게 해결됐을텐데 초보 설계자의 고집으로 개발자는 일차쿼리, 이차쿼리로 나눠 추출프로그램을 작성했다. 덕분에 개발당시에도 15분씩이나 걸리던 지옥같은 수행시간이 현재는 30분 이상 걸리는 괴물이 되어버렸다. 세번째 불행은 데이터를 추가할때 제약조건을 명확히 하지 않아 데이터가 엉킨 전선처럼 마구 꼬여버렸다.

그간 이 괴물을 어찌어찌 달래오다가, 버그로 손대는 김에 데이터와 쿼리만이라도 리팩토링을 하기로 했다. 먼저 잘못 참조하는 데이터를 찾아 목록을 만들어서 현업에 전달하며 정리를 요구했다. 다음은 데이터를 조작할때 제약조건을 추가했다. 그리고 일차쿼리, 이차쿼리로 된 500여 줄이나 되는 추출문을 버리고, 요건을 다시 정리하여 동일한 결과를 리턴하는 새 싱글 쿼리를 작성했다.

업무는 명확해졌고 수행시간도 3분 이내로 단축됐다.

부정적 효과로는 머리카락이 좀 빠졌다. ㅠㅠ

불행한 건, 이게 끝이 아니라는 것. 끝은 커녕 이제 시작이다.

나의 회사 업무환경에서는 MVC에 최신 프레임웍 이런건 구경도 못해봤고 그냥 단순 코딩 삽질 노가다인데..

  1. html을 연다. (혹은 만든다.) 테이블을 잘 그리고 input field를 이름과 크기, 속성에 신경써서 넣는다. (물론 태그 날코딩.) 필요한 이미지는 뽀샵 라이센스가 없으므로 유지보수 회사에서 받아온다.
  2. java 파일을 연다. (혹은 만든다.) jsp는 아님.
  3. caller interface에 맞게 메소드 껍데기를 만든다.
  4. 일단 메소드 안 모든 코드를 try ~ catch 로 감싼다. (누구야 이렇게 구성한사람)
  5. DAO 클래스를 호출하도록 코딩한다.
  6. DAO java 파일을 연다. (혹은 만든다.)
  7. 메소드 껍데기를 만든다.
  8. 일단 메소드 안 모든 코드를 try ~ catch 로 감싼다. (...)
  9. StringBuffer를 선언하고 append 로 SQL문을 붙인다. (어쭈)
  10. PreparedStatement를 받아서 execute 한다. (Connection을 직접 관리하라니!)
  11. fetch해서 Properties에 넣은 후 Vector 안에 넣고 DAO는 리턴한다. (에휴)
  12. DAO 결과를 받아 display 모듈을 호출한다.
  13. display java 파일을 연다. (혹은 만든다.)
  14. 데이터를 가져와서 화면 모듈에 넣는다. (화면 모듈이 자동으로 html에 넣어준다. 이거 한가지는 그럭저럭 자동화되어 있음.)

그러니까 동작 하나에 1개의 html과 3개의 클래스가 필요하다. 어찌보면 나름 MVC긴 하지만, 뻔하디 뻔해 거의 패턴화된 코드를 매번 손으로 직접 쳐야 하는건 짜증스럽기도 하고 본수만 많아 귀찮기만 하다. (다른 회사의 코드도 종종 볼 일이 생기는데 별반 다를거 없더라.)

호환 문제로 맘대로 다른 방식으로 코딩할 수도 없다. 여러 리팩토링 책도 봤는데, 이론과 현실은 많이 다르다. 가장 불편한 부분을 리팩토링하려면 일단 caller 인터페이스부터 손봐야 하는데 거기에 묶인 클래스만도 1300개라 쉽사리 손댈 엄두가 나지 않는다. (전체 소스는 2,800개 정도 된다.) 아무리 툴이 좋더라도 반드시 사람의 손을 거쳐야 하는 부분이 있게 마련이고 더군다나 주먹구구로 개발했으니 필요한 수작업은 훨씬 많다. 더 무서운건 만약 수정한 프로그램이 잘 안돌아갈 경우 불타버릴 전화기며, 프로그램 수정하기 위한 결제절차(cvs, svn 같은게 아님)까지 생각하면...

불편해도 그냥 있는 그대로 쓰고 말지.

아, 돈을 좀 투자해서 반년간 사람을 열명쯤 살 수 있다면 리팩토링이 가능할 수도 있겠다. 근데 그런건 보통은 새로 만든다고 하지, 리팩토링이라 부르진 않는다.

덧. Cobol로 만들어진 시스템도 함께 운영하는데 문법과 컴파일러만 다를 뿐, 속사정은 똑같다. 왜냐면 Cobol 시스템 만든 사람들이 Java를 공부해서 (거의 테스트로) 설계하고 만든것이기 때문. 당연히 제대로 된 프레임웍일리가... 없지. OTL

하지만 내 언젠가 반드시 이거 들어내 버릴거야~

애니콜 PC Manager 프로그램에 불쾌한 프로그램이라는 표현까지 쓸 정도로 안좋은 기억을 가지고 있었다. 안그래도 안티였는데 PC 매니저 프로그램을 실행하면 "데이터통신준비중" 상태로 멈춰있는 현상까지 발생해서 아예 사용할 수가 없었다. (설치 중 HSP 드라이버 인식하는것도 확인했었음 - 장치관리자에서 보면 USB Composite 에서 High Speed USB로 전환된다던지 이런것까지 알 정도로 참 많은 닭질을 했었다)

어차피 돌아가지도 않는 프로그램, 포기하고 있다가 이직 후 전화번호를 대량으로 정리할 일이 있어 속는셈 치고 다시한번 설치해 보기로 했다. (또 안돼면 아예 안티사이트를 개설하려는 불순한 의도도 다분히 있었음) 애니콜 홈페이지에 들어갔더니 뭔가 개편을 했는지 사이트가 확 달라져 있었다. 그리고 다운로드 페이지에 네이버 툴바 설치문구가 사라졌다. 뭔가 변화가 있는것 같았다. 일단 라이트 버전을 다운로드했다.

설치화면
달라진 설치화면

설치 옵션이 생기더라도 대부분의 사람들은 아마 기본값 그대로 다음 버튼만 누를 것이지만 툴바 설치를 선택할 수 있는 것은 일단 좋은 징조다. 그런데 왜 Naver에서 Daum으로 바뀐걸까?

설치를 마치고 드라이버를 잡고 프로그램을 처음 실행하자 장황한 업데이트를 시작했다. 오랜시간 기다려 업데이트를 마치고(다운로드하고 설치하는 시간보다 더 걸린듯) 메인 화면이 나타났을때 잠깐 놀랐는데...

메인화면
심플하다!

라이트 버전의 특징인지는 몰라도 그 꼴보기 싫던 주객이 전도되었던 화면이 아니다. 드라이버 인식도 문제없이 OK. 이게 대체 얼마만에 써보는 것이냐.

중요 불만사항이었던 툴바 설치와 로그인(여전히 로그인은 필요하지만 시작하자마자 로그인할 필요는 없어졌다), 시작프로그램 자동등록 및 주객이 전도된 메인화면은 개선이 되서 다행이다. 여전히 메신저에 대한 미련은 못버렸는지 메신저 메뉴가 있긴 하지만 메인화면에서 바로 뜨지 않는 것만 해도 어디냐. 오른쪽 위의 X버튼으로 종료되지 않는 것은 여전한데 역시 그놈의 메신저 때문이겠지. 그렇게 메신저사업 하고 싶으면 메신저만 따로 하던지.. 셀러론에서는 무거워서 버벅거려 못쓰겠구먼.

여하튼 메신저와 애니콜 포탈화 미련은 그만 좀 버렸으면 좋겠고, 어쨌거나 지난 버전을 거울삼아 앞으론 삽질하지 말라. 알간?

우리 회사는 업무에 필요한 S/W라면 정품 사준다.

1. 당신이 사용하고 있는 컴퓨터에 설치되어있는 윈도우즈는 정품입니까?
A. 회사는 Windows XP Professional OEM, 집에서 쓰는 개인PC는 DSP로 사용. 그러나 부모님 드린 낡은 PC는 아직 라이센스가 없다.

2. 당신이 사용하고 있는 한글프로그램은 정품입니까?
A. 회사는 정품. 그러나 부끄럽게도 집에서 개인적으로 쓰는 PC에는 정품이 아님. 손에 익지도 않고 읽을 일도, 쓸 일도 거의 없어서 뷰어 설치로 대신하려 함.

3. 당신이 사용하고 있는 오피스(엑셀, 파워포인트)프로그램은 정품입니까?
A. 여전히 회사는 정품. 집에서 쓰는 PC는 정품이 아니지만 Home 라이센스 제품 구매를 생각하고 있다. StarSuite(OpenOffice 이전버전)는 정품으로 있는데 잘 호환되지 않아 사용하지 않고 있다.

4. 당신이 사용하고 있는 포토샵은 정품입니까?
A. 회사에서는 업무와 직접적 관련이 없으므로 미설치. 개인적으로 불법CD는 갖고 있지만 언젠가부터 포토샵을 실행한 적이 없어 이제는 설치하지 않는다. 주로 Resize와 Crop만 쓰는데 요새는 다른 프로그램에도 그정도 기능은 다 있으니 필요 없기 때문.

5. 당신이 사용하고 있는 플래시, 드림위버는 정품입니까?
A. 플래시, 드림위버는 회사에서도, 개인적으로도 사용하지 않으므로 미설치. 그러나 회사에 드림위버 라이센스가 3개 있는 것으로 알고 있음.

6. 그 외 당신이 사용하고 있는 프로그램중에 정품을 구입하셔서 사용하고 계신것이 있나요?
A. EditPlus(회사 및 개인 모두 라이센스 보유), DK Note(회사), Toad(회사-300만원 짜리라고...), Golden32(회사), Netterm(회사), Acrobat(회사-기능제한 없는 번들), TotalCommander(회사), V3(회사), Kaspersky(집), Avast Home Free(집).

회사 PC는 정품점수 백점이예요. 짝짝짝. 떴떳할 수 있어 기분은 좋다. 근데 우리 회사는 개발회사가 아니다. 당연히 내가 속한 부서도 회사의 주력부서는 아니다. 그런데도 개발회사 다닐때보다 정품을 더 많이 산다. 다만, 아직까지는 개인적으로 쓰는 프로그램들 중 불법이 꽤 있지만 조금씩 정품으로 교체해 나가고 있다.

안타까운건 이 소프트웨어 목록('패키지'라 불리는 것)에 국산은 별로 없다는 것이다. 물론 해외 개발자들의 노고를 무시하는건 아니지만, 이왕이면 이 돈이 먼저 국내에서 돌았으면 하는데 (그래야 내수가 살고 수출도 하지) 죄다 해외로 빠져나가니... 정품 쓰고서도 무역적자에 일조한 셈이라 조금은 안타깝다. 고부가가치 산업이니 뭐니 하면서 분위기만 띄워놓고 해외로 수출하지도 못할 SI나 키워놓은 정부 책임도 있다고 본다.

돌이켜보니 개발회사에 있었을때 불법 사용이 더 많았다. 내 과거만 돌아봐도 몇십억은 나올걸. 개인적으로 쓰는 프로그램들도 따지고보면 회사에서 쓰다보니 가져오게 된거고. 변명이야 있지만 구차해서 안할란다. 나도 패키지 개발의 꿈이 있었다고.

p.s. SI 사장이 개발자 월급 너무 많다고 신문에 기고하는 판인데, SW 개발자가 정당한 대우 받기를 기대하는것도 무리요, 노가다 일당잡부 취급 받는 사람이 만든 제품이 정당한 평가를 받는것도 무리지 않을까나... 유난히 SI회사가 불법복제율이 높은건 회사는 관리(여기엔 SW관리도 포함.. 일당잡부처럼 사람 자주 바뀌는 특성상 license 관리가 어려우니까) 안하려 프리 쓰고 프리는 자기돈 들여 사기엔 비싸고 비교적 도망다니기 쉬우니까 불법쓰고... 한 회사에서 진득히 눌러있다보면 언젠가 방문할지도 모를 SW 단속에 대비하게 되는데 여기저기 왔다갔다 하다보면 안걸리면 장땡이라는 마인드가 생길 수밖에 없지.


관련: 정품을 사용하고 계십니까?
정품을 사용하고 계십니까?

업무 마감 직전, 스토리지가 갑자기 다운됐다. 비상시를 대비해서 스토리지 컨트롤러는 2개를 사용하는데 2개 모두 동시에 죽었다. 로컬 디스크에는 프로그램이, 스토리지에는 메인 DB가 들어있는데. 스토리지 다운과 동시에 DB가 정지되고 DB 없이 할 수 있는게 거의 없다보니 결국 시스템도 정지됐다.

곧 비상이 걸렸고 복구에 들어갔다. 그런데 밤을 꼬박 새고 아침 7시가 넘었는데도 아무것도 못하고 있다. 기다리다 지쳐 정오께 상황을 자세히 설명해 달라고 하니 스토리지가 완전히 고장나는 바람에 스토리지 내부의 백업(미러링)도 인식되지 않아 데이터가 유실되었다고.

가장 중요한 데이터가 유실되었으니 쉽게 말 못하는 처지는 이해하지만 영업도 못하고 잘 되기만을 기도하면서 기약없이 기다릴 수 만은 없는일. 부장님이 결단을 내렸다.

"목요일 데이터 포기, 수요일 데이터로 복구"

비상이 재해로 바뀌고, 백업자료를 꺼냈다. 문제는 최종 전체백업이 2005년. 나는 입사후 두달동안 이전에 하던 그대로 운영하기만 해서 전체백업이 그렇게 오래 전이었는지 몰랐던 일이라 당황했다. 그렇더라도 손놓을 수는 없으니 일단 2005년 자료로 DB부터 다시 잡은 후 밤새 수요일자 백업된 데이터를 올렸다. (고객 데이터 만큼은 매일 안전하게 백업해 놓는다.)

하드웨어 복구와 데이터 복구로 이틀을 꼬박 새고 토요일 새벽부터 전 직원이 달라붙어 목요일 및 금요일 자료 재입력에 들어갔다. 백업목록에 빠진 자료(2005년 자료) 재작업 등의 삽질을 거쳐 저녁나절에야 재입력이 모두 끝났고 자료가 약간 맞지 않았지만 모두들 상태가 좋지 않아 일단 퇴근했다가 일요일에 다시 출근해서 완전히 맞췄다. 만세~

여기서 끝나면 해피했을텐데, 월요일 영업을 시작해보니 문제가 발생한 스토리지에서 지속적으로 문제가 발생했다. 근근히 버텼지만 수요일에는 컨트롤러가 스스로 수초~수분씩 죽었다 살아났다 오락가락하면서 모두의 간을 잔뜩 오그라들게 했다. 결국 수요일 밤, 임시 스토리지를 빌려 밤새워 데이터를 옮겼다.

동시에 새 스토리지 구매 결정. 그리고 금요일 새 스토리지 납품. 또다시 밤새워 데이터를 옮겼다. 덩달아 백업 룰도 교체하고 비상가동체제도 재정립하기로 했다.

원래 다른 업무도 많았는데 갑자기 고장난 기계 덕분에 일정 맞추기 힘들어졌다. 오늘도 휴일인데 일하고 있고 앞으로도 한동안(12월 중순까지) 여전히 야근과 휴일출근이 계속될 예정. 아우 졸려...