오프라인상태 windows server에서 redis설치.

서버:  windows Server 2019

1. WSL 활성화

1.1 wsl 활성화 :  dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

1.2 vm 활성화: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

1.3 윈도우 서버 재부팅

2. Ubuntu 설치(Ubuntu_2204.1.7.0_x64)

2.1 Ubuntu_2204.1.7.0_x64.appx -> Ubuntu_2204.1.7.0_x64.zip 확장자 변경 및 압출풀기

2.2 Ubuntu_2204.1.7.0_x64/Ubuntu.exe 실행

2.3 Ubuntu 계정설정

3. Ubuntu 파일 옮기기

3.1 /home/{user}/redis에 redis-stable.tar.gz파일 복사(cli에서 explorer.exe . 실행 시 ubuntu 폴더 열림)

3.2 \var\cache\apt\archives 에 .deb파일 복사(.deb파일은 인터넷되는 pc에서 redis 설치 진행 과정 그대로 따라한 후 \var\cache\apt\archives  폴더에 생성되는 .deb 파일 모두 복사해서 offline windows server로 가져온 상황)

3.3 Ubuntu 재기동 후 redis-stable.tar.gz 및 archives 파일 정상 접근가능한지 확인 및 권한주기

3.4  \var\cache\apt\archives경로에서 dpkg -i *.deb(패키지 수동설치) 

4. Redis 설치

4.1에서 압축을 푼  /home/{user}/redis/redis-stable 경로에서 make명령어 수행(/home/{user}/redis/redis-stable/src를 complile. 이때 필요한 ubuntu package는 make, build-essential)

4.1.1 make 명령어 안되는 경우 make 패키지 제대로 설치 x

4.1.2 make 명령어 수행중 adlist.o 오류 -> gcc 패치키 제대로 설치x

4.1.3 make 명령어 수행중 jemalloc 오류 -> make distclean 실행 후 make 명령어 재실행

4.2 /home/{user}/redis/redis-stable/utils경로에서 sh install_server.sh 실행

4.2.1 셋팅값 설정(전부 default. executable path  아래 경로 설정해줌)

Please select the redis port for this instance: [6379]

Please select the redis config file name [/etc/redis/6379.conf]

Please select the redis log file name [/var/log/redis_6379.log]

Please select the data directory for this instance [/var/lib/redis/6379]

Please select the redis executable path [] /home/{user}/redis/redis-stable/src/redis-server

5.Redis실행

/redis/redis-stable/src경로 redis-server 실행

 

프로젝트 초기 셋팅을 위해

yarn intall --offline 진행 중 unable to verify the first certificate 오류 발생

yarn-error.log 내용

 Error: unable to verify the first certificate

      at TLSSocket.onConnectSecure (_tls_wrap.js:1501:34)

      at TLSSocket.emit (events.js:315:20)

      at TLSSocket._finishInit (_tls_wrap.js:936:8)

      at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:710:12)

 

해결방법

yarn config set strict-ssl false -g 

프로젝트 중 

소스에 이상이 없는데 0 line

Internal compiler error: Classcast exception에러가 뜬다. 

내가 알아본 결과는 lombok과 eclipse사이의 호환성 문제였다.

해결책1. lombok버전 맞추기 ex) 1.16.20 -> 1.16.18

해결책2. @Getter, @Setter등 lombok 어노테이션 제거. 특히 @Getter, @Setter관련 문제라 @Data로 바꾸면 된다는 글도 있었지만, 해당 소스 담당자는 Getter, Setter를 직접 선언해서 했다.

 

if (list != null || list.size() > 0) {

 ...

} else {

 ...

}


프로젝트중 이런 코드를 사용하는 것을 발견...

list의 null여부를 체크하고 있는데, 위의 코드는 list가 []로 선언되어 있으면, 뒤의 list.size() > 0 조건은 판단하지 않고, true영역의 코드를 실행 시킨다.

이미 알고는 있었지만, 이를 단축평가(short-circuit)라고 부르는지는 처음 알았다.

결과적으로,

OR연산자를 사용할 땐 true를 리턴할 가능성이 높은 조건을 첫 번째로 작성하고,

AND연산자에선 false를 리턴할 가능성이 높은 조건을 조건을 첫번째로 작성하면 좋다.


이를 이용해 이런식으로도 표현 가능


return name || "없으면 이것";


|| 로 묶여 있어서 앞의 name이 존재한다면 name을 return하고, 뒤의 조건은 신경쓰지 않는다.

name이 없으면 뒤의 string은 무조건 true이므로 "없으면 이것"을 반환한다.



엘리먼트를 조건부로 표시하기 위한 또 다른 옵션은 v-show 디렉티브이다. 사용법은 v-if와 거의 동일

차이점은 v-show가 있는 엘리먼트는 항상 렌더링 되고 DOM에 남아있다.

v-show는 단순히 엘리먼트에 display CSS 속성을 토글한다.

일반적으로 v-if는 토글 비용이 높고 v-show는 초기 렌더링 비용이 더 높다. 

매우 자주 바꾸기를 원한다면 v-show를, 런타임 시 조건이 바뀌지 않으면 v-if

함수 하나가 하나의 기능만 담당.

ex) input 내용입력하고 추가 버튼에서 addInputContents를 하고, input을 비워주는 input = "'을 만들 수 있다.

하지만 단일 책임 원칙 디자인 패턴에 의해 input=""대신 clearInputContents라는 메소드를 만들어 디자인 패턴을 만족 시킬 수 있음.

springBoot프로젝트를 진행하다가 임시 서버로 가동하는 노트북에 web Access를 할 일이 있었다.

방화벽도 풀고, 이것저것 설정을 다했는데 사이트에 연결할 수 없음(localhost에서 연결을 거부했습니다.)이 뜬다.

이 경우 프로젝트에서 오류Log도 뜨지 않아서 어디가 문제인지 몰랐다.

그러다 localhost:8080를 지우고 127.0.0.1:8080으로 접속했는데 거부당해서 방화벽 문제가 아닌것을 알았다.

문제는 application.yml의 server.address 설정 문제였다.(일반 스프링 프로젝트에서는 tomcat 설정파일에 있음.)

여기에 localhost라고 선언을 했기 때문에 같은 의미인 127.0.0.1:8080은 접속이 안됐다.

만약 127.0.0.1로 접속하려면 server.address를 127.0.0.1로 바꿔 줘야 한다. 

혹은 다른 노트북에서 접근하려면 localhost, 127.0.0.1가 아닌 자신의 ip주소를 적어주면 된다.

-스프링부트 프로젝트를 보다가 같은 프로젝트 내에서 model객체의 기본 셋팅이 모두 달랐다.

1. getter,setter,생성자까지 모두 수동으로 만든사람

2. @Getter @Setter만 만들고 생성자는 직접만든사람

3. @Data를 이용한 사람

뭔가 통일하고 싶은 마음에 정확한 어노테이션의 사용법을 알아본다.

 

@Getter, @Setter - 필드 단위, 클래스 단위 모두 가능.

@NoArgsConstructor - 파라미터가 없는 생성자 생성. @NotNull 선언 필드 생성x

@RequiredArgsConstructor - 필수인자 

@AllArgsConstructor - 모든 필드 값을 파라미터로 받는 생성자 생성. @NonNull 선언시 Null 검사함.

@ToString - toString()메소드 생성

@EqualsAndHashCode - equal(), hashCode() 메소드 생성.

@Data - Getter + Setter + RequiredArgsConstructor + ToString + EqualsAndHashCode 모두 적용됨 

 

참고자료

https://projectlombok.org/features/constructor

+ Recent posts