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...

CDK를 이용한 AWS Lambda 함수 생성

AWS CDK(Cloud Development Kit)는 프로그래밍 언어를 이용해 클라우드 인프라스트럭처를 정의할 수 있게 해 주는 도구다. CloudFormation 스크립트를 사용하는 것 보다 훨씬 쉽게 인프라스트럭처 컴포넌트를 정의하고 관계를 설정할 수 있다.

Read more...

Java 날짜 연산

Java 8에 추가된 날짜/시간 관련 클래스 중 LocalDate를 사용한 간단한 날짜 연산 방법을 정리한다. LocalDate에는 시간 정보가 포함되어 있지 않다. 날짜와 시간을 함께 다루려면 LocalDateTime을 사용해야 한다. UTC 오프셋이나 시간대도 함께 필요한 경우는 OffsetDateTime 또는 ZonedDateTime을 사용해야 한다.

Read more...

Java 날짜/시간 API

Java 8부터 새로운 날짜/시간 API가 추가되었다. 날짜/시간 관련 기능을 사용할 일이 생기면 어떤 클래스를 어떻게 사용해야 할지 생각나지 않는 경우가 많아 여기 각 클래스의 기본 사용법을 간단히 정리하려 한다.

Read more...

콘솔 프로그레스 바

콘솔에서 프로그레스 바를 그릴 때 요령은 행을 바꾸지 않고 같은 행에 텍스트를 계속 갱신하는 것이다. 프로그레스 바와 진행률을 제외하면 다른 텍스트는 바뀌지 않을 것이므로 \r로 커서를 행의 처음으로 옮긴 후 새로운 텍스트로 덮어쓰면 프로그레스바가 깜박거리지 않을 것이다.

Read more...