2014년 2월 11일 화요일

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wan</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>myapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<java-version>1.6</java-version>
<org.springframework-version>4.0.0.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Transaction -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>

<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

<!-- Apache Commons -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>

<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>

<!-- JDBC Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
    <id>mesir-repo</id>
    <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
    </repository>
    </repositories>  
<build>
    <finalName>myapp</finalName>
</build>
</project>

Spring Framework를 적용해서 프로젝트를 시작하다가 아래와 같은 에러가 났을 경우,
cvc-complex-type-3.2.2: Attribute 'local' is not allowed to appear in element 'ref'
Spring 4.0 부터는 spring-beans.xsd 에서 local을 지원하지 않기 때문에 발생.

local을 bean으로 변경해주거나, 아래와 같이 4.0 이전 버전의 경우에는 Spring의 버전을 추가해주면 된다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

2013년 12월 18일 수요일

Hadoop 2.2.0 HDFS 명령어

주로 사용하는 Hadoop의 파일시스템인 HDFS의 명령어들을 정리할 계획이다.

hadoop fs -cmd <args> 형태로 명령을 내릴 수 있으며, Unix 또는 Linux의 명령어와 유사하게 사용할 수 있다.

Hadoop에서 가장 일반적인 파일 관리 작업은 아래와 같다.

  1. 파일과 디렉토리의 추가
  2. 파일 복구
  3. 파일 삭제

  • help - 각 명령어의 사용과 간단한 설명을 제공
    hadoop dfs -help [CMD]

    hadoop의 fs 명령어를 사용하면 사용자가 설치한 하둡 버전에서 지원하는 모든 명령어를 볼 수 있다. 또한 help 옵션을 사용하면 각 명령어의 사용과 간단한 설명을  함께 볼 수 있다.
  • ls - 파일과 디렉토리를 조회한다.
    hadoop dfs -ls PATH [PATH ..]
    hadoop@linuxwan-VirtualBox:/usr/local/hadoop/sbin$ hadoop fs -ls /input
    13/12/19 13:35:47 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Found 1 items
    drwxr-xr-x   - hadoop supergroup          0 2013-12-19 13:23 /input/study

    특정 폴더의 하위 폴더까지 보고자 할 경우에는 -R 옵션을 사용
    hadoop dfs -ls -R PATH [PATH ..]
    hadoop@linuxwan-VirtualBox:/usr/local/hadoop/sbin$ hadoop fs -ls -R /input
    13/12/19 13:54:33 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    drwxr-xr-x   - hadoop supergroup          0 2013-12-19 13:23 /input/study
    -rw-r--r--   3 hadoop supergroup   35451909 2013-12-16 14:21 /input/study/comments.xml
  • mkdir - 디렉토리를 생성한다.
    hadoop dfs -mkdir PATH [PATH ..]
  • mv - SRC에 있는 파일이나 디렉토리를 DST로 옮긴다.
    hadoop dfs -mv SRC [SRC ..] DST
    hadoop@linuxwan-VirtualBox:/usr/local/hadoop/sbin$ hadoop dfs -mv /input/comments.xml /input/study/

    hadoop@linuxwan-VirtualBox:/usr/local/hadoop/sbin$ hadoop dfs -mv /output/out_workshop1 /output/study/
  • put - 로컬 시스템의 파일과 디렉토리를 목적지 파일 시스템으로 복사. 만약 LOCALSRC가 -로 설정되어 있으면 입력은 stdin으로 지정되고 DST는 파일이어야 한다.
    hadoop dfs -put LOCALSRC [LOCALSRC ..] DST
    hadoop@linuxwan-VirtualBox:/usr/local/hadoop/sbin$ hadoop dfs -put ./comments.xml /input/study/
  • rm - 파일 또는 디렉토리를 삭제한다. 하위 폴더까지 모두 삭제를 원할 경우 -R 옵션을 사용.
    hadoop dfs -rm SRC
    hadoop fs -rm /output/study/HadoopInAction/out_*
    hadoop fs -rm -R /output/study/HadoopInAction/out_*





2013년 12월 3일 화요일

Spring + Mybatis + JUnit Test를 위한 예제

mybatistest-context.xml
Mybatis 설정을 위한 dataSource와 transactionManager, Mybatis관련 설정을 아래와 같이 한다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/springbook?characterEncoding=UTF-8" />
<property name="username" value="spring" />
<property name="password" value="book" />
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- enable autowire -->
    <context:annotation-config />

    <!-- enable transaction demarcation with annotations -->
    <tx:annotation-driven />
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- property name="configLocation" value="springbook/learningtest/spring/mybatis/mybatis-config.xml" /-->
<property name="mapperLocations" value="springbook/learningtest/spring/mybatis/*-sqlmap.xml" />
</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

<bean id="mybatisDao" class="springbook.learningtest.spring.mybatis.MybatisTest$MybatisDAO">
<property name="sqlSession" ref="sqlSession" />
</bean>
</beans>
--------------------------------------------------------------------------

mybatis-config.xml
이 부분은 상기의 mybatistest-context.xml에 있는 sqlSessionFactory부분의 주석처리되어 있는 configLocation 태그를 활성화 했을 경우에 필요한 파일.
이때 당연 mapperLocations 태그 부분을 주석처리해야 한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<mappers>
<mapper resource="springbook/learningtest/spring/mybatis/user-sqlmap.xml" />
</mappers>
</configuration>
----------------------------------------------------------------------------

user-sqlmap.xml
수행되어야 할 쿼리문을 아래와 같이 작성.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="springbook.learningtest.spring.mybatis.ExampleDAO">
 
<select id="getUserName" parameterType="String" resultType="string">
    SELECT NAME FROM USERS WHERE ID = #{id}
</select>

<select id="getUserList" resultType="springbook.learningtest.spring.mybatis.Users">
SELECT id, name, password, level, login, recommend, email
FROM users
order by id, name
</select>
</mapper>
----------------------------------------------------------------------------

ExampleDAO.java

/**
 *
 */
package springbook.learningtest.spring.mybatis;

import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * @author
 *
 */
public interface ExampleDAO {
public String getUserName(@Param("id") String userId);
public List<Users> getUserList();
}

-----------------------------------------------------------------------------

Users.java

/**
 *
 */
package springbook.learningtest.spring.mybatis;

import java.io.Serializable;

/**
 * @author
 *
 */
public class Users implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;

private String id;
private String name;
private String password;
private String level;
private String login;
private String recommend;
private String email;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getRecommend() {
return recommend;
}
public void setRecommend(String recommend) {
this.recommend = recommend;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String toString() {
return getId() + getName();
}
}


-----------------------------------------------------------------------------

MybatisTest.java

/**
 *
 */
package springbook.learningtest.spring.mybatis;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @author
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MybatisTest {
@Autowired MybatisDAO mybatisDao;

@Test
public void getUserName() {
String id = "gyumee";
String name = mybatisDao.getUserName(id);

assertThat(name, is("박성철"));
}

@Test
public void getUserList() {
List<Users> userList = mybatisDao.getUserList();

assertThat(true, is(userList.size() > 1));
}

public static class MybatisDAO {
private SqlSession sqlSession;

public void setSqlSession(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}

public String getUserName(String id) {
ExampleDAO exampleDao = sqlSession.getMapper(ExampleDAO.class);
return exampleDao.getUserName(id);
}

public List<Users> getUserList() {
ExampleDAO exampleDao = sqlSession.getMapper(ExampleDAO.class);
List<Users> list = exampleDao.getUserList();
return list;
}
}
}


2012년 3월 28일 수요일

Xcode에서 PhoneGap으로 개발하기

1. 개발에 필요한 사항

  • 인텔기반의 Mac OS X Snow Leopard(10.6) 이상의 컴퓨터
  • 장비에 install하기 위한 필요 사항
    • 애플의 iOS 장치(iPhone, iPad, iPod Touch)
    • iOS 개발자 인증
2. Install SDK + PhoneGap

  • Apple Developer Portal 에서 Xcode를 다운로드 후 설치한다.
  • PhoneGap 최근 버전을 다운로드 받는다. PhoneGap Download.
  • zip파일의 압축을 해제 후, lib/ios 폴더 아래의 확장자가 dmg 파일을 더블클릭해서 설치한다.

3. Setup New Project

  • Xcode 실행 후 새로운 프로젝트를 생성한다.
  • 프로젝트를 위한 템플릿 중에서 Cordova-based Application을 선택한다.




  • Next 버튼을 클릭 후, 애플리케이션에 대한 "Product Name" & "Company Identifier"를 지정한다. 



  • 애플리케이션을 저장하기 위한 폴더를 선택
  • 프로젝트가 생성된 후 바로 Xcode 좌측 상단에 있는 Run 버튼을 클릭해서 프로젝트를 실행한다.
  • 프로젝트 생성 후 저장
  • Xcode 4에서 생성한 프로젝트를 볼 수 있을 것이다. 이때 좌측 상단에 있는 Run 버튼을 클릭해서 해당 프로젝트를 실행시킨다.
  • index.html 파일을 찾지 못해 iPhone 시뮬레이터에서 오류가 발생하게 된다.
  • 프로젝트를 Run 후에 프로젝트 폴더 아래에 www폴더가 생기지 않았다면, PhoneGap을 다운 받은 폴더에서 www폴더를 복사해서 붙여도 된다.
  • 탐색기에서 프로젝트 아래의 생성된 www폴더를 Drag&Drop으로 아래의 푸른색 부부에 놓으면 신규 팝업 메뉴가 나타나게 된다.



  • Drag 후에 나타난 팝업 창에서, 아래와 같이 Create folder reference for any added folders를 선택하면 된다. 




4. Hello World

아래와 같이 구동된 화면을 볼 수 있다.






2012년 2월 7일 화요일

Full Screen enabler for Eclipse 3.6/3.7 on OSX Lion

Mac OS X에서 이클립스를 Full Screen으로 사용하는 방법입니다.
기본적으로 eclipse를 설치하게 되면 Mac OS X에서 제공하는 Full Screen 전환 기능을 제공하지는 않습니다.

Eclipse를 설치하고 실행하면 Mac OS X Lion에서 제공하는 Full Screen으로 전환하는 아이콘이 지원되지 않는다.
Mac OS X에서 제공하는 편리한 Full Screen 기능을 사용하기 위해서는 Eclipse 마켓플레이스에서 "Full Screen"으로 검색한다.

Eclipse Help메뉴에서 Eclipse Maketplace...를 선택한다.














Search 탭에서 검색어로 "Full Screen"을 입력 후 Go 버튼을 클릭하면 Full Screen enabler for Eclipse 3.6/3.7 on OSX Lion의 "Install"버튼을 클릭한다.



















"Next"버튼을 클릭해서 설치한다.





















이렇게 설치 후 Eclipse를 재시작 하면 Eclipse 우측 상단에 Full Screen전환 아이콘이 나타나며, Eclipse를 Full Screen에서 사용할 수 있게 된다.








2012년 1월 11일 수요일

Android에서 Phonegap 사용

먼저 이클립스와 안드로이드 SDK를 설치한다.
Eclipse 3.4 이상 버전을 지원한다.
Download and install - Eclipse Classic

안드로이드 관련 SDK와 ADT Plugin을 설치한다.
Download and install - Android SDK

Download and install - ADT Plugin

이클립스와 Android SDK 및 ADT Plugin 설치가 완료 되면, 최신 PhoneGap을 다운로드 받기 위해서 아래의 사이트로 이동한다.
http://phonegap.com

다운로드한 압축 파일을 특정 폴더에 압축을 푼다.













안드로이드 SDK 설치와 이클립스 설정을 완료한 후에 프로젝트 생성을 한다.
이클립스를 구동해서 File 메뉴 아래의 New > Other 메뉴를 클릭해서 Android Project를 선택한다.




Next> 버튼을 클릭해서 다음으로 넘어간다.












프로젝트 명칭은 지정하며, 여기서는 프로젝트 명칭을 HelloPhoneGap 지정한다.

Next> 버튼을 클릭해서 다음으로 넘어간다.

















안드로이드 버전을 선택한다. 여기서는 최신 버전인 Android 4.0.3을 선택.
Next> 버튼을 클릭해서 다음으로 넘어간다.














Application Name을 Hello로 지정
Package Name은 com.phonegap.hello로 지정
Creative Activity를 체크(Default로 체크되어 있음)하고 Activity 명칭을 HelloActivity로 지정
Minimum SDK를 8(Android 2.2)로 지정 후 우측 하단의 Finish 버튼을 클릭해서 프로젝트를 생성한다.












프로젝트 생성 후 Project Root폴더에 2개의 폴더를 추가로 생성한다.

Project Root 폴더 바로 아래에 libs폴더를 추가
Project Root 폴더 아래의 assets 폴더 아래에 www 폴더를 추가










압축을 풀었던 PhoneGap파일의 Android폴더 아래를 펼쳐서 파일을 프로젝트 폴더에 복사를 한다.
1. phonegap.js 파일을 Project Root 폴더 아래의 assets/www 폴더에 복사한다.
2. phonegap.jar 파일을 Project Root 폴더 아래의 libs 폴더에 복사한다.
3. xml 폴더 전체를 Project Root 폴더 아래의 res 폴더에 복사한다.

* phonegap-1.3.0.jar 파일을 HelloPhoneGap Project의 Java Build Path에 포함시켜야 한다.















Project 내의 src 폴더 아래에 있는 HelloActivity.java 파일을 더블 클릭해서 파일을 연다.










1. HelloActivity가 상속했던 Activity 클래스를 DroidGap 클래스로 대치한다.
    이때 com.phonegap.Droidgap을 import 한다.
2. 기존의 setContentView(R.layout.main)을 super.loadUrl("file:///android_asset/www/index.html")으로 변경한다.
3. 기존에 있는 import android.app.Activity를 삭제한다.

AndroidManifest.xml 파일을 열어서 내용을 추가하도록 한다.
추가해야 할 사항은 붉은색으로 표시를 했다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.phonegap.hello"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:resizeable="true"
        android:anyDensity="true"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".HelloActivity"
            android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.phonegap.DroidGap" android:label="@string/app_name" 
                     android:configChanges="orientation|keyboardHidden"> 
        <intent-filter> </intent-filter> 
    </activity>
    </application>
</manifest>

Project 내의 /assets/www 폴더 아래에 새로운 파일(New > File)을 index.html로 생성한다.
index.html 파일에 아래의 내용을 추가한 후에 저장하도록 한다.

<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

Project를 선택 후 우측 마우스 버튼을 클릭해서  Run As > Android Application 선택한다.


















애뮬레이터가 구동되면서 실행된 화면이 Display 된다.