log 2021-12-29
blog
어제 회사의 서비스에 대한 개발 프로세스 관련 및 테크니컬 온보딩을 받았다. 설명이 이렇게 쉽다는 것은 이해도가 그만큼 높고 친숙하기에 가능한 듯하다.
테스트를 위한 api/앱 서버 주소정리 필요. 이제 요청 뜯고 코드 변경하고 보면서 점차 파악해나갈 예정
ccxt를 지원한다고 되어있는데, 해당 저장소의 지원 목록에 없다. 왜지??
study
rxjs 공부 3
오퍼레이터 공부 1
- 파이프 오퍼레이터
Observable
을 받아서 다른Observable
을 리턴함.- 결과
Observable
을 구독하면 입력Observable
도 구독하게 됨.
-
생성 오퍼레이터 : 입력을 받아
Observable
생성. - 만든 테스트:
of
: 배열같은 iterable로부터Observable
생성interval
wip: ms 시간 간격으로 0부터 시작하는 값을 출력하는Observable
생성- project
autocomplete
wip: 빠른 입력의 변경이 멈춘 후에 리퀘스트 보내도록 하는 기능 만들어보기- debounce?
- 내가 원하는 것: 일정 시간 기다려서 변화 없으면 요청 보내기
수많은 operator들이 있지만, 의미있는 시나리오가 아니면 잘 와닿지 않아서 자동완성/api 요청 등의 여러 시나리오를 가정하고 직접 구현, 테스트를 작성하면서 공부할 예정.
interval
과 of
는 간단하고 앞의 예제와 비슷하다..
project autocomplete
먼저 입력 대상 문자열을 쪼개서 점차 늘어나는, 빠른, 여러 번의 입력으로 바꾸려는데, 이 부분부터 좀 애매하다.
단순 delay
를 쓰면 그냥 모든 입력들이 해당 시간만큼 평행하게 지연될 뿐이라 의미가 없고, interval(20)
정도와 어떻게 1:1로 조합시켜야 할 듯한데..
테스트 리팩토링
테스트들을 리스팅한 변수로부터 동적으로 테스트를 로드하기 위해 await import('path')
문을 이용했는데, 이상하게 아래와 같은 에러가 뜨면서 테스트 실행이 되질 않았다.
A runnable must be passed a function as its second argument
알고봤더니, 아래 두 구문이 같은 역할을 하게 되는 것이었다:
정적 import
// module A
export default function () {...};
// module B
import AFunction from './A';
동적 import
// module A
export default function () {...};
// module B
async function run() {
const AFunction = (await import('./A')).default;
// or
const { default: AFunction } = await import('./A');
}
job
세로 모니터 설정
하려는데 왜인지 설정이 되질 않음. (디스플레이 설정해서 ‘적용’ 눌러도 다시 이전설정으로 돌아감.) xrandr로 하라는 말도 있는데 여전히 되질 않아서 그냥 우분투 배포판을 업뎃하려 함. 근데 업데이트가 오래 걸려서, 일단 rxjs 공부하면서 진행.
우분투 18.04->20.04 업데이트 후 잘 된다.
Comments