목록분류 전체보기 (94)
혼자 정리
오토마타의 한 종류인 finite accepter의 특징은 다음과 같다. 임시 storage를 갖지 않음 input 파일의 내용을 수정할 수 없기 때문에 계산 과정에서 무언가를 '기억'하는 것에는 한계를 가짐. 제한된 정보는 control unit의 state를 조정하는 것을 통해서만 기억될 수 있다. 그런데 그러한 state 수는 유한하므로 finite 오토마타는 특정 시점에 저장되는 정보가 엄격하게 제한되는 상황만 처리 가능하다. Deterministic Finite Accepters def) A deterministic finite accepter or dfa is defined by the quintuple $$ M = (Q, \Sigma, \delta, q_{0}, F), $$ where $Q$..
Automata 디지털 컴퓨터의 추상화된 모델. input file에 기록된 alphabet들로 이루어진 string을 input으로 입력받는다고 가정. (수정 불가) input file은 cell로 구분되고, 각 cell은 하나의 symbol을 담고 있다. input 메커니즘은 왼쪽에서 오른쪽으로 input string의 symbol을 한 번에 하나씩 읽어들이고 EOF 조건을 인식하여 input string의 끝을 감지할 수 있다. 기계는 output을 생성할 수도 있다. cell 갯수 제한이 없는 임시 storage 장치를 가질 수 있고 하나의 cell은 하나의 symbol만 가질 수 있다. 기계는 storage cell의 내용을 읽고 수정할 수 있다. 오토마타는 control unit을 가지고 이는..
Language alphabet : 하나 이상의 symbol의 finite set string : alphabet에 속하는 symbol의 finite sequence ex) alphabet $\Sigma = { a, b }$이면 $abab$, $aaabbba$ 는 $\Sigma$의 string concatenation of two strings $w$ $v$ : $v$의 symbol들을 $w$의 오른쪽 끝에 붙이는 것. ex) $w = a_{1}a_{2}a_{3}$ and $v = b_{1}b_{2}b_{3}$ 이면, $wv = a_{1}a_{2} \cdots a_{n}b_{1}b_{2} \cdots b_{m}$. reverse of a string $w$ : $w^{R} = a_{n} \cdots a_..
참고 내용 : "테스트 주도 개발 시작하기" (최범균 저) 10장 변수나 필드를 사용해서 기댓값 표현하지 않기 변수나 필드를 사용하면 값 파악이 어렵기 때문에 테스트 코드 파악이 어려워짐 두 개 이상 검증하지 않기 개별 검증 대상에 대한 집중도를 높이자 정확하게 일치하는 값으로 모의 객체 설정하지 않기 특정한 값에 대해서만 모의 객체가 리턴하도록 하면 테스트할 때 넘긴 값의 작은 변화에도 테스트가 깨져버린다. 정확한 값으로 호출되는 것이 중요한 테스트가 아니라면 모의 객체가 반응할 값을 너무 한정짓지 말자. anyString() 등으로 해줘도 무리 없는 경우들이 많을 것이다. 과도하게 구현 검증하지 않기 과도하게 내부 구현을 검증하면 구현 변경으로 테스트가 깨질 가능성이 커진다. 가능하면 내부 구현보다 ..
(내용에 오류가 있는 경우 댓글로 정정 부탁드립니다) 도커 데몬은 persistent하게 관리해야 할 데이터를 data-root 디렉토리에 저장한다. (ex. 컨테이너, 이미지, named volumes) 해당 디렉토리는 따로 설정해주지 않는 경우 /var/lib/docker 로 설정된다. 일반적인 경우에는 기본 설정 값을 사용해도 되지만 모종의 이유로 이를 직접 설정해줘야 할 경우가 생길 수 있다. (ex. 여러 개의 도커 데몬을 구동, 기본 data-root의 스토리지의 용량 부족 문제, etc.) 이런 경우에 data-root 설정 값을 변경하고 기존 데이터를 가져오는 작업을 진행해보았다. (Ubuntu 기준) 현재 설정된 Data Root Directory 확인 docker info커맨드에서 Do..
@Value 어노테이션 대신 사용하는 이유? 링크 온전한 relaxed binding 허용 @Value 어노테이션에서는 지원되는 부분이 있고 아닌 부분이 있기 때문에 일관적이지 않을 수 있다. metadata support properties 파일을 작성할 때 소스 코드에 있는 프로퍼티 정보대로 IDE가 자동 완성을 제공할 수 있도록 지원한다. 프로퍼티 구조가 여러 단계로 계층화되어 있으면 클래스로 맵핑하는 것이 직관적일 수 있다. IDE support을 위한 설정 IDE의 자동 완성을 지원하려면 다음의 의존성 추가가 필요하다. dependencies { annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" }..
NestJS의 기본 Exception 필터는 프레임워크에서 제공하는 기본 HttpException 에러 클래스 류를 제공한다. 처음 생각한 방향은 특정 컨트롤러에 서비스 레이어에서 던지는 에러를 catch할 수 있는 필터를 장착한 후, 해당 필터에서 HttpException클래스로 예외 전환을 해서 던지려고 했다. 그렇게 하면 글로벌 기본 필터에서 HttpException을 잡을 것이라고 생각했기 때문이다. 하지만 그렇게 해 본 결과 예외가 던져진 후 응답 처리가 되지 않았다. 공식 문서를 찾아보니 이유가 자세히 나와 있었다(https://docs.nestjs.com/faq/request-lifecycle#filters). Filters are the only component that do not re..
다음 형태의 미리 정의된 함수 타입을 가지고 있었다. type FunctionA = (keys: string[]) => void; type FunctionB = (mutator: (prevKeys: string[]) => string[]) => void; 두 함수 타입에서 받을 수 있는 파라미터를 모두 허용하는 함수 타입을 만들고자 했다. 사실 다음처럼 하면 되기는 한다. type FunctionAll = (param: string[] | (mutator: (prevKeys: string[]) => string[])) => void; 그렇지만 이미 정의된 타입을 사용하려 해서 다음과 같이 정의해보았다. type FunctionAll = FunctionA | FunctionB; 그 후 (mutator: (..
https://programmers.co.kr/learn/courses/30/lessons/92334 첫 풀이 import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; class Solution { public int[] solution(String[] id_list, String[] report, int k) { HashMap accused = new HashMap(); HashMap accusedCount = new HashMap(); Set criminalSet = new HashSet(..
상황 리액트에서 직접 검색할 수 있는 드랍다운을 커스텀으로 구현. onBlur 속성에 핸들러를 달아서 인풋 바깥을 클릭했을 때 드랍다운이 닫히도록 하고자 했음 const onBlur = useCallback(() => { // 드랍다운 닫는 행동 }, [/* dependencies */]); return ( // pre-input elements... // after-input elements... ); 문제점 드랍다운에서 선택(클릭 또는 리턴 키 입력)을 하지 않고 blur이벤트가 발생하는 경우 입력하던 input칸이 초기화되도록 해놓은 상태. 유저는 input에서 중간까지 입력하고 나머지 입력할 것이 생각나지 않아서 다른 창으로 넘어갔다가 오는 경우가 있는데(ex. alt+tab) 이 때도 blur이..