2014. 3. 16. 01:26

웹 프로젝트 컴파일을 돌리니 힙 메모리 에러를 내면서 컴파일이 안되는 현상이 나왔습니다.

tomcat 서버 설정에서 메모리를 늘려주고 그리고 이클립스 설정 파일인 eclipse.ini 파일에서 메모리 설정을 바꿔준 이후로 이런 현상이 나왔습니다.





이클립스 메모리를 너무 많이 늘려주었나 봅니다.

XXMaxPermSize 를 512m 에서 256m 로 줄였습니다.







에러 안나고 실행이 잘 되네요 

아무래도 노트북 성능이 그렇게 좋지 않아서 그런것 같습니다

자신의 컴퓨터 상황에 맞게 설정 해주셔야 겠네요

'Programing > JSP' 카테고리의 다른 글

IE 호환성 보기 관련 참조 블로그  (0) 2014.09.29
톰캣 port 죽이기  (0) 2014.04.04
Posted by Thread
2014. 1. 7. 16:32

제가 자주 사용하던 스마트폰 앱이 2013년 이후로 서비스가 종료됨에 따라 비슷한 서비스를 제공해 주는 어플을 검색했지만


기존에 쓰던 어플보다 불편했습니다. 그래서 나만의 어플을 개발하기 위해 자료 조사를 들어갔습니다.


우선 저에게 필요한 건 아이폰 유저이기에 Mac과 XCode에 대한 지식이었습니다.


그러나 금전적인 한계에 부딪혀 포기할려던 찰나에 모바일 웹앱(Web App)이라는 것을 알게 됩니다.


우선 모바일 웹앱으로 개발을 해서 혼자 써야겠습니다.


모바일 애플리케이션의 종류


네이티브 앱(Native App)

제가 일반적으로 생각했던 스마트폰에 설치되고 운용되는 전용 애플리케이션입니다.

각 플랫폼에 맞는 프로그래밍 언어와 SDK로 개발해야 하며 기기의 고유 정보, 하드웨어에 접근할 수 있어서

최적화된 고성능 애플리케이션을 개발할 수 있고, 앱 스토어 or 플레이 스토어 등 마켓에 등록해서 판매할 수 있습니다.

아이폰 개발자(특히 개인)에게는 네이티브 앱을 개발한다는 것은 금전적으로 부담이 됩니다.


모바일 웹(Mobile Web)

일반적인 웹 기술로 개발되고 모바일 브라우저에 의해 실행되는 웹 애플리케이션을 통칭하는 말입니다.

쉽게 말해 일반적인 웹 사이트의 느낌을 모바일로 그대로 옮긴 형태입니다.


모바일 웹앱(Mobile Web App)

일반적인 웹 사이트보다 모바일에 더 최적화되고 네이티브 애플리케이션화된 형태를 한정하는 표현입니다. 

모바일 웹앱은 웹 기술만 사용해서 풀 스크린 모드, 애니메이션 효과, 터치 상호작용, 비동기 통신, 로컬 저장소, 오프라인 지원, 향상된 스타일 등을 구현하여 모바일 환경에서 네이티브 애플리케이션과 유사한 실행 환경, 사용자 경험을 제공하는 형태의 애플리케이션입니다.

마치 웹사이트에 접속을 하면 앱을 실행한 것처럼 보여주는 것입니다. 

웹앱을 개발하면 Mac이 필요하지도 XCode의 언어를 새로 공부하지 않아도 됩니다. 하지만 네이티브 앱보다 구동이 빠르지 않고 하드웨어 정보, 고유정보에 접근할 수 없습니다.

종류는 jQTouch, jQuery Mobile, Sencha Touch 이 세가지가 대표적입니다.


하이브리드 앱(Hybrid App)

네이티브 앱과 모바일 웹앱의 장점을 살린 것이 하이브리드 앱입니다. 모바일 웹앱을 네이티브 앱으로 바꾸는 것입니다.

일반적인 웹 기술로도 모바일 기기의 고유 정보와 상호작용 할 수 있게 하고 앱 스토어에 올리고 판매도 할 수 있는 형태의 애플리케이션입니다. 앱스토어에 올리려면 Mac은 필수로 있어야 합니다. 이것이 가능하려면 모바일 기기의 고유 기능을 웹 기술로 호출할 수 있는 추상화된 API가 필요하며 웹앱을 네이티브 앱으로 감싸주는 장치가 필요합니다. 폰갭(PhoneGap), 티타늄(Titanium)과 같은 제품이 이와 같은 역할을 하는 대표적인 제품입니다.



네이티브 앱과 모바일 웹앱의 차이


 

 네이티브 앱

모바일 웹앱 

하드웨어 접근성 

높음 

낮음 

구현 자유도 

높음 

보통 

실행 속도 

빠름 

보통 

등록/판매 

가능 

불가능 

사용자 진입 

높음

(앱 스토어 배포) 

낮음

(브라우저를 이용한 URL접근) 

개발 환경 

Object-C, Java 등 각 플랫폼에 맞는 언어와 SDK 사용 

HTML, JavaScript, CSS 등 

개발 비용 

높음 

낮음 

멀티 플랫폼 지원 

낮음 

높음 

업데이트 용이성 

낮음 

높음 





본문 출처 : 시작하세요! 모바일 웹 개발 (박종명 지음)





Posted by Thread
2014. 1. 2. 13:14

자바스크립트를 공부하려고 시작했을 때 어떤 프로그램을 사용해야 할지 고민이 생겼습니다.


메모장? 이클립스? Editplus? 


이클립스나 Editplus나 둘다 구문강조를 해주어서 좋기는 하지만 저에겐 자동완성 기능이 필요했습니다.


그래서 찾아본 결과 이클립스 플러그인 중 JSDT(JavaScript Development Tool)이 있다는 것을 알았습니다.


바로 이클립스에 설치 해 봤습니다.




 



먼저 이클립스의 메뉴 -> Help -> Eclipse Marketplace...

들어갑니다.















Find 에서 jsdt 검색을 하시고 JSDT jQuery Install 버튼 클릭






설치는 쉽습니다.

다른 설명은 하지 않고 그림만으로 대체하겠습니다.









이클립스 재시작까지 완료하면 설치는 끝났습니다.

이제 적용을 시켜야 합니다.


적용할 프로젝트의 JavaScript Resources 마우스 오른쪽 Properties에 들어갑니다.





JavaScript -> Editor -> Include Path 항목에서 라이브러리 추가를 해줍니다.





적용할 버전을 선택하시면 됩니다. 

저는 1.9까지 나와 있길래 1.9를 선택했습니다.




이제 적용을 끝냈으니 테스트를 해보겠습니다.

적용한 프로젝트에 Index.html 파일을 만들어서

<script type="text/javascript">

안에 $(document). 까지 치고 자동완성 단축키인 Ctrl + space 를 누르니 짜잔 하고 자~알 나타납니다.

정말 편리한 기능입니다. 만드신분 최고~!





'Programing > JavaScript' 카테고리의 다른 글

alert(알림창) 후 focus 작동 안할 때  (0) 2014.12.18
select option 추가  (0) 2014.04.24
Posted by Thread
2013. 12. 26. 23:47


데이터베이스 접속 시 다음과 같은 메시지가 출력되면 계정이 잠겨 있다는 것입니다.


ORA-01017: invalid username/password; logon denied 


sqlplus 에서 관리자로 로그인 후 


alter user 계정명 account unlock;

alter user 계정명 identified by 계정비밀번호;


두 줄을 적어주면 계정이 풀립니다.


Posted by Thread
2013. 12. 16. 11:46



software architecture design patterns in java.pdf


  • 디자인 패턴에 대한 설명 



'Programing > Java' 카테고리의 다른 글

이클립스에서 Java api document 만들기  (0) 2014.04.08
클래스 관계 (in, has)  (0) 2013.12.16
Posted by Thread
2013. 12. 16. 11:25


 

 표현

UML 

 의미

keyword 

 in

 

Generalization


 Generalization

 상속

 extends

 

Realization


 Realization

 구현

 implements

 has

 

Association


 Association

 관계

 (has, link)

 

Aggregation


 Aggregation

 구성(집합)

 (멤버 필드)

 

Composition


 Composition

 복합

 (멤버 필드)

 

 

Dependancy


 Dependancy

 사용, 생성

 <<use>> <<create>> <<param>>


Posted by Thread
2013. 12. 3. 23:20

안드로이드에서 웹서버와 통신을 해서 로그인을 구현하려고 합니다.





이런 형식입니다.

단순히 안드로이드에서 입력된 ID, Password를 웹서버로 보내고 HTML형식을 받아서 TextView에 뿌려주는 기능입니다.


오늘은 웹서버와 DB가 구축되어 있다고 가정하고 안드로이드에서 웹서버에 Get방식으로 보내고 읽는 코드만 보여드리겠습니다.

(사실 현재 컴퓨터에는 웹서버와 Database가 구축되어 있지 않습니다. ;;;)


안드로이드 소스는 아래와 같습니다.


public class MainActivity extends Activity implements OnClickListener{
 
 Handler handler = new Handler();
 //메인스레드와 작업스레드간에 교량 역할을 한다.
 //안드로이드 3.0(허니콤) 버전부터 작업스레드가
 //화면 UI에 직접 접근하는것이 차단되었다.
 //화면 UI는 무조건 Handler 객체를 통해서 해야만 한다.
 EditText editUserid;
 EditText editPasswd;
 Button btnLogin;
 TextView txtResult;
 String result;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initWidget();
  
 }
 
 void initWidget(){
  btnLogin = (Button) findViewById(R.id.btnLogin);
  txtResult = (TextView) findViewById(R.id.txtResult);
  editUserid = (EditText) findViewById(R.id.editUserid);
  editPasswd = (EditText) findViewById(R.id.editPasswd);
  
  btnLogin.setOnClickListener(this);
  
  //TextView 스크롤기능 추가
  txtResult.setMovementMethod(new ScrollingMovementMethod());
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
 
 @Override
 public void onClick(View arg0) {
  showDialog(1);
  
  String userid = editUserid.getText().toString();
  String passwd = editPasswd.getText().toString();

  
  ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
  list.add(new BasicNameValuePair("userid", userid));
  list.add(new BasicNameValuePair("passwd", passwd));

     //예시
     //"http://192.168.0.1:8080/MyService/login.jsp?" + URLEncodeUtils.format(list, "utf-8");
     //위와 같이 접속할 서버의 IP:PORT/서버프로젝트명/웹페이지명 을 적으시고 
     //뒤에 인코딩 설정부분 추가하시면 됩니다.
    final String urlPath = "http://" + IP번호:PORT번호 + "/서버프로젝트명/웹페이지명.jsp?" + 
       URLEncodedUtils.format(list, "utf-8");
  
  Thread t = new Thread(new Runnable() {
   
   @Override
   public void run() {
    InputStream is = requestGet(urlPath);
    result = streamToString(is);
    
    handler.post(new Runnable() {
     
     @Override
     public void run() {
      txtResult.setText(result);
      removeDialog(1);
     }
    });
   }
  });
  t.start();
 }
 
 public InputStream requestGet(String requestUrl) {
  
  try {
   HttpClient client = new DefaultHttpClient();
   HttpGet request = new HttpGet(requestUrl);
   HttpResponse response = client.execute(request);
   
   HttpEntity entity = response.getEntity();
   InputStream is = entity.getContent();
   
   return is;
  } catch (ClientProtocolException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  return null;
 }
 
 public String streamToString(InputStream is) {
  StringBuffer buffer = new StringBuffer();
  
  try {
   BufferedReader reader = new BufferedReader(new InputStreamReader(is));
   String str = reader.readLine();
   while( str!=null ){
    buffer.append(str);
    str = reader.readLine();
   }
   reader.close();
  } catch (IOException e) {
   e.printStackTrace();
  }  
  return buffer.toString();
 }

 @Override
 @Deprecated
 protected Dialog onCreateDialog(int id) {
  ProgressDialog dialog = ProgressDialog.show(this, "Login", "processing...");
  return dialog;
 } 
}


안드로이드 자바코드는 우선 이렇구요.

코드 설명부분은 시간이 늦어서 다음에 이어서 하도록 하겠습니다.


Posted by Thread