김동율의 최근 앨범에 들어있는 "아이처럼"이라는 노래입니다.
정말 좋아요.

클래지콰이의 알렉스와 함께 TV에 출연해서 부른 영상입니다.
확실히 사람의 가슴을 찌르는 뭔가가 김동률씨의 노래에는 있는것 같습니다. 알렉스씨도 멋져요.


IT 서적 번역가이며, 최근에 [열씨미와 게을러의 리눅스 개발 노하우 탐험기]라는 책을 낸 박재호[각주:1]님의 글을 소개하려합니다. DeveloperWorks의 [개발자 책꼿이]란에 올라온 유닉스 프로그래밍 서적을 소개하는 글입니다.
 "The Unix Programming Environment"와 "Software Tools in Pascal"이라는 두 권의 원서와 "프로그래밍 수련법(The practice of programming)"(인사이트 2008년 출간)이라는 번역서 한권을 소개하고 있는데, 살짝 동떨어져 보이는 제목으로 인해서 당황할 수 도 있겠지만 글쓴이의 소개글을 자세히 보면 왜 이 책을 소개하고 있는지 알 수 있습니다.

프로그래밍 수련법 상세보기
브라이언 W. 커니핸 지음 | 인사이트 펴냄
프로그래머들은 설계, 디버깅, 테스트, 성능 개선, 소프트웨어 유지보수에 대한 트레이드오프(tradeoff)를 다뤄야만 한다. 이와 함께 소프트웨어의 명세를 유지하면서도 호환성, 견고성, 안정성 같은 문제들을 고려해야 한다. 이 책에는 이러한 문제들과 그보다 더 많은 내용까지도 다루고 있다. C, C++, 자바 외에도 다양한 언어로 작성된 실전 예제와 현실적인 충고들이 가득하다. 프로그래밍의 고전인 『The Unix Programming

Software TOOLS IN PASCAL 상세보기
Kernighan,B.W. 지음 | Addison-Wesley 펴냄



원문 : 개발자 책꼿이 고전 탐험 2탄 : 유닉스 프로그래밍 서적


==================================================================
 이번에 추가한 책 정보 넣기 플러그인으로 책 정보도 넣으려고 했는데, 회사에서 하니까 안되네요. 방화벽에서 막나봅니다. ㅡ.ㅡ 집에서 추가합니다.
  1. 박재호님은 블로그 '컴퓨터 vs. 책'과 '프로젝트 관리' 를 운영하고 있으며, "조엘 온 소프트웨어"를 비롯한 IT 전문서적 번역가로 활동 중입니다. [본문으로]

  MS가 OOXML 명세를 표준안으로 제안한 뒤로 많은 논란이 있었습니다. 정치적, 기술적 이유를 들어서 찬반이 갈려있지만, 직업이 직업인지라 기술적인 이유가 먼저 눈에 들어옵니다.

 MS만이 구현 가능한 표준이기에 우리는 OOXML을 거부해야한다는 아주 간단한 말이외에 어떤 말이 필요할지 모르겠습니다.
 이번에 IBM의 DeveloperWorks에 올라온 글 중에서 OOXML에 대한 글이 있어서 소개하려합니다.

원문 : OOXML: 뭐가 그리 대단한가? (한글)

OOXML 명세를 놓고 상당한 비평과 찬사가 동시에 쏟아졌습니다. 덕택에 많은 사람이 무슨 영문인지 의아해 하고 있습니다. 이 기사는 (정치적인 입장이 아니라) 기술적인 측면에서 OOXML을 표준으로 취급해서 안 되는 이유를 밝힙니다.


 그리고 OOXML안의 철저한 검증을 요구하는 서명 운동을 하고 있습니다. 한번 가셔서 글도 읽어보시고, 동의하시면 서명 운동에도 참가해주세요.
서명하러가기

Office Open XML(OOXML)의 ISO 최종 투표에 즈음하여

한국 대표단에게 보내는 글

본 서명은 Microsoft가 제안하여 ECMA 376 표준이 된 Office Open XML(OOXML)ISO JTC-1 최종 투표를 앞두고 한국 대표단이 OOXML의 보완 사항을 신중히 검토하여 투표해 줄 것을 촉구 합니다.

앞서 2007년 9월 ISO JTC-1 위원회 1차 투표 시 아래와 같은 이유로 한국 대표단에게 1,000여명의 서명을 받아 OOXML 표준안에 대해 반대 투표를 해 줄 것을 촉구한 바 있습니다.

  • OOXML안은 대체할만한 다른 표준안이 존재 한다.
  • OOXML안은 불완전 하며 플랫폼 종속적이다.
  • OOXML안은 모호한 특허 문제 때문에 제 3자 구현이 제한된다.
  • OOXML안은 국내 다양한 S/W 개발 환경을 제한할 것이다.

이에 한국 대표단은 1차 투표에 반대표를 행사하면서 총 23가지의 수정 요청 사항을 제출 하였으며, 이제 마지막 투표를 앞두고 있습니다. 이에 아래 서명을 한 한국 소프트웨어 개발자 일동은 아래의 사항에 동의 합니다.

1. 한국 대표단이 제기한 수정 요청 사항에 동의 한다.

한국 대표단의 수정 요구 사항을 요약 하면 크게 아래 4가지 사항과 같습니다.

  1. OOXML 표준안이 기존 ODF와 플러그인이 아니라 표준 스펙 그 자체로 호환성을 유지하도록 수정해야 한다.
  2. OOXML 표준안의 IE 기반 기술 규격이 리눅스나 Firefox, Safari, Opera 등의 브라우저도 지원 해야 한다.
  3. OOXML 표준안 중 12개의 MS Office 레거시 스펙을 좀 더 자세하게 설명해야 한다.
  4. OOXML 표준안 중 VML 및 DrawingML 등 기존 표준이 있는 부분을 삭제해야 한다.

2. 한국 대표단의 신중한 기술적 검토를 요청 한다.

한국 대표단이 1차 투표 이후 수정 보완된 OOXML 표준안이 당시 요청한 수정 요청 사항과 부합 하는 지 정확하게 검토해 주실 것을 요청 드립니다.

  1. OOXML 표준안에 대한 기술적 검토가 충분히 이루어 지길 기대한다.
  2. OOXML 표준안에 대한 수정 요청 사항이 충분히 받아들여졌는지 검토해주길 기대한다.
  3. OOXML 표준안에 대한 수정 요청 사항이 100% 받아들여지지 않았을 경우 최종 투표에서도 반대 투표를 해주길 촉구한다.

 유닉스/리눅스를 사용하다보면 다양한 작업을 시간대 별로 실행 시켜야 할 때가 있습니다. 사용자들이 적은 시간대에 해야할 작업, 특정 시각에 해야 할 작업, 특정 작업이 종료된 다음에 할 작업... 등등 작업은 아주 많습니다.
유닉스/리눅스에서는 cron이라는 프로그램을 이용해서 배치작업을 처리하죠. 이번에는 cron과 at을 이용한 작업 일정 관리에 관한 문서를 소개하려 합니다.

원문 : 리눅스 팁: cron과 at를 사용한 작업 일정 관리 (한글)


아래는 서문을 발췌한 것입니다.

2008 년 3 월 25 일

시스템 사용량이 적어진 한밤중에 작업을 실행할 필요가 있거나 일일이나 주간 단위로 작업을 수행할 필요가 있지만, 잠도 자야겠고 다른 활동도 하면서 삶을 즐기고 싶습니다. 작업 일정 관리가 필요한 또 다른 좋은 이유는 반복적인 과업을 자동으로 수행하도록 만들거나 매번 동일한 방식으로 과업을 수행하도록 만들고 싶기 때문입니다. 여기서 소개하는 팁은 주기적으로나 일회성으로 미래 작업 일정을 관리하는 cronat 기능을 활용하도록 도와줍니다.

리눅스(Linux®)와 유닉스(UNIX®) 시스템은 일회성이거나 반복적인 미래 작업 일정을 관리하도록 만들어준다. LPI exam 102 prep: Administrative tasks에서 발췌한 이번 기사에서는 주기적으로 작업 일정을 관리하는 방법과 미래에 작업을 수행하는 방법을 보여준다.

많 은 시스템 관리 작업은 리눅스 시스템에서 종종 주기적으로 수행해야만 한다. 이런 작업에는 로그 파일을 회전시켜서 파일 시스템이 가득 차지 않도록 만들기, 자료 백업하기, 시스템 시각을 동기화하기 위한 서버 연결과 같은 작업을 포함한다. 이런 관리 작업에 대한 세부 사항은 위에서 언급한 튜토리얼을 참조하기 바란다. 이번 팁에서는 리눅스에서 사용 가능한 작업 일정 관리 패키지인 cron, crontab, anacron, at 명령을 다룬다. 시스템이 잠들거나 꺼져 있더라도, anancron은 다음 번에 깨어날 때 작업을 따라잡도록 도와준다.




이직을 할때 어느 정도 예상은 했었지만, 팀내에서 저의 역활이 DBA로서 DBMS 관리, 튜닝 등의 업무 못지 않게 장비(O/S, 운영, H/W 등등)쪽 일도 많은 자리라는 걸 느끼면서... 장애 처리를 어느정도 하고나니 이젠 장비 대/교체 준비라는걸 하게 되었습니다. 물론 신규 장비가 들어오고 DB Migration을 해야하므로 제가 할 일이 많아지는 거죠. 어쩌면 OS 버전이 더 올라갈 수도 있고, DBMS 버전도 덩달아 올라갈 수도 있으니 이것저것 준비할게 많습니다. 그래도 마음씨 좋은 사수님이 옆 자리에 있어서 대책없이 믿음으로 충만한 회사 생활을 하고 있습니다. ^^

어제까지 했던 작업이 tpmC 계산이었습니다. 사실 수 많은 어려움이 있었죠. 월요일에 마신 술이 깨질 않아서 오후 세시정도까지는 몇번이나 오타때문에 다시 계산을 하는 삽질을 했었죠.

기본적으로 동시 로그인 유저수에 분당 트랜잭션수를 곱하면 tpmC가 나오더군요. 물론 각종 보정치를 적용시켜야 실제로 사용할 수치가 나오긴 하지만요.

tpmC = 동시 로그인 유저수 * 분당 트랜잭션 수 * 보정치


이제 보정치를 적용해야 하는데, 보정치가 참 다양합니다. 실제로 서비스를 하려면 여러가지 문제에 부딪치게 되는데 이때를 위한 보정치 없이 tpmC를 계산해서 서버 용량을 결정하면 난감한 문제에 맞닥뜨리게 되겠죠. 구매한지 반년도 안된 서버가 성능 부족에 시달린다던지하는 그런 문제죠. ㅋㅋ

기본 tpmC 보정치
네트워크 보정치
클러스터 보정치
어플리케이션 복잡도 보정치
피크 타임 보정
여유율


첨부한 파일들은 Google로 검색해서 찾은 tpmC관련 문서들입니다.
혹시 이 문서관련해서 문제가 있으면 알려주세요. 삭제하도록 하겠습니다.
메일 주소는 miho77 _AT_ gmail.com 입니다.

 이번엔 지난번에 소개했던 이클립스 유로파로 웹 개발하기 시리즈의 세번째, 루비 개발 도구와 RadRails입니다. 개발자에게 재미난 유희로 혹은 실제 업무에 사용할 유용한 개발 도구로서 루비는 그 영역을 넓혀가고 있습니다. 이클립스가 루비 개발 환경을 지원하는 것은 어찌보면 당연한 결과라고 생각합니다. Aptana studio라는 루비 IDE도 나와있는 상태죠. 이번에 소개할 문서는 이클립스 유로파에 루비 개발 도구를 설치해서 사용하는 법을 알려줍니다. 저도 따라서 해보고 있는데 재미있네요. ^^ 실제 업무에 써 볼 일이 생길지는 모르겠지만요.

 원문 : 이클립스 유로파로 웹 개발하기, Part 3: 루비 개발 도구와 RadRails (한글)

아래는 문서의 서론 부분입니다.

Java™, PHP, 루비로 웹 개발을 할 때 이클립스(Eclipse)를 사용하는 방법에 관한 3부로 이루어진 "이클립스 유로파로 웹 개발하기" 의 Part 1에서는 이클립스 최신 버전인 유로파를 이용해 어떻게 자바 웹 애플리케이션을 신속하게 개발할 수 있는지에 대해, Part 2에서는 PHP 애플리케이션을 PDT(PHP Development Toolkit) 플러그인을 이용하여 얼마나 쉽게 개발할 수 있는지를 다루었습니다. 이번 Part 3에서는 RDT와 RadRails 이클립스 플러그인들에 대해 다룰 것이며 이 플러그인들을 설치하는 방법과 사용하는 방법에 대해 살펴보겠습니다. 앞으로 많은 루비 온 레일스(Ruby on Rails) 개발 작업들을 RadRails를 통해 하는 방법을 배울 것입니다.

이 튜토리얼 내에서

Part 2에 서는 PHP를 개발함에 있어 IDE를 이용하여 얻을 수 있는 이점에 대해 이야기해 보았다. 대부분의 것들은 루비에도 똑같이 적용되며 루비 개발 툴킷(RDT)을 이용할 때 얻게 될 것이다. RDT는 구문 강조(syntax highlighting), 컬러링(coloring), 문법 검사, 코드 자동 완성, 포맷화(formatting) 그리고 프로젝트 구성 등 IDE의 기본적인 모든 기능을 제공한다. 또한 큰 프로젝트에 필수적인 루비 디버거(debugger)를 제공하고 있다. 그 외에도 정규표현식(regex) 편집기/테스터 같은 기능과 Test::Unit와 통합을 통한 단위 테스트 환경도 있다.

이번 튜토리얼에서는 RDT와 RadRails 플러그인을 소개할 것이다. 그리고 이것들을 설치하는 방법과 사용하는 방법에 대해 보여줄 것이다. 루비 온 레일스 개발 작업들을 RadRails를 통해 어떻게 하는지를 배우게 될 것이며 RadRails를 통해 레일스 애플리케이션 테스트와 디버그를 더 쉽게 하는 방법을 알게 될 것이다.


선수조건

이번 튜토리얼은 루비를 통한 웹 개발이다. 루비 온 레일스로 웹 개발을 한다는 말이나 다름 없다. 그래서 루비 온 레일스에 대해 약간의 경험이 있다고 가정한다. 이클립스에 익숙하다면 도움이 되겠지만 필수적이진 않다. 이번 튜토리얼은 처음 두 튜토리얼에서 자바와 PHP로 개발된 애플리케이션 위에서 개발된다. 자바와 루비 프로그래밍의 배경지식은 필수다. 이클립스 IDE에 익숙하다면 도움이 되겠지만 필수적이진 않다.

자~ 루비, 한번 해볼까요?
 커피를 좋아하는 편이라 집에 에스프레소 머신을 두고 가끔씩  마시고 싶었는데, 드디어 에스프레소 머신을 구입했습니다. ^^/ 와~
근데 10만원짜리라 그런지 자동화가 덜되어 있더군요. 그리고 스팀으로 우유를 뽑는 기능도 조금은 부족하구요.

드롱기(정확한 발음인지는 모르겠습니다) 에스프레소 머신입니다.
사용자 삽입 이미지
사용자 삽입 이미지

사무실에서 일주일동안 사용한 결과... 원두를 잘못 고른것 같습니다. ^^;
일단 집에 가져다 놓은 상태구요.
사무실엔 드리퍼를 사놓을까 고민중입니다. ^^

아직 제가 사용법을 완벽하게 익히지 않아서 그런지 스팀 우유 뽑는건 잘 안되네요.
그리고 스팀 우유 통은 날마다 씻어줘야 합니다.
 최근에 IBM DeveloperWorks에 올라온 글중에서 PHP 관련 글을 소개하려합니다.
"PHP에서 풀(pull) 방식으로 XML 구문을 분석하는 방법 (한글)  스트리밍 방식으로 메모리 효율을 높인다"라는 제목의 글은 PHP 5에서 추가된 XMLReader 라이브러리를 이용하여 글의 제목처럼 메모리 효율을 올리는 방법에 대한 글입니다.

PHP가 5 버전에 이르러서 많은 변화가 있었는데 실무에서 PHP 개발을 하지 않은지가 오래되서 그런지(요 2년사이에는 기능 수정하는 정도만 했었습니다.) XMLReader라는 라이브러리는 좀 생소하군요.

원문 : PHP에서 풀(pull) 방식으로 XML 구문을 분석하는 방법 (한글)  (부제 : 스트리밍 방식으로 메모리 효율을 높인다)

 아래는 문서의 앞부분을 발췌한 것입니다.

PHP 5는 XML(eXtensible Markup Language)을 읽는 클래스인 XMLReader를 새롭게 지원한다. SimpleXML이나 DOM(Document Object Model)과는 달리 XMLReader는 스트리밍 모드에서 동작한다. 즉, 문서를 처음부터 끝까지 읽어들인다는 뜻이다. 또한 문서를 끝까지 읽기 전에 이미 읽어들인 부분만으로도 작업이 가능하다. 따라서 속력이 매우 빠르고, 효율성이 높으며, 메모리가 크게 절약된다. 처리할 문서가 클수록 메모리 효율과 속력은 더욱 중요한 요인이다.

libxml

여기서 소개하는 XMLReader API는 Gnome 프로젝트의 C/C++용 libxml 라이브러리를 사용한다. 구체적으로 보면 libxml의 XmlTextReader API를 호출하는 PHP 레이어일 뿐이다. XmlTextReader는 .NET의 XmlTextReaderXmlReader 클래스를 모델로 삼았다(코드를 공유하지는 않는다).

푸시(push) 모델을 사용하는 SAX(Simple API for XML)와는 달리, XMLReader는 풀(pull) 모델을 사용하는 구문분석기다. 즉, 여러분이 만든 프로그램에 통제권이 있다는 뜻이다. 구체적으로 설명하자면, 구문분석기가 프로그램으로 이벤트를 밀어주는 방식이 아니라, 프로그램에서 다음 이벤트를 명시적으로 가져오는 방식이다. 프로그램이 발생하는 이벤트에 반응하기보다 프로그램에서 내용을 요청한다고 보면 된다. 디자인 패턴 관점에서 보면, XMLReader는 Observer 패턴이 아니라 Iterator 패턴을 구현한 클래스라고 하겠다.




IBM 홈페이지에서 서핑하다 찾은 글입니다. 원문 보기


Solaris에 Oracle 설치 준비

Solaris 시스템에 Oracle을 설치하기 전에 다음 절차를 완료하십시오.

  1. Solaris 시스템에 root로 로그인하십시오.
  2. 시스템에 대해 설정된 커널 매개변수가 설치에 필요한 값을 충족시키거나 초과하는지 확인하십시오. 자세한 정보는 Oracle 8i 설치 안내서를 참조하십시오.
  3. Oracle 데이터베이스와 함께 사용할 마운트 위치를 작성하십시오.
    $ mkdir /u01
    $ mkdir /u02
  4. 다음 명령을 사용하여 콘솔에서 관리 도구 유틸리티를 시작하십시오.
    # admintool
  5. 관리 도구 창에서 찾아보기 -> 그룹을 누르십시오. 관리 도구:그룹 창이 열립니다.
  6. 관리 도구:그룹 창에서 편집 ->추가를 누르십시오. 관리 도구:그룹 추가 창이 열립니다.
  7. 두 개의 그룹, dbaoinstall 사용자 그룹을 작성하십시오.
  8. 관리 도구:그룹 창에서 찾아보기 ->사용자를 누르십시오. 관리 도구:사용자 창이 열립니다.
  9. 관리 도구를 사용하여 oracle이라는 새 사용자를 작성하십시오. 새 사용자 계정에 대해 다음 단계를 완료하십시오.
    1. 계정의 기본 그룹을 사용자가 작성한 oinstall 그룹으로 설정하십시오.
    2. 계정의 보조 그룹을 사용자가 작성한 dba 그룹으로 설정하십시오.
    3. 홈 디렉토리 작성 필드 옆에 있는 단일 선택 단추가 선택되었는지 확인하십시오. 경로 필드에서 oracle 사용자의 홈 디렉토리로 /export/home/oracle을 입력하십시오.
    4. 로그인 쉘을 /bin/sh로 설정하십시오.
    Oracle 설치 프로그램은 이 계정 아래에서 실행되어야 합니다. 이 계정은 Oracle 설치 및 유지보수용으로만 사용됩니다.
  10. Oracle 사용자로 시스템에 사인 온하십시오.
    # su - oracle
    Oracle 계정에 대한 umask 설정값을 보십시오.
    $ umask
    umask는 022로 설정해야 합니다. 계정의 umask가 022로 설정되어 있지 않은 경우, 다음 명령을 사용하여 설정하십시오.
    $ umask 022
    또한 .profile을 수정하여 변경을 적용하십시오.
  11. Oracle 계정용 /export/home/oracle/.profile에 다음을 추가하십시오.
    • Oracle 8i:
      ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
      ORACLE_HOME=$ORACLE_BASE/product/8.1.7; export ORACLE_HOME
      ORACLE_SID=or1; export ORACLE_SID
      ORACLE_DOC=$ORACLE_HOME/doc; export ORACLE_DOC
      ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
      PATH=$ORACLE_HOME/bin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/ucb:/usr/openwin/bin:.
    • Oracle 9i:
      ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
      ORACLE_HOME=$ORACLE_BASE/product/9.2.0.0.0; export ORACLE_HOME
      ORACLE_SID=or1; export ORACLE_SID
      ORACLE_DOC=$ORACLE_HOME/doc; export ORACLE_DOC
      ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
      PATH=$ORACLE_HOME/bin:/usr/bin:/usr/local/bin:/usr/ccs/bin:/usr/ucb:/usr/openwin/bin:.
    검색 경로에 /usr/ucb가 필요한 경우, 경로 설정에서 /usr/ccs/bin 뒤에 나열되어 있는지 확인하십시오.
  12. 다음 명령을 사용하여 프로파일의 소스를 지정하십시오.
    $ . ./.profile

이제 Oracle을 설치할 준비가 되었습니다. 해당 Oracle 문서를 참조하여 소프트웨어를 설치하십시오. 설치를 완료한 후 이 절에 포함된 구성 지시사항으로 돌아가십시오.

 곧 Solaris에 Oracle을 설치할 일이 있어서, 미리 연습을 해보고 있습니다. 제게 SUN 장비가 있으면 참 좋겠지만 여건이 안되어서 VMWare Server 버전을 설치하고는 Solaris10에 Oracle 9i를 설치하고 있습니다. 아직은 Solaris에 Oracle 계정 설정 중입니다.

그동안 써오던 Linux와 큰 틀에서는 같지만 실제 사용하게되면 작은 부분들은 조금씩 틀리더군요. 설정 파일이 저장되는 위치라던지... 후훗...

음... 한가지 걱정스러운건 Solaris x86용의 Oracle 9i가 다운로드 페이지에 없었다는 겁니다. VMWare Server에 Solaris로 설정하고 Solaris를 설치하면... 이게 Sparc버전과 같은건지...
아니... VMWare에 Solaris Sparc버전이 설치가 되는건지... 음... 한번 확인해봐야 겠네요.



다음은 oracle 계정의 설정파일 내용입니다.

# groupadd oinstall

# groupadd dba

# useradd -g oinstall -G dba -d /export/home/oracle -s /usr/bin/bash  oracle

# passwf oracle

# su - oracle

-bash-3.00 $ vi .bash_profile
PS1="\s-\v \T $ "
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle9i
export ORACLE_SID=TEST1
export ORACLE_OWNER=oracle

export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=vt100
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib:/usr/ccs/lib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib:/usr/ccs/lib


-bash-3.00 $


현재 여기까지 진행했습니다. ^^;
앞으로 갈길이 머네요.

+ Recent posts