본문 바로가기

분류 전체보기

넥서스 원 - NEXUS ONE 진짜 구글폰, NEXUS ONE이 드디어 공식 공개됐다. 안드로이드에 대한 관심이 점점 커져가고 있는 가운데, 이렇게 좋은 성능을 보여주는 폰이 나오니 그 기대감이 더더욱 커지는 것 같다. 아래 그림은 아이폰, 팜프리, 드로이드, 넥서스 원을 비교한 그림이다. 그리고 아래 동영상은 NEXUS ONE 홍보 영상 아래의 동영상은 contact 아래 동영상은 google voice 아래 동영상은 camera and 3d gallery 아래 동영상은 voice input 아래 동영상은 search 아래 동영상은 android market 더보기
CJ 헬로비전, UI바꾸니 서비스 인기 상승 CJ 헬로비전에서 이번에 UI를 개편했는데 그 효과가 바로 드러났다고 한다. 위의 그래프는 개편 전과 후의 헬로 TV 양방향 서비스의 이용추이를 나타낸 그래프이다. 그리고 아래의 그래프는 개편 전, 후의 헬로TV VOD이용 추이를 나타낸 그래프이다. 이러한 결과를 보면 UI가 서비스에서 얼마나 중요한지 알 수 있다. 개발자가 잘 동작하는 서비스만 제공한다고 끝나는 것이 아니다. 유저를 생각해야 한다. 고객의 마음을 읽지 못하면 절대 고객의 마음을 살 수 없다.!!! 더보기
자바 - 직렬화 (Serializable) 자바에서는 객체를 손쉽게 저장하거나 전송할 수 있는데, 이를 가능하게 하는 기술이 바로 직렬화입니다. 원래 객체는 힙 안에 존재하게 되는데 직렬화를 하게 되면 그 모양이 약간 변형되게 됩니다. 이렇게 하게 되면 자바에서 저장 및 전송에 아주 편리하고 유리하다는 장점이 있지만, 동시에 다른 프로그램에서는 이를 분석하기 힘들다는 단점이 있습니다. (물론 직렬화를 통해 어떤식으로 변형이 되는지 그 원리만 잘 알고 있다면 다른 프로그램에서도 얼마든지 읽고 쓰는 것이 가능할 것입니다.) 1.Serializable 직렬화를 하기 위해서는 저장하거나 전송할 객체에 Serializable이라는 인터페이스를 구현해 주어야 합니다. 이 Serializable 인터페이스는 구현할 메소드가 하나도 없기 때문에 그냥 imple.. 더보기
스택과 힙 1. 스택(Stack) 스택은 지역변수(메소드 내에 존재하는 변수, 메소드의 인자)가 존재하는 공간이다. 메소드를 호출하면 호출 스택(call stack)의 맨 위에 stack frame(코드, 지역 변수 값)이 쌓이게 된다. 함수호출이 끝나야만 호출 스택에서 해당 스택 프레임을 pop하게 된다. 2. 힙(Heap) 힙은 객체가 존재하는 공간이고, 당연히 인스턴스 변수(클래스 내에 선언되어 있는 변수)도 이 안에 존재한다. 여기에서 힙은 일반적인 힙과는 약간 다르다. 왜냐하면 garbage collection을 하는 힙이기 때문이다. *만약 메소드 내에서 객체를 생성하면 이는 스택에 들어갈까? 아니면 힙에 들어갈까? 객체가 생성되면 무조건 힙에 생성된다. 그리고 primitive 타입의 변수(int, f.. 더보기
cout에서 소수점 둘째자리 표현하기 cout의 setf함수. 출력의 형식을 정할 수 있다. 인자로는 여러개의 플래그가 |(or)로 같이 들어갈 수 있다. 소수점 2자리까지 표현하기 위해서는 다음과 같이 코딩한다. cout.setf(ios::fixed); cout.precision(2); 더보기
advance()함수 void std::advance(_InIt & _Where, _Diff _Off) iterator를 원하는 위치로 옮길 수 있는 함수이다. 컨테이너의 iterator를 i번째 위치로 옮기고 싶을 때 사용할 수 있다. 첫번째 인자로는 iterator가 들어가고 두번째 인자로는 오프셋이 들어간다. 결과로는 현재 iterator를 오프셋만큼 뒤로 이동시킨다. vector a; vector::iterator it; a.push_back(13); a.push_back(2); a.push_back(3); it = a.begin(); int n; n = 0; advance(it, n); cout 더보기
포인터(Pointer)와 함수 swap함수는 대개 다음과 같이 만든다. void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } 이렇게 하는 이유는 포인터가 아닌 그냥 변수를 넣어줄 경우에 원하는 결과가 나오지 않기 때문이다. 이유인 즉, 함수를 호출할 때에 새로운 스택이 잡히게 되고 함수의 인자도 그 스택 안에 새로 할당된 값이다. 그런데 이때 변수 값을 넘겨주게 되면 함수에 있는 인자에 그 값이 들어가게 되는 것이다. 예를 들어 void swap(int a, int b) { int temp = a; a = b; b = temp; } 라는 함수를 만들고 main에서 i=2, j=3을 할당한 뒤 swap(i, j);를 호출하면 새로운 스택이 만들어 지는데, 이 스택의 a라는 .. 더보기
memset() 함수 void *memset( void *dest, int c, size_t count ); 대략적인 사용법은 아래와 같다. char a[10]이 있고, c의 각 원소를 0으로 초기화 해주려면 memset(a, 0, 10); // 또는 memset(a, 0, sizeof(a)); 여기에 두번째 원소에 어떠한 정수를 넣어주냐에 따라 초기화되는 값이 바뀌는 것이다. 그런데 여기서 주의할 점은 무조건 1바이트씩 초기화한다는 것이다. 이것이 무슨 말이냐면,, char a[10]의 경우에는 아무런 문제도 찾을 수 없다. 하지만 int a[10]의 경우에는 말이 다르다. memset(a, 0, 10); 하게 되면 문제를 못 느낄지도 모른다. 하지만, memset(a, 1, 10);을 하는 순간 경악을 하게 될 지도 모른.. 더보기
워드 2007로 티스토리 블로깅 하기 블로깅을 하다보면 글을 쓸 때에 기본적인 텍스트 에디터가 불편하다는 것을 많이 느끼게 된다. 그래서 오늘은 MS Word를 이용해서 편리하게 포스팅하는 방법을 배워보도록 하겠다. 먼저 티스토리 관리자 화면으로 들어가 보자. 관리자 화면에서 환경설정 – BlogAPI 설정에 들어가면 아래와 같은 화면을 볼 수 있을 것이다. 여기에서 BlogAPI 설정을 사용하도록 버튼을 누르자. 이렇게 해야만 워드 2007을 이용해서 블로깅을 할 수 있으니 이 과정을 꼭 거치도록 하자!! 워드 2007을 실행하여 을 눌러 나오는 메뉴 중 를 누른다. 새문서 창이 뜨면 새 블로그 게시물을 눌러서 새 블로그 문서를 만든다. 이제 버튼을 눌러서 계정을 추가해야 한다. 위의 그림에서 버튼을 누르면 아래와 같이 블로그 계정이라는 .. 더보기
윈도우 모바일 VS 안드로이드 VS 아이폰 윈도우 모바일 (WM) 안드로이드 (Android) 아이폰 (iPhone) 개발 OS Windows Only Windows, MacOSX, Linux MacOSX Only (include Hackintosh) 개발툴 Visual Studio 2005, 2008 Eclipse 3.3, 3.4 Xcode 3.1, Interface Builder 프로그래밍 언어 Visual C++, C#, VB.NET Java Objective-C 프레임워크 or 런타임 MFC, .NET Compact Framework Android Application Framework, Dalvik Cocoa Touch 바이너리 .exe (CLR) .dex (Dalvik executable) .app 패키징 .cab .apk .zip 표.. 더보기