본문 바로가기

기타23

vim plugin 설치 방법 vim 세계에는 정말 많은 플러그인들이 존재한다. 최소한의 기능은 플러그인 없이도 .vimrc 파일에서 설정할 수 있지만, 그러기에는 너무 아까운 플러그인들이 많다. 당장 옆자리에서 사용하는 사람들만 봐도 모두 제각각으로 쓰고 있을 것이다. 원하는 기능이 있거나 인기있는 플러그인은 vimawesome.com 에서 한눈에 볼 수 있다. 내 로컬에 플러그인을 관리하는 매니저만 잘 사용하면 이 기능들을 손쉽게 사용할 수 있다. vim-plug 설치 가장 사용하기 쉬운 플러그인 매니저이다. github.com/junegunn/vim-plug 에서 확인할 수 있고 먼저 설치하라는 대로 따라 한다. $ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw... 2021. 3. 21.
[bash] file descriptor redirection 문법 stdin의 file description은 0, stdout은 1, stderr는 2번이다. 입력은 , 이어서 출력은 >> 로 redirection 한다. 이때 입력의 기본 fd는 0(stdin), 출력, 이어서 출력의 기본은 1(stdout)이다. 따라서 이 redirection 기호는 0, 1>> 와 같다. redirection 왼쪽에 file description를 사용한다면 공백이 없어야 한다. redirection 오른쪽에는 파일 이름 또는 file description이 온다. 이 둘을 구분하기 위해 file description이 올 경우에는 &를 붙여줘야 하고 공백도 없어야 한다. 예시 현재 폴더에 존재하지 않는 unknownfile을 읽어서 에러를 발생시켰다. >를 사용해서 stdout.. 2020. 10. 14.
Docker network mode docker container는 격리된 환경에서 실행되지만 각자의 network가 있다. docker network는 다른 container와의 연결, host와의 연결, 더 나아가 다른 host의 container의 연결까지 관리한다. $ docker network ls NETWORK ID NAME DRIVER SCOPE 249b79cb7a4e bridge bridge local b53c426584d6 host host local 667cc038310f none null local docker network는 기본으로 bridge, host, null 등 3가지 종류가 자동으로 생성된다. Bridge container를 생성할 때 기본 네트워크 옵션이다. 자동으로 생성된 default bridge의 이.. 2020. 5. 7.
Swagger openapi 사용법 OpenAPI는 REST API를 사용하는데 필요한 정보를 담은 규격이다. yaml이나 json으로 endpoint, parameter, response 등 모든 api를 표현한다. OpenAPI 3.0.0부터는 Swagger specification이 OpenAPI specification으로 이름을 바꾸고 여러 다른 회사/단체와 힘을 합쳐 표준화가 진행되었다. OpenAPI에서는 모델을 정의하고 재활용하는 문법을 통해 중복되는 선언을 줄일 수는 있지만 막상 작성하다 보면 크기가 방대해지는 건 어쩔 수 없다. 소스코드에서 api 명세를 작성하는 방법이나 다른 여러 방법들이 존재하지만 모든 불만을 충족시켜줄 순 없는 노릇이라 직접 해보며 경험을 쌓아보는 게 좋을 것 같다. openapi 첫 줄은 open.. 2020. 4. 2.
CSS flex 기본 flex로 css를 작업할 때 항상 유의해야 하는 것이 바로 축이다. 축은 결국 방향을 가리키는데 화살표로 기억하면 쉽다. 이 화살표는 flex-direction으로 설정할 수 있다. flex-direction: row | row-reverse | column | column-reverse row: 아이템을 → 방향으로 배치 (기본값) row-reverse: 아이템을 ← 방향으로 배치 column: 아이템을 ↓ 방향으로 배치 column-reverse: 아이템을 ↑ 방향으로 배치 이 화살표 방향을 따라 내부 아이템들을 배치시킨다. 내부 아이템의 속성이 많은데 괄호 안의 화살표를 기반으로 동작하기 때문에 이 방향을 확실히 인지하고 있어야 한다. 먼저 justify-content는 flex-direction.. 2020. 3. 12.
분산 트랜잭션 - 2단계 커밋(two-phase commit) 트랜잭션은 어떤 일련의 처리의 원자성을 보장하기 위한 방법이다. 흔히 쓰는 mysql에서는 START TRANSACTION으로 트랜잭션을 시작하고 COMMIT 명령으로 이를 실행한다. 디스크에 COMMIT 명령이 성공적으로 써지면 mysql이 장애로 죽는다 해도 디스크에 써둔 로그로부터 복구할 수 있다. 만약 디스크에 쓰기가 실패한다면 트랜잭션은 abort 되고, 트랜잭션에 묶였던 명령은 rollback 된다. 이런 절차를 통해 트랜잭션 단위로 쓴 모든 명령이 성공하거나 실패했다는 원자성을 보장한다. 하지만 하나의 데이터베이스/시스템이 아닌 여러 개의 분산 환경이라면 위의 방법만으로는 충분하지 않다. 한 곳에서는 트랜잭션이 commit 되었지만, 다른 한 곳에서 abort 된다면 분산 트랜잭션의 원자성을.. 2020. 2. 20.