최근에 회사에 신청했던 [Blog2Blog 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기]를 소개하려합니다. 회사돈으로 산거라 다른책 읽을때보다는 서둘러서 읽고 있습니다. ^^;
아직 다 읽지는 못했지만 저같은 어중간한 레벨의 개발자들에게 필요한 내용들을 찾아보기 쉽게 정리해놓은 책이라고 생각합니다. 개발에서 손뗀지가 일년 정도 되다보니 기억나지 않는게 너무 많더군요. ^^;

자바 성능을 결정짓는 코딩 습관과 튜닝 이야기
카테고리 컴퓨터/IT
지은이 이상민 (한빛미디어, 2008년)
상세보기

아래는 이 책을 읽은 분이 책 내용중에서 오류를 찾아내서 정리해 놓은 블로그 내용입니다. 저도 읽으면서 찾아봐야 겠네요.


 요즘 DB가 거의 매일 문제를 일으켜서 성능관련 문서들을 많이 찾아보며 분석중에 있습니다. 그러다보니 wait event에 많은 시간을 투자하고 있죠.

OTN에는 많은 Oracle 관련 문서들이 있는걸 아시죠. 그중에서 이번에 찾은 [Oracle Wait Event 모니터링]이라는 문서가 눈에 띄더군요.

원문보러가기~!
(주)웨어벨리의 책임 컨설턴트인 안진철님이 2003년경에 작성한 문서로 순서는 아래와 같습니다.

 이 글을 읽으면서 맘에 와닿았던 글귀가 있습니다.

흔히 DBA를 3D업종이라고 부르는 이유 가운데 하나는 몸은 고달픈데 반해 그 성과가 별로 티가 나지 않는다는 사실 때문일 것이다. 실제로, DBA가 수행해야 하는 일상적인 관리 업무들은 몸은 다소 피곤하게 만들지 몰라도 어느 정도 경험이 쌓이면 그리 부담을 주는 일은 아니다. 우리가 한단계 업그레이드된 전문가로서 인정 받는 DBA가 되기 위해서는 장애상황 혹은 유사 장애 상황에서 DB 모니터링 작업을 수행하고 분석할 수 있어야 한다. 시스템이 갑자기 느려지고 업무가 마비되는 상황에 맞닥뜨렸을 때 문제의 원인이 무엇인지를 집어낼 수 있는 능력이 있어야 하며 최소한 오라클의 문제인지 아닌지를 판단할 수는 있어야 몸으로 야간작업이나 때우는 DBA가 아니라 조직에 없어서는 안될 전문가로서의 나의 존재가치를 인정 받을 수 있을 것이다.


다음은 시중에 나와있는 OWI(Oracle Wait Interface) 관련 책들입니다.
오라클 진단 & 튜닝
카테고리 컴퓨터/IT
지은이 RICHMOND SHEE (엑셈, 2005년)
상세보기

OWI Advanced Oracle Wait Interface in 10g
카테고리 컴퓨터/IT
지은이 조동욱 (엑셈, 2006년)
상세보기

PRACTICAL OWL IN ORACLE 10G
카테고리 컴퓨터/IT
지은이 엑셈 (엑셈, 2007년)
상세보기

ADVANCED OWI INTERNALS AND PERFORMANCE IN...
카테고리 컴퓨터/IT
지은이 조동욱 (엑셈, 2007년)
상세보기


 정규식(혹은 정규표현식)에 대해서 자료를 찾다가 괜찮은 문서들이 있길래 정리해봅니다.
1. IBM DeveloperWorks의 Special Issue중에서 초보 개발자 코드 트레이닝,Part 5 : 정규 표현식

2. www.wonchu.net의 자바스크립트 정규식 문서(아래 두개중 어떤 링크를 이용해도 됨.)
http://www.wonchu.net/board.do?method=bview&boardId=003&boardSeq=36 (검색엔진에서 찾은 링크)
http://www.wonchu.net/issue/00336 (게시판에 표시된 링크)

3. [똥싼너구리의 정리노트]라는 스프링노트에 올라온 문서
정규표현식 카테고리

4. [카알의 적당한 인생 이야기]에 올라온 정규표현식 문서
정규 표현식(Regular Expressions)


아래는 [카알의 적당한 인생 이야기]의 내용을 정리한 것입니다.
(1) ^ (caret) : 라인의 처음이나 문자열의 처음을 표시
    
$ (dollar) : 라인의 끝이나 문자열의 끝을 표시
    
. (period) : 임의의 한 문자를 표시
예)
^aaa (문자열의 처음에 aaa를 포함하면 참, 그렇지 않으면 거짓)
aaa$ (문자열의 끝에 aaa를 포함하면 참, 그렇지 않으면 거짓)
^a.c (문자열의 처음에 abc, adc, aZc 등은 참, aa 는 거짓)
a..b$ (문자열의 끝에 aaab, abbb, azzb 등을 포함하면 참)


(2) [] (bracket) : 문자의 집합이나 범위를 나타냄, 두 문자 사이의 "-"는 범위를 나타낸다.
[]내에서 "^"이 선행되면 not을 나타낸다.
이외에도 "문자클래스"를 포함하는 [:문자클래스:]의 형태가 있다. "문자클래스"에는 alpha, blank, cntrl, digit, graph, lower, print, space, uppper, xdigit가 있다.
이외에 [:<:]와 [:>:]는 어떤 단어(숫자, 알파벳, '_'로 구성됨)의 시작과 끝을 나타낸다.
예)
[abc] (a, b, c 중 어떤 문자, "[a-c]."과 동일)
[Yy] (Y 또는 y)
[A-Za-z0-9] (모든 알파벳과 숫자)
[-A-Z]. ("-"(hyphen)과 모든 대문자)
[^a-z] (소문자 이외의 문자)
[^0-9] (숫자 이외의 문자)
[:alpha:] ([A-Za-z]와 동일)
[[:digit:]] ([0-9]와 동일)

(3) {} (brace) : {} 내의 숫자는 직전의 선행문자가 나타나는 횟수 또는 범위를 나타냄
예)
a{3} ('a'의 3번 반복인 aaa만 해당됨)
a{3,} ('a'가 3번 이상 반복인 aaa, aaaa, aaaa, ... 등을 나타냄)
a{3,5} (aaa, aaaa, aaaaa 만 해당됨)
ab{2,3} (abb와 abbb 만 해당됨)
[0-9]{2} (두 자리 숫자)
doc[7-9]{2} (doc77, doc87, doc97 등이 해당)
[^Zz]{5} (Z와 z를 포함하지 않는 5개의 문자열, abcde, ttttt 등이 해당)
.{3,4}er ('er'앞에 세 개 또는 네 개의 문자를 포함하는 문자열이므로 Peter, mother 등이 해당)

(4) * (asterisk) : "*" 직전의 선행문자가 0번 또는 여러번 나타나는 문자열
예)
ab*c ('b'를 0번 또는 여러번 포함하므로 ac, ackdddd, abc, abbc, abbbbbbbc 등)
* (선행문자가 없는 경우이므로 임의의 문자열 및 공백 문자열도 해당됨)
.* (선행문자가 "."이므로 하나 이상의 문자를 포함하는 문자열, 공백 문자열은 안됨)
ab* ('b'를 0번 또는 여러번 포함하므로 a, accc, abb, abbbbbbb 등)
a* ('a'를 0번 또는 여러번 포함하므로 k, kdd, sdfrrt, a, aaaa, abb, 공백문자열 등) doc[7-9]* (doc7, doc777, doc778989, doc 등이 해당)
[A-Z].* (대문자로만 이루어진 문자열)
like.* (직전의 선행문자가 '.'이므로 like에 0 또는 하나 이상의 문자가 추가된 문자열이됨, like, likely, liker, likelihood 등)

(5) + (asterisk) : "+" 직전의 선행문자가 1번 이상 나타나는 문자열
예)
ab+c ('b'를 1번 또는 여러번 포함하므로 abc, abckdddd, abbc, abbbbbbbc 등, ac는 안됨)
ab+ ('b'를 1번 또는 여러번 포함하므로 ab, abccc, abb, abbbbbbb 등)
like.+ (직전의 선행문자가 '.'이므로 like에 하나 이상의 문자가 추가된 문자열이 됨, likely, liker, likelihood 등, 그러나 like는 해당안됨)
[A-Z]+ (대문자로만 이루어진 문자열)

(6) ? (asterisk) : "?" 직전의 선행문자가 0번 또는 1번 나타나는 문자열
예)
ab?c ('b'를 0번 또는 1번 포함하므로 abc, abcd 만 해당됨)

(7) () (parenthesis) : ()는 정규식내에서 패턴을 그룹화 할 때 사용

(8) | (bar) : or를 나타냄
예)
a|b|c (a, b, c 중 하나, 즉 [a-c]와 동일함)
yes|Yes (yes나 Yes 중 하나, [yY]es와 동일함)
korea|japan|chinese (korea, japan, chinese 중 하나)

정규식에서는 위에서 언급한 특수 문자를 제외한 나머지 문자들은 일반 문자로 취급함




 DB가 log file sync 메세지를 앞세우고 버벅거리는 현상이 발생했네요... 그것도 거의 매일 퇴근시간 쯤에요.
이곳 저곳 뒤지다가 발견한 문서입니다.
엑셈에서 운영하는 Oracle관련 위키같네요.


원문보러가기~!



 애플을 만든 영원한 엔지니어 스티브 워즈니악과 탁월한 사업가인 스티븐 잡스에 대한 글이 네이버캐스트에 올라와있네요. 네이버캐스트의 [오늘의 세계인물]입니다.

원문보러가기~

 두 사람의 인간성을 비교해가며 보여주고 있는데, 역시나 워즈니악 옹이 좀 성격이 좋은 편이죠. ㅋㅋ
자기 소유의 애플 주식을 동료들에게 싼 값에 나눠줘서 애플 성공으로 벌어들인 부를 나누기도 했고, 현재는 사회 봉사에 열중하고 있는 워즈니악은 잡스와는 다른 면을 보이는 사람이죠. 저도 저런 동네 선배와의 관계가 있었다면... 아니 저렇게 능력을 알아주고 받쳐줄 수 있는 후배를 만났다면 어떻게 되었을지 알 수 없겠죠. ㅋㅋ
참 존경스러운 사람들입니다.


아래는 제가 읽어본 두 사람에 관련된 책입니다. 한번 보세요.
스티브 워즈니악
카테고리 경제/경영
지은이 스티브 워즈니악 (청림출판, 2008년)
상세보기

스티브 잡스의 창조 카리스마
카테고리 경제/경영
지은이 김영한 (리더스북, 2006년)
상세보기


# cat /proc/cpuinfo
이렇게 입력하면

processor    : 3
vendor_id    : GenuineIntel
cpu family    : 15
model        : 6
model name    : Intel(R) Xeon(TM) CPU 3.00GHz
stepping    : 4
cpu MHz        : 2992.850
cache size    : 2048 KB
physical id    : 0
siblings    : 4
core id        : 1
cpu cores    : 2
fdiv_bug    : no
hlt_bug        : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 6
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl est cid xtpr
bogomips    : 5985.04
대략 이런 형식의 정보를 얻을 수 있습니다.
이를 바탕으로 대략 분석해본 결과 아래와 같은 결론을 얻었습니다.

physical id : 물리적인 CPU 번호
siblings : 해당 physical CPU의 코어수
core id : 해당 논리 CPU core 번호. Dual core이면 core 번호가 틀리고, Hyperthreading이면 core 번호가 같다.
cpu cores : 논리 core 갯수. siblings와 cpu cores의 값이 같으면 그 수치대로 Dual/Quad core라고하면 되는 것 같다. 아니면 Hyperthreading인가??

결론.

physical id 갯수 : 물리적인 CPU 갯수
siblings 값 : 개별 CPU의 코어수
siblings 값 / cpu cores 값 : 이 결과값이 2이면 Hyperthreading, 1이면 Dual/Quad core... 뭐 이 정도...


참고 자료
Linux: /proc/cpuinfo 에서 Dual(Quad) Core와 Hyper Theading 구분하기
 삼성동에 있는 썬 마이크로시스템즈(주) 교육센터에서 4월 오픈 기술세미나 참석자를 모집하네요. 가상화와 자바EE 등에 대한 내용을 주제로 하고 있고, 4월에 세번 개최하네요.
4월 7일 화요일 7시 : 클라우드 컴퓨팅을 위한 서버가상화
4월 14일 화요일 7시 : Glassfish의 미래와 자바EE
4월 28일 화요일 7시 : 한국썬의 SOA전략:자바캡스6버전

원문보러가기~

아래 내용은 원문의 일부입니다.
> 참가비: 무료

>  신청방법
아래의 메일로 [세미나명/회사명/이름/휴대폰/이메일)을 작성하여 보내주세요.
(세미나 신청은 선착순으로 마감되며, 신청자분께는 별도 안내 예정입니다.)


Eclipse에서 Oracle 개발할때 사용하는 플러그인이네요.

영문으로 된 아래의 소개글을 대~충 읽어보니 웹로직에서 개발할때 사용하는 이클립스 플러그인이라고 하네요.
아직 써보지는 않아서 어떨지는 모르겠네요. 좋겠죠???

This certified set of Eclipse plug-ins is designed to help develop, deploy and debug applications for Oracle WebLogic Server. It installs as a plug-in to your existing Eclipse, or will install Eclipse for you, and enhances Eclipse's capabilities for Java, Java EE, Spring, ORM and WebServices.

Plugin to Eclipse today for free.


플러그인 홈페이지 보기

다운로드 하기
IBM DW에 올라온 글 중에 [안전한 PHP 응용 프로그램을 작성하는 일곱 가지 습관]이라는 글을 소개합니다.
앞으로 PHP에 손댈 일이 많아질것 같아서 여기저기 뒤지다보니 찾게된 문서입니다. 혹시나 이 문서를 나중에 못 찾을까봐 즐겨찾기 해놓는 기분으로요. ^^

원문보러가기 : 안전한 PHP 응용 프로그램을 작성하는 일곱 가지 습관

PHP 응용 프로그램을 짤 때는 원격 보안과 지역 보안을 모두 고려해야 합니다. 이 기사에서는 두 가지 측면 모두에서 PHP 프로그램 보안을 높여줄 개발자를 위한 일곱 가지 프로그래밍 습관을 소개합니다.

보안을 고려할 때는 실제 플랫폼과 운영체제 보안뿐만 아니라 응용 프로그램 보안 유지도 중요하다. 즉, 프로그래머는 안전한 프로그램을 짜야 한다. PHP 프로그램을 작성한다면 다음 일곱 가지 습관으로 프로그램 보안을 최대로 높여보자.

  • 입력을 검증하라.
  • 파일 시스템을 보호하라.
  • 데이터베이스를 보호하라.
  • 세션 정보를 보호하라.
  • XSS(Cross-Site Scripting) 취약점을 방어하라.
  • 폼 정보를 보호하라.
  • CSRF(Cross-Site Request Forgeries)를 방어하라.
IBM DW에 올라온 글중에 파이썬3 관련 문서가 있어서 소개합니다. 오랫만에 파이썬 관련 글을 보게되네요.

원문보기 : Python 3 입문, Part 1: 새로운 기능


Python 3은 Guido van Rossum이 개발한 강력한 범용 프로그래밍 언어의 최신 버전입니다. 이 버전에서는 이전 버전인 2.x 제품군과의 호환성이 지원되지는 않지만 일부 구문 문제가 정리되었습니다. 이 기사는 연재 기사의 첫 번째로서 언어에 영향을 주는 변경 사항과 이전 버전과의 호환성에 대해 설명하고 새로운 기능의 예제를 제공합니다.

Python 3000 또는 Py3K(Microsoft® Windows® 2000 운영 체제에서 부르는 별명)이라고도 하는 Python 버전 3은 Guido van Rossum이 개발한 범용 프로그래밍 언어의 최신 버전이다. 코어 언어의 많은 부분이 개선된 새 버전에서는 이전 버전인 2.x 제품군과의 호환성이 지원되지 않는다. 기타 변경 사항은 다음과 같다.

  • 소수 나눗셈, 예를 들어 1/2.5를 리턴한다.
  • longint 유형이 하나의 유형으로 통합되었으며 후행 L이 제거되었다.
  • True, FalseNone이 이제 키워드로 사용된다.

Python 3에 관한 연재 기사의 첫 번째인 이 기사에서는 새로운 print() 함수, input(), 입/출력(I/O) 변경 사항, 새로운 bytes 데이터 유형, 문자열 및 문자열 형식의 변경 사항, 마지막으로 내장 dict 유형의 변경 사항에 대해 설명한다. 이 기사는 Python에 이미 익숙하면서 긴 PEP(Python Enhancement Proposal) 목록을 보지 않고 변경 사항을 확인하고 싶어하는 프로그래머를 대상으로 한다.


+ Recent posts