Junit4 

import static org.assertj.core.api.Assertions.assertThatThrownBy;
...
assertThatThrownBy(()->Integer.parseInt("One")).isInstanceOf(NumberFormatException.class);

 

Junit5

import org.junit.jupiter.api.Assertions;
...
Assertions.assertThrows(NumberFormatException.class, () -> {
      Integer.parseInt("One");
    });
규칙 없음
국내도서
저자 : 리드 헤이스팅스,에린 마이어 / 이경남역
출판 : 알에이치코리아(RHK) 2020.09.08
상세보기

넷플릭스는 세계적으로 엄청난 성공을 거두고 있다.

거의 모든 티비나 인터넷 티비에 필수적으로 들어가 있으며 

초기에 국내 들어왔을 때와  달리 국내 프로그램도 많기 때문에

이제는 넷플릭스만 보고도 영화나 티비 프로그램이 모두 충족되는 느낌이다 

그런데 그 보다 궁금했던 특이한 넷플릭스의 문화가 궁금했다.  

사내 규칙이 없다는 것이다.  F&R (freedom 과 Responsibility?) 자유와 책임 어떻게 정착시켰는지가 궁금했다. 

책에는 이런 문화를 단계적으로 어떻게 적응시켰고 세계화를 시킨 부분에 대한 일화가 자세히 나와있었다. 

그런 문화는 국내에서는 불가능이라고 생각하는 사람이 많은데 

창의성이 필요한 분야 한에서 충분히 적용해 볼만하다고 생각한다. 

또한 피드백의 중요성에 대해서도 생각할 부분이 많았다. 

개발 서적은 아니다...  편하게 읽을 수 있다. 

피드백을 할 때 주의할 점 4가지를 알려준다 참고할만하다

AIM TO ASSIT (도움을 주겠다는 생각으로 하라)

ACTIONABLE (실질적인 조치를 포함하라)

APPRECIATE (감사하라)

ACCEPT OR DISCARD (받아들이거나 거부하라)

 

조금이라도 정적인 자원들에 대해서 빨리 로딩하는 방법이 없을까 고민하고 있었는데  우연히 정적 리소스에 대한 cache와 compress를 보았다. 그래서 한 번 테스트 해볼까 한다. 

Cache 

application.json 에 아래 내용을 추가한다. (초단위 60x60x10 = 10시간) -> 테스트시간임

spring.resources.cache.period=36000

처음 호출 

처음 호출했을 경우 200과 함께 사이즈 시간을 볼 수있다. 

새로고침 을 누르고 다시 조회 보면 304 와 함께 max-age를 통해 캐쉬가 됨을 확인

사이즈와 시간이 줄어듬을 확인

처음 호출 이후에 지정된 시간까지 캐쉬를 통해 절약할 수 있음 알았다. 

자바소스에서는 WebMvcConfigurer 를 implements 하여 쓸 수 있다. 

registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/")
                .setCachePeriod(36000)
        ;

Compress

압축을 해보자 . application.json 에 다음을 추가하자

server.compression.enabled=true
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript
server.compression.min-response-size=2048

그리고 호출 

압축 안함
압축 이후에 시간 사이즈와 시간 비교이다 
gzip으로 압축됨을 표시

네트워크 환경에 따라서 속도는 다르게 나올 수 있다 하지만 사이즈가 엄청 크거나 로딩이 느리다면

고민해서 활용을 해보면 좋을 것 같다

1. 우분투 사이트에서 라즈베리 파이용 파일은 다운 받는다 

https://ubuntu.com/download/raspberry-pi   

라즈베리 파이용 우분투를 다운 받을 수 있다. 

18.04.4 LTS 버전으로 다운 받는다. 

2. Micro SD 카드에 이미지를 레코딩 한다. 이미지 레코드는 Balena Etcher를 사용한다. 

https://www.balena.io/etcher/   

ubuntu 압축 파일은 micro SD 에 넣어줌 

3. 라즈베리파이에 메모리를 꽂고 시작 ... 아이디 ubuntu 비밀번호 ubuntu 로 시작한다

sudo apt-get install openssh-server

환경설정을 바꾸려면 

vi /etc/ssh/sshd_config

해주고 아래 명령어로 적용 

sudo service ssh restart

 

아나콘다를 설치하고 주피터를 실행 중에 모듈이 없다고 나와서 파이썬 버전이 안 맞아서 그런 것이라고 생각했다. 

python --version 을 선택했을때 2점대 버전이 나왔다. 3점대를 설치했는데도 말이다. 

인터넷을 검색하다 파이션 버전을 선택할 수 있는 방법이 있었다.

일단 맥포트를 설치해야 했다.  (https://www.macports.org/install.php) (이후 터미널 재시작)

1. python_select를 설치한다. 

sudo port install python_select

2. 설치할 수 있는 파이썬을 확인한다.

port search python

3. 원하는 버전을 설치한다.

sudo port install python37

4. 파이선 3.7를 선택한다. 

sudo port select --set python python37

5. 제대로 설치가 되어있는지 확인한다. 

port select --list python

python --version

PIP

pip도 바뀐다

$ sudo port install py37-pip
$ sudo port select --set pip pip3

* 쥬피터는 그래도 모듈이 없다고 나왔다. 쥬피터에서는 다른 파이썬을 보고 있었다. 

  /Users/[계정]/anaconda3/bin 에서 실행해야 함
$ /Users/abc/anaconda/bin/python -m pip install ipykernel
$ /Users/abc/anaconda/bin/python -m  ipykernel install
netstat -antp | grep 포트
@Bean 
UiConfiguration uiConfig() { 
	return UiConfigurationBuilder.builder() 
    .docExpansion(DocExpansion.LIST) // or DocExpansion.NONE or DocExpansion.FULL 
    .build(); 
}

source : http://springfox.github.io/springfox/docs/current/#springfox-swagger2-with-spring-mvc-and-spring-boot

 

Springfox Reference Documentation

The Springfox suite of java libraries are all about automating the generation of machine and human readable specifications for JSON APIs written using the spring family of projects. Springfox works by examining an application, once, at runtime to infer API

springfox.github.io

swagger (2.6.1)버전이 다른 경우 

@Bean
public UiConfiguration uiConfig() {
	return new UiConfiguration(
                null,
                "list",
                "alpha",
                "schema",
                UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS,
                false,
                true,
                null
        );
}

 

+ Recent posts