기본 콘텐츠로 건너뛰기

7월, 2011의 게시물 표시

2011년 2Q 휴대폰 시장 점유율 - IDC 자료

IT 기업들의 올해 절반의 성과가 거의 다 발표되었습니다. 유난히도 미국계 IT 기업들의 강세가 돋보였고 그에 반해 유럽이나 캐나다와 같은 기타 국가들의 강자들이 무너져가는 모습을 보이고 있습니다.


IDC가 발표한 2011년 Q2 휴대폰 판매량을 보면 노키아의 1위 자리가 위태롭습니다. 전년 대비 20.3%가 감소하여 전체 Market Share는 이제 24.2% 밖에 안되는군요. 그에 비해 삼성은 꾸준히 시장을 넓혀 19.2%의 시장 점유율로 이제 노키아와 5% 정도의 차이만 보이고 있습니다. 몇 해전만 해도 전혀 일어나지 않을 것 같던 일이 벌어지고 있습니다.

반대로 Apple은 무서운 기세로 성장하고 있습니다. 전년 대비 141.8%라는 경이적인 성장률을 보이며 3위 LG 전자와 겨우 1.2% 정도의 시장 점유율 차이를 보이고 있네요. LG 이대로는 3위 자리가 위태로와 보입니다. Apple은 영업이익률에서도 타 회사 대비 2배 이상의 경이로운 수치를 보이고 있습니다. (영업 이익률로만 보면 HTC가 삼성전자보다 좋군요...)

(출처: 매일경제 뉴스 - http://news.mk.co.kr)
삼성전자의 경우 Android에 집중하여 스마트폰에서 어느정도 입지를 다진 모습을 보이고 있어 Apple과 휴대폰 사업에서 승부를 겨뤄볼만한 위치를 차지한 것으로 보입니다. 단, Oracle, Microsoft, Apple 등의 회사들이 Android를 견제하기 위한 특허 공세에 Google과 관련 업체들이 과연 얼마나 피해를 입을 것인지가 앞으로의 향방에 큰 영향을 미칠 것 같습니다. 참고: Oracle이 제기한 Google Android에 대한 소송 Nokia는 사운을 걸고 새로이 선택한 플랫폼인 Microsoft Windows Phone의 신제품이 시장에 나오면 정말로 몰락하는 운명인지 부활할 수 있을지 가늠해볼 수 있겠습니다. 비록 현재 market share로는 최하위에 머무르고 있는 스마트폰 운영체제이기는 합니다만 개인적으로는 Microsoft의 제품화하는…

Java: Finally Java SE 7

드디어. Java SE 7이 우리 곁으로 왔습니다.

(from www.oracle.com)
다운로드:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

아쉽게도 Mac OS X 버전은 보이지 않지만 Windows, Linux, Solaris 운영체제용으로 Java SE 7이 정식 릴리즈 되었습니다. 물론 OpenJDK의 Mac OS X Port 프로젝트가 가동 중이라 빠른 시일내에 Mac OS에서 JDK7을 사용할 수 있으리라 기대해봅니다.

이번 릴리즈를 보면 역시 비지니스에 밝은 Oracle 답게 기업 환경을 위한 Java SE 7 Advanced와 Java SE 7 Suite라는 별도의 패키지를 제공하고 있습니다.

무료로 제공되는 Java SE 7에 더하여 기존 Oracle의 Java VM이였던 JRockit의 Mission Control과 같은 관리를 용이하게 하는 기능들을 더 제공하고 아마도 JRockit이 제공했었던 Soft Real Time GC 기능을 제공하는 것 같습니다. 또한, 기술 지원도 제공한다고 되어 있네요.

기존 제 블로그에서도 Java SE 7에 새로이 추가될 기능들에 대해서 정리해보았지만 이번 릴리즈 노트에 나와있는 주요 변경 내용들을 간단히 추려보면 다음과 같습니다.

Swing에 새로운 look and feel로 Nimbus가 추가되었습니다.역시 Swing에 JLayer 클래스가 추가되어 컴퍼넌트를 직접 수정하지 않아도 모습을 바꾸거나 이벤트 처리를 변경할 수 있습니다.I/O 처리를 위한 NIO2가 추가되었습니다.ECC (Ecliptic Curve Cryptography) 보안 알고리즘이 추가되었습니다.다중 프로세스 활용을 위한 fork/join 프레임워크가 제공됩니다.JAXP (Java API for XML Processing) 1.4.5 버전을 포함합니다.코딩 편의를 위한 Java 언어의 변경 사항을 제공합니다.상수값으로 이진수를 사용할 수 있습니다.switch…

LTE: 언제쯤 LTE의 이점을 누릴 수 있을까?

요즘 SKT, LG U+가 4G LTE에 대해 서로 최고임을 내세우며 공격적인 마켓팅을 하고 있습니다. 하지만 주변에 실제로 LTE를 사용하는 사람들이 얼마나 있을까요? 저는 운이 좋게도 LTE를 직접 다루는 회사에 근무하고 있어 엄청나게 빠른 속도로 HD 동영상을 스트리밍한다든가 1GB 파일을 뚝닥 다운로드 받는 등의 시연을 직접 해본적도 있습니다만 일반 사용자들에게 LTE는 아직 현실적이지 않은 기술인 것 같습니다.
추신: 이 글의 의견은 전적으로 개인적인 사견입니다. 회사의 입장이나 회사 내 정보는 전혀 담고 있지 않습니다.

iPhone과 같은 Killer 디바이스가 아직 LTE를 사용하고 있지 않죠. 여전히 3G 네트워크를 지원합니다. iPhone 4라는 이름 때문에 iPhone이 이미 4G LTE를 지원하는 것으로 오해하는 사용자도 많다고 하더군요. 아마도 올해 말 정도가 되어야 좀 쓸만한 단말들이 출시가 될 것 같습니다. 그전까지는 LTE 모뎀을 이용하여 iPad나 Laptop에서 인터넷을 사용하는 정도로 활용이 가능할 것 같습니다. 개인적으로는 LTE를 지원하는 Nokia Windows Mobile 휴대폰이나 iPhone이 출시되기 전에는 LTE 휴대폰을 구입할 생각은 없습니다. (Android 폰은 아직 사용성이 좀 떨어지는 것 같아서요...)

LTE는 여러 주파수 대역을 지원하도록 스팩이 정의되어 있습니다. 다양한 국가의 주파수 활용 실정에 맞게 스팩을 조절한 것으로 보입니다만 이 때문에 단말 제조 입장에서 보면 각 국가별로 RF를 변경해주어야 하는 문제가 생길 것 입니다. 미국 최대 이통사인 Verizon은 700Mhz 대역을 LTE로 사용하고 있습니다. AT&T도 700Mhz 대역이고요. 그렇담 최초의 LTE iPhone은 700Mhz 대역을 지원할 가능성이 가장 높겠죠. 그나마 다행이랄까 한국 LTE 사업자인 SKT와 LG U+는 800Mhz 대역으로 LTE 서비스를 제공하고 있어 LTE iPhone이 초기 도입될 수 있는 가…

WWDC 2011: ARC에 관한 세션들 정리

You can see all of session videos and presentation files of WWDC 2011 from here




실행 시간 성능을 떨어트리는 GC (Garbage Collection)은 싫고. 그렇다고 마냥 이대로 두자니 덜 숙련된 iOS 개발자들이 버그를 양산하고... Apple이 WWDC 2011에서 들고나온 해결책은 바로 ARC (Automatic Reference Counting) 입니다.


신기하게도 Runtime이 아닌 Compile시 코드를 분석해서 자동으로 Retain, Release 코드를 생성해주는 구조라고 하는데요 저 같은 평범한 개발자로서는 머리를 굴려봐도 이게 어떻게 가능한지 감이 잘 안오네요. (정확히는 ARC를 위한 런타임도 필요는 합니다. iOS 5, Lion은 기본적으로 ARC를 지원하고요 기존 버전을 위해서는 ARC를 위한 별도의 라이브러리를 사용해야 한다는군요.)
특히나 전역 변수나 클래스의 인스턴스 변수에 대해서는 컴파일 시 메모리 관리를 자동으로 하는 코드를 어떻게 만들어주는지 이해가 안갑니다. WWDC 2011 관련 세션들을 모두 들어보았지만 이 내용은 안나오더군요. 쩝... 잡스형님 말대로 매직(magic)인건가요?


Xcode 4.3 버전부터 기본으로 사용되는 LLVM 3.0 컴파일러에서 ARC를 지원한다고 합니다. ARC를 사용하면 개발자는 iOS 코드 개발 시 가장 골치아픈 문제인 Retain, Release, Autorelease등을 이용한 메모리 관리를 신경 쓸 필요 없이 코드를 작성할 수 있다고 하네요. 또한, 컴파일 시에 메모리 관리를 자동으로 해결하므로 런타임 시 성능도 문제가 없다고 합니다... 수준이 아니라 더 빨라졌다고요!!! Wow.


Session 323 - Introduction Automatic Reference Counting을 보면 ARC를 사용할 때 지켜야 할 규칙 및 실제 ARC가 compile시에 어떤 방식으로 메모리 관리 코드를 자동으로 생성하는지 간단하게 설명하고…

Lang: 각종 언어의 NULL 처리

개발 언어를 이것 저것 다루다 보면 사소한 것이 헷갈려서 인터넷을 뒤져 보는 경우가 생기기도 합니다. (뭐... 제가 그렇게 많은 개발언어를 다루지는 않지만 하루에 2~3 언어만 섞어 써도 헷갈리는 경우가 생기더군요)

요즘 자주 다루고 있는 C, Java, Lua, Python, PHP의 사소한 문법들을 비교하는 글을 써보고자 합니다. 인터넷 검색 대신 제 블로그를 보면 확 기억나게요. 일단 오늘은 NULL에 대해서입니다.

C 언어의 경우는 NULL을 사용하죠. 대략 아래와 같은 형태의 코드를 작성합니다.
char *p = NULL; if (p != NULL) { return p; }
Java는 null을 사용합니다. C와 비슷하죠~
Object a = null; if (a != null) { return a; }
Lua는 nil 입니다. 사전적으로는 nil은 스포츠 경기에서 '빵점'이라는 뜻을 가지는 군요.
a = nil if (not a) then return a end
Python은 None 입니다. 아무 것도 없다는 의미겠죠.
a = None if (not a): return a
PHP는 NULL 이고요 is_null()을 이용하여 변수가 NULL인지 확인할 수 있습니다.
$a= NULL;if(is_null($a)){}

C와 PHP를 빼고는 모두 제각기 다르군요. 흑...

Google App Engine: GQL과 Counter에 대해

Google App Engine의 데이터 저장소를 조회하기 위한 GQL(Google Query Language) 문법을 보면 SQL에서 제공하는 COUNT가 없네요. 오늘 간단한 코딩을 하다 가장 사용자들이 즐겨찾는 항목으로 정렬을 할 필요가 있었는데 이 때 COUNT 같은 것을 찾다보니 비슷한것도 없더군요.

조금 고민했습니다. 간단한 해결책이 있더군요. 그냥 Data Model에 사용자의 참여가 새로 있을 때마다 값을 증가시키는 필드를 하나 추가해주었습니다.

class Example(db.Model):
   '''
   participant_counts = db.IntegerProperty()

대충 위와 같은 코드로 필드를 추가하고 코드에서 직접 계산해서 값을 저장해주는 거죠.

나중에 혹시나 해서 stackoverflow에서 검색해보았는데 역시나 이 방법을 추천하고 있네요. 아래 링크를 참고하세요.

http://stackoverflow.com/questions/421751/whats-the-best-way-to-count-results-in-gql

WWDC 2011: Session 100 What's new in Cocoa Touch

You can see all of session videos and presentation files of WWDC 2011 from here

NOTE - 이 글은 WWDC 2011 Session 100을 나름대로 정리하였습니다.


WWDC에서 100번 track은 application framework에 대한 내용들입니다. 개발자들에게 가장 많이 활용되는 분야인만큼 세션의 갯수도 많습니다. 그 시작을 여는 Session 100은 iOS 5에서 Cocoa Touch에 어떤 새로운 점들이 있는지 쭉 살펴보고 해당 내용에 대해 더 자세히 다룰 세션을 소개합니다.  

일단, 쉬운것 부터 살펴봅니다. 아래 그림과 같이 생긴 UIStepper라는 새로운 컨트롤이 추가된다고합니다.

minimumValue, maximumValue를 지정할 수 있고 stepValue의 값으로 +, -가 눌릴 때 마다 그 만큼 값이 변경한다고 하네요.Alert에서 사용자의 입력값을 받아들이기 위한 창의적(?)인 다양한 방법들이 시도되었다고 하는데요. iOS 5부터는 다음과 같은 여러 style을 제공하여 사용자 입력을 받을 수 있도록 합니다.

typedef enum { 
    UIAlertViewStyleDefault = 0, 
    UIAlertViewStyleSecureTextInput, 
    UIAlertViewStylePlainTextInput, 
    UIAlertViewStyleLoginAndPasswordInput
} UIAlertViewStyle;

HDTV와 같은 외부 스크린에 그릴 때 overscan을 보정하는 방법에 대한 내용도 다루고 있는데요. 제가 좀 이해가 안가서 이 부부은 그냥 skip 합니다. 현재는 관심도 없는 부분이네요.
화면의 밝기를 직접 조정할 수 있도록 2개의 property를 제공합니다. H/W에서 가장 낮게 설정할 수 있는 값이하로 더 줄일 수 있도록 software dimming도 지원하네요.

@property (nonatomic) CGFloat brigh…