모든 자동 재시작 컨테이너를 비활성화

docker update --restart=no 
$(docker ps -a -q)

단일 컨테이너를 다시 시작하지 않으려면 다음을 사용

docker update --restart=no the-container-name 또는 ID

docker-compose를 사용하는 경우

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

실행하고 있는 서비스 확인

docker service ls

서비스를 중지

docker service rm <service id discovered with previous command>

Mac 용 키보드나 Mac 환경에 알아서 잘 적용되는 키보드라면 상관 없지만, Control, Option, Command 키의 위치가 다르게 설정되어 있거나 키 매핑이 안될때 별도의 프로그램을 사용하지 않고, 설정하는 방법을 설명하도록 하겠다.

OS 버전에 따라 차이는 있겠지만, 12버전 이상에서는 동일하게 가능하리라 본다.

 

1. 메뉴 상태바에서 한영 표시 아이콘을 클릭하면 아래와 같이 메뉴가 나타나게 된다.

키보드 뷰어 보기 선택

2. 키보드 뷰어 보기 메뉴를 선택하면 아래와 같은 키보드 자판 모양의 App 이 실행된다.

3. 키를 눌러보고, OS에서 키가 어떤 값으로 인식되는지 확인할 수 있다. Control, Option, Command 키를 자신의 키보드에 맞게 설정하면 된다.

 

★ 참고 URL

https://support.apple.com/ko-kr/guide/mac-help/mchlp1015/mac

 

Mac에서 키보드 뷰어 사용하기

Mac에서 키보드 뷰어를 사용하여 키보드에서 다른 언어의 문자 위치를 볼 수 있습니다.

support.apple.com

키보드 테스트
https://funkeys.co.kr/bbs/page.php?hid=keytest

-- DB 접속
mysql -u root -p
mariadb -u root -p

-- 데이터베이스 확인
SHOW DATABASES;

-- 데이터베이스 생성
create database DB명;

-- 계정 조회
use mysql;
select host, user, password from user;

-- 계정 생성
-- create user '계정'@'접속위치' identified by '패스워드';

-- 내부 접속만 허용
create user '계정'@localhost identified by '비밀번호'; 
-- 외부 접속 허용
create user '계정'@'%' identified by '비밀번호';

-- 권한 생성
grant select on '스키마'.* to `계정`@`localhost` identified by '비밀번호';
grant select on '스키마'.* to `계정`@`%` identified by '비밀번호';         

-- 모든 권한 부여
grant all privileges on 'DB명.테이블' to '계정'@'접속위치';
-- grant all privileges on testDB.* to 'sa'@'%';

-- 수정사항 반영 (권한 적용)
flush privileges;

-- 사용자 계정 삭제 '사용자'@'접속위치'
DROP USER '계정아이디'@'접속위치';
-- 예) DROP USER 'testUser'@'%';

권한을 생성할 때 '스키마.select' 을하면 select 권한만 주게 되고,

코드 처럼 '스키마.*' 을 입력하게 되면 모든 권한을 주게 된다. ( *  특정권한만 주길 권장 )

 

스키마.테이블의 경우 특정 테이블에 대한 권한만 부여하게 되고,

스키마.* 를 입력 할 경우 해당 스키마의 모든 테이블에 대한 권한을 부여

 

@뒤에는 '호스트주소(IP)'가 오게 된다. 예)~~~@'127.0.0.1' identified by '비밀번호';

@'localhost'는 로컬 사용자 이고,

@'%' 외부 접근을 모두 허용해주는 것이다. 

따라서, 특정 대역만 열어 주려면 @'192.168.0.1' 이런식으로 권한을 부여해주면 된다.

iterm2 다운로드 후 설치
https://iterm2.com/downloads.html

안정화 버전을 zip 파일 형태로 다운로드 후 압축을 풀고 실행하면 application 폴더로 이동

iterm2-color-schemes 에서 color 테마를 다운로드 받아 적용
https://iterm2colorschemes.com/


https://ohmyz.sh/


https://github.com/romkatv/powerlevel10k

iterm2에 아래 순서로 설치
---------------------
Oh My Zsh
Clone the repository:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Set ZSH_THEME="powerlevel10k/powerlevel10k" in ~/.zshrc
---------------------

Windows 에서는 터미널 또는 Powershell, 명령 프롬프트 에서 실행

 

docker --version

 

// https://hub.docker.com/_/mariadb 에서 지원하는 Dockerfile 확인하는 걸 추천
docker search mariadb

docker pull mariadb:10.6.11

docker images

// 최신 장기 지원 릴리스는 5년 동안 유지되는 MariaDB 10.6입니다.

docker run --name mariadb -p 3306:3306 -e MARIADB_ROOT_PASSWORD=패스워드 -d mariadb:10.6.11

// 생성한 컨테이너가 정상적으로 실행중인지 확인
docker ps -a

// 실행되고 있는 docker 이미지의 컨테이너에 접속
docker exec --user=root -it mariadb /bin/bash

아래와 같은 화면이 출력되면 접속 된것임.
root@a32432432:/#

버전 확인
root@a32432432:/# mariadb --version

mariadb 접속
root@a32432432:/# mariadb -u root -p

특정 포트 사용하고 있는 프로세스 확인

C:\Users\dsd>netstat -ano | findstr "8080"

 

확인 된 PID 가 12868 일 경우 현재 실행중인 프로세스 종료 예시

프로세스 종료

C:\Users\dsd>taskkill /pid 12868 /f

spring 에서 사용되는 DTO, DAO, VO 용어에 대한 의미

 

DAO

DAO(Data Access Object)는 데이터베이스의 data에 접근하기 위한 객체입니다.
DataBase에 접근하기 위한 로직&비즈니스 로직을 분리하기 위해 사용합니다.

프로젝트의 서비스 모델과 실제 데이터베이스를 연결하는 역할을 하며, JPA에서는 DB에 데이터를 CRUD하는 Repository 객체들이 DAO라고 볼 수 있다.

 

DTO

DTO(Data Transfer Object)는 계층 간 데이터 교환을 하기 위해 사용하는 객체로 DTO는 로직을 가지지 않는 순수한 데이터 객체(getter / setter 만 가진 클래스)입니다.

 

<유저가 입력한 데이터를 DB에 넣는 과정 예>
- 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송합니다.
- 해당 DTO를 받은 서버가 DAO를 이용하여 데이터베이스로 데이터를 집어 넣습니다.

 

Entity와 DTO를 분리하는 이유

Entity의 값이 변하면 Repository 클래스의 Entity Manager의 flush가 호출될 때 DB에 값이 반영되고, 이는 다른 로직들에도 영향을 미친다. 때문에 View와 통신하면서 필연적으로 데이터의 변경이 많은 DTO 클래스를 분리해 주어야 한다.

또한, 도메인 설계가 잘 되었다 해도 getter만을 이용해서 원하는 데이터를 표시하기 어려운 경우가 발생할 수 있는데, 이 경우에 Entity와 DTO가 분리되어 있지 않다면 Entity 안에 Presentation을 위한 필드나 로직이 추가되게 되어 객체 설계를 망가뜨리게 된다. 때문에 이런 경우에는 분리한 DTO에 Presentation 로직 정도를 추가해서 사용하고, Entity에는 추가하지 않아서 도메인 모델링을 깨뜨리지 않도록 한다.

 

VO

VO(Value Object) 값 Object로서 값을 위해 쓰입니다.
read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다.
DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있습니다.

 

DTO와 VO와의 차이

VO(Value Object)도 DTO와 동일한 개념인데 차이점이 있다면 DTO는 데이터를 계층간 교환(Transfer)하는데 의미가 있고, VO는 읽기만 가능한 read-only 속성을 가진 객체로서 데이터 그 자체에 의미를 두고 있다는 점이다.

 

 

대량의 파일 다운로드는 Microsoft Azure Storage Explorer 를 사용하기 보다는 AzCopy 를 사용하여 다운로드 한다.

  1. 아래 DownLoad 링크에서 AzCopy 다운로드
    https://aka.ms/downloadazcopy-v10-windows
    AzCopy v10 를 사용하여 Azure 저장소로 데이터 복사 또는 이동

2. 압축 파일안에 AzCopy.exe 실행 파일이 있습니다. 적당한 디렉토리에 압축해제 시킵니다. 

3. AzCopy 설치 디렉토리에서 Cmd 명령을 사용하여 명령 프롬프트를 실행 시킨 후 Azure Active Directory를 사용하여 로그온 하기 위해 azcopy login 명령을 입력 합니다. ( 그림에서 1번 )

4. azcopy login 명령 입력 후 나오는 메세지를 읽어보면 웹브라우저에서 https://microsoft.com/devicelogin URL ( 그림에서 2번 )을 열고, 표시된 코드값( 그림에서 3번 )을 입력하라고 안내합니다.

5. 웹브라우저에서 정상적으로 로그인이 완료되면 로그인 성공 메세지가 나옵니다. ( 그림에서 4번 )

6. AzCopy 명령으로 Blob 컨테이너에서 파일을 다운로드 합니다. ( 그림에서 5번 )

  • 명령어 규칙
azcopy cp "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" "/path/to/dir" --recursive
  • 실행 명령어 예시
azcopy cp "https://스토리지계정.blob.core.windows.net/BlobContainer이름" "다운받을폴더경로" --recursive

7. 다운로드가 완료되면 log 파일 위치와 작업 완료 메세지가 안내 됩니다. ( 그림에서 6번 )

8. 다운로드 된 파일들을 확인

 


Azure Blob Storage 파일 삭제

AzCopy 명령으로 Blob 컨테이너의 파일들을 삭제 할 경우

  • 명령어 규칙
    가상 디렉터리에서 Blob의 하위 집합을 제거합니다(예: jpg 및 pdf 파일만 제거, 또는 Blob 이름이 exactName인 경우).
  • [SAS] : SAS 토큰을 사용 할 경우. 사용하지 않을 경우에는 표기 하지 않으면 됩니다.
  •  
azcopy rm "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" --recursive=true --include-pattern="*.jpg;*.pdf;exactName"

 

  • 실행 명령어 예시
    컨테이너 하위 모든 파일 삭제
  •  
azcopy rm "https://스토리지계정.blob.core.windows.net/폴더명" --recursive=true --include-pattern="*;"

 IntelliJ 에서 Ascii 가 아닌 문자를 변수나 함수, 클래스 이름으로 사용하면 "Non-ASCII characters in an identifier" 라는 경고를 냅니다.

이럴 경우 아래와 같이 설정을 변경해 주면 경고 없이 한글을 사용할 수 있습니다.

 

  1. IDE 의 Setting 메뉴로 들어갑니다.
  2. Editor  → Inspections  → Internationalization  → Non-ASCII characters  체크 해제
  3. Apply 를 눌러서 저장합니다.

 

+ Recent posts