Hugo: 외부 링크 새 탭에서 열기

블로그에서 외부 링크를 열때 새 탭을 쓰지 않고 현재 탭에서 링크를 여는 게 마음에 들지 않았다. 지난 수년 간 블로그를 운영하면서 이 문제를 깨닫지 못한 것은 아마도 링크를 열 때는 거의 항상 Cmd+클릭을 사용하는 내 습관 때문이었을 것이다. 최근에 문득, '외부 링크는 그냥 새 탭에서 여는 게 맞지 않을까?' 하는 생각이 들었다.

Read more...

Rust에서 명령행 인자 파싱

Rust에서는 명령행 인자를 어떻게 처리할까? 예전에 Rust로 작성한 HTTP 에코 서버 reflexive는 포트 번호가 하드코딩 되어 있고 워커 개수는 디폴트 값을 사용하고 있는데, 포트 번호와 워커 개수를 명령행 인자로 받으려면 어떻게 해야 할까?

Read more...

불운 5

1

계속 재택근무를 하다보니 어느새 아이들 학교에 데려다 주는 게 내 일이 되었다. 그날은 두 아이 모두 사이클 코치라는 자전거 연습 클럽에 가야 해 평소보다 일찍 집을 나섰다. 뭐가 마음에 안 드는지 자전거를 끌고 학교에 가면서 계속 투덜대는 아이들을 겨우 어르고 달래 학교에 넣었다.

Read more...

Rust Echo 서버

요즘 Rust를 조금씩 보고 있는데, 갑자기 Rust로 에코 서버를 만들어보면 어떨까 하는 생각이 들었다. 에코 서버는 요청을 그대로 리턴하는 서버를 말하며, 보통 클라이언트가 서버에 제대로 연결되었는지 테스트하는 용도로 사용된다.

Read more...

JSON 파서 구현 2 - 파서

1부에서 JSON 스캐너를 구현했다. JSON 스캐너는 JSON을 읽어 토큰 리스트를 생성한다. 이제 토큰 리스트를 읽어 데이터 구조로 바꿔줄 파서를 구현할 차례다.

Read more...

JSON 파서 구현 1 - 스캐너

LexYacc와 같은 스캐너/파서 생성기를 사용하지 않고 JSON 파서를 구현하는 방법을 2부에 걸쳐 정리하려 한다. 시리즈를 끝까지 읽고 나면, JSON 파서를 만드는 게 생각보다 어렵지 않음을 알게 될 것이다.

Read more...

Java 셸 스크립트

간단한 작업을 할 때는 스크립트가 좋지만, 난해하며 기억하기 어려운 문법을 생각하면 Bash를 쓰고 싶지는 않다. Ruby나 Python 또는 JavaScript를 쓰는 것도 가능하긴 하다. 그러나 나는 Ruby나 Python을 별로 좋아하지도 않고 익숙하지도 않다. JavaScript는 조금 낫지만 파일 처리 API에는 익숙하지 않다.

Read more...

채소단

'채소단'이란 말이 실제로 있는지는 모르겠다. 영어로는 bed, raised bed, 또는 vegetable planter라고 한다. 우리 말에는 화단이란 말은 있어도 채소단이란 말은 사전에 안 나온다. 그렇지만 화단은 아니니 여기서는 그냥 채소단이라 하겠다.

Read more...

대나무 퇴치

집 앞뒤로 조그만 뜰이 있다. 앞뜰은 주차 공간과 풀밭이 있고 나무가 한 그루 있다. 뒷뜰에도 잔디밭과 꽃밭이 있고 캐빈과 헛간이 있다. 관리를 제대로 못해서 잔디보다 잡초가 더 많이 자라고 있다.

Read more...

CDK를 이용한 S3 프락시 API Gateway 생성

CDK의 API는 AWS 콘솔의 입력 항목과 직관적 대응 관계가 있어야 할 것 같은데, 꼭 그렇지만은 않은 듯 하다. 여기서는 S3 버킷에 저장되어 있는 파일을 API Gateway를 통해 접근할 수 있도록 프락시 API Gateway를 CDK로 만들어보려 한다.

Read more...