이전 글에서 이미 언급했다시피 저는 전자블록 EX-150의 복각판이 발매된 이후, 2010년경부터 해당 제품과 전자블록 mini 그리고 확장 키트인 광실험60을 모두 여러 벌 구입해 즐기고 있었습니다. 처음에는 단순히 어렸을 적 만져봤던 제품에 향수를 느끼고 있던 차에 복각되었다는 사실만으로도 충분히 즐거웠습니다. 하지만 전자블록 배치도 확인을 위해 매번 꽤 두껍고 무거운 매뉴얼을 꺼내 블록 조합을 확인하는 과정이 의외로 거추장스럽다는 것이 마음에 걸렸고, 이를 디지털화할 방법을 고민했습니다. 하지만 그 상태가 10년 넘게 진척없이 유지되다가 드디어 JSON 기반으로 배치도 이미지를 생성해 주는 전자블록 배치도 컴파일러 제작을 시작하게 되었고, 지금은 해당 JSON 문서를 인터랙티브 방식으로 생성해 주는 도구읜 전자블록 배치도 빌더 역시 제작하기에 이르렀습니다.

전자블록 배치도 컴파일러 제작까지의 흐름
그렇다면 굳이 전자블록 시리즈만을 위해 배치도 컴파일러를 만들게 된 이유가 궁금하신 분도 계실 것입니다.
사실 설명서가 아무리 무겁고 크다 하더라도 굳이 배치도를 따로 생성할 필요가 있을까요? 그것도 JSON 기반으로 말이지요. 만약 매뉴얼에서 기본적으로 제공하는 회로만 구성하는 것으로 만족한다면 굳이 이미 있는 배치도를 다시 그릴 필요는 없을 것입니다. 하지만 제가 전자블록의 생태계에 발을 담그고 나서 알게 된 두 가지가 있는데, 첫 번째는 매뉴얼에서 제공되는 회로 외에도 정말 많은 회로를 찾아볼 수 있다는 것이고, 두 번째는 여러 개의 제품 또는 여러 종류의 제품을 결합하면 그 가능성이 훨씬 더 확장된다는 것입니다.

한국에서는 전자블록에 대한 기본적인 정보 부족에 더해, EX-150 복각판과 확장 키트인 광실험60, 그리고 어른의 과학에서 부록으로 판매한 전자블록 mini를 제외하면 ST 시리즈와 FX 시리즈는 전부 1970년대부터 80년대에 생산되었던 제품들로서 무려 50년을 넘어가기에 입수조차 쉽지 않다는 제약이 있기 때문에 전체적인 인상이 EX-150 단품에 갇혀 있는 경우가 많습니다.
EX-150의 경우 블록 스테이지(block stage)의 크기가 8×6이고 블록의 종류가 46종류로 블록 간의 연결을 담당하는 리드 블록(lead block)을 제외하면 블록의 종류와 개수가 부족하다는 인상을 받을 수 있지만, ST 시리즈와 FX 시리즈에만 포함되어 있는 블록들을 포함해 별도로 판매되던 신디사이저 블록1이나 FM 블록2을 모두 합치면 무려 80종류로 늘어납니다. 또한 FX 시리즈의 경우 안테나가 없는 대신 블록 스테이지의 크기가 11×6으로 확장되어 있기 때문에 더 넓은 공간을 만끽할 수 있습니다. 이외에도 전자블록 mini나 광실험60의 캐비닛(cabinet)을 활용하는 것도 가능합니다.

21세기에 새로 되살아난 전자블록 EX-150 복각판3과 전자블록 mini, 광실험60의 세 가지 제품 만으로도 정말 재미있는 회로를 많이 구성해 볼 수 있고, 각각의 제품을 여러 개 갖추고 있으면 만들 수 있는 회로가 더욱 늘어납니다. 여기에 ST 시리즈와 FX 시리즈까지 조합하면 회로 구성의 폭이 기하급수적으로 확장됩니다. 그러나 여기서 문제는 ST 시리즈와 FX 시리즈는 이미 제조가 중단된지 50년이 넘어간 제픔이고 부품 수급 문제로 복각도 불가능한 제품이기에 입수가 매우 어렵다는 점입니다. 정말 구하고 싶으시다면 메루카리(メルカリ)나 스루가야(駿河屋) 같은 일본의 중고 판매 플랫폼이나 야후 옥션과 같은 경매 플랫폼에서 긴 시간 잠복4해야 하고 경쟁을 해야 하다 보니 가격도 생각보다 비쌉니다5. 설령 비싼 돈을 주고 어렵게 구했다 하더라도 오래된 제품이라 보관 상태에 따라 건드리기만 해도 제품이 파손되는 경우도 있고, 내부 부품의 노후화로 제대로 동작하지 않을 가능성도 염두에 두어야 합니다.
어쩄든 이런 수많은 난관을 뚫고 회로를 배치하려고 하면 만나게 되는 최종 보스가 바로 회로의 구성을 어떻게 할 것인가에 대한 고민입니다. 부품 종류는 늘어났고 이걸로 해 보고 싶은 건 많은데, 브래드 보드처럼 마음대로 조합하기에는 약간의 어려움이 있고 그렇다고 배치도가 어딘가에 정리되어 있는 것이 아니라 여기저기 흩어져 있는 상황을 만나게 됩니다. 또한 배치도를 작성한 작성자의 성향에 따라 배치도가 읽기 어려운 형태로 제공6될 수도 있습니다. 그리고 특히 인터넷에 공개되어 있는 자료라는 특성 상 언제 소실될지 모르는 문제도 있습니다. 그리고 어떤 분들에게는 일본어로 된 자료를 검색하는 것이 어렵다는 현실적인 문제7도 있을 것입니다.

하지만 실제로는 공식 설명서에 포함되어 있는 배치도를 읽거나 공유해야 할 경우에도 일단 해당 내용을 복사하거나 스캔한 후 이미지 형태로 파일을 만드는 매우 번거로운 과정이 필요합니다. 설명서가 단순 기능 설명이 아닌 회로집이라는 형태를 띄고 있기에 공식 PDF 버전이 존재하지 않는 것도 번거로움을 늘리는 하나의 이유가 될 것입니다.8 물론 회로집을 잘라내어 스캔한 다음 PDF로 제작하거나 스마트폰으로 사진을 찍어 스캔 모드(scan mode)를 통해 문서 형태로 변환하는 방법을 사용하면 공식 설명서는 어떻게든 해결할 수 있을 것입니다. 하지만 문서로 존재하지 않는 경우에는 어떻게 해야할까요?
더군다나 공식 배치도조차 ST 시리즈처럼 오래된 판본은 보기에 어려울 때가 있는데, 저해상도로만 보관되어 있는 배치도를 보면 확인도 어려울 뿐만 아니라 블록을 잘못 조립할 경우 블록 내부의 전자 부품이 망가질 가능성도 배제할 수 없습니다.
그러다 보니 전자블록 사용자 중 일부 능력자들은 자신만의 방법을 사용하여 정리된 형태의 배치도를 그리는 방법을 고안해 사용하고 있습니다. 그 중에서도 가장 많이 사용되는 방법이 아래 그림에서 볼 수 있는 스즈키 타쿠지씨의 배치도처럼 PowerPoint의 도형 기능을 이용하여 블록 아이콘과 바탕 그리드를 그리고 이를 조합하는 방법입니다. 스즈키씨의 사이트에서 PowerPoint 형식의 배치도 파일을 다운로드할 수 있으므로 관심이 있는 분들이라면 한 번 살펴보시는 것도 재미있을 것입니다.

아래 그림에서 볼 수 있는 브래드 보드 라디오에서 사용하고 있는 배치도 역시 저해상도임에도 불구하고 매우 시인성이 좋고 훌륭하지만 별도의 템플릿을 제공하지 않아 외부인이 활용할 방법이 없다는 점은 아쉽습니다.

저 역시 처음 자료를 아카이빙하려고 시도할 때는 스즈키씨의 템플릿을 활용하려고 시도한 적이 있습니다. 하지만 기본적으로 PowerPoint의 도형 기능은 에셋(asset)을 구현하는 것은 대체로 쉬운 편이지만, 이를 배치하는데는 의외로 꽤 많은 시간이 소요됩니다. 단순히 블록을 복사해서 붙이면 되는 것이 아니라 블록의 회전도 고려해야 하고, 실제로 벡터 기반의 도형이 이론적으로 같은 크기를 가져야 하지만 래스터라이징(rasterizing: 벡터 정보를 실제 픽셀 기반으로 변환하는 과정) 시에 픽셀이 어긋나고 안티앨리어싱(anti-aliasing)으로 인해 흐려지는 등의 문제가 있습니다.
또한 하나의 블록을 구성할 때 선이나 원 같은 도형을 여러 개 조합하는 것이다 보니 이를 그룹으로 묶었을 때 영역이 일정하지 않다는 점도 난관이었습니다. 블록의 크기가 1픽셀이라도 들쭉날쭉할 경우 자동 정렬 등을 사용해 블록을 정렬하는 것이 불가능해지기 때문입니다.
이에 더해 EX-150 기본 에셋인 46개의 블록 외에 전자블록 mini와 광실험60에서 추가된 블록을 다시 정의하기 위해 도형 기능으로 템플릿을 확장하는 것이 생각보다 깔끔하지 않은 문제도 있었습니다.
이러한 문제가 누적되면서 배치도를 실제로 구현하는데 계속 걸림돌이 늘어나게 되었고, PowerPoint가 설치된 환경에서만 사용할 수 있다는 점까지 겹쳐 결국 이 방식을 포기하고, 지리한 시간 낭비와 제작의 불편함을 일거에 해소할 방법으로서 코드 기반의 배치도 생성을 고민하게 됩니다.
에셋 규격 설정하기
가장 먼저 한 일은 전자블록 EX-150, 전자블록 mini, 광실험 60의 본체의 규격 정보를 정의하는 것이었습니다. 각각의 제품은 당연하게도 같은 규격의 전자 부품 블록을 사용하기 때문에 가장 먼저 블록의 규격에 따른 해상도를 결정했습니다.
첫 버전에서는 기존의 PowerPoint 기반의 에셋을 유용하는 방식을 사용했기 때문에 256×256 해상도 기반으로 에셋을 구성했으나 이후 전면적으로 Pillow 라이브러리 기반의 코드를 작성해 에셋을 자동적으로 생성하게 변경하면서 512×512 해상도 기반으로 변경했습니다. 또한 디자인도 처음에는 스즈키씨의 템플릿이나 공식 매뉴얼처럼 원형 기반의 디자인을 사용하다가 추후 추가된 대형 유닛과의 디자인 언어를 통일하기 위해 라운드 사각형 형태로 변경하게 되었습니다.

이 외에도 블록 스테이지의 크기 및 구분선 등에 대한 규격을 정의하여 앞으로 생성되는 모든 에셋이 이를 따르게 정의하였습니다.
이렇게 처음에는 46개에서 57개로 늘어난 에셋을 정의했으며, 이후 ST 시리즈와 FX 시리즈를 비롯해 EX-181, EX-FM을 도입하게 되면서 버전 0.9.13 기준으로 블록 에셋의 개수는 80개로 늘어나게 됩니다.
블록 목록 관리
이렇게 에셋의 이미지가 준비되었으니 이제 이를 기반으로 실체를 가지는 데이터를 구축할 차례입니다. 데이터의 형식은 앞에서 언급했듯이 코드와 사람이 모두 인식하기 편리한 JSON 형식을 사용하고 있습니다.
{
"schema": "denshiblock-blocks/v1",
"blocks": [
{
"id": "STR-E",
"name": "Transistor",
"category_id": "T",
"category": "Transistor",
"sub_cat": null,
"size": "1x1",
"image": "STR-E.png",
"specs": "2SC1815(EX), 2SC372Y(EX-V2), 2SC828Q(FX)",
"notes": [],
"contacts": [
"N0",
"E0",
"W0",
"S0"
],
"origin": [
"EX-150",
"EX-150-RE",
"EX-181",
"FX-MELODY_N_WATCH",
"FX-MiCOM_R-165"
]
},
...
]
}
세부적인 형식은 계속해서 개선해 나가고 있습니다만, 버전 0.9.13 기준 다음과 같은 정보를 포함하고 있습니다.
- 블록 ID
대부분 전자블록에서 정의하고 있는 ID를 그대로 사용합니다. ID를 통해 블록 내부 부품, 리드와 접점 연결 구성 등을 대부분 인식할 수 있습니다. 예를 들어 SLX-4는 Skeleton Block + 4mA Coil + X Lead를 갖춘 1×1 크기의 블록임을 알 수 있습니다. - 이름
블록 내부에 포함된 부품 또는 블록의 이름입니다. - 분류
블록 내부에 포함된 부품 또는 블록이 어떤 종류에 속하는지를 지정합니다. 현재 지정된 분류는 다음과 같습니다.- T: 트랜지스터(Transistor)
- D: 다이오드(Diode), LED
- R: 저항(Resistor)
- C: 콘덴서(Condenser), 캐패시터(Capacitor)
- L: 코일(Coil), 인덕터(Inductor), 트랜스포머(Transformer)
- I: 집적 회로 (IC, Integrated Circuit)
- W: 연결선(Wire), 리드(Lead)
- M: 기타(Miscellaneous), 램프(Lamp), 모터(Motor), 스위치(Switch), 릴레이(Relay) 등
- 블록 크기
블록의 실제 크기와 형태는 별도의 정의 파일에서 확인할 수 있습니다. - 블록 에셋 이미지
- 블록 사양
- 블록 접점 위치
- 블록이 포함되어 있는 제품
마찬가지로 이어폰이나 마이크 같은 디바이스(device)도 유사한 형태로 정의합니다. 이렇게 이미지와 기본 정의, 블록 정의, 디바이스 정의를 묶어 에셋으로 정의합니다.
블록 스테이지와 가상 레이어
이어서 이 블록 이미지가 실제로 놓일 블록 스테이지를 생성하는 도구를 고안했습니다.
그리드 이미지를 가장 쉽게 생성하는 방법은 스즈키씨의 템플릿처럼 PowerPoint에서 표를 그리고 선의 형태를 정의하는 것입니다. 하지만 이 방식은 PowerPoint의 특성 상 좌표가 미묘하게 몇 픽셀씩 어긋나며 불필요한 안티앨리어싱(anti-aliasing)이 적용되기 때문에 손으로 일일이 대충 블록을 배치하는 경우가 아니라면 적합하지 않습니다.
제 경우는 코드로 배치 내용을 정의하고 관리하다가 필요할 때마다 PNG 형태의 이미지로 정밀한 배치도를 내보내야 합니다. 따라서 정확한 좌표계를 가지는 이미지를 코드를 통해 생성하게 구성했습니다.
그리고 사실 간과해서는 안 되는 중요한 부분이 하나 더 있는데, 배치도에서 블록 외에도 이어폰이나 마이크가 외부에 놓이는 경우가 대다수라는 것입니다. 일부 회로도에서는 간결한 표시를 위해 그냥 텍스트로 갈음하는 경우도 있지만 통일성과 시인성을 위해 실제 디바이스 이미지를 놓을 수 있는 스테이지인 가상 레이어 스테이지를 구상하였습니다.

이외에도 위의 그림에서 볼 수 있듯이 스테이지 주변의 레이블을 지정할 수 있도록 구성되어 있어, 최대한 기기의 원본 형태를 따르도록 하였습니다.
블록 및 디바이스 배치
스테이지와 에셋이 모두 준비되었다면 이제 에셋을 스테이지에 배치할 차례입니다. 블록과 디바이스의 배치 정보에는 배치 위치, 대상, 각도(90도 단위)를 지정하며, 이를 연결하는 리드나 광케이블은 해당 케이블이 연결될 대상 접점(endpoint) 정보를 추가로 지정합니다.
{
"schema": "denshiblock-layout/v1",
"title": "電子ボタル",
"description": "昔は、夏の夜の風物詩だったホタル。...",
"notes": [],
"targets": [
"EX-150",
"EX-150-RE"
],
"required": [
"EX-150",
"EX-150-RE"
],
"blocks": [
{ "pos": "H2", "id": "S-T", "equip_id": "S-T", "rot": 0 },
{ "pos": "B3", "id": "SRT-4.7K", "equip_id": "SRT-4.7K", "rot": 270 },
{ "pos": "C3", "id": "S-T", "equip_id": "S-T", "rot": 0 },
{ "pos": "D3", "id": "RT-40V", "equip_id": "RT-40V", "rot": 0 },
{ "pos": "E3", "id": "S-I", "equip_id": "S-I", "rot": 90 },
{ "pos": "F3", "id": "SRT-560K", "equip_id": "SRT-560K", "rot": 0 },
{ "pos": "G3", "id": "ST-LP", "equip_id": "ST-LP", "rot": 0 },
{ "pos": "H3", "id": "RT-40mA", "equip_id": "RT-40mA", "rot": 180 },
{ "pos": "B4", "id": "SRT-10K", "equip_id": "SRT-10K", "rot": 270 },
{ "pos": "C4", "id": "S-I", "equip_id": "S-I", "rot": 90 },
{ "pos": "D4", "id": "SCX-47μ", "equip_id": "SCX-47μ", "rot": 90 },
{ "pos": "E4", "id": "SRX-4.7K", "equip_id": "SRX-4.7K", "rot": 270 },
{ "pos": "F4", "id": "S-I'", "equip_id": "S-I'", "rot": 0 },
{ "pos": "G4", "id": "STR-C", "equip_id": "STR-C", "rot": 0 },
{ "pos": "H4", "id": "S-L'", "equip_id": "S-L'", "rot": 90 },
{ "pos": "B5", "id": "S-L", "equip_id": "S-L", "rot": 0 },
{ "pos": "C5", "id": "STR-E", "equip_id": "STR-E", "rot": 180 },
{ "pos": "D5", "id": "S-I", "equip_id": "S-I", "rot": 90 },
{ "pos": "E5", "id": "SCI'-0.05", "equip_id": "SCI'-0.05", "rot": 0 },
{ "pos": "F5", "id": "SCX-10μ", "equip_id": "SCX-10μ", "rot": 270 },
{ "pos": "G5", "id": "S-I'", "equip_id": "S-I'", "rot": 0 },
{ "pos": "H5", "id": "S-L", "equip_id": "S-L", "rot": 270 },
{ "pos": "C6", "id": "S-L'", "equip_id": "S-L'", "rot": 90 },
{ "pos": "D6", "id": "S-T", "equip_id": "S-T", "rot": 0 },
{ "pos": "E6", "id": "S-I", "equip_id": "S-I", "rot": 90 },
{ "pos": "F6", "id": "RT-4V", "equip_id": "RT-4V", "rot": 0 },
{ "pos": "G6", "id": "S-T", "equip_id": "S-T", "rot": 90 }
],
"devices": [],
"leads": [],
"anchor_labels": []
}
이 JSON 데이터는 복각판의 판매와 함께 2002년에 출간된 ‘가이드북 갓켄 전자블록의 비밀(ガイドブック 学研電子ブロックのひみつ)’에 새로 추가된 ‘전자 반딧불이(電子ボタル)’ 회로를 정의한 것입니다. 그런데 초판에서는 회로의 배치도에 오류가 있기 때문에 정정 배치도를 별도로 다운로드해서 확인할 필요가 있습니다.9 전자 반딧불이는 매우 간단해 구현하기 쉽고 시각적으로 흥미로운 전자 회로이기 때문에 다양한 형태로 접할 수 있습니다.

전자블록 프로젝트 컴파일러
전자블록 프로젝트 컴파일러(Denshi Block Project Compiler)는 이렇게 정의된 정보들을 한데 모아 프로젝트로 구성할 수 있으며, 이 프로젝트를 검증하여 PNG 형식의 배치도를 생성할 수 있습니다.

컴파일러로 주어진 파일들을 모두 오류 없이 검증했다면 아래 그림과 같은 배치도가 자동으로 생성됩니다.

프로젝트 빌더
처음에 컴파일러 사양을 정의하고 컴파일러를 개발하여 원하는 형태의 배치도를 깔끔하게 출력하는 것이 목적이었기에 여기서 만족하고 있었으나, 얼마 가지 않아 JSON 데이터를 매번 직접 작성하는 것이 불편하다는 것을 깨닫게 됩니다. 따라서 이러한 JSON을 손쉽게 입력하고 입력 단계에서 오류를 미리 검증할 수 있는 도구로서 전자블록 프로젝트 빌더(Denshi Block Project Builder)를 고안하게 됩니다.
만약 그래픽 형태의 GUI (Graphical User Interface) 가반으로 작성하게 될 경우 스펙의 변경 등에 너무 민강한 앱이 나오게 될 가능성이 놓기 때문에, 컴파일러처럼 여러 개의 시스템을 조합하는 형태에 대응할 수 없다는 문제가 드러났기 때문에 텍스트 형태의 CLI (Command Line Interface) 기반으로 작성하였고, 사용자와의 상호 작용(interact) 방식은 1980년대에 등장한 초창기 울티마(Ultima) 의 명령어 방식을 모방하였습니다.

예를 들면 STR-E 트랜지스터를 90도 회전시킨 상태로 스테이지의 A1 위치에 놓으려면 다음과 같이 a 명령을 사용합니다.
> a A1 STR-E 90
광케이블이나 리드선을 연결하는 방법은 다음과 같습니다.
> f Fiber1 F5 A3>E
> w Lead1 A1>E C6>N
이외에도 p 명령을 통해 현재 놓인 블록이나 디바이스의 맵(map)을 볼 수도 있고, x 명령으로 놓인 블록을 제거하거나 r 명령으로 회전시킬 수도 있습니다.

버전 0.9.13 기준으로 지원되는 명령은 다음과 같습니다.
Commands
?, h, help Show help
s, save [file] Save current work (layout, and project in project mode)
v, view Render and view current work with compiler
d, document, meta Show or edit layout document metadata
p, print [option] Print information
a, add ... Add block (full or interactive)
w, wire ... Add wire (brief or interactive)
f, fiber ... Add fiber (brief or interactive)
t, text ... Add floating text (brief or interactive)
i, image ... Add floating image (brief or interactive)
k, anchor ... Add anchor label (brief or interactive)
x, remove <pos|id> Remove item/wire/anchor label
m, move <from> <to> Move item
r, rotate <pos> [angle] Rotate item (+90 default)
c, cleanup Rebuild generated instance IDs
o, option Set or show options
q, quit, exit Exit Denshi Block Project Builder
Interactive commands
!c, !cancel Cancel current interactive command
!x, !exit, !quit Cancel current interactive command
!?, !h, !help Show help for current command
Endpoints
F1 Cell center
F1>E Cell edge
A1-N1 Virtual cell center
A1-N1>E Virtual cell edge
CLIP-LEAD-A2#1@1 Device pin
마무리
이 글은 제가 작업을 하면서 불편했던 점을 개선하기 위해 시작한 작은 개인적인 프로젝트를 다루고 있습니다. 사실 전자블록을 구경하기는 커녕, 전자블록이 무엇인지 들어본 적도 없는 분들이 대다수일 겁니다. 훨씬 재미있는 PC나 콘솔 개임이 있는데 이런 귀찮은 아날로그 기반의 도구를 만질 이유를 찾지 못하는 것이 훨씬 정상적일 겁니다.
그럼에도 불구하고 제게는 소중한 추억의 한 조각이고, 60년이 넘는 시간동안 그 명맥을 이어 온 제품이기에 관심을 더 가지게 되는 것 같습니다. 한국에서도 저처럼 1980년대에 만능키트를 통해 그리고 전자블록 EX-150 복각판과 전자블록 mini를 통해 새로운 전자블록을 접하신 분들이 계신 것으로 알고 있습니다. 소수에 불과하지만 이런 분들끼리 조금 더 많은 교류를 할 수 있었으면 하는 바람입니다.
따뜻한 봄날을 지나 여름이 성큼 다가오고 있습니다. 아직 건강이 회복될 기미가 보이지는 않고 있지만 나아지기 위해 노력하고 있습니다. 여러분께서는 항상 즐거운 일만 가득하시기를 바랍니다.
- 또는 EX 시리즈 최종 모델인 EX-181에 포함되어 있습니다. ↩︎
- 별매 제품인 EX-FM 파츠에 포함되어 있습니다. ↩︎
- 오리지널 버전과는 부품의 규격이나 앰프 탈착 가능 여부 등에서 다소 차이가 있습니다. ↩︎
- 대략 두 세 달에 한 건 정도의 제품을 만나게 되며, 물론 낙찰이나 구입과는 별개의 이야기입니다. ↩︎
- FM 블록 한 개와 리드선 한 개가 들어있을 뿐인 EX-FM 파츠는 3~4년에 하나가 발견되는 수준이며 최근 거래 가격도 36만원에 달합니다. ↩︎
- 저해상도의 GIF로 제공되거나 캐시로 저용량만 남아 있는 경우가 많습니다. ↩︎
- 물론 메루카리나 야후 옥션에서 낙찰받으실 정도로 익숙하신 분들이면 이런 걱정은 없으시겠지만 말이지요. ↩︎
- 다행히 영문 버전은 PDF 버전이 존재합니다. ↩︎
- 제가 보유 중인 서적을 보았을 때 제1쇄에는 오류가 있지만, 제6쇄와 제9쇄에는 오류가 정정된 배치도가 실려 있는 것을 확인하였습니다. ↩︎