목록분류 전체보기 (112)
컬쥐네 다락방
Docker compose를 vi 편집기로 편집하다보니 명령어를 모르니 쓸 수가 없어서 간단하게 정리하게 됐습니다! . Linux, Unix 환경에서 사용하는 vi 편집기는 명령 모드, 입력 모드, 마지막 행 모드 크게 3가지로 나눌 수 있습니다. 1. 명령 모드 : 처음 vi 편집기를 이용해 파일을 실행하면 들어가는 모드입니다. 여기서는 방향키를 이용해 커서를 이동할 수 있고 "dd"나 "yy"로 한 줄 삭제 혹은 붙여넣기가 가능합니다. "x" 는 글자 하나 삭제 명령어입니다. 2. 입력 모드 : 명령 모드에서 "i"나 "a"를 입력하면 입력 모드로 전환됩니다. 입력 모드에서는 자유롭게 코드나 글 작성이 가능! 다시 명령 모드로 돌아가려면 "ESC"를 누르면 된다. ("i"는 커서가 현재 위치한 부분에..
인덱스(Index)란? 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해서 사용한다. 인덱스는 자주 사용되는 필드 값으로 만들어진 원본 테이블의 사본이라 생각할 수 있다. MySQL은 데이터를 검색할 때 첫 번째 필드부터 차례대로 테이블 전체를 검색한다. 따라서 테이블이 크면 클수록 데이터를 탐색하는 시간도 많이 늘어나게 된다. 하지만 인덱스를 사용하면 테이블 전체를 읽지 않아도 되므로 검색과 정렬에 대한 처리가 빠르게 이루어진다. 이때 이런 인덱스는 사용자가 직접 접근할 수 없고 검색과 정렬에 대한 처리에서만 사용된다. 인덱스는 설정된 필드 값을 포함해 데이터의 삽입, 삭제, 수정 작업이 원본 테이블에서 이루어질 경우 인덱스도 함께 수정이 필요하다. 따라서 인덱스가 설정된 테이블은 처리 속도가 느려질 ..
데이터 준비 모델을 학습시키기 위해서 좋은 데이터셋이 필요하다. 데이터 셋을 확보한 뒤 Feature Engineering을 거쳐서 최종 데이터 셋을 준비하고, 이를 Training, Validation, Testing(훈련, 검증 ,테스트) 3그룹으로 나눈다. Training Set이 모델이 학습하는데 사용될 데이터이고 Validation Set은 학습 과정에서 모델의 성능 향상과 최적화를 위해 검증용으로 사용된다. Test set은 학습이 완료된 모델의 최종 성능을 평가하는데 사용된다. 작은 데이터 셋에서는 보통 6:2:2 비율로 나뉘고, 큰 데이터 셋(백만개 이상)에서는 98:1:1로 나누어 사용한다. 나누는 이유는 너무 작은 데이터 셋에서 학습 데이터의 비중이 클 경우 모델이 학습 데이터에만 심하..
AL . Artificial Intelligence. 인간의 학습 능력, 추론 능력, 지각 능력을 인공적으로 구현하려는 컴퓨터과학의 세부 분야. 가장 먼저 연구가 시작된 분야로 머신 러닝과 딥 러닝을 포함하는 가장 폭 넓은 분야이다. Russel 교수님은 다음 4가지 관점으로 AI를 정의했다. Acting Humanly Turing Test: 이미테이션 게임을 생각하면 쉽다. 테스터는 컴퓨터와 사람에게 동일한 질문에 대한 답을 듣고 컴퓨터와 사람을 구분할 수 없다면 이를 인공지능으로 정의할 수 있다. Thinking Humanly 인지과학에서 연구되는 부분이다. 사람 뇌의 내부적인 동작 방식과 동일하게 동작하는 것이 인공지능이다. Thinking Rationally 논리학, 논리적 추론의 관점에서 인공지..
JPA를 사용할 때 ID값으로 엔티티를 가져오는 방법에는 두 가지가 있다. getById()와 findById(). 두 메소드는 비슷하지만 차이점이 존재한다. 1. getById() getById()는 원래 getOne()이었으나 해당 메소드는 더이상 사용되지않고 대체되었다. 내부적으로 EntityManager.getReference() 메소드를 호출하기 때문에 엔티티를 직접 반환하는 것이 아니라 프록시만 반환한다. 프록시만 반환하기 때문에 실제로 사용하기 전까지는 DB에 접근하지 않고, 접근을 시도할 때 데이터가 없으면 EntitiyNotFoundException이 발생한다. 2. findById() findById()는 실제 DB에 요청해서 엔티티를 가져오는 메소드이다. 영속성 컨텍스트의 1차 캐시를..
운영 체제의 역할 : 시스템 자원(System Resource) 관리자 - Operating System 또는 OS 라고 부른다. 시스템 자원 = 컴퓨터 하드웨어 - CPU (중앙처리장치), Memory(DRAM, RAM) - I/O Devices(입출력 장치) - 저장매체: SSD, HDD 컴퓨터 하드웨어는 스스로 할 수 있는 것이 없다. 1. CPU : 각 프로그램이 얼마나 CPU를 사용할지를 스스로 결정할 수 없다. 2. Memory : 각 프로그램이 어느 주소에 저장되어야 하는지, 어느 정도의 메모리 공간을 확보해줘야 하는지 스스로 결정할 수 없다. 3. 저장매체(HDD,SSD) : 어떻게, 어디에 저장할지 결정할 수 없다. 4. 키보드/마우스 : 스스로 표시할 수 없다. → 운영 체제의 필요성 ..
요즘 기업들을 과제를 하면서 하나 둘 배우는게 정말 많은데 바쁘다는 핑계로 정리해두는 일을 미루고있다 . 반성하며 간단히라도 적어놓고 나중에 다시 찾아보는 일이 없도록 해보자 ! Spring을 이용하면 Spring JPA의 spring.jpa.generate.ddl 이나 Hibernate의 hbm2ddl.auto 등의 기능을 사용할 때가 많다. 프로그램을 구동할 때 @Entity 라는 어노테이션을 찾아서 자동으로 테이블을 생성하고 맵핑을 해준다. 이런 기능을 사용하면 간단하게 DB 관리를 할 수 있어서 편한다는 장점이 있지만, 테이블 스키마가 변경되거나, 필수로 초기에 들어가야하는 데이터들이 수정되었을 때 히스토리 관리가 잘 되지 않는다는 단점이 있다. Flyway는 이런 히스토리 관리쪽에서 장점이 있다..
면접 대비를 위해 공부하던 중 JWT와 OAuth 를 비교하는 질문을 봤다. 찾아보니 이 둘을 비교하는 것은 흔한 질문이지만, 좋은 접근은 아니다. JWT가 과일이라면 OAuth는 과일을 담는 상자라고 볼 수 있다. JWT는 Token의 한 형식이고, OAuth는 하나의 Framework이다. 여기서 OAuth가 Framework인 이유는 1. 토큰을 요청할 때 사용할 수 있어야하는 요청 및 응답의 순서와 형식만 있다. 2. 각기 다른 시나리오에서 어떤 방식으로 권한 부여 유형을 사용할지 정한다. 그리고 JWT는 이러한 Framework에서 발생하는 산출물로 볼 수 있다. 물론 Auth Framework를 통해 나온 OAuth Bearer token과 단순한 JWT 토큰은 차이가 있다. OAuth Tok..