728x90
반응형

컴퓨터 하드 드라이브를 나누는 이유는 몇가지 있습니다. 가장 중요한 이유를 말하라면 백업과 대용량 저장공간으로 사용 할수있기 때문입니다. 예를들어서 저가 포맷을 해야돼요, 그리고 필요한 문서, 게임, 음악, 영화등 파일들을 포맷한 후에도 가지고 있고싶네요. 그러면 파티션을 A와 B로 나눕니다. 그후, 필요한 문서, 게임, 음악, 영화등 파일들을 파티션 B에 넣고 파티션 A만 포맷합니다. 그러면 포맷후에도 모든 문서, 게임, 음악, 영화등 파일들을 고대로 가지고 있을수 있습니다. 

하드 드라이브 파티션 합치기는 http://commmang.tistory.com/39에서 보시면 될듯 싶습니다.

추천 한번만 눌러주세요^^. 하나하나가 큰 힘이됩니다.ㅎㅎ


-나누기 방법-

일단 파티션을 나눌 하드 한놈을 고릅니다. 하드가 한개밖에 없어도 괸찮습니다. 저는 로컬 디스크 D를 파티션 나누겠습니다.


시작>컴퓨터>우클릭(오른쪽 클릭)>관리로 들어갑니다.


옆 카테고리에서 저장소를 찾은후 화살표를 누르면 밑에 디스크 관리가 나옵니다. 클릭하세요.


디스크 D를 찾아보세요. (D:)가 그것입니다.


(D:)위에서 우클릭을 해주세요. 그후 볼륨 축소를 누르세요.


기다려 주세요~


짠! 볼륨 축소를 합니다. 축소할 공간 입력에 숫자를 쳐주세요. MB입니다. 1000MB=1GB

100기가를 원하시면 1000MB X 100 = 100000


보시면 300기가였던 하드가 200기가와 100기가로 나누어 있습니다. 200기가는 옛날 디스크가 축소되있는겁니다. 모든 파일들은 안전하며 지워지지 않습니다. 100기가 위에 검은색 줄이 보일겁니다. 아직 사용할수 없다는겁니다. 이것을 할당뵈지 않음이라고 합니다. 이제 사용 가능하게 만들어야되겠죠?


이제 할당뵈지 않은 용량위에 마우스를 댄후 우클릭을 하세요. 그후 새 단순 볼륨을 클릭하세요.


그냥 여기부턴 다음만 계속 누르세요.ㅎㅎ






여기서 볼륨 레이블을 정해주세요. 아무거나 괸찮습니다. 이름을 안지어도 됩니다. 다음 누르세요.


마침!


올 이제 주 파티션 이네요


아주좋아! 성공!


보시다싶이 300기가짜리 D드라이브를 200/100으로 나누었습니다.



출처: http://commmang.tistory.com/entry/엄청-쉬운-윈도우7-하드-파티션-나누기 [COMMANG]

728x90
반응형

'끄적끄적..' 카테고리의 다른 글

삼성 노트북 FN키 화면조절 안될 때  (0) 2018.09.06
컴퓨터 부팅 속도 향상  (0) 2018.09.06
직장인 투잡으로 돈벌기  (0) 2018.09.05
네오 App 사용법  (0) 2018.09.04
구글 검색 원리  (0) 2018.09.04
728x90
반응형

MVC Pattern

  • 사용자 인터페이스를 구성하는 대표적인 Pattern
  • MVC - Model / View / Controller

Model

  • 데이터
  • 상태
  • 비즈니스 로직이 포함이 되어있다.

View

  • 표현
  • 실제 유저 인터페이스
  • 최대한 로직이 포함이 되어있지 않아야 된다

Controller

  • View를 적절하게 생성 또는 업데이트한다.
  • Model의 상태를 변경을 할수가 있다.

일반적인 웹에서의 MVC


728x90
반응형
728x90
반응형

람다 아키텍처

LA overview
  1. new data, batch layer와 speed layer로 데이터가 들어온다.
  2. batch layer, batch layer는 2가지가 존재를 한다. 데이터를 저장하는 저장소 (append-only, immutable)와 view를 위해 미리 처리된(pre-complete)로 구별이 된다.
  3. serving layer, low latency와 adhoc 쿼리에 대한 뷰를 제공을 한다.
  4. speed layer, 최근 데이터와 대한 high latency의 update를 제공을 한다.
  5. query, batch view, realtime view를 통해 결과를 얻을수가 있다. 

Speed Components

  • Apache Storm
  • Apache Spark Streamming
  • Apache Samaza
  • Apache S4
  • Spring XD
  • AWS Kinesis
  • Google Cloud Dataflow

Real-time view

  • redis
  • mysql

Serving Components

  • HBase
  • ElephantDB
  • SploutSQL
  • ElephantDB
  • Druid
  • S3
  • HDFS

Batch view

  • cassandra
  • hbase
  • hive
  • presto
  • AWS Athena

Batch Components

  • Hadoop
  • mapReduce
  • Spark
  • Hive
  • Spark SQl
  • Pig
  • Spork
  • Cascading/Scalding
  • Cascalog
  • Crunch/SCrunch
  • Pangool

Reference

  • http://lambda-architecture.net/


728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

logback 설정 maxHistory  (0) 2021.03.31
NumberUtils.max()  (0) 2018.09.13
java Generic  (0) 2018.09.05
TDD 테스트 주도 개발방법론  (0) 2018.09.04
클래스 정보 가져오기 - 리플렉션  (0) 2018.09.04
728x90
반응형

Class generic example

public class GenericsType<T> {

private T t;
public T get(){
return this.t;
}
public void set(T t1){
this.t=t1;
}
}

Method generic example

public static double sum(List<? extends Number> list){
double sum = 0;
for(Number n : list){
sum += n.doubleValue();
}
return sum;
}
}


Interface generic example

public interface Comparable<T> {
    public int compareTo(T o);
}




Wildcard

  • Optional 같이 wrap이 되어있는 값들을 리턴할때 실제로 들어가 있는 값이 subclass이라고 해도 type cast이 되지 않는다. 이럴때에는 wildcard를 사용하여 문제점을 해결할수 있다.


class A {}


class B extends A {}


interface Sup { Optional<? extends A> a(); }


interface Sub extends Sup { Optional<? extends B> a(); }



728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

NumberUtils.max()  (0) 2018.09.13
람다 아키텍처  (0) 2018.09.05
TDD 테스트 주도 개발방법론  (0) 2018.09.04
클래스 정보 가져오기 - 리플렉션  (0) 2018.09.04
JSTL에서 LIST Size  (0) 2018.09.04
728x90
반응형

스프링 RestTemplate 사용

서버에 요청을 하면 XML 형식으로 응답하는 서버와 HTTP 프로토콜을 이용해서 통신할때 스프링 RestTemplate을 이용해서 처리하는 방법 정리. 
XML로 응답하는 서버에 GET 으로 요청을 하였다.

RestTemplate

기존에 HttpClient를 이용해서 다른 서버에 Http 요청을 해서 사용했는데, 스프링 프레임워크에서 간단히 사용할 수 있게 추상화 시켜놨다. json이나 xml형태의 응답을 쉽게 객체로 바꾸어 사용할 수 있다.
없었을때는 HttpClient 라이브러리를 생성하고, 서버에 요청한 후에 응답 값을 직접 json, xml 라이브러리를 사용해서 컨버팅 했는데, RestTemplate을 이용한 후에는 그럴 필요가 없어졌다.

사용

RestTemplate 객체를 만들고, 요청하려는 URI과 응답받을 객체를 만들어서 getForObject 등의 메소드를 호출한다.

1. RestTemplate 객체 생성

  • 기본 생성
        RestTemplate restTemplate = getRestTempalte();
  • 추가로 timeout 설정을 할때
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setReadTimeout(1000 * 60 * 5);  // 5분
        factory.setConnectTimeout(5000);
        RestTemplate restTemplate = new RestTemplate(factory);

2. URI 생성

스프링에서 제공하는 UriComponentsBuilder를 이용하면 체이닝 방식으로 보기 좋게 URI를 만들 수 있다.

        URI uri = UriComponentsBuilder.newInstance().scheme("http").host("docuconv.claztec.net")
                .path("/cgi/{type}")
                .queryParam("path", file.getDownloadUrl())
                .queryParam("realname", file.getName())
                .queryParam("servicecode", file.getServiceCode())
                .queryParam("useragent", file.getUserAgent())
                .queryParam("charset", file.getCharset())
                .queryParam("format", file.getOption())
                .build().expand(file.getType())
                .encode()
                .toUri();
  • path 에 {type} 의 값은 expand() 의 매개변수와 매칭이 된다.
  • queryParam 은 요청하는 파라미터를 넣어주고, 마지막에 encode()를 해준다.
    소프트웨어 중심에 존재하는 복잡성에 도전장을 내밀다 라는 문자열은 %EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EC%A4%91%EC%8B%AC%EC%97%90%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%20%EB%B3%B5%EC%9E%A1%EC%84%B1%EC%97%90%20%EB%8F%84%EC%A0%84%EC%9E%A5%EC%9D%84%20%EB%82%B4%EB%B0%80%EB%8B%A4로 변한다.
  • 참고로 브라우저 콘솔창에서 자바스크립트의 decodeURI(), encodeURI()로 간단히 encode, decode 해볼 수 있다.
decodeURI('%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EC%A4%91%EC%8B%AC%EC%97%90%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%20%EB%B3%B5%EC%9E%A1%EC%84%B1%EC%97%90%20%EB%8F%84%EC%A0%84%EC%9E%A5%EC%9D%84%20%EB%82%B4%EB%B0%80%EB%8B%A4')
"소프트웨어 중심에 존재하는 복잡성에 도전장을 내밀다"
encodeURI('소프트웨어 중심에 존재하는 복잡성에 도전장을 내밀다')
"%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EC%A4%91%EC%8B%AC%EC%97%90%20%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94%20%EB%B3%B5%EC%9E%A1%EC%84%B1%EC%97%90%20%EB%8F%84%EC%A0%84%EC%9E%A5%EC%9D%84%20%EB%82%B4%EB%B0%80%EB%8B%A4"
  • 마지막으로 toUri()로 URI 형태로 변환한다.

3. Object 생성

  • 응답 XML
<?xml version="1.0"?>
<result>
<code>200</code>
<url>http://docuconv.claztec.net/3/1440052137_98391fc84281414c9a33c1cda3a44c50/0.htm</url>
<msg></msg>
<loss>false</loss>
</result>
  • XML을 java 객체로 표현 XmlRootElement 아래로 XmlElement로 구조를 잡아준다. 자동으로 만드는 방법도 있지만, 불필요한게 많이 생긴다. 하나하나 해주는 방법이 더 나은 것 같다.
@XmlRootElement(name = "result")
public class Result {
    @XmlElement
    private Integer code;

    @XmlElement
    private String url;

    @XmlElement
    private String msg;

    @XmlElement
    private Boolean loss;

    public Integer getCode() {
        return code;
    }

    public String getUrl() {
        return url;
    }

    public String getMsg() {
        return msg;
    }

    public Boolean getLoss() {
        return loss;
    }
}

4. 요청

        Result result = restTemplate.getForObject(uri, Result.class);

코드

ConvertService.java

@Service
public class ConvertService {

    private RestTemplate getRestTempalte() {
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setReadTimeout(1000 * 60 * 5);  // 5분
        factory.setConnectTimeout(5000);
        RestTemplate restTemplate = new RestTemplate(factory);
        return restTemplate;
    }

    public Result convert(String downloadUrl) {
        RestTemplate restTemplate = getRestTempalte();
        URI uri = UriComponentsBuilder.fromHttpUrl(downloadUrl).build().toUri();
        Result result = restTemplate.getForObject(uri, Result.class);
        return result;
    }

    public Result convert(File file) throws UnsupportedEncodingException {
        RestTemplate restTemplate = getRestTempalte();
        URI uri = UriComponentsBuilder.newInstance().scheme("http").host("docuconv.claztec.net")
                .path("/cgi/{type}")
                .queryParam("path", file.getDownloadUrl())
                .queryParam("realname", file.getName())
                .queryParam("servicecode", file.getServiceCode())
                .queryParam("useragent", file.getUserAgent())
                .queryParam("charset", file.getCharset())
                .queryParam("format", file.getOption())
                .build().expand(file.getType())
                .encode()
                .toUri();
        Result result = restTemplate.getForObject(uri, Result.class);
        return result;
    }
}

ConvertServiceTest.java

    @Autowired
    private ConvertService convertService;

    @Test
    public void testConvert() throws UnsupportedEncodingException {
        File file = new File();
        file.setDownloadUrl("http://cloud.tools.com/p/file/20110619.ppt");
        file.setName("소프트웨어 중심에 존재하는 복잡성에 도전장을 내밀다");
        file.setExtension("ppt");

        Result result = convertService.convert(file);
        assertNotNull(result);
        assertThat(200, is(result.getCode()));
        log.debug("url:" + result.getUrl());
    }


728x90
반응형

'Web Programming > spring' 카테고리의 다른 글

Failed to determine a suitable driver class  (0) 2020.06.29
spring resttemplate timeout  (0) 2018.09.05
@ResponseBody @RestController  (0) 2018.09.04
No mapping found for HTTP request with URI  (0) 2018.09.04
BeanCreationException  (0) 2018.09.04

+ Recent posts