'분류 전체보기'에 해당되는 글 256건

  1. 2008.01.23 아키텍트 이야기 1
  2. 2008.01.22 NoClassDefFoundError and ClassNotFoundException
  3. 2008.01.22 ruby에 mysql 드라이버 설치하기
  4. 2008.01.22 루비작업에 dbi transaction 설정하기
  5. 2008.01.22 crontab
  6. 2008.01.21 apache에 작업공지 내기
  7. 2008.01.20 유닉스 리눅스 명령어사전 1
  8. 2008.01.18 ruby dbi 설정
  9. 2008.01.18 rsh 설정하기
  10. 2008.01.17 mysql 비밀번호 변경 1



IT프로젝트라는 오케스트라가 연주가 된다.
서서히 막이 오르고 관중들이라는 갑은 화려한 팜플렛을 보고 오케스트라를 한껏 기대하고 있다.
무대를 홀로 등지고 있는 외로운 한사람이 서 있으니 그 사람의 직위는 PL이라는 지휘자이다.

지휘자는 손님들이 표값을 얼마나 내고 들어왔는지 계급과 신분이 어떻게 되는지 모른다.
다만 팜플렛이라는 RFP에 명시된 것을 가지고 충분히 갑들에게 감동을 줘야한다.

단원들은 하나 하나 긴장한다.
어떤 단원은 연주경력이 오래되어있지만 어떤 단원은 연주경력이 너무 짧아 오선지는 못보고
오선지위에 적혀있는 코드만 보고 연주를 해야하는 실정이다.

지휘자!
과연 그대는 손님들에게 감동을 줄 수 있겠는가?
그리고 극장이여~! 이런 무거운 짐을 지고 홀로 무대를 주무를 지휘자에게 기꺼이 비용을 지불할
능력이 되는가?



아키텍트 이야기라는 책을 보면서 실무에서 만날 수 있는 여러가지 변수를 가장 근접하게 도출해 냈다는
느낌이 우선 들었다.
요구사항에 대해서 충분히 도출해 내고 고객은 요구하지 않았지만 그래도 반드시 있어야 하는
비/기/능 이라는 부분까지 명시해 가며 충분하게 뭔가를 도출해 내는것이 흡사 이땅에 존재할지 의문스러운
PL이 그려지고 있었다.

아키텍트는 정확히 무엇인가?
실질적으로 이 질문에 잘 응답하고 있는 문구는 책 213페이지에 이야기된
"엔지니어로 일한 경험이 있어야 지탱할 수 있고, 매우 성실해야만 하는 업무. 건축가 라기 보다는
목수 가운데 대목이라는 편이 가깝다" 이다.
실로 초인적인 능력을 가진 사람이 PL이 아닐 수 없다.

이런 초인은 어떠한 능력을 가져야 할지 하나 하나 손꼽고 있는게 "아키텍트이야기"의 주요핵심이다.
1. 요구분석 담당자 에게 있어 아키텍트의 역할
2. 인프라 담당자 에게 있어 아키텍드의 역할
3. 프로그래머 에게 있어 아키텍드의 역할
4. 테스트 담당자에게 있어 아키텍드의 역할
5. 운용 담당자 에게 있어 아키텍드의 역할
6. 교육 담당자 에게 있어 아키텍드의 역할

그냥 나레벨로 언급하기만 했지만 아키텍트의 업무는 생각보다 다양하고 많이 포진되어있다.
이 많은 업무에서 아키텍트는 순간순간마다 카멜레온처럼 변신해가며 프로젝트를 리딩해야한다.

휴~!!

책은 각 단락별로 세분화 시켜서 상황을 만들어 아키텍트가 효과적으로 대응하는것을 보여주고 있다.
사용하는 툴로는 UML을 사용하고 J2EE환경에 스트럿츠와 EJB를 사용하고 있다.
프로젝트 규모에 대해서 언급한바는 없지만 Document에 대해서 UML을 충분히 인식하고 있고
운용과 교육에 비중이 있는것으로 보아 국내에서 이런 프로젝트를 수행한다면 15억에서 20억 사이의
중대형 프로젝트라 볼 수 있을것 같다.
투입인력에서도 휴먼리소스를 8명을 투입한것으로 되어있으니 음.. 의심은 가지만 아키텍트가 초인이니
8명 가지고도 가능할꺼라  생각해 본다.

책을 읽은 내가 자꾸 아키텍트를 초인이라고 말하는 이유는...
아키텍트가 고객의 요구사항을 거의 90%가 넘게 수렴해주고 있으며 남는 에너지를 가지고 갑사에 다른
허덕이는 프로젝트에 아키텍트로 2중업무를 한다는 것이다.
(과연 초인 초인 ~~)

개인적으로 질의를 날려본다?
1. 과연 이런 아키텍트가 존재하는 이 미스테리한 프로젝트를 본적 있는가?
실제로 CIO가 투입된 훌륭한 프로젝트도 본적이 있다.
당시 CIO 한사람만으로 프로젝트의 상당비용이 차지하였고 리스크가 상당한부분은 프로그래머에게
전가시키는 이상한 책임 전가의 프로젝트 경험은 있다.  (다소 실망스러웠슴)
당시 개발 PL과 프로그래머들은 당일퇴근은 고사하고 "월화수목금금금" 수고했었다.

2. 한회사가 이렇게 일하는 프로젝트 본적 있는가?
전문 아키텍트를 고용할 정도의 큰 프로젝트라면 국내에서는 컨소시엄을 맺기 마련인데..
와우~! 책의 가상시나리오는 그렇지 않다.

이번서평이 다소 개인적인 생각이 들어갔지만 사실 "아키텍트 이야기" 는 이런 아키텍트가
양성되었으면 좋겠다 라는 고객사, 갑사 들의 희망사항 모음집 같다라는게 내 생각이다.

하지만 프로젝트 경험자로써 이런 책임있는 아키텍트는 분명이 양성되어야하는게 맞다.
엔지니어 출신에 고객의 신음에 귀 기울이고 비기능도 연출하고 팀원들의 상심한 마음도 달래줄
그런 아키텍트만이 정말 훌륭한 output을 만들테니 말이다.

NoClassDefFoundError는 자바 실행 시에 ClassNotFoundException과 함께 만나게 되는 에러이다.
이 두 가지 에러는 조금 혼란스럽다.

> ClassNotFoundException 발생사례
클래스 경로에 클래스가 없을 경우, Class.forName("SomeClass")으로 찾을 경우

> NoClassDefFoundError 발생 사례
new SomeClass()로 사용한 경우에는 NoClassDefFoundError가 나게 된다. 이 경우는 컴파일 시에는 존재했던 클래스 바이트 정의를 런타임 시에 찾지 못한 경우
NoClassDefFoundError가 LinkageError의 자식 클래스인 것도 이를 뒷받침해준다.

> NoClassDefFoundError 발생 사례 추가
실제 Java VM에서 어떤 경우에 NoClassDefFoundError를 발생시키는지 유형을 정리해두면 문제가 발생했을 때 해결 혹은 판단에 도움이 될 것이다.
> VirtualMachine.redefineClasses : if the bytes don't correspond to the reference type (the class names don't match).
> ClassLoader.defineClass : 바이트 코드가 정의한 클래스 이름과 정의하려는 이름이 다를 경우
> RMIClassLoader static initializer : RMIClassLoader 제공자 클래스를 찾지 못했을 때
> rmi MarshalInputStream static initializer : rmi server를 위한 시스템 클래스를 찾지 못했을 때


orgURL :
Log on Java


ruby에 mysql 드라이버를 설치하는 방법

> gem 설치 이후 지우기
[neouserwork-1(neouser):/test/setupApp> gem install mysql
..
..
..

> ruby-mysql-0.2.6 다운로드
[neouserwork-1(neouser):/test/setupApp> ruby ./setup.rb
[neouserwork-1(neouser):/test/setupApp> ruby ./test.rb hostname user passwd
[neouserwork-1(neouser):/test/setupApp> ruby ./install.rb


> 이래도 안되면
마지막으로 이렇게 해도 안되면
/usr/local/lib/ruby/site_ruby 아래에 첨부파일을 풀어넣기 바랍니다.

  dbh['AutoCommit'] = false
   begin
     dbh.do("UPDATE account SET balance = balance - 50 WHERE name = 'bill'")
     dbh.do("UPDATE account SET balance = balance + 50 WHERE name = 'bob'")
     dbh.commit
   rescue
     puts "transaction failed"
     dbh.rollback
   end
   dbh['AutoCommit'] = true


모든 헬퍼의 시작 :
http://www.kitebird.com/articles/ruby-dbi.html

tranction 은 연속된 update나 delete와 같이 일련의 작업을 진행할때
반드시  사용해야하는 구문입니다.

사실 이런 자질구래한 설명은 위에 URL에 나와있습니다. 쩝~

crontab

linux 2008. 1. 22. 16:00
/etc/crontab -e
0  22 *  *  * /etc/backup/neouser/neouser_backup.sh >> /etc/backup/neouser/cron_log

분시 일월년 실행명령






RewriteEngine on
RewriteRule .*$ /neouser_close.html [PT]
..
..
DocumentRoot /neouser/thejoa/html


아! 너무 민망하다.
apache 공부도 더 해야할것 같다.
시스템 upTime이나 apachetop도 새롭게 등장했다는데 아직도 여기다니..
점점 모르는게 죄가 되어간다.



와우~ 이책 좋다 라는 느낌을 받은 책이 몇권이나 될까?
사실 나에게 몇번의 프로젝트와 몇번의 실무를 겪으면서 머리속에 잘 저장된것이
어느순간 사려져 있을때 가장 짜증났던것으로 기억된다.

정말 열심히 수행한 프로젝트에서 얻은 기술적 노하우와 팁들은 얼마나 많은가?
DB를 핸들링한 기술, 리눅스 쉘을 핸들링 했던 그런 작은 팁들과 노하우들..
물론 프로그래밍이야 꾸준하게 하니까 그리고 계속 하기때문에 그런다 치지만
방금 말한 프로그래머이면서 가지고 있는 소양이라 할 수 있는 각종 DB, 시스템등을
운용하는 팁들은 머리속에서 재발 사리지 않기를 부탁 드리는 소망이다.

"유닉스리눅스 명령어사전"은 아는 지인으로부터 선물을 받았다.
고내하고 있기에 그분은 나에게 검색으로 익숙한 녹색표지로 된 본 책을 건내 주었다.
와우~!

내가 이책을 보고 참 감동하고 즐거워 했던 부분은 몇가지 있다.

1. vi콘솔에 대한 명령어
   vi를 이야기 하지않는 인터넷 사이트 없고, vi를 빼놓은 유닉스 교재 본적은 없다.
   하지만 실전에서 유용하게 사용하는 vi명령어를 정리한 사이트들과 책은 못 보았다.
   개인적으로 vi에서 참 있었으면 하는것이 문자열 변경하는것이 참 번거로웠다.
   쉘 프로그램 잘 짜놓고서는 변수 하나 바꾸는것 때문에 얼마나 수고를 했다던가.
   바로 이런 부분에서 책은 편리하고 쉬운 변경 작업을 sample로 알려주고 있다.
   :%s/test/test001/gc
   별것 아닌것 일 수 있다. 이미 알고 있는 사람도 계실것이다.
   그러나 나에게는 정말 필요했다.

2. find 말고 which 명령어
   알고들 계시겠지만 find도 좋은명령어이지만 쉘에서 가동중인 command를 찾는것
   역시 까다로운 일이다.
   마찬가지로 shell 작업을 수행할때 java는 어디에 있고 ant는 어디에 있는지 찾는것도
   시간이 걸리는 일이다.  (이미 오래된 경험으로 머리속에 담겼다 날라간 명령어)
   늘 그렇지만 이런것은 왜 그리 잘 잊어 먹는지 가끔 나를 탓하기도 하지만 그래서 이런류의
   책이 꾸준하게 사랑받고 있는게 아닐 까 생각한다.

3. awk
   본 명령어의 경우에도 조금 깊이 shell로 들어간다 싶으면 보이기 힘든것이다.
   패턴언어 처리인데 java를 통해 외부명령어를 구동하려고 한다면 반드시 한번즈음
   해봤었던 명령어이다.  하지만 시간이 지나면 이것도 어찌그리 잘 잊어먹는지 휴~!

책은 명령어 사전이라는 부재를 달기 딱 맞을 정도로 잘 정리된 명령어들을 보여주고 있다.
고마울정도로 찾기 쉬운 구조와 sample이 잘 되어있기 때문에
아마 개발자나 SE나 유닉스나 리눅스로 shell 혹은 command를 다루는 사람의 책상
곁에는 있어준다면 언제나도 좋은 조언자가 되어주는 책인것 같다.

최근에 들어 점점더 높은 요구사항을 접하게 된다.
어렵다거나 넘지못할 산들이 아니다.
다만 쓸데없이 찾아다니는 내가 불편하고 안타깝기 때문이다.

개발자에게 운영자에게 가장 가치있는것은 시간을 줄이는것이 가장 가치있는게 아닐까 생각한다.
그렇게 본다면 "유닉스 리눅스 명령어 사전" 의 경우에는 개발자의 많은 시간을 절약해 주는
고마운 책임에 틀림없다.

추가...
 Oracle은 나와있고 mySQL정도는 나와줘도 훌륭할텐데..

> ruby dbi를 다운 로드 받습니다.
http://rubyforge.org/projects/ruby-dbi/


> 압축 해재
[neouserwork-1(neouser):/ko> tar xvfz dbi-0.1.1.tar.gz
ruby-dbi/
ruby-dbi/bin/
ruby-dbi/bin/commandline/
ruby-dbi/bin/commandline/sqlsh.rb
ruby-dbi/bin/PATHCONV
ruby-dbi/bin/proxyserver/
ruby-dbi/bin/proxyserver/proxyserver.rb
...


> 실행환경 설정
[neouserwork-1(neouser):/ko/ruby-dbi> ruby setup.rb config --with=dbd_ado,dbi,dbd_mysql,dbd_odbc,dbd_oracle


> setup실행
[neouserwork-1(neouser):/ko/ruby-dbi> ruby setup.rb setup


> setup실행 (root 권한)
[neouserwork-1(neouser):/ko/ruby-dbi> ruby setup.rb install

rsh 설정하기

linux 2008. 1. 18. 15:55

> from 호스트에서 to호스트의 정보를 입력합니다.  (추가)
[neousertest(neouser):/neouser>vi /etc/hosts
10.***.***.10  neouserwork-1
10.***.***.11 neouserdb-1


> from 호스트에서 .rhosts를 수정합니다. (추가)

[neousertest(neouser):/neouser>vi .rhosts
10.***.***.10 hanadmin
10.***.***.11 hanadmin


> to 호스트에서 from 호스트 정보를 추가합니다. (추가)
[neouserwork-1(neouser):/neouser>vi /etc/hosts.allow
# neousertest
in.telnetd:10.***.***.9
in.ftpd:10.***.***.9
in.rshd:10.***.***.9
in.rlogind:10.***.***.9
rsync:10.***.***.9


> to 호스트에서 from 호스트 정보를 추가합니다. (추가)

[neouserwork-1(neouser):/neouser>vi /etc/hosts
10.10.198.60   neouserwork-1


 

update user set password=password('XXXX') where user='root';
flush privileges;
quit
mysql -u root -p XXXX



간단하다. 누구나 알것 같다.
하지만 적어놓지 않으면 신뢰가 가지않는경우가 있다.
1 ··· 9 10 11 12 13 14 15 ··· 26 

글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!