MathJax 서버측 렌더링

블로그 글에 포함된 수식을 표현하기 위해 MathJax를 사용한다. MathJax 덕분에 수식을 멋지게 표현할 수 있지만 수식 렌더링 속도가 매우 느리다. 브라우저에서 처음 로드했을 때 페이지 안에 \rm\TeX 소스 코드가 그대로 있다. 이후 로딩된 JavaScript가 \rm\TeX 코드를 HTML/CSS, SVG 또는 MathML로 변환하고, 브라우저가 변환된 결과를 화면에 표시한다.

Read more...

JUnit 5 매개변수 테스트

JUnit 4에서는 매개변수 테스트(parameterized test)를 작성할 때 불편한 점이 몇 가지 있다. 가장 대표적인 단점은 다음과 같이 정리할 수 있겠다.

Read more...

회전 문자열 검사 방법

어떤 문자열이 다른 문자열의 회전 문자열인지 검사하려면 어떻게 해야 할까? 코딩 인터뷰에 많이 나올 듯 한 문제다. 트위터에서 이 문제를 보고는 잠깐 생각해 보았지만 풀이가 금방 떠오르지 않았다. 한동안 이런 종류의 퀴즈 풀이를 하지 않아서 그런 것 같다.

Read more...

org-mode 스프레드시트로 사용하기

Emacs에는 org-mode란 도구가 있다. 할 일 목록, 일정, 작업 로그를 정리할 때 유용하다. 행열 추가/삭제, 행열 이동 등 기본 표 편집도 가능하며, 표 안에서 간단한 계산도 가능하다. 여기서는 표 계산 방법을 간단히 살펴보려 한다. 이 글은 Org as a spreadsheet system: a short introduction을 참고해 정리한 것이다.

Read more...

Emacs: 숫자 범위 포함 텍스트 생성

나는 Vim과 Emacs를 모두 사용할 줄 알지만, 콘솔에서 간단한 로그 파일이나 설정 파일을 잠시 확인할 때를 빼고는 Emacs를 사용한다. 얼마 전 트위터에서 Vim의 흥미로운 기능을 봤다. 숫자 범위를 포함한 텍스트를 간단히 생성하는 방법이다.

Read more...

Emacs: 다이어그램 그리기

가끔씩 다이어그램을 그려야 할 때면 파워포인트를 이용했다. 파워포인트로 다이어그램을 그린 다음 스크린 캡쳐 이미지를 사용하는 식이다. 이 방법에는 심각한 단점이 하나 있다. 다이어그램을 수정하기가 매우 귀찮다는 점이다.

Read more...

프로젝트 오일러 회고

프로젝트 오일러의 처음 100문제를 모두 풀어 블로그에 정리했다. 처음 맛보기로 몇 문제 풀어보고는 재미를 붙여 '100번까지 풀어보자' 생각했다. 새로운 문제가 계속 추가되고 있었고 뒤로 갈수록 문제도 어려워졌기 때문에 모든 문제를 풀기는 무리일 것 같았고, 100번 정도까지가 적당해 보였다.

Read more...

Java 람다의 실체

Java에 람다 표현식이 추가된 지 꽤 됐지만, 람다 표현식이 컴파일러를 통해 익명 클래스로 변환되는 편의 문법 정도로 생각하는 경우가 많은 것 같다. 컴파일러가 생성한 클래스 파일을 살펴보고, 람다 표현식이 실제로 어떻게 컴파일 되는지 확인해보려 한다.

Read more...

한국 운전면허 적성검사 연기 신청

몇 달 전 한국 운전면허 적성검사를 받아야 한다는 소식을 동생에게 들었다. 한참을 미루다 인터넷을 검색하며 조금 알아보았더니 나처럼 해외 체류중인 경우는 적성검사를 연기할 수 있는데, 연기신청을 하려면 경찰서나 도로교통공단, 면허시험장을 방문해야 한다는 것이었다. 이런 젠장! 방문할 수 있으면 가서 그냥 적성검사를 받고 말겠다.

Read more...

장난감 프로젝트

Java 프로그래밍을 밥벌이로 삼고 있지만 JDK에 새로 추가된 기능을 공부하고 연습하기를 멈춘지 꽤 된 것 같다. ScalaClojure 같은 다른 언어를 공부하기도 했지만 많이 나아가지 못했다. Java에 새로 추가된 기능을 제대로 이해하지 못한 상태에서 기본적인 사용법만 익혀 하루하루를 버티다 보니 점점 바닥이 드러났다. 회사 일을 할 때는 레커시 코드에서 자잘한 기능을 추가하거나 버그를 수정하는 작업만 하다보니 새로운 것을 배울 기회가 많지 않다.

Read more...