'분류 전체보기' 카테고리의 글 목록 (8 Page)
본문 바로가기
728x90

분류 전체보기354

[Java] 리플렉션 리플렉션이란 리플렉션은 구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 왜 사용하는가 자바는 정적 언어로 동적인 문제를 해결하기 위해 사용한다. 정적 언어 vs 동적 언어 정적 언어: 컴파일 시점에 타입을 결정 동적 언어: 런타임 시점에 타입을 결정 대표적인 사용 스프링의 DI(dependency injection), ModelMapper 등 리플렉션은 어플리케이션 개발보다 프레임워크 및 라이브러리에서 많이 사용된다. 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우( intelliJ 의 자동완성) 2022. 3. 15.
server-토큰 기반 인증, 서버 기반 인증(JSON Web Token VS Session,Cookie) 서버 기반 인증 서버 측에서 사용자들의 정보를 기억하고 있어야한다. 정보를 기억하기 위해서 세션을 유지해야하는데, 이를 메모리나 디스크 또는 데이터베이스 등을 통해 관리한다. 서버 기반의 인증 시스템은 클라이언트로부터 요청을 받으면, 클라이언트의 상태를 계속해서 유지하며 서비스를 이용한다. 이러한 상태를 Stateful 서버(상태) 라고 한다. 특징 HTTP 프로토콜 요청에 따른 응답을 받으면 연결이 끊어진다. 통신이 종료되면 상태 정보가 남지 않아 Stateful 상태에서 Stateless 상태로 바뀐다. 단점 CORS(Cross-Origin Resource Sharing) 쿠키는 단일 도메인 및 서브 도메인에서만 작동하도록 설계되어 여러 도메인에서 관리하기 번거롭다. 확장성이 떨어진다. 서버를 확장하.. 2022. 3. 11.
Mac OS-포트 확인 및 죽이기 포트 확인 lsof -i :"포트 번호" ~ 번 포트를 사용중인 프로세스를 죽일 경우 sudo kill -9 "프로세스 번호" http://iyk2h.io/ 2022. 3. 8.
spring-boot, react, axios 사용시 Cors, session, cookie 문제 Spring-boot로 rest형식의 api를 구현하였고, React로 구현된 Client와 연결하는 작업중에 발생한 이슈이다. 구글링해서 찾은 3가지 방법 시도 1. spirn-boot에서 CORS 설정 -> 값 주고 받기 성공 (session 값은 가져오지 못한다.) (Cross-Origin Resource Sharing,CORS)란 다른 출처의 자원을 공유할 수 있도록 설정하는 권한 체제 즉, CORS 를 설정하지 않거나 잘못 설정하는 경우, 리소스를 공유하지 못한다. config.WebConfig.java 설정 package com.example.booking_service_01.config; import org.springframework.context.annotation.Configuratio.. 2022. 3. 4.
Linux2 OS- 쉘 스크립트 cd 명령어 사용 shell script 상에서 실행 되는 로직은 sub shell에서 동작 한다. 그래서 쉘이 동작중에만 이동한다. 즉 쉘 스크립트 안에서 디렉토리를 이동해서 작업이 하능하다. 하지만 스크립트가 끝나면 스크립트 시작한 디렉토리로 돌아온다. 스크립트가 끝이나고 디렉토리를 이동하려면./script.sh 대신 source script.sh 을 사용하여 스크립트를 실행하면 된다. 2022. 3. 1.
Spring boot Rebuild없이 정적소스(HTML,CSS,js) 적용방법 devtools 라이브러리 의존성 추가 maven org.springframework.boot spring-boot-devtools 2.0.4.RELEASE Gradle compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.4.RELEASE' application 옵션 추가 application.yml spring: devtools: livereload: enabled: true freemarker: cache: false thymeleaf: cache: false application.properties spring.devtools.livereload.enabled=true spring.freemark.. 2022. 2. 25.
Linux2 OS-포트 확인 및 죽이기 리눅스 열린 포트 확인, 오픈된 포트 확인 netstat -tnlp 20001 번 포트를 사용중인 프로세스를 죽일 경우 fuser -k 20001/tcp 포트 검색으로 프로세스 아이디 가져오기 netstat -tnlp|grep 20001 여기서 20001 이 찾고자 하는 포트번호 해당 프로세스 죽이기 kill -9 1234 1234가 1번 과정을 통해 찾은 PID(프로세스 아이디) 이런식으로 작성했는데, 매번 두번씩 shell을 입력하는게 귀찮았다. 그래서 “음? 그러면 두개를 하나로 붙이면 좋겠다!” 라고 생각했다. gawk를 사용해서 netstat의 결과에서 프로세스를 가져온 후 kill 명령어에 넘겨줬다. kill -9netstat -tnlp|grep 20001|gawk '{ print $7 }'|.. 2022. 2. 22.
MacOS) ssh 접속시 한글 깨짐 해결 원인 Mac이 영어로 설정되어 있었고, 터미널이 자동으로 컴퓨터의 Locale을 전송하도록 설정되어 있었기 때문 해결방안 사용하는 터미널 프로그램의 locale 자동 전송 설정을 해제 iTerm: preference -> Profiles -> Terminal 탭의 Environment의 set locale variables automatically 체크 해제 terminal: preference -> Profiles -> Advanced탭의 International의 Set locale invironment variables on startup 체크 해제 2022. 2. 18.
Linux2 OS-hostname 변경 [ec2-user@before-host-name] $ hostname before-host-name.internal [ec2-user@before-host-name] $ cat /etc/hostname before-host-name.internal [ec2-user@before-host-name] $ sudo hostnamectl set-hostname new-host-name [ec2-user@before-host-name] $ cat /etc/hostname new-host-name [ec2-user@before-host-name] $ sudo reboot [ec2-user@new-host-name ~] $ Linux2 OS 에서 hostnamectl set-hostname 명령어를 사용해 hostn.. 2022. 2. 15.
동기(Synchronous), 비동기(Asynchronous), 블록킹(Blocking),논블록킹(Non-Blocking) Reference - https://poiemaweb.com/js-async 동기 비동기 차이 동기는 요청 후 결과를 받을 때까지 다른 일을 하지 못한다. 비동기는 요청 후 결과를 받을 때까지 다른 일(다른 요청)을 할 수 있다. 동기(Synchronous) - 블록킹(Blocking)방식 동기식 처리는 직렬 적으로 태스크(task)를 수행한다. 즉, 태스크는 순차적으로 실행되며 어떤 작업이 수행 중이면 다음 작업은 블로킹(blocking, 작업 중단) 된다. T1, T2 트렌젝션의 단위를 동시에 맞춘다. 동기식 처리는 T1, T2의 -10000, +10000이 동시에 일어나기 위한 것으로, T1의 전송, T2의 결과 전송 후 동시에 진행 되어야 한다. 트랜젝션을 이용한 동시성 제어를 하기때문에 설계가 .. 2022. 2. 11.
신선한 충격 인프런 장애 회고 최근에 인프런 강의를 듣다 인프런 알림이 와 있어 확인해보니 장애 후기를 남겼다는 알림이 있었다. 장애가 일어난 이유는 100% 할인 이벤트를 진행했기 때문이다. 난 몰라서 신청하진 못 했지만. :) 장애 부검에 더 대한 궁금한 사람은 아래 링크를 참고하길 바란다. 2022년 1월 100% 할인 이벤트 장애 부검 posted by 향로(HyangLo), February 01, 2022 https://tech.inflab.com/202201-event-postmortem/ 이런 회고를 사용자에게 제공한다는 것은 신선한 경험이었기에 나도 공유하고 싶어 이렇게 공유해봅니다. 회고를 보고 느낀 점은 인프런에 합류해 같이 개발문화를 만들며 서비스를 개선하고 싶은 생각이 들었다. 스프링을 공부하고 있지만 접어두고 .. 2022. 2. 8.
Mac OS) cafe24 ssh 접속 Mac OS에 cafe24 ssh 접속하기 Mac Terminal을 사용한다면 Putty같은 프그램이 필요가 없다. 터미널 실행 후 $ ssh \[아이디\]@\[호스팅이름(도메인)\] > password: FTP 비밀번호 입력 로그인 성공 2022. 2. 4.
데이터 통신 전송매체 전송매체 전기신호의 전송을 위한 전송회선. 실제로 전송하는 물리적인 통로 물리적 도체 기반인 전자기적 또는 관학적 신호를 전송하는 유선매체와 특별한 도채 없이도 전자기적 신호를 송수신하는 무선매체로 나뉜다. 유선매체 장비 간 연결 통로를 제공하는 선 현태의 전송수단 물리적 특성에 따라 트위스티드 페어 케이블, 동축 케이블, 광케이블로 구분된다 트위스티드 페어 케이블 구조 두개 이상의 구리 도선이 꼬아진 모양, 접지선과 신호선을 구분하기 위해 특정 색깔의 플래스틱으로 절연하고 있다. 전송 특성 서로 근접해 있는 두 가닥의 도선에 전기가 통할 경유 전자기적 간섭이 잘생한다. 두 도선을 평행상태로 위치하면 한 선에 흐르는 신호는 다른 선에 간섭을 일으키게 된다. 하지만 두 선이 직각으로 위치하게 되면 두 선이.. 2022. 1. 28.
Oracle 권한 및 역할 권한 허가 - GRANT GRANT Privileges [(Column[,...n]])] [,...] [ON 객체] TO {사용자 | 롤 | PUBLIC [,...n]} [WITH GRANT OPTION] Privileges - 허가할 권한 지정. REFFERNCES는 외래키 제약조건을 생성하기 위한 참조 허가 권한. REFFERNCES(컬럼이름) 형태로 사용 (아래 표 참고) Column - 사용 권한을 부여할 테이블의 열 이름을 지정. 꼭 ()안에 표시. 권한을 허가받은 사용자만이 대상 테이블의 지정된 Column 사용 가능 객체 - 사용 권한을 부여할 객체를 지정. 테이블이나 뷰 등의 이름이 온다. TO 사용자 - 사용자나 권한의 묶음인 ROLE에 권한을 추가할 수 있다. PUBLIC은 모든 사용자.. 2022. 1. 21.
트랜잭션 트랜잭션 DBMS에서 데이터를 다루는 논리적인 작업의 단위(데이터를 읽거나 쓰는 프로세스) 트랜잭션 특징 ( ACID 성질) 트랜잭션은 데이터베이스의 무결성을 유지하기 위해 원자성, 일관성, 고립성, 지속성을 갖는다. Atomicity 원자성 all or nothing 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야 한다. 트랜잭션이 원자처럼 더는 쪼개지지 않는 하나의 단위처럼 동작해야 한다. Cinsistency 일관성 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상채를 유지해야 한다. Isolation 고립성 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경중인 데이터 값을 훼손하는 일이 없어야 한다. 다른 트랜잭션의 방해를 받지 않고 독립적으로 수행 Du.. 2022. 1. 14.
함수 종속성 함수 종속성(normalization) userId(pk) -> user_Address 와 같이 왼쪽 속성의 모든 값에 대하여 오른쪽 속성의 값이 유일하게 결정될 때 함수적으로 종속된다고 한다. 즉, 릴레이션 속성간의 함수적으로 종속하는 성질을 뜻한다. 릴레이션 속성간의 종속성을 파악해 릴레이션을 분리해 이상현상이 발생하지 않게 하는것이 중요하다. 함수 종속성 결정자(릴레이션의 기본키) 릴레이션의 기본키가 함수 종속성의 결정자가 된다. 기본키를 알아야 정규화 과정을 하기 수월하다. 함수 종속의 성질 R{X, Y, Z} augmentation: 만약 X→YX→Y이면, XZ→YZXZ→YZ이다. transitivity: 만약 X→YX→Y이고 Y→ZY→Z이면, X→ZX→Z이다. reflexivity: 만약 YY.. 2022. 1. 7.
DB 정규화 정규화 이상현상이 발생하는 테이블을 수정하여 이상현상을 최소화로 만드는 과정 정규화를 하기 위해 테이블의 기본키와 함수 종속성을 파악해야 한다. 이상현상의 개념 잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하면 이상현상이 일어난다. 테이블을 독립적으로 나누지 않고 하나의 큰 테이블로 작성시 일어나는 이상현상이다. 삭제이상(Delectoin anomaly) 투플 삭제 시 같이 저장된 다른 정보가지 연쇄적으로 삭제되는 현상 -> 연쇄삭제 문제발생 삽입이상(insertion anomaly) 투플 사입 시 특정 속성에 해당하는 값이 없어 NULL 값을 입력해야 하는 션상 -> NULL 값 문제 발생 수정이상(update anomaly) 투플 수정시 중복으로 저장된 뎅터 일부만 수정되어 데이터의 .. 2021. 12. 31.
ER다이어그램 데이터 모델링에서 개념적 모델링 단계에서 사용되는 다이어그램으로 개체(Entity)와 속성(Attribute)의 관계를 표현한다. ER -> ERD(IE) ER 모델을 관계 데이터 모델로 개체 타입 약한 개체 타입에 강한 개체 타입의 기본키를 외래키로 관계 타입 1:1관계 개체가 가진 유형에 따라 다른 개체의 기본키를 외래키로 1:N관계 N위치 개체에 1위치 개체의 기본키를 외래키로 N:M관계 별도의 릴레이션으로 생성해 N위치 개체, M위치 개체의 각각의 기본키를 외래키로 모델의 차수가 3개 이상인 관계 별도의 릴레이션으로 생성해 각각의 기본키를 외래키로 가져와 복합키로 사용 다중값 속성 user 의 hobby 처럼 여러개의 속성을 가지면 그 속성을 따로 독립적인 릴레이션을 만들어 저장 2021. 12. 24.
데이터 모델링 데이터모델링이란 소프트웨어를 개발하기위해 데이터 모델링이 먼저 되어야한다. 데이터 모델링은 소프트웨어에 필요한 복잡한 데이터를 단순화하고 추상화시켜 데이터베이스화 하는 과정 데이터베이스 생명주기 데이터베이스의 생명주기와 소프트웨어 개발의 생명주기는 거의 유사하다. 큰 차이는 테스트 후 운영 및 유지보수 인 것이다. 데이터베이스 생명주기 (database life cycle) 요구사항 수집 및 분석, 설계, 구현, 운영, 감시 및 개선 소프트웨어 개발 생명주기(software life cycle) 요구사항 수집 및 분석, 설계, 구현, 테스트, 유지보수 요구사항 수집 및 분석 사용자, 개발자, 의뢰인의 요구사항을 듣고 분석하여 데이터베이스 구축의 범위를 정하며, 정확하게 요구사항을 정리 설계 설계는 3가지.. 2021. 12. 17.
신호 데이터 통신을 할 경우 통신을 위해 정보를 전자기 신호 혹은 광신호로 변환해 전송매체를 통하여 전송한다. 이러한 신호에는 아날로그 신호와 디지털 신호로 크게 나뉜다. 아날로그 신호 : 음성, 진동 등 연속적으로 변하는 전자기파 디질털 신호 : 컴퓨터 등 데이터를 일련의 이산 값들로 표현하기 위해 사용되는 신호, 즉 무한한 단계들의 비연속적인 파형, 아날로그 신호보다 저렴하고 잡음에 둔하지만 감쇄현상으로 의미가 왜곡되어 피해를 입을 수 있다. 아날로그 데이터 : 연속적인 값 디지털 데이터 : 불연속적인 값 (이산적(discrete)) 위와 같은 신호들은 주기적 신호와 비주기적 신호로 나뉜다. 아날로그 신호의 구성요소 진폭 : 신호의 높낮이 (볼트(V전압), 암페어(A전류), 와트(W전력) 등) 위상 : 0.. 2021. 12. 10.
mapstruct/Lombok차이 및 충돌 오류, cannot find symbol 차이 ModelMapper 은 modelMapper.map 매핑이 일어날 때 리플렉션이 발생하고 MaStruct 는 컴파일 시점에서 구현체를 만들어 리플렉션이 발생하지 않는다 *리플렉션은 구체적인 클래스 타입을 알지 못해도, 컴파일한 클래스 정보를 활용해 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해 동적으로 프로그래밍이 가능하도록 지원하는 API *동적으로 프로그래밍 -> 런타임 시점에 타입을 결정 즉, ModelMapper은 런타임에 매핑이 일어나고 MaStruct은 컴파일 시점에 구현체를 만든다. 문제 mapstruct가 정상적으로 작동하지 않았으며, "cannot find symbol"오류 발생 충돌 원인 mapstruct를 호출하는 방식이 조금 달라서 Lombok과 충돌이 발생 해결.. 2021. 12. 3.
네트워크 및 데이터 통신 개념 정리 네트워크란 지역적으로 분산된 다수의 기기들을 결합시켜 상호 간의 정보전달을 가능케 하는 전달매체로 노드와 링크의 집합이다. 처리량과 지연 시간 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량(throughput) 초당 전송 또는 수신되는 비트 수라는 의미 처리량은 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 하드웨어 스펙에 영향을 받는다. *대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 지연시간(latency) 요청이 처리되는 시간을 말하며 어떤 메시지가 두 노드 사이를 왕복하는 데 걸리는 시간 지연 시간은 메체 타입, 패킷 크기, 라우터의 패킷 처리 시간에 영향을 .. 2021. 11. 26.
OSI 참조모델 정리 OSI 참조모델 국제표준기구 ISO에서 1980년 말경에 정보교환을 위해 필효한 최소한의 네트워크 구조를 제공하는 OSI 기본 참조모델을 제안, 1983년에 국제표준(ISO 7498)으로 제정되었다. 네트워크를 이해하기 위해서 공부해야한다... ISO에서는 OSI(Open System Interconnection:개방형 시스템 간 상호접속)을 위해 이기종 간 상호접속을 위한 가이드라인을 제시하고자 했다. OSI 참조모델의 목표 시스템 간의 통신을 위한 표준 제공과 통신을 방해하는 기술적인 문제들이 제거 단일 시스템 간의 정보교환을 하기 위한 상호접속점을 정의 제품 간의 번거로운 변환 없이 통신할 수 있는 능력을 향상시키기 위해 선택사앙을 축소 OSI 참조모델 표준이 모든 요구를 만족하지 못할시, 다른 방.. 2021. 11. 19.
ORACLE SQL 정리 - 2 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) NULL 값 처리 NULL값은 아직 지정되지 않은 값으로 0, ' ' 등과 다른 특별한 값 그래서 비교 연산자로 비교가 불가능. 집계 함수 사용시 주의점 NULL + 숫자 = NULL 집계 함수 계산시 NULL이 포함된 행을 예외 NULL 값을 확인하는 방법 - IS NULL, IS NOT NULL where IS NULL; NVL(속성,값) : NULL 을 다른 값으로 대치 혹은 연산 후 다른 '값'으로 출력 (AS와 비슷) ROWNUM 오라클 내부적으로 생성되는 가상 컬럼으로 SQL 조회 결과의 순번을 나타낸다. 부속질의.. 2021. 11. 12.
ORACLE SQL 정리 - 1 오라클로 배우는 데이터베이스 개론과 실습 | 박우창, 남송휘, 이현룡 지음 | 한빛아카데미| 2020년 07월 30일 출간된 책을 통해 개념을 정리한 글 (문제시 삭제 하겠습니다.) SQL 기능에 따른 분류 DDL (데이터 정의어) CREATE, ALTER, DROP 테이블이나 관계의 구조를 생성, 변경, 제거 DML(데이터 조작어) SELECT, INSERT, DELETE, UPDATE 테이블에 데이터를 검색, 삽입, 삭제, 수정 DCL(데이터 제어어) GRANT, REVOKE 데이터의 사용 권한을 관리 DDL CREATE TABLE 테이블을 구성하고, 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의하는 명령 PRIMARY KEY는 기본키, FOREIGN KEY 는 외래키 기본 문법 CR.. 2021. 11. 5.
728x90