Do Not Think!!!

Posted
Filed under 글로 기록하기
UP Server(Universal Process Server)를 발표합니다.

UP Server는 PQ-Studio로 만든 업무용 소프트웨어를 실행주켜주는 PQ-Server, PQ-Portal, 그리고 BOS의 기능을 포괄하는 웹 기반 시스템입니다.

2005년 8월부터 시작한 프로젝트이니 1년 6개월만에 제품을 발표하는 것입니다. 프로젝트를 진행하면서 제일 어려웠던 점은, 기술적인 문제가 아니라 정치적인 문제였던 것 같습니다. 다행히 정치적인 문제는 종원선배가 대부분을 해결했기 때문에, 저는 크게 신경을 쓰지 않았습니다.

기반지식이 전혀 없는 상태에서 시작해, 맨땅에 해딩의 연속이었지만... 그렇기 때문에 좋은 것을받아들이는 것도, 나쁜 것을 버리는 것도 빨랐습니다. 프로젝트를 진행하면서 얻은 제일 큰 재산은 기술이 아니라 팀 경험인 것 같습니다.

제품 발표 준비 하느라... 말도 안되는 어깃장을 받아주느라...준배씨와 규현씨가 요 몇일 사이 매우 힘들었을텐데 잘 진행해줬습니다.

이번 발표때문에
제품의 완성도를 높였습니다.
우리의 적이 누구인지도 명확하게 알게 되었습니다.
고맙습니다.
Posted
Filed under 01010101
쿠키에 대한 자세한 정보는 다음 주소에서 확인하세요.
http://www.ietf.org/rfc/rfc2109.txt

  • 쿠키는 서버가 브라우저에 전송하는 정보입니다.
  • 이후 서버에 접속할 때마다 서버로 쿠키를 전송합니다.
  • 제약사항
    • 브라우저는 사이트당 20개의 쿠키만 받아들임
    • 사용자당 총300개만을 사용할 수 있음
    • 각 쿠키의 크기는 4KB
    • 쿠키를 받아들이지 않는 브라우저가 있음

샘플 코드 (Language : java)
  1. /*
  2. 서블릿 post 메소드
  3. */
  4. public void doGet (HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException
  5. {
  6.    // 쿠키 읽기
  7.    Cookie[] cookies = request.getCookies();
  8.  
  9.    /*
  10.    쿠키 정보를 사용하는 코드
  11.    */
  12.  
  13.    // 쿠키 만들기
  14.    Cookie cookie = new Cookie(name, value);
  15.  
  16.    // 쿠키 쓰기
  17.    response.addCookie(cookie);
  18. }




Posted
Filed under 글로 기록하기
연봉협상이 얼마 남지 않았습니다.

작년을 생각해보면, 협상이 아니라 통보였습니다. 올해도 그렇다는 소문이 있습니다.

과연 회사에서는 직원들의 능력을 제대로 평가를 하고 있을까요?

어떻게 평가를 하고, 어떻게 연봉을 책정하는지 모르겠습니다.

연봉협상이 다가오면서 이런 생각을 해봅니다.

나는 얼마나 받을 수 있을까? 내가 생각하는 만큼 받을 수 있을까?


그리고 결론적으로는
내가 받는 연봉만큼 평가받고 있다.

Posted
Filed under 글로 기록하기
대한민국에서 인터넷뱅킹을 하기 위해서는 ActiveX 프로그램이 설치되어야 합니다. 인터넷 뱅킹만이 아니라 대부분의 웹사이트가 자기 사이트만의 ActiveX 프로그램을 설치하죠.
(웹 접근성 및 웹 표준은 언급하지 않겠습니다.)

안타깝게도 ActiveX가 설치되기 위해서는 Microsoft Windows + IE가 필요합니다.

다른 OS, 다른 웹브라우저를 사용하는 사용자(저는 리눅스 + FF를 이용합니다.)의 PC에는 ActiveX가 설치되지 않습니다. 즉, 인터넷을 제대로 이용할 수 없습니다.

이에 관련해 여러가지 생각들이 있습니다. ActiveX가 왜 필요한지, 왜 나쁜지, 왜 고쳐지지 않는지, 왜 고쳐야 하는지, 어떻게 고칠 수 있는지 등등등...

여기저기서 이에 관련된 논의들이 활발하게 이루어지고 있고, 오픈웹에서는 정부를 상대로 소송을 진행중입니다. (정확히는 금융결제원을 상대로 민사조정을 신청중입니다,)



MS Windows XP Service Pack 2가 나오면서 대한민국 웹은 한번 곤욕을 치뤘습니다. 지금도 인터넷을 하다보면
자동으로 ActiveX 프로그램이 설치되지 않으면, 다운을 받아서 수동으로 설치하세요.
라는 메시지를 자주 볼 수 있습니다.

Windows Vista가 나오면서 ActiveX가 또 다시 이슈가 되고 있습니다. Windows Vista에서는 보안을 위해 UAC 기능을 강화했는데, 이때문에 ActiveX를 사용하기 어렵게 되면서, 여기저기서 문제점들이 터져 나오고 있습니다.

이에 자랑스러운 대한민국 정부에서는 MS에 ActiveX를 쉽게 쓸 수 있게 해달라고 요청을 하고, 당분간 Windows Vista를 사용하지 말라고 했답니다.

이는 ./에서 이슈가 됐는데요, 이게 IT강국이라는 대한민국의 현실입니다.



얼마전에 HTTP를 이용해서 웹서버에 파일을 전송하는 클라이언트 프로그램을 만들었습니다. 물론 웹브라우저에서 동작하는 프로그램은 아닙니다. 거기에서 아이디어를 얻어서 이런 생각을 해봅니다.
꼭 웹 브라우저를 이용해서 전자정부를 이용하고, 인터넷 뱅킹을 해야 하나요?
ActiveX라는 것이 결국에는 사용자 PC에서 돌아가는 프로그램인데...
정말 당신들의 주장처럼 보안때문에 AcitveX를 써야만 하는 것이라면,
그냥 별도의 프로그램을 만들어서 배포하면 안되나요?
HTTP를 사용하면 웹처럼 동작하는 걸텐데요.
그게 더 안전하지 않나요?
그러면 OS, 웹브라우저에 상관없이 누구나 전자정부를 이용할 수 있고, 인터넷뱅킹을 할 수 있을텐데요.



안된다고만 하지말고, 되는 방향으로 생각을 하면 좋을텐데요.

- 공무원들의 안되다고만 하는 태도에 대한 손석희 아나운서의 말
Posted
Filed under 01010101
C#의 constreadonly 키워드는 상수를 선언하는 키워드입니다.

하지만 둘 사이에는 약간의 차이가 있습니다.
const는 선언할 때 초기화 되어야 하지만, readonly는 생성자에서도 초기화 될
수 있습니다.

따라서, 다음과 같이 서로 다른 용도로 사용 할 수 있습니다.

  • const는 코드서 직접 상수값을 설정 할 경우.
  • readonly는 환경설정에 설정된 값을 읽어 상수값을 설정 할 경우.

Posted
Filed under 01010101
RFC 2616에서 인용한 HTTP 정의의 일부분입니다.

The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, protocol which can be used for many tasks beyond its use for hypertext, such as name servers and distributed object management systems, through extension of its request methods, error codes and headers. A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred.


우리가 보내는 데이터는 단지 01 2진수들의 흐름입니다. 좀 더 정확하게는 전기의 흐름이겠죠. 그리고 전기는 계속 흐로고 있습니다. 그렇다면 컴퓨터는 어디부터 어디까지를 데이터로 인식해야 할까요? 그래서 필요한게 프로토콜입니다.

프로토콜은 약속입니다.
내가 ~부터 ~까지 데이터를 보낼테니, 너는 ~부터 ~까지 받아라.
이런 약속은 웹브라우저와 웹서버사이의 약속입니다. 물론 우리가 사용하는 웹브라우저는 이런 약속을 잘 지키도록 만들어졌겠죠.

하지만, 잘 만들어진 웹브라우저만 사용하는 것이 아니라, 우리가 웹클라이언트, 또는 웹서버를 만들어야 할 경우가 있습니다.


저는 서버에 파일을 전송하는 웹클라이언트와 웹서버 프로그램를 만들었습니다. 물론 HTTP를 이용해서 파일을 전송하도록 만들었죠.

웹서버 프로그램은 Java Servlet으로 만들었고, 웹클라이언트 프로그램은 C#으로 만들었습니다

프로그램을 만들다 보니 다음과 같은 문제에 직면했습니다.
  • 웹브라우저에서 Java Servlet으로 만든 웹서버 프로그램 파일을 전송하면 잘 받아집니다.
  • C#으로 만든 웹클라이언트에서 PHP로 만든 웹서버 프로그램에 파일을 전송하면 잘 받아집니다.
  • C#으로 만든 웹클라이언트에서 Java Servlet으로 만든 웹서버 프로그램에 파일을 전송하면 받아지지 않습니다.

이런 문제때문에, HTTP에 관한 RFC문서를 보게 되었고, 다음과 같은 내용을 찾을 수 있었습니다.
  • RFC 1867에 정의된 multipart 포멧으로 data stream을 전송합니다.
  • multipart data stream은 다음과 같이 정의되어 있습니다.

data stream 포멧 보기



즉, HTTP Body는
  • heder-part와 body-data로 이루어지고
  • 각 HTTP Body는 delimiter로 구분됩니다.
  • 그리고 data stream의 마지막에는 close-delimiter로 끝나야 합니다.

기본에 충실했다면, 이런 문제는 바로 해결할 수 있었을 텐데, 그렇지 못했기 때문에 문제 해결에 많은 시간이 걸렸습니다.
모든 문제는 기본에 충실하지 않은 것에서부터 생깁니다.
항상 머리속에 새겨야 할 말입니다.


참고 URL 보기


Posted
Filed under 글로 기록하기
  1. Try again! : 중학교 교과서로 다시 시작하는 영어회화
  2. 생각하는 프로그래밍 : 프로그래밍 본질에 관한 15가지 에세이
  3. The Elements of Style (Paperback, 4th Edition)
  4. 테스트 주도 개발 : Test-Driven Development
  5. 어린왕자 (한영대조)
  6. E=mc2
  7. 코드 한 줄 없는 IT 이야기
  8. 엘러건트 유니버스 : 초끈이론과 숨겨진 차원, 그리고 궁극의 이론을 향한 탐구 여행
  9. 일렉트릭 유니버스
  10. 내 머리로 생각하는 역사 이야기 (개정판)
  11. 웹 2.0을 이끄는 방탄웹
  12. 우주의 구조 : 시간과 공간, 그 근원을 찾아서
  13. 뜻으로 본 한국역사
  14. 교양 한국사 1 : 단군조선에서 후삼국까지
  15. 누워서 읽는 알고리즘
  16. 나는 프로그래머다
  17. 우리역사 과학기행 : 문중양 교수의
  18. 반갑다 논리야
  19. 해커와 화가
  20. 성공과 실패를 결정하는 1%의 Java 프로그래밍 원리
  21. 1000원으로 시작하는 서울 역사 문화 여행 : 따분하고 답답하던 서울이 즐거워진다!
  22. 논리야 놀자
  23. Try Again! : 중학교 교과서로 다시 시작하는 영어
  24. 실용주의 프로그래머를 위한 단위 테스트 with JUnit
  25. 국어 실력이 밥 먹여준다 : 낱말편
  26. 누가 소프트웨어의 심장을 만들었는가
  27. 한단고기
  28. 익스트림 프로그래밍 2판
  29. 뿌리 깊은 나무 1
  30. 마시멜로 이야기
  31. 고구려의 발견 : 새로 쓰는 고구려 문명사
  32. 뿌리 깊은 나무 2
  33. 내 영혼이 따뜻했던 날들 (개정판)
  34. 인생 수업
  35. 지도로 보는 한국사
  36. 코끼리를 들어올린 개미
  37. 시골의사의 아름다운 동행
  38. 자바 IO & NIO 네트워크 프로그래밍
  39. 자바 네트워크 프로그래밍 (개정3판)
  40. 자바 프로그래밍 실전 테크닉300 : Java Cookbook
  41. 고조선은 대륙의 지배자였다
  42. 정유진의 웹 2.0 기획론 : 강력한 웹 2.0 서비스를 만드는 13개의 키워드
  43. 시골의사의 아름다운 동행

작년 한해동안 43권의 책을 읽었네요. 물론 아직 다 읽지 못한 책도 몇권 있습니다.
이 목록들은 작년 한 해 동안 회사에 다니면서 이룬 몇가지 중 하나입니다. 학교에 다닐 때에는 교재 외에는 거의 읽지 않았으니, 이런 발전이 뿌듯하기도 합니다.

어떤 기준으로 책을 선택하는지는 잘 모르겠습니다. 그냥 읽는거죠. 올해에는 좀더 많은, 좀더 다양한 책들을 읽어야 겠네요...
Posted
Filed under 글로 기록하기
한번쯤 쉬어야 하지만, 지난주 구입한 장비를 착용하고 싶은 마음에 무리해서 다녀왔습니다.

사람이 그나마 적은 오전만 타고 왔는데요, 처음 3번정도는 별로 없었지만, 10시 정도부터는 급격하게 늘어났습니다.

헬멧은 따뜻했습니다. 다행히 크게 넘어지너나 하진 않아서 따뜻한거 말고는 다른 느낌은 없습니다.

고글은 눈이 부시진 않았는데, 시야가 확 좁아져서 위험하다는 생각이 들었습니다. 안경때문에 약간 불편한 점도 있었구요.

고글과 헬멧과는 상관없이 다른곳에 부상을 입었습니다. 왼쪽 약지에 타박상을 입었는데, 키보드 치기가 매우 불편하네요.

새 장비를 착용하고 싶은 마음에 억지로 다녀온 스키장이라, 장비 착용해본거 말고는 남는게 없네요.

덧.
리프트 : 21,000원
사물함 : 1,000원
차비 : 18,000원
총 : 40,000원
Posted
Filed under 글로 기록하기
일을 하다보면 종종 잘못된 것을 발견할 수 있습니다.

우리 회사에서는 업무용 소프트웨어를 주는 저작도구 프로그램을 만들고 있습니다. 이 저작도구 프로그램은 .NET기반으로 만들어져 있고, 저작도구의 결과물인 업무용 소프트웨어를 실행시켜주는 운영환경도 같이 제공하고 있습니다. 이 저작도구 프로그램은 .NET 버전만 약 8년이 되었고, 이전에는 MFC버전이 있었습니다. (MFC버전은 얼마나 오랬동안 만들어졌는지 모르겠습니다.)

저는 .NET기반의 저작도구 프로그램으로 만들어진 업무용 소프트웨어를 Java에서 실행시킬 수 있도록 하는 Java기반 운영환경을 만들고 있습니다. 기존에 구현된 기능을 파악하고 Java에서도 같은 기능을 만들어야 합니다. 이때, 단순히 코드를 .NET에서 Java로 변환하는 정도의 일이 아니라, 정의된 기능을 처음부 하나하나 다 만들어야 합니다.

이미 만들어진 프로그램의 기능을 파악하기 위해서는 메뉴얼이 필요하지만, 안타깝게도 우리 프로그램은 메뉴얼에 나와 있는 기능보다는 나와있지 않은 기능을 더 많이 사용합니다. 그러다보니, 메뉴얼보다는 .NET 소스를 직접 분석하면서 기능을 파악하는 경우가 더 많습니다.

소스를 분석하다보면, 도저히 이해가 가지 않는 부분을 발견하게 됩니다. 이때 거의 대부분은
  • 생각부족
  • 설계부족
  • 문서 안만들기
  • 임시적인 해결
  • 개발자간 의사소통 안함
때문인 것 같습니다.

하지만 위에서 나열한 것보다 더 근본적인 문제가 있는 것 같습니다.
잘못을 알았을 때, 바로 고치지 않는 것...

  • 이미 업체에서 이렇게 사용하고 있기때문에 고칠 수 없어요.
  • 고치기에 너무 시간이 오래 걸릴 것 같아요.
  • 당장 고칠 사람이 없어요.
우리는 갖가지 이유들을 대며, 잘못을 고치기를 꺼려합니다.


잘못을 발견했을 때 고치지 않고 묻어두기만 한다면, 조그만 실수가 나중에는 돌이키기 어려운 큰 문제가 될수도 있다는 것을 우리는 너무 관과하고 있는게 아닐까요?


저는 지금도 잘못을 고치지 못하고, 그 잘못을 그대로 옮기고 있습니다.