액션스크립트   article search result : 3
액션스크립트 관련 디자인 패턴 책은 크게 두 가지가 있다.


다른 하나는 이번에 번역 출간된 Advanced ActionScript 3 with Design Patterns이다.
사용자 삽입 이미지

ActionScript 3.0 Design Patterns

사용자 삽입 이미지

Advanced ActionScript 3 with Design Patterns




사실 두 책은 거의 동시에 출판되었는데,

Joey Lott가 지은 Advanced ActionScript 3 with Design Patterns가 조금 먼저

출시되었다.

두 책 모두 디자인 패턴을 다루고 있지만,

사실 제목에서 풍기듯 조금 다른 면모를 가지고 있다.

ActionScript 3.0 Design Patterns는 GoF의 패턴을 충실히 따르고 있고

디자인 패턴의 원리와 함께 왜 디자인 패턴을 써야 하는지 등을 설명하는 반면,

Advanced ActionScript 3 with Design Patterns는 말 그대로

"디자인 패턴과 함께 하는 고급 액션스크립트"이기 때문에

디자인 패턴에 대한 내용 뿐아니라 정규식이라든가 E4X에 대한 내용도 들어있고

에를 들어 액션스크립트의 core 개념이라 할 수 있는 Event에 대해 상세히 다루고 있다.

그래서 어떤 독자는 이 책은 디자인 패턴 책이기도 하지만 훌륭한 AS3 레퍼런스이기도하다고 했고

이러한 평가에 대해서는 ActionScript 3.0 Design Patterns의 저자인

William Sanders도 동의했다 (관련 링크)

결론적으로, 엄밀히 말하면, 두 책은 비슷하면서도, 서로 다른 책이라 할 수 있다.

전자가 Java나 C++같은 다른 언어의 디자인 패턴을 액션스크립트에 접목해

훌륭하게 설명하고 있다면,

후자는 액션스크립트 OOP와 디자인 패턴을 설명하면서 액션스크립트의 기본 원리를

충실히 다루는 책이라고 할 수 있다.

하지만 아직 앞의 책이 번역되지 않은 상황에서,

(그리고 이미 비슷한 책이 시장에 나와 버린 상황에서)

당분간 무엇을 선택해야 할 지는 분명해 보인다.

또한 Joey Lott의 디자인 패턴 책이 디자인 패턴과 함께 다른 액션스크립트 원리들을

다루고 있기는 하지만,

디자인 패턴에 대한 설명이 부족한 것은 아니기 때문에,

이 책만으로도 디자인 패턴을 공부하는 데는 부족함이 없어 보인다.


 


크리에이티브 커먼즈 라이센스
Creative Commons License
2008/11/01 20:59 2008/11/01 20:59
REPLY AND TRACKBACK RSS http://joshy21.com/weblog/rss/response/28
REPLY AND TRACKBACK ATOM http://joshy21.com/weblog/atom/response/28
TRACKBACK ADDRESS
http://joshy21.com/weblog/trackback/28
REPLY RSS http://joshy21.com/weblog/rss/comment/28
REPLY ATOM http://joshy21.com/weblog/atom/comment/28
wrote at 2008/11/01 22:17
언능 언능 공부해야겠어요ㅎㅎ
eirene 
wrote at 2008/11/01 23:16
오타 찾기 이벤트 당첨되시면, 냉큼 보내드리겠습니다!!! ㅇㅇ
[로그인][오픈아이디란?]
이름 :
비밀번호 :
홈사이트 :
비밀글 :

정규식 사용하기 (2)

지난 시간에 이어서 계속해서 정규식을 배워보도록 하겠다.

6. 임의의 숫자를 나타내는 \d

\d는 임의의 숫자를 나타낸다. 이때 d는 digital의 약자이다. digit은 프랑스어의 doigt가 솓가락을 의미하듯, 0-9 사이의 숫자를 나타낸다. 따라서 \d는 [0-9]로 표현해도 상관없다. 우선 다음 예제를 보도록 하자.

이 예제는 숫자가 시작하는 부분을 찾기 위한 정규식이다. 만약 정규식을 안 쓰고 특정 문자열에서 숫자가 시작하는 부분을 찾는다고 하면 어떻게 할 것인가? 아마도 대부분의 사람들은 문자열의 처음부터 시작해 한 글자씩 문자열인지 숫자인지 비교해 보고, 숫자가 나올 때 해당 문자의 인덱스를 리턴하는 방식을 택할 것이다. 하지만 정규식을 사용하면, 이렇게 간단한 로직만으로 이러한 문제를 해결할 수 있다.

이어서 다음 예제를 살펴보도록 하자. 이번에는 숫자가 세개 이어서 나와야 하는 경우이다. 이런 경우에는 {최소 숫자, 최대 숫자} 방식을 쓴다.

{ }에서 최대 숫자는 반드시 넣을 필요는 없지만, 최소 숫자는 반드시 넣어 주어야 한다. 예컨대, {1,3}은 최소 1개 이상에서 최대 3개까지를 의미하고, {1}은 정확히 1개, {1,}은 1개 이상을 의미한다
.

이 예제에서는 \d와 { }를 사용해 숫자 3개 + 임의의 문자/숫자/기호 + 숫자 3개 + 임의의 문자/숫자/기호 + 숫자 3개가 나오는 패턴의 문자열을 찾고 있다. \d{3}은 "숫자 세개가 연속한 숫자"라는 의미이다. \d{3}.에서 .은 임의의 문자 또는 숫자 또는 기호를 나타낸다. 따라서 위의 패턴은 예컨대, 111-222-333에도 매칭된다.

만일 문자 그대로의 점을 찾을 때는 .가 아닌 \.을 사용해야 한다. { } 표현에 대해 조금 더 깊게 생각해 본다면, 위의 정규식은 다음과 같이 바꿀 수도 있다.



여기서는 괄호를 썼는데, 괄호로 묶인 부분은 하나의 문자열 그룹이 된다. 하나의 그룹으로 묶인 문자열은 검색시 하나의 단위로 묶이기 때문에 나중에 문자열을 수정해야 할 필요가 있거나 논리적으로 명확히 구별되는 부분은
이처럼 괄호로 묶어서 그룹화하는 것이 좋다.

괄호 자체가 정규식에서는 특수하게 해석되기 때문에 (는 \(로 쓰지 않는 한, 항상 문자열 그룹을 지정하기 위한 것으로 생각해야 한다. (\d{3}.){2}는 해석하면, "숫자 3개 + 임의의 문자/숫자/기호로 이어진 문자열이 두번 연속으로 나오는 문자열"로 해석할 수 있다. 따라서 이러한 문자열은, 예컨대 111.222 또는 111-222 또는 111a222 정도의 문자열이 되겠다. 물론, 1113222도 된다.

여기서 의아해할 사람이 있을 수 있는데, 다시 위의 설명을 읽어보자. 정규식에서 점은 어떠한 것이라도 받아들일 수 있다는 허락의 의미를 갖는다. 따라서 1113222 든 1111222든 위 정규식에는 모두 부합한다.

note: 문자 그대로의 점을 사용하려면 \.을 사용해야 한다. 예컨대 111.222.333으로 정의되는, 즉, 숫자 3개 + 점 + 숫자 3개 + 점 + 숫자 3개로 정확히 끝나는 패턴의 문자를 찾으려면, 다음과 같이 해야 한다.

7. 임의의 문자를 의미하는 \w

임의의 문자를 찾으려면 \w을 사용하면 된다. 지난 시간에 배운 것을 조금 응용해 보면, 예컨대 0개 이상의 임의의 문자를 찾으려면 /\w?/ 또는 /\w*/을 사용하면 된다. 물론, 개수를 알고 있는 경우라면, /\w{2}/ 처럼 해도 되겠다. 다음 예제는 문자 3개 다음에 숫자 4개가 이어지는 문자열을 찾는 정규식이다.

물론 앞에서 보았듯이 .이 문자든 숫자든 모두 커버할 수 있기 때문에, /.{7}/이라고 해도 위의 abc1111은 패턴에 부합하게 된다. 하지만 이 패턴은 단순히 7자리의 임의의 문자/숫자/기호로 이루어진 문자열을 말할뿐 문자 몇개 + 숫자 몇개로 이루어진 문자열을 찾아주지는 못한다.

따라서 특정 자리에 문자 몇개가 와야 하고 이어서 숫자 몇개가 와야 한다면, 반드시 /\w{문자 개수}\d{숫자 개수}/ 패턴을 사용해야 한다.

8. 모든지 다 받아줄 수 있는 .의 사용법

예컨대, 10자리 날짜를 표현할 때, 어떤 사람은 2008/10/08이라고 하고 어떤 사람은 2008-10-08이라고 하고 어떤 사람은 2008.10.08이라고 한다고 해 보자. 이처럼 특정 문자를 이어주는 문자가 가지 각색일 때에는 패턴 중간에 .을 사용하는 것이 좋다. 물론, 지난 시간에 배운 것처럼 [-.\/]을 사용해도 되겠지만, (예외적으로 [ ] 안에서 .은 그냥 문자 그대로의 점을 의미한다. 하지만 문자 그대로의 /의 경우에는, [ ]안에서도 정규식을 닫는 의미의 /로 해석되기 때문에, 문자 그대로의 /를 [ ] 안에서 사용하려면 앞에 \을 붙여주어야 한다) 사용자가 2008a10b08처럼 엉뚱하게 입력할 걱정이 없는 경우에는 그냥 .을 써도 무방하다.

이 정규식은 숫자 4개 + 임의의 문자/숫자/기호 + 숫자 두개 + 임의의 숫자/문자/기호 + 숫자 두개가 연속해서 나오는 문자열을 정의하고 있다. 이 때 임의의 숫자/문자/기호가 아닌 특정 기호 가운데 하나를 선택하게 하려면 [ ] 안에 해당되는 기호들을 정의하면 된다.

다음 시간에는 이렇게 찾은 문자열들을 하나씩 바꾸어 보도록 하겠다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/08 22:45 2008/10/08 22:45
REPLY AND TRACKBACK RSS http://joshy21.com/weblog/rss/response/8
REPLY AND TRACKBACK ATOM http://joshy21.com/weblog/atom/response/8
TRACKBACK ADDRESS
http://joshy21.com/weblog/trackback/8
REPLY RSS http://joshy21.com/weblog/rss/comment/8
REPLY ATOM http://joshy21.com/weblog/atom/comment/8
[로그인][오픈아이디란?]
이름 :
비밀번호 :
홈사이트 :
비밀글 :

정규식 사용하기 (1)

문제점 : 정규식은 암호같아서 사용하기 어렵다.

해결책 : 정규식의 사용법은 생각보다 쉽다.

이번에는 간단한 정규식의 작성법을 살펴보도록 하겠다.

1. 단순 문자열 비교 단순 문자열의 경우에는 그냥 정규식을 선언하고 찾는 문자열을 /와 /사이에 넣어주면 된다.

String 객체의 search 메소드는 정규식에 해당하는 패턴의 문자가 발견되면, 발견된 첫 인덱스를, 없으면 -1을 반환한다.
 
2. 대소문자 구분없이 비교 대소문자 구분없이 문자를 비교하려면 처럼 / /이후 i 플래그를 넣어주어야 한다.

3. OR 조건 문자열 비교 / /안에 | 를 넣으면 | 안에 있는 문자들 중 하나에만 매치되면 해당 패턴에 부합되게 된다. 즉, 위에서는 대상 문자열이 Action으로 시작하든, Java로 시작하든, Perl로 시작하든, 뒤에 문자열에 Script이기만 하면 패턴에 부합된다. 또 위에서는 / /다음에 i를 사용하고 있기 때문에 AcTIon 또는 JAva, PERl 과 같이 대소문자가 섞여있는 문자들도 검색할 수 있다.

4. 여러 문자열 중 하나를 포함하는 문자열 비교 [ ]안에 문자를 넣으면, 그 문자중 한 글자를 포함하면 패턴에 부합하게 된다. 예를 들어, 위의 예제는 volcano에서 모음(a,e,i,o,u)만 추출한 예제이다. 이 때 [ ]는 |와는 달리 문자 한 개만 검색한다는 점을 주의해야 한다. 문자 여러개의 OR 조건으로 검색할 때에는 |을 써야 한다. 참고로 g 플래그는 한번만 검사하는 게 아니라 나올 때까지 계속 검사한다는, global 플래그이다.

5. 선택 문자열을 포함하는 문자열 비교

선택 문자열을 포함하는 문자열을 비교할 때에는, ?를 사용한다. ?는 앞의 패턴의 문자가 0번 이상 반복된다는 것을 의미한다. 이번 예제는 지금까지 배운 내용들을 응용한 예제이다.

먼저 [Aa]는 첫 글자가 대문자 A 또는 소문자 a에 부합해야 한다는 뜻이다. 어쨌든, 이 정규식은 찾는 글자가 소문자든 대문자든 A로 시작해 이어서 바로 ction이 나와야 한다. 그런데 뒤이어서 나오는 글자는 Script 또는 script인데, 이 때 S는 소문자일 수도 있고 대문자일 수도 있다 ([ ]사용). 그리고 Script는 괄호로 묶여서 ?플래그가 붙었는데, 이는 Script가 나올 수도 있고 안 나올 수도 있다는 것이다.
 
예를 한번 들어보자.

SELECT 컬럼명 FROM 테이블명 WHERE ~ 에서

WHERE절은 나올 수도 있고 안 나올 수도 있다.

바로 이럴 때 (where)? 라고 쓰면 된다.

다음 편에 계속..............
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/06 13:41 2008/10/06 13:41
REPLY AND TRACKBACK RSS http://joshy21.com/weblog/rss/response/7
REPLY AND TRACKBACK ATOM http://joshy21.com/weblog/atom/response/7
TRACKBACK ADDRESS
http://joshy21.com/weblog/trackback/7
REPLY RSS http://joshy21.com/weblog/rss/comment/7
REPLY ATOM http://joshy21.com/weblog/atom/comment/7
[로그인][오픈아이디란?]
이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1 
count total 10269, today 2, yesterday 16
관리인 : eirene
rss
I am
전체
Development
La vie quotidienne
English
Languages
Jesus
글 보관함
2010/01, 2009/06, 2009/03, 2009/02, 2009/01,
달력
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31