728x90

분류 전체보기 331

(스프링 고급편) 스프링 AOP

스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때..

Spring 2023.03.02

컨테이너 내 root의 비밀번호를 모를 때

컨테이너 내 root의 비밀번호를 모를 때 USER 명령을 사용하여 빌드 된 Docker 이미지를 루트가 아닌 사용자를 사용하고 dev있습니다. 컨테이너 내에서 “dev”이지만 /etc/hosts파일 을 편집하고 싶을 때, 그래서 나는 root가되어야 한다. su 명령을 시도하고 있지만 루트 암호를 입력하라는 메시지가 표시된다(하지만, 암호는 모름). Docker 컨테이너 내부의 기본 루트 사용자 비밀번호를 모를 때, root의 권한을 가지려면 어떻게 해야할까? Answer -u 옵션을 사용하면 제공된 기본 사용자 대신 루트 사용자(ID = 0)로 Docker 컨테이너에 로그인 할 수 있습니다 . docker exec -u 0 -it container_name bash 루트 (id = 0)는 컨테이너 내..

Docker 2023.03.01

(Bash Shell) while문과 until문 예제

while문 - 주어진 조건이 참일경우 반복 형식 - while [조건문] do 실행명령 done 예제 스크립트 cnt 변수에 1을 대입하고 10보다 작을때까지 반복한다 숫자계산할때 expr명령어을 쓴다. #!/bin/bash cnt=1 while [ $cnt -lt 10 ] do echo "count" cnt=`expr $cnt + 1` done 결과 # ./while1.sh count count count count count count count count count #!/bin/bash echo "your name is: " read name while [ "$name" != "tom" ]; do echo "not name! your name is: " read name done ---------..

객체 지향 설계(SOLID)란?

SOLID 원칙들은 결국 자기 자신 클래스 안에 응집도는 내부적으로 높이고, 타 클래스들 간 결합도는 낮추는 High Cohesion - Loose Coupling 원칙을 객체 지향의 관점에서 도입한 것이다. 왜 그랬을까? 간단하다. 좋은 소프트웨어는 응집도가 높고 결합도가 낮기 때문이다. 결국 모듈 또는 클래스 당 하나의 책임을 주어 더욱더 독립된 모듈(클래스)을 만들기 위함이다. 이렇게 설계된 소프트웨어는 재 사용이 많아지고, 수정이 최소화 되기 때문에 결국 유지 보수가 용이해진다. 자 그럼 객체 지향 설계 5대 원칙이 각각 무엇인지 아래를 보자. SRP (Single Responsibility Principle) 단일 책임 원칙 OCP (Open Closed Principle) 개방 폐쇄 원칙 LS..

CustomAuthenticationSuccessHandler와 CustomAuthenticationFailureHandler

: Security에서 지원하는 인증성공, 인증실패 핸들러를 상속한 클래스를 직접 커스텀하여 사용해보자. 1. 인증성공 핸들러 커스텀 2. 인증실패 핸들러 커스텀 3. config 설정 4. 익명클래스로 처리하는 방법 1. 인증성공 핸들러 커스텀 1. SimpleUrlAuthenticationSuccessHandler를 상속한 커스텀 클래스 CustomAuthenticationSuccessHandler를 만듭니다. 2. requestCache와 RedirectStragey를 사용하여 사용자가 인증 요청 성공시 이전에 접근하려 했던 자원(리소스)의 경로로 바로 보내기 위해서 설정해줍니다. 이전의 접근하려 했던 자원(리소스)가 없는 경우 null을 반환하도록 하여 setDefaultTargetUrl에 설정해..

Spring/Security 2023.02.18

(SpringSecurity) UserDetailsServices 활용

UserDetailsServices 활용 JDBC를 이용하는 방식으로도 DB를 처리해서 사용할수 있지만, 여러 정보들중 제한적인 내용만 이용 한다는 단점이 존재 이러한 문제를 해결하기위해 UserDetailsServices 인터페이스를 구현하는 방식을 이용하는것이 좋다. ( 원하는 객체를 인증과 권한 체크에 활용 할수 있기에 많이 사용된다) UserDetailsServices 인터페이스는 단 하나의 메서드만 존재한다. 가장 일반적으로 많이 사용되는 방법은 하위 클래스 중에서 org.springframework.security.core.userdetails.User 클래스 상속 하는형태이다. 커스텀 UserDetailsService를 이용하는 방식을 이용하기 위해선, MYbatis를 이용하는 MemberM..

Spring/Security 2023.02.14

(AWK) 명령어 문법

AWK 명령어 문법 $ awk [옵션] 'pattern { action }' [파일|변수값] awk 옵션 설명 -u 버퍼를 사용하지 않고 출력한다. -F 확장된 정규 표현식으로 필드구분자를 지정한다, 다중 필드 구분자 사용 가능하다. awk -F 단일로 사용시 ':' 를 필드구분자로 사용 awk -F'[ :\t]' 다중 필드구분자 ':'와 tab을 필드구분자로 사용 -v 스크립트를 실행하기 전에 미리 변수를 지정하여 준다. -f awk 명령 스크립트를 파일에서 읽어온다. awk 동작 원리 - 패턴(pattern) 과 액션(action) awk는 파일 또는 파이프를 통해 입력 라인을 얻어와 $0라는 내부 변수에 라인을 입력한다. 각 라인은 레코드라고 부르고, newline(개행)에 의해 구분되다. 이때 패..

(쉘스크립트) AWK 개념

AWK (Aho Weinberger Kernighan) 개념 AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다. 좀더 쉽게 말하자면, awk는 "awk programming language"라는 프로그래밍 언어로 작성된 프로그램을 실행 하는 명령어라고 이해하면 좋다. 즉, 리눅스에서 쉘 스크립트(Shell Script)로 작성된 파일이 리눅스 쉘(Shell)에 의해 실행되는 것처럼, awk가 "awk programming language" 문법으로 작성된 코드를 이해하고 실행 한다는 의미로 보면 된다. 명령어 예를 들자면, 다음과 같이 a.txt 파일이 있다고 하자. 파일내용은 다음과 같다. 1 2 3 4 만일..

카테고리 없음 2023.02.08

(shell script)expr & bc

expr & bc 명령어 쉘에서는 숫자와 문자를 구분하지 않기 때문에 여타 프로그래밍 언어 처럼 숫자 연산이 간단하지 않다. 쉘에서 숫자를 연산하는 방법은 대표적으로 expr 와 bc 가 있다. expr은 bash 내장 명령어로 정수만 연산 가능하다. bc는 복잡한 공학용 산술과 실수 계산이 가능하다. 여기까지 보면, 차라리 bc만 쓰면 될것을 굳이 expr을 알아야 하는지 의문이겠지만, 정수 연산이 많은 프로그래밍을 할 경우 내장 명령어인 expr을 사용하는것이 속도면에서 효율적이기 때문이다. expr 명령어 expr 명령은 정수 계산을 하기 위해 사용되는 명령이다. 계산식을 쓸 때 연산기호와 정수 사이 반드시 공백으로 띄어쓰기를 해야 한다는 주의 점이 있다. $ expr 4 \* 3 12 $ expr..

쉘스크립트 예제

구구단 출력 BASH #!/usr/bin/bash for i in {2..9}; do # 2에서 9까지 레인지 리스트를 순회 for j in {1..9}; do # 1에서 9까지 레인지 리스트를 순회 echo "$i * $j = $((i*j))" # $(( )) 는 괄호안의 문자를 산술 처리 해준다. done done 프로그램의 실행시간 측정 아래의 프로그램은 인자로 주어진 명령을 실행하고 걸린시간을 나노초 단위로 측정한다. BASH #!/bin/bash # 만일 사용자가 인자를 주지 않았을 경우.. ($#는 인자의 모든 갯수) if [ $# -eq 0 ]; then echo "Input the filename, please..." exit 0 # 스크립트 종료 fit Command=$1 # 인자를 변수..

728x90