.NET(닷넷)이 나온 이후 그 기술이 이끌려 마소잡지에도 글을 몇 개 올리고 2001년부터는 책을 쓰기 시작했다.
대학원 시절이고 BK21이라는 아주 편안한 울타리(?)에서 그리 바쁠 것 없이 집중할 수 있었다.
그 유명한(?) 무려 2000페이지가 넘는 영진출판사의 비주얼 C++ 바이블(이상엽 저)처럼 만들려는게 목표였다.
[품절]
[품절]
나름 그 당시 번역서가 아닌 책으로는 최초 C# 책이었고 모든 내용, 예제, 그림까지 최선을 다했으니 만족했던 작업이었다.
하지만 2000년 부터는 본격적인 인터넷시대였고 정보로 넘쳐나기 시작했다.
그 당시 초기의 구글은 정말 대단했다. 대학원 시절 논문은 모두 구글링으로 찾았으니,
IT 출판사들이 많이 사라질 수 밖에...
그 시절을 생각하면 마이크로소프트의 닷넷 기술은 지금의 안드로이드처럼 대단한 관심을 불러일으켰고 자바와 같이 놓고 항상 개발자들
사이에서 장단점을 논하는 대상이었다.
마치 아이폰과 안드로이드폰의 관계라고 할까.
하지만, 요즘과 같은 "오픈"시대에 MS의 기술은 아무리 좋아도 대세가 되지 못하고 있다.
안드로이드로 인해서 자바 언어는 여전히 개발자들에게 필수 아이템으로 장수하고 있지만, 닷넷의 C#은 여전히 윈도우즈 안에서
살고있다 (물론, MONO 등 오픈플랫폼으로 시도가 되었었지만 리눅스 등에서 닷넷을 쓰는 사람은 한 명도 본 적이 없다 -.-).
하지만 MS는 여전히 최고의 기술력을 가지고 있다. 운영체제 - Windows,
문서도구 - Office
웹/커뮤니케이션 - IE8, MSN, Windows Live
게임 디바이스, 플랫폼, SW - XBOX, DirectX
멀티미디어 - Zune, Media player/center
모바일 - Windows Mobile, CE, Phone
프로그래밍 개발환경 - Visual Studio
프로그래밍 언어 - 닷넷(C#, VB.NET ...)
그래픽디자인 개발환경 - Express
그래픽디자인 언어 - XAML, Silverlight
검색엔진 - Bing
클라우드 컴퓨팅 - Windows Azure 헥헥 정말 안하는게 없다.
이렇게 안하는 게 없는 회사인데 아래 3가지를 집중하지 않았으니 지금의 MS가 되었지 않았을까. "오픈" + "웹" + "모바일"
이제 지인들에게 많이 나누어 주고 남은 책은 몇 권 되지 않는다.
사고 싶어도 살 수 없으니 잘 보관해야 겠다.
그리고, "오픈"이 대세이니 누가 볼지 모르겠지만 인터넷에 올릴 생각이다.
- 위치기반 어플리케이션은 Augment Reality과 결합해서 2010년에는 더 많은 어플리케이션이 나올 것으로 보임.
- Mashable의 2010년 LBS 예측을 봐도 느끼지만 모든 회사들이 서로 선점하려고 할 것이고 완전히 모바일 깊숙히 자리잡을 듯 하다.
2.4. Application Cache and DB
- App Cache는 원하는 리소스를 오프라인으로 선언하면 됨.
CACHE MANIFEST로 선언함. cache.manifest 파일에 내용을 적으면 됨.
- Local DB는 Google IO 개념과 거의 동일 (역시 구글!!)
var db = window.openDatabase("NoteTest", "1.0", "Example DB", 200000);
db.transaction(
- 이로 인해 WebApplication의 weak point였던 사용자 데이터 Load/Save가 이제 가능해짐.
2.5. Web workers
- A more powerful web = a more power ful app.
- Javascripts가 백그라운드로 동작한다? -> Web Workers
var worker = new Worker('worker.js');
worker.onmessage = function(event) {
console.log('Results: ' + event.data);
}
// workers.js
function findPrimes() {
// ...
}
아래 HTML5 소개 동영상을 보면 더 자세히 설명하고 있다.
3. HTML5의 지원군들
현재 WebOS+WebApplication은 iPhone, Android의 OS+NativeApps과 비교해서 아래와 같은 단점이 있어 장점이 잘 보이지 않는다.
- 느리고 무겁다
- UI가 플랫폼에 최적화되어 있지 않다
- Interactive하지 않다
- Offline에서 동작하지 않는다.
하지만, HTML5가 대부분의 단점들을 극복하고 있다.
3.1. Web OS
하지만, HTML5+α라면 달라질 수 있다. 그 알파(α)는 바로 WebOS 혹은 WOA(Web Oriented Architecture)가 될 수 있다.
위의 그림은 현재 기존 "HTTP+HTML"이라는 Web의 형태에서 얼마나 많은 기술적, 문화적 발전이 있어왔는지를 잘 보여주고 있다.
이러한 구조는 Google Chrome 이나 Palm WebOS가 하나의 예를 보여주고 있다고 할 수 있다.
그런데 어찌됐든 느린 단점은 극복될 수 있을지 잘 모르겠다. -_-;
3.2. Mobile Web
HTML5는 MobileWeb환경에서 더욱 빛을 발할 것으로 보인다.
이유는,
- Mobile 환경은 플랫폼이 매우 다양하다. 물론, 이 다양성으로 시장이 커지고 있지만 MobileWeb은 어떤 플랫폼이든 관계없이 탑재된 브라우저가 지원된다면 MobileWeb 기반 서비스들을 사용할 수 있다.
- Mobile 환경 디바이스들은 PC 등의 서브로 사용되든지 아니면 동시에 사용되지 완전히 단독으로 사용한다고는 아직까지 볼 수 없다. 따라서, 다양한 환경의 디바이스들을 사용하는 사용자들은 자신의 데이터 동기화나 동일 UI를 선호할 것이다. 즉, MobileWeb은 그런 점에서 Native에 비해 우세하다 (사실, 정말 우세한건지는 잘 모르겠다. 왜냐면 Native도 이미 그런점을 다 극복하고 있기 때문에...)
그 중에서 Fennec (Mobile Firefox)브라우저가 올해 공식 출시될텐데 대략 아래와 같다 (동영상 참고).
- Nokia가 주도하는 Maemo 플랫폼에 탑재되고 N900 출시.
- HTML5의 offline storage 지원
- HTML5의 Javascript, including Javascript access to device capabilities like geolocation, camera, and calling
3.3. Cloud Computing / SaaS (Software as a Service)
클라우드 컴퓨팅하면 구글이다.
Search, Gmail, Docs, Reader, Map, Picasa 등 구글의 GMS(구글 모바일 서비스)들은 모두 구글의 클라우드 서비스 안에 놓여있다. 즉, 온라인 상태에서 동작하는 어플리케이션들이다.
하지만, HTML5의 "Application cache and DB" 기능으로 인해서 오프라인에서도 동작이 가능하게 된다.
- 프로세서가 Qualcomm QSD 8250, 1GHz (이건 얼마나 좋은건지 잘 모르겠네요)
- 플랫폼이 2.0으로 되어 있는데 2.1이겠죠.
- 사업자에 시달리지 않고 구글이 맘대로 만들었으니 구글이 자랑하는 웬만한 기능들이 다 있겠네요. Google
Voce Search (일본어까지 완전 잘 된답니다), Google Goggles (Snap &
Search), Google Voice (사업자가 특히 싫어하는...) 등등
이들 소셜 메시징의 특징은 모바일의 SMS와 유사하게 자신의 짧은 글을 쉽게 올리고 또 다른 사용자들이 바로 쉽게 볼 수 있도록 하는 것이다.
이 단순한 아이디어는 단순 문장을 벗어나 심지어 이미지 등도 추가로 첨부가 가능하게도 하고 실제 SMS와 연동이 되기도 한다.
또한, 모바일 웹 페이지를 서비스하기 때문에 모바일 폰으로도 사이트에 접속에서 이용할 수 있다. 즉, 기존 SMS를 대체할 수 있는 것이다 (물론, 무선 인터넷 비용이 보다 더 저렴해져야 하겠다).
이러한 사이트들의 대부분의 특징은 한번에 올릴 수 있는 문장이 짧은 것이다. 하지만 역시나 이러한 제한을 극복할 수 있는 서비스가 나왔다.
이 사이트에서 서비스하는 것은 매우 단순하다.
긴 URL을 짧고 단순한 URL로 변경해줌
앞에서 소셜 메시징 서비스를 언급한 것을 떠올리면 이 서비스가 왜 좋은 아이디어인지 알 수 있다.
즉, 대부분의 사용자들은 짧은 글을 올릴 때 URL을 포함해서 올리는 경우가 많다.
다들 알다시피 최초의 GUI 브라우저는 "Mosaic"이다. 95년 군 입대하기 전에 학교 PC룸에서 봤었는데 그 당시에는 일본사이트에서 아리따운 모델(?)의 사진 한장을 가져오는데 반나절이상이 걸렸던 것으로 기억한다. ㅎㅎ 지금의 GUI와는 비교되지 않게 허접하지만 그 당시 대강의 웹 브라우저 GUI의 기본을만들었다고 해도 무방하다. 이 Mosaic 브라우저의 UA는 아래와 같았다고 한다.
NCSA_Mosaic/2.0 (Windows 3.1)
현재의 브라우저와는 너무나 다르게 매우 심플하다. 물론 나중에 나올 오페라(Opera) 브라우저도 상당히 심플한 편이다. 그 당시에는 브라우저의 종류가 많지 않았기 때문에 UA가 복잡할 필요는 없었을 것이다.
2. 넷스케이프 "Netscape"
PC통신이 인터넷으로 대체되는 시기에 넷스케이프는시장을 완전히 장악했다. 물론, 인터넷 익스플로러도 시장에 나오기는 했지만 아무래도 2인자일 수 밖에 없었다. 그 때 당시Win95를 깔고 가장 먼저 깔았던 프로그램이 "새롬데이터맨"과 "넷스케이프"였던 것 같다. ㅎㅎ. 그 당시 넷스케이프는Communicator라는 이름으로 웹브라우저 뿐만 아니라 이메일, 뉴스그룹 등의 어플리케이션도 포함한 패키지 형태로 까지업데이트 되었었다. 넷스케이프는 원래 이름이 "Mozilla"였다고 한다. 이것의 의미가 "Mosaic Killer"라고 하는데 모자이크측에 달가와 하지 않아 이름을 바꿨다고 한다.
Mozilla/1.0 (Win3.1)
그러나 UA는 그대로 Mozilla이다. 이유는 내 생각에 UA는 한번 결정되면 웹서버가 이에 의존해서 페이지를 구성해주기때문에, 한번 널리 알려진 UA를 바꾸기는 어려웠으리라 (나중에 이것이 얼마나 영향을 미치는지는 이 글을 계속 읽어보면 알 수있다). 당시 넷스케이프는 frame이라는 기능을 최초로 지원했고 모자이크는 그렇지 못했다고 한다. 따라서, 웹서버는 UA를 기준으로 frame이 있는 페이지와 없는 페이지로 서비스를 했다.
3. 인터넷 익스플로러 (Internet Explorer)
다알아시피 MS는 Windows에 인터넷 익스플로러를 기본제공하면서 넷스케이프가 차지했던 브라우저 시장을 금방 차지해버렸다.끼워팔기의 영향도 있겠지만 인터넷 익스플로러가 넷스케이프만큼의 좋은 기능을 제공했기 때문에 가능했다고 본다. 기사에서재미있는 것은 인터넷 익스플로러도 frame기능을 제공했지만 웹서버들이 UA에 "Mozilla"라는 것을 보고 frame기능이들어간 페이지를 보내줬기 때문에 인터넷 익스플로러도 어쩔 수 없이 UA에 "Mozilla"를 넣기 시작했다고 한다. 참 재미있는웹의 역사이다.
Mozilla/4.0(compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 1.1.4322;.NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)
인터넷 익스플로러의 UA는 현재 내 PC의 IE7이다. 여전히 "Mozilla"라는 문구는 사라지지 못하고 있고 단지 "compatible; MSIE 7.0"이라는 것으로 인터넷 익스플로러라는 것을 겨우 표현하고 있다.
4. 파이어폭스 (FireFox)
넷스케이프가 몇달 전에 업데이트되었다는 소식을 들었지만 당연히 누구도 사용하는 사람은 별로 없다. 나도 왜 업데이트를 하는지 잘 모르겠다. 파이어폭스는난잡한 소스코드로 되어 있는 넷스케이프를 리팩토링하는 것보다 차라리 새로 만들자는 취지에서 모질라단체가 만든 브라우저이다."Gecko"라는 새로운 엔진을 장착하고 지금은 당연한 기능인 탭기능으로 많은 사용자를 확보하고 있다 (전세계 20%를 넘었다고한다). 무엇보다도 파이어폭스는 웹표준을 가장 잘 지켰기 때문에 인터넷 익스플로러가 장악하고 있는 브라우저에 대안으로받아드려지고 있다. 그리고, 수많은 Addon 서비스를 통해서 무한확장가능하다는 점이 파이어폭스 사용자들을 다른 브라우저가 뺏을수 없을 것이다.
Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
파이어폭스의 UA는 현재 내 PC의 FF이다. "Mozilla"라 들어가는 건 당연하고 Gecko 렌더링엔진을 사용하는 것을 명시하고 있다. 여기서 재미있는 것은 IE7은 Mozilla/4.0인데 파이어폭스는 Mozilla/5.0이다. 왜 그런지는 모르겠지만 IE8이 나오면 5.0 혹은 6.0으로 바뀌지 않을까? ㅎㅎ
5. Konqueror
요즘 Linux를 거의 사용하지 않아 아니 사용할 시간이 없어서 잘 모르겠지만 이 브라우저도 매우 많이 쓰는 브라우저이다. 예전에KDE와 GNOME이 UI 패키지의 양대산맥이었는데 요즘은 어떤지 모르겠다. 아무튼 KDE 패키지에 이 브라우저가 디폴트로들어가 있다고 한다. Konqueror는 KHTML이라는 렌더링엔진을 가지고 있고 K는 KDE의 약자라고 한다. 이 KHTML은 애플의 사파리 브라우에사도
Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)
Konqueror 브라우저의 UA를 보면 "like Gecko"가 눈에 띤다. 이것도 Gecko라는 문구를 보고 웹서버가 페이지를 내려주기 때문에 어쩔 수 없이 붙였다고 볼 수 있다. 뭐든지 스타트업이 가장 중요한 것 같다.
6. 오페라 (Opera) 오페라(Opera)는렌더링 속도가 아주 빠르기로 유명하다. 특히, 모바일 웹시장을 일찍 파악해서 "오페라 모바일", "오페라 미니" 등 다양한모바일 디바이스에서 최적의 성능을 제공한다. 특히 동일한 Core를 가지고 다양한 종류의 브라우저를 내놓고 있기 때문에 더욱안정성을 발휘한다. (오페라 미니는 이전에 포스트한 적이 있으므로 참고하세요). 또한, WAP 기능도 디폴트로 지원하고 있어서 WML, WMLScript를 테스트할 때 많은 도움이 된다.
Opera/9.52 (Windows NT 5.1; U; ko)
오페라 브라우저 (PC기반) UA를 보면 "Mozilla"도 없고 자체 렌더링 엔진도 명시하지 않고 있다. 독자적으로 만들어진 브라우저이기 때문이기도 하지만 인터넷 익스플로러와는 다른 브라우저에 대한 자신감이 아닌지 생각이 든다.
7. 사파리 (Safari)
아이폰때문에 더욱 유명해진 애플이 만든 브라우저이다. Mac OS에는 기본적으로 탑재되어 있다. 사파리브라우저는 오픈 프로젝트인데 Konqueror와 마찬가지로 KHTML 렌더링 엔진을 사용하고 많은 추가 기능이 탑재되어 있다.이것을 웹킷(Webkit)이라고 하지만 KHTML 렌더링 엔진때문에 UA에도 당연히 KHTML이 명시된다.
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5
사파리 브라우저 UA를 보면 갈수록 복잡해지는 것을 알 수 있다. 웹서버에게 양질(?)의 페이지를 얻기 위해서 브라우저가 얼마나 노력(?)하는지 알 수 있다.
8. 크롬 (Chrome)
며칠 전에 구글(Google)에서 크롬(Chrome)이라는 브라우저를 내놓았다. 이전에도 구글이 브라우저를 만들고 있다는 소문이 있었지만 소문이 좀 사그라드는 시점에 나온 것이라 조금 놀라웠다. 모질라(Mozilla)사람들이 말하는 크롬은 다소 놀라울 것이 없다는 반응이지만 안드로이드 + 구글기어 + 크롬이 합쳐지면 엄청난 위력을 발휘할 것이 틀림없다. 깔아서 써보면 베타도 한참 베타라 다운되는 일이 자주 발생한다. 물론, 크롬이 자랑하는 멀티 프로세스 개념이 도입되어 그 탭만 죽는다.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13
크롬 브라우저의 UA를 보면 지금까지의 브라우저의 역사까지 알 수 있겠다. 거의 모든 이름들이 나열되어 있다.
9. 그밖의 모바일 브라우저들
오픈웨이브 (Openwave)모바일 브라우저는 예전에 Phone.com이라는 도메인으로 모바일 브라우저의 표준을 주도했던 유명한브라우저이다. 하지만, 풀 브라우징에 촛점을 맞추지 않고 플랫폼에 신경쓰다가 지금은 모바일 웹을 리드하지 못하고 있다. 지금은리눅스 플랫폼으로 유명한 퍼플랩(PurpleLab)에 인수되었다.
UCC (User Created Content) UCA (User Created Application) 예전에 "Web 2.0 and RIA"라는 발표 자료를 만들 때, UCA라는 약어를 만들어 봤었습니다.
UCP는 User Created Phone? 약간 오바스럽긴 하지만, UCP라는 약어도 머지 않아 생길 듯...
예전 부터 Windows나 Symbian 등의 스마트 폰에서는 그것을 사용하는 사용자가 직접 어플리케이션들을 만들어서 사용하고 있습니다.
아래의 2가지 또 다른 예를 보시죠.
1. iPhone Dev Camp
이 모임은 아이폰에서 웹을 좀더 잘 이용하고 경험할 수 있도록 다양한 정보들을 공유합니다. 위의 로고를 클릭해보면 아시겠지만 다양한 사람들이 모두 아이폰을 들고 기념사진을 찍고 있습니다.
여기에 모인 사람들은 완전히 자발적으로 모인 사람들이고 주로 웹 개발자(서버-사이드겠죠?)들이 주최가 되어서 모인 것으로 보이고, 아이폰을 위한 웹 디자인이나 웹 표준에 대해서 활발하게 논의를 하고 있습니다.
즉, 아이폰이 모바일 웹 2.0의 플랫폼이 될 것이기 때문에 아이폰을 기준으로 웹 페이지 혹은 웹 어플리케이션을 만든다는 것입니다.
아시겠지만 아이폰에는 WebKit 기반의 사파리 브라우저가 탑재되어 있습니다. 아이폰을 써보지는 못했지만 웹 표준을 지키고있으며, Ajax와 같은 최신 기술들도 가능합니다. 이러한 웹 표준들을 다른 모바일 브라우저에 탑재되고 있지만 웹 개발자들이해당 모바일 브라우저 혹은 해당 모바일 폰에 맞게 작업하는 일은 거의 드물었습니다 (IE, FF에 맞추기도 버거우니까요).
이 모임에서는 아이폰이 키보드가 없이 터치 UI이기 때문에 페이지 내의 버튼이나 링크를 더 크게 만들어야 된다는 등의 주의 사항까지 논의하고 있으며, 페이지 태그 속성까지도 언급하고 있습니다.
이러한 모임은 아이폰이 출시되는 곳에서는 계속 활성화될 것입니다.
여기에서 우리나라의 모바일 폰 회사와 차이점을 알 수 있습니다. 아이폰은 출시 되자마자 모바일 웹의 표준으로 전세계에 있는 웹 개발자들의 기준이 되고 있습니다. 즉, 모바일 웹 개발자들은 이 아이폰을 플랫폼 삼아서 서비스 개발을 할 것입니다. 결국 또 다른 웹 플랫폼이 되는 것입니다.
2. Open Linux Phone
해당 기사를 읽어보시면 폰자체만 파는 것이아니라 마치 개발자용 시료(?)처럼 개발을 위한 키트도 제공됩니다. 모토로라에서 리눅스 폰이 나왔다고 들었지만 이처럼 완전한 오픈소스로 출시된 것은 아닐 것입니다. PC에서 리눅스 매니아들에게는 이제 모바일 폰의 어플리케이션들을 개발할 때가 온 것 같네요.
저는 위의 2가지 사례를 보고 모바일 폰 제조회사가 나가야할 길은 개방과 표준이라고 생각합니다. 폐쇄적인 모바일 폰 소프트웨어는결국 회사 내의 개발자들만의 것입니다. 개방과 표준의 시대에는 디자인, 코딩, 디버깅 모두 개방해야 합니다.