“10일 만에 배우는 네트워크 기초 - 모두의 네트워크” 서평

Posted by Myoa™
2018. 8. 25. 10:19 리뷰
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


“10일 만에 배우는 네트워크 기초 - 모두의 네트워크서평


서론

인터넷이 없는 세상은 상상할 수 없다. 현 시대에 빗대어 생각해본다면 그런 세상은 실존할 수 없다가 더 정확한 표현이라 생각된다. 인터넷은 온 곳에 적용되고 필요로 한다. 산업에는 물론이요, 가정집에도 개인 공유기를 소유하고 있다. 이렇듯 많은 사람들이 네트워크를 통해 인터넷을 사용하고 있지만 안타깝게도 네트워크라는 정확한 개념은 알지 못하는 경우가 많다. 네트워크 = 인터넷 정도로 생각하고 사용하여도 지장이 없기 때문이다.

우리는 개발자이거나 혹은 엔지니어이다. 프로그래밍 언어는 컴퓨터 공학의 수많은 분야중 하나일 뿐이다. 네트워크 역시 프로그래밍 언어처럼 큰 범주에 속하는 또 다른 분야이다. 다시 원점으로 돌아가서 우리는 개발자, 엔지니어이다. 적어도 전공자는 비전공자보다는 더 알아야 한다. 단순히 네트워크 = 인터넷이 아니라, 사용하는 네트워크가 어떻게 구성되어있는지 어떻게 통신하는지, 발생할 수 있는 문제는 무엇이며 어떻게 해결해왔는지에 대해 알아야 할 필요가 있다.

누구나 처음부터 잘할 수는 없는 법이다. 하지만 공유기 설정을 위해 매뉴얼, 혹은 잘 알고 있는 사람의 글을 통해 설정 몇 가지를 만져보는 것 정도는 해보았기 마련이다. 이 책이 공유기 설정방법을 알려주는 것은 아니다. 그러나 우리가 공유기 설정페이지에서 보았을 용어들의 개념과 그 용어들이 파생된 근본적인 개념까지 개론적으로 쉽게 설명해주어 네트워크 입문자와 공부를 필요로 하는 사람들에게 입문 난이도를 낮추어 주는 도서라 생각된다.

 

 

본론

책은 크게 준비, 초급, 중급 3가지 파트로 구성되어있다. 첫 번째 순서인 준비에서는 네트워크란 무엇인지, 네트워크 모델의 계층을 이해하기 위해 필요한 용어들에 대해 소개되어있다. 둘째로 초급에서는 OSI 네트워크 모델에서 세션과 표현 계층을 제외한 5개의 계층에 대해 설명한다. 그리고 마지막으로 중급에서는 유선을 넘어 무선으로 통신할 때에 대한 개념을 간략하게 소개해준다.

이 책이 초심자에게 적당한 이유로 몇 가지 재밌는 점을 들 수 있는데, 먼저 러닝커브와 함께 학습 로드맵을 표현해준다는 것이다. 보통 처음 읽는 분야의 책은 지루하기 짝이 없다. 공학계열 종사자에게 쉽게 와 닿을 수 있는 로드맵과 러닝커브를 제공함으로써 내가 몇 장 쯤에서 긴장을 해야 할지 미리 알 수 있다. 또 다른 점은 학생과 교수, 조교 3명의 인원이 강의를 진행하는 식으로 대화식 진행을 한다. 이는 읽는 사람이 쉽게 이해할 수 있도록 도와준다. 강의를 듣는 학생인 마론군은 이 책을 읽는 독자를 잘 빗대고 있다. 교수의 단답형 질문에 쉽게 대답하기도, 더듬는 모습을 보이기도 한다. 마치 우리가 무언가를 배울 때 모든 걸 한 번에 이해하거나 기억하지는 못하는 것처럼 마론군을 통해 독자를 격려하고 있음을 느낄 수 있었다.

다만 쉽게 설명하려는 노력에서 비롯된 그림은 약간의 아쉬움을 전해준다. 간단한 토폴로지나 플로 차트임에도 아기자기한 그림과 잘 보이게 하기 위해 큼직큼직하게 묘사가 되어있는데 글을 읽으며 고개를 끄덕이다 막상 그림을 보면 조금 더 생각할 시간이 필요했다. 한 눈에 들어오지 않는 일부 그림은 시각화를 조금 더 보완해주면 어떨까 라는 생각이 든다.

이전 문단에서 언급한 러닝커브에 대해서도 이야기를 나누고 싶다. 러닝커브 그래프에는 피크에 해당하는 장이 없는데, 이는 그 만큼 개념을 쉽게 다루고 있음을 뜻함 일 것이다. 실제로 얼마나 매칭이 되는지 궁금하여 스톱워치를 키고 매 장마다 읽을 때 걸리는 시간을 측정하였다. 결과적으로 사람마다 읽는 시간은 다르겠으나 소요시간 비율은 굉장히 매칭이 잘 되었다. 역시 선배들의 말은 아무쪼록 듣는 편이 본인한테 도움이 되는 듯싶다.

각 섹션의 끝에는 간단한 용어 퀴즈와 새로 나온 용어들을 다시 한 번 정리해주는 복습장이 있다. 네트워크를 공부해 본 사람이라면 본 책을 읽지 않아도 쉽게 풀이가 가능할 테지만 알고 넘어가야 할 용어들을 콕콕 집어 준 것이 아주 마음에 든다. 이야기를 나누려면 그 분야의 용어는 알아야 하니 말이다. 그래서 이 책은 섹 션 끝마다 당신이 이건 꼭 알고 넘어가야 합니다라고 자상하게 말해준다.

책 내용은 굉장히 쉽게 잘 설명되어 있다. 비전공자가 읽어도 최소 반절은 이해하지 않을까 싶다. 다만 너무 쉽게 설명하려다 보니 생략되는 개념들과 어려운 배경들은 두루뭉술하게 넘어가기도 한다. 처음에는 읽으며 이렇게 넘어가도 괜찮은것인가? 라는 생각을 하다가 중간쯤 되니 오히려 생각이 바뀌었다. 좀 더 어려운 책을 읽기전에 워밍업으로 기초를 다지는데에 목적을 둔 책이 아닌가! 목적에 굉장히 충실하고 있음에 감탄하였다.

 

 

결론

대다수의 네트워크 책들은 읽기가 매우 어렵다. 그 책들이 일부러 읽지 못하게 어렵게 작성한 것이 아니라 네트워크가 쉽지 않은 분야이기 때문이다.

본 책에서 독자가 얻을 수 있는 이점은 본론에서 충분히 설명이 되었다고 생각한다. 쉬운 개념 풀이, 잘 정리된 로드맵과 순차적 진행, 대화식의 친근한 설명. 책 제목이 좀 더 자극적이게 열흘 까지는 무조건 배우는 네트워크 기초 정도 이었어도 괜찮을 것 같다. 네트워크 때문에 막히는 신입분께도 부담없이 권하기에 좋은 책이라 생각된다.

또한 이 책 한권으로 모든 것을 해결할 수는 없다. 10일 만에 네트워크를 통달하고 싶은 도둑분은 없으리라 믿는다. 정확한 네트워크 이해를 위해서는 관련 원서 몇 권을 봐도 시원찮을 것이다. 다만 이 책을 통해 더 깊은 네트워크를 배우기 전 다치지 않도록 워밍업 함에 좋은 준비운동이 될 것이다.

 

 

본 리뷰는 길벗 출판사 개발자 리뷰어 모집 이벤트에서 지원을 받고 작성되었습니다.

정규식 Regular Expression 기초 3/3

Posted by Myoa™
2016. 9. 12. 23:53 개발/Python
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


정규식 Regular Expression 기초 3/3


지금까지 기본적인 아무개문자, 문자집합, 연산자, 수량자를 배웠습니다.

이번 강의를 끝으로 사전정의된 문자집합, 하위식과 하위식보조표현,

그리고 부록으로 정규식의 플래그에 대해서 알아보도록 하겠습니다.

아래 나올 사전정의된 문자집합들은 반드시 외우시기 바랍니다. 외워야만 하는 부분입니다.



18.

\w는 문자“w”를 이스케이핑하여 “w”가 아닌 [A-Za-z0-9_]를 의미합니다.

당연하게도 이 문자집합에 대해서도 수량자를 적용할 수 있습니다.


19.

반대로 \W는 \w를 제외한 모든 문자에 해당됩니다.

\w는 [a-zA-Z0-9_] 라면 \W는 [^a-zA-Z0-9_]입니다.

따라서 영소대문자, 숫자, 언더스코어( “_” )를 제외하고 찾게됩니다.



20.

\s는 “s”를 이스케이핑하여 공백 문자를 찾게해줍니다. 여기서 공백은 “ ”만 의미하는 것이 아니라 “\n” 뉴라인도 포함합니다. 당연히 “\t” 탭도 공백이므로 탭문자도 포함합니다.

반대로 \S는 공백을 제외한 모든 문자를 찾습니다.



21.

\d는 Numeric을 찾습니다. 문자집합으로 표현하면 [0-9]입니다.

\D는 Numeric을 제외한 문자를 찾습니다. 문자집합으로 표현하면 [^0-9]입니다.



22.


\b는 문자의 경계선을 찾습니다. 이해하기 약간 모호할 수 있습니다.

 The best plan is no plan.

이해를 돕기위해 음영처리했습니다.

\b를 검색해볼까요?

이런, Infinite Exception이 발생합니다. 이는 \b단일 식이 순환참조를 유발시키기 때문입니다.

어디 단어에서부터의 경계인지가 모호하기 때문에 정확한 판단을 내릴 수 없고 무한루프에 빠지게 되죠.

\b.+\b 식으로 검색해보겠습니다.

[“The”, “ ”, “best”, “ ”, “plan”, “ ”, “is”, “ ”, “no”, “ ”, “plan”] 이 매치됩니다.


“ The”에서 단어의 경계는 “ ”도 아니고 “T”도 아닙니다. 그 사이가 경계죠. 굳이 표현하자면 “ |T” 저 부분이 됩니다.

따라서 \b는 저 경계를 찾는 것입니다.

\b.+\b 식은 ‘경계와 하나이상의 아무문자와 경계’ 를 찾습니다.

저번에 제가 .은 공백(“ ”)도 찾는다고 말씀드렸습니다.

그래서 “ ”도 매치가 되는겁니다.

“The| |best”

“best| |plan” 이 부분도 식에 부합하기 때문이죠.



\B는 \b의 반대를 찾습니다. 따라서 단어와 단어사이의 경계가 아닌부분 즉 문자와 문자사이의 경계를 찾습니다.

“The best plan is no plan”라는 문장에서는

“T|h|e b|e|s|t p|l|a|n i|s n|o p|l|a|n”

\B.\B 식은

[“h”, “e”, “s”, “l”, “a”, “l”, “a”] 만 매치될겁니다.

is no에서 i와 s사이는 분명 \B가 맞습니다. 하지만 o뒤는 문자와 문자사이의 경계가아니라 단어와 단어사이의 경계가 되죠. 따라서 식에 부합하지 않습니다.

실제로도 다음과같이 매치됩니다.


24.

24번은 통용되는 정규식이 아니기 때문에 제외하겠습니다.




25. 26.


25번을 진행하기전에 하위식과 그 연산들에 대해 알아보겠습니다. 여기서부터는 굉장히 고차원적인 내용이 나옵니다.

여러본 곱씹어보면서 읽어보세요.


하위식은 정말 간단합니다. 괄호안에 식을 넣어주면됩니다. /(이렇게요)/g

이제 매치와 그룹의 차이점을 알려드릴텐데

서브넷마스크 B클래스에 해당하는 “255.255.0.0”를 가지고 지지고 볶아보겠습니다.

각 옥텟에 해당하는 숫자만 가져오는걸 목표로 하겠습니다. (우리는 IPv4의 주소형식에 일치하는지를 보는 것이 아니라 정상적인 IP주소를 기준으로 각 옥텟의 숫자를 가져오는 것이 목표입니다)

우리가 배운바로는 저 IP주소를 정규식으로 잡아보기위해

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 로 작성하게됩니다.

[“255.255.0.0”] 이 잡히죠.

하지만 우리가 원하는건 각 옥텟의 숫자입니다.

이럴경우에는 subexpression을 이용해서 식은 전체를 매치시키되, 원하는 값만 그룹화합니다.


(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}) 식을 이용하면

[“255.255.0.0”] 이 매치되고

[“255”, “255”, “0”, “0”] 로 그룹화됩니다.

매치는 말 그대로 식전체에 부합하는 매치결과를 반환하고, 그룹은 하위식이 있을 경우 하위식의 내용들만 추출해서 그룹화하여 반환합니다.


하지만 하위식을 사용하다보면 몇몇 문제를 마주칩니다. 자주 사용되어지는 상황들에 대해 기술해보겠습니다.


1) ?:

OR연산을 예시로들자면

“The chair is under the desk.” 라는 문장에서 의자가 어디에 있는지를 찾아내려고 합니다.

(on|in|under).+ 의 식을 이용하고자 합니다.

[“under the desk”] 가 매치되고 [“under”] 가 그룹으로 반환됩니다.

우리는 의자가 어디에 있는지를 알고싶은것이지, 굳이 전치사를 그룹으로 얻고 싶지 않습니다.

이럴 때 하위식 맨앞에 “?:”를 넣어줍니다.

(?:on|in|under).+

이 경우 [“under the desk”] 가 매치되고 그룹되는 것은 없습니다.


2) ?=

전위연산의 긍정형입니다.

전위연산이란, 전위연산식 앞에 일치하는 패턴을 찾는것으로써

위 예시를 보면

\w+(?=X) 라는 식으로 [“AAA”]가 매치되었습니다.

“AAAX—AXXAAA-AbcdxX” 라는 문장에서는

[“AAA”, “AX”, “Abcdx”] 가 매치됩니다. 3개의 요소 전부 뒤에 “X”가 붙는다는 공통점이있죠.

하지만 매치되지는않습니다.

이러한 경우를 단순히 Non-Capturing이 아니라, Consume하지 않는다고 합니다.

저도 정확하게 이해한 개념이 아니기 때문에 섣불리 단정지을 수는 없지만 위에 \b처럼 해당 문자를 캡쳐하지않고 경계를 나타낸다고 보는게 좋습니다.

AAA|X 다음과 같이요.

(\w+)X 와는 다른 결과죠. AAAX까지 매치가 되고, AAA가 그룹으로 반환됩니다. X를 소비한셈이 되죠.



3) ?!

전위연산의 부정형

?= 전위연산의 부정형입니다.

위에서는 해당 식이 있으면 검색이지만 부정형은 없어야만 가능합니다.

그래서 단일 문자보다는 문자집합이나 OR연산을 통해 필터링처럼 사용됩니다.


4) ?<=

후위연산의 긍정형

전위연산이 Capture(lookahead)였다면

후위연산은 

(lookabehind)Capture입니다.

따라서 (?<=X)\w+

“XAAA—BXADEF—POWERX” 라는 문장에서

[“AAA”, “ADEF”]가 매치됩니다.

주의할점은 위에도 적었듯이, 후위연산식 뒤에 캡쳐할 식을 작성하셔야합니다.


5) ?<!

후위연산의 부정형

후위연산역시 부정형이 존재합니다.

작동은 방식은 전위연산의 부정형과 같습니다.


※ 단, 후위연산은 JS에서 공식적으로 지원하지않습니다. 백엔드에서 사용되는 언어들 (python, Java, etc...)의 Regex모듈은 지원합니다.



정규식 플래그 (Regular Expression Flags)

(http://regexr.com 에서 발췌)


I

Makes the whole expression case-insensitive. For example, /aBc/i would match AbC.

1강에서 배웠듯이 정규식은 기본적으로 case sensitive(대소문자 구별)합니다. 하지만 i플래그를 주면 case-insensitive되어 대소문자구별없이 검색하게됩니다.

ex)“Power! power! POWER!”라는 문장에서

/power/g

>> [“power”]

/poWER/gi

>> [“Power”, “power”, “POWER”]


g

Retain the index of the last match, allowing subsequent searches to start from the end of the previous match.

Without the global flag, subsequent searches will return the same match.


RegExr only searches for a single match when the global flag is disabled to avoid infinite match errors.


마지막 매치가 끝날때까지 계속 해서 검색을합니다. g플래그가 없을경우에는 한번이라도 매치되는 결과가 나온다면 검색이 종료됩니다.

ex) “과일은 우리에게 많은 영양소를 제공합니다. 과일섭취를 늘립시다.”라는 문장에서

/과일.+/g

>> [“과일은”, “과일섭취를”]

/과일.+/

>> [“과일은”]



m

When the multiline flag is enabled, beginning and end anchors (^ and $) will match the start and end of a line, instead of the start and end of the whole string.

Note that patterns such as /^[\s\S]+$/m may return matches that span multiple lines because e the anchors will match the start/end of any line.

^ $는 “첫”문장의 시작부터 “마지막”문장의 끝까지를 판단합니다. 하지만 m 플래그를 사용한다면 그 문장의 범위가 각 문장을 좁혀져 판단합니다.


ex) 


/^[\w\W]+?$/g 식은 전체를 한문장으로 판단하여 전체가 매치되는 반면,

/^[\w\W]$+?/gm 식은 각 문장의 처음과 끝사이의 모든([\w\W]+?)문자를 가져오라는 의미이므로

각 문장, 즉 총 11줄을 매치하고 그룹화합니다.



이렇게 지금까지 3장에 걸쳐서 정규식 Regular Expression의 기초를 배워봤습니다.


수고많으셨습니다.

정규식 Regular Expression 기초 2/3

Posted by Myoa™
2016. 9. 9. 21:43 강의
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


정규식 Regular Expression 기초 2/3


문자집합까지 끝을 냈고 이번에는 OR연산 그리고 수량자(*, ?, +)에 대해 알아보겠습니다.


소괄호안에 |(Shift + \키) 를 넣으면 정규식에서의 OR연산이 됩니다.

“월요일 화요일 수요일 목요일 금요일 토요일 일요일”에서

(토|일)요일 로 검색하면 [“토요일”, “일요일”]이 매칭됩니다.


11. 

수량자에 들어가기 앞서 수량자는 크게 *, +, ? 3개로 나눌 수 있습니다.

*는 없거나 무한에 가까울때까지 검색,

+는 무조건 1개이상 이며 무한에 가까울때까지 검색,

?는 앞의 문자가 있거나 없거나 (한글자만) 검색을 하게 됩니다.


쉽게 정리하자면

*는 앞문자를 x번 검색합니다. ( 0 <= x )

+는 앞문자를 x번 검색합니다. ( 1 <= x )

?는 앞문자를 x번 검색합니다. ( 0 <= x <= 1 )


12. 

수량자 *에 대한 예들입니다.

아무개문자 . 와 수량자 *가 만나

문장전체가 하나의 매치로 발견되었습니다.



13. 

수량자 +에 대한 예들입니다.

수량자 +를 이해하기에 적절한 예시가 없어보여 새로운 예시를 들어보겠습니다.

“나는 사과를 2개 먹었다.” 에서

[0-9]+개 먹었다. 라는 식으로 검색하면

[“2개 먹었다.”] 가 검색됩니다.



“나는 사과를 15개 먹었다.” 많이도 먹었군요.

이 문장에서 같은 [0-9]+개 먹었다. 식으로 검색하면

[“15개 먹었다.”] 가 검색됩니다.

하지만

“나는 사과를 one개 먹었다.” 라는 식에서

[0-9]+개 먹었다. 식으로 검색하면

아무것도 발견되지 않습니다.

왜냐하면 “개 먹었다” 앞에 숫자가 1개 이상 오라고 식을 작성했기 때문이죠.

따라서 +는 최소한 해당 문자를 1개 이상 포함해야만 검색이됩니다.


14.

수량자 ?에 대한 예들입니다. 아까보다 더 적절하지 못하네요

마찬가지로 새로운 예시를 들어보겠습니다.


“게임을 하고싶다” 라는 문장과

“게임을 더 하고싶다” 라는 문장 2개가 있습니다.


어떻게 하면 두 문장 다 매치가 될까요?


“더? ”를 ?연산자로 넣으면됩니다. 물론 눈치가 빠르신 분들은 알아차리셨겠지만 *로 동작합니다.


“게임을 더? ?하고싶다” 라는 식은 분명히 “더”라는게 들어갔지만 두 문장다 이상없이 매치가 됩니다.

바로 수량자 ? 덕분에 “더”라는 글자가 들어가도 되고, 들어가지 않아도 되기 때문입니다.

여기서 한가지 보기 싫은부분은 “더? ?”죠. 우리는 더 ?를 원했지만 정규식을 이를 허가하지 않습니다.

따로따로 더가 있거나 없고, 공백이 있거나 없거나로 식을줘야만이 위 문장에서 정상적으로 검색이 가능합니다.


이에 대해 추후 나올 subexpression(하위식)에 해답이 있는데

(더 )?” 라고 식을주면 “더? ?” 와 같은 동작을 하고 이에 조금나아가 “(더 ?)?”로 작성을 한다면

“게임을 하고싶다”

“게임을 더하고싶다”

“게임을 더 하고싶다”

모두 매치가 됩니다 :)



http://myoa.kro.kr/” 라는 주소 문자열에서

https?:\/+w*\.?myoa\.kro\.kr 라는식으로 검색해봅시다.

하나씩 분석해보자면(보기좋게 자르자면)

http s? \/+ w*\.? myoa\.kro\.kr 입니다.


http : 말 그대로 http를 검색합니다.

s? : s 한글자가 있거나 없거나(1개이거나 0개)를 검색합니다.

\/+ : \/(/를 이스케이핑한 것)가 1개이상을 검색합니다.

w*\.? : w가 없거나 또는 여러개거나 그리고 “.”이 있거나 없거나를 검색합니다.

myoa\.kro\.kr : 그리고 마지막으로 메인주소인 “myoa.kro.kr”를 검색합니다.


이 정규식이 찾아 낼 수 있는 주소는 아래와 같습니다.

http://myoa.kro.kr

https://myoa.kro.kr

http://www.myoa.kro.kr

https://www.myoa.kro.kr


갑자기 장황한 식이 나와서 당황할 수 있으나 하나씩 차근차근 곱씹어 보시고, 모르는 것은 질문바랍니다.


15.

다음은 지정 수량자입니다. 사실 지정이라고 부르지는 않지만 의미상 편하게 부르기 위해 지정해봤습니다.

해선 안될 짓중 하나이긴 한데.. 너무 모호해서


수량자 ?는 너무적고 수량자 *는 너무 많다. 싶으면 브레이스( { } )를 이용합니다.

이는 수량을 직접 조절할 수 있으며 가독성에 좀 더 도움이 될 수도 있죠.


사용식은 {x,y}이며 x > y여야 합니다. 강력한 주의사항은 절대로. 절대로 {}안에 공백을 넣어서는 안됩니다.

또한 x나 y를 생략가능하며 문자 하나를 생략하여 단항일 경우 0은 제외하고 사용해야합니다. (infinity loop에 걸림)

{1} : 1개

{2,6} : 2개 이상 6개이하

{5,} : 5개 이상

{,6} : 6개 이하


가장 간단하게 .{5} 라는 식은 아무 문자나 5개를 찾는다 입니다.

따라서 [“One r”]이 첫 번째로 매치가 됐고 그 뒤를 이어서 [“ing t”, “o bri”.......]가 매치가 됩니다.

[els]{1,3} 식은 “e”, “l”, “s”중에 1~3번 반복된 부분을 찾는다 입니다.

그래서 e도 찾아지고 ll, ess가 찾아지는겁니다.


간단하죠?


16.

이번에는 수량자 *, +, ?와 수량자 { }의 상관관계를 배워보겠습니다.


15번을 잘 보신분이라면 각 수량자를 수량자{ }로 표현이 가능하다는 것을 눈치챘을텐데요,

 

* == {0,} #단항이 아니라 0이 올 수 있습니다.

+ == {1,}

? == {0,1}


위에 예시 또한 같은 의미를 담고있습니다.

하지만 보통의 경우 가독성을 위해 수량자 *, +, ?를 주로사용하며 특정 개수일때만 수량자 {}로 지정해서 사용한답니다.


17. 

이번에는 수량자의 특별기능입니다.


“하늘과 땅과 바람과 물과” 라는 문장에서

~~과 들을 추출하려고 합니다.

지금까지 배운바로는 .+과 또는 .*과(추천하지 않음)를 사용할텐데

그렇게 호락호락하게 원하는 결과를 내어주지 않습니다.

왜냐하면 위에 식의 결과는 다음과 같기 때문입니다.

[“하늘과 땅과 바람과 물과”]

왜 그럴까요?


정규식 수량자에는 크게 탐욕적 수량자(Greedy quantifier)게으른 수량자(Lazy quantifier)로 나뉩니다.

기본적으로 수량자를 사용할때는 탐욕적 수량자로 동작합니다. 하지만 수량자 뒤에 ?를 붙이면 게으른 수량자로 바뀌어 동작합니다.

탐욕적 수량자 : 최대한 넓은 범위를 매치시키려고 합니다.

게으른 수량자 : 최대한 좁은 범위를 매치시키려고 합니다.


.+?과를 사용해볼까요?

[하늘과”, “땅과”, “바람과”, “물과]


하나씩 차근차근 생각해보죠.

.+과

.는 아무 문자를 의미합니다.

맨처음 “하”가 매치되겠죠? 거기서부터 + 즉 1개이상의 아무문자를 잡습니다.

언제까지? 로 끝날때까지


늘과 땅과 바람과 물


합쳐서 [“하늘과 땅과 바람과 물과”]가 매치됩니다.

한 마디로 가장 크게잡는거죠 .+ 의 범위를


하지만 .+?과는 아까 말한것처럼 가장 좁은 범위를 매치시키려고 합니다.

.는 아무 문자를 의미합니다.

역시 맨처음 “하”가 매치됩니다. 거기서부터 +. 1개 이상의 아무문자를 잡습니다.

가 나올때까지


중요한부분은 나올때까지입니다.


------

------

.....


합쳐서 [“하늘과”, “땅과”, “바람과”, “물과”] 총 4개의 그룹으로 매치됩니다.



그렇다면

r.?? 식은 어떻게 해석될까요?

r 그리고 아무문자(.)인데 있어도 되고 없어도(0 or 1) 됩니다. 근데 최소로(?) 잡겠답니다.

당연히 최소로 잡으려면 아무문자가 0개여야하겠죠?

그래서 결과적으로 이식은 r 단일문자만 매치하게됩니다.





마지막 탐욕적 수량자랑 게으른 수량자를 너무 장황하게 설명했는데 수량자는 잘못이해하고 잘못사용하면 infinity loop에 빠지는건 둘째문제이고 논리적 오류가 어디서 발생했는지 못찾아서 골때리는 경우가 허다합니다.

따라서 수량자를 적절하고 잘 사용하고 다음에 배울 하위식(subexpression)과 적절히 조합한다면 자신에게 필요한 정규식이 완성될 것입니다.


기초 2/3편을 마치겠습니다. 수고하셨습니다.

정규식 Regular Expression 기초 1/3

Posted by Myoa™
2016. 9. 9. 18:24 강의
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


정규식 Regular Expression 기초 1/3


http://zvon.org/comp/r/tut-Regexp.html에 기반하여 설명합니다.

정규식 테스트는 http://regexr.com 을 이용하시기 바랍니다.


타 언어나 이론들을 배우기 위해서는 제 개인적으로 2가지 플랜이 존재합니다.

하나는 수많은 예제를 보면서 메커니즘을 이해하고 잘 정돈된 문서를 보는것과

다른 하나는 처음부터 문서를 정독하면서 마지막 장까지 나아가는 방법입니다.

콕 집어 어떤게 더 좋다 라고는 말할 수 없겠지만 정규식같이 사용되는 기호들이 생소한 경우에는 전자를 이용한 방법이 더 좋았습니다. 개인적으로도 그렇게 공부했고, 기초, 중급 강의를 진행하면서도 위에 사이트에 나와있는 예제들을 전부 풀어쓰고 후에 연산자들에 대해 기술하도록 하겠습니다.


기본적으로 식은 /“정규식표현”/g 이며 특수한 상황에서 //i //gi //gim 등에 대해 사용방법도 끝에 설명하겠습니다.

첨언으로 vim에서 /(슬래시)를 입력함으로써 //g의 형태를 사용하겠다는 의미에서 검색하는 단축키가 되겠습니다.



1.


정규식은 기본적으로 case sensitive(대소문자 구별)합니다. 그 말은 hello와 Hello가 서로 다른 식이라는 것을 의미합니다.

“Hello, world” 라는 문장에서 Hello라는 식으로 검색했을 때는 “Hello, world” 부분이 매치가 되네요. 하지만 hello라는 식으로 검색했을 때는 아무 부분도 매치가 되지 않습니다.


다시 한 번 강조하지만 정규식의 기본옵션에서는 대소문자를 구분합니다.


2.

정규식에서는 모든 문자를 패턴을 위한 문자로 인식합니다. 무슨말인고 하면 “ ” 와 “  ”는 다르고 “.” 과 “..”는 다르다는 말이죠. 공백, 탭, 개행 전부다 이스케이핑(추후 나옴)없이는 전부 단일문자로 인식합니다.

위에 케이스에서도 “Hello, world!”를 Hello, world로 검색하면 “Hello, world!”가 매치 되지만

Hello,  world를 검색했을경우에는 아무것도 매치가 되지않습니다.


3. 

본격적으로 정규식 기호들에 대해 나오기 시작합니다.

^과 $는 각각 문장의 첫, 끝을 의미합니다.

“사과는 사과” 라는 문장에서


^사과 로 검색 시 “사과는 사과”

사과$ 로 검색 시 “사과는 사과

가 매치됩니다.


당연히 사과^ 와 $사과 는 컴파일 에러는 나지 않지만 실행중 논리에러가 나게되죠.

(문장에 시작앞에 다른 문자가 존재할 수 없으며, 문장에 끝뒤에 다른 문자가 존재할 수 없죠)


그냥 사과 로 검색하면 “사과사과”가 매치되며 파이썬 정규식 모듈에서는 이를 list의 형태로  [“사과”, “사과”]를 반환합니다.



4.

앞서 ^과 $는 각각 문장의 처음, 끝을 나타낸다고 말씀드렸습니다.

그런데 실제로 ^이나 $라는 문자가 필요할 땐 어떻게 할까요?

바로 이때 이스케이핑을 하게됩니다.

\(백슬래쉬)를 사용하려는 기호나 문자앞에 배치하면 그 기능이 이스케이핑되어(escape. 키보드의 esc가 escape) 새로운 기능으로 작동하게됩니다.


바로 \^, \$ 처럼요.


위에 예제 자체는 훌륭하나 배우는 입장에서 봤을때는 영 이해하기가 귀찮은 예제입니다.

예제를 살짝 수정해보겠습니다.


^^ 오늘도 좋은하루입니다.~^^!


이 문장에서 ^^를 찾으려면 어떻게 할까요?

\^\^로 검색하면되겠죠.


^^ 오늘도 좋은하루입니다.~^^!” 2개가 매칭됐네요.

아무래도 우리는 앞에 ^^만 구해야 할거같습니다.


^\^\^로 검색해보겠습니다.

^^ 오늘도 좋은하루입니다.~^^!”

정확하게 원하는 결과가 나왔습니다.


$의 경우도 같습니다. $문자 자체를 사용하려면 \$.

$라는 문장맨끝을 의미하는 기호로 사용하려면 $로 사용하시면됩니다.


만약 보기가 불편하다고 ^ \^\^ 와 같이 식을 정의하면 아무것도 검색이 되지않습니다.

이것은 마치

테스트\n 과 테스트 \n이

“테스트”

“테스트 ”처럼 둘은 엄연히 다른 문자열 리터럴을 의미하기 때문에 보기 불편하더라도 익숙해지도록 노력해야합니다.


5.

“.” 은 any character. 즉 아무개 문자를 의미합니다.

.에는 거의 대부분이 해당됩니다. 영소대문자, 숫자, 한글, 특수문자, 공백 등..

하지만 포함이 안되는 것이 있죠. 바로 new line(개행문자. 즉, 엔터로 개행한)입니다. new line을 포함해서 찾는방법은 따로 있는데 지금 설명할 타이밍이 아닌거 같습니다.


맛보기로만 보여드리자면

[\w\W] 또는 [\s\S] 등으로 정의할 수 있습니다.


Case2에서 ...... (점 6개)를 검색하는데 왜 powerf까지만 검색이될까요?

이유는 ul!!!의 길이가 5개이기 때문입니다.

쉽게 풀어쓰자면 Case2에서 매치되는 그룹은

[“Regula”, “r expr”, “ession”, “s are ”, “powerf”]입니다. 전부 6글자씩인데 ul!!!는 5글자이기 때문에 식에 부합하지않습니다.

뒤에 !가 하나 더 추가된다면 매치가 되겠죠.


/....../g

Regular expressions are powerful!!!!

>>> [“Regula”, “r expr”, “ession”, “s are ”, “powerf”, “ul!!!!”]


6.

5에서 “.”역시 일반적인 문자로 사용하는게 아닌 하나의 식으로 사용했었습니다.

그렇다면 정말로 .을 찾고싶다면 어떻게 할까요?

4에서 배웠던데로 이스케이핑(escape)이 필요합니다.

그저 \. 만 해주면 되는거에요.

. 으로 검색시에는 [“O”, “.”, “K”, “.”] 총 4개가 매치되는군요.

\.로 검색시에는 [“.”, “.”] 총 2개가 매치됩니다. 우리가 원하는 결과네요.


특정문자(아무개문자)와 .을 같이 찾고싶다,

.\. 식을 사용하면됩니다.

.과 특정문자를 찾고싶다면

\.. 이 되겠죠?



7.

[ ]는 문자의 집합을 나타냅니다. [ ]안에는 문자가 들어갈수도, 문자셋(set)이 들어갈수도, against식이 들어갈수도 있습니다.


배우기전에 앞서 아래와 같은 룰이 존재하므로 익히고 넘어갑시다.

- : 문자의 범위를 의미합니다.

[ㄱ-ㅎ가-힣]은 한글전체를 의미합니다.

[a-z]는 영소문자의 범위를 의미합니다.

[A-Za-z]와 같이 영문자 전부를 포함할 수도 있으며,

[0-9]처럼 숫자만을 포함할 수도 있습니다.

[ㄱ-ㅎ가-힣0-9]처럼 여러개의 문자집합을 섞어서 사용할 수도 있습니다.


^ : 문자집합을 부정합니다. 다시말해 문자 집합내의 문자를 걸러서 매치합니다.

[^a-z]는 a부터 z까지의 범위를 검색하지않습니다.

[^ 0-9]는 0부터 9까지 그리고 공백을 검색하지 않습니다.

[^ A-Za-z0-9]와 같이 여러 집합을 섞어서 사용할 수도 있습니다.



제 위에 식을 보면

How do you do?에서 [oyu]를 검색하면

[“o”, “o”, “y”, “o”, “u”, “o”] 만 매치가됩니다.

말 그대로 o,y,u를 하나의 문자집합으로 두고 이중에 하나라도 들어가면 매치하는거죠.


[dH]. 처럼 대소문자도 구문합니다.


[가나라][방면]

“가방안에 나비가 들어왔노라면.”

이라는 문장에서 위와 같은 식으로 검색을하면

[“가방”, “나비”, “라면”] 이 매치가 되는것이죠.

이는 가방, 가면, 나방, 나면, 라방, 라면 의 경우를 검색하는 식이 의미합니다.


8.

위에서 짚고 넘어간 것처럼 –은 문자의 범위를 지정합니다.

[C-K][CDEFGHIJK]와 동일하고 [2-6][23456]과 동일하단 의미이죠.


9.

8과 마찬가지로 위에서 ^는 문자집합을 부정하는 식이라고 언급했습니다.

예제를 보면 [^CDghi45]는 C, D g, h, i, 4, 5를 제외하고 검색한다는 뜻입니다.

[^W-Z]처럼 범위를 부정하는 방법도 있습니다.


추후에 배우겠지만 정규식은 \s \w \S \W \d \b처럼 자주 사용되는 문자집합을 사전에 정의해두고 사용할 수 있도록 만들어져있습니다. 매우 강력한 힘을가진 식입니다.


2부에서 뵙겠습니다.

wo.tc 서브도메인 폐지

Posted by Myoa™
2015. 2. 1. 17:50 공지사항
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


어헝헝.. 휴가나가고싶다..



새로운 서브도메인은 kro.kr입니다.

http://myoa.kro.kr/

인스타그램 프로젝트..

Posted by Myoa™
2014. 6. 10. 21:37 프로그램/유틸
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)




인스타그램의 기적같은 1:1 Square Ratio에 대항하기위한 역발상입니다..


현재 코딩완료. GUI프로그래밍 단계중. 안드로이드로 배포하고 싶은데 집에서 ADT 오류가 심하여 고민중입니다..

아이컴포유 VISVI BT-M1 라이트 사용기

Posted by Myoa™
2014. 5. 27. 20:18 리뷰
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


은 더워지고 전화받기는 짜증납니다. 아무래도 핸즈프리가 필요 할 것 같더군요.

3.5파이 핀마이크를 살지 블루투스 이어셋을 살지 고민을 했습니다.

둘 다 써보자 로 목표를 잡고 먼저 블루투스 이어셋을 고르고 있었습니다.


블루투스는 2.1+EDR, 3.0+HS, 4.0등 많은 버전이 있죠.. 고민을 많이 했습니다.


2.1은 너무 구식이고 3.0을 사자니 소비전력 차이가 있고 손해보는 기분이드는데

괜찮은 4.0을 사자니 가격대도 있고... 4.1에서 바뀐점이 너무 마음에 들고.

(블루투스 위키피디아 문서 참고: http://ko.wikipedia.org/wiki/%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4)


고민끝에 나름 세련된 디자인을 가진 VISVI BT-M1 라이트를 구매하였습니다.

마이크가 길게 잘 빠졌기때문에 음성전달에 효과적일 것 같았기 때문이죠.


1. 구성품

[본체, 이어가이드 4개, 팁 2개, Micro 5pin usb 케이블, 파우치, 설명서, 거치대] 가 들어있습니다.

위 사진 상에만 거치대가 없습니다.

이어가이드는 종류별로 2개씩 들어있는데 잘한 것 같습니다.

그러나 팁이 2개밖에없는데 여기서 약간 오류가 있더군요.

아래에 기술하겠지만 이런 커널형 리시버는 팁을 귓구멍 사이즈에 맞추지 않으면 귀에서 잘 빠집니다.

따라서 저는 팁 2개를 방치해두고 이전에 트파에 사용하는 소(小)팁과 총알팁을 겸해서 사용했습니다.

파우치의 경우 구성품을 담는 용도 이외에는 사용되지 않습니다.


설명서에는 필요한 내용도 있지만 정말 쓸데없는 내용까지 같이 기술되있습니다. 그리고 조작법 사이에 연관성이 부족해 보입니다.

자세한 내용은 아래 3번에서 확인해주세요.



2. 제품 스펙


버전: 블루투스 4.0

대기시간: 130시간

통화시간: 통화 연속 4.5시간

재생시간: 음악 연속 5.5시간

통화거리: 10m

전송전력: 0dBm

주파수: 2.402Ghz ~ 2.480Ghz

온도: -20~60(단위: 섭씨)

사용전력: 3.4~4.2V

무게: 약7g


3. 제품 외관

제품 뒷면이며 보이는 구멍은 LED가 점등 하는 곳입니다.

유닛쪽 부분이 가죽으로 덮혀있어 외관을 고급스럽게 보이게 합니다.

수화기가 그려져 있는 곳은 버튼겸 입니다. 저 버튼과 상단의 (-) (+)버튼을 가지고 동작 시킵니다.


노즐 부분은 타 커널형 리시버처럼 생겼습니다.
그러나 슬리브(팁)를 끼는 뒷부분부터 각이 생기는데 이게 참 복병입니다.

제품 전면에는 로고와 모델, 시리얼 넘버등이 덕지덕지 적혀있습니다.

외관이 


연결된 팁은 트리플 파이에 사용했던 소 팁입니다.


상단에는 Micro 5pin 타입의 USB입구가 있습니다.


몇몇 분들은 경험해보셨겠지만 USB포트 오랫동안 오픈해두다가(사용하지 않고)

먼지가 쌓였을때 연결하면 보드에 쇼트 뙇!

물론 블루투스 이어셋이라는 한계때문에 제품들이 이렇게 되있는데

고무 마개나 내부적으로 뚜껑이 있었으면 낫지 않을까 생각이드네요.


측면에는 (-), (+)버튼이 있습니다.

버튼 잘 눌립니다. 아주 잘 눌립니다. 버튼이 제일 마음에 드네요.



4. 성능 및 총평

간단한 외관 설명과 사용기를 위해 성능과 총평을 합쳤습니다.


1) 베이스가 너무 강력합니다. 4.0지원기기 답게 특별한 어플리케이션 없이 스트리밍과 전화 통화가 가능합니다.

그러나 사용하다보면 이게 음악을 위한건지 통화를 위한건지 모르겠습니다. 어차피 모노인데 설마 음악감상을 위해 만들었을까요.

이퀄라이저로 블루투스 부분에서 저음을 낮추고 고음을 올려야 통화에 유익해집니다. (커널형이라 그런 것 같습니다.)


2) 블루투스 이어셋의 고질적인 문제이지만 소리가 너무 작고 뭉개짐이 간혹 발생합니다. 마이크가 길게 뻗어있어서 마이크 소리가 클 줄 알았는데

정말 작습니다. 특히 1번에서 언급한 문제와 합치면 금상첨화 fck한 일이 발생합니다.


3) 페어링이 굉장히 간단하며 연결이 끊어졌을 시에 BT-M1은 자동으로 대기모드에 들어갑니다. 레인지(Range)에 들어오면 다시 연결됩니다.

또한 전원 ON/OFF시 알림이 나옵니다. 전원이 켜졌습니다, 꺼졌습니다..

전화가걸려오면 약간 멍청하게 읽지만 공 일 공 x x x x x x x x 이렇게 나옵니다. 굳이 폰을 안봐도 됩니다.

그러나 벨소리가 BT-M1으로 넘어가서 스트림 되면 참 좋을텐데.. 굳이 번호 알려줘야되나. 그냥 벨소리들으면서 화면으로 번호보는게 나을 것 같은데


4) 노즐의 모양이 귀에서 너무 잘빠집니다

닿는건 별 문제가 되지 않지만 통화중에 귀에 맞추기위해 만지작 하다보면 상대방에게 굉장히 큰 노이즈가 전달됩니다.

또한 마이크 부분이 얼굴에 닿습니다.


5) 커널형 타입이라 들리는 소리자체는 굉장히 잘 들립니다. 외부 소음에도 크게 영향력이없고 잘 들립니다. 언급한것처럼 저음이 강한 부분을 억제하면

상대방의 통화내용을 파악하는데에는 굉장히 좋을 것 같습니다.




다시 말하면 좋은 제품이긴 하나 왜 순위권에 올랐는지 모르겠는 제품입니다.

차라리 LG나 삼성의 작은 오픈형 블루투스 이어셋이 더 속편하게 사용하지 않을까... 생각이 드네요.

LG, 삼성 제품을 별로 안좋아 함에도 불구하고 찾게 되게 만들어주는 제품이었습니다.

외관이 이쁘기 때문에 그 점을 감안하면 조용한 차 내부에서 핸즈프리로 사용하기에는 좋다고 생각합니다.





새로워진 워터마크

Posted by Myoa™
2014. 5. 25. 18:02 공지사항
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


드 교체작업에 있어 임시 윈도우를 사용하고 있습니다. 

현재 화면 오른쪽 상단에 등록되있는 로고가 최초의 어쩌구저쩌구 입니다.

참 추억이네요.


음 하나씩 보면서 추억팔이나 할까 합니다.




가장 최초의 워터마크였습니다.

폰트가 뭔지고 기억안나고 원본파일이 fla로 되있는데 왜 플래쉬로 만든건지 모르겠습니다.



그리고 CCL이란것을 알기전에 혼자 만들어서 썼는데 돌이켜보면 별 효력 없던 것 같습니다.

법적효력도 없어보이고.



티스토리 주소를 홍보하기 위함이였습니다.

사실 홍보보다는 그냥 나 이런거 만들었어요 뿌우 이런느낌



최초의 워터마크의 폰트를 까먹고 한동안 이걸 사용했었습니다.

왜 그랬을까.. 폰트가 너무 산만하네요. 사진의 집중도를 흐리게 만들기 좋음.



한 때 티스토리에 좋아와 뷰온, 믹시가 유행했었죠. 지금도 쓰는지는 모르겠습니다.

정말 산 속에서 쳐박혀 공부하듯이 공부했더니 블로그를 포기했네요.



이건 After Effect로 만든 거서 같습니다.

만약 타이포그래피와 모션그래픽의 기초를 익힌 지금이라면 이딴 건 만들지 않았을 것 같네요.

강조 효과는 좋았으나 마지막에 글의 정렬도 없고 줄간격도 테러수준입니다.

눈갱




그나마 좀 잘 만든 것 같습니다. 인포그래픽에서도 언급합니다.

3개이상의 폰트 사용금지. 3개이상의 색 조합 금지.

무튼 정신없어 보이긴 하지만 강조는 되지 않을까요.



ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


방금 만든 겁니다. 근데 막상 이미지에 넣으니 이미지 자체에 대한 집중력이 흐려지게되어

아래처럼 수정하였습니다.


요래요래. 배경없애면 안보이니까 급한대로 배경넣었습니다.

나름 이쁘네요. 폰트 이름은 Prime이란 폰트고 otf형식입니다. 오픈타입 그래픽용 벡터 폰트입니다.

폰트도 깔끔하고 무엇보다 개인적, 상업적 용도 모두다 프리라이센스이기때문에 현재 사용중입니다.



ㅋㅋㅋ 지금 보니까 다 흑역사네요. 뭐 한 6년전 일이니까

그때면 이런걸로 오글거릴 것도 없고.. 나름 재밌게 블로그질 한거같은데.




블로그 전면 개편 공사중

Posted by Myoa™
2014. 5. 12. 20:21 카테고리 없음
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)


어디서부터 얼마나 공사되고 얼마나 변경될지는 모르겠으나, 오래된 유물글들이나 이불펑펑 글들의 처리와 더불어

해외 스팸 IP들 차단과 블로그 목적을 약간 변경할 생각입니다.

씨디맨님의 Windows8 Using Bible 후기

Posted by Myoa™
2014. 1. 10. 14:50 리뷰
본 블로그는 클리어타입에 최적화 되있습니다. 글씨가 흐리게 보이면 여기를 눌러 패치하세요(1차수정)






컴퓨터 하드웨어 커뮤니티, 개발자 커뮤니티 사람이라면 누구든 한번쯤은 들어봤을 박춘호(이하 씨디맨)씨.

한때 나도 블로그나 하드웨어,소프트웨어 커뮤니티에서 답변을 달아주고, 원격 및 방문등으로 도움을 주던 때가 있었다.

이것도 웬만큼 힘들어야지. 보통 끈기가 아니고서야 지속적으로 하기 힘든일이다.

본 책을 처음 접한 독자들은 이제 막 지은이를 알게 됬을것이다. 그렇게 지속적으로 활동하시는 분들중 한 분이라고 보면 되겠다.



현재 나는 윈셉을 사용중이다. 물론 윈8도 사용중이고 구시절의 책으로 공부할때를 위한 환경으로 xp도 사용중이다.

이 중에 가장 사용안하는건 물론 윈8이다.

[http://cdmanii.com/3416] 을 참고하면 무엇이 윈도우 7보다 나은지 (사실 블로그에 있는 정보글들만 읽어도 이책한권 이상의 정보를 얻었다 생각해도 좋을듯.)

설명이 되어있다. 아래는 필자가 블로그 내 글과, 구글링, 책내용 등으로 정리한 것.


자동 미러링, IE10, 하이퍼V, 듀얼스크린 작업표시줄, 새로워진 taskmgr, 강화된 dx등 장점이 많다.

그러면 왜 사용자들은 윈8로 쉽게 갈아타지 못했을까?

xp -> 비스타,7의 과정이라고 보면된다. 지금 윈도우7의 점유율은 약 40%로 상당히 높은 점유율을 보여주고 있다.

과거 xp시절을 보는것 같은데, 테마부터 기능까지 뒤엎어졌기 때문에 낯설다는 이유로 선뜻 넘어가지 못하는 것이다.

필자 역시 그렇다. 다만 이번 윈도우8에 대해서는 전체적인 느낌은 비슷, 메트로UI(모던UI)와 강화된 보안, 성능이 주이기 때문에

약간의 가이드만 거치면 윈도우8로의 탈바꿈은 쉽게 이뤄질 수 있다.


이 과정을 거치는 과정에서, Windows 8 Using Bible은 가장 좋은 교사가 아닐까 싶다.

남녀노소 할것없이 모든 층을 주 타겟으로, 가장 기초적인 인터페이스 설명부터 고급관리까지

모른다고 못읽는, 안다고 안읽을 필요가 없는 책이다.


겉표지부터 윈도우8의 분위기를 물씬 풍긴다. Using Bible시리즈 대부분이 이런 느낌을 갖지만

유독 윈8은 더더욱 윈8 컨셉을 보여준다.


8과 7,xp의 멀티부트에 관해서 해결책이 제시되있는 부분이 있다.

(이하 여담)

nt50라는 NTLDR을 사용하다(New Technology Loader) 이후 비스타부터 nt60으로 변경되었다.

그 때 역시 멀티부팅에 대해서 혼란이 온 때가 있었는데 이번 역시 그렇다.

(윈도우7에서의)기존의 방식이 CLI(Command Line Interface)에서 멀티부팅을 선택하고 윈도우가 부팅이 됬다면

윈8부터는 윈도우를 먼저부팅하고, 멀티부트 메뉴를 출력한다.

이 과정에서 주 부트로더가 윈7 드라이브가 아닌 윈8 드라이브에 있어야만 정상적으로 윈도우 멀티부팅이 가능해졌다.


이 모든내용이 자세하게 설명되있지는 않지만 [정상적으로 윈도우8 VHD 멀티부팅으로 진입할 수 있도록 기술되어있다.]



마지막으로 이 책은 수필이 아니다. 소설도 아니다. 정보를 전달하기 위한 책이다.

독자들은 책을 넘어 소통을 원한다. 문학에서의 간접적인 소통이 아닌 직접적 소통을.

현재 책의 지은이인 씨디맨은 8.1 출시에 대한 대응책 제시했고 플러스 알파로 씨디맨(블로그 링크) 블로그 게시판에서, 메일

이부분은 나중에 알게 된 사실인데 심지어 전화,문자로도 질답이 활발하게 이뤄지고 있다.

이쯤되면 정보를 전달하는 책으로써의 구실은 완벽하지 않겠는가?