목록분류 전체보기 (220)
코딩마을방범대
개발 환경 local(로컬 개발 환경) -> dev(서버 개발 환경) -> Integration(통합 개발 환경) -> QA(테스팅 환경) -> staging(스테이징 환경) -> production(운영 환경) 1. local (로컬 개발 환경) 각 개발자마다 설치된 서버 환경을 local 환경이라고 함 ex) MySQL 등의 DB, Tomcat, Eclipse와 같은 개발 툴, 컴파일러 등 개발 환경을 표준화 하는 방법은 여러가지가 있지만, 전체 개발 환경 (JDK,Eclipse,library)을 zip파일 형태로 묶어서 사용하는 방법이 가장 일반적 1과 2 사이의 🎇 PoC (Proof of Concept) 새로운 프로젝트가 실제로 실현 가능성이 있는지, 효과와 효용, 기술적인 관점에서 검증 하는 ..
CI(Connecting information)란? 88byte(영대소문자+특수+숫자) 서비스를 연계하여 서로 다른 인터넷 서비스 간에도 동일한 사용자인지 구분을 가능하게 해주는 정보 CI = 주민번호 + @ 공식으로 지정된 본인확인 인증기관(주민번호 관리-나이스, KCB 등)에 인증을 받고 각 사이트는 CI와 DI값을 받음 공인인증서나 휴대폰인증은 CI와 DI값을 얻기 위한 매개체 수단(CI 자체가 아님) 단점 주민번호를 없애고자 도입한건데 주민번호와 1:1 매칭이 됨 (도입 취지 퇴색) DI(Duplication Information)란? 64byte(영대소문자+특수+숫자) 중복 가입 체크 같은걸 방지하기 위한 정보 DI = CI + 사이트 고유코드 여러 개 아이디를 만들었을 때 각자 계정 ID가 달..
해싱(hashing) 이란 해시 함수에 문자열 입력값을 넣어서 특정한 값으로 추출하는 것 해시 함수란? 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수 입력값을 해싱했을 때 출력값은 일정하다는 것을 근거로, 사용자의 비밀번호나 중요 정보의 내용을 해싱하여 복호화 할 수 없음 특징 어떤 입력 값에도 항상 고정된 길이의 해시값을 출력한다. 눈사태 효과 : 입력 값의 아주 일부만 변경되어도 전혀 다른 결과 값을 출력한다. 출력된 결과 값을 토대로 입력값을 유추할 수 없다. 해시 테이블 (Hash Table) 해시 함수로 매핑한 키 값을 인덱스로 한 배열 혹은 객체 Java : Hash Map Javascript : 객체 or Map Python : 사전(dictionary) 충돌 (Collisio..
Cipher 암호화, 복호화 기능을 제공 대칭키 알고리즘 암호문의 성질 혼돈(confusion) 암호문으로부터 키를 알아낼 수 없게 하는 성질 키의 비트 하나만 바꿔도 암호문 전체가 바뀌도록 하는 성질 확산(diffusion) 암호문으로부터 원문을 알아낼 수 없게 하는 성질 원문의 비트를 하나만 바꿔도 암호문 전체가 바뀌도록 하는 성질 암호 알고리즘 혼돈과 확산을 달성하기 위해 Substitution과 Permutation을 이용 Substitution - 문자를 다른 문자로 바꾸는 것 Permutation - 문자들의 순서를 바꾸는 것 SPN(Substitution Permutation Network) Substitution-Permutation을 연속하여 수행하도록 이어 놓은 것 데이터를 블록 단위로..
🎃 설정 확인 방법 설정된 name, eamil 확인법 git config user.name git config user.email 진행 히스토리 확인 git log git 원격 저장소 확인 법 (보통은 origin) git remote 로컬저장소에 설정한 레퍼지토리 주소 확인 git remote -v 브랜치 확인 git branch 현재 저장소의 상태 확인 git status commit 상태 확인 git log repoisoty 위치 확인 현재 작업 중인 디렉토리가 Git 리포지토리 밖에 있다면, 이 명령어는 오류 메시지를 출력하게 된다. git rev-parse --show-toplevel 🎃 환경설정 name, email 설정법 git config --global user.name "Danbi K..
ModelMapper란 서로 다른 클래스의 값을 한번에 복사하게 도와주는 라이브러리 DTO와 Entity를 변환할 때 Getter, Setter을 이용할 경우 번거롭기 때문에 사용 modelmapper는 런타임시점에 리플렉션이 발생하므로 성능 저하가 매우 심함 컴파일 시점에 코드가 생성되는 mapstruct 사용하는 것을 권장 사용법 1. build.gradle // https://mvnrepository.com/artifact/org.modelmapper/modelmapper implementation group: 'org.modelmapper', name: 'modelmapper', version: '3.1.1' 2. Configuration @Configuration public class Cust..
단방향 & 양방향 암호화 1. 양방향 암호화 암호화된 암호문을 복호화 할 수 있는 알고리즘을 의미 대칭키(비공개키)와 비대칭키(공개키) 비대칭형 암호를 이용해서 대칭형 암호의 키를 배송하고 실제 암호문은 대칭형 암호를 사용하는 경우가 많음 대칭키(비공개키) 방식 암복호화에 서로 동일한 키가 사용되는 암호화 방식 속도가 빠름 키 배송 위험성 존재하여 송신 측에서 수신측에 암호 키를 전달하는 과정에서 노출 우려가 있음 비대칭키(공개키) 방식 암복호화에 서로 다른 키가 사용되는 암호화 방식 키 배송의 문제를 근본적으로 차단하여 안전성이 높음 대칭키(비공개키)방식에 비해서 느림 공개키로 암호화 한 후 개인키로 복호화 2. 단방향 암호화 암호화는 수행하지만 복호화가 불가능한 알고리즘 최소한 SHA-256, 가능하..
Autowired를 지양하는 이유 객체지향에서 피해야할 것은 지나치게 큰 의존도를 만드는 것 spring 초기 버전: xml파일에 Bean 명세를 적어 사용 ↓ ApplicationConfig에 java코드로 Annotation을 사용 ↓ @Autowired의 등장으로 명세를 적어줘야하는 일을 하지 않아도 됨 의존성을 주입하는 방법 1. @Autowired 사용 순환참조가 되는 경우 빌드과정에서는 알 수 없음 final 사용 불가능 순환참조의 문제점 컴포넌트 간의 명확한 경계가 사라지고 연쇄적으로 변경에 의한 영향이 발생 @Autowired private User user; 2. Setter 사용 set하지 않을 경우 NullPointException 발생 private User user; @Autowi..