http://d2.naver.com/helloworld/1113548


http://imcho.tistory.com/38


1. Runtime 클래스

Runtime.exec(); 를 통해서 외부 프로세스를 실행한다.


exec() 메소드를 호출하기 전에 명령어와 해당 독립변수, 환경 변수 설정, 작업 디렉터리 등을 지정한다. 모든 버전의 메소드는 생성된 프로세스를 관리하기 위한 java.lang.Process 오브젝트를 반환하는데, 이는 서브프로세스 및 종료 상태의 인풋 또는 아웃풋 스트림을 얻어낼 수 있도록 해준다.


exec()의 매게변수안에 명령어를 작성하여 실행시키면 명령어대로 실행된다.이에 따른 아웃풋을 읽어드려 출력하면 커맨드창에 출력된다.


하지만 exec()에서는 서브프로세스의 환경변수에 대한 입력이 용이하지않다. 그걸 개선하기위해 ProcessBuilder클래스를 사용한다.



2. ProcessBuilder 클래스

위에서 언급했듯이 환경변수를 조작하는데 더욱 용이하다.

환경변수를 입력하기위해 environment()메소드를 통해 Map을 얻어낸다음 map을 처리한다.


다음과같이 map에 환경변수를 설정하여준다.

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

ProcessBuilder processBuilder = new ProcessBuilder( command, arg1, arg2); 

Map<String, String> env = processBuilder.environment(); 

env.put("var1", "value"); 

env.remove("var3");

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


환경 변수와 디렉터리가 설정된후 start()를 호출한다.


또한 환경변수를 초기화하기위해 clear()하고 다시 설정할수도있다.



Posted by moyaiori
,

1일차 내용


기본적인 위젯 공부 (이미지 뷰까지)


2일차 시작!!


다양한 레이아웃 구성방법


자바코드만을 이용한 레이아웃 구성


렐러티브 레이아웃 만들어보기


그리드 레이아웃 - 테이블 레이아웃보다 유연하게 구성할 수 있다. 4.0부터 지원한다.


고급 위젯


슬라이딩도어, 뷰 플리퍼, 탭호스트

Posted by moyaiori
,

안드로이드 어플리케이션 개발


안드로이드는 리눅스 커널을 기반으로한 OS이며 개발언어는 자바이다.


자바는 애플리케이션 클래스가 시작점이라고하면 안드로이드는 어떤것이든 될수 있다.


대표적으로 많이 애플리케이션 클래스가 많이되는것은 액티비티(Activity)이다.


구성요소

1. 액티비티 (Activity) - 유저 인터페이스 및 이벤트를 제공

2. 서비스 (Service) - 백그라운드에서 실행되는 컴포넌트

3. 컨텐트 프로바이더(Conternt Provider) - 

4. 브로드캐스트 리시버 - 모바일 디바이스 내부적으로 이벤트를 캐치하기 위한 컴포넌트

Posted by moyaiori
,

객체지향 분석 설계


 - 객체 모델 만들기(클래스 다이어그램)

논리적 관점 및 정적인 관점에서 유스케이스 실현을 위해 필요한 객체 춫출과 객체들간의 관계를 표현하는것, 흡사 데이터 모델링하는것과 비슷하다.


단위 업무별로 만드는것이 일반적이다.

프로젝트 규모가 적으면 전체적으로 하기도한다.


개인별 업무 분배가 필요하다


시퀀스 다이어그램은 대표적인거 1인당 1개씩만한다.


단위 업무당 객체모델링

유스케이스마다 동적 모델링 1개




Posted by moyaiori
,
프로젝트 3일차

유즈 케이스 다이어그램 및 기술서 작성




Posted by moyaiori
,

수료 프로젝트 2일차


Use-Case 다이어그램 수업


스토리 보드 작성



계획서 작성시 -> 나중에 결과보고서에 들어갈 가능성이 높기때문에


계획서 양식은 따로없지만 일회성이 아닌 이후 결과보고서에 포함될수 있는 형식을 지키는게 좋다.


계획서 발표는 월요일 오전에 발표할 예정

강사님 피시에 있는 수료프로젝트 경진대회 요구조건 갖추기



요구사항 정의서 뺴기-> 대신 기능 정의서로(주요 범위및 개요(기능))


포트폴리용 대비해서 예쁘게만들기


Use-case 모델

분석 도메인 객체 모델

시퀀스 모델 샘플로 1개만

클래스 모델

DB설계서

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

유스 케이스


제목에 유스 케이스 모델




Posted by moyaiori
,

수료프로젝트 시작!


1일차


아이디어 회의 및 스토리 보드 작성



Posted by moyaiori
,

스프링 5일차 


스피링의 다양한 변수값 받는 방법 

1. 데이터 받기

@RequestMapping("/get/{id}")

위와같은 url 맵핑일경우 아래 태그를 이용해서 변수값을 받을수 있다.

 @PathVariable


2. 헤더값 받아오기

@RequestHeader


3. 쿠키값 가져오기

@CookieValue


4. JSON 처리

(1) out 객체에 json 만들어서 넣어주기

(2) @ResponsBody 태그를 통해서 직접 문자열을 넣기

(3) 객체 자체를 넣어주기

(4) Map을 넣어주기


그외 AJAX 통신시 JSON 데이터 자동 맵핑


모델1 기술과 스프링 기술을 동시에 쓸때

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:alwaysUseFullpath="true" />

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerAdapter" p:alwaysUseFullpath="true" />


HandlerInterceptor를 통한 요청 가로채기

AOP같은 기능이다.

preHandel

postHandle

afterCompletion

3가지 제공 메소드를 오버라이딩 해야한다.


인터셉터는 컨트롤러에 한정되서 사용한다.

AOP는 서비스등 다른곳에서도 사용한다.


- 컨트롤러에서 예외가 발생했을시

@ExceptionHandler(NullPointerException.class

함수를 지정하고 jps 페이지를 지정해주면 예외 발생시 그 페이지로 이동한다.


SimpleMappingexceptionResolver

전역으로 처리한다.

예외 타입을 확인후에 논리적이름을 지정해준 페이지로 이동한다.



Posted by moyaiori
,

스프링 4일차


스프링 MVC의 핵심 구성요소

1. 브라우저로부터 서버로 요청 전송

2. DispatcherServlet에서 모든 요청을 받아서 세부 컨트롤러를 호출해준다.

3. HandlerMapping에서 요청 URL과 매칭되는 컨트롤러 검색

4. <<spring bean>> HandlerAdapter 로 처리 요청을 보낸다.

5. 세부 컨트롤러를 실행

6. 결과 리턴(어댑터가 논리적 이름과 실행 결과를 포장해서 넘겨준다. 이것이 Model And View이다)

7. View Resolver가 논리적 이름을 가지고 해당 설정한 뷰를 찾아서 뷰 객체를 반환해준다.

8. 이 뷰를 브라우저로 결과를 보내준다.


-----------


@RequestMapping을 이용한 경로 매핑







Posted by moyaiori
,

수료프로젝트 적용 기술및 프로젝트 아이디어

앵귤라 JS

리액트 JS

실제 데이터 파싱

실시간 사람매칭등

켜놓으면 반응이 오는 그런 사이트 -> 증권

모바일

위키 백과 스타일 디자인

다양한 메신져별 이모티콘 공유

전국시도에 대한 체육시설 예약관리 통합 -> 프로젝트 아이디어

공공 API 활용

- NAS(network storage server)

계정마다 파일 저장하는 폴더지정해서

개인이 파일 업로드나 다운로드 공유등 할수 있다.



스프링 3일차


수료프로젝트 적용 기술및 프로젝트 아이디어

앵귤라 JS

리액트 JS

실제 데이터 파싱

실시간 사람매칭등

켜놓으면 반응이 오는 그런 사이트 -> 증권

모바일

위키 백과 스타일 디자인

다양한 메신져별 이모티콘 공유

전국시도에 대한 체육시설 예약관리 통합 -> 프로젝트 아이디어

공공 API 활용

- NAS(network storage server)

계정마다 파일 저장하는 폴더지정해서

개인이 파일 업로드나 다운로드 공유등 할수 있다.



스프링 3일차

AOP(Aspect Oriented Programming)


 - 대표적인 공통 기능 사용방법들

상속, 스테틱메소드, 위임 형식이 있다.


- Cross-Cutting Concem(횡단 관심)

애플리케이션의 다양한 관점(point)에 영향을 미치는 공통 기능

끼워넣기

1. 공통기능과 주 업무기능을 분리한다.

일상 생활의 객체를 프로그램을 클래스하고 한다면

공통기능을 표현하는 방법이 Aspect라고한다

Aspect도 클래스이다.


상속은 부모자식간에 결합이 높고 그외 방식은 코드가 어렵고 반복으로 사용되는대 이것에 대안으로 Aspect안에 공통 기능을 정의하고 새롭게 만드는 특성을 변경하지않고 해당 기능을 어떻게 어디에 적용할지 선언적으로 정의한다.

 = > 문제를 바라보는 관점에 따라 "핵심관심사항" 과 "횡단관심사항" 으로 분리하여 개발하는 것이 아니라 횡단 관심사항을 핵삼관심사항에 투명하게 주입하는 새로운 프로그래밍 개발 모델이다.


- 핵심관심

주로 작업하는 업무기능을


 - Aspect

횡단관심사를 적용하려는 소스코드의 위치를 모아둔것

시점, 위치(지점)

밑의 모든 내용을 포함


 - Joinpoint

메소드단위로 실행

스프링은 메소드 joinpoint만 지원한다.

aop라는게 원래 있는대 3가지 방식이있는대 스프링 AOP는 메소드 joinpoint만 지원한다.

3가지 방법

필드

메소드

컴파일시


 - Advice

joinpoint에서 실행되는 코드(실제 횡단관심사가 적용되는것)

어느시점에 적용되는지에 대한 정보를 가지고 있다.

기능 + 시점


 - Pointcut

지점을 나타낸다.

어드바이스들이 실행될 메소드의 위치


 - 스프링의 실행시 advice구성

Aspect들은 Spring이 관리하는 빈(bean)에 실행시 proxy 클래스와 함께 감싸서(wrapping)구성됨

별도로 구성된 proxy가 횡단관심 코드에 접근할때 요청을 가로채서 Advice를 호출한후에 원래 요청을 수행한다.


 - Advice

5가지 시점이 있다.

Before : 메소드 앞에서 실행

After : 메소드 뒤에 실행

AfterReturning : 메소드가 정상 종료한 다음에 실행

Around : 앞뒤에 실행

AfterThrowing : 예외가 발생했을때 실행


xml 설정 기반 AOP 구현

@Aspect 애노테이션 기반의 AOP구현

두가지 방법이 있다.


Aspect 지정시 execution지정자 패턴

접근제한자 / 리턴타입 / 패키지명 + 클래스명 + 메서드명 / 매게 변수 형식으로 구성되어있다.

모든이라는 표현은 * 와 (..)가 있다.


 - Spring MVC

특정 기술이나 방식에 얽매이지 않으면서 "웹 프레젠테이션 계층"의 다양한 기술들을 조합하거나 확장해서 사용할 수 있는 매우 유연하고 확장성이 뛰어난 웹 애플리케이션 개발의 기본틀을 제공한다.


 - FrontController

1. Dispatcher Servlet에서 모든 http요청을 받는다.

2. 세부컨트롤러를 요청

3. 모델 생성

4. 모델 & 뷰 를 프론트 컨트롤러에 반환

5. 모델을 뷰에 넘겨주고

6. 모델을 담은 뷰를 생성해서 반환해서

7. http 응답해준다.


Spring MVC 요청 처리 순서

 - DispatcherServlet이 요청을 수신

단일 Front Controller Servlet에서 요청을 수신하여 처리를 다른 컴포넌트에 위임할때

Handler Mapping에서 세부 컨트롤러에 대한 정보를 URL과 맵핑하여 세부 컨트롤러에 위임한다.


디스패치 서블릿을 설정

web.xml에 등록


2.5 방식을 통한 스프링 컨트롤러 호출방식 예제로 이해해보기


Posted by moyaiori
,