일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- intellijIDEA
- nodejs
- useEffect
- react
- wildfly
- gradle
- IntelliJ
- JavaScript
- Kubernetes
- Java
- MySQL
- tibero
- dbeaver
- gson
- nginx
- springboot
- Windows
- database
- log4j2
- Git
- jetbrains
- BPMN
- NCP
- docker
- VSCode
- mybatis
- kubectl
- LOG4J
- JPA
- Today
- Total
목록분류 전체보기 (247)
두 손끝의 창조자
useEffect 훅을 이용해서 컴포넌트가 처음 로딩될 때 무언가 작업을 하려면 useEffect(() => { console.log('~~~~') }, []);이처럼 두번째 바라미터에 빈 배열을 전달해서 사용한다. 그런데 이게 두번씩 호출 될때가 있다. 상위 컴포넌트의 의해서 두번로딩될 수 도 있지만 React.StrictMode 인 경우도 두번 호출이 된다. React.StrictMode는 보통 index.js 에 컴포넌트가 추가되어 있으니 불필요하다고 판단될때는 제거해서 테스트 해보자.
모듈 A, B, C가 있을 때 B는 C모듈을 의존해서 구현하고 A는 B모듈을 사용한다. A가 B모듈 중 C에 존재하는 예외 클래스를 상속받아 재구현한 예외를 사용하려고 하면 참조 오류가 발생한다. throw 로 예외를 올렸을 때 오류가 발생하는데 일반 클래스 생성 및 사용은 문제가 없다. 그 이유를 모르겠어서 기록해놓는다. module c code package c; public class BaseException extends RuntimeException{ }module b gradle implementation project(':module-c')code package b; import c.BaseException; public class SubBaseException extends ..
nexus 자원 배포 url은 2와 3이 다르다. 3 버전대는 http://localhost:8081/repository/maven-releases http://localhost:8081/repository/maven-snapshots2 버전대는 http://localhost:8081/content/repositories/releases http://localhost:8081/content/repositories/snapshots다운로드는 3 버전대 /repository/maven-public2 버전대 /content/groups/public
일단 pip 를 한번 업뎃 해주고 python -m pip install --upgrade pip프로젝트를 만든다. 프로젝트 구조는 아래처럼 만든다. project_directory/ └── src/ └── package_name/ ├── __init__.py └── module_name.py__init__.py 는 빈 상태로 두고 module_name.py 는 로직을 담는다. 라이선스 파일을 추가 project_directory/ ├── LICENSE ├── pyproject.toml ├── README.md ├── src/ │ └── package_name/ │ ├── __init__.py │ └── module_name.py └── tests/tests 는 빈 폴더로 두어도 된다. pyproject..
프로그램 추가 삭제에서 지우려고 했더니 이딴 오류가 발생하면 관리자 권한 으로 파워쉘을 열고 프로그램 설치된 위치의 bin 디렉토리(예:cd 'C:\Program Files\JetBrains\PyCharm Community Edition 2021.3.2\bin\') 로 간뒤 아래 코드를 실행하라. New-Item -Path 'IdeaWin64.dll' -ItemType File삭제를 하기 위한 특정한 프로세스가 Un_A.exe가 IdeaWin64.dll 파일에 접근을 하려고 하는데 파일이 없어서 오류가 발생한다. 이 오류를 우회하기 위해서 같은 이름인 빈 파일을 만들어서 오류메시지가 나오지않고 삭제 진행이 계속 되도록 하는 방법이다.
시스템콜 호출 로그 -T 시스템콜 처리 시간 표시 strace -T -o output.log program_file 사용자모드 커널모드 수행 비율 확인 -P 논리 CPU 0번 데이터 수집 첫 번째 1 : 1초마다 수집 두 번째 1 : 1번만 수집 sar -P 0 1 1 특정 논리 CPU로 실행시키기 -c 0 : 논리 CPU 0번 & 백그라운드 실행 taskset -c 0 ./실행파일 & 공유라이브러리 링크 상태 확인 ldd 실행파일라이브러리 검색 lib로 시작하는 파일 검색 dpkg-query -W | grep ^lib정적 라이브러리 c 컴파일 cc -static -o outputfile 소스파일시스템에 존재하는 모든 프로세스 확인 ps aux코드 영역의 파일 오프셋, 크기 및 메모리 등 정보 보기 프로..
Termainal 에서 ssh로 접속해서 파일을 탐색하든, 로컬에 있는 파일을 탐색하든 vi 에디터류로 파일 내용을 수정할 수 있다. 그런데 더 편한 vscode에서 이 작업을 하고 싶다면 code -r [파일명]
리액트 컴포넌트는 상위 컴포넌트에서 넘겨준 props로 데이터를 받아 로직을 처리하는 형태가 대부분이다. 상위 컴포넌트의 매소드를 호출하려면 props로 넘겨받은 함수 변수를 실행해서 호출한다. 만약, 그 반대의 경우가 필요하다면? 즉, 상위 컴포넌트에서 하위 컴포넌트의 메소드를 호출하고자 할 때는 어떻게 할까? React.forwardRef와 useImperativeHanlde을 이용하여 구현한다. 하위 컴포턴트 실행할 로직을 구현하고 ref를 노출한다. const Input = React.forwardRef((props, ref) => { const somethingToDo = () => { console.log('Do Something'); } useImperativeHandle(re..
리액트는 루트 요소에 엘리먼트가 하나가 있어야 한다. one two 이런 식에 요소 정의는 안된다. 그래서 one two 이렇게 빈 태그를 추가하여 루트요소에 하나도 오도록 조정한다. 그런데 빈 요소 추가는 불필요한 리소스 낭비이기 때문에 실제 랜더링할 때는 나오지 않도록 리엑트에서 래핑 컴포넌트를 제공한다. one two
Spring Boot 애플리케이션에서 로그 레벨을 동적으로 설정하는 방법에 대해 살펴본다. Spring Boot Actuator 소개 Spring Boot Actuator는 Spring Boot의 하위 프로젝트로서 애플리케이션의 관리와 모니터링에 필요한 다양한 기능을 제공한다. 이를 통해 애플리케이션의 상태, 메트릭스, 그리고 여기서 다룰 내용인 로깅과 같은 중요한 정보를 제공한다. 로그 레벨 확인하기 로그 레벨을 확인하려면 /actuator/loggers 엔드포인트로 GET 요청을 보내면 된다. curl -X GET http://localhost:8080/actuator/loggers 응답 형태 { "levels": ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FAT..
프로젝트에 루트에서 다음과 같은 파일을 찾아서 초기화 시 실행한다. 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..