프로그래밍을 하다보면 16진수를 10진수로 바꾸거나 10진수를 16진수로 바꾸어야 하는 경우가 종종 있습니다.
읭? 16 진수?
라고 하실수도 있겠지만 막상 개발을 하다 보면 16진수가 쓰이는 경우를 생각보다 자주 만나게 됩니다.
대표적을 RGB 컬러 값을 HTML 에서 사용하는 #FFEACB 이런 값으로 변경하는 작업이 있겠습니다. 또는 반대로 0 ~ FF 가지 255개의 숫자가 16진수로 구성되어 있는 값을 0~255인 자연수로 변경을 해야 하는 경우가 있을 수도 있고요. 16진수는 1개의 자릿수에서 0~15 까지의 값을 표현할 수 있기 때문에 10진수에 비하여 간단한 텍스트로 더 큰 숫자를 표현할 수 있다는 장점도 있습니다.
자 쓸데 없는 말이 길었네요.
VBA를 이용해서 숫자의 형을 변환하는 여러가지 방법이 있지만 오늘 소개해드릴 방법은 그중에서도 단연 쉽고 간단한 방법입니다.
바로 worksheet의 함수를 이용하는 방법인데요. 엑셀 상단에 수식을 입력할 수 있는 칸이 있자나요? 여기서 사용되는 함수가 바로 worksheet function 입니다.
worksheet function 중에 DEC2HEX() 와 HEX2DEC() 가 바로 오늘의 주인공 입니다.
함수 명칭만 봐도 딱 감이 오시죠?
사용하는 방법은 아래와 같습니다.
먼저 위와 같이 엑셀에 16진수 값이 들어있는 셀이 있다고 가정을 하고요.
vba 에디터를 열어 아래와 같이 코드를 작성해봅니다.
Sub changeNumber()
Dim rngA As Range
Set rngA = [A1]
rngA.Offset(0, 1).Value = WorksheetFunction.Hex2Dec(rngA.Value)
rngA.Offset(0, 2).Value = WorksheetFunction.Dec2Hex(rngA.Offset(0, 1).Value)
End Sub
자 A1 셀에 있는 값을 바로 우측 옆 칸에 10진수로 바꾸는 함수를 적용하여 값을 넣어 줍니다.
그다음 B1 에 위에서 자동으로 입력된 값을 다시 16진수로 옆칸에 자동으로 입력해주는 코드 입니다.
실행하면요
요렇게 B1 에는 10진수로, 다시 C1 에는 16진수로 값이 변경된 것을 볼 수 있죠?
worksheetFunction 에는 물론 엑셀에서 사용할 수 있는 모든 함수를 지원해 주니까 vba 작성중에도 가져다가 사용할 만한 함수가 많지만 오늘 포스트의 주제에 맞게 숫자의 형 변환 관점에서만 보자면 아래와 같은 여러 함수들이 지원됩니다.
물론 Hex 로 부터 출발 하는 경우에도 마찬가지 입니다.
문장이 조금 길어 보여서 어렵거나 복잡하게 생각될 수도 있기는한데 막상 사용해보면 생각보다 단순 합니다. 사용하는데 따로 알아두어야 할 규칙 같은것도 없어서 코딩하는 시간도 많이 절약되는 방식이라 할 수 있겠습니다.
만약 아래와 같이 셀에 html 색상 값이 들어있는 경우
vba를 이용하여 해당 색상으로 셀의 배경 색상을 자동으로 칠해 줄 수 있습니다.
Sub changeNumber()
Dim rngA As Range
Set rngA = [A1]
Dim clrR As Integer
Dim clrG As Integer
Dim clrB As Integer
clrR = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 2, 2))
clrG = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 4, 2))
clrB = WorksheetFunction.Hex2Dec(Mid(rngA.Value, 6, 2))
rngA.Interior.Color = RGB(clrR, clrG, clrB)
End Sub
간단하죠? 위에서 소개해 드린 worksheetFunction을 이용하여 2자리씩 잘라낸 16진수를 10진수로 담은뒤에 셀의 배경 색상으로 지정하는 것이죠.
길지 않은 시간이었지만 얼마간 함께 일하며 아쉬운 부분도 있고 해서 쓸데없는 잔소리를 좀 했나보다.
물론 회사생활을 한지 얼마 안되는 사회 초년생이고 아직 조직의 일원으로서의 역할보다는 보다 개인의 감정이 앞서는 어린 친구인데, 감춰왔던 작은 몇몇 실수들이 뭉쳐 커다란 문제로 붉어져 나온 상황이어서 선배로써 더이상 지켜보기만 하기는 어려운 상황이었기에 문제를 함께 해결해가며 이야기를 시작했는데... 결국 뭐 듣는 입장에서는 잔소리처럼 들렸으리라.
얼마간 나의 이야기를 듣던 후배 직원은 결국 눈물을 흘렸다.
말이 길어질 수록 눈물도 늘었다.
눈물을 철철 흘리는 후배를 보며 마음이 좋지 않았다.
무거운 마음으로 퇴근하며 생각해보니 우리의 삶이라는 것은 마치 사기구슬 같다는 생각이 들었다.
평생을 들여 만드는, 아주 길고긴 시간을 들여 정성스레 만드는 사기구슬.
성장기의 우리들은 스스로 만들어지지 못하는 찰흙덩어리 같은 존재라는 생각이 들었다. 오직 부모에 의해 만들어 지는 찰흙 반죽 같은 느낌이랄까? 흙이 어찌 스스로 반죽을 하겠는가. 어린 시절의 우린 그저 부모에 의해 만들어지는 수동적인 존재일 뿐이다.
어떤 부모들은 아주 신경써서 둥글게 둥글게 예쁜 모양으로 반죽을 다듬으며 살을 붙여 나가지만 또 어떤 부모들은 삶의 고된 시간속에 자식이라는 구슬을 만드는데 정성을 다하기 어렵기도 하다. 물론 둥글게 빚는데 전혀 관심도 없는 부모도 있다. 그냥 대충 흙 덩어리를 어딘가에 툭 던져 놓고 마는 그런...
물론 큰 돈을 들여 둥근 반죽 기계를 산 부모는 완벽하게 둥근 구슬을 만들어 낼 것이다. 하지만 기계를 살 돈이 없는 부모도 열심히 주무르고 빚어주면 기계 못지 않은 둥근 찰흙 구슬을 만들 수 있을 것이다. 기계로 만든 것처럼 둥글지는 않겠지만 인간미는 분명 있는 그런 둥근 구슬이 만들어졌겠지.
정성들여 만들어진 동그란 찰흙구슬과 대충 얼버무린 모난 흙 덩어리는 이제 성인이 되며 서서히 굳어져 간다.
동그랗고 예쁘게 잘 만들어진 구슬은 어느곳이든 잘 굴러가고 잘 구를 수록 점점 더 동그래지겠지만 정성스럽게 만들어지지 않은 울퉁불퉁한 구슬은 구르지 못하고 멈추어 있거나 다른 구슬들 사이에서 이상한 구슬로 보이며 그 모양 그대로 점점 더 굳어져 갈 것이다.
하지만 아직 다 마르지 않았기에 모난 흙 덩어리도 열심히 이리로 저리로 굴러다니면 어떻게 될까? 결국 둥글 둥글 해 지겠지? 성인이 된 우리는 스스로를 굴려가며 자신을 둥글게 만들어야 하지만 이게 쉽지 않다. 겉은 이미 말라가고 있기 때문에 갈라지고 지신을 부스러 뜨리며 둥글게 만들어야 된다.
힘들겠지만 스스로를 굴리고 부딪혀서 모난 부분을 깎아내야 한다. 그래야 둥글게 될테니까.
아직 마르지 않은 모난 구슬이 멈추어 있지 않도록 친구들이, 가족이, 사회가 적극적으로 도와주어야 한다. 그렇지 않으면 그 친구는 영영 동그란 구슬이 될 수 없을 수도 있다. 여기서 더 굳어져 버리면 이제 동그란 구슬이 되는건 사실상 어렵다고 봐야 한다. 물론 둥근 구슬이 예뻐서 모두가 그것이 되어야 한다는 것은 아니다. 그냥 우리 각자의 인생의 성공이라는 목표를 둥근 구슬이라고 하자는 거다.
나이가 들며 직장에 와보니 여기는 이게 더이상 구슬을 둥글게 빚는 곳은 아니었다. 아무도 내가 둥근 구슬이 되는 것에 관심은 없었다.
가마
굳은 흙덩어리를 상상도 못할 뜨거운 불꽃으로 강하고 단단하게 만드는 바로 그 가마.
직장은 흙 구슬들에게 가마와 같은 곳이라는 생각이 들었다.
시련과 고통이 주어지는 곳.
도예공들인 도자기를 연일 만들지만 그렇다고 만들어 지는데로 가마에 들어가는 것이 아니듯이 흙덩어리 구슬이 만들어 졌다고 해서 모두 같은 시기에 가마로 들어가는 것은 아니다. 모두가 취업이나 자신의 일을 찾아 시작하는 시기도 다르고 또 뒤에서 설명하는 것처럼 그 시간이 다 같은 것은 아니다.
직장 생활을 하다보면 정말 힘든 시간은 누구에게나 온다.
내가 컨트롤 할 수 없을 것 같은 그런 힘든 시간이 오고 그 시간들이 결국 나를 더욱 단단하게 만들었다는 것을 알게 되고나니 그 시간이 내가 마치 불가마에 들어간 도자기와 같은 시간이었다는 생각이 들었다. 그런 힘든 시간을 견디고 이겨내며 오늘에 왔기 때문이다. 아직 목표한 온도에 오르지 않은 도자기를 급하게 꺼내면 깨지거나 색깔이 안나오거나 결국 버려질 폐기물이 되듯이 우리는 그 힘든 시간을 이겨내며 시나브로 단단한 사기가 된다.
초벌구이 재벌구이를 겪으며 더욱 단단해지고 유약같은 멋진 동료들을 통해 빛나는 영롱한 도자기가 구워진다.
그런 힘든 시간들은 지금까지 열심히 굴러다니며 완전하리만큼 둥글게 만든 나를 진정 빛나는 사기구슬로 다시 태어나게 만드는 시간들이라 생각이 들었다.
잘 빚어진 둥글고 예쁜 구슬은 몇차례 가마를 거치며 유약도 발리고 결국 빛나는 사랑받는 구슬이 되어갈 것이다.
나는 부모로써 나의 아이들을 예쁘고 아름다운 구슬로 빚고 있는 걸까? 하는 생각을 해본다. 또 걱정도 된다.
나는 평생토록 그 구슬을 계속해서 빚을 수는 없다.
흙은 언젠가는 마를 것이기 때문이고 내 손을 떠난 구슬은 더이상 내 손으로 빚을 수 없기 때문이다.
제가 올리는 글을 누가 보는가 싶은데.. 간혹 스크립트를 잘 봐주시는 방문객들이 계신듯 하여 포스팅을 하게 되었습니다.
오늘은 3DS MAX SCRIPT의 계층 구조에 대한 이야기 입니다.
왠만한 개발을 해 보신 분들은 사실 약간 상식적으로 알고 계신 내용일 것 같기는 합니만 그래도 역시 누군가에게는 도움이 될 듯 하여 글을 남겨 봅니다.
3DS MAX Scritp 에서 어떤 오브젝트는 개발 관점에서 보면 클래스 입니다. 상위 클래스가 있고 또 하위 클래스가 있는데요. 계층 구조라고 말씀 드린것처럼 클래스 안에 또 작은 클래스가 정의 되어 있고 또 그안에 작은 클래스 또는 구조체가 정의 되어 있다고 보시면 됩니다.
클래스라고???
개발이 생소하신 분들은 클래스라고 하면 잘 이해가 안되시죠?
우리 인간을 예를 들어 클래스라는 개념을 설명해 보면 다음과 같습니다. (그냥 예 입니다)
각 단계는 상위 클래스의 하위 클래스가 됩니다.
동물 - 호흡을 한다. 심장이 있다.
포유류 - 4개의 팔 또는 다리를 가지고 있다. 아기를 낳는다. 젖을 먹인다.
영장류 - 지능이 뛰어나다. 두발 또는 네발로 걸을 수 있다. 시각 능력이 좋다
인간 - 특별히 뇌가 발달했다. 다양한 언어를 구사할 수 있다. 손의 움직임이 뛰어나다
조류 ...
양서류...
파충류...
뭐 이런식으로 어떤 큰 개념을 정의하고 그 하위에 상위의 개념을 포함하지만 조금 세분화된 개념을 담는 그런 방식으로 한단계 한단계 세분화된 그런 개념을 담고 있는 것이 일반적인 클래스의 개념입니다. (위에 설명한 건 그냥 예를 든 것입니다. 시비 노노)
예를 들면 익히 잘 알고 있는 Box 는
요런 순서의 계층 구조를 가지고 있습니다.
우린 레퍼런스 파일을 통해서 Box() 라는 클래스가 가지고 있는 다양한 프라퍼티에 접근을 할 수 있습니다.
그런데 위에 계층 구조를 보면 Box 위에 GeometryClass 라는 상위 클래스가 보이죠? 레퍼런스에서 해당 위치를 클릭해보면 GeometryClass 라는 녀석에 대한 정보가 나오는데요,
"The mesh operations underlying the Boolean Compound Object in 3ds Max are accessible in MAXScript."
라는 글이 해당 페이지의 첫줄에 보이고
<node1> + <node2>
<node1>-<node2>
<node1>*<node2>
요런 수식들이 소개가 되어있습니다. 내용을 읽어 보면 GeometryClass 는 + - * 와 같은 연산자로 boolean 을 수행할 수 있다는 의미가 되겠습니다. Box 는 GeometryClass 이므로 당연히 Box 와 Box 는 위와 같은 boolean 연산이 된다고 볼 수 있겠습니다.
요런 결과가 리턴 됩니다. 첫째 줄은 생성된 sphere 에 대한 정보이고요, 두번째가 바로 작성한 코드의 결과물인데요. 위의 설명에 따르면 face 개수와 vertex 개수를 돌려 준다고 합니다. 생성된 sphere 는 224개의 face 와 114개의 vertex 로 이루어져 있다는 것을 알 수 있습니다. 다시 말하자면 우리는 생성한 geometryclass 가 뭐든간에 해당 개체의 폴리곤수를 바로 알 수 있게 되는 겁니다. mesh 나 poly 같은 개체의 geometry 속성 정보를 알기 위하여 class 구분을 하고 getNumfaces 나 polyop.getNumVertexs 를 사용하는 것처럼 개체의 클래스나 구성 방식 등을 검사를 할 필요가 없는거죠.
Node
자 그럼 한칸 더 상위로 올라가서 Node 를 볼까요?
Node 는 3DS MAX Script 에서 아주 중요한 개념으로 해당 클래스에서 사용할 수 있는 프라퍼티나 메소드가 아주 많습니다. 스크립팅의 아주 기본적인 부분도 많이 보이네요.
아주 간단한 예를 들면 우리가 scene 에서 보여지는 모든 개체는 node 라는 클래스라고 보면 됩니다. EditableMesh 건 EditablePoly 건 Camera 건 심지어 helper 나 dummy 같은 개체도 모두 node의 하위 클래스 입니다.
즉 Node 라는 개체에 대한 설명이 적혀있는 레퍼런스 페이지에 있는 모든 하위요소를 사용할 수 있습니다.
제가 아~~주 자주 사용하는 node 의 대표적인 프라퍼티 또는 메소드를 보면 아래와 같습니다.
IsValidNode <var>
move <node> <point3> -- mapped
scale <node> <point3> -- mapped
rotate <node> <eulerangles> -- mapped
copy <node> -- mapped
reference <node> -- mapped
instance <node> -- mapped
delete <node> -- mapped
classOf <node>
딱 봐도 어떤 일을 하는지 아시겠죠? 우리가 알고있는 대부분의 요소는 node 이며 위와 같은 명령어를 이용하여 컨트롤 할 수 있답니다. 복사하고 이동하고, 회전하고 삭제하고, 해당 개체가 어떤 클래스인지 확인하는 그런 것들이죠.
Node Common Methods
라는 항목을 보면 Node 에서 사용할 수 있는 더 많은 상세한 레퍼런스들을 확인할 수 있습니다.
이렇게 말이죠.
물론 Node 자신의 subClass 에는 GeometryClass, Shape, Light, Camera, Helper, SpacewarpObject, System 이러한 요소들이 있고 각기 자신에 해당하는 프라펕와 메소드들을 다룰 수 있지만 역시 node 에서 정의하고 있는 모든 프라퍼티와 메소드를 사용할 수 있는 것 입니다.
드디어 최상위 클래스 : Value
그럼 최상위 Value 라는 개체로 가 볼까요?
Value 개체는 3DS MAX 에서 정의하고 있는 class 의 최상위 개체입니다. 말하자면 모든 구조체, 클래스 등은 Value 에 속하므로 Value 에서 정의하고 있는 기능을 수행할 수 있는 것이라 할 수 있겠습니다.
최상위인 value 에는 대표적으로 다음과 같은 항목들이 정의되어 있습니다.
<value> == <value>
<value> != <value>
익히 잘 알고 있는 bool 연산자죠? if 구분 같은 곳에서 대상과 대상이 같은지 다른지 판단할 수 있고요.
print <value>
format <format_string>
와 같은 코드를 통해서 해당 정보를 출력해 볼 수 도 있습니다.
Working with Values
라는 레퍼런스 페이지에 보면 스크립팅을 하는 동안 Value 를 어떻게 다룰 수 있는지 잘 소개가 되어있습니다.
스크립트는 다른 개발 언어와 다르게 빠르게 작성하고 빠르게 컴파일, 실행을 할 수 있기 때문에 이런 구조체를 알면 디버깅도 빠르고 작성도 손쉽게 할 수 있겠습니다.
Value 에는 node 와 같은 scene 내의 개체 뿐만 아니라 Float ,Integer ,String ,BitArray ,Point3 ,Ray ,Quat ,AngAxis ,EulerAngles ,Matrix3 ,Point2 ,Color ,Arrays 와 같은 클래스나 구조체들도 포함되어 있습니다. Ray 에 대해서 지난 포스팅에 소개해 드렸었죠?
일러스트로 디자인을 하다 보면 뒤에 사진이나 이미지를 앉혀야 하는 경우가 자주 있는데 보통 한번에 컨펌이 나지 않기 때문에 place 시킬때 link 형식으로 앉히게 됩니다.
배경 이미지의 시안이 변경 될 경우 이미지만 변경하면 자동으로 일러스트에서도 변경이 되기 때문이기도 하고 또 작업하는 파일의 용량이 작아 HDD 디스크에 부담도 적기 때문이지요.
그런데!!
이걸 이제 인쇄를 넘기려면 링크된 모든 파일을 다 찾는 것도 일이고.. 보냈을때 하나라도 누락이 되었다면 사고가 나는것이죠.
그래서 embed 형식으로 변경하면 ai 파일 내에 이미지가 포함이 되서 이런 문제가 일어나지 않는데요.
place 된 이미지가 한 두개면 괜찮은데 그 숫자가 좀 많을 때는 여간 귀찮고 번거로운 일이 아닐 수 없습니다.
이렇게나 많다면 말이죠.
또 파일을 보낸 뒤에 누락된 개체는 없는지 확인할 동안 기다려야 되는 문제도 있겠네요.
이럴때 스크립트가 출동한다면!!!
스!
크!
립!
트!
네. 바로 스크립트라면 간단히 해결을 할 수 있습니다.
바로 스크립트를 볼까요?
var cDoc = app.activeDocument
var pItems = cDoc.pageItems
for (var k = 0; k < pItems.length; k++)
{
var cItem = pItems[k]
if (cItem.typename == "PlacedItem")
{
cItem.embed()
}
}
엥?
엄청 짧죠?
네 그런데 이게 됩니다.
위의 내용을 텍스트 에디터에 붙여 넣고 jsx 형식으로 저장합니다.
잘 모르시겠으면 그냥 .txt 파일로 저장한 뒤에 확장자만 jsx 로 바꾸어 주어도 됩니다.
그런 다음 일러스트에서 이 스크립트를 실행 시키면 되는데요.
간단합니다. 두가지 방법이 있는데
1. 그냥 스크립트 파일을 일러스트 창 안으로 drag and drop 한다
2. File - Script - Other Script --> 만들어 두었던 스크립트 파일 선택
간단하죠?
요렇게 하면 place 된 개체가 어느정도이냐에 따라 다르지만 많아야 많아야 1~2분이면 될거에요.
결과를 볼까요 ? Ctrl + Y 를 해서 보면 link 형식으로 place 된 개체는 X 표시가 되는 것을 알수 있는데요.
요렇게요.
그럼 스크립트를 실행한 ai 파일을 Ctrl + Y 해서 볼까요?
네. 단하나의 누락 없이 모두 embed 로 변경이 되었습니다.
캬!
역시 배워야 합니다.
오늘은 이만 마치도록 하겠습니다.
다시한번 말씀 드리지만 위에 제가 소개해드린 스크립트를 메모장 등으로 옮기신 후 jsx 파일로 저장, 일러스트에서 실행하시면 됩니다.
시골에 있는 처갓집에서 돌아오는 길에 닭장에 들러 방금 낳았는지 아직 온기가 남아있는 청계란을 하나 들고 왔습니다.
딸아이가 두시간가량 집에 오는 차안에서 수건에 감싼 계란을 품에 안고 와서 지난번에 만들었던 마이크로비트를 이용한 계란 부화기에 넣었습니다.
온도는 37도, 습도는 70% 이상을 유지해 주어야 하고 부화기에 넣은 후 18일 이전 까지는 하루에 4~5번 정도 전란을 해주어야 하는 21일 간의 대장정이 시작되었습니다.
요렇게 불이켜지면 온도가 서서히 올라갑니다. 전구는 할로겐을 썼으면 좀더 빠르게 열이 올랐을텐데요, 마침 가지고 있는 할로겐 램프가 없어서 자동차 깜박이용 꼬마 전구로 연결을 했습니다. 아마 5W 정도 되는것 같은데요, 열이 서서히 올라가는 것이 어쩌면 계란에 부담이 적을 것 같아 그냥 사용했습니다.
그리고 센서의 값 읽기에 실패를 하는 경우가 있는데 이상하게 연속해서 실패가 나는 경우가 있더라고요. 그럴때 마이크로비트를 재부팅하면 센서 측정이 다시 잘 되는것을 보고 아래와 같이 아두이노와 릴레이 모듈을 이용해서 30분에 한번씩 마이크로비트의 전원을 차단했다가 다시 연결해주어 물리적으로 재부팅을 해주었습니다.
일단 온도와 습도는 위 사진에서 본것과 같이 마이크로 비트가 표시해 주기 때문에 수시로 확인이 가능했으며 전란의 경우 엑셀로 표를 출력해서 전란을 해준 시간을 기록하는 것으로 하기로 하였습니다.
제가 출근하는 날은 딸아이가 시간 날때 전란을 해주고 제가 재택근무를 하는 날은 직접 전란을 해주기로 하였습니다.
그리고 계란을 전란 했을때 방향을 알 수 있도록 연필로 방향을 표시해주고 이름도 붙였습니다.
"청계구리"
ㅋㅋ
청계닭이 낳은 거라서 청계구리라고 하네요.
그렇게 약 12일 정도가 지난 시점.
이제 검란을 해봐야 겠죠?
검란이란 계란 내부에 병아리가 자라고 있는지 확인하는 과정인데요. 저도 처음해보는 것이라서 두근두근 했습니다.
핏줄 같은 것들이 보이시나요?
정말 너무너무 신기합니다.
자세히 보고 있으면 안쪽에 무엇인가가 저렇게 꿀렁꿀렁 움직이고 있어요.
불과 10여일 만에 저 작은 알 안에 생명이 싹터서 저렇게 움직이는 것이 너무나 신기하고 아름다웠습니다.
검란은 저때 딱 한번 해보고 그 뒤로는 하지 않았습니다.
굳이 계속 봐야 할 이유도 없고요, 자라나는 병아리에게 나쁜 영향이 있지는 않을까 해서 말이죠.
그 뒤로 내부에 물을 담은 그릇에 물이 말라 습도가 40% 까지 떨어진적도 하루 있었습니다.
정말 너무너무 걱정되고 후회되고 그랬습니다. 제 자식도 아닌데도 말이죠 ㅎㅎ
그렇게 시간이 흘러 흘러 21일 째 날이 되었습니다.
예상대로라면 오늘쯤에는 병아리가 껍질을 깨고 나와야 하는게 아닌가 싶어 왠종일 부화기만 쳐다보고 있었는데요,
저녁 10시 쯤이었나요..
아주 아주 작은 소리로
"삐약~삐약~"
읭??
너무 병아리를 기다린 탓에 환청이 들린걸까? 생각하는데
"삐약~삐약~삐약~"
앗!
병아리가 있다!
병아리가 있다!
소리를 쳤더니 아이들이 달려와 같이 알 속의 병아리 소리를 들으며 얼른 나오라고 응원을 했습니다.
그런데 예상과는 달리 삐약 소리만 간헐 적으로 들릴 뿐 나올 생각을 안하는 겁니다.
흠...
계란을 조금 깨줘 볼까.. 생각을 했지만 스스로 나와야 할 것 같아서 내일 까지 기다려 보기로 하고 잠을 청했습니다.
꿈속에서 병아리가 껍질을 깨고 나오지 못해 죽음을 맞이하는 무시무시한 악몽에 시달리며 아침을 맞이 했습니다.
과연 병아리가 나왔을까?
...
이제 삐약 소리도 안나는군요.
에라 모르겠다. 조금 씩 껍질을 깨 봐야 겠다 싶어서
부화기에 손을 넣어 계란을 들어올리는 순간
"뻑!"
하며 충격이 오는게 아니겠습니까?
어맛! 깜짝이야!
와
정말 심장이 떨어지는 줄 알았습니다.
생각보다 힘차게 쪼았나봅니다.
"톡, 톡, 토톡! "
가끔씩 소리가 나면서 이제 나오려나 보다 .. 하고 지켜보았으나..
안나와요..
한시간 정도가 지나서 조그만 구멍이 뚫렸지만 계속 부리만 보이고 속껍질을 핥아 먹는 다고 해야 할까요? 그렇게 진도가 나가지 않아서 또 애간장이 타더군요.
정말 첫째 아이 출산할때 기다리던 것처럼 애간장이 타고 걱정이 이만 저만이 아니었습니다.
껍질 깨는 것을 도와줘야 하나 마나 하는 생각을 1000번도 더 한것 같아요.
어쨌든 인고의 시간이 지나고...
오전 9시 쯤 첫 입질을 하고나서 거의 7시간이 지나서야 본격적으로 껍질을 깨기 시작합니다.
으아.. 드디어..
와 정말 감격 스럽더군요.
아이들과 함께 이 장면을 보면서 환호성을 질렀습니다.
인터넷으로 본 바로는 태어나면 핏덩어리 같은게 묻어 있기도 하고 엄청 징그럽다는 글을 봤지 적나라하게 갓 태어난 병아리를 자세히 볼 기회는 없었는데요.
막상 직접 보니 전혀 징그럽지 않고 예뻤습니다. 털이 젖고 몸이 부실해서 덜덜 떨며 휘청거리는 모습이 조금 안쓰럽기는 하지만 징그럽다는 느낌은 전혀 안들고 아주 귀여웠습니다.
아직 따뜻한 온도가 유지되는 부화기 안에서 하루 정도 더 두었다가 딸아이와 직접 만든 육추기로 옮겨 주었습니다.
그리고 이름은 '단군이' 로 지었습니다. 태명은 청계구리 였는데요, ㅋㅋ 개천절에 태어났기 때문에 단군이로 부르기로 했습니다.
육추기 만드는 것도 따로 준비를 했으면 좋았을텐데.. 아쉽지만 없네요.
어렵지 않습니다.
가능한 커다란 박스를 준비해 주시고요.
위에는 할로겐 등과 공기 순환용 fan 을 장착하고 옆쪽에는 온습도 센서를, 이번에는 마이크로 비트 대신 아두이노로 온도 조절을 하였습니다.
뭔가 아두이노가 더 편한것 같아요. ㅎ
달랑 계란 한개 들고와서 부화가 안되면 어쩌나,,, 전란을 하루 빼먹은 날도 있는데, 문제가 있는건 아닐까.. 습도가 맞지 않았던 그날 어떤 문제가 생기지는 않았을까.. 너무 너무 걱정을 하며 지낸 시간이 무색하도록 정말 건강한 병아리가 되었습니다.
딸아이가 날때 부터 계속 봐줬더니 엄마인줄 아는건지 무서워 하지를 않네요. ㅎㅎ
첫째 아들 녀석이 손이 뜨거운 편인데요, 첫째 손에만 가면 저렇게 잠이 듭니다 ㅋㅋ
지 어미 품인줄 아는걸까요
단군이가 태어난지 10여일이 지났습니다.
어느새 꼬리와 날개에 깃털이 자랍니다. 이제 병아리에서 점점 닭으로 바뀌어 가는거겠죠?
재택근무를 하는 동안 저렇게 거실에 내려 놓아도 제 발 주변을 맴돌면서 바닥에 떨어진 먼지 같은걸 쪼거나 할 뿐 다른 곳으로 가지 않아요. 또 제가 주방으로 가거가 하면 쪼르르 저를 따라 쫒아옵니다.
아마 날 때 부터 사람들과 있어와서 저희 가족들이 제 가족인 줄 아는가 봅니다.
아파트인 저희 집에서 아마 단군이는 오래 함께 하지는 못하겠지요?
2주일이 되니 이제 날개짓을 하며 공중으로 날아오르려 합니다. 시골로 가야하는 순간이 다가 온 듯 하네요.
제가 손을 내밀면 손바닥으로 뛰어 올라오는 단군이를 보며 마음이 좀 착잡 합니다. 시골에 내려가면 이제 여기에서 처럼 따뜻한 사람의 손길은 없을 거에요. 아마 다른 닭들 처럼 닭장 안의 삶을 살아가겠죠. 어쩌면 다음번에 단군이에게 드리워진 손길은 단군이의 목숨을 가져 갈 손일 수도 있다고 생각하니 너무 불쌍하다는 생각이 듭니다.
많은 지식보다 따뜻한 마음을, 고리타분한 원리원칙 보다는 위트있는 재치와 지혜를, 범생이 공부벌레 보다는 음악과 예술을 사랑하는 몸고 마음이 건강한 아이로 키우려고 마음먹은지 15년이 지난 지금 아이를 보며 나는 어떤 아빠인지 생각해 본다.
아이에게 영,수 학원보다는 복싱 체육관과 피아노학원을 선택할 수 있는 기회를 주었고 최근에는 실용 음악 학원에서 베이스 기타를 배우며 학교에서는 중학생 밴드 부원으로 활동하고 있다.
나름 내가 생각했던 그런 아이로 자랄 수 있는 환경을 주었다고 생각했고, 그렇게 음악을 사랑하는 아이가 연주하는 피아노 곡이나 기타를 연주하는 모습을 바라보면 흐믓하고 가슴이 따뜻해 진다.
아이가 연주하는 음악을 들으며
문득 그런생각이 들었다.
아.. 내가 이 아이의 팬 인가보다.
내가 아이의 연주하는 모습을 이렇게 좋아하는건, 엉성한 연주도 이렇게 가슴이 따뜻해지는건 아마 내가 이 아이의 팬이기 때문인거라는 생각이 들었다.
육아 이야기 하다가 갑자기 왠 연예인 이야기도 아니고 '팬' 이 나오냐고?
음...
연예인의 이야기를 잠깐 해보자.
BTS 가 오늘의 인기를 얻기까지 BTS 의 능력과 외모 못지않게 영향을 미친 것은 바로 BTS 의 팬덤인 아미 때문이 아닐까. 아미야 말로 정말 자신의 연예인을 최고로 만든 일등 공신이라 생각되는데, 다른 극성 팬들과 다르게 그들의 행보를 보면 정말 자기가 사랑하는 연예인이 최고의 가수가 될 수 있도록 모든 방면에서 긍정적인 영향력을 행사하는 것을 보았다.
어쩌면 훌륭한 연예인이 만들어 지기 위하여는 본인의 스타성과 노력도 중요 하겠지만 바로 멋진 팬들이 있어야 하는게 아닌가 생각된다.
부모는 자식의 팬이 되어 자식을 응원하고 자식이 가야할 길을 비추어 주는 열혈 관객이라는 거지.
팬들이 떠나버린 연예인은 어떠한가. 더이상 사랑해 주는 이가 없는 연예인... 어쩌면 그 시점에 이미 연예인이라 할 수 없을 것이다.
아이도 마찬가지다. 어릴때는 그저 예쁘고 귀여워 눈에 넣어도 아프지 않을 것 처럼 아이만을 바라보던 부모가 어느새 커버린 아이에게 관심이 줄어들고 부모의 기대에 미치지 못하는 성적과 사춘기를 맞아 예민해진 아이와의 잦은 의견 충돌로 점점 담을 쌓게 된다면 그 아이는 잃어버린 팬을 찾으러 가정 밖으로 돌겠지.
팬들이 떠나간 연예인이 밤무대와 이름모를 행사장을 전전하는 것처럼 아이도 어른들의 보호가 닿지 않는 그늘 속으로 그를 사랑하는(?) 친구들, 그리고 인터넷 세상 속으로 점점 숨어드는 거라 생각한다.
집안에 자신의 열혈 팬이 여전히 자신만을 사랑해 주고, 믿어주고, 기댈 곳을 준다면 어두운 그늘이나 가정으로 부터의 도피처를 찾아 떠나갈 아이는 없을 것이다.
아이가 무엇을 좋아하는지 잘 살펴보고 아이의 관심사에 나도 관심을 갖는것, 우리가 연예할때 애인의 마음을 얻기 위해 했던 바로 그것들, 사랑하는 연예인의 팬덤에 들어가 그들과 함께 응원하는 그 마음을 아이에게 준다면, 그렇게 행동하는 것을 아이가 본다면 아마 자신의 오랜 팬이 돌아온것에 고마워 할 것이다.
요즘 밴드활동을 하는 아이를 위해 아빠 세대의 슈퍼스타였던 건스앤로지스나 너바나, 매탈리카를 소개해주고 그들의 이야기를 함께 나누며 즐거운 시간을 보내고 있다. 내가 어릴 적 정보가 없어 몰랐던 유명한 밴드 맴버들의 숨은 이야기 등을 아이 스스로 찾아보고 눈을 반짝이며 이야기한 '너바나'의 베이시스트인 '크리스노보셀릭'의 삶에 대하여 이야기를 할때는 정말 크게 웃지 않을 수 없었다.
라이브로 전설적인 가수들의 음악을 듣는 다는건 음악하는 이에게 얼마나 황홀한 경험인가!
나는 한번도 가보지 못한 락페스티벌에 며칠전에 아이와 친구들을 보내주며 그들이 행복한 시간을 갖기를 기도했다. 다시 안올 열다섯살의 잊지 못할 추억이 되기를 바라며 티켓을 끊어 주었다. (이틀 뒤 가 중간고사 라는건 함정)