Puter의 잡동사니
컨테이너에서 host의 docker socket 사용
컨테이너에서 host의 docker socket 사용
2024.09.27컨테이너로 구동한 `jenkins`에서 `host`의 `docker socket`를 사용하는 방법 docker-compose.ymlservices: jenkins: image: jenkins/jenkins:lts-jdk11 container_name: jenkins restart: always volumes: - ./data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock:ro # docker.sock를 공유한다 ports: - 55000:5000 - 8880:8080 environment: - TZ=Asia/Seoul`docker.sock`를 공유할 수 있도록 ..
linux disk mount
linux disk mount
2024.09.15리눅스에서 디스크를 마운트하는 방법* 작업환경: Rocky Linux 8.9 1. HDD 디스크 확인fdisk -lDisk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 4096 bytesI/O size (minimum/optimal): 4096 bytes / 4096 bytesDisklabel type: gptDisk identifier: C7D10A13-69A5-48DD-9AD6-8247704F4775하드디스크 이름인 `/dev/sdb`을 확인할 수 있다. 2. 파티션 유틸리티 사용parted /..
nginx-proxy-manager: Cloudflare 인증서 갱신 오류
nginx-proxy-manager: Cloudflare 인증서 갱신 오류
2024.09.09`docker` 기반의 `nginx-proxy-manager` 컨테이너 사용 중, `Cloudflare`을 통한 인증서 갱신의 오류가 발생한 경우Renewal configuration file /etc/letsencrypt/renewal/npm-28.conf (cert: npm-28) produced an unexpected error: 'Namespace' object has no attribute 'dns_cloudflare_credentials'. Skipping. 1. 컨테이너 접근docker exec -itu root nginx-proxy-manager /bin/bash 2. certbot 확인pip3 list | grep certbotcertbot (2.11.0)기본 `certbot`만 있고..
postgres primary/replica
postgres primary/replica
2024.09.08docker를 이용하여 postgresql의 primary replica 설정할 수 있다. docker-compose.yml 설정services: postgres-primary: image: postgres:16.1 container_name: postgres-primary restart: always ports: - 15432:5432 environment: - POSTGRES_USER=아이디 입력 - POSTGRES_PASSWORD=비밀번호 입력 - TZ=Asia/Seoul volumes: - ./data/primary:/var/lib/postgresql/data postgres-replica: image: pos..
JOOQ 비관적 잠금
JOOQ 비관적 잠금
2024.09.06JOOQ에서의 비관적 잠금을 적용할 수 있다. 다른 서버나 인스턴스에서 동일한 로직을 동시에 수행하는 경우, 데이터베이스의 동시성 문제로 예상치 못한 동작이 발생할 수 있다. 이를 방지하기 위해 데이터베이스 수준에서 잠금 매커니즘을 사용하여 동시성을 제어할 수 있다. 비관적 잠금을 사용하여 다른 트랜잭션이 동일한 데이터를 동시에 수정하지 못하게 할 수 있다.이는 `SELECT ... FOR UPDATE` 구문을 사용하여 구현할 수 있다. import org.jooq.DSLContext;import org.jooq.impl.DSL;import org.jooq.exception.DataAccessException;import org.jooq.impl.SQLDataType;import static org.j..
라즈베리파이 HID
라즈베리파이 HID
2024.07.29데스크탑에 연결된 라즈베리파이를 HID 설정으로 키보드처럼 사용할 수 있다. 준비물hardware: Raspberry Pi Zero 2 Wos: Raspbian GNU/Linux 11 (bullseye)+ 기본적인 라즈베리파이 설정 및 ssh, wifi 설정 설정 1. 커널 설정echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txtecho "dwc2" | sudo tee -a /etc/modulesecho "libcomposite" | sudo tee -a /etc/modules 2. HID 설정 shell 생성 및 실행 권한 부여sudo touch /usr/bin/enable_hidsudo chmod +x /usr/bin/enable_hid 3. HID 명령어..
PKIX path building failed
PKIX path building failed
2023.05.01URL 접근 시 javax.net.ssl.SSLHandshakeException: PKIX path building failed가 발생한 경우 JDK의 인증서에 해당 URL와 연관된 인증서가 없어서 발생한 오류2022-07-12 09:07:28,988 WARN o.j.r.PluginManagerMenuItem: Failed to load plugin updates infojavax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Inst..
centos8에서 mariadb 설치 rpm 문제
centos8에서 mariadb 설치 rpm 문제
2023.05.01mysql.server start으로 구동 후, 콘솔 진입 시 rpm이 설치되지 않아서 진입이 안될 경우 mysql bin 디렉토리 이동 cd {home}/mysql/bin 필요 라이브러리 확인 ldd mysql libncurses.so.5에서 not found 확인 시, RPM 설치 yum -y install ncurses-compat-libs
UnsatisfiedDependency
UnsatisfiedDependency
2022.09.15expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}발생 시 해결 방법 [Error 로그]Parameter 2 of constructor in us.puter.park.api.MenuController required a bean of type 'us.puter.park.common.security.auth.UrlFilterInvocationSecurityMetadataSource' that could not be found.Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean..
WebSocket @Autowired
WebSocket @Autowired
2022.09.14`@SeverEndPoint`가 있는 컨트롤러에서 `@Autowired` 사용 시 오류 발생 시 해결 방법 [Error 로그]ERROR [2022-09-12 22:31:49,989] [nio-8080-exec-8] o.a.coyote.http11.Http11NioProtocol :175 - Error reading request, ignoredjava.lang.IllegalArgumentException: javax.websocket.DeploymentException: Endpoint instance creation failed at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.init(WsHttpUpgradeHandler.java:..
lombok annotation
lombok annotation
2022.09.12자주 쓰는 lombok annotation `@Getter`, `@Setter`> getter/setter 메서드 생성 [생성자 자동 생성 관련] `@NoArgsConstructor`> 파라미터가 없는 기본 생성자 생성 `@RequiredArgsConstructor`> `final`이나 `@NonNull`인 필드 값만 파라미터로 받는 생성자 생성 `@AllArgsConstructor`> 모든 필드 값을 파라미터로 받는 생성자 생성 `@ToString`> `toString` 메서드 생성 `@EqualsAndHashCode`> `equals`, `hashCode` 메서드 생성 > `(callSuper = true)` 속성 사용 시 부모 클래스의 필드까지 감안 여부 설정 가능 `@Data`> 아래 어..
spring boot transaction
spring boot transaction
2022.09.08여러 DB를 접속할 때 DB 별 트랜잭션 설정을 부여하는 방법 `DataSourceConfig`에 어노테이션 추가 및 `PlatformTransactionManager` 추가@EnableTransactionManagement@Beanpublic PlatformTransactionManager testTransactionManager() { DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(testDataSource()); return transactionManager;} @Transactionl 붙일 때 아래와 같이 추가@T..