2010년 6월 19일 토요일

프로젝트 진행현황

예전에 올린 아이디어중 출사지정보 프로그램을 만들기로 하였다.

아래 링크 참조.

 

1.저작권 문제해결

위의 글 내용중 가장 큰 문제인 저작권 문제는 출사코리아에서 이미지를 받기로 하였다.

직접 찾아가 운영자분을 만나 프로젝트에 대해 이야기 드리고  이미지를 올릴때 출사코리아에서

가져온 이미지라는 것을 명시하는 조건으로 저작권 문제를 해결하였다.

 

2. 프로그램의 구현

모든 정보를 서버에서 받아오게끔 구현하도록 할 예정이었지만 텍스트들은 용량이 그렇게 크지 않아텍 스트정보는 sqllite를 이용하여 프로그램 자체에 저장토록 하고 해당 이미지는 해당 URL주소를 저장하여 서버에서 받아오게끔 구현하였다. - 모든 정보를 서버에 의존하도록 변경 예정



3.개선사항

 1)  인터페이스

 

버튼을 없애고 오른쪽의 그림과 같이 지도형식으로 메뉴를 바꿀 예정.

버튼에 대한 의존도를 낮추고 최대한 화려하고 실용적인 인터페이스

위 화면 뿐만 아니라 딱딱한 느낌의 버튼을 이미지 버튼으로 바꿔서 버튼이란 느낌이 들지 않도록 수정예정

 

 2) 웹페이지

이 프로그램의 가장 큰 특징인 소셜적인 부분을 해결하기 위해 사용자들이 직접 업로드 가능하도록 웹페이지를 만들어야 하는데 있어 업로더들이 불편함이 없도록 최대한 간결하고 깔끔하게

업로드를 하도록 제작.

  구체적인 계획

    - 사진파일들의 정보를 서버 DB에 저장

    - 사용자들이 쉽게 올릴수 있도록 서버 DB 와 연동되는 JSP로 제작된 웹페이지를 작성

    - 웹페이지에서 업로드시 카테고리 설정가능 하도록 제작

    - 웹페이지에서 사진파일(용량제한-리사이징)을 업로드하고 규칙에 맞게 좌표를 설정

    - 최소한의 서버 DB를 컨트롤 할 수 있는 서버 프로그램 제작

      

 3) 추가기능

최대한 하고자한 역할만 구현하고 있지만 회의를 통해 더 필요한 기능이 있을경우 추가 예정

2010년 4월 3일 토요일

Android - Relative Layout

이번에는 설치된 안드로이드로 Relative Layout 을 만들어 보도록 하겠습니다.

 

먼저 이클립스를 실행시킨 뒤에 파일 - 새로작성 - Android Project 를 눌러서

 

새로운 프로젝트를 생성합니다.

 

 

새로운 안드로이드 프로젝트를 생성하게 되면 아래와 같이 설정이 뜨게 되는데

 

 

여기서 프로젝트 이름은 RelativeLayout 으로 하였고 빌드타겟은 최근 모토로이가 2.1 버전

 

이 나왔으므로 2.1 버전으로 작성해 보겠습니다.

 

프로젝트가 생성되면 이클립스 좌측에 다음과 같이 파일들이 생성 됩니다.

 

 

보통 안드로이드 프로그래밍을 할때 주로 수정하는 파일은 실제 메인 파일인

 

RelativeLayout.java 파일과 main.xml 파일 입니다.

 

먼저 RelativeLayout.java 파일을 살펴보겠습니다.

 

package android.relative;
import android.app.Activity;
import android.os.Bundle;
public class RelativeLayout extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}


위 에서 onCreate 메소드는 프로그램이 실행과 동시에 자동으로 실행 되는 것으로

 

자바에서 생성자와 같은 역할을 한다고 볼 수 있습니다.

 

setContentView(R.layout.main); 에서는 레이아웃 안에 main.xml 을 화면에 보여주게 됩니다.

 

이번에는 main.xml 로 가서 수정해 보도록 하겠습니다.

 

처음 생성된 main.xml에는 Hello Android 를 띄우기 위한 소스가 들어가 있는데 이 코드를

 

지우고 다음 코드를 추가 하여 줍니다.

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView
    android:id="@+id/label"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Type here:"
    />
  <EditText
    android:id="@+id/entry"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/label"
    />
  <Button
    android:id="@+id/ok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/entry"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="10dip"
    android:text="OK"
    />
  <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/ok"
    android:layout_alignTop="@id/ok"
    android:text="Cancel"
    />    
</RelativeLayout>


<?xml version="1.0" encoding="utf-8"?>
 xmlns:android="http://schemas.android.com/apk/res/android"

 

위 두 부분은 xml을 생성시 항상 들어가야 되는 부분입니다.

 

<TextView> 는 자바의 스윙에서 보자면 Label 과 같은 역할을 해주는 것으로

 

문장을 출력하기 위해 사용되며 android:id="@+id/label" 는

 

TextView 의 이름을 label 로 설정하여 접근하겠다는 의미를 가지고 있습니다.

 

<EditText> 는 사용자가 쓸수 있는 부분을 생성하여 주며

 

android:layout_below="@id/label" 이 부분은 이전에 있던

 

 label 의 아래 부분에 위치하도록 설정해주고 있습니다.

 

<Button> 은 누를 수 있는 버튼을 생성해주고 있고

 

android:layout_below="@id/entry"
android:layout_alignParentRight="true"

 

이 두 문장으로 버튼의 위치가 <EditText> 의 아래에 위치하고 또 제일 우측으로 정렬 되도록

 

설정해주는 역할을 하고 있습니다.

 

그리고 마지막 버튼에서  android:layout_toLeftOf="@id/ok" 라는 문장은

 

ok 라는 위에 생성된 버튼의 좌측에 지금 생성하는 버튼을 위치시키라는 의미를 가집니다.

 

위와같이 코드의 수정이 끝나고 나면 한번 실행을 시켜보겠습니다.

 

 

CTRL + F11 버튼을 눌러서 실행시키게 되면 다음과 같이 어떻게 실행을 시킬 것인지 뜨게

 

되는데 여기서 Android Application 을 선택하게 되면 Android 에뮬레이터가 실행되고

 

작성한 Relative Layout 이 에뮬레이터에 표시되게 됩니다.

 

 

위 그림은 실행결과입니다.

 

Relative Layout 은 상대적 위치를 설정해주는 Layout으로 하나의 위치를 기준으로

 

아래(below)와 우측정렬(alignParentRight), 특정 위치 왼쪽(toLeftOf) 등으로 설정해주면서

 

정렬할 수 있게끔 해주고 있습니다.

봄이 왔나봅니다.

 

꽃이 피고 벌이 있는 것을 보니 봄이 왔나봅니다.

 

그런데도 제 마음은 여전히 겨울.....

Android - 설치

이번에는 안드로이드를 설치해보도록 하겠습니다.

 

먼저 안드로이드를 사용하기 위해서는 다음과 같이 3가지를 필요로 합니다.

 

1. Java SE - 다운로드

2. Eclipse 및 PlugIn - 다운로드

3. Android SDK - 다운로드

 

위 3가지가 설치되셨다면 간단한 환경설정으로 안드로이드 프로그래밍을 시작할 수 있게 됩니다.

 

지금부터 이클립스 환경설정을 해보겠습니다.

 

제일먼저 이클립스 플러그인 인 ADT(Android Developer Toolkit)을 설치하겠습니다.

 

먼저 이클립스를 실행시킨 다음 이클립스 메뉴에서

 

도움말 - Install New SoftWare 를 눌러줍니다.

 

 

그러면 위와 같은 창이 뜨게 될텐데요 여기서 우측 윗부분에 있는 Add 버튼을 누릅니다.

 

 

누르고 나면 새로운 사이트를 추가 할 수 있도록 되는데 여기서 Name 은 아무이름이나 하셔도

 

상관없습니다만 알아보기 쉽게 AndroidSDK 로 하시고 Location 에서

 

 http://dl-ssl.google.com/android/eclipse

 

위의 주소를 붙여넣기 하시고 OK 를 누르시면 Padding 이라는 메시지가 잠시 출력되다가

 

아래와 같은 창이 뜨게 됩니다.

 

 

여기에서 Developer Tools 에 체크하시면 아래 모두 체크가 되고 나머지는 모두 Next 를

 

눌러서 설치합니다.

 

 

위의 과정이 모두 끝나면 이클립스를 재실행 하겠다는 메시지가 뜨고 확인을 누르면 이클립스

 

가 재실행되고 플러그인의 설치가 완료됩니다.

 

다음으로 할 일은 이클립스에 Android SDK를 연결하는 일입니다.

 

먼저 이클립스에서 창 - 환경설정 을 선택합니다.(windos - Preferences)

 

그러면 아래와 같은 창이 뜨게 되는데 좌측 메뉴에서 Android 를 선택합니다.

 

 

여기에서 Android SDK의 압축파일을 해제해둔 곳을 설정해야 하는데 Browse... 를 눌러서

 

Android SDK의 압축을 풀어논 곳을 선택하게 되면 아래와 같은 화면이 나타나게 됩니다.

 

 

아마 처음엔 위와 같이 여러개가 안뜰 것인데 이때에는 이클립스에서

 

Window - Android SDK and AVD Manager 를 눌러서 들어가게되면

 

아래와 같은 창이 뜨고 왼쪽 메뉴에서 Available Packages 를 선택하시면 여러개가 뜨는데

 

체크를 하시고 Install Selected 버튼을 눌러서 설치를 합니다.

 

 

아래 그림은 설치과정인데 시간이 상당히 오래 걸립니다.

 

 

모두 완료가 되면 안드로이드 에뮬레이터를 생성해야 하는데

 

다시 window -  Available Packages 로 가서 Virtual Devices 를 선택하고 New 를 누릅니다.

 

그럼 아래와 같은 창이 뜨게 됩니다.

 

 

여기에서 이름은 아무것이나 하셔도 상관없는데 Targer 은 사용할 Android SDK의 버전을

 

나타내기때문에 사용하실 버전에 맞게 설정하시고 Create AVD 를 누르시면

 

생성이 끝나고 안드로이드 개발 준비가 완료되게 됩니다.

2010년 4월 2일 금요일

심비안(Java)으로 HelloWorld 출력하기

이전에 설치했던 심비안으로 HelloWorld를 출력해 보도록 하겠습니다.

 

먼저 이클립스를 실행하셔서 파일 - 새로작성 - MIDlet Project 를 선택합니다.

 

만약 저 메뉴가 없으시다면 아래 그림과 같이 새로작성 - 기타로 가셔서 선택하셔도 됩니다.

 

 

여기서 다음을 누르게 되면 이제 늘 보아왔던 프로젝트 생성창이 뜨게 됩니다.

 

 

프로젝트의 이름은 HelloWorld 로하고 완료를 누르면 프로젝트가

생성됩니다.

 

그리고 다시 파일 - 새로작성 으로 가서 Java Me MIlet 을 선택하여

생성합니다.

 

 

위 그림에서 다음을 누르게 되면 클래스 생성창이 뜨게 되는데 아래 그림과 같이 클래스의 이름은 HelloWorldMIDlet 으로 설정하고 완료를 누릅니다.

 

 

생성된 클래스 내에서 클래스 내부의 모든 글을 지우고

 

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;

public class HelloWorldMIDlet
    extends MIDlet
{

    public HelloWorldMIDlet()
    {
    }

    // Sets the MIDlet's current Display to a HelloScreen object.
    public void startApp()
    {
        Displayable current = Display.getDisplay(this).getCurrent();
        if(current == null)
        {
            HelloScreen helloScreen = new HelloScreen(this, "Hello, world!");
            Display.getDisplay(this).setCurrent(helloScreen);
        }
    }

    public void pauseApp()
    {
    }

    public void destroyApp(boolean unconditional)
    {
    }

}


위의 소스를 붙여 넣습니다.

 

이제다시 평범한 새로운 클래스(이름 : HelloScreen)를 생성합니다.

 

 

이 클래스 또한 마찬가지로 원래 있던 내용을 지우고

 

아래의 소스코드를 넣습니다.

 

import javax.microedition.lcdui.*;

class HelloScreen
    extends Form
    implements CommandListener
{

    private final HelloWorldMIDlet midlet;
    private final Command exitCommand; // Exit command for closing the MIDlet in the device UI.

    public HelloScreen(HelloWorldMIDlet midlet, String string)
    {
        super("");
        StringItem helloText = new StringItem("", string);
        super.append(helloText);
        this.midlet = midlet;
        exitCommand = new Command("Exit", Command.EXIT, 1);
        addCommand(exitCommand);
        setCommandListener(this);
    }

    public void commandAction(Command command, Displayable displayable)
    {
        if (command == exitCommand)
        {
            midlet.notifyDestroyed();
        }
    }

}


2개의 파일을 생성하고 위의 소스코드를 넣으셨다면 2개의 파일을

저장합니다.

 

그리고 CTRL + F11 을 눌러서 실행을 시키게 되면 아래와 같이

 

가상 에뮬레이터가 실행되고 HelloWorld가 출력되게 됩니다.

 

 

심비안 설치(Java)

자바에서 실행되는 심비안을 설치를 해보도록 하겠습니다.

 

심비안을 자바로 실행하기 위해서는 최소 2가지가 필요합니다.

 

필수

1. Java ME(Java Micro Edition) - 다운로드 

2. Eclipse Pulsal - 다운로드

 

선택

3. Symbian SDK - 다운로드

4. Nokia PC Suite - 다운로드

 

(1번과 2번만 설치하셔도 에뮬레이터로 사용가능 하고 선택사항인 3번과 4번의 경우에는 Nokia 기기가 있으신 분들에 한해서 설치하시면 직접 넣어서 실행해 보실수 있습니다.)

 

Symbian SDK는 Java로 선택해서 받으시면 되고 다운받기 위해서는

회원가입을 해야 하는데 간단한 입력을 하고 메일로 인증하면

가입이 완료됩니다.

 

3가지를 받으신 후에 설치를 다 하시고 Eclipse Pulsal 의 경우에는

쓰고 있던 Eclipse에 덮어 설치하셔도 상관없습니다.

 

이제 설치가 모두 끝나셨다면 Eclipse의 세팅을 하도록 하겠습니다.

 

먼저 이클립스를 실행하고 메뉴에서 창 - 환경설정 을 선택합니다.

 

 

환경 설정으로 들어가서 좌측 메뉴에서 Java ME 를 선택하시고

세부메뉴 중에서 Device Management 를 선택하시면 아래와 같은

창이 뜨게 됩니다.

 

 

저같은 경우는 이미 설치를 해두었기 때문에 목록이 뜨고 있는데 처음 설치할 경우에는 목록이 뜨지 않습니다. 여기서 우측 상단에 있는 Import 를 눌러서 SDK가 설치되어 있는 경로를 설정합니다.

 

(SDK 경로는 Symbian SDK 경로를 사용하게 되면 현재 Nokia

기기가 없으면 실행을 할 수 없으므로 Symbian SDK를 설치하신분은 경로를 설정해서 등록해 주시고 필수만 설치하고 해보실

분들은 Java ME 가 설치된 경로로 선택하여 주시면 됩니다)

 

 

경로를 설정하고 완료를 누르게 되면 이전의 목록이 뜨게 되고 확인을 누르시면 기본적인 이클립스 설정이 끝나고 심비안 어플리케이션을

개발하기 위한 준비가 되었습니다.

 

2010년 4월 1일 목요일

Android 개발 아이디어 회의

개발할 어플리케이션 : 가계부

1. 유사 프로그램 조사

iPhone iXpenselt

 

 

 

 

  전체적으로 깔끔한 디자인을 가지고 있고 또한 편리한 인터페이스를 가지고 있으나 어플가격이 비싸고 새로운 기록을 할 때 세부 사항이 메뉴를 열어야 하기 때문에 시간이 꽤 걸림(이부분을 보안해서 최대한 빠른 시간내에 가능하도록 간편화 하고 무료로 어플을 배포)

 

iPhone Budget

 

 

 

 

  한글이 되긴하지만 세부 메뉴에서 영어로 사용되고 있고 메뉴들이 다양하고 막강한 기능들을 가지고 있지만 빠르게 사용하기에는 효율성이 좋지 않고 전체적으로 조금 불편한 인터페이스를 가지고 있음(완전한 한글을 사용하도록 하고 크고 간단한 버튼들을 추가해서 쉽게 접근 가능하도록 할 것이며 잘 쓰이지 않는 기능들은 과감히

삭제)

 

 

Window Mobile Love Money

 

 

사용이 간편화라는 키워드를 가지고 만들려는 우리의 어플과는 다르게 복잡하고 여러 가지 기능을 제공하고 있는 어플이지만 구역별로 색상이 들어가 있어서 보기 편한 장점을 가지고 있다.(우리가 개발할 어플에서는 색상을 잘 활용)

 

Android 어플은 하나의 어플이 존재하는데 네이버 가계부와 연결되어 사용되도록

되어있고 각종 버그가 많아서 사용하기 아주 불편함.(개발할 어플은 웹과의 연동은 추후 따로 생성할 계획이고 버그가 없도록 최대한 완벽하게 제작)

 

 

2. 아이디어 회의 및 토론 결과

 

메뉴 : 수입, 지출, 조회(일일, 주간, 월간, 년간), 통계

 

요점 : 최대한 인터페이스를 간편화 하고 디자인을 깔끔하게!

많은 기능과 메뉴 보다는 간단하게 몇 개의 기능과 메뉴로 사용하기 편리하고 쉽게 기록 가능하도록 하고 빠르게 입력 할 수 있도록!

 

DataBase는 SQLite 사용해서 작성시 날짜를 표기해서 저장하고 메모기능도 가능하도록!

 

전체적인 금액 입력창은 은행 ATM 기의 터치스크린과 비슷하게!

 

메인메뉴 : 수입, 지출, 조회, 통계의 세부메뉴를 가지고 아래나 위로 현재 잔액을 표시

 

수입 : 들어온 돈 입력, 수정(최근것 우선하고 이전 것도 가능하나 돈이 -가 될 경우 경고 표시), 현재 잔액 표시(입력과 동시 적용되도록)

 

지출 : 버튼형식으로 쉽게 누를수 있도록 하며 교통수단, 식비 등 자주 쓰는 메뉴는

         버튼으로 등록하고 금액에 맞춰서 + - 버튼을 만들어 100원 단위 내지 천원, 만원

         단위를 쉽게 조절 가능하도록!(휠 기능도 넣을 것!)

 

그 외 : 조금 오차가 발생 할 경우 금액을 추가하거나 뺄 때 사용하며 간단한 메모도 가능!

 

조회 : 수입, 지출, 잔액 조회가 되며 수입과 지출에 대해서는 일, 주, 월, 년간 조회도

         가능하도록!

 

통계 : 간단하게 만든 버튼의 메뉴(교통비, 식비, 그 외) 등 사용 용도별로 주간, 월간

         등으로 통계(휴대폰 요금 고지서 느낌?)

 

Make by Lelizir, reportgg, Joji

2010년 3월 19일 금요일

Google Android

구글 안드로이드

 

안드로이드(Android)는 휴대전화기를 비롯, 모바일 디바이스를 위한 운영체제와

미들웨어 그리고 핵심 어플리케이션을 포함하고 있는 소프트웨어 스택

 

안드로이드는 개발자들이 자바(Java) 언어로 어플리케이션을 작성 할 수 있게 하였으며,

컴파일된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공

안드로이드 SDK를 통해 어플리케이션을 개발하기 위해 필요한 각종 도구들과 API를 제공

 

안드로이드는 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 컴포넌트에서 사용되는

C/C++ 라이브러리들을 포함

안드로이드는 기존의 자바 가상 머신 과는 다른 가상 머신인 달빅 가상 머신을 통해

자바로 작성된 어플리케이션을 별도의 프로세스에서 실행하는 구조

 

2005년 안드로이드 사를 구글에서 인수한 후 안드로이드의 모든 소스 코드를 오픈 소스 라이센스인 아파치 라이센스로 배포

 

자바로 작성된 소프트웨어는 달빅 가상 머신에서 실행 가능한 코드로 컴파일되며 달빅 가상 머신은

표준 자바 가상 머신은 아니지만 모바일 기기를 위해 설계된 가상 머신

 

개발 환경

기기 에뮬레이터, 디버깅 도구, 메모리와 성능 프로파일링을 포함하는 Eclipse IDE 플러그인

 

마켓

iPhone OS의 App Store와 유사한 안드로이드 마켓은 PC 사용 없이 무선으로 대상 하드웨어로

다운로드와 설치가 가능한 응용프로그램 목록을 제공

 

멀티터치

안드로이드는 멀티 터치를 네이티브로 지원하지만 (애플의 터치스크린 기술 특허 침해를 피하기 위해)

커널 수준에서 비활성화

 

출처 : http://en.wikipedia.org/wiki/Google_Android

         http://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C

작성 : LeliZir, reportgg, Joji

iPhone OS

아이폰 OS

아이폰 OS(iPhone OS)는 애플의 스마트폰인 아이폰과 디지털 미디어 재생기기인 아이팟 터치에

내장되어 있는 운영체제

Mac OS X 10.5(맥 오에스 텐 10.5)를 기반(Leopard)

아이폰과 아이팟 터치에 내장된 중앙 처리 장치는 ARM 기반 프로세서

아이폰 OS는 Mac OS X의 요소인 코코아, 코어 애니메이션 등의 애플리케이션 프레임워크를 포함하고

멀티터치를 비롯하여 종래의 휴대전화 및 스마트폰에는 없었던 특징적인 유저 인터페이스를 구현

개발 도구의 언어로는 오브젝티브-C가 제공

 

유저 인터페이스

아이폰 OS의 사용자 인터페이스는멀티 터치 제스처에 의한 직접 조작 개념에 기반

인터페이스 콘트롤들은 슬라이더, 스위치, 버튼 등의 요소로 구성

 

비인가 응용 소프트웨어

아이폰과 아이팟 터치에는 공식적으로 인허가 받아 앱 스토어에 올라온 응용 소프트웨어만이

설치가능하지만 버전 1.0부터 비인가 서드 파티 네이티브 애플리케이션을 실행시킬 수 있음

 

개발자들은 SDK를 활용해 아이폰이나 아이팟 터치 응용 소프트웨어를 개발할 수 있음

개발된 소프트웨어는 "아이폰 시뮬레이터" 내에서 테스트할 수 있고 기기에 실제로

응용 소프트웨어를 올리기 위해서는 아이폰 개발자 프로그램 등록비를 내야 함

 

App Store

개발자는 개발한 응용 소프트웨어를 앱 스토어를 통해 유통시킬 수 있음

응용 소프트웨어의 가격은 최소 가격만 넘기면 그 초과 범위 내에서 자유롭게 정할 수 있고 개발자는

응용 소프트웨어 판매 수익의 70%를 가져감. 다른 방식으로는, 개발자는 개발한 응용 소프트웨어를

무료로 배포할 수 있음. 이 때, 개발자는 응용 소프트웨어의 배포나 배급에 대한 비용은 내지 않으며,

개발자는 멤버쉽(membership) 비용을 지불해야 함.

 

개발자는 반드시 수익의 70%는 개발자가 수익의 30%는 애플이 가져가는 것에 동의해야 함

만약 구매자가 환불을 한다면, 가격의 70%는 개발자로부터, 가격의 30%는 애플로부터 구매자에게 지불

그리고, 애플은 동시에 손해에 대한 30%의 변상금을 개발자에게 받아가게 됨

 

ETC...

SDK애플 측은 자바 기반 응용 소프트웨어를 아이폰 상에서 작동시키는 것에 대해서

발표도 하지 않았고 아무런 계획도 가지고 있지 않지만 썬 마이크로시스템즈은

아이폰 OS용 자바 가상 머신 (JVM) 을 릴리즈할 계획이라고 발표

이것이 릴리즈되면 자바 ME 응용 소프트웨어가 아이폰이나 아이팟 터치에서 구동될 것으로 예상됨

 

SDK를 사용하기 위해서는 맥 오에스 텐 v10.5가 필요

마이크로소프트 윈도나 맥 오에스 텐의 예전 버전에서는 SDK가 작동하지 않음

 

출처 : http://en.wikipedia.org/wiki/IPhone_OS

         http://ko.wikipedia.org/wiki/%EC%95%84%EC%9D%B4%ED%8F%B0_OS

작성 : LeliZir, reportgg, Joji

Window Mobile

윈도우 모바일

 

윈도 모바일(Windows Mobile, WM)은 PDA 및 스마트폰에 사용하는 운영 체제

이 운영체제는 마이크로소프트사에서 내놓은 모바일 운영체제

임베디드용 운영 체제인 윈도 CE 기반

모바일 환경에 적합한 새로운 터치식 사용자 인터페이스를 추가하여 개발되고 있음

윈도우 CE의 기본적인 기능에 휴대전화 기능이 추가되어 있어서

현재 삼성전자, LG전자, HTC, 모토로라, 노키아 등의 기업체에서 생산하는

다수의 PDA폰에서 윈도 모바일을 탑재하고 있음

 

특 징

 

화면에 현재 날짜, 소유자 정보를 보여줌

작업 표시줄에 현재 시간과 볼륨을 보여줌

Microsoft Office 응용 프로그램의 모바일 버전의 제품군을 제공

아웃룩 모바일은 윈도우 모바일 함께 제공

인터넷 익스플로러 모바일을 기본 인터넷 브라우저로 사용

Windows Media Player는 Windows Mobile용으로 제공

가상 사설망을 위해 PPTN을 사용(1:1 방식으로 데이터 전송)

인터넷 연결이 휴대 전화에 USB 및 블루투스를 통해 인터넷 연결을 공유할 수 있도록

컴퓨터 연결 공유 (ICS).

일관된 파일 시스템은 Windows 9x/Windows NT와 같은 파일 형식 지원

멀티태스킹 지원

 

출처 : http://en.wikipedia.org/wiki/Windows_Mobile

         http://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84_%EB%AA%A8%EB%B0%94%EC%9D%BC

작성 : LeliZir, reportgg, Joji

Blackberry OS

블랙베리 OS

 

블랙베리 OS는 손바닥안 크기의 블랙베리 안에서 동작에 의해 연구되어 만들어진

등록상표가 붙은 소프트웨어 플랫폼

 

블랙베리는 운영 체제, 멀티 태스킹을 제공하고 장치의 전문적인 입력 장치를 많이 사용

(트랙볼, 트랙패드, 터치 스크린)

 

개발자는 API를 사용하여 소프트웨어를 개발 할 수 있지만 서명되어 있어야 하며

이 서명은 질 또는 안전을 보장하지는 않음

 

출처 :  http://en.wikipedia.org/wiki/BlackBerry_OS

작성 : LeliZir, reportgg, Joji

Symbian OS

Symbian OS

 

Symbian OS 는 OS의 한 종류로 libraries, user interface, frameworks와

일반 tools의 실행과 연계되어 모바일장치, 스마트폰을 위해 디자인 된 OS

 

원래는 Symbian Ltd. 가 개발

 

x86 port가 존재함에도 불구하고 ARM processor에서 독점적으로 운영

 

2008년, 이전의 Symbian Software Limited 는 nokia로부터 공인을 받았고(기득권을 받았고),

새로운 독립적 비영리 재단인 Symbian Foundation이 설립

 

Symbian OS 와 이것과 연계된 user interface, S60, UIQ, MOAP(S)는 그들의 소유권자들에 의해서 Symbian platform 의 설립/창조의 목적으로 로얄티가 없고

source software를 공개한 채로 재단으로 배포

 

이 platform은 2009년 4월 Symbian Foundation 의 공식적인 출시에 이어

Symbian OS의 후계자로 디자인됨

 

Symbian platform 은 2010년 open source code 가 가능하도록 공식적으로 만들어짐

 

 

출처 : http://en.wikipedia.org/wiki/Symbian_OS

작성 : LeliZir, reportgg, Joji

2010년 2월 18일 목요일

로스트 심벌 - 댄 브라운

설날에 서울을 올라갔다가 내려오면서(제가 사는곳은 부산) 기차에서 따분할 것 같아서

 

역 내에 있는 서점에서 급 질렀습니다.

 

 

일단 1편만 사서 봤었는데 보기도 편하고 아주 재미 있네요

 

이전의 천사와 악마가 일루미나티 조직에 관한 내용이라면 이번에는

 

프리메이슨 의 조직에 관한 내용입니다.

 

자세한 내용은 스포일러가 있을수 있으니 생략 할게요

 

이전에 읽었던 푸코의 진자(움베르토 에코)는 정말 내용도 어렵고

 

본문의 내용보다 주석의 내용이 더 길어서 1편은 참 쪽수를 넘기기 힘들었는데

 

로스트 심벌은 한번 읽으니 몰두해서 계속 읽게 되네요

 

현재 2편을 읽고 있는 중인데 책과 편안한 소설을 좋아하시는 분들이라면

 

한번 읽어보시면 좋겠습니다.

2010년 2월 11일 목요일

한국 중국에 3:0 대패.....

어제 인턴 마치고 국밥을 먹으면서 DMB로 경기를 봤습니다.

 

정말 보고있으면서도 질만한 경기라고 느껴질 정도로 답답하더군요.

 

항상 패스는 차단당하고 공중볼 싸움에서도 우위에 있지를 못하고

 

선수들이 제대로 움직이질 않아서 공을 잡고 있더라도 패스할 공간도 없고

 

무엇보다도 찬스가 와도 골 결정력이 정말 부족하더군요.

 

그러면서 중국은 탄탄한 수비를 바탕으로 오는 역습 공격에

 

우리 수비진들은 쉽게 길을 터주고.....

 

정말 질만한 경기를 펼친것 같습니다.

 

약팀에만 강하다는 우리나라가 이번에는 중국에도 졌으니

 

더이상 물러날 곳이 없어 보이는군요.

 

2002년 월드컵 당시의 그 열정은 어디를 갔는지...

 

이제부터라도 다시 그때의 열정과 함께

 

다시 비상하는 한국축구가 되었으면 좋겠습니다.

2010년 2월 9일 화요일

C# 소켓 프로그래밍

PDA에서 서버와의 통신을 위해 C# 으로 소켓프로그래밍을 하게 되었는데

 

소켓프로그래밍 중에서 TCP/IP와 스트림 소켓프로그래밍쪽을 알아보도록 하겠습니다.

 

먼저 C#에서 소켓프로그래밍을 하기 위해서는

 

.NET 프래임워크 클래스 라이브러리의

 

System.net 과 System.Net.Socket 을 사용해야합니다.

 

using System.Net

using System.Net.Socket

 

클라이언트 에서 서버로의 접속을 위한 소켓프로그래밍

펼쳐두기..


서버에서 클라이언트의 접속을 기다리는 부분

펼쳐두기..


데이터를 주고 받게되는 Stream

펼쳐두기..

 

여기까지 제가 C# 소켓 프로그래밍을 공부한 내용들인데 아직 미숙한면이 많습니다.

 

조금 이상한 점이라던가 틀린점, 보완할 점들을 댓글로 달아주시면 정말 감사하겠습니다 ^^;

 

1. C# 소켓 프로그래밍

 

2. C# 데이터베이스(MS SQL2005 사용)

 

3. C# 비주얼 프로그래밍 + 이벤트 처리

 

4. PDA와 연동(액티브 싱크, 윈도우 모바일)

 

2번의 데이터베이스 연동과 서버의 내용은 같이 만들었던 친구가 했던 부분인데

 

이 부분들은 친구의 블로그를 링크하도록 하겠습니다.

간단한 PDA 어플리케이션

최근 방학기간동안 인턴 나온곳에서 PDA 를 사용해서 간단한 어플을 만들어 본다고

 

블로그를 거의 하지를 못했네요. 늘 자바만 써오다가 C#을 사용해야 해서 약간의

 

어려움도 있지만 그런 점들을 간략하게나마 블로깅 해보도록 하겠습니다.

 

먼저 PDA 어플리케이션을 만들기전 미리 봐둬야 할 부분들을 보고

 

간략하게 설계를 하고(아직 미숙해서 제대로된 설계를 못해요 ^^;;)

 

실제로 구현해 보는 순서로 해보겠습니다.

 

아래 순서는 하나씩 블로깅 하는대로 링크를 걸도록 할게요.

 

1. C# 소켓 프로그래밍

 

2. C# 데이터베이스(MS SQL2005 사용)

 

3. C# 비주얼 프로그래밍 + 이벤트 처리

 

4. PDA와 연동(액티브 싱크, 윈도우 모바일)

 

위 순서대로 하나씩 블로깅 할 예정입니다.

 

2번의 데이터베이스 연동과 서버의 내용은 같이 만들었던 친구가 했던 부분인데

 

이 부분들은 친구의 블로그를 링크하도록 하겠습니다.

2010년 2월 1일 월요일

박지성 시즌 첫골!!!

최근 박지성이 부진하고 있는것에 참 마음이 그랬는데

 

이렇게 시즌 첫골을 넣으면서 부활의 신호탄을 올려주니

 

다시 즐거워 질것 같습니다. 선발 출전해서 후반 86분까지

 

적극적인 수비 가담에 이어 왕성한 활동량을 보여주면서

 

다시 평점을 7점 받았네요.

 

최근 FM을 하다보면 맨유에 박지성선수 정말 잘하는데

 

실제로도 그렇게 해줬으면 좋겠다는 작은 바램이 생깁니다. ㅋㅋ

 

2010년 1월 27일 수요일

옥션 v3 365 누구나 다운로드 이벤트!

친구의 생일선물을 사러 옥션에 갔다가 보니

 

v3 365 누구나 다운로드 이벤트! 라는 것을 하더군요

 

 

메인화면에서 목록중에 있는데 최근 안랩에서 판매 하고 있는

 

v3 365 패키지 상품을 1년동안 사용할 수 있도록 해주는 이벤트입니다.

 

 무료 다운받기 버튼을 눌러서 들어가 보면

 

 

f(x) 분들 사진이 사방에 보이네요 ㅎㅎ

 

옥션에서 터졌던 개인정보 유출 사건의 보상이라는데

 

전에 옥션에서는 피해보상을 하지 않아도 된다는 판결이 나온걸로 아는데

 

이렇게 보상을 따로이 해주는 것을 보니

 

옥션의 이미지가 생각보다 조금 좋아진 느낌이 드는군요

 

 

꼭! 알아두세요 라는 곳을 보니

 

주요 내용으로는 개인당 3개의 PC에 설치해서 사용할 수 있고

 

1년간 사용가능 하며 1년이 지나면 자동 연장되면서 결재가 되는 것이 아니라

 

자동으로 해지 된다는 군요(마음에 드네요)

 

제일 중요한 것이 설치 지원 OS가 어디까지 되느냐 였는데

 

윈도우 7까지 가능은 하지만 64비트에서는 안된다는 군요

 

64비트 OS 에서 돌아가는 백신을 찾기힘들어서(저는 Avast 사용하고 있습니다)

 

좋아 했었는데 현재 윈도우7 64비트를 쓰고 있는 입장에서는 조금 씁쓸하네요

 

이건 뭐 아직 안랩에서 64비트를 지원해 주지 않아서 입니다.(옥션과는 상관없어요)

 

그래도 뭐 64비트에서는 일단 바이러스 자체가 잘 들어오지 않으니 그걸로 위안을....

 

아 그러고보니 저기서 Vista 도 빠져 있네요

 

Vista는 제가 쓰지를 않아서 테스팅을 해보진 못하겠고

 

윈도우7 32비트에서의 설치는 제가 직접해보고

 

다시 포스팅 하도록 하겠습니다.

 

혹 백신을 안쓰시는 분들은 이 이벤트를 기회 삼아서

 

유료 백신을 1년간 무료 사용하시면 좋겠네요.

2010년 1월 26일 화요일

디자인 패턴의 네번째! 팩토리 패턴(Factory Pattern) - 1

팩토리 메소드 패턴(Factory Method Pattern)

  팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤

클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만듦. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브 클래스에게 맡김

  - 서브클래스에서 결정한다는 것은 이 패턴을 사용할 때 서브클래스에서 실행중에 어떤 클래스의 인스턴스를 만들지 결정하기 때문이 아니라 생산자 클래스 자체가 실제 생산될 제품에 대한 사전지식이 전혀 없이 만들어 지기 때문(팩토리 메소드를 사용하는 이유는 이전 블로깅의 new를 사용할 때의 단점을 보완하여 유연성 있도록 하기 위함)

 

팩토리 메소드 패턴의 사용 예(이전 블로깅에서 만들었던 내용에 이어서)

 

  이전에 만들었던 createPizza() 메소드를 PizzaStore에 다시 넣으면서 추상 메소드로 선언하고 PizzaStore의 서브클래스를 만듦

 

public abstract class PizzaStore{

    public Pizza orderPizza(String type){

        Pizza pizza;

        pizza = createPizza(type);

        // 팩토리 객체가 아닌 PizzaStore에 있는 createPizza를 호출하게 됨

        pizza.prepare();

        pizza.bake();

        pizza.cut();

        pizza.box();

        return pizza;

    }

    protected abstract Pizza createPizza(String type);

    //기타 메소드

    //팩토리 메소드가 PizzaStore의 추상메소드로 바뀜

    //Pizza 인스턴스를 만드는 일은 이제 팩토리 역할을 하는 메소드에서 맡아서 처리

}

 

  팩토리 메소드는 객체 생성을 처리하며, 팩토리 메소드를 이용하면 객체를 생성하는 작업을 서브클래스에 캡슐화 시킬 수 있음. 이렇게 하면 수퍼클래스에 있는 클라이언트 코드와 서브클래스에 있는 객체 생성 코드를 분리시키게 됨.

 

 

서브클래스에서 결정되는 것

  PizzaStore의 orderPizza() 메소드에 이미 주문 시스템이 갖춰져 있으므로(서브 클래스

에서 변경하지 못하도록 final로 선언 가능) 각 서브클래스에서는 달라지는 피자의 스타일을 createPizza() 메소드로 구현

 

 

<서브 클래스의 코드>

public class NYPizzaStore extends PizzaStore{

    Pizza createPizza(String item){

        if(item.equals("cheese")){

            return new NYStyleCheesePizza();

        } else if (item.equals("veggie)){

            return new NYStyleVeggiePizza();

        } else return null;

    }

}

 

  수퍼클래스에 있는 orderPizza()메소드에서는 어떤 피자가 만들어지는지 전혀 알 수 없음. 그 메소드에서는 피자를 준비하고 굽고 자르고 포장하는 작업만 처리함.

 

팩토리 메소드를 이용한 피자 주문(뉴욕풍 피자 주문)

  1. PizzaStore 인스턴스를 확보(NYPizzaStore의 인스턴스를 만듦)

  2. PizzaStore가 만들어지고 나면 orderPizza()를 호출

      (인자를 사용해서 cheese, veggie 등을 알려줌)

  3. 피자를 만들 때는 createPizza() 메소드가 호출되는데, 이 메소드는 PizzaStore의 서브

     클래스인 NYPizzaStore에 정의되어 있으므로 NYPizzaStore에서는 뉴욕풍의 피자 인스

     턴스를 만들고 어떤 서브클래스를 쓰든지 Pizza 객체가 orderPizza() 메소드로 리턴됨.

  4. orderPizza() 메소드에서는 어떤 종류의 피자가 만들어졌는지 전혀 알지 못하지만 피자

     라는 것을 알고있고 그 피자를 준비하고, 굽고, 자르고, 포장하는 작업을 완료함.

 

<만들어지는 과정>

1. 뉴욕풍 피자가게 확보

  PizzaStore nyPizzaStore = new NYPizzaStore();

  // NYPizzaStore 인스턴스 생성

 

2. 피자 가게가 확보되었으니 주문을 받음

  nyPizzaStore.orderPizza(“cheese”);

  // nyPizzaStore 인스턴스의 orderPizza() 메소드가 호출(PizzaStore에 정의된 메소드 호출)

 

3. orderPizza() 메소드에서 createPizza() 메소드를 호출

  Pizza pizza = createPizza(“cheese”)

  // 팩토리 메소드인 createPizza() 메소드는 서브 클래스에서 구현. 이 경우 뉴욕풍 피자 리턴

 

4. 피자를 받아서 마무리 작업

  pizza.prepare();

  pizza.bake()

  pizza.cut();

  pizza.box();

  // 이 aphememf은 모두 createPizza()

 

<팩토리 메소드 패턴의 다이어그램>

  모든 팩토리 패턴에서는 객체 생성을 캡슐화 하고 팩토리 메소드 패턴에서는 서브클래스에서 어떤 클래스를 만들지를 결정하게 함으로써 객체 생성을 캡슐화

 

<생산자(Creator) 클래스>

 

<제품(Product) 클래스>

 

객체 의존성

  만약 팩토리 메소드 패턴을 사용하지 않고 객체 인스턴스를 직접 만들면 구상 클래스에 의존해야 함. 모든 피자 객체를 팩토리에 맡겨서 만들지 않고 PizzaStore 클래스 내에서 직접 만들시 모든 피자 객체들에게 직접적으로 의존하게 되고 피자 클래스들의 구현이 변경되면 PizzaStore 클래스까지 고쳐야 됨

 

의존성 뒤집기 원칙(Dependency Inversion Principle)

  구상 클래스처럼 구체적인 것이 아닌 추상 클래스나 인터페이스와 같이 추상적인 것에 의존하는 코드를 만들어야 한다는 것으로 이전에 나왔던 “특정 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다”는 원칙과 비슷하지만 의존성 뒤집기 원칙에서는 “추상화”를 더 많이 강조함. 이 원칙에는 고수준 구성요소가 저수준 구성요소에 의존하면 안된다는 것이 내포되어 있고 항상 추상화에 의존하도록 만들어야 한다는 것(PizzaSotre를 고수준 구성요소라고 할수 있고 서브 피자 클래스들은 저수준 요소라고 할수 있음)

 

원칙 적용

  팩토리 메소드 패턴을 적용하고 나면 고수준 구성요소인 PizzaStore와 저수준 구성요소인 피자 객체들이 모두 추상 클래스인 Pizza에 의존하게 됨. 팩토리 메소드 패턴이 의존성 뒤집기 원칙을 준수하기 위해 쓸 수 있는 유일한 기법은 아니지만 가장 접합한 방법 가운데 하나

 

원칙을 지키는 데 도움이 될만한 가이드라인

  어떤 변수에도 구상 클래스에 대한 레퍼런스를 저장하지 말 것

     - new 연산자를 사용하면 구상 클래스에 대한 레퍼런스를 사용하게 되는 것이고

       팩토리를 써서 구상 클래스에 대한 레퍼런스를 변수에 저장하는 일을 미리 방지

  구상 클래스에서 유도된 클래스를 만들지 말 것

     - 구상 클래스에서 유도된 클래스를 만들면 특정 구상 클래스에 의존하게 됨.

        인터페이스나 추상 클래스처럼 추상화된 것으로부터 클래스를 만들어아 함

  베이스 클래스에 이미 구현된 메소드를 오버라이드 하지 말 것

     - 이미 구현되어 있는 메소드를 오버라이드 한다는 것은 애초부터 베이스 클래스가 제대로

       추상화 된 것이 아니라고 볼 수 있음. 베이스 클래스에서 메소드를 정의할 때는 모든

       서브클래스에서 공유할 수 있는 것만 정의해야 함

 

※ 이 가이드라인은 항상 지켜야 하는 규칙이 아니라 우리가 지향해야 할 바를 밝히고 있을 뿐

    이고 자바 프로그램 가운데 이 가이드라인을 완벽하게 따르는 것은 하나도 없음. 그러나 이

    가이드라인을 완전히 습득한 상태에서 디자인을 할 때 항상 이 가이드라인을 염두해

    둔다면, 불가피한 상황에서만 합리적인 이유를 바탕으로 그렇게 하게 될 것이다.

 

출처 : Head First Design Patterns