전체 글 14

[Springboot] 여행 커뮤니티 리뉴얼(1)

[Springboot] 여행 커뮤니티 리뉴얼(1) 오랜만에 Spring Boot 복습도 할 겸, 2년 전에 Spring Boot로 만든 여행 커뮤니티를 리뉴얼해 보기로 했다. TRAVELMAKER는 2년 전 Spring Boot와 Thymeleaf로 만든 여행 커뮤니티로, Spring Boot를 사용해 처음 만든 웹사이트다.2주도 안 되는 기간 안에 만든 거라 버그가 많았고, 사용하던 원격 DB(NCP)도 이미 사라져서 지금은 실행조차 되지 않는 상태다.그 사이 Spring Boot는 2.x에서 4.x까지 올라왔으니, 바뀐 부분을 직접 적용해 보면서 정상화 → 버전업 → JPA 버그 수정 → 보안 보강 → 배포 설정 순서로 진행했다. 먼저 리뉴얼한 결과 화면이다.▲ 리뉴얼한 메인 화면 이 글에서는 다음 ..

Springboot 2026.10.31

[Qt] 시그널슬롯 (2/2)

Qt 시그널/슬롯 정리 (2/2) — CAuthManager 예제(1/2)에서는 QML과 C++ 사이의 시그널/슬롯(Q_PROPERTY, Connections)을 정리했다.이번에는 C++ 객체끼리 connect로 시그널/슬롯을 잇는 방법(보내는 쪽 signals:·emit, 받는 쪽 슬롯·connect)과, 함께 자주 나오는 싱글턴(getInstance), QTimer::singleShot, 이벤트 루프를 Quantwall이 실행될 때 CAuth Client를 자동 실행하는 코드로 정리한다.이름역할getInstance()객체를 딱 하나만 만들고 어디서든 그 하나를 꺼내 쓰게 하는 함수 (싱글턴)생성자객체가 만들어질 때 자동으로 한 번 실행되는 초기화 코드signals:보내는 쪽 클래스 헤더에 "이런 알림..

Qt 2026.10.29

[Qt] 시그널슬롯 (1/2)

Qt 시그널/슬롯 정리 (1/2) — m_otpRegistered 예제Qt의 시그널/슬롯은 "이벤트 발생을 알리는 쪽(시그널)"과 "그 이벤트에 반응해서 실제 동작을 수행하는 쪽(슬롯)"을 분리해서, 서로의 내부 구현을 몰라도 느슨하게 연결(loose coupling)할 수 있게 해주는 메커니즘이다.이름역할m_otpRegistered진짜 데이터를 담는 private 멤버 변수otpRegistered()m_otpRegistered를 읽어서 리턴하는 getter 함수Q_PROPERTY(...)getter를 QML에 "프로퍼티"로 노출시키는 선언otpRegisteredChanged값이 바뀌었음을 알리는 시그널 선언emit otpRegisteredChanged(...)값 갱신 + 시그널 발생onOtpRegist..

Qt 2026.07.21

SSL 인증서 발급 및 등록 방법

1. 인증서 구매comodo SSL Store 접속https://comodosslstore.com/사용할 인증서 구매 2. 인증서 발급My Dashboard에서 구매한 인증서 클릭 인증서 발급 요청Shell 또는 터미널에 해당 명령어 입력openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 해당 정보 입력Country Name (2 letter code)국가 ex)KRState or Province Name주 또는 지방 ex)SeoulLocality Name도시 ex) SongpaOrganization Name회사명 ex)Amgine.IncOrganizational Unit부서 ex)ITCommon Name도메인명Email..

Linux 2026.03.13

JPA 관계 매핑 정리

JPA 관계 매핑 정리 (ManyToOne, OneToMany, ManyToMany) + FK 사용 이유 이 글에서는 다음 내용을 정리한다.Many-to-OneOne-to-ManyMany-to-ManyFK를 사용하는 경우와 사용하지 않는 경우의 차이 1. DB 관점에서의 관계테이블 관계는 보통 다음 3가지로 나뉜다.관계의미Many-to-One여러 레코드 하나를 참조One-to-Many하나가 여러 레코드를 참조Many-to-Many서로 여러 개를 참조 예시 usersuser_idname1Kim2Lee ordersorder_iduser_id101110211032 여기서 관계는orders → usersMany-to-One 즉한 유저는 여러 주문을 가질 수 있다 2. Many-to-OneMany-to-One은..

Springboot 2026.03.13

AWS KMS(AWS Key Management Service)

KMSKMS는 AWS의 애플리케이션에서 사용하는 데이터의 암호화/복호화를 위한 키를 생성/관리하는 서비스이다.암호화/복호화를 위한 키는 KMS Key라고 불리며 생성, 보관, 사용, 무효화, 삭제가 가능하다. KMS와 다른 AWS 서비스KMS는 암호화 대상인 AWS 서비스(예: Amazon S3, EBS, Redshift)와 연동하여 사용된다.KMS는 CloudTrail과 연동되어 키의 사용 로그(언제, 어떤 서비스에서 키가 사용되었는지)가 기록되므로, 키의 사용 status를 확인할 수 있다. 데이터 암호화가 필요한 이유?제 3자가 훔칠 수 있기 때문에 데이터를 전송하거나 보관하는데 암호화를 해야지 안전하다. 암호화특징Client-side 클라이언트가 데이터를 암호화하고 키를 관리한다. 필요하면 KSM..

AWS 2025.06.20

Slack API 사용하여 메시지 전송

슬랙에서 봇이 사용되는 것은 알고 있었으나 어떻게 만드는지에 대해 궁금해져서 오늘은 슬랙에서 봇을 직접 만들어보려고 한다.우선 앱을 생성해줌앱 생성1. Slack api > Create an App 버튼 클릭( 그 이전에 슬랙 로그인과 채널 생성은 되어 있는 상태여야 함 )https://api.slack.com/apps2. From scratch 버튼 클릭3. 앱의 이름 & 워크스페이스 선택이름은 변경 가능하여 아무거나 입력해줘도 괜찮음. 다만, 워크 스페이스는 이후 메신저 봇이 메세지를 보내야 하는 워크스페이스로 설정해줘야 하는데 워크스페이스는 변경 불가하니 주의해서 선택해야 한다.앱과 워크스페이스 선택 후 Create App 버튼을 클릭함슬랙에서 봇을 생성할 때 위의 과정은 동일하고 목적에 따라 Bo..

Slack 2025.01.24

VMware에 Rocky Linux 설치

CentOS의 공식 지원이 종료 되면서 후속으로 출시된 Rokcy Linux 오늘은 Rocky Linux를 가상환경에 설치 해보자                         vm 생성                          나중에 선택                                            > Linux                         VM 이름 설정                                               디스크 용량 설정 (대용량 서버 올릴 거 아니면 50GB만 되어도 충분)                        다운 받은 ISO 파일 선택  ISO 파일을 아래에서 다운 가능하다 (최신 버전 9.5)https://rockylinux.o..

Linux 2025.01.07

[Linux] 기본 명령어

1. ls (List)ls : 현재 디렉토리의 모든 파일 및 폴더를 기본 형식으로 보여준다.ls -l : 파일 및 폴더에 대한 자세한 정보와 함께 리스트업 한다.ls -a : 숨겨진 파일을 포함하여 모든 파일을 보여준다.2. cd (Change Directory)cd는 디렉토리를 변경한다.cd Documents : 현재 디렉토리에서 'Documents'라는 이름의 폴더로 이동한다.cd .. : 현재 디렉토리의 상위 폴더로 이동한다. (즉, 되돌아간다.)3. pwd (Print Working Directory)pwd : 현재 작업 중인 디렉토리의 경로를 표시한다.4. mkdir (Make Directory)mkdir은 새로운 디렉토리(폴더)를 생성한다.mkdir new_folder : 현재 디렉토리에 'n..

Linux 2025.01.06

[Angular] 3. 생명주기(life cycle)와 훅 메소드

컴포넌트와 디렉티브는 생명주기를 가짐이 생명주기는 컴포넌트와 디렉티브가 생성하고 소멸되기까지의 여러 과정을 말하며Angular에 의해 관리다시 말해 Angular는 생명주기를 통해 컴포넌트와 디렉티브를 생성하고 렌더링하며,프로퍼티의 변화를 체크하고 DOM에서 제거하는 일련의 과정을 관리개발자는 Angular가 제공하는 생명주기 훅 메소드를 구현하여,각각의 생명주기 단계에서 처리하여야 할 행위를 정의할 수 있음Angular는 위 그림의 순서대로 생명주기를 관리하고,생명주기 이름 앞에 ng가 붙은 생명주기 훅 메소드를 제공1. 생명주기 훅 메소드생명주기 훅 메소드는 인터페이스의 형태로 제공예를 들어 OnInit 생명주기에 처리되어야 할 행위를 정의하기 위해서는 훅 메소드 ngOnInit를 구현이 ngOnIn..

Angular 2024.11.14