일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dbeaver
- nginx
- JPA
- Spring
- BPMN
- maven
- Windows
- springboot
- Java
- mybatis
- nodejs
- intellijIDEA
- NCP
- Kubernetes
- wildfly
- jetbrains
- VSCode
- JavaScript
- gradle
- docker
- database
- useEffect
- tibero
- log4j2
- LOG4J
- MySQL
- gson
- IntelliJ
- react
- Git
- Today
- Total
목록분류 전체보기 (237)
두 손끝의 창조자
프로젝트에 루트에서 다음과 같은 파일을 찾아서 초기화 시 실행한다. schema.sql data.sql schema-${platform}.sql data-${platform}.sql ${platform} 은 spring.datasource.platform 의 값을 사용한다. spring.datasource.initialization-mode 속성을 always 로 설정한다. JPA를 사용한다면 spring.jpa.hibernate.ddl-auto 속성을 none으로 해야 테이블 자동 생성등을 비활성한다. 이런 방법은 sql이 DATABASE에 따라 변경이 필요할 수 있다. @PostConstruct 애노테이션으로 메소드를 지정하면 스프링 컨텍스트가 모두 로드 된 후 해당 메소드를 실행하기 때문에 데이터 ..
spring boot 를 사용하면 application.properties 에 속성을 설정하여 @Value 애노테이션으로 참고하여 사용할 수 있다. 인텔리제이 유료버전에서는 속성값 검증이 어느정도 되는데 프로퍼티 작성시에 자동 완성 기능이 동작하지는 않는다. 속성에 대한 구조, 항목을 클래스로 정의하고 appication.properies 에 정의할 때 자동 완성 기능을 할 수 있도록 해보자. spring-boot-configuration-processor 추가 annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' 프로퍼티 클래스 정의 @ConfigurationProperties(prefix = ..
1. Docker 그룹 생성 sudo groupadd docker Docker를 sudo 없이 실행하기 위해 docker 그룹을 생성한다. 이 그룹은 Docker를 사용할 수 있는 권한을 부여하는 데 사용된다. 2. 유저를 Docker 그룹에 추가 sudo usermod -aG docker [userid] 위 명령어에서 [userid]를 실제 사용자ID로 바꿔서 실행한다. 이 명령어는 특정 사용자를 docker 그룹에 추가한다. 3. 시스템 재부팅 sudo systemctl reboot 사용자를 docker 그룹에 추가한 후, 변경 사항을 적용하기 위해 시스템을 재부팅한다.
네이버 클라우드 플랫폼에서 Kubernetes을 사용한다면 인그래스를 이용하여 https를 적용할 수 있다. 적용하려면 pod를 NodePort으로 노출시키고 인그래스 리소스를 이용해서 로드밸랜서를 생성한다. 인그래스 컨트롤러 설치 인그래스를 사용하려면 인그래스 콘트롤러(파드와 유사함)를 설치하고 인그래스 리소스로 노드포트 서비스와 연결한다. kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/install/pub/install.yaml 위 구문을 실행하면 그냥 설치된다. 노드포트 서비스 생성 apiVersion: v1 ..
Application LoadBalancer를 추가하면 어플리케이션단에서 별도 HTTPS 설정없이 간편하게 HTTPS를 적용할 수 있다. 그러기 위해 해야할 두 가지 작업을 해야한다. 인증서 등록 LoadBalancer에 리스너 추가 인증서 등록 Certificate Manager 에서 인증서를 등록할 수 있다. 인증서를 등록하기 위해서는 Private Key, Certificate Body, Certificate Chain 을 넣어줘야한다. 텍스트를 넣을 때는 순수 텍스트만 들어가도록 유의한다. 인증서 발급기관에서 받은 개인키를 복사해서 Private Key 넣는다. 인증서 발급기관에서 받은 인증서 내용을 복사해서 Certificate Body에 넣는다. Certificate Chain 에는 상위 발급..
온프레미스에서 도커로 서비스하던 레드마인을 NCP로 이관하면서 수행한 내용 기록. 쿠버네티스는 NCP 서비스 사용(Master Node). 백업 데이터 베이스 redmine-postgres 컨테이너에서 데이터를 덤프한다. legacy-host>docker exec -it redmine-postgres redmine-postgres_container>/usr/bin/pg_dump -U redmine -d redmine -Fc --file=redmine.sqlc redmine # U=user, d=database 💡 host에 psql이 설치되어 있다면 호스트에서 덤프를 한다. psql -h [legacy-host-ip] -U redmine -d redmine -p [DB포트] 덤프한 파일을 호스트로 가져온..
nginx.conf 에 백엔드 서비스의 주소를 명시적으로 할 필요없이 서비스 이름을 지정하여 간접적으로 지정할 수 있다. server { listen 80; error_log /var/log/nginx/error.log; location /api { proxy_pass http://backend-service.default:3001; } location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } include /etc/nginx/extra-conf.d/*.conf; }/api로 요청하는 url에 대하여 backend-service 클러스터IP로 연계하는 설정이다. 내 ..
인텔리제이는 특정 확장자에 대해서 OS단에 연결된 프로그램으로 실행시키는 기능을 제공한다. OS단에서 연결된 프로그램과 연결 Settings -> Editor -> File Types 에서 Files opened in associated applications File name patterns에 *.bpmn 추가 이제 해당 파일을 더블클릭하면 연결된 프로그램이 열리면서 해당 파일을 볼수 있다. 단, 미리 OS에 연결프로램으로 등록을 해야한다. 장점 : 쉬운 파일 열기 단점 : 인텔리제이 검색기에서 내부 내용 검색을 하지 않아 운영시 불편 인텔리제이에서 외부 프로그램 연결 외부 프로그램 등록 Settings -> Exteranl Tools 에서 신규 추가 프로그램 위치에 맞게 수정한다. 파일 타입 TEXT..
다운로드 CLI 다운로드 실행 jar 파일로 만들어져있는데 ncloud 스크립트로 실행하면 된다. 다운로드 패키지내에 jre가 포함되어 있지만 사용을 원치 않으면 ncloud 스크립트를 변경한다. java -jar ${HOME}/ncloud-api-cli-1.0.2-SNAPSHOT-jar-with-dependencies.jar 인증키 설정 ncloud configure 을 실행하면 Access Key와 Secret Key를 입력하라고 뜬다. 키를 각 입력하면 클라우드 API 주소를 입력하라고 뜨는데 그냥 엔터처서 디폴드로 넣는다. 해보기 ncloud server getRegionList 참조 https://cli.ncloud-docs.com/docs/guide-userguide
kubectl 설치 brew install kubectl파워쉘 ncp-iam-authenticator 설치 brew tap NaverCloudPlatform/tap brew install ncp-iam-authenticator기타 OS ncp-iam-authenticator API 인증키값 설정 OS 환경변수 설정 export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE export NCLOUD_API_GW=https://ncloud.apigw.ntruss.comncp-iam-authenticator update-kubeconfig 명령 사용 ncp-iam-aut..
특정 문자열을 간편하게 인코딩 디코딩 하려면 인코드 커맨드 echo "문자열" | base64 결과 66y47J6Q7Je0Cg==디코드 커맨드 echo "66y47J6Q7Je0Cg==" | base64 --decode 결과 문자열
$i=0; while($true) { %{$i++; write-host -NoNewLine "$i $_" } (Invoke-RestMethod "http://192.168.1.11")-replace '\n', " " }
pod 목록 kubectl get pods자세히 보기 kubectl get pod -o wide커스텀 컬럼 kubectl get pods -o=custom-columns=NAME:.metadata.name,ID:.status.podIP,STATUS:.status.phase,NODE:.spec.nodeName 커스텀 컬럼 항목 살펴보기 kubectl get pod echo-hname-7894b67f-6rtn7 -o yaml pod 삭제 kubectl delete pods nginx-pod디플로이먼트 삭제 kubectl delete deployment dpy-nginx디플로이먼트 상태 보기 kubectl describe deployment rollout-nginxpod 의 쉘 들어가기 kubectl exec..
스프링부트 2.7.13 기준 버전 세팅 다운로드 https://www.h2database.com/html/main.html 2.1.214 버전 다운로드 압축 해제 후 h2/bin/h2.bat 실행 linux, mac은 h2.sh 실행 실행전 실행권한 추가 chmod +x h2.sh 설정 DB 명을 cop-oasis라고 하였을 때 최초 실행시 JDBC URL : jdbc:h2:~/cop-oasis DB 생성 후 ~/cop-oasis.mv.db 파일 생성됨 다음부터는 JDBC URL : jdbc:h2:tcp://localhost/~/cop-oasis ~/cop-oasis.mv.db 생성 확인
기본값으로 포함되어 있는 logging 모듈을 제외시킨다. configurations { configureEach { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' } } log4j2 SpringBootStart를 의존성에 추가한다. implementation 'org.springframework.boot:spring-boot-starter-log4j2'
$directories = Get-ChildItem -Directory | Sort-Object { try { $_ | Get-ChildItem -Recurse -Force -ErrorAction Stop | Measure-Object -Property Length -Sum | Select-Object -ExpandProperty Sum } catch { 0 } } -Descending foreach ($directory in $directories) { try { $size = Get-ChildItem -Recurse -Force -LiteralPath $directory.FullName | Measure-Object -Property Length -Sum | Select-Object -ExpandPr..
React.memo export default React.memo(Left);형태로 정의하면 이전 props와 현재 props를 비교하여 값의 변화가 없으면 Left 컴포넌트를 다시 호출하지 않아 불필요한 리프레시를 방지한다. props에 매우 많은 값이 들어있으면 비교하는것 자체가 부하를 주기 때문에 잘 판단해야한다. 비교할 때 === 연산자로 비교한다고 보면 되는데 원시타입은 값자체가 같으면 같아도 인식하지만, 오브젝트, 함수등은 컴포넌트를 호출하는 곳에서 재실행이 됐다면 새로운 함수로 인식하게 된다. 따라서 프롭스에 함수가 있다면 그 함수를 useCallback 으로 재생성되지 않도록 조치가 필요하다. useCallback 정의한 함수를 리액트의 내부 저장 공간에 저장해서 함수 객체가 실행될 때마다..
모든 컴포넌트 재평가 후에 useEffect를 실행한다. 컴포넌트가 렌더링되는 주기 안에서 사용되어야 하는 코드가 있을 때 유용함. 의존성이 변경될 때 실행된다. useEffect 에서 사용하는 모든 것을 의존성으로 넣어야 한다. 안넣어도 되는 것은 상태 업데이트 함수 내장 API 또는 함수 (fetch(), localStorage) useEffect 외의 변수 import { useEffect, useState } from 'react'; let myTimer; const MyComponent = (props) => { const [timerIsActive, setTimerIsActive] = useState(false); const { timerDuration } = props; // ..
.env 파일은 node를 실행할 때 읽어서 앱의 환경변수값으로 쓸 수 있다. .env 파일은 node를 실행하는 디렉토리에 있어야 한다. react project에서는 빌드할 때 .env 파일을 읽어서 변수값과 소스를 묶은 후 js 파일을 만든다. 따라서 빌드할 때 환경설정 정보가 완비되어야 한다. 개발 서버에 올릴 때와 운영 서버에 올릴 때 환경 변수 값이 다른 경우 빌드 할 때 적절히 환경 변수 값을 교체한 뒤에 빌드해야한다. 환경 변수파일의 우선순위는 npm start 했을 때는 .env < .env.local < .env.development < .env.development.local 순으로 .env.development.local 파일이 가장 우선순위가 높다. npm build 했을 때는 ...
sudo docker run -d \ -v /home/dev/content:/usr/share/nginx/html:ro \ -v /home/dev/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx nginx 컨텐츠와 설정파일을 볼륨 마운트 시키려고 했더니 자꾸 오류가 났다. 파일인데 디렉토리에 마운트를 시켜면 어떻하니 어쩌고 저쩌고 파일이라고 인식을 잘 못하는것 같다. nginx.conf파일을 만들어 놓고 실행하니 일단 실행은 되는데 서버는 올라오지 않는다. 아마도 설정 정보가 호스트 쪽으로 넘어가질 안나보다. 일단 컨피그쪽 설정을 빼고 컨테이너를 올린뒤 설정정보만 그대로 복사해서 호스트쪽으로 넣고 다시 실행했다. 인제 잘 된다.