IBM DeveloperWorks 한글 사이트에 올라온 글 중에서 가상화 관련 문서 두개를 소개하려합니다.

원문 보러가기
1. VM 전개 자동화하기
2. Linux 하이퍼바이저 분석

 Linux에서의 가상화 솔루션과 VM 전개 자동화에 관한 글인데, 일단 DeveloperWorks 상의 분류는 Linux로 되어 있네요. [VM 전개 자동화하기]는 VMWare를 기준으로 설명을 하고 있고요. [Linux 하이퍼바이저 분석]은 오픈소스인 KVM(Kernel-based Virtual Machine)과 Lguest(이전에는 lhype)로 설명하고 있습니다.
 흠... 둘 다 써보진 않았지만 아주 흥미로운 내용이었습니다. 다만, 아직 Linux에서의 가상화 솔루션을 많이 경험해보지 않아서 인지 [VM 전개 자동화하기]문서 보다는 [Linux 하이퍼바이저 분석]가 좀더 재미있더군요. 소스 코드가 없어서 그런건지... ^^;

 Oracle RAC을 집에 있는 PC에 구현해보려하는데, OTN에서 찾은 문서에는 Oracle VM을 사용하더군요. Oracle VM이 Xen 기반인걸로 알고 있는데, Xen에 대한 설명은 없어서 좀 아쉽더군요. HDD랑, RAM이랑 증설한 뒤에 빨리 집에다가 구성해봐야 할텐데요...

아... 암튼... 이번에 소개하는 [VM 전개 자동화하기], [Linux 하이퍼바이저 분석] 모두 도움이 될 만한 내용이라고 생각합니다. 한번 보시길...
 IBM DeveloperWorks에 올라온 클라우드 컴퓨팅 관련 연재인 "클라우드에 연결하기 1~3"을 소개하려합니다.
하이브리드 클라우드 컴퓨팅에 대해서 설명하고 있는 글입니다. 썬에서 다운로드받은 클라우드 관련 백서와 함께 보고 있는 중입니다. 음... 썬에서 받은 문서가 개념 잡기엔 더 좋은것 같네요.

원문보러가기 : 클라우드에 연결하기 Part 1, 클라우드에 연결하기 Part 2, 클라우드에 연결하기 Part 3

하이브리드 클라우드 애플리케이션 개발에 대해 다루는 세 편의 기사로 구성된 시리즈의 마지막 기사인 이 기사에서는 클라우드 컴퓨팅의 통제와 보안에 대해 설명합니다



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

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

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


 정규식(혹은 정규표현식)에 대해서 자료를 찾다가 괜찮은 문서들이 있길래 정리해봅니다.
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 중 하나)

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




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) 목록을 보지 않고 변경 사항을 확인하고 싶어하는 프로그래머를 대상으로 한다.


 자바로 만든 마법사 기반의 설치 프로그램을 소개하는 글이 올라왔습니다. 재밌어 보이는 글이라 소개합니다. ^^

원문 : 사람을 위한 자동화: 마법사 기반 설치 프로그램 사용하기

소프트웨어 설치는 많은 사용자에게 보통 고통스러운 일에 해당합니다. 여러분이 생성한 설치 패키지(소프트웨어 개발의 "마지막 일정")는 사용자에게 채택되거나 쓰레기통에 버려지는 갈림길에서 예전보다 나아질 수 있습니다. 이번 사람을 위한 자동화 기사에서, 자동화 전문가 Paul Duvall은 무료로 이용할 수 있는 오픈 소스 IzPack 도구를 사용하여 마법사 기반 설치 프로그램을 만들어 여러분의 소프트웨어를 사용자가 간단하게 설치할 수 있게 하는 방법을 살펴보겠습니다.

내 경험을 전반적으로 볼 때, 나는 소프트웨어 개발 전체 생명 주기에 참여해왔다. 요구 사항 도출, 설계, 개발 그리고 테스트뿐만 아니라 배포, 빌드 관리, 문서화, 설치 같은 활동에도 참여했다. 요즘 애자일을 많이 채택하면서 이 부류가 좀 더 많아졌고 일반화되었다. 하지만 내가 참여했던 애자일 프로젝트에서 효율적인 배포와 설치가 항상 최우선 과제는 아니었다. 이것이 바로 아이러니다. 잠재적인 고객이 여러분의 소프트웨어를 쉽게 사용할 수 없거나 아예 사용할 수 없다면, 여러분은 그들을 잃을 것이기 때문이다. 여러분의 소프트웨어를 간단하게 설치하는 방법을 제공하는 것은 고객을 유지하고 더 끌어오는데 정말로 중요하다.



2007년에 작성된 글이지만 이번에 번역되서 올라온 유닉스 쉘 관련 글을 소개하려합니다. 늘 그렇듯이 유닉스에서의 쉘의 유용함은 끝이 없죠. 최근에는 MS에서도 파워쉘이라는 걸 발표해서 커멘드라인에서의 관리 기능을 강화하곤했죠.

이번에 소개할 문서는 튜토리얼 형태로 "쉘 명령 실행하기", "쉘 산술 연산과 진법 변환", "인라인 입력", "쉘 안에서 쉘 실행하기", "연속 루프", "키보드 입력 읽기"의 내용을 담고 있습니다.

튜토리얼 보러가기 : 초보자를 위한 유닉스 팁과 기교, Part 4: 알아두면 유용한 셸 기교


셸 프로그램을 작성하다 보면 자동으로 처리하고 싶은 상황이 가끔 생깁니다. 이 튜토리얼에서는 간단한 본(Bourne) 셸 스크립트로 이러한 상황을 처리하는 예제를 소개합니다. 구체적으로 (10진수를 16진수로, 16진수를 10진수로, 10진수를 8진수로 등) 진법 변환하기, 파이프로 연결한 루프에서 키보드 입력 읽기, 셸 안에서 셸 실행하기, 인라인 입력, 디렉터리 내 모든 파일에 명령을 한 번씩 실행하기, 여러 가지 방법으로 연속 루프 만들기 등을 살펴보겠습니다. 튜토리얼 마지막에는 알아두면 편리한 한 줄짜리 셸 스크립트 모음도 제공합니다.

이 튜토리얼 내에서

  • 셸 명령 실행하기

  • 셸 산술 연산과 기본 변환

  • 인라인 입력

  • 셸에서 셸 실행하기

  • 연속 루프

  • 키보드 입력 읽기

  • 정리

목표

이 튜토리얼은 셸을 사용하여 다양한 수준에서 작업을 자동화하는 방법을 보여주려는 게 목적이다. 특수한 상황에 유용한 팁과 기교를 제공하며, 자주 수행하는 작업에 유용한 한 줄짜리 셸 스크립트 모음도 제공한다.


선수조건

이 튜토리얼은 유닉스(UNIX®)에 비교적 익숙하지 않은 사용자를 대상으로 한다. 유닉스 파일 시스템, 명령행, 파일과 디렉터리 명령, vi 같은 편집기로 텍스트 파일을 편집하는 방법 등 기본 개념만 이해하면 충분하다. 필요한 모든 개념은 튜토리얼 Part 1, 2, 3에서 자세히 설명했다.


시스템 필요조건

본(Bourne) 셸이나 본 셸과 호환되는 셸이 돌아가는 유닉스 시스템이 필요하다. 배시(bash) 셸도 괜찮다. 또한 시스템에 로그인할 사용자 계정도 필요하다. 이 외에 별다른 요구사항은 없다.


 HDD 기반의 파일 시스템을 사용하는 사람이라면 그것이 개인용 PC든, 서버든 File system 문제로 장애를 격은적이 있을겁니다. 누구나 알고 있는 MS Windows booting중에 나오는 파란 화면의 Disk check라든지... 운영중이던 Server의 Disk가 일부 손실된다던지... 제게 Oracle 관리에 대해서 가르쳐주시던 모 강사님은 미러링에 실시간 백업까지 하던 시스템의  스토리지가 동시에 고장나는 일도 겪어보셨다고 하시더군요. 백업은 몇번을 해도 낭비가 아니라는...

그러고보니 주제와는 좀 벗어난 얘기를 하고 있군요. 본론으로 돌아와서요. 시스템의 전원 문제나 비정상 종료 같은 장애시에 파일 시스템의 무결성을 제공하는 저널링 파일 시스템에 대한 IBM DeveloperWorks의 문서를 소개합니다. 예전에도 ext4였나요? 저널링 관련 얘기가 나온 문서를 소개한 적이 있는데요. 이건 비교적 최근 문서입니다. 한번 보세요~

원문 : 리눅스 저널링 파일 시스템 분석

 
최근에 저널링 파일 시스템이 신비의 대상으로 여겨져 연구 주제로 떠오르고 있습니다. 하지만 오늘날 저널링 파일 시스템(ext3)은 리눅스(Linux®)에 기본으로 탑재되어 있습니다. 저널링 파일 시스템 이면에 숨겨진 아이디어를 찾아 시스템 전원 문제나 비정상 종료 과정에서 더 나은 무결성을 제공하는 방법을 익힙시다. 현재 사용 중인 다양한 저널링 파일 시스템을 익히고 차세대 저널링 파일 시스템도 미리 살펴봅시다.

저널링 파일 시스템을 다양한 방식으로 정의할 수 있지만 요점만 간략하게 정리해보자. 저널링 파일 시스템은 부트 시점에서 파일 시스템 일관성 검사를 위해 fsck가 돌아가는 모습에 진절머리가 난 사람을 위한 고안물이다(저널링 파일 시스템은 결함에 회복력을 보이는 파일 시스템이라는 아이디어에서 나왔다). 저널링 기능이 없는 전통적인 파일 시스템을 부적절하게 종료하면, 운영체제가 이를 감지해 fsck 유틸리티를 사용해 일관성 검사를 수행한다. 이 유틸리티는 파일 시스템을 탐색해(상당히 오랜 시간이 걸릴 수도 있다) 안전하게 교정할 수 있는 문제점을 수정한다. 어떤 경우에는 파일 시스템이 심하게 망가졌기에, 운영체제가 알아서 단일 사용자 모드로 진입한 다음에 사용자가 복구 과정을 진행하도록 만드는 경우도 있다.

 내가 개발한 프로그램이 다양한 플랫폼에서 실행이 된다면 참 기분 좋은 일일것입니다. 그래서 자바로 짠 코드를 유닉스 서버와 윈도우 PC에서 돌려보곤 하죠. ^^;

 이번에 소개하는 문서는 GUI Desktop application을 다양한 OS 상에서 개발하는데 관련된 문서입니다. 한번 읽어보시구요. 저도 루비에 대해서는 잘 몰라서 걍... 소개만 하려합니다. 암튼... 이런게 꽤 흥미롭죠.
연말이랑 이것저것 정리할게 많군요. 아~ 왼쪽 다리가 빨리 안 나아서 걱정입니다.



원문 : JRuby와 스윙(Swing)으로 크로스 플랫폼 개발

루비로 웹과 콘솔 애플리케이션을 제작할 수 있지만, 또한 다수의 플랫폼에서 실행 가능한 복잡한 GUI 데스크톱 애플리케이션도 작성할 수 있습니다. JRuby 덕택에 루비 GUI 툴킷에서 자바(Java™) 플랫폼이 제공하는 UI 도구도 사용할 수 있습니다. JRuby는 루비의 C 구현 대비 안정된 대체 구현입니다. 본 문서에서는 Monkeybars를 소개하고, 이와 관련된 예제 애플리케이션도 더불어 제공합니다. Monkeybars는 JRuby와 스윙을 써서 애플리케이션을 제작하기 위한 라이브러리입니다.

루비는 현재까지 웹 애플리케이션 작성을 위한 최고의 프로그래밍 언어로 알려져 있다. 이는 주로 Ruby on Rails 프레임워크 덕분이다. 그러나 이 언어는 충분히 강력하므로, GUI 데스크톱 애플리케이션 작성 이상의 것도 할 수 있다. 이 글에서는 데스크톱 목적으로 루비를 사용하는 법을 다룬다. 독자는 GUI 데스크톱 애플리케이션을 생성하는 상세 예제를 통하여 Monkeybars를 실습해 볼 수 있다. Monkeybars란 스윙과 JRuby에 기반을 둔 오픈 소스 라이브러리다.


+ Recent posts